Ver Fonte

[shgraph] Fixed Fragment/vertex shader switch

Clément Espeute há 1 ano atrás
pai
commit
0a577e8420

+ 7 - 1
bin/style.css

@@ -1958,6 +1958,8 @@ input[type=checkbox]:checked:after {
 }
 .shader-editor #rightPanel {
   flex: 0;
+  display: flex;
+  flex-direction: column;
   min-width: 270px;
   width: 280px;
   padding-top: 10px;
@@ -1971,8 +1973,11 @@ input[type=checkbox]:checked:after {
   font-size: 15px;
   font-weight: bold;
 }
+.shader-editor #rightPanel > div {
+  flex: 1;
+}
 .shader-editor #rightPanel .hide-block {
-  height: 600px;
+  height: 100%;
 }
 .shader-editor #rightPanel .hide-block #parametersList {
   height: 100%;
@@ -2061,6 +2066,7 @@ input[type=checkbox]:checked:after {
   font-size: 12px;
 }
 .shader-editor #rightPanel .options-block {
+  flex: 0;
   height: max(250px, 25%);
 }
 .shader-editor #rightPanel .options-block > * {

+ 7 - 2
bin/style.less

@@ -2186,6 +2186,8 @@ input[type=checkbox] {
 
 	#rightPanel {
 		flex: 0;
+		display: flex;
+		flex-direction: column;
 		min-width: 270px;
 
 		width: 280px;
@@ -2200,12 +2202,14 @@ input[type=checkbox] {
 			font-size: 15px;
 			font-weight: bold;
 		}
+		>div {
+			flex: 1;
+		}
 
 		height: 100%;
 		@options-height: max(250px, 25%);
 		.hide-block {
-			height: 600px;
-
+			height: 100%;
 			#parametersList {
 				height: 100%;
 
@@ -2306,6 +2310,7 @@ input[type=checkbox] {
 			}
 		}
 		.options-block {
+			flex: 0;
 			height: @options-height;
 			& > * {
 				display: block;

+ 1 - 1
hide/view/GraphEditor.hx

@@ -43,7 +43,7 @@ class GraphEditor extends hide.comp.Component {
 
 	var transformMatrix : Array<Float> = [1, 0, 0, 1, 0, 0];
 	var isPanning : Bool = false;
-	static var MAX_ZOOM = 1.3;
+	static var MAX_ZOOM = 2.0;
 	static var CENTER_OFFSET_Y = 0.1; // percent of height
 
 	// used for moving when mouse is close to borders

+ 26 - 26
hide/view/shadereditor/ShaderEditor.hx

@@ -126,6 +126,8 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 	var currentGraph : hrt.shgraph.ShaderGraph.Graph;
 
 	var compiledShader : hrt.prefab.Cache.ShaderDef;
+	var compiledShaderPreview : hrt.prefab.Cache.ShaderDef;
+
 	var previewShaderBase : PreviewShaderBase;
 	var previewVar : hxsl.Ast.TVar;
 	var needRecompile : Bool = true;
@@ -184,28 +186,23 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 
 		var rightPannel = new Element(
 			'<div id="rightPanel">
-				<span>Parameters</span>
-				<div class="tab expand" name="Scene" icon="sitemap">
+				<div>
+					<span>Parameters</span>
 					<div class="hide-block" >
 						<div id="parametersList" class="hide-scene-tree hide-list">
 						</div>
 					</div>
-					<div class="options-block hide-block">
-						<input id="createParameter" type="button" value="Add parameter" />
+				</div>
+				<div class="options-block hide-block">
+					<input id="createParameter" type="button" value="Add parameter" />
+					<div>
+						Shader :
 						<select id="domainSelection"></select>
-
-						<input id="centerView" type="button" value="Center Graph" />
-						<div>
-							Display Compiled
-							<input id="displayHxsl" type="button" value="Hxsl" />
-							<input id="displayGlsl" type="button" value="Glsl" />
-							<input id="displayHlsl" type="button" value="Hlsl" />
-							<input id="display2" type="button" value="2" />
-						</div>
-						<input id="togglelight" type="button" value="Toggle Default Lights" />
-						<input id="refreshGraph" type="button" value="Refresh Shader Graph" />
 					</div>
+					<input id="centerView" type="button" value="Center Graph" />
+					<input id="debugMenu" type="button" value="Debug Menu"/>
 				</div>
+				
 			</div>'
 		);
 
@@ -255,11 +252,16 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 			var pElt = addParameter(shaderGraph.parametersAvailable.get(k), shaderGraph.parametersAvailable.get(k).defaultValue);
 		}
 
-		rightPannel.find("#display2").click((e) -> {
-			trace(hxsl.Printer.shaderToString(shaderGraph.compile(Fragment).shader.data, true));
+		
+		rightPannel.find("#debugMenu").click((e) -> {
+			new hide.comp.ContextMenu([
+				{
+					label : "Print Shader code to Console",
+					click: () -> trace(hxsl.Printer.shaderToString(shaderGraph.compile(currentGraph.domain).shader.data, true))
+				}
+			]);
 		});
 
-
 		graphEditor.onPreviewUpdate = onPreviewUpdate;
 		graphEditor.onNodePreviewUpdate = onNodePreviewUpdate;
 
@@ -805,9 +807,6 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 			meshPreviewShader = new hxsl.DynamicShader(compiledShader.shader);
 	
 			for (init in compiledShader.inits) {
-				if (init.variable == previewVar)
-					setParamValue(meshPreviewShader, previewVar, 0);
-				else
 					setParamValue(meshPreviewShader, init.variable, init.value);
 			}
 			for (m in meshPreviewMeshes) {
@@ -1059,7 +1058,7 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 	}
 	var bitmapToShader : Map<h2d.Bitmap, hxsl.DynamicShader> = [];
 	public function onNodePreviewUpdate(node: IGraphNode, bitmap: h2d.Bitmap) {
-		if (compiledShader == null) {
+		if (compiledShaderPreview == null) {
 			bitmap.visible = false;
 			return;
 		}
@@ -1068,12 +1067,12 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 			for (s in bitmap.getShaders()) {
 				bitmap.removeShader(s);
 			}
-			shader = new DynamicShader(compiledShader.shader);
+			shader = new DynamicShader(compiledShaderPreview.shader);
 			bitmapToShader.set(bitmap, shader);
 			bitmap.addShader(previewShaderBase);
 			bitmap.addShader(shader);
 		}
-		for (init in compiledShader.inits) {
+		for (init in compiledShaderPreview.inits) {
 			@:privateAccess graphEditor.previewsScene.checkCurrent();
 			if (init.variable == previewVar)
 				setParamValue(shader, previewVar, node.getId() + 1);
@@ -1226,9 +1225,10 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
 		needRecompile = false;
 		try {
 			var start = Timer.stamp();
-			compiledShader = shaderGraph.compile(Fragment);
+			compiledShader = shaderGraph.compile();
+			compiledShaderPreview = shaderGraph.compile(currentGraph.domain);
 			bitmapToShader.clear();
-			previewVar = compiledShader.inits.find((e) -> e.variable.name == hrt.shgraph.Variables.previewSelectName)?.variable;
+			previewVar = compiledShaderPreview.inits.find((e) -> e.variable.name == hrt.shgraph.Variables.previewSelectName)?.variable;
 			var end = Timer.stamp();
 			Ide.inst.quickMessage('shader recompiled in ${(end - start) * 1000.0} ms', 2.0);
 

+ 21 - 2
hrt/shgraph/ShaderNode.hx

@@ -75,7 +75,7 @@ implements hide.view.GraphInterface.IGraphNode
 					}
 					{
 						name: i.name,
-						color: 0xFF0000,
+						color: getTypeColor(i.type),
 						defaultParam: defaultParam,
 					}
 				}
@@ -84,7 +84,7 @@ implements hide.view.GraphInterface.IGraphNode
 				for (o in getOutputs()) {
 					{
 						name: o.name,
-						color: 0xFF0000,
+						color: getTypeColor(o.type),
 					}
 				}
 			],
@@ -98,6 +98,25 @@ implements hide.view.GraphInterface.IGraphNode
 		};
 	}
 
+	static function getTypeColor(type: SgType) : Int {
+		return switch (type) {
+			case SgFloat(1):
+				0x00ff73;
+			case SgFloat(2):
+				0x5eff00;
+			case SgFloat(3):
+				0xeeff00;
+			case SgFloat(4):
+				0xfc6703;
+			case SgInt:
+				0x00ffea;
+			case SgSampler:
+				0x600aff;
+			default:
+				0xc8c8c8;
+		}
+	}
+
 	public function getId() : Int {
 		return id;
 	}