{ "name": "tex3d_pattern", "node_position": { "x": 0, "y": 0 }, "parameters": { "mix": 4, "x_scale": 2, "x_wave": 2, "y_scale": 2, "y_wave": 2, "z_scale": 2, "z_wave": 2 }, "shader_model": { "code": "", "global": "float wave3d_constant(float x) {\n\treturn 1.0;\n}\n\nfloat wave3d_sine(float x) {\n\treturn 0.5-0.5*cos(3.14159265359*2.0*x);\n}\n\nfloat wave3d_triangle(float x) {\n\tx = fract(x);\n\treturn min(2.0*x, 2.0-2.0*x);\n}\n\nfloat wave3d_sawtooth(float x) {\n\treturn fract(x);\n}\n\nfloat wave3d_square(float x) {\n\treturn (fract(x) < 0.5) ? 0.0 : 1.0;\n}\n\nfloat wave3d_bounce(float x) {\n\tx = 2.0*(fract(x)-0.5);\n\treturn sqrt(1.0-x*x);\n}\n\nfloat mix3d_mul(float x, float y, float z) {\n\treturn x*y*z;\n}\n\nfloat mix3d_add(float x, float y, float z) {\n\treturn min(x+y+z, 1.0);\n}\n\nfloat mix3d_max(float x, float y, float z) {\n\treturn max(max(x, y), z);\n}\n\nfloat mix3d_min(float x, float y, float z) {\n\treturn min(min(x, y), z);\n}\n\nfloat mix3d_xor(float x, float y, float z) {\n\tfloat xy = min(x+y, 2.0-x-y);\n\treturn min(xy+z, 2.0-xy-z);\n}\n\nfloat mix3d_pow(float x, float y, float z) {\n\treturn pow(pow(x, y), z);\n}", "inputs": [ ], "instance": "float $(name)_fct(vec3 uv) {\n\treturn mix3d_$(mix)(wave3d_$(x_wave)($(x_scale)*uv.x), wave3d_$(y_wave)($(y_scale)*uv.y), wave3d_$(z_wave)($(z_scale)*uv.z));\n}", "longdesc": "A greyscale 3D texture that combines patterns along all 3 axes", "name": "TEX3D Pattern", "outputs": [ { "longdesc": "The generated 3D texture", "shortdesc": "Output", "tex3d": "vec3($(name)_fct($(uv).xyz))", "type": "tex3d" } ], "parameters": [ { "default": 0, "label": "Combiner", "longdesc": "The operation used to combine the X, Y and Z patterns", "name": "mix", "shortdesc": "Combine", "type": "enum", "values": [ { "name": "Multiply", "value": "mul" }, { "name": "Add", "value": "add" }, { "name": "Max", "value": "max" }, { "name": "Min", "value": "min" }, { "name": "Xor", "value": "xor" }, { "name": "Pow", "value": "pow" } ] }, { "default": 0, "label": "X", "longdesc": "Pattern generated along the X axis", "name": "x_wave", "shortdesc": "Pattern.x", "type": "enum", "values": [ { "name": "Sine", "value": "sine" }, { "name": "Triangle", "value": "triangle" }, { "name": "Square", "value": "square" }, { "name": "Sawtooth", "value": "sawtooth" }, { "name": "Constant", "value": "constant" }, { "name": "Bounce", "value": "bounce" } ] }, { "control": "None", "default": 4, "label": "2:", "longdesc": "Repetitions of the pattern along X axis", "max": 32, "min": 0, "name": "x_scale", "shortdesc": "Repeat.x", "step": 1, "type": "float" }, { "default": 0, "label": "Y", "longdesc": "Pattern generated along the Y axis", "name": "y_wave", "shortdesc": "Pattern.y", "type": "enum", "values": [ { "name": "Sine", "value": "sine" }, { "name": "Triangle", "value": "triangle" }, { "name": "Square", "value": "square" }, { "name": "Sawtooth", "value": "sawtooth" }, { "name": "Constant", "value": "constant" }, { "name": "Bounce", "value": "bounce" } ] }, { "control": "None", "default": 4, "label": "3:", "longdesc": "Repetitions of the pattern along Y axis", "max": 32, "min": 0, "name": "y_scale", "shortdesc": "Repeat.y", "step": 1, "type": "float" }, { "default": 0, "label": "Z", "longdesc": "Pattern generated along the Z axis", "name": "z_wave", "shortdesc": "Pattern.z", "type": "enum", "values": [ { "name": "Sine", "value": "sine" }, { "name": "Triangle", "value": "triangle" }, { "name": "Square", "value": "square" }, { "name": "Sawtooth", "value": "sawtooth" }, { "name": "Constant", "value": "constant" }, { "name": "Bounce", "value": "bounce" } ] }, { "control": "None", "default": 4, "label": "4:", "longdesc": "Repetitions of the pattern along Z axis", "max": 32, "min": 0, "name": "z_scale", "shortdesc": "Repeat.z", "step": 1, "type": "float" } ], "shortdesc": "Tex3D Pattern" }, "type": "shader" }