{ "name": "pattern", "node_position": { "x": 0, "y": 0 }, "parameters": { "mix": 0, "x_scale": 4, "x_wave": 0, "y_scale": 4, "y_wave": 0 }, "shader_model": { "code": "", "global": "float wave_constant(float x) {\n\treturn 1.0;\n}\n\nfloat wave_sine(float x) {\n\treturn 0.5-0.5*cos(3.14159265359*2.0*x);\n}\n\nfloat wave_triangle(float x) {\n\tx = fract(x);\n\treturn min(2.0*x, 2.0-2.0*x);\n}\n\nfloat wave_sawtooth(float x) {\n\treturn fract(x);\n}\n\nfloat wave_square(float x) {\n\treturn (fract(x) < 0.5) ? 0.0 : 1.0;\n}\n\nfloat wave_bounce(float x) {\n\tx = 2.0*(fract(x)-0.5);\n\treturn sqrt(1.0-x*x);\n}\n\nfloat mix_mul(float x, float y) {\n\treturn x*y;\n}\n\nfloat mix_add(float x, float y) {\n\treturn min(x+y, 1.0);\n}\n\nfloat mix_max(float x, float y) {\n\treturn max(x, y);\n}\n\nfloat mix_min(float x, float y) {\n\treturn min(x, y);\n}\n\nfloat mix_xor(float x, float y) {\n\treturn min(x+y, 2.0-x-y);\n}\n\nfloat mix_pow(float x, float y) {\n\treturn pow(x, y);\n}", "inputs": [ ], "instance": "float $(name)_fct(vec2 uv) {\n\treturn mix_$(mix)(wave_$(x_wave)($(x_scale)*uv.x), wave_$(y_wave)($(y_scale)*uv.y));\n}", "name": "Pattern", "outputs": [ { "f": "$(name)_fct($(uv))", "longdesc": "A greyscale image that combines the horizontal and vertical patterns", "shortdesc": "Output", "type": "f" } ], "parameters": [ { "default": 0, "label": "Combiner", "longdesc": "The operation used to combine the horizontal and the vertical 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": 5, "label": "X", "longdesc": "Pattern generated along the X axis", "name": "x_wave", "shortdesc": "X Pattern", "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": "X Repeat", "step": 1, "type": "float" }, { "default": 5, "label": "Y", "longdesc": "Pattern generated along the Y axis", "name": "y_wave", "shortdesc": "Y Pattern", "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": "Y Repeat", "step": 1, "type": "float" } ] }, "type": "shader" }