Ich habe diesen ersten Beitrag komplett umgeschrieben, um das Problem besser darzustellen.
Ich verwende ps v1.4 (die höchste Version, für die ich Unterstützung habe) und erhalte ständig einen Fehler.
Es passiert immer dann, wenn ich irgendeine Funktion wie cos, dot, distance, sqrt, normalize etc. auf etwas anwende, das an den Pixelshader übergeben wurde.
Ich muss zum Beispiel "normalize(LightPosition - PixelPosition)" ausführen, um ein Punktlicht in meinem Pixelshader zu verwenden, aber normalize gibt mir einen Fehler.
Einige Dinge zu beachten.
Ich kann Dinge wie pow, abs und radians ohne Fehler verwenden.
Es liegt nur dann ein Fehler vor, wenn dies mit etwas geschieht, das vom Vertex-Shader übergeben wird. (Zum Beispiel könnte ich das sqrt einer lokalen Pixelshader-Variable ohne Fehler nehmen)
Ich erhalte den Fehler, wenn ich eine Funktion für JEDE übergebene Variable ausführe, auch für Textkoordinaten, Farbe usw.
Innerhalb der Vertex-Shader kann ich alle diese Funktionen auf alle Variablen in ohne Fehler übergeben tun, es ist nur in der Pixelshader, dass ich einen Fehler erhalten
Alle Werte, die vom Vertex-Shader an den Pixel-Shader weitergegeben werden, sind korrekt, denn wenn ich die Software-Verarbeitung statt der Hardware verwende, erhalte ich keine Fehler und eine perfekt beleuchtete Szene.
Da die Normalisierung des Vektors ist im Wesentlichen, wo mein Fehler kommt Form, die ich versucht, meine eigene Normalisierung Funktion erstellen.
Ich rufe Norm(LightPosition - PixelPosition) auf und "Norm" sieht so aus -
float3 Norm(float3 v)
{
return v / sqrt(dot(v, v));
}
Ich erhalte immer noch den Fehler, weil ich schätze, technisch bin ich immer noch versuchen, ein sqrt innerhalb der Pixelshader zu nehmen.
Der Fehler ist nichts Besonderes, es sagt nur "Fehler in der Anwendung" in der Zeile, in der ich meine .fx-Datei in C# lade
Ich denke, es könnte tatsächlich ein Kompilierungsfehler sein, weil ich so alte Versionen verwenden muss (vs 1.1 und ps 1.4)
Beim Debuggen mit fxc.exe bekomme ich die Meldung "can not map instruction to pixel shader instruction set".