Bladeren bron

fix invalid accesses on batchshaders caused by re-ordering of shader list

trethaller 4 jaren geleden
bovenliggende
commit
a889fd80cd
1 gewijzigde bestanden met toevoegingen van 3 en 3 verwijderingen
  1. 3 3
      hxsl/Cache.hx

+ 3 - 3
hxsl/Cache.hx

@@ -18,7 +18,7 @@ class Cache {
 
 	var linkCache : SearchMap;
 	var linkShaders : Map<String, Shader>;
-	var batchShaders : Map<Int, { shader : SharedShader, params : RuntimeShader.AllocParam, size : Int }>;
+	var batchShaders : Map<RuntimeShader, { shader : SharedShader, params : RuntimeShader.AllocParam, size : Int }>;
 	var byID : Map<String, RuntimeShader>;
 	public var constsToGlobal : Bool;
 
@@ -458,10 +458,10 @@ class Cache {
 	}
 
 	public function makeBatchShader( rt : RuntimeShader, shaders ) : BatchShader {
-		var sh = batchShaders.get(rt.id);
+		var sh = batchShaders.get(rt); // don't use rt.id to avoid collisions on identical signatures
 		if( sh == null ) {
 			sh = createBatchShader(rt, shaders);
-			batchShaders.set(rt.id,sh);
+			batchShaders.set(rt,sh);
 		}
 		var shader = std.Type.createEmptyInstance(BatchShader);
 		@:privateAccess shader.shader = sh.shader;