Pārlūkot izejas kodu

Fix linker priorities to avoid init fragment content to be overriden by earlier vertex shader.

borisrp 7 mēneši atpakaļ
vecāks
revīzija
80f17dd9c2
1 mainītis faili ar 6 papildinājumiem un 1 dzēšanām
  1. 6 1
      hxsl/Linker.hx

+ 6 - 1
hxsl/Linker.hx

@@ -360,6 +360,10 @@ class Linker {
 			frag : [-1000],
 			frag : [-1000],
 			main : [-2500],
 			main : [-2500],
 		};
 		};
+		var shaderOffset = {
+			vert : -1500,
+			frag : -500,
+		}
 		for( s in shadersData ) {
 		for( s in shadersData ) {
 			for( f in s.funs ) {
 			for( f in s.funs ) {
 				var v = allocVar(f.ref, f.expr.p);
 				var v = allocVar(f.ref, f.expr.p);
@@ -368,7 +372,8 @@ class Linker {
 				case Vertex, Fragment:
 				case Vertex, Fragment:
 					if( mode == Compute )
 					if( mode == Compute )
 						throw "Unexpected "+v.kind.getName().toLowerCase()+"() function in compute shader";
 						throw "Unexpected "+v.kind.getName().toLowerCase()+"() function in compute shader";
-					addShader(s.name + "." + (v.kind == Vertex ? "vertex" : "fragment"), v.kind == Vertex, f.expr, priority);
+					var offset = v.kind == Vertex ? shaderOffset.vert : shaderOffset.frag;
+					addShader(s.name + "." + (v.kind == Vertex ? "vertex" : "fragment"), v.kind == Vertex, f.expr, priority + offset);
 				case Main:
 				case Main:
 					if( mode != Compute )
 					if( mode != Compute )
 						throw "Unexpected main() outside compute shader";
 						throw "Unexpected main() outside compute shader";