浏览代码

ensure same order of variables in shaders

ncannasse 11 年之前
父节点
当前提交
bef6d46a41
共有 2 个文件被更改,包括 6 次插入2 次删除
  1. 3 1
      hxsl/Linker.hx
  2. 3 1
      hxsl/Splitter.hx

+ 3 - 1
hxsl/Linker.hx

@@ -270,7 +270,9 @@ class Linker {
 			return;
 		cur.marked = vertex;
 		cur.onStack = true;
-		for( d in cur.deps.keys() )
+		var deps = [for( d in cur.deps.keys() ) d];
+		deps.sort(sortByPriorityDesc);
+		for( d in deps )
 			collect(d, out, vertex);
 		if( cur.vertex == null ) {
 			debug("MARK " + cur.name+" " + (vertex?"vertex":"fragment"));

+ 3 - 1
hxsl/Splitter.hx

@@ -149,8 +149,10 @@ class Splitter {
 		}
 
 		var vvars = [for( v in vvars ) if( !v.local ) v.v];
+		var fvars = [for( v in fvars ) if( !v.local ) v.v];
 		// make sure we sort the inputs the same way they were sent in
 		vvars.sort(function(v1, v2) return v1.id - v2.id);
+		fvars.sort(function(v1, v2) return v1.id - v2.id);
 
 		return {
 			vertex : {
@@ -160,7 +162,7 @@ class Splitter {
 			},
 			fragment : {
 				name : "fragment",
-				vars : [for( v in fvars ) if( !v.local ) v.v],
+				vars : fvars,
 				funs : [ffun],
 			},
 		};