Преглед изворни кода

register perObjectGlobal params as used globals

ncannasse пре 10 година
родитељ
комит
70f58da547
1 измењених фајлова са 16 додато и 10 уклоњено
  1. 16 10
      hxsl/Cache.hx

+ 16 - 10
hxsl/Cache.hx

@@ -98,16 +98,8 @@ class Cache {
 		r.vertex.vertex = true;
 		r.fragment = flattenShader(s.fragment, Fragment, paramVars);
 		r.globals = new Map();
-		var p = r.vertex.globals;
-		while( p != null ) {
-			r.globals.set(p.gid, true);
-			p = p.next;
-		}
-		p = r.fragment.globals;
-		while( p != null ) {
-			r.globals.set(p.gid, true);
-			p = p.next;
-		}
+		initGlobals(r, r.vertex);
+		initGlobals(r, r.fragment);
 
 		var sid = haxe.crypto.Md5.encode(Printer.shaderToString(r.vertex.data) + Printer.shaderToString(r.fragment.data));
 		var r2 = byID.get(sid);
@@ -119,6 +111,20 @@ class Cache {
 		return r;
 	}
 
+	function initGlobals( r : RuntimeShader, s : RuntimeShaderData ) {
+		var p = s.globals;
+		while( p != null ) {
+			r.globals.set(p.gid, true);
+			p = p.next;
+		}
+		var p = s.params;
+		while( p != null ) {
+			if( p.perObjectGlobal != null )
+				r.globals.set(p.perObjectGlobal.gid, true);
+			p = p.next;
+		}
+	}
+
 	function getPath( v : TVar ) {
 		if( v.parent == null )
 			return v.name;