Pārlūkot izejas kodu

index should be part of runtime spec signature (priority differs)

ncannasse 7 gadi atpakaļ
vecāks
revīzija
eafa788052
2 mainītis faili ar 8 papildinājumiem un 1 dzēšanām
  1. 7 1
      hxsl/Cache.hx
  2. 1 0
      hxsl/RuntimeShader.hx

+ 7 - 1
hxsl/Cache.hx

@@ -269,7 +269,13 @@ class Cache {
 		#end
 
 		r.spec = { instances : @:privateAccess [for( s in shaders ) new ShaderInstanceDesc(s.shader, s.constBits)], signature : null };
-		r.spec.signature = haxe.crypto.Md5.encode([for( i in r.spec.instances ) i.shader.data.name+"_" + i.bits].join(":"));
+
+		for( i in 0...shaderDatas.length ) {
+			var s = shaderDatas[shaderDatas.length - 1 - i];
+			r.spec.instances[i].index = s.index;
+		}
+
+		r.spec.signature = haxe.crypto.Md5.encode([for( i in r.spec.instances ) i.shader.data.name+"_" + i.bits+"_"+i.index].join(":"));
 		r.signature = haxe.crypto.Md5.encode(Printer.shaderToString(r.vertex.data) + Printer.shaderToString(r.fragment.data));
 
 		var r2 = byID.get(r.signature);

+ 1 - 0
hxsl/RuntimeShader.hx

@@ -51,6 +51,7 @@ class RuntimeShaderData {
 class ShaderInstanceDesc {
 	public var shader : SharedShader;
 	public var bits : Int;
+	public var index : Int;
 	public function new(shader, bits) {
 		this.shader = shader;
 		this.bits = bits;