diff --git a/Assets/plugins/hello_node.js b/Assets/plugins/hello_node.js index 6a7b0cb3..d4fae6ec 100644 --- a/Assets/plugins/hello_node.js +++ b/Assets/plugins/hello_node.js @@ -38,6 +38,14 @@ let nodes = [ type: "RGBA", color: 0xffc7c729, default_value: new Float32Array([0.8, 0.8, 0.8, 1.0]) + }, + { + id: 1, + node_id: 0, + name: "Fac", + type: "VALUE", + color: 0xffa1a1a1, + default_value: 1.0 } ], buttons: [] @@ -46,7 +54,7 @@ let nodes = [ arm.NodesMaterial.list.push(nodes); // Node shader -arm.MaterialParser.customNodes.set(nodeType, function(node) { +arm.MaterialParser.customNodes.set(nodeType, function(node, socket) { let frag = arm.MaterialParser.frag; let scale = arm.MaterialParser.parse_value_input(node.inputs[0]); let my_out = arm.MaterialParser.node_name(node) + "_out"; @@ -54,7 +62,13 @@ arm.MaterialParser.customNodes.set(nodeType, function(node) { frag.write(` float ${my_out} = cos(sin(texCoord.x * 200.0 * ${scale}) + cos(texCoord.y * 200.0 * ${scale})); `); - return `vec3(${my_out}, ${my_out}, ${my_out})`; + + if (socket.name == "Color") { + return `vec3(${my_out}, ${my_out}, ${my_out})`; + } + else if (socket.name == "Fac") { + return my_out; + } }); // Cleanup diff --git a/Libraries/shaderlib/Sources/arm/shader/MaterialParser.hx b/Libraries/shaderlib/Sources/arm/shader/MaterialParser.hx index f87c28cb..5f29c405 100644 --- a/Libraries/shaderlib/Sources/arm/shader/MaterialParser.hx +++ b/Libraries/shaderlib/Sources/arm/shader/MaterialParser.hx @@ -937,7 +937,7 @@ class MaterialParser { return to_vec3('$height'); } else if (customNodes.get(node.type) != null) { - return customNodes.get(node.type)(node); + return customNodes.get(node.type)(node, socket); } return "vec3(0.0, 0.0, 0.0)"; } @@ -1337,7 +1337,7 @@ class MaterialParser { } } else if (customNodes.get(node.type) != null) { - return customNodes.get(node.type)(node); + return customNodes.get(node.type)(node, socket); } return "0.0"; }