瀏覽代碼

Fixed subgraphes

Clement Espeute 1 年之前
父節點
當前提交
bf576ccad6
共有 3 個文件被更改,包括 14 次插入6 次删除
  1. 13 4
      hrt/shgraph/ShaderGraph.hx
  2. 1 1
      hrt/shgraph/ShaderOutput.hx
  3. 0 1
      hrt/shgraph/nodes/SubGraph.hx

+ 13 - 4
hrt/shgraph/ShaderGraph.hx

@@ -260,6 +260,8 @@ class ShaderGraph {
 
 				var def = node.instance.getShaderDef();
 				for (output in def.outVars) {
+					if (output.internal)
+						continue;
 					var type = output.v.type;
 					if (type == null) throw "no type";
 					var id = getNewVarId();
@@ -283,7 +285,10 @@ class ShaderGraph {
 					return f.map(repRec);
 				}
 			}
-			return repRec(expr);
+			var expr = repRec(expr);
+			//trace("replaced " + what.getName() + " with " + switch(with.e) {case TVar(v): v.getName(); default: "err";});
+			//trace(hxsl.Printer.toString(expr));
+			return expr;
 		}
 
 		// Shader generation starts here
@@ -430,7 +435,6 @@ class ShaderGraph {
 							outVar.kind = Param;
 							outVar.qualifiers = [];
 							graphInputVars.push({v: outVar, internal: false});
-							externs.push(outVar);
 							var param = getParameter(shParam.parameterId);
 							inits.push({variable: outVar, value: param.defaultValue});
 							continue;
@@ -453,11 +457,10 @@ class ShaderGraph {
 						continue;
 					}
 					if (outputVar == null) {
-						externs.push(nodeVar.v);
+						graphOutputVars.push({v: nodeVar.v, internal: false});
 					} else {
 						expr = replaceVar(expr, nodeVar.v, {e: TVar(outputVar), p:pos, t: nodeVar.v.type});
 						outputDecls.push(outputVar);
-						graphOutputVars.push({v: nodeVar.v, internal: false});
 					}
 				}
 
@@ -498,6 +501,12 @@ class ShaderGraph {
 		};
 
 		shaderData.vars.append(gen.externVars);
+		for (v in gen.inVars)
+			shaderData.vars.push(v.v);
+		for (v in gen.outVars)
+			shaderData.vars.push(v.v);
+
+
 
 		shaderData.funs.push({
 			ret : TVoid, kind : Fragment,

+ 1 - 1
hrt/shgraph/ShaderOutput.hx

@@ -23,7 +23,7 @@ class ShaderOutput extends ShaderNode {
 		//var param = getParameter(inputNode.parameterId);
 		//inits.push({variable: inVar, value: param.defaultValue});
 
-		return {expr: finalExpr, inVars: [{v: inVar, internal: false}], outVars:[], externVars: [output], inits: []};
+		return {expr: finalExpr, inVars: [{v: inVar, internal: false}], outVars:[{v: output, internal: true}], externVars: [], inits: []};
 	}
 
 	/*override public function checkValidityInput(key : String, type : hxsl.Ast.Type) : Bool {

+ 0 - 1
hrt/shgraph/nodes/SubGraph.hx

@@ -13,7 +13,6 @@ class SubGraph extends ShaderNode {
 	override public function getShaderDef():hrt.shgraph.ShaderGraph.ShaderNodeDef {
 		var shader = new ShaderGraph(pathShaderGraph);
 		var gen = shader.generate2();
-
 		// for (tvar in gen.externVars) {
 		// 	if (tvar.qualifiers != null) {
 		// 		if (tvar.qualifiers.contains(SgInput)) {