Преглед на файлове

[HXSL] Case-insensitive keys for var renaming.

TothBenoit преди 7 месеца
родител
ревизия
54f05dc774
променени са 1 файла, в които са добавени 7 реда и са изтрити 5 реда
  1. 7 5
      hxsl/Linker.hx

+ 7 - 5
hxsl/Linker.hx

@@ -117,7 +117,8 @@ class Linker {
 				case Name(n): key = n;
 				default:
 				}
-		var v2 = varMap.get(key);
+		var ukey = key.toLowerCase();
+		var v2 = varMap.get(ukey);
 		var vname = v.name;
 		if( v2 != null ) {
 			for( vm in v2.merged )
@@ -130,7 +131,7 @@ class Linker {
 				// allocate a new unique name in the shader if already in use
 				var k = 2;
 				while( true ) {
-					var a = varMap.get(key + k);
+					var a = varMap.get(ukey + k);
 					if( a == null ) break;
 					for( vm in a.merged )
 						if( vm == v )
@@ -139,13 +140,14 @@ class Linker {
 				}
 				if( v.kind == Input ) {
 					// it's not allowed to rename an input var, let's rename existing var instead
-					varMap.remove(key);
-					varMap.set(key + k, v2);
+					varMap.remove(ukey);
+					varMap.set(ukey + k, v2);
 					v2.v.name += k;
 					v2.path += k;
 				} else {
 					vname += k;
 					key += k;
+					ukey += k;
 				}
 			} else {
 				v2.merged.push(v);
@@ -171,7 +173,7 @@ class Linker {
 		a.instanceIndex = curInstance;
 		a.rootShaderName = shaderName;
 		allVars.push(a);
-		varMap.set(key, a);
+		varMap.set(ukey, a);
 		switch( v2.type ) {
 		case TStruct(vl):
 			v2.type = TStruct([for( v in vl ) allocVar(v, p, shaderName, key, a).v]);