Hier ist mein Shader, der eine Farbe durch eine andere ersetzt:
%Vor%Hier ist ein Test-Skript, das an GameObject angehängt ist und die Hauptkamera enthält. Darin versuche ich eine Linie und ein strukturiertes Quad zu rendern.
mat
wird mit SwapColors
mit einer Textur zugewiesen.
sprite_mat
wird mit dem Standard-Sprite-Shader mit der gleichen Textur zugewiesen.
Wenn ich den Quad mit sprite_mat
rende, ist alles in Ordnung.
Wenn ich mat
verwende, verschwindet nicht nur das Quad, , sondern auch die Zeile , obwohl es mit sprite_mat
dargestellt wird.
Wenn ich einen anderen Quad im Editor erstelle und sein Material auf mat
setze, wird es korrekt gerendert.
Meine Hauptfrage ist, wie sich setPass
auf die Geometrie auswirken kann, die nach einem anderen nicht verwandten setPass
erstellt wurde.
Beispielprojekt: forum.unity3d.com/attachments/errorgl-7z.138105 /
Bearbeiten: Ich habe einen standardmäßigen Unity-Sprite-Shader gefunden und ihn mit meinem verglichen. Der Quad verschwand, weil er der Kamera in die entgegengesetzte Richtung zeigt. Es ist durch Cull Off
festgelegt.
Wenn ich Zeile
hinzufüge float4 color:COLOR;
bis VertexInput
Struktur, Material mit meinem Shader stoppt die Geometrie mit anderen Materialien. Ich verstehe nicht, was passiert.
Ich denke nicht, dass du SetPass(0)
zweimal zwischen GL.Begin(..)
und GL.End(..)
.
Du kannst verschiedene Pässe mit SetPass(0); [..] SetPass(1);
setzen, aber wenn du deinen Shader betrachtest, denke ich nicht, dass du das machen willst.
Versuchen Sie also, den Quad mit 2 Durchgängen zu zeichnen? Eine mit dem Standard-Sprite-Material und die andere mit Ihrem eigenen Material? Oder einfach zweimal zeichnen?
Ich verstehe nicht ganz, was du hier machen willst.