浏览代码

bug fixes in GLSL generation (SAO now working)

Nicolas Cannasse 9 年之前
父节点
当前提交
57c7b9fab8
共有 1 个文件被更改,包括 5 次插入4 次删除
  1. 5 4
      hxsl/GlslOut.hx

+ 5 - 4
hxsl/GlslOut.hx

@@ -27,8 +27,9 @@ class GlslOut {
 	static var MAT34 = "struct mat3x4 { vec4 a; vec4 b; vec4 c; };";
 
 	var buf : StringBuf;
+	var exprIds = 0;
 	var exprValues : Array<String>;
-	var locals : Array<TVar>;
+	var locals : Map<Int,TVar>;
 	var decls : Array<String>;
 	var isVertex : Bool;
 	var allNames : Map<String, Int>;
@@ -134,7 +135,7 @@ class GlslOut {
 	function addValue( e : TExpr, tabs : String ) {
 		switch( e.e ) {
 		case TBlock(el):
-			var name = "val" + exprValues.length;
+			var name = "val" + (exprIds++);
 			var tmp = buf;
 			buf = new StringBuf();
 			addType(e.t);
@@ -243,7 +244,7 @@ class GlslOut {
 			});
 			addValue(e1, tabs);
 		case TVarDecl(v, init):
-			locals.push(v);
+			locals.set(v.id, v);
 			if( init != null ) {
 				ident(v);
 				add(" = ");
@@ -367,7 +368,7 @@ class GlslOut {
 	}
 
 	public function run( s : ShaderData ) {
-		locals = [];
+		locals = new Map();
 		decls = [];
 		buf = new StringBuf();
 		exprValues = [];