HLSL: Konstantes Registerlimit zur Kompilierungszeit erzwingen
Gibt es in HLSL eine Möglichkeit, die Anzahl der vom Compiler verwendeten Konstantenregister zu begrenzen?
Speziell, wenn ich etwas habe wie:
float4 foobar[300];
In einem Vertex-Shader vs_2_0 generiert der Compiler den Effekt mit mehr als 256 konstanten Registern. Ein 2.0 Vertex-Shader hat jedoch garantiert nur Zugriff auf 256 konstante Register. Wenn ich also versuche, den Effekt zu verwenden, schlägt er zur Laufzeit auf dunkle und GPU-abhängige Weise fehl. Ich hätte es lieber nicht zur Kompilierungszeit.
Dieses Problem ist besonders ärgerlich, da der Compiler selbst hinter den Kulissen konstante Register zuweist, zusätzlich zu den von mir gewünschten. Ich muss die Baugruppe überprüfen, um festzustellen, ob ich das Limit überschritten habe.
Idealerweise würde ich dies gerne in HLSL tun (ich verwende die XNA-Inhaltspipeline), aber wenn es ein Flag gibt, das an den Compiler übergeben werden kann, wäre das auch interessant.