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

give shader info when missing global value

ncannasse пре 7 година
родитељ
комит
0166ec60d9
1 измењених фајлова са 13 додато и 1 уклоњено
  1. 13 1
      h3d/pass/ShaderManager.hx

+ 13 - 1
h3d/pass/ShaderManager.hx

@@ -151,10 +151,22 @@ class ShaderManager {
 		return 0;
 	}
 
+	function shaderInfo( shaders : hxsl.ShaderList, path : String ) {
+		var name = path.split(".").pop();
+		while( shaders != null ) {
+			var inst = @:privateAccess shaders.s.instance;
+			for( v in inst.shader.vars )
+				if( v.name == name )
+					return shaders.s.toString();
+			shaders = shaders.next;
+		}
+		return "(not found)";
+	}
+
 	public inline function getParamValue( p : hxsl.RuntimeShader.AllocParam, shaders : hxsl.ShaderList, opt = false ) : Dynamic {
 		if( p.perObjectGlobal != null ) {
 			var v : Dynamic = globals.fastGet(p.perObjectGlobal.gid);
-			if( v == null ) throw "Missing global value " + p.perObjectGlobal.path;
+			if( v == null ) throw "Missing global value " + p.perObjectGlobal.path+" for shader "+shaderInfo(shaders,p.perObjectGlobal.path);
 			if( p.type.match(TChannel(_)) )
 				return v.texture;
 			return v;