Przeglądaj źródła

ShaderGraph: various fixes

Tom SPIRA 4 lat temu
rodzic
commit
d416bebac2

+ 1 - 1
hide/view/shadereditor/Box.hx

@@ -131,7 +131,7 @@ class Box {
 		// create properties box
 		var bgParam = editor.rect(propertiesGroup, 0, 0, this.width, 0).addClass("properties");
 		if (!hasHeader && color != null) bgParam.css("fill", color);
-		propsHeight = 5;
+		propsHeight = 0;
 
 		for (p in props) {
 			var prop = editor.group(propertiesGroup).addClass("prop-group");

+ 10 - 7
hide/view/shadereditor/ShaderEditor.hx

@@ -300,8 +300,13 @@ class ShaderEditor extends hide.view.Graph {
 		var saveCustomModel = getDisplayState("customModel");
 		if (saveCustomModel != null)
 			obj = sceneEditor.scene.loadModel(saveCustomModel, true);
-		else
-			obj = sceneEditor.scene.loadModel("fx/Common/PrimitiveShapes/Sphere.fbx", true);
+		else {
+			// obj = sceneEditor.scene.loadModel("res/PrimitiveShapes/Sphere.fbx", true);
+			var sp = new h3d.prim.Sphere(1, 128, 128);
+			sp.addNormals();
+			sp.addUVs();
+			obj = new h3d.scene.Mesh(sp);
+		}
 		sceneEditor.scene.s3d.addChild(obj);
 
 		element.find("#preview").first().append(sceneEditor.scene.element);
@@ -767,12 +772,10 @@ class ShaderEditor extends hide.view.Graph {
 			switch (variable.type) {
 				case TSampler2D:
 					shader.setParamValue(variable, sceneEditor.scene.loadTexture("", value));
+				case TVec(size, _):
+					shader.setParamValue(variable, Vector.fromArray(value));
 				default:
-					if (variable.name.toLowerCase().indexOf("color") != -1) {
-						shader.setParamValue(variable, Vector.fromArray(value));
-					} else {
-						shader.setParamValue(variable, value);
-					}
+					shader.setParamValue(variable, value);
 			}
 		} catch (e : Dynamic) {
 			// The parameter is not used

+ 2 - 1
hrt/shgraph/ShaderInput.hx

@@ -72,7 +72,8 @@ class ShaderInput extends ShaderNode {
 		var input = element.children("select");
 		var indexOption = 0;
 		for (c in ShaderNode.availableVariables) {
-			input.append(new hide.Element('<option value="${indexOption}">${c.name.split(".")[1]}</option>'));
+			var nameSplitted = c.name.split(".");
+			input.append(new hide.Element('<option value="${indexOption}">${nameSplitted[nameSplitted.length-1]}</option>'));
 			if (this.variable.name == c.name) {
 				input.val(indexOption);
 			}

+ 2 - 0
hrt/shgraph/nodes/Cond.hx

@@ -64,6 +64,8 @@ class Cond extends ShaderNode {
 	}
 
 	override public function saveProperties() : Dynamic {
+		if (this.condition == null)
+			this.condition = availableConditions[0];
 		var properties = {
 			condition: this.condition.getName()
 		};

+ 20 - 22
hrt/shgraph/nodes/Preview.hx

@@ -8,6 +8,7 @@ using hxsl.Ast;
 @description("Preview node, just to debug :)")
 @group("Output")
 @width(100)
+@noheader()
 class Preview extends ShaderNode {
 
 	@input("input") var input = SType.Vec4;
@@ -48,23 +49,20 @@ class Preview extends ShaderNode {
 		if (this.variable == null) {
 			throw ShaderException.t("The preview is not available", this.id);
 		}
-		var element = new hide.Element('<div style="width: 100px; height: 90px"><div class="preview-parent" ><div class="node-preview" style="height: 100px" ></div></div></div>');
+		var element = new hide.Element('<div style="width: 100px; height: 100px"><div class="preview-parent" top="-10px" ><div class="node-preview" style="height: 100px" ></div></div></div>');
 		nodePreview = element.find(".node-preview");
 		scene = new hide.comp.Scene(config, null, nodePreview);
-		nodePreview.hide();
+		
 		scene.onReady = function() {
 			var prim = new h3d.prim.Cube();
 			prim.addUVs();
 			prim.addNormals();
 			cube = new Mesh(prim, scene.s3d);
-			nodePreview.removeClass("hide-scene-container");
-			var c = new h3d.scene.CameraController(scene.s3d);
 			scene.s3d.camera.pos = new h3d.Vector(0.5, 3.4, 0.5);
 			scene.s3d.camera.target = new h3d.Vector(0.5, 0.5, 0.5);
 			var light = new h3d.scene.pbr.DirLight(scene.s3d.camera.target.sub(scene.s3d.camera.pos), scene.s3d);
 			light.setPosition(scene.s3d.camera.pos.x, scene.s3d.camera.pos.y, scene.s3d.camera.pos.z);
 			scene.s3d.camera.zoom = 1;
-			c.loadFromCamera();
 			scene.init();
 			onMove();
 			computeOutputs();
@@ -75,24 +73,24 @@ class Preview extends ShaderNode {
 	}
 
 	public function onMove(?x : Float, ?y : Float, zoom : Float = 1.) {
-		var top : Float;
-		var left : Float;
-		var parent = nodePreview.parent();
-		if (x != null && y != null) {
-			left = x;
-			top = y;
-		} else {
-			var offsetWindow = nodePreview.closest(".heaps-scene").offset();
-			var offset = nodePreview.closest("foreignObject").offset();
-			if (offsetWindow == null || offset == null) return;
-			top = offset.top - offsetWindow.top - 32;
-			left = offset.left - offsetWindow.left;
-		}
+		// var top : Float;
+		// var left : Float;
+		// var parent = nodePreview.parent();
+		// if (x != null && y != null) {
+		// 	left = x;
+		// 	top = y;
+		// } else {
+		// 	var offsetWindow = nodePreview.closest(".heaps-scene").offset();
+		// 	var offset = nodePreview.closest("foreignObject").offset();
+		// 	if (offsetWindow == null || offset == null) return;
+		// 	top = offset.top - offsetWindow.top - 32;
+		// 	left = offset.left - offsetWindow.left;
+		// }
+		// nodePreview.closest(".prop-group").attr("transform", 'translate(0, -5)');
 		nodePreview.closest(".properties-group").children().first().css("fill", "#000");
-		parent.css("top", top/zoom + 17);
-		parent.css("left", left/zoom);
-		parent.css("zoom", zoom);
-		nodePreview.show();
+		// parent.css("top", top/zoom + 17);
+		// parent.css("left", left/zoom);
+		// parent.css("zoom", zoom);
 	}
 
 	function onResize() {