Bladeren bron

ShaderGraph: add makeInstance

trethaller 4 jaren geleden
bovenliggende
commit
9f76387728
2 gewijzigde bestanden met toevoegingen van 30 en 16 verwijderingen
  1. 6 16
      hide/view/shadereditor/ShaderEditor.hx
  2. 24 0
      hrt/shgraph/ShaderGraph.hx

+ 6 - 16
hide/view/shadereditor/ShaderEditor.hx

@@ -133,11 +133,12 @@ class ShaderEditor extends hide.view.Graph {
 			if (e.ctrlKey && e.keyCode == 83) {
 			if (e.ctrlKey && e.keyCode == 83) {
 				save();
 				save();
 				return;
 				return;
-			} else if (e.shiftKey) {
+			}
+		});
+		element.on("keyup", function(e) {
+			if (e.keyCode == 32) {
 				if (addMenu == null || !addMenu.is(":visible"))
 				if (addMenu == null || !addMenu.is(":visible"))
 					openAddMenu(-40, -70);
 					openAddMenu(-40, -70);
-
-				return;
 			}
 			}
 		});
 		});
 
 
@@ -770,18 +771,7 @@ class ShaderEditor extends hide.view.Graph {
 	}
 	}
 
 
 	function setParamValue(shader : DynamicShader, variable : hxsl.Ast.TVar, value : Dynamic) {
 	function setParamValue(shader : DynamicShader, variable : hxsl.Ast.TVar, value : Dynamic) {
-		try {
-			switch (variable.type) {
-				case TSampler2D:
-					shader.setParamValue(variable, sceneEditor.scene.loadTexture("", value));
-				case TVec(size, _):
-					shader.setParamValue(variable, Vector.fromArray(value));
-				default:
-					shader.setParamValue(variable, value);
-			}
-		} catch (e : Dynamic) {
-			// The parameter is not used
-		}
+		@:privateAccess ShaderGraph.setParamValue(sceneEditor.context.shared, shader, variable, value);
 	}
 	}
 
 
 	function addNode(p : Point, nodeClass : Class<ShaderNode>) {
 	function addNode(p : Point, nodeClass : Class<ShaderNode>) {
@@ -972,7 +962,7 @@ class ShaderEditor extends hide.view.Graph {
 			} else {
 			} else {
 				if (this.selectedNode != null)
 				if (this.selectedNode != null)
 					this.selectedNode.removeClass("selected");
 					this.selectedNode.removeClass("selected");
-				var value = input.val();
+				var value = StringTools.trim(input.val());
 				var children = divs.elements();
 				var children = divs.elements();
 				var isFirst = true;
 				var isFirst = true;
 				var lastGroup = null;
 				var lastGroup = null;

+ 24 - 0
hrt/shgraph/ShaderGraph.hx

@@ -444,6 +444,30 @@ class ShaderGraph {
 		return shaderDef;
 		return shaderDef;
 	}
 	}
 
 
+	public function makeInstance(ctx: hrt.prefab.ContextShared) : hxsl.DynamicShader {
+		var def = compile();
+		var s = new hxsl.DynamicShader(def.shader);
+		for (init in def.inits)
+			setParamValue(ctx, s, init.variable, init.value);
+		return s;
+	}
+	
+	static function setParamValue(ctx: hrt.prefab.ContextShared, shader : hxsl.DynamicShader, variable : hxsl.Ast.TVar, value : Dynamic) {
+		try {
+			switch (variable.type) {
+				case TSampler2D:
+					shader.setParamValue(variable, ctx.loadTexture(value));
+				case TVec(size, _):
+					shader.setParamValue(variable, h3d.Vector.fromArray(value));
+				default:
+					shader.setParamValue(variable, value);
+			}
+		} catch (e : Dynamic) {
+			// The parameter is not used
+		}
+	}
+
+
 	#if editor
 	#if editor
 	public function addNode(x : Float, y : Float, nameClass : Class<ShaderNode>) {
 	public function addNode(x : Float, y : Float, nameClass : Class<ShaderNode>) {
 		var node : Node = { x : x, y : y, id : current_node_id, type: std.Type.getClassName(nameClass) };
 		var node : Node = { x : x, y : y, id : current_node_id, type: std.Type.getClassName(nameClass) };