{ "lib": [ { "display_name": "Object", "icon_data": "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", "name": "MFSDF_Object", "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Metallic": 0.0, "Roughness": 0.0, "Specular": 0.5 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "\n", "inputs": [ { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" } ], "instance": "vec4 PBRObjectMaker_simple_$name(vec4 uv){\n\tfloat sdf=$sdf3d(uv.xyz);\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4(0.0,0.0,0.0,sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_simple_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "2:", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "3:", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "4:", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "5:", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object Simple" }, "shortdesc": "", "tree_item": "PF/MFSDF/Gen/Object", "type": "shader" }, { "display_name": "Object And Transform", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAABk9JREFUaIHtWs1KM0sQ7Z6fzEhAfAQ/ly5cRWKCIgqufAufwa0rt4KufAVduTOiIIKITyC48AkUoyhkYub3LupOUanqmUzUfBcuOQtJZjoz59Spqu7pUakppphiiv8SenKXbrfbWmuttVLq7u5uQnf5TQHtdtvKoYeBY7Isy7Ls+vr6t276CwJWVlYcx7EIJHuqQeUy0jS9urr64d1/JACo27bNqDMN9CxlnyRJmqZpml5cXPxtAc1mE6gXsYez4AyOYbkEGqIoGgwGURR1Op2/JKDVarHAIz8g7bqu4zhFCqkPSZIkSRLHcRiGQRCcnZ1NVkCj0ajVakb2lmXVajXXdZG9FIAmaK2zHOhDGIb9fv/t7e38/HwiApaXl43stdae57muCwIcAjuHLG5FiiFN0ziO0Ydut1vdiqoCKHsqwHGcWq0G1GHASAdoY6UmxHEMPgRB8Pr6enp6+msCGo2G53mSEFCn4Wfs0S74iyWu8sZKTUANX19fvV7v+fn55ORkJDenigAWe/gL1MsFsBRiZQAClFJpDkgkvE4VbqMdaLVacDlkr7X2fd/zPBCAKWR0AAXDDzGL6C2kCYPBoN/vf3x8HBwc/EhAs9mU4fcImADZQyuWAVYCdCRMpNfX16OjoxKGI2ySPQdyxvM83/cpe1nBMutKyoCaAL+FYZBjJbBLzq2srLiuSwNZq9V838f8QRPQCpcA9DBbpDzpFZv7lpeXb29vv+MACz92TAY6AxQVsXSgpAySJMGfwGz9HQdY+C3L8nMUFYAUIyubCmN9WSYbimw2mzc3N+M54AyvkIEuEkWuLG1oBcuZmNWxytcUSkwIOAwOzs7OFvIsOsFuyajTxv9DAYrMBtiL6IyRpmm9Xi/iaU6hdruNrQDCT5OHpb5xEqAlAWLkDM0K19ipVF4ea2trl5eXVR2gcbJtm3UVSq6o20gH7OHVhPFRE7jS8IMDcRwXmTBCADQf2WGKPhuLlWWRfODEMoAaoAKgC0H7Hk8AhqqIXzmMeTJSANYAzZ8kSVzX9TxvDAF49YpcaVt0SNJXTyF0gJ1K0xTz1hxreQj3c3T+iGjMCodMpSzq5YPpAHblkjC5rnt8fFzJAeqvkQdjI1myI9bw6qCKA3iECjOaMEIANjiWzfJgCaoLYIUhL1VJgMrnF3pj+gFpMSVSGB1D2VtiOQQVzASgBvihkarhKOxjarIhhaA8GEuLLGakGHZcXrPoLJW9s7NT1YF/xRWg6B6WyTH5VYtHAuoALCiyLKPjZb5VEkArQf79NkoEQBFblgUCaDUWPdmYBdDRrKZlYCQ5KVIP75DSoAI5iL1lWWq4mpF90VNBJQFMBuPNSDPTLDF5yawAipZl0YmMmRNFkZGqubSvr6/BUGaC9IRJMn5lYqqAhhLCv729PYYDKp9WcJFIqZfYMi6k4UYacRwXDTA7oJTC/XumAaGJIfQgJSe5GsPMvlLqwL7f748t4OrqCh+xs2HIwZI0E1bEUkLuskRRtLW1NbYApVSaplEU4XsUyp4pGbl7Y7RLkjayD4Kg5MplAi4uLgaDQRzHqIEqQQ10NS+1MYXGDwz41gP2GNfX10tIjtiZg/3uKIqYDHlXRktyhWFaTEks8HAXfG3z+flZzrDMAaVUp9MJgiAMQ9g3ZlZQMUZVxtxgeYJIcmDse73exsZGOcOyrUXA4+Pj4uIibH2WPCviBz286GA1rYenJxZ7CBPs7AZB0Gg0RtKrtAf/9vYGeyqQS2AFQnoCEyqbVuGrGm5HMu/DMBwMBkEQvLy8VOE22gGl1NPT0/z8vO/7aIIlVvls3jVOWMoUeOj0LHO63W5J6xxbgFLq8fFxYWEBNFSnLq8jsx8zJwxDeCfQ7XY3NzcrEqsqQCn18PDw588f3/cle7nGBOjhrU8WeJr0wD4Igufn54qxB1SqAQS8ddvd3cWQy6UlRZZltm1n+dMJG0ZnqzAMe71es9kci48aywHE/f390tKSbdss2Iy6DHlJ4N/f31dXV79B5kf/7LG3tzc3N1ev12dmZnDrl+6f0laLRqEk0BAEQflcO0EBgP39/dnZ2Xq9DjvY7H0rnR+QPZjQ7/fHSvdJCUAcHh6CDPQBBSB7yPiip5NvYIL/cnZ8fAwvqZRSxh2RKaaYYor/Af4B1HnOu9ty9SkAAAAASUVORK5CYII=", "name": "MFSDF_Object_And_Transform", "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": 0.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object And Transform", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "shortdesc": "", "tree_item": "PF/MFSDF/Gen/Object And Transform", "type": "shader" }, { "display_name": "Object Attributes", "icon_data": "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", "name": "pxflib", "parameters": { }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "MFSDF", "name": "MFSDF", "shortdesc": "V4->V4 MFSDF", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nDecompose the MFSDF into the most used attributes", "name": "MFSDF Object Attributes", "outputs": [ { "sdf3d": "$MFSDF(vec4($uv.xyz,0.0)).w", "shortdesc": "Object", "type": "sdf3d" }, { "shortdesc": "Albedo", "tex3d": "$MFSDF(vec4($uv.xyz,1.0)).xyz", "type": "tex3d" }, { "shortdesc": "Metallic", "tex3d_gs": "$MFSDF(vec4($uv.xyz,2.0)).x", "type": "tex3d_gs" }, { "shortdesc": "Roughness", "tex3d_gs": "$MFSDF(vec4($uv.xyz,5.0)).x", "type": "tex3d_gs" }, { "shortdesc": "Emission", "tex3d": "$MFSDF(vec4($uv.xyz,13.0)).xyz", "type": "tex3d" }, { "shortdesc": "Specular", "tex3d_gs": "$MFSDF(vec4($uv.xyz,4.0)).x", "type": "tex3d_gs" } ], "parameters": [], "shortdesc": "MFSDF Object Attributes" }, "tree_item": "PF/MFSDF/Gen/Object Attributes", "type": "shader" }, { "connections": [ { "from": "tex3d_pattern_2", "from_port": 0.0, "to": "tex3d_colorize_3", "to_port": 0.0 }, { "from": "tex3d_colorize_3", "from_port": 0.0, "to": "pxflib_4", "to_port": 0.0 }, { "from": "pxflib_4", "from_port": 0.0, "to": "gen_outputs", "to_port": 0.0 }, { "from": "sdf3d_box", "from_port": 0.0, "to": "pxflib_4", "to_port": 5.0 } ], "display_name": "Checkerboard", "icon_data": "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", "label": "Checkerboard", "longdesc": "", "name": "graph_2", "nodes": [ { "name": "sdf3d_box", "node_position": { "x": -1041.340088, "y": -203.449951 }, "parameters": { "r": 0.0, "sx": 6.0, "sy": 0.5, "sz": 6.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "tex3d_pattern_2", "node_position": { "x": -1106.340088, "y": -381.449951 }, "parameters": { "mix": 4.0, "x_scale": "$checkersize", "x_wave": 2.0, "y_scale": 0.0, "y_wave": 2.0, "z_scale": "$checkersize", "z_wave": 2.0 }, "seed": 0.0, "seed_locked": false, "type": "tex3d_pattern" }, { "name": "gen_inputs", "node_position": { "x": -1341.340088, "y": -277.949951 }, "parameters": { }, "ports": [], "seed": 0.0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -171.340027, "y": -302.949951 }, "parameters": { }, "ports": [ { "group_size": 0.0, "name": "port0", "type": "v4v4" } ], "seed": 0.0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1055.590088, "y": -653.449951 }, "parameters": { "checkersize": 2.0, "param0": 6.0, "param1": -1.0, "param2": { "interpolation": 1.0, "points": [ { "a": 1.0, "b": 0.808594, "g": 0.808594, "pos": 0.0, "r": 0.808594 }, { "a": 1.0, "b": 0.53125, "g": 0.53125, "pos": 1.0, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed": 0.0, "seed_locked": false, "type": "remote", "widgets": [ { "label": "Board Size", "linked_widgets": [ { "node": "sdf3d_box", "widget": "sx" }, { "node": "sdf3d_box", "widget": "sz" } ], "name": "param0", "type": "linked_control" }, { "default": 1.0, "label": "Checker Size", "max": 20.0, "min": 0.0, "name": "checkersize", "step": 0.001, "type": "named_parameter" }, { "label": "Position", "linked_widgets": [ { "node": "pxflib_4", "widget": "TranlateY" } ], "name": "param1", "type": "linked_control" }, { "label": "Color", "linked_widgets": [ { "node": "tex3d_colorize_3", "widget": "g" } ], "name": "param2", "type": "linked_control" }, { "label": "Metallic", "linked_widgets": [ { "node": "pxflib_4", "widget": "Metallic" } ], "name": "param3", "type": "linked_control" }, { "label": "Specular", "linked_widgets": [ { "node": "pxflib_4", "widget": "Specular" } ], "name": "param4", "type": "linked_control" }, { "label": "Roughness", "linked_widgets": [ { "node": "pxflib_4", "widget": "Roughness" } ], "name": "param5", "type": "linked_control" } ] }, { "name": "tex3d_colorize_3", "node_position": { "x": -850.0, "y": -377.021362 }, "parameters": { "g": { "interpolation": 1.0, "points": [ { "a": 1.0, "b": 0.808594, "g": 0.808594, "pos": 0.0, "r": 0.808594 }, { "a": 1.0, "b": 0.53125, "g": 0.53125, "pos": 1.0, "r": 0.53125 } ], "type": "Gradient" } }, "seed": 0.0, "seed_locked": false, "type": "tex3d_colorize" }, { "name": "pxflib_4", "node_position": { "x": -591.953735, "y": -359.458862 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": -1.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "parameters": { "checkersize": 2.0, "param0": 6.0, "param1": -1.0, "param2": { "interpolation": 1.0, "points": [ { "a": 1.0, "b": 0.808594, "g": 0.808594, "pos": 0.0, "r": 0.808594 }, { "a": 1.0, "b": 0.53125, "g": 0.53125, "pos": 1.0, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "global": "", "instance": "", "longdesc": "", "name": "" }, "shortdesc": "", "tree_item": "PF/MFSDF/Objs/Checkerboard", "type": "graph" }, { "connections": [ { "from": "sdf3d_box", "from_port": 0.0, "to": "sdf3d_translate_3_2", "to_port": 0.0 }, { "from": "sdf3d_translate_3_2", "from_port": 0.0, "to": "sdf3d_rotate_2", "to_port": 0.0 }, { "from": "sdf3d_translate_3_2", "from_port": 0.0, "to": "sdf3d_boolean", "to_port": 0.0 }, { "from": "pxflib", "from_port": 0.0, "to": "sdf3d_boolean", "to_port": 1.0 }, { "from": "sdf3d_rotate_2", "from_port": 0.0, "to": "sdf3d_translate_3_3", "to_port": 0.0 }, { "from": "sdf3d_translate_3_3", "from_port": 0.0, "to": "pxflib", "to_port": 0.0 }, { "from": "sdf3d_boolean", "from_port": 0.0, "to": "pxflib_2", "to_port": 8.0 }, { "from": "pxflib_5", "from_port": 0.0, "to": "pxflib_3", "to_port": 0.0 }, { "from": "pxflib_2", "from_port": 0.0, "to": "pxflib_3", "to_port": 1.0 }, { "from": "sdf3d_box_2", "from_port": 0.0, "to": "sdf3d_smoothboolean", "to_port": 0.0 }, { "from": "sdf3d_translate_3_4", "from_port": 0.0, "to": "sdf3d_smoothboolean", "to_port": 1.0 }, { "from": "sdf3d_smoothboolean", "from_port": 0.0, "to": "pxflib_5", "to_port": 8.0 }, { "from": "sdf3d_box_3", "from_port": 0.0, "to": "sdf3d_translate_3_4", "to_port": 0.0 }, { "from": "pxflib_3", "from_port": 0.0, "to": "gen_outputs", "to_port": 0.0 } ], "display_name": "Stage grey with lights", "icon_data": "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", "label": "Stage", "longdesc": "", "name": "graph", "nodes": [ { "name": "sdf3d_translate_3_4", "node_position": { "x": -726.0, "y": 1007.5 }, "parameters": { "x": 0.0, "y": 0.0, "z": -3.77 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_smoothboolean", "node_position": { "x": -709.0, "y": 881.5 }, "parameters": { "k": 2.35, "op": 0.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_smoothboolean" }, { "name": "sdf3d_box_3", "node_position": { "x": -975.0, "y": 966.5 }, "parameters": { "r": 0.01, "sx": 6.22, "sy": 5.59, "sz": 0.37 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "sdf3d_box_2", "node_position": { "x": -974.0, "y": 794.5 }, "parameters": { "r": 0.01, "sx": 6.1, "sy": 0.47, "sz": 6.76 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib_5", "node_position": { "x": -519.164001, "y": 641.947998 }, "parameters": { "Alpha": 0.0, "AmbientOcclusion": 0.0, "BaseColor": { "a": 1.0, "b": 0.378906, "g": 0.378906, "r": 0.378906, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "Normal": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 1.0, "Specular": 0.0, "TranlateX": 0.0, "TranlateY": -1.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0,1.0,1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "vec3(0.0,1.0,0.0)", "function": true, "label": "Normal", "name": "Normal_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Alpha", "name": "Alpha_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "AO", "longdesc": "Fake Ambient Occlusion", "name": "AmbientOcclusion_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "// 0 - SDF (0,0,0,sdf)\n// 1 - BaseColor (r,g,b,sdf) linear (0-1) \n// 2 - Metallic (v,0,0,sdf)\n// 4 - Specular (v,0,0,sdf)\n// 5 - Roughness (v,0,0,sdf)\n//13 - Emission\t (r,g,b,sdf) linear (0-infinite)\n//14 - Normal (x,y,z,sdf)\n//15 - Alpha (v,0,0,sdf)\n//19 - Ambient Occlusion (v,0,0,sdf) \n//999 - Table ID - Identifies this table (0,0,0,0)\n\nvec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*6.28318530718)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//19 - Ambient Occlusion\n\tif (uv.w>18.5) {\n\t\treturn vec4($AmbientOcclusion*$AmbientOcclusion_tex3d(vec4(uv.xyz,19.0)),0.0,0.0,sdf);\n\t} else\n\t//15 - Alpha\n\tif (uv.w>14.5) {\n\t\treturn vec4($Alpha*$Alpha_tex3d(vec4(uv.xyz,15.0)),0.0,0.0,sdf);\n\t} else\n\t//14 - Normal\n\tif (uv.w>13.5) {\n\t\treturn vec4($Normal*$Normal_tex3d(vec4(uv.xyz,14.0)),sdf);\n\t} else\n\t//13 - Emission\n\tif (uv.w>12.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5) {\n\t\treturn vec4($Roughness*$Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*$Specular_tex3d(vec4(uv.xyz,4.0)),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5) {\n\t\treturn vec4($Metallic*$Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*$BaseColor_tex3d(vec4(uv.xyz,1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object Maker", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Clearcoat Normal Scale", "max": 1.0, "min": 0.0, "name": "Normal", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Alpha", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "AmbientOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 1.0, "min": 0.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 1.0, "min": 0.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 1.0, "min": 0.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object Maker with Rot Scale Trans" }, "type": "shader" }, { "name": "pxflib_3", "node_position": { "x": -135.480026, "y": 649.5 }, "parameters": { "op": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "vec4 sdf3dc1_union(vec4 a, vec4 b) {\n\treturn vec4((a.wV4 MFSDF A", "type": "v4v4" }, { "default": "vec2(0.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF B", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a boolean operation (union, intersection or difference) between two shapes", "name": "Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "$op($in1($uv), $in2($uv))" } ], "parameters": [ { "default": 0.0, "label": "", "name": "op", "type": "enum", "values": [ { "name": "Union", "value": "sdf3dc1_union" } ] } ], "shortdesc": "Boolean" }, "type": "shader" }, { "name": "pxflib", "node_position": { "x": -893.0, "y": 634.5 }, "parameters": { "mode": 4.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D", "name": "in", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - PauloFalcao\n\nTransforms a SDF3D making a mirror symmetry using the chosen axis", "name": "Axis Symmetry", "outputs": [ { "sdf3d": "$in(vec3($mode))", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "default": 6.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "abs($uv.xyz)" }, { "name": "XY", "value": "abs($uv.xy),$uv.z" }, { "name": "XZ", "value": "abs($uv.x),$uv.y,abs($uv.z)" }, { "name": "YZ", "value": "$uv.x,abs($uv.yz)" }, { "name": "X", "value": "abs($uv.x),$uv.yz" }, { "name": "Y", "value": "$uv.x,abs($uv.y),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,abs($uv.z)" } ] } ], "shortdesc": "Axis Symmetry" }, "type": "shader" }, { "name": "sdf3d_translate_3_3", "node_position": { "x": -847.0, "y": 491.5 }, "parameters": { "x": 2.95, "y": 1.36, "z": 1.36 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_boolean", "node_position": { "x": -536.0, "y": 227.5 }, "parameters": { "op": 0.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_boolean" }, { "name": "sdf3d_rotate_2", "node_position": { "x": -830.0, "y": 283.5 }, "parameters": { "ax": 0.0, "ay": -39.0, "az": 65.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_rotate" }, { "name": "sdf3d_translate_3_2", "node_position": { "x": -1031.0, "y": 220.5 }, "parameters": { "x": 0.0, "y": 3.23, "z": 0.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_box", "node_position": { "x": -1269.0, "y": 253.5 }, "parameters": { "r": 1.0, "sx": 0.89, "sy": 0.05, "sz": 0.81 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib_2", "node_position": { "x": -351.0, "y": 218.0 }, "parameters": { "Alpha": 0.0, "AmbientOcclusion": 0.0, "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 3.0, "Metallic": 0.0, "Normal": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": 0.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0,1.0,1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "vec3(0.0,1.0,0.0)", "function": true, "label": "Normal", "name": "Normal_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Alpha", "name": "Alpha_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "AO", "longdesc": "Fake Ambient Occlusion", "name": "AmbientOcclusion_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "// 0 - SDF (0,0,0,sdf)\n// 1 - BaseColor (r,g,b,sdf) linear (0-1) \n// 2 - Metallic (v,0,0,sdf)\n// 4 - Specular (v,0,0,sdf)\n// 5 - Roughness (v,0,0,sdf)\n//13 - Emission\t (r,g,b,sdf) linear (0-infinite)\n//14 - Normal (x,y,z,sdf)\n//15 - Alpha (v,0,0,sdf)\n//19 - Ambient Occlusion (v,0,0,sdf) \n//999 - Table ID - Identifies this table (0,0,0,0)\n\nvec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*6.28318530718)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//19 - Ambient Occlusion\n\tif (uv.w>18.5) {\n\t\treturn vec4($AmbientOcclusion*$AmbientOcclusion_tex3d(vec4(uv.xyz,19.0)),0.0,0.0,sdf);\n\t} else\n\t//15 - Alpha\n\tif (uv.w>14.5) {\n\t\treturn vec4($Alpha*$Alpha_tex3d(vec4(uv.xyz,15.0)),0.0,0.0,sdf);\n\t} else\n\t//14 - Normal\n\tif (uv.w>13.5) {\n\t\treturn vec4($Normal*$Normal_tex3d(vec4(uv.xyz,14.0)),sdf);\n\t} else\n\t//13 - Emission\n\tif (uv.w>12.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5) {\n\t\treturn vec4($Roughness*$Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*$Specular_tex3d(vec4(uv.xyz,4.0)),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5) {\n\t\treturn vec4($Metallic*$Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*$BaseColor_tex3d(vec4(uv.xyz,1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object Maker", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Clearcoat Normal Scale", "max": 1.0, "min": 0.0, "name": "Normal", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Alpha", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "AmbientOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 1.0, "min": 0.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 1.0, "min": 0.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 1.0, "min": 0.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object Maker with Rot Scale Trans" }, "type": "shader" }, { "name": "gen_inputs", "node_position": { "x": -1769.0, "y": 559.265259 }, "parameters": { }, "ports": [], "seed": 0.0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": 164.519974, "y": 559.265259 }, "parameters": { }, "ports": [ { "name": "unnamed", "type": "v4v4" } ], "seed": 0.0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -953.511108, "y": -82.0 }, "parameters": { "param0": 3.0 }, "seed": 0.0, "seed_locked": false, "type": "remote", "widgets": [ { "label": "Emission", "linked_widgets": [ { "node": "pxflib_2", "widget": "Emission" } ], "name": "param0", "type": "linked_control" } ] } ], "parameters": { "param0": 3.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "global": "", "instance": "", "longdesc": "", "name": "" }, "shortdesc": "", "tree_item": "PF/MFSDF/Objs/Stage grey with lights", "type": "graph" }, { "connections": [ { "from": "sdf3d_box", "from_port": 0.0, "to": "sdf3d_translate_3_2", "to_port": 0.0 }, { "from": "sdf3d_translate_3_2", "from_port": 0.0, "to": "sdf3d_rotate_2", "to_port": 0.0 }, { "from": "sdf3d_translate_3_2", "from_port": 0.0, "to": "sdf3d_boolean", "to_port": 0.0 }, { "from": "pxflib", "from_port": 0.0, "to": "sdf3d_boolean", "to_port": 1.0 }, { "from": "sdf3d_rotate_2", "from_port": 0.0, "to": "sdf3d_translate_3_3", "to_port": 0.0 }, { "from": "sdf3d_translate_3_3", "from_port": 0.0, "to": "pxflib", "to_port": 0.0 }, { "from": "sdf3d_boolean", "from_port": 0.0, "to": "pxflib_2", "to_port": 8.0 }, { "from": "pxflib_2", "from_port": 0.0, "to": "gen_outputs", "to_port": 0.0 } ], "display_name": "Stage Lights", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAT5JREFUaIHtmksOwyAMRKHqPen9L+EuiEgXqeJvGITfHuyxx0CrlJIkSZLgQ0RBO9eITXu6tdbLvGv1DOqzl6LAXjJelsU9b509vExlKoM9CXsfJgs4ktDKICK9heIOFlECphnwwlILvQDf01CtYWELdSAsVOT9HOVDsZA6uqkDczV0UCwkZVjIoYSz7uMe931KAfCDAp8Xr7oJxqoR0bUARQCmhv4jwavb9wJGVOZ2luU6WAJEeTgWmBVLZF/AQZfdAyDvn1/EFxmaBs1NLNIQLVcjgD8JrbVPa6EaZEN8LoOZ5tjH3APjEivggTat+pwexA7xA4Qfo9Fs2QEo9hMA5Z+y42Nu+Q6gkQJmIxOANgBluw4AspMAwAEofAGY2RemgH+fbSBwnxls7TtHclP+WPaHiCwfoCRJkiTr8QX8x4xuMcVQtAAAAABJRU5ErkJggg==", "label": "Stage Lights", "longdesc": "", "name": "graph", "nodes": [ { "name": "pxflib", "node_position": { "x": -893.0, "y": 634.5 }, "parameters": { "mode": 4.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D", "name": "in", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - PauloFalcao\n\nTransforms a SDF3D making a mirror symmetry using the chosen axis", "name": "Axis Symmetry", "outputs": [ { "sdf3d": "$in(vec3($mode))", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "default": 6.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "abs($uv.xyz)" }, { "name": "XY", "value": "abs($uv.xy),$uv.z" }, { "name": "XZ", "value": "abs($uv.x),$uv.y,abs($uv.z)" }, { "name": "YZ", "value": "$uv.x,abs($uv.yz)" }, { "name": "X", "value": "abs($uv.x),$uv.yz" }, { "name": "Y", "value": "$uv.x,abs($uv.y),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,abs($uv.z)" } ] } ], "shortdesc": "Axis Symmetry" }, "type": "shader" }, { "name": "sdf3d_translate_3_3", "node_position": { "x": -847.0, "y": 491.5 }, "parameters": { "x": 2.95, "y": 1.36, "z": 1.36 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_boolean", "node_position": { "x": -536.0, "y": 227.5 }, "parameters": { "op": 0.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_boolean" }, { "name": "sdf3d_rotate_2", "node_position": { "x": -830.0, "y": 283.5 }, "parameters": { "ax": 0.0, "ay": -39.0, "az": 65.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_rotate" }, { "name": "sdf3d_translate_3_2", "node_position": { "x": -1031.0, "y": 220.5 }, "parameters": { "x": 0.0, "y": 3.23, "z": 0.0 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_box", "node_position": { "x": -1269.0, "y": 253.5 }, "parameters": { "r": 1.0, "sx": 0.89, "sy": 0.05, "sz": 0.81 }, "seed": 0.0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib_2", "node_position": { "x": -351.0, "y": 218.0 }, "parameters": { "Alpha": 0.0, "AmbientOcclusion": 0.0, "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 3.0, "Metallic": 0.0, "Normal": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": 0.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0,1.0,1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "vec3(0.0,1.0,0.0)", "function": true, "label": "Normal", "name": "Normal_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Alpha", "name": "Alpha_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "AO", "longdesc": "Fake Ambient Occlusion", "name": "AmbientOcclusion_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "// 0 - SDF (0,0,0,sdf)\n// 1 - BaseColor (r,g,b,sdf) linear (0-1) \n// 2 - Metallic (v,0,0,sdf)\n// 4 - Specular (v,0,0,sdf)\n// 5 - Roughness (v,0,0,sdf)\n//13 - Emission\t (r,g,b,sdf) linear (0-infinite)\n//14 - Normal (x,y,z,sdf)\n//15 - Alpha (v,0,0,sdf)\n//19 - Ambient Occlusion (v,0,0,sdf) \n//999 - Table ID - Identifies this table (0,0,0,0)\n\nvec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*6.28318530718)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//19 - Ambient Occlusion\n\tif (uv.w>18.5) {\n\t\treturn vec4($AmbientOcclusion*$AmbientOcclusion_tex3d(vec4(uv.xyz,19.0)),0.0,0.0,sdf);\n\t} else\n\t//15 - Alpha\n\tif (uv.w>14.5) {\n\t\treturn vec4($Alpha*$Alpha_tex3d(vec4(uv.xyz,15.0)),0.0,0.0,sdf);\n\t} else\n\t//14 - Normal\n\tif (uv.w>13.5) {\n\t\treturn vec4($Normal*$Normal_tex3d(vec4(uv.xyz,14.0)),sdf);\n\t} else\n\t//13 - Emission\n\tif (uv.w>12.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5) {\n\t\treturn vec4($Roughness*$Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*$Specular_tex3d(vec4(uv.xyz,4.0)),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5) {\n\t\treturn vec4($Metallic*$Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*$BaseColor_tex3d(vec4(uv.xyz,1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object Maker", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Clearcoat Normal Scale", "max": 1.0, "min": 0.0, "name": "Normal", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Alpha", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "AmbientOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 1.0, "min": 0.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 1.0, "min": 0.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 1.0, "min": 0.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object Maker with Rot Scale Trans" }, "type": "shader" }, { "name": "gen_inputs", "node_position": { "x": -1769.0, "y": 559.265259 }, "parameters": { }, "ports": [], "seed": 0.0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -1.480026, "y": 275.265259 }, "parameters": { }, "ports": [ { "name": "unnamed", "type": "v4v4" } ], "seed": 0.0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -953.511108, "y": -82.0 }, "parameters": { "param0": 3.0 }, "seed": 0.0, "seed_locked": false, "type": "remote", "widgets": [ { "label": "Emission", "linked_widgets": [ { "node": "pxflib_2", "widget": "Emission" } ], "name": "param0", "type": "linked_control" } ] } ], "parameters": { "param0": 3.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "global": "", "instance": "", "longdesc": "", "name": "" }, "shortdesc": "", "tree_item": "PF/MFSDF/Objs/Stage Lights", "type": "graph" }, { "display_name": "Boolean", "generic_size": 1.0, "icon_data": "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", "name": "MFSDF_Boolean", "parameters": { "op1": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "vec4 $(name_uv)_sout=$in($uv);\n#for\n$(name_uv)_sout=$op#($(name_uv)_sout, $in#($uv));\n#end", "global": "vec4 mfsdf_boolean_union(vec4 a, vec4 b) {\n\treturn vec4((a.wb.w)?vec4(a.xyz,-a.w):vec4(b));\n}\nvec4 mfsdf_boolean_inter(vec4 a, vec4 b) {\n\treturn vec4((a.w>b.w)?vec4(a):vec4(b));\n}", "inputs": [ { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in", "shortdesc": "V4->V4 MFSDF Base", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in#", "shortdesc": "V4->V4 MFSDF #", "type": "v4v4" } ], "instance": "", "longdesc": "Performs a boolean operation (union, intersection or difference) between two shapes\n\nCode - PauloFalcao", "name": "MFSDF Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "$(name_uv)_sout" } ], "parameters": [ { "default": 2.0, "label": "2:", "name": "op#", "type": "enum", "values": [ { "name": "Union", "value": "mfsdf_boolean_union" }, { "name": "Subtraction", "value": "mfsdf_boolean_sub" }, { "name": "Intersection", "value": "mfsdf_boolean_inter" } ] } ], "shortdesc": "MFSDF Boolean" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Boolean", "type": "shader" }, { "display_name": "Advanced Boolean", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAEHpJREFUaIGdWmuMHddd//3PYx737suxndjr2K7SmKSPbNhAEiVpoSqogKjahCZQQAqPfqgIAj4gIYT6DSEESEjQNClVaBs3ihri4DQgoQiEikB8oCV21qrtQEha2bGTeJ317t57Z+Y8+XDuzJ25M3dt9+/x7MyZM+f8H7//45y59IU/PSo4K7SxzgNIpBCcCc4YkYfnjFnnrHVEVGjDGHHGGBERGBFjxIgAWOeNtcY6Yx1nZJw31vViyRkZ6wjk4dNIEsF7DPJCW8eJYimE4PDeexjnJOeFNsY6Za3kjDEWBudhUkbWesZIcCY5d95777V1gtlMgHtvQejFESOjrZPEnPfwvrAuVxqA5DziDBZWOweSnDnAeG+dE4wpY5331jnvAU4R5wLQWW6JtLXWOWPdNlEkuGBMcMa8t9aPCgcg6IgRjbwDSDDWF5wAOFjnCRCSwyI3NpbCGz+yjjMCIAW31gnokdJgxKyzm/kAHkTwAAHKWMHZWAEga2Cdu/VDP4KdyQNhFOC1U2clYz3BecSSSHDGjHOcvDLWkvMcShtrfV4oAlnvvIcmGgGR4GEwbZ1zLhhjBHLBXNYyNoaJOPLBI2OW4buZ2ZGo3ZkmzbfdcTu8L1v9rDGpbH/z1CnGyFrrvAGQK6O1cT7AjwRnHiAikiB4wb3zXnignOOHoVncTIgxjOegeoeqWzUCAbesrKDkx7eHorLBjzn+r29/W1TSV6NcnzR+Wq/1oeodJtOX3QgA0TSXZU+qSdLuQB6Av/djHxPl/OOu18k9QMAffKHBOzXuOuYuLzxAf/bH9W5UG6PTtr5+AwIg/HXip6EwIhDOu8s3A0vAHJAAkcci37PLGr25VXivnEMc2TjO+v3t4p0MGAKbwCXgTeB+7+uWaZuxTnX9VB3EdbJOU8CkLrsN7XoO0GKYiRy0gdbFoIOhLgTtTBPIEgCIsUnrdmgNWhm9DcrrRl35yvSLteDbERLbcpYNotEj4Ml7NC01CQge7eFdrdtV+a6TA7xzk6lKBVGb446QVAkwwwmmItkO0fZauO98qwmhpie05/LdGBaui60Ot2qxWPah60KRb52vnXw4+drsRN1O7BtXvi33hOiH4wMecDPSQGPq2R3CgxlRKJiFqF4XTL1ZDV33yOs1xU4Upq6CTkuS8ETU7qZg3y36lIddd+auzX2V16cKihl+XEWh2v/Z7E4aq0u6ehTaISvtUNhNCorpSSdTY5IH0IR7rbKgTqN0pc9rpI4k0Hw6JUyjWG5pU9CkrgpiUdWvwxqTm8mdu4Z0tnON0EkNT+tyxUCiMxB0ImcWGcDWxLgqiyH+hFe6J+qC+yyWRJv/dqUO1OJSi3TtEAADALjywgMWMLU+pjxsbcCmeTFrri4BGm92jFN75Mtc0uijSramBCCAAAe4pgC6LkB9ousq7EovFd06qLrVXpgVTAogBzJAlIM4gHdZoCiPHCgAPWXtnWuCKfHKwkmgrMg73p61IGq2K0ABeRmSLSBnCzACspL7BoSuui6ZIZ4YP6My/vpp6F/VKSuNRkDYSwgOUAlQQUiVZ1XKsNPwlZp2hBabMOq9r7j3JYWBvJ+0NOn06TMayIARMASG5UVWKnvqorouAAucPPnqRLVTQ1dhrWSgrvjqEDNRXr+tI7T8+93/fuXK5talS+uooQiALV25bgFb6r4odR9uT5957dL65aXFhR//sbsamm4usHy7sbQMq0s8g/tS/GAGwHv/4p/80db24L2NjeFwlAHbwHap3bxEVOcR3D0YqgCGo9HGxpXtweCfvvTnJQY86upvGcZ772p/+EOP/Eq3BVpGqAfR2z76UxcuXLTWZnnuuZGDAZVqrmu64jjgZ9A8zP79cn730uJir9f7+C98dmbF3jLI5LJ7RVarTKdaALz9ztvvvPPucJRF33rmxl/8zV6vNxSjLI6HRcGAgxcvFi0ITQWii/v3W0DE8U1LS/M3H5yb67/7zadeuvzeoUMH9+7Zs7y8v85fi8oCu1w8i07uZznG6dNnlFLb24PNra1dwK6/++pNQA/Yuvvj24tMF4U+eHBQFKoojNbWGOccAGKMCyGklHEcxfEtcSzjePvc5sGT3xmePLkNGCDLsq2tLe/9lc0rH/zABya8VNx2VhzTC5qpwN8yjrFWG1OowhgzBHpl6Fz4zr/uBgTAy4NqhXHlx1URoYAbgLy0SQbEcVwUKk00D1uRrTU9vKepFgAAa4TI0mMbbl260qtrp4iIcx7JSEoZ9qe2gAEwKh1X1Ryg8ubKp6eejoBtYBCyuBBSSsY4iF49dco342aDkWZu5Q8+/MtTcvmpl+C/d/rMW29d3NzaMs9/LV29V0rBOJcLsdu9W7/7rm3WOfVDlXxX3lyli0EZi+I77pg/fHhuz3K/35dCvHH0CTp05L2Njcvvbezdu2caNi1qQogA31zlEc6cfU0bM8pGw+GwB+AbT/Y+9SmxeIDsTboo8vn5oihu/fCH/+/pp0WJIjZJkGMluBqKgmyHHnnkjTfeWIzjuN+XcYz5eX/pzcsvv6yBwXDIOCfgzJmzt99+2+xVPbUEqBnAOWe01tpY67xzxhjn3BCYB+KXXloCEmDwyCNubs5Zu76+3v/EJ7RSSqnQ0zsXPHg8F2PEGGOMCxFH0VwUjUaj5QMHiHMmBHv++ZCkDZADkbFGa+ucsXYwGEoZ0DXRSV0k0VpWkzVGG53nxYULF5RSMoqIMcEF5zwkrBAlCeg//3wEiPJYvPHW137iR51zlSPVtUVEIGKM7f+3k/ml16dgpoEcGAI5sIszLjgREfC/r78eRfLA8nIcx1JKIWoa9wA1w6gxRmud50WWZVeuXFFabw8G7qVnb3j0t5I0Mdbwu+4avPJKyFm2BEZUYePd1/cee51qIQhNzwsoGtSwpMoSdQhsAxmwfNddaa+XJgnn/OzRJ/b+/GfnF+YvXLi4tGupl6Z1McKXMFEBRmutlB6NRkqp0WhkjFFKZVlOgD/6ZPToYwvz82ppKb/nHpXnW2troYZLgAiIAFlzAGqF0U43qAerDOArK3uTJJ2bSxbmhRDrz3zZAlmex0nMGdve2rbGFoXq9dIoisag8l4AsMZqo/M8z7K8KIrhaMSInPfWWOdcBiwB80efEL/xO/H8/FyaqjzP7rsvL4oDF0dvXTxboahKAmyGALaZDYIFbt1329nl/kIcJ71elCQkBE+Sza8/HiR0zlljnffOua3trX6v75xN09Q7L6XgQghrjDYmz/Msy4pCDYdDpVSSJACIEWMsRL0E6H3tiwlwiOi1Bx+c6/ettRu7lbh1b14U1hhjzNzaWtsCaFkAwGBlhQvBhUjj+FKS7IsixjlxPv/ii1e8zwBd1oUsfC8GAKhCjVNaKPkQS0BoY5RSeZ5rbbI818aMRtkPnv3KLY8+FkkZx9Hu1dXBiROyDI7nvF88flwCEbD+8MNubq6KOW552RpjrXXOWee8c5NagDHGmGAs5pwLscg5Y2wcmjjvHzsWctx2Ca2QIg6srgbQM8ZOfP3xw5/+VWIsywvGeJ7n4YO7sNYqpay1WmtjjDWmKIoNQArhve/3++j11Orq9okTHjBAH0hKjS4dO1aHDQfeN7f8nz/3gCsL4xCIQvwJdOc//seF7GKFpXAuSjhlZY4bAbtWV5Ner9/vSSmEFAMgz4s4jjljSinGmFJaCEF//TfPZFmmtM5GWV4URV5c2dzsWT36l28d/NzvKaX05R+o4TAfjXRRJGtrCZACCRCXvstryWsKPFOByDWdYWqxn5WwwR13iCRJer2k3xc3HIqk/N7XvrjwwM/4tLe0tJjEcZwkvTSVUqZpKoKaqEwQRGCMLmcmB5K//atdQPxrv52Ic700zUej/O67t4pCr63lJfdV/BEtMaYEcGVdbWtOXC2Rw2FWVuI4jtM06fVEFGHp5u2jT5wfJx/qVZsPtbWNoFqKIUac8xBot4EIIGDh6S+9D3j7oYeSKLJzc0VRFPffnyu1rVR/ba0ef1jtqDRSzwO2pf5xLFpZkVGURlGcplEccyGIc3b8+DqwBWwCI2CPEFJKzjgRUYA/ASDBGOOcWcuEENxwx10SJ0rp/Ssr62trvpymd/x4CviHH46jyPX7zlqjtbrhBq1UobW11lr70Q/de/LZr7QtgCZ+Hj937tc/+UkeSMq5KJJRJKRknIeVQ3Hs2Kh0hg1gABxeWYkimSRxeElwTkSMccaInvzqc0VRFEWhjSnyIs9zY0yW5aPzZ1SWXV5b4yEPlO4b0H87sPaZz4T4Mw5BzllrnbXWOW9t5cdVHUFEjHPGGOOc16JQCFAHXnjhfC2vhcS8BRhg38pKlKbp/iNpkgrBkySJ41gIkSRxHMeCMSalDAWMj6MQN9JeKhYWMsbE6ur6iROh6J8D+kAPSIDvAvKFF+op7IHoxpc//ZPeuWop4VsL2VIOds9z/7zGrtTXN/9TuvKoXD1bwAM3r67GSZLMzck0FZzHcRxFUcC5FJIxRk994+9DJi4KpbUyxhZFUShljfGX3syzLB+NVFFsvPpqwIZsRqGoywemSgk0nXgqJVdbMnm5Rgspb8+dd0ZxnPR6SZr6XQeFEHEUxXHMOY8iGYwguBCc8+BupW8oYsQFV4XySSKFSJOkyLLk3nu1UhsnTphyLRKEkaUMoiueToVR21xbVlFI1yIVgBtXV2UUxUmSpCmXkgmBOA71D+c8iqI4irgQIvhDSNSlbRnnXCnFGZNCqOgILn3fChFHUb/fV0rNfeQjqiiMMT97308/98RfmLKCnyDlGgSoWuoXn/vdPzz+7y8LIaI4jpJERhEXgnHOpcSug1JKxpkUQsooiuTYh4IjHf3mP4SBKhe01ioV1jLGWWeMYevfN1o7a4OrGq2rtYs1xln7S49+/qnffwxX2+KuX3z+L5989ukvc865EEIIWYtFwdGFlHbXzVwIzrgQXEoZLFBGAT6O1EGAQM57V5Yy1lmtjTFaG+OsizbOWWtD0WaNCc46Dj3WhhIoqMCVftxe0AQjj+fnPAA4RM/xIzEBdrGwzBiTUpTrfcYZZ+HHgLXV2WSB4wEi4kIw7x2zzDHOuXNyzHb0fliTbJynGt/jcxV5qvN0DBqLUJcETXnCmRhzRHph2XPeE2OYB44D9+3vSaJu2WqmIMY4wHMR4qxzzqZH5MZ5Z62z1jf5HtekzTJuamdqQkGLtQYwRpwzzvXCcsx5mR5CMR06d6GzY2eubnPOGee+4i+c972fnI8332LOVYU0A4y1oZ/fYdefiMICn4hxjrLMJsYcY3p+HxElRCz8Cz9V3OGrV2WBnalSGaoiyjm357D1Ptm84MOG2VTymnKA2kDhorr1gCcq5vcRUVQ3yAxq7dld+y+2yl/yEJHnPDiR3XNYbl3kVcngPQDmvZ0xBgNcUwZDpOdukhV3qMaZ+fOSKRnEdf3m0k/deej5fRpIB+9UgZ+au1pTL1ZfAT2Q9W+cOfbkU1eHJLX96WuzQJvvqafhC58s6+d2KVq/8OWX1mlqbVE1puv6tQrt4MRd1MF6napvwyi/HwYsccA0l/YdI08RtZvrep807WwB33nZNWEHmdbFTrO0EAR0JvZpA4sGP9fAV6dM12PGrsFmvd+GY6v1/wHU6HuyknbKyQAAAABJRU5ErkJggg==", "name": "MFSDF_Advanced_Boolean", "parameters": { "Correction": 0.0, "boolmode": 0.0, "colormode": 0.0, "mixshift": 0.0, "mixspread": 1.0, "smooth": 0.25 }, "seed": 53575.0, "seed_locked": true, "shader_model": { "code": "", "global": "float Custom_Bool_sdSmoothUnion( float d1, float d2, float k ) {\n float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 );\n return mix( d2, d1, h ) - k*h*(1.0-h); }\n\nfloat Custom_Bool_sdSmoothSubtraction( float d1, float d2, float k ) {\n float h = clamp( 0.5 - 0.5*(d2+d1)/k, 0.0, 1.0 );\n return mix( d2, -d1, h ) + k*h*(1.0-h); }\n\nfloat Custom_Bool_sdSmoothIntersection( float d1, float d2, float k ) {\n float h = clamp( 0.5 - 0.5*(d2-d1)/k, 0.0, 1.0 );\n return mix( d2, d1, h ) + k*h*(1.0-h); }", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999.0)", "label": "MFSDF A", "name": "in1", "shortdesc": "V4->V4 MFSDF A", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,999999.0)", "label": "MFSDF B", "name": "in2", "shortdesc": "V4->V4 MFSDF B", "type": "v4v4" }, { "default": "min($uv.x,$uv.y)", "function": true, "label": "Custom Boolean", "longdesc": "The union between A and B is defined by this SDF2D\nX is the distance to A\nY is the distance to B", "name": "sdf2d", "shortdesc": "SDF2D Custom Union", "type": "sdf2d" }, { "default": "vec4(1.0,0.0,0.0,0.0)", "function": true, "label": "MFSDF Union Tex", "longdesc": "MFSDF material used in the transition beetween MFSDF A and MFSDF B", "name": "in3", "shortdesc": "V4->V4 MFSDF Mix", "type": "v4v4" }, { "default": "0.0", "function": true, "label": "TEX3D Color Shift", "longdesc": "Color transition deformation between MFSDF A and MFSDF B, using a Grayscale TEX3D", "name": "shift_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" } ], "instance": "\nfloat normal_$name(float a, float b) {\n return $boolmode;\n}\n\nvec4 mfsdf3d_custom_boolean_$name(vec4 a, vec4 b, vec4 uv) {\n float e=0.001;\n\tfloat h=normal_$name(a.w,b.w);\n\tfloat d=h/(1.0+$Correction);\n\t$colormode\n return vec4(o);\n}", "longdesc": "Performs a custom boolean operation between two shapes.\nThe union is defined by a custom SDF2D\n\nCode - PauloFalcao", "name": "MFSDF Advanced Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "mfsdf3d_custom_boolean_$name($in1($uv), $in2($uv),$uv)" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Correction", "max": 1.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" }, { "default": 5.0, "label": "Color Mode", "name": "colormode", "type": "enum", "values": [ { "name": "Mix Color", "value": "vec4 o=vec4(mix(a.xyz,b.xyz,clamp((abs(a.w)-abs(b.w)+$shift_tex3d(uv)+$mixshift+$mixspread/2.0)*(1.0/$mixspread),0.0,1.0)),d);" }, { "name": "A Color", "value": "vec4 o=a;if (abs(b.w)V4 MFSDF Base", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,999999.0)", "label": "", "name": "in#", "shortdesc": "V4->V4 MFSDF #", "type": "v4v4" } ], "instance": "", "longdesc": "Performs a smooth boolean operation (union, intersection or difference) between shapes\n\nCode - PauloFalcao", "name": "MFSDF Smooth Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "$(name_uv)_sout" } ], "parameters": [ { "default": 2.0, "label": "2:", "name": "op#", "type": "enum", "values": [ { "name": "Union", "value": "mfsdf3d_smooth_union" }, { "name": "Subtraction", "value": "mfsdf3d_smooth_subtraction" }, { "name": "Intersection", "value": "mfsdf3d_smooth_intersection" } ] }, { "control": "None", "default": 0.0, "label": "2:", "longdesc": "The smoothness of the boolean operation", "max": 1.0, "min": 0.0, "name": "k#", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Boolean" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Smooth Boolean", "type": "shader" }, { "display_name": "Translate", "icon_data": "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", "name": "MFSDF_Translate", "parameters": { "x": 0.0, "y": 0.0, "z": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Translates the input V4->V4 Coordinates\n\nCode - PauloFalcao", "name": "MFSDF Translate", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$in(vec4($uv.xyz-vec3($x, $y, $z),$uv.w))" } ], "parameters": [ { "control": "P1.x", "default": 0.0, "label": "X", "max": 1.0, "min": -1.0, "name": "x", "step": 0.001, "type": "float" }, { "control": "P1.y", "default": 0.0, "label": "Y", "max": 1.0, "min": -1.0, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 1.0, "min": -1.0, "name": "z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Translate" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Translate", "type": "shader" }, { "display_name": "Rotate", "icon_data": "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", "name": "MFSDF_Rotate", "parameters": { "ax": 0.0, "ay": 0.0, "az": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "vec3 v4v4_rotate(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Rotates a V4->V4\nAdapted from RodZilla TEX3D Rotate\n\nCode - RodZilla, PauloFalcao\n", "name": "MFSDF Rotate", "outputs": [ { "shortdesc": "V4->V4 Ouput", "type": "v4v4", "v4v4": "$in(vec4(v4v4_rotate($uv.xyz, -vec3($ax, $ay, $az)*0.01745329251), $uv.w))" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "X", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "ax", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "ay", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "az", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Rotate" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Rotate", "type": "shader" }, { "display_name": "Scale", "icon_data": "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", "name": "MFSDF_Scale", "parameters": { "mode": 0.0, "x": 1.0, "xyz": 1.0, "y": 1.0, "z": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "vec4 o_$name_uv=$in(vec4($uv.xyz/vec3($x, $y, $z)/$xyz,$uv.w));", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Scales the input V4->V4 Coordinates\n\nCode - PauloFalcao", "name": "MFSDF Scale", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$mode" } ], "parameters": [ { "control": "P1.x", "default": 1.0, "label": "XYZ", "longdesc": "Scales all axis", "max": 1.0, "min": -1.0, "name": "xyz", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "X", "longdesc": "Scale X axis", "max": 1.0, "min": -1.0, "name": "x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Y", "longdesc": "Scale Y axis", "max": 1.0, "min": -1.0, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Z", "longdesc": "Scale Z axis", "max": 1.0, "min": -1.0, "name": "z", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "Mode", "longdesc": "- Multi-Field SDF mode is the default mode used for scaling Multi-Field SDF objects.\n- Coordinates Transformation is the mode that should be used for coordinates transformations operations, like in the fractal node input V4->V4 3D Transformation", "name": "mode", "type": "enum", "values": [ { "name": "MFSDF", "value": "vec4(o_$name_uv.xyz,o_$name_uv.w*min(min($x, $y), $z)*$xyz)" }, { "name": "Transformation", "value": "vec4(o_$name_uv.xyz,$uv.w/min(min($x, $y), $z)/$xyz)" } ] } ], "shortdesc": "MFSDF Scale" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Scale", "type": "shader" }, { "display_name": "Transform", "icon_data": "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", "name": "MFSDF_Transform", "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": 0.0, "TranslateZ": 0.0, "scale": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "vec4 o_$name_uv=$in(vec4(V4V4_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale, $uv.w));\n\n", "global": "vec3 V4V4_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Translates, Rotates, Scale a V4->V4\nAdapted from RodZilla Rotate\n\nCode - RodZilla, PauloFalcao", "name": "MFSDF Transform", "outputs": [ { "shortdesc": "V4->V4 Ouput", "type": "v4v4", "v4v4": "vec4(o_$name_uv.xyz,o_$name_uv.w*$scale)" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Transform" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Transform", "type": "shader" }, { "display_name": "Repeat", "icon_data": "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", "name": "MFSDF_Repeat", "parameters": { "RepX": 4.0, "RepY": 1.0, "RepZ": 4.0, "X": 1.0, "Y": 1.0, "Z": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "//Adapted from https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm - Finite Repetition\n\nvec3 opRepLim(vec3 p,vec3 c,vec3 l){\n p+=(c*l)/2.0;\n return p-c*clamp(floor((p+0.0001)/c+0.5),vec3(0.0),l);\n}", "inputs": [ { "default": "0.0", "label": "MFSDF", "name": "in", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" } ], "instance": "", "longdesc": "Repeats its input shape\n\nCode - IQ", "name": "MFSDF Repeat", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$in(vec4(opRepLim($uv.xyz,vec3($X,$Y,$Z)*2.0,vec3($RepX-1.0,$RepY-1.0,$RepZ-1.0)),$uv.w))" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4.0, "min": 0.0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128.0, "min": 1.0, "name": "RepX", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128.0, "min": 1.0, "name": "RepY", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep Z", "longdesc": "Repetitions in the Z axis", "max": 128.0, "min": 1.0, "name": "RepZ", "step": 1.0, "type": "float" } ], "shortdesc": "MFSDF Repeat" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Repeat", "type": "shader" }, { "display_name": "Smooth Repeat Fold", "icon_data": "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", "name": "MFSDF_Smooth_Repeat_Fold", "parameters": { "Axis": 4.0, "Iterations": 2.0, "SmoothX": 0.0, "SmoothY": 0.0, "SmoothZ": 0.0, "X": 0.5, "Y": 0.5, "Z": 0.5 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "MFSDF", "name": "in", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" } ], "instance": "//From https://www.shadertoy.com/view/wlyBWm by @paulofalcao\n\nvec3 smoothrepeat_$name(vec3 p,vec3 smooth_size,vec3 size){\n size.$Axis/=2.0;\n float w=pow(2.0,float($Iterations));\n\tfor(int i=0;i<$Iterations;i++){\n p.$Axis=sqrt(p.$Axis*p.$Axis+smooth_size.$Axis);//smooth abs\n\t\tp.$Axis-=size.$Axis*w;//translate\n\t\tw=w/2.0;\n\t}\n\treturn p;\n}\n", "longdesc": "Repeats its input shape with smoothness using reflection symmetry\n\nCode - PauloFalcao", "name": "MFSDF Smooth Repeat Fold", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "$in(vec4(smoothrepeat_$name($uv.xyz,vec3($SmoothX,$SmoothY,$SmoothZ),vec3($X,$Y,$Z)),$uv.w))" } ], "parameters": [ { "default": 3.0, "label": "Axis", "longdesc": "Repetition axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "x" }, { "name": "Y", "value": "y" }, { "name": "Z", "value": "z" }, { "name": "XY", "value": "xy" }, { "name": "XZ", "value": "xz" }, { "name": "YZ", "value": "yz" }, { "name": "XYZ", "value": "xyz" } ] }, { "default": 2.0, "label": "Repetitions", "longdesc": "Repetitions in the X axis", "name": "Iterations", "type": "enum", "values": [ { "name": "1", "value": "0" }, { "name": "2", "value": "1" }, { "name": "4", "value": "2" }, { "name": "8", "value": "3" }, { "name": "16", "value": "4" }, { "name": "32", "value": "5" }, { "name": "64", "value": "6" }, { "name": "128", "value": "7" }, { "name": "256", "value": "8" }, { "name": "512", "value": "9" }, { "name": "1024", "value": "10" }, { "name": "2048", "value": "11" }, { "name": "4096", "value": "12" }, { "name": "8192", "value": "13" }, { "name": "16384", "value": "14" }, { "name": "32768", "value": "15" }, { "name": "65536", "value": "16" } ] }, { "control": "None", "default": 0.5, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4.0, "min": 0.0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 0.1, "min": 0.0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 0.1, "min": 0.0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 0.1, "min": 0.0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Repeat" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Smooth Repeat Fold", "type": "shader" }, { "display_name": "Smooth Repeat Infinite", "icon_data": "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", "name": "MFSDF_Smooth_Repeat_Infinite", "parameters": { "Axis": 4.0, "SmoothX": 0.0, "SmoothY": 0.0, "SmoothZ": 0.0, "X": 0.5, "Y": 0.5, "Z": 0.5 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "MFSDF", "name": "in", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" } ], "instance": "vec3 blakle_smoothrepeat_asin_sin_$name(vec3 p,vec3 smooth_size,vec3 size){\n vec3 t=p.xyz;\n t.$Axis/=size.$Axis;\n t.$Axis=(asin(sin(t.$Axis)*(1.0-smooth_size.$Axis)))*size.$Axis;\n\tp.$Axis=t.$Axis;\n return p;\n}", "longdesc": "Repeats its input shape with smoothness using reflection symmetry\n\nCode - Blackle", "name": "MFSDF Smooth Repeat Infinite", "outputs": [ { "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4", "v4v4": "$in(vec4(blakle_smoothrepeat_asin_sin_$name($uv.xyz,vec3($SmoothX,$SmoothY,$SmoothZ),vec3($X,$Y,$Z)*0.635),$uv.w))" } ], "parameters": [ { "default": 6.0, "label": "Axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "x" }, { "name": "Y", "value": "y" }, { "name": "Z", "value": "z" }, { "name": "XY", "value": "xy" }, { "name": "XZ", "value": "xz" }, { "name": "YZ", "value": "yz" }, { "name": "XYZ", "value": "xyz" } ] }, { "control": "None", "default": 1.0, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4.0, "min": 0.0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 1.0, "min": 0.0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 1.0, "min": 0.0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 1.0, "min": 0.0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Repeat V2" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Smooth Repeat Infinite", "type": "shader" }, { "display_name": "Smooth Polar Repeat", "icon_data": "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", "name": "MFSDF_Smooth_Polar_Repeat", "parameters": { "Axis": 1.0, "Distance": 1.0, "Repetitions": 6.0, "Smooth": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "vec3 MFSDF_smoothRot_X(vec3 p,float s,float m,float distance){\n s*=0.5;\n float x=asin(sin(atan(p.y,p.z)*s)/(m+1.0))/s;\n return vec3(p.x,sin(x)*length(p.yz),cos(x)*length(p.yz)-distance);\n}\n\nvec3 MFSDF_smoothRot_Y(vec3 p,float s,float m,float distance){\n s*=0.5;\n float x=asin(sin(atan(p.x,p.z)*s)/(m+1.0))/s;\n return vec3(sin(x)*length(p.xz),p.y,cos(x)*length(p.xz)-distance);\n}\n\nvec3 MFSDF_smoothRot_Z(vec3 p,float s,float m,float distance){\n s*=0.5;\n float x=asin(sin(atan(p.x,p.y)*s)/(m+1.0))/s;\n return vec3(sin(x)*length(p.xy),cos(x)*length(p.xy)-distance,p.z);\n}", "inputs": [ { "default": "vec2(100, 0.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "This is a Smooth Polar Repeat based in a technique I create based on the Blackle Mori asinsin smooth repetition but for polar repetitions. The technique was later improved by gaz.\n\nCode - PauloFalcao, Gaz\n\nA shadertoy with the technique is here https://www.shadertoy.com/view/NdS3Dh\nGaz improvement https://www.shadertoy.com/view/7sKGzR", "name": "MFSDF Smooth Polar Repeat", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$in(vec4(MFSDF_smoothRot_$Axis($uv.xyz,$Repetitions,$Smooth,$Distance),$uv.w))" } ], "parameters": [ { "default": 0.0, "label": "Axis", "longdesc": "Polar repetition axis, objects will be repeated around this axis.", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "None", "default": 6.0, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the axis", "max": 32.0, "min": 1.0, "name": "Repetitions", "shortdesc": "Count", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Distance", "longdesc": "Object distance from the center", "max": 5.0, "min": 0.0, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Smooth", "longdesc": "Smoothness between objects", "max": 1.0, "min": 0.0, "name": "Smooth", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Polar Repeat" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Smooth Polar Repeat", "type": "shader" }, { "display_name": "Smooth Axis Symmetry", "icon_data": "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", "name": "MFSDF_Smooth_Axis_Symmetry", "parameters": { "mode": 0.0, "smooth": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "V4->V4", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Transforms a V4->V4 making a mirror smooth symmetry using the chosen axis\n\nCode - PauloFalcao", "name": "MFSDF Smooth Axis Symmetry", "outputs": [ { "shortdesc": "V4->V4 output", "type": "v4v4", "v4v4": "$in(vec4(vec3($mode),$uv.w))" } ], "parameters": [ { "default": 0.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "sqrt($uv.xyz*$uv.xyz+$smooth)" }, { "name": "XY", "value": "sqrt($uv.xy*$uv.xy+$smooth),$uv.z" }, { "name": "XZ", "value": "sqrt($uv.x*$uv.x+$smooth),$uv.y,sqrt($uv.z*$uv.z+$smooth)" }, { "name": "YZ", "value": "$uv.x,sqrt($uv.yz*$uv.yz+$smooth)" }, { "name": "X", "value": "sqrt($uv.x*$uv.x+$smooth),$uv.yz" }, { "name": "Y", "value": "$uv.x,sqrt($uv.y*$uv.y+$smooth),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,sqrt($uv.z*$uv.z+$smooth)" } ] }, { "control": "None", "default": 0.0, "label": "Smooth", "longdesc": "Smooth amount", "max": 1.0, "min": 0.0, "name": "smooth", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Axis Symmetry" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Smooth Axis Symmetry", "type": "shader" }, { "display_name": "Axis Symmetry", "icon_data": "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", "name": "MFSDF_Axis_Symmetry", "parameters": { "mode": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "V4->V4", "type": "v4v4" } ], "instance": "", "longdesc": "Transforms a SDF3D making a mirror symmetry using the chosen axis\n\nCode - PauloFalcao", "name": "MFSDF Axis Symmetry", "outputs": [ { "shortdesc": "SDF3D output", "type": "v4v4", "v4v4": "$in(vec4(vec3($mode),$uv.w))" } ], "parameters": [ { "default": 6.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "abs($uv.xyz)" }, { "name": "XY", "value": "abs($uv.xy),$uv.z" }, { "name": "XZ", "value": "abs($uv.x),$uv.y,abs($uv.z)" }, { "name": "YZ", "value": "$uv.x,abs($uv.yz)" }, { "name": "X", "value": "abs($uv.x),$uv.yz" }, { "name": "Y", "value": "$uv.x,abs($uv.y),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,abs($uv.z)" } ] } ], "shortdesc": "MFSDF Axis Symmetry" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Axis Symmetry", "type": "shader" }, { "display_name": "Twist", "icon_data": "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", "name": "MFSDF_Twist", "parameters": { "angle": 0.0, "axis": 1.0, "correction": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "vec4 $(name_uv)_o=$in(vec4(twist$axis($uv.xyz,$angle),$uv.w));", "global": "vec2 twist_rot(vec2 v, float a) {\n\ta=a*0.01745329251;\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(vec2(c, -s),vec2(s, c));\n\treturn m * v;\n}\n\nvec3 twistX(vec3 v, float a){\n\tv.yz=twist_rot(v.yz,v.x*a);\n\treturn v;\n}\n\nvec3 twistY(vec3 v, float a){\n\tv.xz=twist_rot(v.xz,v.y*a);\n\treturn v;\n}\n\nvec3 twistZ(vec3 v, float a){\n\tv.xy=twist_rot(v.xy,v.z*a);\n\treturn v;\n}\n\n", "inputs": [ { "default": "0.0", "label": "MFSDF", "name": "in", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" } ], "instance": "", "longdesc": "Twist a SDF3D on the specified axis by an angle.\n\nCode - PauloFalcao", "name": "MFSDF Twist", "outputs": [ { "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4", "v4v4": "vec4($(name_uv)_o.xyz,$(name_uv)_o.w/(1.0+$correction))" } ], "parameters": [ { "default": 0.0, "label": "Axis", "name": "axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "Angle1.a", "default": 0.0, "label": "Angle", "max": 360.0, "min": -360.0, "name": "angle", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 5.0, "min": 0.0, "name": "correction", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Twist" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Twist", "type": "shader" }, { "display_name": "Box Folding", "icon_data": "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", "name": "MFSDF_Box_Folding", "parameters": { "s": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "", "longdesc": "The input object as a signed distance function", "name": "in", "shortdesc": "Input", "type": "v4v4" } ], "instance": "", "longdesc": "Folds space by inverting the coordinates of space outside the box\n\nCode - PauloFalcao", "name": "MFSDF Box Folding", "outputs": [ { "longdesc": "The scaled object", "shortdesc": "Output", "type": "v4v4", "v4v4": "$in(vec4(clamp($uv.xyz,-$s,$s)*2.0-$uv.xyz,$uv.w)) " } ], "parameters": [ { "control": "None", "default": 1.0, "label": "", "max": 5.0, "min": 0.0, "name": "s", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Box Folding" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Box Folding", "type": "shader" }, { "display_name": "Deform Edges", "icon_data": "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", "name": "MFSDF_Deform_Edges", "parameters": { "edgeb": 0.01, "edges": 0.04, "f": 2.0, "g": 2.0, "h": 0.0, "iterations": 3.0, "m": 0.0, "texdb": 0.0, "texdc": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "float $(name_uv)_sdfa=blursdf3d_$name($uv.xyz,$edgeb,1.01);\nfloat $(name_uv)_sdfb=blursdf3d_$name($uv.xyz,$edges,1.01);\nfloat $(name_uv)_mix =clamp($texd(vec4($uv.xyz,1.0))*$texdc+$texdb+0.5-$texdc*0.5,0.0,1.0);\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nfloat $(name_uv)_modsdf=mix($(name_uv)_sdfa,$(name_uv)_sdfb,$(name_uv)_mix*$g+$m);\nvec3 $(name_uv)_tex=mix($mfsdfa($uv).xyz,$mfsdfb($uv).xyz,clamp(abs($(name_uv)_sdfdiff)*$(name_uv)_mix*$f*100.0,0.0,1.0));\n\n", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base MFSDF", "longdesc": "Main MFSDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "mfsdfa", "shortdesc": "Main MFSDF", "type": "v4v4" }, { "default": "0.0", "function": true, "label": "Modified MFSDF", "longdesc": "Modified MFSDF goes here, only Material attibutes will be used the SDF is ignored", "name": "mfsdfb", "shortdesc": "Modified MFSDF", "type": "v4v4" }, { "default": "0.0", "function": true, "label": "Surface Deform", "longdesc": "Surface deformation texture based on the difference between the two PDFs", "name": "texd", "shortdesc": "Surface Deform Texture", "type": "tex3d_gs" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$mfsdfa(vec4(p,0.0)).w;\n\tif (dV4 Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nTranslates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate", "name": "SDF Transform", "outputs": [ { "sdf3d": "o_$name_uv*$scale", "shortdesc": "V4->V4 Ouput", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "TEX3D_Simplex_Noise_Octaves", "node_position": { "x": -527.498657226562, "y": 96.6145477294922 }, "parameters": { "brightness": 0.0, "clamp": 1.0, "contrast": 2.0, "iterations": 5.0, "persistence": 0.5, "scale": 30.0, "scale_x": 1.0, "scale_y": 1.0, "scale_z": 1.0, "transx": 0.0, "transy": 0.0, "transz": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "vec3 $(name_uv)_out = vec3($(name)_bc($(name)_fbm($uv.xyz*vec3($scale_x,$scale_y,$scale_z)*0.5*$scale+vec3($transx,$transy,$transz),$persistence)*0.5+0.5,$contrast,$brightness));", "global": "// https://www.shadertoy.com/view/XsX3zB\n//\n// The MIT License\n// Copyright ยฉ 2013 Nikita Miropolskiy\n// \n// ( license has been changed from CCA-NC-SA 3.0 to MIT\n//\n// but thanks for attributing your source code when deriving from this sample \n// with a following link: https://www.shadertoy.com/view/XsX3zB )\n//\n//\n// if you're looking for procedural noise implementation examples you might \n// also want to look at the following shaders:\n// \n// Noise Lab shader by candycat: https://www.shadertoy.com/view/4sc3z2\n//\n// Noise shaders by iq:\n// Value Noise 2D, Derivatives: https://www.shadertoy.com/view/4dXBRH\n// Gradient Noise 2D, Derivatives: https://www.shadertoy.com/view/XdXBRH\n// Value Noise 3D, Derivatives: https://www.shadertoy.com/view/XsXfRH\n// Gradient Noise 3D, Derivatives: https://www.shadertoy.com/view/4dffRH\n// Value Noise 2D : https://www.shadertoy.com/view/lsf3WH\n// Value Noise 3D : https://www.shadertoy.com/view/4sfGzS\n// Gradient Noise 2D : https://www.shadertoy.com/view/XdXGW8\n// Gradient Noise 3D : https://www.shadertoy.com/view/Xsl3Dl\n// Simplex Noise 2D : https://www.shadertoy.com/view/Msf3WH\n// Voronoise: https://www.shadertoy.com/view/Xd23Dh\n//\n//\n//\n\n// using https://www.shadertoy.com/view/4djSRW Hash without Sine by Dave_Hoskins\n// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_oct_random3(vec3 c) {\n\tc = fract(c * vec3(.1031, .1030, .0973));\n c += dot(c, c.yxz+0.3333333);\n return fract((c.xxy + c.yxx)*c.zyx)-0.5;\n}\n\n// skew constants for 3d simplex functions\nconst float XsX3zB_oct_F3 = 0.3333333;\nconst float XsX3zB_oct_G3 = 0.1666667;\n\n// 3d simplex noise\nfloat XsX3zB_oct_simplex3d(vec3 p) {\n\t // 1. find current tetrahedron T and it's four vertices\n\t // s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices\n\t // x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices\n\t \n\t // calculate s and x\n\t vec3 s = floor(p + dot(p, vec3(XsX3zB_oct_F3)));\n\t vec3 x = p - s + dot(s, vec3(XsX3zB_oct_G3));\n\t \n\t // calculate i1 and i2\n\t vec3 e = step(vec3(0.0), x - x.yzx);\n\t vec3 i1 = e*(1.0 - e.zxy);\n\t vec3 i2 = 1.0 - e.zxy*(1.0 - e);\n\t \t\n\t // x1, x2, x3\n\t vec3 x1 = x - i1 + XsX3zB_oct_G3;\n\t vec3 x2 = x - i2 + 2.0*XsX3zB_oct_G3;\n\t vec3 x3 = x - 1.0 + 3.0*XsX3zB_oct_G3;\n\t \n\t // 2. find four surflets and store them in d\n\t vec4 w, d;\n\t \n\t // calculate surflet weights\n\t w.x = dot(x, x);\n\t w.y = dot(x1, x1);\n\t w.z = dot(x2, x2);\n\t w.w = dot(x3, x3);\n\t \n\t // w fades from 0.6 at the center of the surflet to 0.0 at the margin\n\t w = max(0.6 - w, 0.0);\n\t \n\t // calculate surflet components\n\t d.x = dot(XsX3zB_oct_random3(s), x);\n\t d.y = dot(XsX3zB_oct_random3(s + i1), x1);\n\t d.z = dot(XsX3zB_oct_random3(s + i2), x2);\n\t d.w = dot(XsX3zB_oct_random3(s + 1.0), x3);\n\t \n\t // multiply d by w^4\n\t w *= w;\n\t w *= w;\n\t d *= w;\n\t \n\t // 3. return the sum of the four surflets\n\t return dot(d, vec4(52.0));\n}", "inputs": [], "instance": "float $(name)_fbm(vec3 coord, float persistence) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfloat size = 1.0;\n\tfor (int i = 0; i < $iterations; i++) {\n\t\tvalue += XsX3zB_oct_simplex3d(coord*size) * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat $(name)_bc(float f,float contrast, float brightness) {\n\treturn f*contrast+brightness+0.5-contrast*0.5;\n}\n", "longdesc": "Makes a non periodic noise with octaves using nikat code from https://www.shadertoy.com/view/XsX3zB\n\nCode - Nikat", "name": "TEX3D Simplex Noise Octaves", "outputs": [ { "shortdesc": "TEX3D output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8.0, "label": "Scale", "longdesc": "Noise scale", "max": 32.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale X", "longdesc": "Noise X scale", "max": 16.0, "min": 0.0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16.0, "min": 0.0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16.0, "min": 0.0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate X", "longdesc": "Noise X translate", "max": 100.0, "min": 0.0, "name": "transx", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Y", "longdesc": "Noise Y translate", "max": 100.0, "min": 0.0, "name": "transy", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Z", "longdesc": "Noise Z translate", "max": 100.0, "min": 0.0, "name": "transz", "step": 0.001, "type": "float" }, { "default": 12.0, "label": "Iterations", "longdesc": "Noise iterations / octaves", "name": "iterations", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" } ] }, { "control": "None", "default": 0.5, "label": "Persistence", "longdesc": "How higher octaves affect the output", "max": 1.0, "min": 0.0, "name": "persistence", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Brightness", "longdesc": "Overall brightness", "max": 1.0, "min": 0.0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Contrast", "longdesc": "Overall Contrast", "max": 1.0, "min": 0.0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "Clamp", "longdesc": "Makes the output restricted between 0 and 1", "name": "clamp", "type": "enum", "values": [ { "name": "false", "value": "$(name_uv)_out" }, { "name": "true", "value": "clamp($(name_uv)_out,vec3(0),vec3(1))" } ] } ], "shortdesc": "TEX3D Simplex Noise Octaves" }, "type": "shader" }, { "name": "pxflib_6", "node_position": { "x": -27.4986267089844, "y": -303.385437011719 }, "parameters": { "BaseColor": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 1.0, "TranlateX": 0.0, "TranlateY": 0.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "generic_size": 1.0, "name": "sdf3d_boolean", "node_position": { "x": -297.498626708984, "y": -323.385437011719 }, "parameters": { "op1": 1.0 }, "seed_int": 0.0, "type": "sdf3d_boolean_v" }, { "name": "MFSDF_Object", "node_position": { "x": -92.9997253417969, "y": 207.083312988281 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Metallic": 0.0, "Roughness": 0.0, "Specular": 0.5 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "\n", "inputs": [ { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" } ], "instance": "vec4 PBRObjectMaker_simple_$name(vec4 uv){\n\tfloat sdf=$sdf3d(uv.xyz);\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4(0.0,0.0,0.0,sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_simple_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "2:", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "3:", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "4:", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "5:", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object Simple" }, "type": "shader" }, { "name": "MFSDF_Transform", "node_position": { "x": 622.501342773438, "y": 16.6145477294922 }, "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": 0.0, "TranslateZ": 0.0, "scale": 2.5 }, "seed_int": 0.0, "shader_model": { "code": "vec4 o_$name_uv=$in(vec4(V4V4_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale, $uv.w));\n\n", "global": "vec3 V4V4_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Translates, Rotates, Scale a V4->V4\nAdapted from RodZilla Rotate\n\nCode - RodZilla, PauloFalcao", "name": "MFSDF Transform", "outputs": [ { "shortdesc": "V4->V4 Ouput", "type": "v4v4", "v4v4": "vec4(o_$name_uv.xyz,o_$name_uv.w*$scale)" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Transform" }, "type": "shader" }, { "generic_size": 1.0, "name": "MFSDF_Render", "node_position": { "x": 912.501342773438, "y": -3.38545227050781 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "Gamma": 1.4, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Shadow": 1.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "vec2 Simple360HDR_equirectangularMap(vec3 dir) {\n\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999999.0)", "function": true, "label": "MFSDF", "name": "mfsdf#", "shortdesc": "V4->V4 Multi-Field SDF #", "type": "v4v4" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "vec4 mfsdf_$name(vec4 p){ \n vec4 a=vec4(0.0,0.0,0.0,999999999.0);\n vec4 b;\n #for\n b=$mfsdf#(p);\n a=(a.w 50.0 || abs(dS) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = mfsdf_$name(vec4( pos + h*nor ,0.0)).w;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t vec3 p=ro + rd*t;\n\t\tfloat h = mfsdf_$name(vec4(p,0.0)).w;\n\t\tfloat isLight=mfsdf_$name(vec4(p,13.0)).x;\n\t\tif (isLight>0.0) h=999999.0;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tfloat dS=0.0;\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\tvec3 objColor=mfsdf_$name(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp(mfsdf_$name(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max(mfsdf_$name(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=mfsdf_$name(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=mfsdf_$name(vec4(p,13.0)).xyz; // 13 - Emission (r,g,b,sdf)\n\tobjColor=max(objColor,objEmission);\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tif (objEmission.x>0.0){\n\t\t\tcolor=objEmission;\n\t\t} else {\n\t\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*((1.0-objMetallic)*objColor)+\n\t\t\tpow(r,pow(256.0,(1.0-objRoughness)))*objSpecular*mix(vec3(1.0),objColor,objMetallic)*(1.0-objRoughness)*16.0;\n\t\t}\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tvec3 objEmissionRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=mfsdf_$name(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=mfsdf_$name(vec4(p,13.0)).xyz;\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tif (objEmissionRef.x>0.0){\n\t\t\t objColorRef=objEmissionRef;\n\t\t\t} else {\n\t\t\t objColorRef=max(l,$AmbLight)*objColorRef;\n\t\t\t}\n\t\t} else {\n\t\t\tobjColorRef=$hdri(Simple360HDR_equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,objSpecular*mix(vec3(1.0),objColor,objMetallic));\n\t} else {\n\t\tcolor=$hdri(Simple360HDR_equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn pow(color,vec3(1.0/$Gamma));\n}", "longdesc": "Ray marching node for n objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\nCode - PauloFalcao, IQ\n", "name": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3.0, "min": 0.0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/MFSDF/Op/Deform Edges Example" }, { "display_name": "Deform Edges Generic", "icon_data": "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", "name": "MFSDF_Deform_Edges_Generic", "parameters": { "f": 2.5, "g": 2.5, "h": 0.0, "m": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "float $(name_uv)_sdfa=$mfsdfa(vec4($uv.xyz,0.0)).w;\nfloat $(name_uv)_sdfb=$mfsdfb(vec4($uv.xyz,0.0)).w;\nfloat $(name_uv)_mix=$texd(vec4($uv.xyz,1.0));\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nfloat $(name_uv)_modsdf=mix($(name_uv)_sdfa,$(name_uv)_sdfb,$(name_uv)_mix*$g+$m);\nvec3 $(name_uv)_tex=mix($mfsdfa($uv).xyz,$mfsdfb($uv).xyz,clamp(abs($(name_uv)_sdfdiff)*$(name_uv)_mix*$f*100.0,0.0,1.0));", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base MFSDF", "longdesc": "Main MFSDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "mfsdfa", "shortdesc": "Main MFSDF", "type": "v4v4" }, { "default": "0.0", "function": true, "label": "Modified MFSDF", "longdesc": "Modified MFSDF goes here, typically is the Base SDF with Blur, using the SDF Blur node.", "name": "mfsdfb", "shortdesc": "Modified MFSDF", "type": "v4v4" }, { "default": "0.0", "function": true, "label": "Surface Deform", "longdesc": "Surface deformation texture based on the difference between the two PDFs", "name": "texd", "shortdesc": "Surface Deform Texture", "type": "tex3d_gs" } ], "instance": "", "longdesc": "Modifies an MFSDF by comparing the base SDF and a modified version of the base SDF.\nTypically the modified version is a soft version of the base version, which can be done using the Node SDF Blur\n\nCode - PauloFalcao", "name": "MFSDF Deform Edges Generic", "outputs": [ { "type": "v4v4", "v4v4": "vec4($(name_uv)_tex,$(name_uv)_modsdf)" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Deform", "max": 4.0, "min": 0.0, "name": "g", "shortdesc": "SDF Deformation amount", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Select", "max": 1.0, "min": 0.0, "name": "m", "shortdesc": "SDF Selection between the base SDF (value 0) and the modified SDF (value 1)", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Color Contrast", "max": 1.0, "min": 0.0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Color Shift", "max": 1.0, "min": -1.0, "name": "h", "shortdesc": "Shift difference between Textures", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Deform Edges Generic" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Deform Edges Generic", "type": "shader" }, { "display_name": "Displace Height", "icon_data": "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", "name": "MFSDF_Displace_Height", "parameters": { "Bound": 0.0, "Correction": 0.0, "Distort": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "vec4 $(name_uv)_d = distortHeighByNormal_$name($uv);\n$(name_uv)_d.w = $(name_uv)_d.w/(1.0+$Distort*$Correction);", "global": "", "inputs": [ { "default": "length($uv)-0.4", "function": true, "label": "MFSDF", "name": "mfsdf", "shortdesc": "SDF3D Input", "type": "v4v4" }, { "default": "vec3(0)", "function": true, "label": "TEX3D Displace", "name": "tex3d", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.01,-0.01,0.0);\n float v1=$mfsdf(vec4(p+e.xyy,0.0)).w;\n float v2=$mfsdf(vec4(p+e.yyx,0.0)).w;\n float v3=$mfsdf(vec4(p+e.yxy,0.0)).w;\n float v4=$mfsdf(vec4(p+e.xxx,0.0)).w;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\n//By pauloFalcao\nvec4 distortHeighByNormal_$name(vec4 uv){\n float d=$mfsdf(uv).w;\n\tif (d<=abs($Distort*($Bound+1.0))+0.01){\n\t\tvec3 n=normal_$name(uv.xyz);\n\t\tvec3 s=$tex3d(vec4(uv.xyz-d*n,0.0));\n\t return $mfsdf(vec4(uv.xyz-n*s*$Distort,uv.w));\n\t} else {\n\t\treturn vec4(vec3(0.0),d);\n\t}\n}", "longdesc": "Displace the height of a MFSDF based on a TEX3D\n\nCode - PauloFalcao", "name": "MFSDF Displace Height", "outputs": [ { "shortdesc": "SDF3D Output", "type": "v4v4", "v4v4": "$(name_uv)_d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Displace", "max": 1.0, "min": 0.0, "name": "Distort", "shortdesc": "Displace amount", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 50.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Bound", "longdesc": "Keep this value as low as possible!\nOutside of the displacement the SDF is just the original SDF.\nThis value controls that bound.\nIncrease this correction value if the resulting SDF is not perfect on the edges.\nA higher value will increase ray marching loop iterations and will result in higher render times", "max": 1.0, "min": 0.0, "name": "Bound", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Displace Height" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Displace Height", "type": "shader" }, { "display_name": "Fractal IFS", "icon_data": "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", "name": "MFSDF_Fractal_IFS", "parameters": { "Correction": 0.0, "iterations": 3.0, "mode": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4((($uv.w>0.5&&$uv.w<1.5)||($uv.w>3.5&&$uv.w<4.5))?1.0:0.0,0.0,0.0,length($uv)-0.4)", "function": true, "label": "SDF3D", "longdesc": "The object that will be repeated", "name": "obj3d", "shortdesc": "V4->V4", "type": "v4v4" }, { "default": "$uv", "function": true, "label": "V4->V4 3D Transformation", "longdesc": "The transformation that will be applied each iteration", "name": "trans3d", "shortdesc": "V4->V4 Transformation", "type": "v4v4" }, { "default": "min($uv.x,$uv.y)", "function": true, "label": "SDF2D Custom Boolean", "longdesc": "(opcional) The combine operation, defined as a SDF2D.\nWill be applied after each SDF3D evaluation to combine with the previous result.", "name": "custombool", "shortdesc": "SDF2D Join", "type": "sdf2d" } ], "instance": "\nvec4 for_fold_$name(vec4 p,float mfsdftype) {\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n }\n vec4 o=$obj3d(vec4(p.xyz,mfsdftype));\n return vec4(o.xyz,o.w/p.w);\n}\n\nvec4 for_min_$name(vec4 p,float mfsdftype) {\n vec4 d=$obj3d(vec4(p.xyz,mfsdftype));\n vec4 m=d;\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n\td=$obj3d(vec4(p.xyz,mfsdftype));\n\td.w=d.w/p.w;\n\tm=m.wV4 Type\n\nThere are 3 modes available:\n - Fold\n Transforms space x Iterations times.\n The object SDF3D is evaluated only once after the last iteration.\n Using operators like Axis Symmetry is possible to repeat space.\n - Min\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the min operation.\n - Custom\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the custom SDF2D operation.\n\nCode - PauloFalcao\n", "name": "MFSDF Fractal IFS", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$mode" } ], "parameters": [ { "default": 24.0, "label": "Iterations", "longdesc": "Number of Iterations", "name": "iterations", "type": "enum", "values": [ { "name": "0", "value": "0" }, { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" }, { "name": "17", "value": "17" }, { "name": "18", "value": "18" }, { "name": "19", "value": "19" }, { "name": "20", "value": "20" }, { "name": "21", "value": "21" }, { "name": "22", "value": "22" }, { "name": "23", "value": "23" }, { "name": "24", "value": "24" } ] }, { "default": 1.0, "label": "Mode", "longdesc": "Iteration combine mode.\n - Fold\n Transforms space x Iterations times.\n The object SDF3D is evaluated only once after the last iteration.\n Using operators like Axis Symmetry is possible to repeat space.\n - Min\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the min operation.\n - Custom\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the custom SDF2D operation.", "name": "mode", "type": "enum", "values": [ { "name": "Fold", "value": "for_fold_$name(vec4($uv.xyz,1.0),$uv.w)" }, { "name": "Min", "value": "for_min_$name(vec4($uv.xyz,1.0),$uv.w)" }, { "name": "Custom", "value": "for_custom_$name(vec4($uv.xyz,1.0),$uv.w)" } ] }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Only used for Mode Custom.\nKeep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Fractal" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Fractal IFS", "type": "shader" }, { "display_name": "Paint Edges", "icon_data": "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", "name": "MFSDF_Paint_Edges", "parameters": { "edges": 0.04, "f": 2.0, "h": 0.0, "iterations": 3.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "float $(name_uv)_sdfa=$mfsdfa(vec4($uv.xyz,0.0)).w;\nfloat $(name_uv)_sdfb=blursdf3d_$name($uv.xyz,$edges,1.01);\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nvec4 $(name_uv)_tex=vec4(mix($mfsdfa($uv).xyz,$mfsdfb($uv).xyz,clamp(abs($(name_uv)_sdfdiff)*$f*100.0,0.0,1.0)),$(name_uv)_sdfa);\n\n", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base MFSDF", "longdesc": "Main MFSDF goes here", "name": "mfsdfa", "shortdesc": "Main MFSDF", "type": "v4v4" }, { "default": "0.0", "function": true, "label": "Modified MFSDF", "longdesc": "Modified MFSDF goes here, only Material attibutes will be used the SDF is ignored", "name": "mfsdfb", "shortdesc": "Modified MFSDF", "type": "v4v4" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$mfsdfa(vec4(p,0.0)).w;\n\tif (d(abs($Distort)+$Bound)){\n\t\treturn sdf;\n\t} else {\n\t\tvec3 s=$tex3d(vec4(uv,0.0));\n\t return sdf-s.x*$Distort;\n\t}\n}\n", "longdesc": "Type - SDF3D Operator\nCode - PauloFalcao\n\nDisplace a 3DSDF based on a TEX3D in a direction", "name": "SDF Displace", "outputs": [ { "sdf3d": "distort_$name($uv)/(1.0+abs($Distort*$Correction))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.1, "label": "Amount", "longdesc": "Displace amount", "max": 1.0, "min": 0.0, "name": "Distort", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.1, "label": "Bound", "max": 10.0, "min": 0.0, "name": "Bound", "step": 0.001, "type": "float" } ] }, "type": "shader" }, { "name": "pxflib_3", "node_position": { "x": -14.9488906860352, "y": -128.017501831055 }, "parameters": { "blur": 0.01, "bound": 1.0, "iterations": 3.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "", "longdesc": "SDF3D Input", "name": "in", "type": "sdf3d" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$in(p);\n\tif (d12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "shader_1", "node_position": { "x": 519.509643554688, "y": 118.266174316406 }, "parameters": { "f": 1.497, "h": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "float $(name_uv)_sdfa=$mfsdfa(vec4($uv.xyz,0.0)).w;\nfloat $(name_uv)_sdfb=$mfsdfb(vec4($uv.xyz,0.0)).w;\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nvec4 $(name_uv)_tex=vec4(mix($mfsdfa($uv).xyz,$mfsdfb($uv).xyz,clamp(abs($(name_uv)_sdfdiff)*$f*100.0,0.0,1.0)),$(name_uv)_sdfa);", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base MFSDF", "longdesc": "Main MFSDF goes here", "name": "mfsdfa", "shortdesc": "Main MFSDF", "type": "v4v4" }, { "default": "0.0", "function": true, "label": "Modified MFSDF", "longdesc": "Modified MFSDF goes here, typically is the Base SDF with Blur, using the SDF Blur node.", "name": "mfsdfb", "shortdesc": "Modified MFSDF", "type": "v4v4" } ], "instance": "", "longdesc": "Type - MFSDF Operator\nCode - PauloFalcao\n\nModifies an MFSDF by comparing the base SDF and a modified version of the base SDF, typically the Base SDF with Blur, using the SDF Blur node.\n\n\n", "name": "MFSDF Paint Edges Generic", "outputs": [ { "type": "v4v4", "v4v4": "$(name_uv)_tex" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Color Contrast", "max": 1.0, "min": 0.0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Color Shift", "max": 1.0, "min": -1.0, "name": "h", "shortdesc": "Shift difference between Textures", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Deform Edges Generic" }, "type": "shader" }, { "name": "pxflib_7", "node_position": { "x": -46.7156829833984, "y": 251.393798828125 }, "parameters": { "blur": 0.028, "bound": 1.0, "iterations": 3.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "", "longdesc": "SDF3D Input", "name": "in", "type": "sdf3d" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$in(p);\n\tif (dV4 Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nTranslates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate", "name": "SDF Transform", "outputs": [ { "sdf3d": "o_$name_uv*$scale", "shortdesc": "V4->V4 Ouput", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "pxflib_11", "node_position": { "x": -569.025695800781, "y": -386.2041015625 }, "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": 0.266, "TranslateZ": -0.019, "scale": 0.5 }, "seed_int": 0.0, "shader_model": { "code": "float o_$name_uv=$in(SDFTrans_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale);\n\n", "global": "vec3 SDFTrans_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nTranslates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate", "name": "SDF Transform", "outputs": [ { "sdf3d": "o_$name_uv*$scale", "shortdesc": "V4->V4 Ouput", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "sdf3d_boolean", "node_position": { "x": -546.476684570312, "y": -108.069625854492 }, "parameters": { "op": 1.0 }, "seed_int": 0.0, "type": "sdf3d_boolean" }, { "generic_size": 1.0, "name": "sdf3d_smoothboolean_2", "node_position": { "x": -296.476684570312, "y": -188.069625854492 }, "parameters": { "k1": 0.15, "op1": 0.0 }, "seed_int": 0.0, "type": "sdf3d_smoothboolean_v" }, { "name": "TEX3D_Simplex_Noise_Octaves", "node_position": { "x": -156.476669311523, "y": -598.069641113281 }, "parameters": { "brightness": 0.0, "clamp": 1.0, "contrast": 2.0, "iterations": 5.0, "persistence": 0.5, "scale": 32.0, "scale_x": 1.0, "scale_y": 1.0, "scale_z": 1.0, "transx": 0.0, "transy": 0.0, "transz": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "vec3 $(name_uv)_out = vec3($(name)_bc($(name)_fbm($uv.xyz*vec3($scale_x,$scale_y,$scale_z)*0.5*$scale+vec3($transx,$transy,$transz),$persistence)*0.5+0.5,$contrast,$brightness));", "global": "// https://www.shadertoy.com/view/XsX3zB\n//\n// The MIT License\n// Copyright ยฉ 2013 Nikita Miropolskiy\n// \n// ( license has been changed from CCA-NC-SA 3.0 to MIT\n//\n// but thanks for attributing your source code when deriving from this sample \n// with a following link: https://www.shadertoy.com/view/XsX3zB )\n//\n//\n// if you're looking for procedural noise implementation examples you might \n// also want to look at the following shaders:\n// \n// Noise Lab shader by candycat: https://www.shadertoy.com/view/4sc3z2\n//\n// Noise shaders by iq:\n// Value Noise 2D, Derivatives: https://www.shadertoy.com/view/4dXBRH\n// Gradient Noise 2D, Derivatives: https://www.shadertoy.com/view/XdXBRH\n// Value Noise 3D, Derivatives: https://www.shadertoy.com/view/XsXfRH\n// Gradient Noise 3D, Derivatives: https://www.shadertoy.com/view/4dffRH\n// Value Noise 2D : https://www.shadertoy.com/view/lsf3WH\n// Value Noise 3D : https://www.shadertoy.com/view/4sfGzS\n// Gradient Noise 2D : https://www.shadertoy.com/view/XdXGW8\n// Gradient Noise 3D : https://www.shadertoy.com/view/Xsl3Dl\n// Simplex Noise 2D : https://www.shadertoy.com/view/Msf3WH\n// Voronoise: https://www.shadertoy.com/view/Xd23Dh\n//\n//\n//\n\n// using https://www.shadertoy.com/view/4djSRW Hash without Sine by Dave_Hoskins\n// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_oct_random3(vec3 c) {\n\tc = fract(c * vec3(.1031, .1030, .0973));\n c += dot(c, c.yxz+0.3333333);\n return fract((c.xxy + c.yxx)*c.zyx)-0.5;\n}\n\n// skew constants for 3d simplex functions\nconst float XsX3zB_oct_F3 = 0.3333333;\nconst float XsX3zB_oct_G3 = 0.1666667;\n\n// 3d simplex noise\nfloat XsX3zB_oct_simplex3d(vec3 p) {\n\t // 1. find current tetrahedron T and it's four vertices\n\t // s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices\n\t // x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices\n\t \n\t // calculate s and x\n\t vec3 s = floor(p + dot(p, vec3(XsX3zB_oct_F3)));\n\t vec3 x = p - s + dot(s, vec3(XsX3zB_oct_G3));\n\t \n\t // calculate i1 and i2\n\t vec3 e = step(vec3(0.0), x - x.yzx);\n\t vec3 i1 = e*(1.0 - e.zxy);\n\t vec3 i2 = 1.0 - e.zxy*(1.0 - e);\n\t \t\n\t // x1, x2, x3\n\t vec3 x1 = x - i1 + XsX3zB_oct_G3;\n\t vec3 x2 = x - i2 + 2.0*XsX3zB_oct_G3;\n\t vec3 x3 = x - 1.0 + 3.0*XsX3zB_oct_G3;\n\t \n\t // 2. find four surflets and store them in d\n\t vec4 w, d;\n\t \n\t // calculate surflet weights\n\t w.x = dot(x, x);\n\t w.y = dot(x1, x1);\n\t w.z = dot(x2, x2);\n\t w.w = dot(x3, x3);\n\t \n\t // w fades from 0.6 at the center of the surflet to 0.0 at the margin\n\t w = max(0.6 - w, 0.0);\n\t \n\t // calculate surflet components\n\t d.x = dot(XsX3zB_oct_random3(s), x);\n\t d.y = dot(XsX3zB_oct_random3(s + i1), x1);\n\t d.z = dot(XsX3zB_oct_random3(s + i2), x2);\n\t d.w = dot(XsX3zB_oct_random3(s + 1.0), x3);\n\t \n\t // multiply d by w^4\n\t w *= w;\n\t w *= w;\n\t d *= w;\n\t \n\t // 3. return the sum of the four surflets\n\t return dot(d, vec4(52.0));\n}", "inputs": [], "instance": "float $(name)_fbm(vec3 coord, float persistence) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfloat size = 1.0;\n\tfor (int i = 0; i < $iterations; i++) {\n\t\tvalue += XsX3zB_oct_simplex3d(coord*size) * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat $(name)_bc(float f,float contrast, float brightness) {\n\treturn f*contrast+brightness+0.5-contrast*0.5;\n}\n", "longdesc": "Makes a non periodic noise with octaves using nikat code from https://www.shadertoy.com/view/XsX3zB\n\nCode - Nikat", "name": "TEX3D Simplex Noise Octaves", "outputs": [ { "shortdesc": "TEX3D output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8.0, "label": "Scale", "longdesc": "Noise scale", "max": 32.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale X", "longdesc": "Noise X scale", "max": 16.0, "min": 0.0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16.0, "min": 0.0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16.0, "min": 0.0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate X", "longdesc": "Noise X translate", "max": 100.0, "min": 0.0, "name": "transx", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Y", "longdesc": "Noise Y translate", "max": 100.0, "min": 0.0, "name": "transy", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Z", "longdesc": "Noise Z translate", "max": 100.0, "min": 0.0, "name": "transz", "step": 0.001, "type": "float" }, { "default": 12.0, "label": "Iterations", "longdesc": "Noise iterations / octaves", "name": "iterations", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" } ] }, { "control": "None", "default": 0.5, "label": "Persistence", "longdesc": "How higher octaves affect the output", "max": 1.0, "min": 0.0, "name": "persistence", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Brightness", "longdesc": "Overall brightness", "max": 1.0, "min": 0.0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Contrast", "longdesc": "Overall Contrast", "max": 1.0, "min": 0.0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "Clamp", "longdesc": "Makes the output restricted between 0 and 1", "name": "clamp", "type": "enum", "values": [ { "name": "false", "value": "$(name_uv)_out" }, { "name": "true", "value": "clamp($(name_uv)_out,vec3(0),vec3(1))" } ] } ], "shortdesc": "TEX3D Simplex Noise Octaves" }, "type": "shader" }, { "name": "TEX3D_Simplex_Noise_Octaves_2", "node_position": { "x": -256.476684570312, "y": 411.930358886719 }, "parameters": { "brightness": 0.0, "clamp": 1.0, "contrast": 2.0, "iterations": 5.0, "persistence": 0.5, "scale": 172.0, "scale_x": 1.0, "scale_y": 1.0, "scale_z": 1.0, "transx": 0.0, "transy": 0.0, "transz": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "vec3 $(name_uv)_out = vec3($(name)_bc($(name)_fbm($uv.xyz*vec3($scale_x,$scale_y,$scale_z)*0.5*$scale+vec3($transx,$transy,$transz),$persistence)*0.5+0.5,$contrast,$brightness));", "global": "// https://www.shadertoy.com/view/XsX3zB\n//\n// The MIT License\n// Copyright ยฉ 2013 Nikita Miropolskiy\n// \n// ( license has been changed from CCA-NC-SA 3.0 to MIT\n//\n// but thanks for attributing your source code when deriving from this sample \n// with a following link: https://www.shadertoy.com/view/XsX3zB )\n//\n//\n// if you're looking for procedural noise implementation examples you might \n// also want to look at the following shaders:\n// \n// Noise Lab shader by candycat: https://www.shadertoy.com/view/4sc3z2\n//\n// Noise shaders by iq:\n// Value Noise 2D, Derivatives: https://www.shadertoy.com/view/4dXBRH\n// Gradient Noise 2D, Derivatives: https://www.shadertoy.com/view/XdXBRH\n// Value Noise 3D, Derivatives: https://www.shadertoy.com/view/XsXfRH\n// Gradient Noise 3D, Derivatives: https://www.shadertoy.com/view/4dffRH\n// Value Noise 2D : https://www.shadertoy.com/view/lsf3WH\n// Value Noise 3D : https://www.shadertoy.com/view/4sfGzS\n// Gradient Noise 2D : https://www.shadertoy.com/view/XdXGW8\n// Gradient Noise 3D : https://www.shadertoy.com/view/Xsl3Dl\n// Simplex Noise 2D : https://www.shadertoy.com/view/Msf3WH\n// Voronoise: https://www.shadertoy.com/view/Xd23Dh\n//\n//\n//\n\n// using https://www.shadertoy.com/view/4djSRW Hash without Sine by Dave_Hoskins\n// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_oct_random3(vec3 c) {\n\tc = fract(c * vec3(.1031, .1030, .0973));\n c += dot(c, c.yxz+0.3333333);\n return fract((c.xxy + c.yxx)*c.zyx)-0.5;\n}\n\n// skew constants for 3d simplex functions\nconst float XsX3zB_oct_F3 = 0.3333333;\nconst float XsX3zB_oct_G3 = 0.1666667;\n\n// 3d simplex noise\nfloat XsX3zB_oct_simplex3d(vec3 p) {\n\t // 1. find current tetrahedron T and it's four vertices\n\t // s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices\n\t // x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices\n\t \n\t // calculate s and x\n\t vec3 s = floor(p + dot(p, vec3(XsX3zB_oct_F3)));\n\t vec3 x = p - s + dot(s, vec3(XsX3zB_oct_G3));\n\t \n\t // calculate i1 and i2\n\t vec3 e = step(vec3(0.0), x - x.yzx);\n\t vec3 i1 = e*(1.0 - e.zxy);\n\t vec3 i2 = 1.0 - e.zxy*(1.0 - e);\n\t \t\n\t // x1, x2, x3\n\t vec3 x1 = x - i1 + XsX3zB_oct_G3;\n\t vec3 x2 = x - i2 + 2.0*XsX3zB_oct_G3;\n\t vec3 x3 = x - 1.0 + 3.0*XsX3zB_oct_G3;\n\t \n\t // 2. find four surflets and store them in d\n\t vec4 w, d;\n\t \n\t // calculate surflet weights\n\t w.x = dot(x, x);\n\t w.y = dot(x1, x1);\n\t w.z = dot(x2, x2);\n\t w.w = dot(x3, x3);\n\t \n\t // w fades from 0.6 at the center of the surflet to 0.0 at the margin\n\t w = max(0.6 - w, 0.0);\n\t \n\t // calculate surflet components\n\t d.x = dot(XsX3zB_oct_random3(s), x);\n\t d.y = dot(XsX3zB_oct_random3(s + i1), x1);\n\t d.z = dot(XsX3zB_oct_random3(s + i2), x2);\n\t d.w = dot(XsX3zB_oct_random3(s + 1.0), x3);\n\t \n\t // multiply d by w^4\n\t w *= w;\n\t w *= w;\n\t d *= w;\n\t \n\t // 3. return the sum of the four surflets\n\t return dot(d, vec4(52.0));\n}", "inputs": [], "instance": "float $(name)_fbm(vec3 coord, float persistence) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfloat size = 1.0;\n\tfor (int i = 0; i < $iterations; i++) {\n\t\tvalue += XsX3zB_oct_simplex3d(coord*size) * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat $(name)_bc(float f,float contrast, float brightness) {\n\treturn f*contrast+brightness+0.5-contrast*0.5;\n}\n", "longdesc": "Makes a non periodic noise with octaves using nikat code from https://www.shadertoy.com/view/XsX3zB\n\nCode - Nikat", "name": "TEX3D Simplex Noise Octaves", "outputs": [ { "shortdesc": "TEX3D output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8.0, "label": "Scale", "longdesc": "Noise scale", "max": 32.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale X", "longdesc": "Noise X scale", "max": 16.0, "min": 0.0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16.0, "min": 0.0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16.0, "min": 0.0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate X", "longdesc": "Noise X translate", "max": 100.0, "min": 0.0, "name": "transx", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Y", "longdesc": "Noise Y translate", "max": 100.0, "min": 0.0, "name": "transy", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Z", "longdesc": "Noise Z translate", "max": 100.0, "min": 0.0, "name": "transz", "step": 0.001, "type": "float" }, { "default": 12.0, "label": "Iterations", "longdesc": "Noise iterations / octaves", "name": "iterations", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" } ] }, { "control": "None", "default": 0.5, "label": "Persistence", "longdesc": "How higher octaves affect the output", "max": 1.0, "min": 0.0, "name": "persistence", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Brightness", "longdesc": "Overall brightness", "max": 1.0, "min": 0.0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Contrast", "longdesc": "Overall Contrast", "max": 1.0, "min": 0.0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "Clamp", "longdesc": "Makes the output restricted between 0 and 1", "name": "clamp", "type": "enum", "values": [ { "name": "false", "value": "$(name_uv)_out" }, { "name": "true", "value": "clamp($(name_uv)_out,vec3(0),vec3(1))" } ] } ], "shortdesc": "TEX3D Simplex Noise Octaves" }, "type": "shader" }, { "name": "MFSDF_Object", "node_position": { "x": 288.439483642578, "y": 296.596618652344 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Metallic": 0.0, "Roughness": 0.0, "Specular": 0.5 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "\n", "inputs": [ { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" } ], "instance": "vec4 PBRObjectMaker_simple_$name(vec4 uv){\n\tfloat sdf=$sdf3d(uv.xyz);\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4(0.0,0.0,0.0,sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_simple_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "2:", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "3:", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "4:", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "5:", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object Simple" }, "type": "shader" }, { "name": "MFSDF_Transform", "node_position": { "x": 913.523315429688, "y": 161.930374145508 }, "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": 0.0, "TranslateZ": 0.0, "scale": 2.5 }, "seed_int": 0.0, "shader_model": { "code": "vec4 o_$name_uv=$in(vec4(V4V4_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale, $uv.w));\n\n", "global": "vec3 V4V4_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Translates, Rotates, Scale a V4->V4\nAdapted from RodZilla Rotate\n\nCode - RodZilla, PauloFalcao", "name": "MFSDF Transform", "outputs": [ { "shortdesc": "V4->V4 Ouput", "type": "v4v4", "v4v4": "vec4(o_$name_uv.xyz,o_$name_uv.w*$scale)" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Transform" }, "type": "shader" }, { "generic_size": 1.0, "name": "MFSDF_Render", "node_position": { "x": 1273.52331542969, "y": 51.9303741455078 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "Gamma": 1.4, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Shadow": 1.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "vec2 Simple360HDR_equirectangularMap(vec3 dir) {\n\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999999.0)", "function": true, "label": "MFSDF", "name": "mfsdf#", "shortdesc": "V4->V4 Multi-Field SDF #", "type": "v4v4" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "vec4 mfsdf_$name(vec4 p){ \n vec4 a=vec4(0.0,0.0,0.0,999999999.0);\n vec4 b;\n #for\n b=$mfsdf#(p);\n a=(a.w 50.0 || abs(dS) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = mfsdf_$name(vec4( pos + h*nor ,0.0)).w;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t vec3 p=ro + rd*t;\n\t\tfloat h = mfsdf_$name(vec4(p,0.0)).w;\n\t\tfloat isLight=mfsdf_$name(vec4(p,13.0)).x;\n\t\tif (isLight>0.0) h=999999.0;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tfloat dS=0.0;\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\tvec3 objColor=mfsdf_$name(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp(mfsdf_$name(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max(mfsdf_$name(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=mfsdf_$name(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=mfsdf_$name(vec4(p,13.0)).xyz; // 13 - Emission (r,g,b,sdf)\n\tobjColor=max(objColor,objEmission);\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tif (objEmission.x>0.0){\n\t\t\tcolor=objEmission;\n\t\t} else {\n\t\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*((1.0-objMetallic)*objColor)+\n\t\t\tpow(r,pow(256.0,(1.0-objRoughness)))*objSpecular*mix(vec3(1.0),objColor,objMetallic)*(1.0-objRoughness)*16.0;\n\t\t}\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tvec3 objEmissionRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=mfsdf_$name(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=mfsdf_$name(vec4(p,13.0)).xyz;\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tif (objEmissionRef.x>0.0){\n\t\t\t objColorRef=objEmissionRef;\n\t\t\t} else {\n\t\t\t objColorRef=max(l,$AmbLight)*objColorRef;\n\t\t\t}\n\t\t} else {\n\t\t\tobjColorRef=$hdri(Simple360HDR_equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,objSpecular*mix(vec3(1.0),objColor,objMetallic));\n\t} else {\n\t\tcolor=$hdri(Simple360HDR_equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn pow(color,vec3(1.0/$Gamma));\n}", "longdesc": "Ray marching node for n objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\nCode - PauloFalcao, IQ\n", "name": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3.0, "min": 0.0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/MFSDF/Op/Paint Edges Generic Example" }, { "display_name": "Polar Repeat", "icon_data": "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", "name": "MFSDF_Polar_Repeat", "parameters": { "Axis": 1.0, "Distance": 1.0, "Repetitions": 5.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "//Adapted from MaterialMaker\n\nvec3 circle_repeat_transform_X(vec3 p, float count, float distance) {\n\tfloat r = 6.28/count;\n\tfloat pa = atan(p.y, p.z);\n\tfloat a = mod(pa+0.5*r, r)-0.5*r;\n\tvec3 rv;\n\tfloat c = cos(a-pa);\n\tfloat s = sin(a-pa);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c-distance;\n\treturn rv;\n}\n\nvec3 circle_repeat_transform_Y(vec3 p, float count, float distance) {\n\tfloat r = 6.28/count;\n\tfloat pa = atan(p.x, p.z);\n\tfloat a = mod(pa+0.5*r, r)-0.5*r;\n\tvec3 rv;\n\tfloat c = cos(a-pa);\n\tfloat s = sin(a-pa);\n\trv.x = p.x*c+p.z*s;\n\trv.y = p.y;\n\trv.z = -p.x*s+p.z*c-distance;\n\treturn rv;\n}\n\nvec3 circle_repeat_transform_Z(vec3 p, float count, float distance) {\n\tfloat r = 6.28/count;\n\tfloat pa = atan(p.x, p.y);\n\tfloat a = mod(pa+0.5*r, r)-0.5*r;\n\tvec3 rv;\n\tfloat c = cos(a-pa);\n\tfloat s = sin(a-pa);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c-distance;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec2(100, 0.0)", "label": "", "name": "in", "shortdesc": "V4->V4", "type": "v4v4" } ], "instance": "", "longdesc": "Repeats its input shape around a axis\n\nCode - Paulo Falcao, RodZilla", "name": "MFSDF Polar Repeat", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$in(vec4(circle_repeat_transform_$Axis($uv.xyz, $Repetitions, $Distance),$uv.w))" } ], "parameters": [ { "default": 0.0, "label": "Axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "None", "default": 4.0, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the circle", "max": 32.0, "min": 1.0, "name": "Repetitions", "shortdesc": "Count", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Distance", "max": 5.0, "min": 0.0, "name": "Distance", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Polar Repeat" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Polar Repeat", "type": "shader" }, { "display_name": "Selector2D XZ", "generic_size": 2.0, "icon_data": "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", "name": "MFSDF_Selector2D_XZ", "parameters": { }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Selection Map", "name": "map", "shortdesc": "2D texture for selecting SDFs", "type": "f" }, { "default": "vec4(0.0,0.0,0.0,1e10)", "function": true, "label": "MFSDF#", "name": "mfsdf#", "shortdesc": "MFSDF #", "type": "v4v4" } ], "instance": "\nvec4 mfsdfselector_$name(vec4 p) {\n\tvec2 tile_xy = fract(p.xz+0.5)-0.5;\n\tvec2 tile_pos = floor(p.xz+0.5)-0.5;\n\n\tfloat sel = clamp($map(tile_pos),0.0,1.0);\n\n\tint index = int(floor(sel * float(#count)+1.0));\n\n\t#for\n\t\tif (index == #) {\n\t\t\t\treturn $mfsdf#(vec4(tile_xy.x,p.y,tile_xy.y,p.w));\n\t}\n\t#end\n\n\treturn vec4(0.0,0.0,0.0,1e10);\n}\n\n\nvec3 mfsdf2d_diff_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\t\n\t#for\n\t\tif (mfsdfselector_$name(vec4(0.5,xy.y,xy.x,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(-0.5,xy.y,xy.x,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(xy.x,xy.y,0.5,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(xy.x,xy.y,-0.5,0.0)).w<0.0) col+=vec3(1.0);\n\t\tt=t+4.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (outc.x<1.0) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n\nvec3 mfsdf2d_show_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\t\n\t#for\n\t\tif (mfsdfselector_$name(vec4(xy.x,0.0,xy.y,0.0)).w<0.0) col+=vec3(1.0);\n\t\tt=t+1.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (xy.x>0.49&&xy.x<0.51||xy.x<-0.49&&xy.x>-0.51||\n\t xy.y>0.49&&xy.y<0.51||xy.y<-0.49&&xy.y>-0.51) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}", "longdesc": "Selects one of multiple MFSDF inputs based on a selection map value for each tile.\nThe map(0.0-1.0) determines which MFSDF is used per tile.\n\nCode - PauloFalcao", "name": "MFSDF Selector2D XZ", "outputs": [ { "shortdesc": "MFSDF Output", "type": "v4v4", "v4v4": "mfsdfselector_$name($uv)" }, { "longdesc": "Checks the differences between the 4 connecting faces of the SDFs.", "rgb": "mfsdf2d_diff_$name($uv)", "shortdesc": "Debug tile face", "type": "rgb" }, { "longdesc": "Show a 2d slice of the SDFs.", "rgb": "mfsdf2d_show_$name($uv)", "shortdesc": "Debug tile", "type": "rgb" } ], "parameters": [], "shortdesc": "MFSDF Selector2D XZ" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Selector2D XZ", "type": "shader" }, { "display_name": "Selector2D XY", "generic_size": 2.0, "icon_data": "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", "name": "MFSDF_Selector2D_XY", "parameters": { }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Selection Map", "name": "map", "shortdesc": "2D texture for selecting SDFs", "type": "f" }, { "default": "vec4(0.0,0.0,0.0,1e10)", "function": true, "label": "MFSDF#", "name": "mfsdf#", "shortdesc": "MFSDF #", "type": "v4v4" } ], "instance": "\nvec4 mfsdfselector_$name(vec4 p) {\n\n\tvec2 tile_xy = fract(p.xy+0.5)-0.5;\n\tvec2 tile_pos = floor(p.xy+0.5)-0.5;\n\n\tfloat sel = clamp($map(tile_pos),0.0,1.0);\n\n\tint index = int(floor(sel * float(#count)+1.0));\n\n\t#for\n\t\tif (index == #) {\n\t\t\t\treturn $mfsdf#(vec4(tile_xy.x,tile_xy.y,p.z,p.w));\n\t}\n\t#end\n\n\treturn vec4(0.0,0.0,0.0,1e10);\n}\n\n\nvec3 mfsdf2d_diff_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (mfsdfselector_$name(vec4(0.5,xy.y,xy.x,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(-0.5,xy.y,xy.x,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(xy.x,0.5,xy.y,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(xy.x,-0.5,xy.y,0.0)).w<0.0) col+=vec3(1.0);\n\t\tt=t+4.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (outc.x<1.0) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n\nvec3 mfsdf2d_show_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\t\n\t#for\n\t\tif (mfsdfselector_$name(vec4(xy.x,xy.y,0.0,0.0)).w<0.0) col+=vec3(1.0);\n\t\tt=t+1.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (xy.x>0.49&&xy.x<0.51||xy.x<-0.49&&xy.x>-0.51||\n\t xy.y>0.49&&xy.y<0.51||xy.y<-0.49&&xy.y>-0.51) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n", "longdesc": "Selects one of multiple MFSDF inputs based on a selection map value for each tile.\nThe map(0.0-1.0) determines which MFSDF is used per tile.\n\nCode - PauloFalcao", "name": "MFSDF Selector2D XY", "outputs": [ { "shortdesc": "MFSDF Output", "type": "v4v4", "v4v4": "mfsdfselector_$name($uv)" }, { "longdesc": "Checks the differences between the 4 connecting faces of the SDFs.", "rgb": "mfsdf2d_diff_$name($uv)", "shortdesc": "Debug tile face", "type": "rgb" }, { "longdesc": "Show a 2d slice of the SDFs.", "rgb": "mfsdf2d_show_$name($uv)", "shortdesc": "Debug tile", "type": "rgb" } ], "parameters": [], "shortdesc": "MFSDF Selector XY" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Selector2D XY", "type": "shader" }, { "display_name": "Selector2D YZ", "generic_size": 2.0, "icon_data": "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", "name": "MFSDF_Selector2D_YZ", "parameters": { }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Selection Map", "name": "map", "shortdesc": "2D texture for selecting SDFs", "type": "f" }, { "default": "vec4(0.0,0.0,0.0,1e10)", "function": true, "label": "MFSDF#", "name": "mfsdf#", "shortdesc": "MFSDF #", "type": "v4v4" } ], "instance": "\nvec4 mfsdfselector_$name(vec4 p) {\n\n\tvec2 tile_xy = fract(p.yz+0.5)-0.5;\n\tvec2 tile_pos = floor(p.yz+0.5)-0.5;\n\n\tfloat sel = clamp($map(tile_pos),0.0,1.0);\n\n\tint index = int(floor(sel * float(#count)+1.0));\n\n\t#for\n\t\tif (index == #) {\n\t\t\t\treturn $mfsdf#(vec4(p.x,tile_xy.x,tile_xy.y,p.w));\n\t}\n\t#end\n\n\treturn vec4(0.0,0.0,0.0,1e10);\n}\n\nvec3 mfsdf2d_diff_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (mfsdfselector_$name(vec4(xy.y,0.5,xy.x,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(xy.y,-0.5,xy.x,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(xy.x,xy.y,0.5,0.0)).w<0.0) col+=vec3(1.0);\n\t\tif (mfsdfselector_$name(vec4(xy.x,xy.y,-0.5,0.0)).w<0.0) col+=vec3(1.0);\n\t\tt=t+4.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (outc.x<1.0) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n\nvec3 mfsdf2d_show_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (mfsdfselector_$name(vec4(0.0,xy.x,xy.y,0.0)).w<0.0) col+=vec3(1.0);\n\t\tt=t+1.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (xy.x>0.49&&xy.x<0.51||xy.x<-0.49&&xy.x>-0.51||\n\t xy.y>0.49&&xy.y<0.51||xy.y<-0.49&&xy.y>-0.51) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n", "longdesc": "Selects one of multiple MFSDF inputs based on a selection map value for each tile.\nThe map(0.0-1.0) determines which MFSDF is used per tile.\n\nCode - Paulo Falcao", "name": "MFSDF Selector2D YZ", "outputs": [ { "shortdesc": "MFSDF Output", "type": "v4v4", "v4v4": "mfsdfselector_$name($uv)" }, { "longdesc": "Checks the differences between the 4 connecting faces of the SDFs.", "rgb": "mfsdf2d_diff_$name($uv)", "shortdesc": "Debug tile face", "type": "rgb" }, { "longdesc": "Show a 2d slice of the SDFs.", "rgb": "mfsdf2d_show_$name($uv)", "shortdesc": "Debug tile", "type": "rgb" } ], "parameters": [], "shortdesc": "MFSDF Selector YZ" }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Selector2D YZ", "type": "shader" }, { "display_name": "Code", "generic_size": 1.0, "icon_data": "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", "name": "SDF3D_Code", "parameters": { "code": "$in1($uv)" }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "length($uv)-0.4", "label": "", "name": "in#", "shortdesc": "SDF3D #", "type": "sdf3d" } ], "instance": "", "longdesc": "Executes the code in the parameter\nExamples:\n$in1($uv)\nlength($uv)-0.4\n\nCode - PauloFalcao", "name": "SDF3D Code", "outputs": [ { "sdf3d": "$code", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.5, "label": "", "longdesc": "Examples:\n$in1($uv)\nlength($uv)-0.4", "max": 1.0, "min": 0.0, "name": "code", "step": 0.1, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/MFSDF/Op/Code", "type": "shader" }, { "display_name": "Render", "generic_size": 1.0, "icon_data": "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", "name": "MFSDF_Render", "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "Gamma": 1.4, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Shadow": 1.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "vec2 Simple360HDR_equirectangularMap(vec3 dir) {\n\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999999.0)", "function": true, "label": "MFSDF", "name": "mfsdf#", "shortdesc": "V4->V4 Multi-Field SDF #", "type": "v4v4" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "vec4 mfsdf_$name(vec4 p){ \n vec4 a=vec4(0.0,0.0,0.0,999999999.0);\n vec4 b;\n #for\n b=$mfsdf#(p);\n a=(a.w 50.0 || abs(dS) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = mfsdf_$name(vec4( pos + h*nor ,0.0)).w;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t vec3 p=ro + rd*t;\n\t\tfloat h = mfsdf_$name(vec4(p,0.0)).w;\n\t\tfloat isLight=mfsdf_$name(vec4(p,13.0)).x;\n\t\tif (isLight>0.0) h=999999.0;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tfloat dS=0.0;\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\tvec3 objColor=mfsdf_$name(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp(mfsdf_$name(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max(mfsdf_$name(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=mfsdf_$name(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=mfsdf_$name(vec4(p,13.0)).xyz; // 13 - Emission (r,g,b,sdf)\n\tobjColor=max(objColor,objEmission);\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tif (objEmission.x>0.0){\n\t\t\tcolor=objEmission;\n\t\t} else {\n\t\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*((1.0-objMetallic)*objColor)+\n\t\t\tpow(r,pow(256.0,(1.0-objRoughness)))*objSpecular*mix(vec3(1.0),objColor,objMetallic)*(1.0-objRoughness)*16.0;\n\t\t}\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tvec3 objEmissionRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=mfsdf_$name(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=mfsdf_$name(vec4(p,13.0)).xyz;\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tif (objEmissionRef.x>0.0){\n\t\t\t objColorRef=objEmissionRef;\n\t\t\t} else {\n\t\t\t objColorRef=max(l,$AmbLight)*objColorRef;\n\t\t\t}\n\t\t} else {\n\t\t\tobjColorRef=$hdri(Simple360HDR_equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,objSpecular*mix(vec3(1.0),objColor,objMetallic));\n\t} else {\n\t\tcolor=$hdri(Simple360HDR_equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn pow(color,vec3(1.0/$Gamma));\n}", "longdesc": "Ray marching node for n objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\nCode - PauloFalcao, IQ\n", "name": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3.0, "min": 0.0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/MFSDF/Render/Render", "type": "shader" }, { "connections": [ { "from": "MFSDF_Object_And_Transform", "from_node": "node_MFSDF_Object_And_Transform", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Render", "to_node": "node_MFSDF_Render", "to_port": 1.0 }, { "from": "graph_2", "from_node": "node_graph_2", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Render", "to_node": "node_MFSDF_Render", "to_port": 0.0 }, { "from": "sdf3d_sphere", "from_node": "node_sdf3d_sphere", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Object_And_Transform", "to_node": "node_MFSDF_Object_And_Transform", "to_port": 5.0 } ], "display_name": "Render Template", "icon_data": "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", "nodes": [ { "connections": [ { "from": "tex3d_pattern_2", "from_port": 0.0, "to": "tex3d_colorize_3", "to_port": 0.0 }, { "from": "tex3d_colorize_3", "from_port": 0.0, "to": "pxflib_4", "to_port": 0.0 }, { "from": "pxflib_4", "from_port": 0.0, "to": "gen_outputs", "to_port": 0.0 }, { "from": "sdf3d_box", "from_port": 0.0, "to": "pxflib_4", "to_port": 5.0 } ], "label": "Checkerboard", "longdesc": "", "name": "graph_2", "node_position": { "x": -150.390625, "y": -282.53125 }, "nodes": [ { "name": "sdf3d_box", "node_position": { "x": -1041.34008789062, "y": -203.449951171875 }, "parameters": { "r": 0.0, "sx": 6.0, "sy": 0.5, "sz": 6.0 }, "seed_int": 0.0, "type": "sdf3d_box" }, { "name": "tex3d_pattern_2", "node_position": { "x": -1106.34008789062, "y": -381.449951171875 }, "parameters": { "mix": 4.0, "x_scale": "$checkersize", "x_wave": 2.0, "y_scale": 0.0, "y_wave": 2.0, "z_scale": "$checkersize", "z_wave": 2.0 }, "seed_int": 0.0, "type": "tex3d_pattern" }, { "name": "gen_inputs", "node_position": { "x": -1341.34008789062, "y": -277.949951171875 }, "parameters": { }, "ports": [], "seed_int": 0.0, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -171.340026855469, "y": -302.949951171875 }, "parameters": { }, "ports": [ { "group_size": 0.0, "name": "port0", "type": "v4v4" } ], "seed_int": 0.0, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1055.59008789062, "y": -653.449951171875 }, "parameters": { "checkersize": 1.0, "param0": 6.0, "param1": -1.0, "param2": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.0, "r": 0.84375 }, { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.99999, "r": 0.84375 }, { "a": 1.0, "b": 0.125, "g": 0.125, "pos": 1.00001, "r": 0.125 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed_int": 0.0, "type": "remote", "widgets": [ { "label": "Board Size", "linked_widgets": [ { "node": "sdf3d_box", "widget": "sx" }, { "node": "sdf3d_box", "widget": "sz" } ], "name": "param0", "type": "linked_control" }, { "default": 1.0, "label": "Checker Size", "max": 20.0, "min": 0.0, "name": "checkersize", "step": 0.001, "type": "named_parameter" }, { "label": "Position", "linked_widgets": [ { "node": "pxflib_4", "widget": "TranlateY" } ], "name": "param1", "type": "linked_control" }, { "label": "Color", "linked_widgets": [ { "node": "tex3d_colorize_3", "widget": "g" } ], "name": "param2", "type": "linked_control" }, { "label": "Metallic", "linked_widgets": [ { "node": "pxflib_4", "widget": "Metallic" } ], "name": "param3", "type": "linked_control" }, { "label": "Specular", "linked_widgets": [ { "node": "pxflib_4", "widget": "Specular" } ], "name": "param4", "type": "linked_control" }, { "label": "Roughness", "linked_widgets": [ { "node": "pxflib_4", "widget": "Roughness" } ], "name": "param5", "type": "linked_control" } ] }, { "name": "tex3d_colorize_3", "node_position": { "x": -850.0, "y": -377.021362304688 }, "parameters": { "g": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.0, "r": 0.84375 }, { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.99999, "r": 0.84375 }, { "a": 1.0, "b": 0.125, "g": 0.125, "pos": 1.00001, "r": 0.125 } ], "type": "Gradient" } }, "seed_int": 0.0, "type": "tex3d_colorize" }, { "name": "pxflib_4", "node_position": { "x": -591.953735351562, "y": -359.458862304688 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": -1.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "parameters": { "checkersize": 1.0, "param0": 6.0, "param1": -1.0, "param2": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.0, "r": 0.84375 }, { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.99999, "r": 0.84375 }, { "a": 1.0, "b": 0.125, "g": 0.125, "pos": 1.00001, "r": 0.125 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed_int": 0.0, "shortdesc": "", "type": "graph" }, { "name": "MFSDF_Object_And_Transform", "node_position": { "x": -210.390625, "y": -82.53125 }, "parameters": { "BaseColor": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": 0.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object And Transform", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "sdf3d_sphere", "node_position": { "x": -390.390625, "y": 67.46875 }, "parameters": { "r": 0.4 }, "seed_int": 0.0, "type": "sdf3d_sphere" }, { "generic_size": 3.0, "name": "MFSDF_Render", "node_position": { "x": 258.171875, "y": -138.40625 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "Gamma": 1.4, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Shadow": 1.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "vec2 Simple360HDR_equirectangularMap(vec3 dir) {\n\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999999.0)", "function": true, "label": "MFSDF", "name": "mfsdf#", "shortdesc": "V4->V4 Multi-Field SDF #", "type": "v4v4" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "vec4 mfsdf_$name(vec4 p){ \n vec4 a=vec4(0.0,0.0,0.0,999999999.0);\n vec4 b;\n #for\n b=$mfsdf#(p);\n a=(a.w 50.0 || abs(dS) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = mfsdf_$name(vec4( pos + h*nor ,0.0)).w;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t vec3 p=ro + rd*t;\n\t\tfloat h = mfsdf_$name(vec4(p,0.0)).w;\n\t\tfloat isLight=mfsdf_$name(vec4(p,13.0)).x;\n\t\tif (isLight>0.0) h=999999.0;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tfloat dS=0.0;\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\tvec3 objColor=mfsdf_$name(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp(mfsdf_$name(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max(mfsdf_$name(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=mfsdf_$name(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=mfsdf_$name(vec4(p,13.0)).xyz; // 13 - Emission (r,g,b,sdf)\n\tobjColor=max(objColor,objEmission);\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tif (objEmission.x>0.0){\n\t\t\tcolor=objEmission;\n\t\t} else {\n\t\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*((1.0-objMetallic)*objColor)+\n\t\t\tpow(r,pow(256.0,(1.0-objRoughness)))*objSpecular*mix(vec3(1.0),objColor,objMetallic)*(1.0-objRoughness)*16.0;\n\t\t}\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tvec3 objEmissionRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=mfsdf_$name(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=mfsdf_$name(vec4(p,13.0)).xyz;\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tif (objEmissionRef.x>0.0){\n\t\t\t objColorRef=objEmissionRef;\n\t\t\t} else {\n\t\t\t objColorRef=max(l,$AmbLight)*objColorRef;\n\t\t\t}\n\t\t} else {\n\t\t\tobjColorRef=$hdri(Simple360HDR_equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,objSpecular*mix(vec3(1.0),objColor,objMetallic));\n\t} else {\n\t\tcolor=$hdri(Simple360HDR_equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn pow(color,vec3(1.0/$Gamma));\n}", "longdesc": "Ray marching node for n objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\nCode - PauloFalcao, IQ\n", "name": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3.0, "min": 0.0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/MFSDF/Render/Render Template" }, { "display_name": "Render 360", "icon_data": "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", "name": "MFSDF_Render_360", "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "Gamma": 1.5, "IPD": 0.1, "IS3D": 0.0, "Shadow": 1.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "const float r360_PI=3.14159265359;\n\nvec2 r360_equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*r360_PI,r360_PI);\n}\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(r360_PI,r360_PI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "vec4((($uv.w>0.5&&$uv.w<1.5)||($uv.w>3.5&&$uv.w<4.5))?1.0:0.0,0.0,0.0,length($uv)-0.4)", "function": true, "label": "MFSDF", "name": "mfsdf", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "\n//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=$mfsdf(vec4(p+e.xyy,0.0)).w;\n float v2=$mfsdf(vec4(p+e.yyx,0.0)).w;\n float v3=$mfsdf(vec4(p+e.yxy,0.0)).w;\n float v4=$mfsdf(vec4(p+e.xxx,0.0)).w;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid march_$name(inout float d,inout vec3 p,float dS, vec3 ro, vec3 rd){\n for (int i=0; i < 500; i++) {\n \tp = ro + rd*d;\n dS = $mfsdf(vec4(p,0.0)).w;\n d += dS;\n if (d > 50.0 || abs(dS) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = $mfsdf(vec4( pos + h*nor ,0.0)).w;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = $mfsdf(vec4( ro + rd*t ,0.0)).w;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n\n\tvec3 ro=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\t\n // VR stuff from https://developers.google.com/vr/jump/rendering-ods-content.pdf \n\tvec2 ouv=uv;\n\tif ($IS3D) {\n \tuv.y=1.0-uv.y;\n\t\tuv.y=mod((1.0-uv.y)*2.0,1.0);\n\t}\n float theta=uv.x*2.0*r360_PI-r360_PI;\n float phi=r360_PI/2.0-uv.y*r360_PI;\n float scale=cos(phi)*(-$IPD/2.0);\n if ($IS3D){\n\t\tif (ouv.y>0.5) {scale=-scale;}\n\t} \n ro=vec3(cos(theta),0.0,sin(theta))*scale+ro;\n vec3 rd=vec3(sin(theta)*cos(phi),sin(phi),-cos(theta)*cos(phi));\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tfloat dS=0.0;\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\tvec3 objColor=$mfsdf(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1) \n\tfloat objSpecular=$mfsdf(vec4(p,4.0)).x*0.2; // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=$mfsdf(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+4.0*pow(r,pow(256.0,(1.0-objRoughness)))*objSpecular;\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=$mfsdf(vec4(p,1.0)).xyz;\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tobjColorRef=max(l,$AmbLight)*objColorRef;\n\t\t} else {\n\t\t\tobjColorRef=$hdri(r360_equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,objSpecular);\n\t} else {\n\t\tcolor=$hdri(r360_equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn pow(color,vec3(1.0/$Gamma));\n}", "longdesc": "360 Camera Ray marching node for MFSDF objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\nCode - PauloFalcao, IQ\n", "name": "MFSDF Render 360", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3.0, "min": 0.0, "name": "Gamma", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.1, "label": "IPD", "max": 1.0, "min": 0.0, "name": "IPD", "shortdesc": "Interpupillary Distance", "step": 0.001, "type": "float" }, { "default": 0.0, "label": "3D", "longdesc": "3D", "name": "IS3D", "type": "enum", "values": [ { "name": "true", "value": "true" }, { "name": "false", "value": "false" } ] } ] }, "shortdesc": "", "tree_item": "PF/MFSDF/Render/Render 360", "type": "shader" }, { "display_name": "Render Path Tracing", "generic_size": 1.0, "icon_data": "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", "name": "MFSDF_Render_Path_Tracing", "parameters": { "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "DOF": 0.0, "DOFPlane": 0.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "MaxDistance": 200.0, "MaxRayLoop": 5.0, "MaxRefIte": 4.0, "Precision": 2.0, "Samples": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvoid pathtracing_Onb(in vec3 N, inout vec3 T, inout vec3 B){\n vec3 UpVector=abs(N.z)<0.999?vec3(0,0,1):vec3(1,0,0);\n T=normalize(cross(UpVector,N));\n B=cross(N,T);\n}\n\n\nvec2 pathtracing_equirectangularMap(vec3 dir) {\n\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n// RANDOM START\n//from https://www.reedbeta.com/blog/hash-functions-for-gpu-rendering/\nuint pathtracing_rand_pcg(inout uint seed){\n uint state = seed;\n seed = seed * uint(747796405) + uint(2891336453);\n uint word = ((state >> ((state >> uint(28)) + uint(4))) ^ state) * uint(277803737);\n return (word >> uint(22)) ^ word;\n}\n\nfloat pathtracing_RandomFloat01(inout uint state){\n uint r=pathtracing_rand_pcg(state);\n r &= uint(0x007FFFFF);\n r |= uint(0x3F800000);\n return uintBitsToFloat(r) - 1.0f;\n}\n\n// RANDOM END\n\n// SAMPLING START\n\nvec2 pathtracing_randomPointInDisc(inout uint state, float radius){\n\n float u1=pathtracing_RandomFloat01(state);\n float u2=pathtracing_RandomFloat01(state);\n u2=u2*2.0*3.14159265359;\n float r = radius*sqrt(u1);\n return r*vec2(sin(u2),cos(u2));\n}\n\nvec3 pathtracing_uniformSampleSphere(float r1,float r2){\n const float TAU=6.28318530718;\n float z=1.0-2.0*r1;\n float r=sqrt(max(0.0,1.0-z*z));\n float phi=TAU*r2;\n return vec3(r*cos(phi),r*sin(phi),z);\n}\n\nvec3 pathtracing_cosineSampleHemissphere(inout uint state,vec3 n){\n float u1=pathtracing_RandomFloat01(state);\n float u2=pathtracing_RandomFloat01(state);\n return normalize(n+pathtracing_uniformSampleSphere(u1,u2)); \n}\n\n// Adapted from \"Sampling the GGX Distribution of Visible Normals\",\n// http://jcgt.org/published/0007/04/01/\nvec3 pathtracing_SampleGGXVNDF(inout uint state,vec3 Ve,float alpha_x,float alpha_y){\n\n\n\n float U1=pathtracing_RandomFloat01(state);\n float U2=pathtracing_RandomFloat01(state);\n \n //transforming the view direction to the hemisphere configuration\n vec3 Vh = normalize(vec3(alpha_x * Ve.x, alpha_y * Ve.y, Ve.z));\n\n //orthonormal basis\n vec3 T1;vec3 T2;\n pathtracing_Onb(Vh,T1,T2);\n\n //parameterization of the projected area\n float r = sqrt(U1); \n float phi = 2.0 * 3.14159265359 * U2; \n float t1 = r * cos(phi);\n float t2 = r * sin(phi);\n float s = 0.5 * (1.0 + Vh.z);\n t2 = (1.0 - s)*sqrt(1.0 - t1*t1) + s*t2;\n\n //reprojection onto hemisphere\n vec3 Nh = t1*T1 + t2*T2 + sqrt(max(0.0f, 1.0f - t1*t1 - t2*t2))*Vh;\n\n //transforming the normal back to the ellipsoid configuration\n vec3 Ne = normalize(vec3(alpha_x * Nh.x, alpha_y * Nh.y, max(0.0f, Nh.z))); \n\n return Ne;\n}\n\nfloat pathtracing_schlickWeight(float cosTheta) {\n float m=clamp(1.-cosTheta,0.,1.);\n float m2=m*m;\n return m2*m2*m;\n}\n\n// SAMPLING END\n\n", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999999.0)", "function": true, "label": "MFSDF", "name": "mfsdf#", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" }, { "default": "vec3(0.0)", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "vec4 mfsdf_$name(vec4 p){ \n vec4 a=vec4(0.0,0.0,0.0,999999999.0);\n vec4 b;\n #for\n b=$mfsdf#(p);\n a=(a.w$MaxDistance) break;\n } \n}\n\nvec3 pathtracing_$name(vec2 uv) {\n\n // Init random\n vec2 rndgen=(uv+100.0)*10000.0;\n uint rngState=uint(uint(rndgen.x)*uint(1973)+uint(rndgen.y)*uint(9277) + uint($time*100000.0)*uint(26699));\n\n vec3 o=vec3($CamX,$CamY,$CamZ); \n vec3 t=vec3($LookAtX,$LookAtY,$LookAtZ);\n vec3 u=vec3(0.0,1.0,0.0);\n vec3 c=normalize(t-o);\n\t\t o=o+c*$CamZoom;\n\tfloat planeDistance=length(t-o);\n vec3 cx=normalize(cross(u,c));\n vec3 cy=normalize(cross(cx,c));\n\n vec3 AAColor=vec3(0.0);\n\n for(int AALoop=0;AALoop<$Samples;AALoop++){\n\t\t\n\t vec2 xy=uv.xy-0.5;\n\t\n\t vec3 v=normalize(c*$CamD+cx*xy.x+cy*xy.y);\n\t\t\n\t\t//DOF focal plane\n\t\tfloat fcs=dot(v,c);\n\t\tvec3 focalPoint=o+v*(planeDistance+$DOFPlane)*1.0/fcs;\n\t\tvec2 rdisc=pathtracing_randomPointInDisc(rngState,$DOF);\n\t\to=o+rdisc.x*cx+rdisc.y*cy;\n\t\tv=normalize(focalPoint-o);\n\t\t\n\t vec3 p;\n\t float d=0.01;\n\t vec3 rgb=vec3(1.0);\n\t vec3 io=o;\n\n\t int ii=0;\n\t for(int i=0;i<$MaxRefIte;i++){\n\t \tii=ii+1;\n\t raymarch_$name(io,v,p,d);\n\t \n\t vec3 n=normal_$name(p);\n\t \n\t //View direction to tangent space\n\t vec3 ot;vec3 ob;pathtracing_Onb(n,ot,ob);\n\t vec3 vt=vec3(dot(-v,ot),dot(-v,ob),dot(-v,n));\n\t\t\n\t if (d<$MaxDistance){\t\n\t //if (length(p-o)<$MaxDistance){\n\t vec3 obj_Emission=mfsdf_$name(vec4(p,13.0)).rgb;\n\t \n\t if ((obj_Emission.x+obj_Emission.y+obj_Emission.z)>0.001){\n\t rgb=obj_Emission*rgb;\n\t break;\n\t } else {\n\t float s=pathtracing_RandomFloat01(rngState);\n\t\t\t\t\n\t vec3 obj_BaseColor=mfsdf_$name(vec4(p,1.0)).rgb; // 1 - BaseColor (r,g,b,sdf)\n\t float obj_Metallic=clamp(mfsdf_$name(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\t float obj_Specular=clamp(max(mfsdf_$name(vec4(p,4.0)).x,obj_Metallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\t float obj_Roughness=mfsdf_$name(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\n\t if (s>obj_Specular*obj_Specular*0.5){\n\t rgb=(obj_BaseColor-obj_BaseColor*obj_Metallic)*rgb;\n\t v=pathtracing_cosineSampleHemissphere(rngState,n);\n\t } else {\n\n\t float r2=obj_Roughness*obj_Roughness*0.5;\n\t vec3 vndf=pathtracing_SampleGGXVNDF(rngState,vt,r2,r2);\n\t vec3 nv=reflect(-vt,vndf);\n\t\n\t //Sample direction back to camera space\n\t nv=nv.x*ot+nv.y*ob+nv.z*n;\n\n\t float FH=pathtracing_schlickWeight(dot(n,nv));\n\t vec3 Cspec0=mix(vec3(obj_Specular*0.25),obj_BaseColor,obj_Metallic);\n\t vec3 Fs=mix(Cspec0,vec3(1.0),FH);\n\t rgb=Fs*rgb;\n\t v=nv;\n\t }\n\t io=p;\n\t d=0.01;\n\t }\n\t } else {\n\t rgb*=$hdri(pathtracing_equirectangularMap(v.xzy)).xyz;\n\t\n\t break;\n\t }\n\t }//for(int i\n\t if (ii==$MaxRefIte) rgb=vec3(0.0);//did not hit any light source\n\n\t AAColor+=max(rgb,vec3(0));\n\t\n\t}\n\n\treturn AAColor/floor($Samples);\n\t\n}\n\n", "longdesc": "Path tracing ray marching node for MFSDF objects using a environment 360 HDRI image\n\nCode - PauloFalcao\n\n", "name": "MFSDF Render Path Tracing", "outputs": [ { "rgba": "vec4(pathtracing_$name($uv).xyz,1.0)", "shortdesc": "Image output", "type": "rgba" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 50.0, "label": "MaxDistance", "longdesc": "Maximum render distance", "max": 500.0, "min": 1.0, "name": "MaxDistance", "step": 0.01, "type": "float" }, { "default": 2.0, "label": "MaxRefIte", "longdesc": "Maximum reflection iterations", "name": "MaxRefIte", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "12", "value": "12" }, { "name": "14", "value": "14" }, { "name": "16", "value": "16" }, { "name": "18", "value": "18" }, { "name": "20", "value": "20" }, { "name": "25", "value": "25" }, { "name": "30", "value": "30" }, { "name": "40", "value": "40" }, { "name": "50", "value": "50" } ] }, { "default": 2.0, "label": "MaxRayLoop", "name": "MaxRayLoop", "type": "enum", "values": [ { "name": "16", "value": "16" }, { "name": "32", "value": "32" }, { "name": "64", "value": "64" }, { "name": "128", "value": "128" }, { "name": "256", "value": "256" }, { "name": "512", "value": "512" }, { "name": "1024", "value": "1024" }, { "name": "2048", "value": "2048" }, { "name": "4096", "value": "4096" } ] }, { "default": 6.0, "label": "Precision", "name": "Precision", "type": "enum", "values": [ { "name": "1", "value": "01" }, { "name": "2", "value": "005" }, { "name": "3", "value": "001" }, { "name": "4", "value": "0005" }, { "name": "5", "value": "0001" }, { "name": "6", "value": "00005" }, { "name": "7", "value": "00001" } ] }, { "default": 0.0, "label": "Samples", "name": "Samples", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "4", "value": "4" }, { "name": "8", "value": "8" }, { "name": "12", "value": "12" }, { "name": "16", "value": "16" }, { "name": "24", "value": "24" }, { "name": "32", "value": "32" }, { "name": "48", "value": "48" }, { "name": "64", "value": "64" }, { "name": "96", "value": "96" }, { "name": "128", "value": "128" } ] }, { "control": "None", "default": 0.0, "label": "DOF", "max": 1.0, "min": 0.0, "name": "DOF", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "DOFPlane", "max": 5.0, "min": -5.0, "name": "DOFPlane", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Render Path Tracing" }, "shortdesc": "", "tree_item": "PF/MFSDF/Render/Render Path Tracing", "type": "shader" }, { "connections": [ { "from": "sdf3d_sphere", "from_node": "node_sdf3d_sphere", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Object_And_Transform", "to_node": "node_MFSDF_Object_And_Transform", "to_port": 5.0 }, { "from": "graph_2", "from_node": "node_graph_2", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Render_Path_Tracing", "to_node": "node_MFSDF_Render_Path_Tracing", "to_port": 0.0 }, { "from": "uniform", "from_node": "node_uniform", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Render_Path_Tracing", "to_node": "node_MFSDF_Render_Path_Tracing", "to_port": 3.0 }, { "from": "MFSDF_Object_And_Transform", "from_node": "node_MFSDF_Object_And_Transform", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Render_Path_Tracing", "to_node": "node_MFSDF_Render_Path_Tracing", "to_port": 2.0 }, { "from": "MFSDF_Object_And_Transform_2", "from_node": "node_MFSDF_Object_And_Transform_2", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Render_Path_Tracing", "to_node": "node_MFSDF_Render_Path_Tracing", "to_port": 1.0 } ], "display_name": "Render Path Tracing Template", "icon_data": "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", "name": "", "nodes": [ { "name": "MFSDF_Object_And_Transform_2", "node_position": { "x": -223.08332824707, "y": -330.833312988281 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 16.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": 1.84874, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object And Transform", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "connections": [ { "from": "tex3d_pattern_2", "from_port": 0.0, "to": "tex3d_colorize_3", "to_port": 0.0 }, { "from": "tex3d_colorize_3", "from_port": 0.0, "to": "pxflib_4", "to_port": 0.0 }, { "from": "pxflib_4", "from_port": 0.0, "to": "gen_outputs", "to_port": 0.0 }, { "from": "sdf3d_box", "from_port": 0.0, "to": "pxflib_4", "to_port": 5.0 } ], "label": "Checkerboard", "longdesc": "", "name": "graph_2", "node_position": { "x": 96.9166717529297, "y": -330.833312988281 }, "nodes": [ { "name": "sdf3d_box", "node_position": { "x": -1041.34008789062, "y": -203.449951171875 }, "parameters": { "r": 0.0, "sx": 4.0, "sy": 0.5, "sz": 4.0 }, "seed_int": 0.0, "type": "sdf3d_box" }, { "name": "tex3d_pattern_2", "node_position": { "x": -1106.34008789062, "y": -381.449951171875 }, "parameters": { "mix": 4.0, "x_scale": "$checkersize", "x_wave": 2.0, "y_scale": 0.0, "y_wave": 2.0, "z_scale": "$checkersize", "z_wave": 2.0 }, "seed_int": 0.0, "type": "tex3d_pattern" }, { "name": "gen_inputs", "node_position": { "x": -1341.34008789062, "y": -277.949951171875 }, "parameters": { }, "ports": [], "seed_int": 0.0, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -171.340026855469, "y": -302.949951171875 }, "parameters": { }, "ports": [ { "group_size": 0.0, "name": "port0", "type": "v4v4" } ], "seed_int": 0.0, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1055.59008789062, "y": -653.449951171875 }, "parameters": { "checkersize": 2.0, "param0": 4.0, "param1": -1.0, "param2": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.0, "r": 0.84375 }, { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.99999, "r": 0.84375 }, { "a": 1.0, "b": 0.125, "g": 0.125, "pos": 1.00001, "r": 0.125 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed_int": 0.0, "type": "remote", "widgets": [ { "label": "Board Size", "linked_widgets": [ { "node": "sdf3d_box", "widget": "sx" }, { "node": "sdf3d_box", "widget": "sz" } ], "name": "param0", "type": "linked_control" }, { "default": 1.0, "label": "Checker Size", "max": 20.0, "min": 0.0, "name": "checkersize", "step": 0.001, "type": "named_parameter" }, { "label": "Position", "linked_widgets": [ { "node": "pxflib_4", "widget": "TranlateY" } ], "name": "param1", "type": "linked_control" }, { "label": "Color", "linked_widgets": [ { "node": "tex3d_colorize_3", "widget": "g" } ], "name": "param2", "type": "linked_control" }, { "label": "Metallic", "linked_widgets": [ { "node": "pxflib_4", "widget": "Metallic" } ], "name": "param3", "type": "linked_control" }, { "label": "Specular", "linked_widgets": [ { "node": "pxflib_4", "widget": "Specular" } ], "name": "param4", "type": "linked_control" }, { "label": "Roughness", "linked_widgets": [ { "node": "pxflib_4", "widget": "Roughness" } ], "name": "param5", "type": "linked_control" } ] }, { "name": "tex3d_colorize_3", "node_position": { "x": -850.0, "y": -377.021362304688 }, "parameters": { "g": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.0, "r": 0.84375 }, { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.99999, "r": 0.84375 }, { "a": 1.0, "b": 0.125, "g": 0.125, "pos": 1.00001, "r": 0.125 } ], "type": "Gradient" } }, "seed_int": 0.0, "type": "tex3d_colorize" }, { "name": "pxflib_4", "node_position": { "x": -591.953735351562, "y": -359.458862304688 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": -1.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "parameters": { "checkersize": 2.0, "param0": 4.0, "param1": -1.0, "param2": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.0, "r": 0.84375 }, { "a": 1.0, "b": 0.84375, "g": 0.84375, "pos": 0.99999, "r": 0.84375 }, { "a": 1.0, "b": 0.125, "g": 0.125, "pos": 1.00001, "r": 0.125 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed_int": 0.0, "shortdesc": "", "type": "graph" }, { "name": "uniform", "node_position": { "x": 96.9166717529297, "y": -110.83332824707 }, "parameters": { "color": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" } }, "seed_int": 0.0, "type": "uniform" }, { "name": "MFSDF_Object_And_Transform", "node_position": { "x": -293.083312988281, "y": 19.1666717529297 }, "parameters": { "BaseColor": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 1.0, "TranlateX": 0.0, "TranlateY": 0.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object And Transform", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "sdf3d_sphere", "node_position": { "x": -483.083312988281, "y": 139.16667175293 }, "parameters": { "r": 0.4 }, "seed_int": 0.0, "type": "sdf3d_sphere" }, { "generic_size": 3.0, "name": "MFSDF_Render_Path_Tracing", "node_position": { "x": 96.9166717529297, "y": -10.8333282470703 }, "parameters": { "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "DOF": 0.0, "DOFPlane": 0.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "MaxDistance": 200.0, "MaxRayLoop": 5.0, "MaxRefIte": 4.0, "Precision": 2.0, "Samples": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvoid pathtracing_Onb(in vec3 N, inout vec3 T, inout vec3 B){\n vec3 UpVector=abs(N.z)<0.999?vec3(0,0,1):vec3(1,0,0);\n T=normalize(cross(UpVector,N));\n B=cross(N,T);\n}\n\n\nvec2 pathtracing_equirectangularMap(vec3 dir) {\n\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n// RANDOM START\n//from https://www.reedbeta.com/blog/hash-functions-for-gpu-rendering/\nuint pathtracing_rand_pcg(inout uint seed){\n uint state = seed;\n seed = seed * uint(747796405) + uint(2891336453);\n uint word = ((state >> ((state >> uint(28)) + uint(4))) ^ state) * uint(277803737);\n return (word >> uint(22)) ^ word;\n}\n\nfloat pathtracing_RandomFloat01(inout uint state){\n uint r=pathtracing_rand_pcg(state);\n r &= uint(0x007FFFFF);\n r |= uint(0x3F800000);\n return uintBitsToFloat(r) - 1.0f;\n}\n\n// RANDOM END\n\n// SAMPLING START\n\nvec2 pathtracing_randomPointInDisc(inout uint state, float radius){\n\n float u1=pathtracing_RandomFloat01(state);\n float u2=pathtracing_RandomFloat01(state);\n u2=u2*2.0*3.14159265359;\n float r = radius*sqrt(u1);\n return r*vec2(sin(u2),cos(u2));\n}\n\nvec3 pathtracing_uniformSampleSphere(float r1,float r2){\n const float TAU=6.28318530718;\n float z=1.0-2.0*r1;\n float r=sqrt(max(0.0,1.0-z*z));\n float phi=TAU*r2;\n return vec3(r*cos(phi),r*sin(phi),z);\n}\n\nvec3 pathtracing_cosineSampleHemissphere(inout uint state,vec3 n){\n float u1=pathtracing_RandomFloat01(state);\n float u2=pathtracing_RandomFloat01(state);\n return normalize(n+pathtracing_uniformSampleSphere(u1,u2)); \n}\n\n// Adapted from \"Sampling the GGX Distribution of Visible Normals\",\n// http://jcgt.org/published/0007/04/01/\nvec3 pathtracing_SampleGGXVNDF(inout uint state,vec3 Ve,float alpha_x,float alpha_y){\n\n\n\n float U1=pathtracing_RandomFloat01(state);\n float U2=pathtracing_RandomFloat01(state);\n \n //transforming the view direction to the hemisphere configuration\n vec3 Vh = normalize(vec3(alpha_x * Ve.x, alpha_y * Ve.y, Ve.z));\n\n //orthonormal basis\n vec3 T1;vec3 T2;\n pathtracing_Onb(Vh,T1,T2);\n\n //parameterization of the projected area\n float r = sqrt(U1); \n float phi = 2.0 * 3.14159265359 * U2; \n float t1 = r * cos(phi);\n float t2 = r * sin(phi);\n float s = 0.5 * (1.0 + Vh.z);\n t2 = (1.0 - s)*sqrt(1.0 - t1*t1) + s*t2;\n\n //reprojection onto hemisphere\n vec3 Nh = t1*T1 + t2*T2 + sqrt(max(0.0f, 1.0f - t1*t1 - t2*t2))*Vh;\n\n //transforming the normal back to the ellipsoid configuration\n vec3 Ne = normalize(vec3(alpha_x * Nh.x, alpha_y * Nh.y, max(0.0f, Nh.z))); \n\n return Ne;\n}\n\nfloat pathtracing_schlickWeight(float cosTheta) {\n float m=clamp(1.-cosTheta,0.,1.);\n float m2=m*m;\n return m2*m2*m;\n}\n\n// SAMPLING END\n\n", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999999.0)", "function": true, "label": "MFSDF", "name": "mfsdf#", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" }, { "default": "vec3(0.0)", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "vec4 mfsdf_$name(vec4 p){ \n vec4 a=vec4(0.0,0.0,0.0,999999999.0);\n vec4 b;\n #for\n b=$mfsdf#(p);\n a=(a.w$MaxDistance) break;\n } \n}\n\nvec3 pathtracing_$name(vec2 uv) {\n\n // Init random\n vec2 rndgen=(uv+100.0)*10000.0;\n uint rngState=uint(uint(rndgen.x)*uint(1973)+uint(rndgen.y)*uint(9277) + uint($time*100000.0)*uint(26699));\n\n vec3 o=vec3($CamX,$CamY,$CamZ); \n vec3 t=vec3($LookAtX,$LookAtY,$LookAtZ);\n vec3 u=vec3(0.0,1.0,0.0);\n vec3 c=normalize(t-o);\n\t\t o=o+c*$CamZoom;\n\tfloat planeDistance=length(t-o);\n vec3 cx=normalize(cross(u,c));\n vec3 cy=normalize(cross(cx,c));\n\n vec3 AAColor=vec3(0.0);\n\n for(int AALoop=0;AALoop<$Samples;AALoop++){\n\t\t\n\t vec2 xy=uv.xy-0.5;\n\t\n\t vec3 v=normalize(c*$CamD+cx*xy.x+cy*xy.y);\n\t\t\n\t\t//DOF focal plane\n\t\tfloat fcs=dot(v,c);\n\t\tvec3 focalPoint=o+v*(planeDistance+$DOFPlane)*1.0/fcs;\n\t\tvec2 rdisc=pathtracing_randomPointInDisc(rngState,$DOF);\n\t\to=o+rdisc.x*cx+rdisc.y*cy;\n\t\tv=normalize(focalPoint-o);\n\t\t\n\t vec3 p;\n\t float d=0.01;\n\t vec3 rgb=vec3(1.0);\n\t vec3 io=o;\n\n\t int ii=0;\n\t for(int i=0;i<$MaxRefIte;i++){\n\t \tii=ii+1;\n\t raymarch_$name(io,v,p,d);\n\t \n\t vec3 n=normal_$name(p);\n\t \n\t //View direction to tangent space\n\t vec3 ot;vec3 ob;pathtracing_Onb(n,ot,ob);\n\t vec3 vt=vec3(dot(-v,ot),dot(-v,ob),dot(-v,n));\n\t\t\n\t if (d<$MaxDistance){\t\n\t //if (length(p-o)<$MaxDistance){\n\t vec3 obj_Emission=mfsdf_$name(vec4(p,13.0)).rgb;\n\t \n\t if ((obj_Emission.x+obj_Emission.y+obj_Emission.z)>0.001){\n\t rgb=obj_Emission*rgb;\n\t break;\n\t } else {\n\t float s=pathtracing_RandomFloat01(rngState);\n\t\t\t\t\n\t vec3 obj_BaseColor=mfsdf_$name(vec4(p,1.0)).rgb; // 1 - BaseColor (r,g,b,sdf)\n\t float obj_Metallic=clamp(mfsdf_$name(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\t float obj_Specular=clamp(max(mfsdf_$name(vec4(p,4.0)).x,obj_Metallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\t float obj_Roughness=mfsdf_$name(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\n\t if (s>obj_Specular*obj_Specular*0.5){\n\t rgb=(obj_BaseColor-obj_BaseColor*obj_Metallic)*rgb;\n\t v=pathtracing_cosineSampleHemissphere(rngState,n);\n\t } else {\n\n\t float r2=obj_Roughness*obj_Roughness*0.5;\n\t vec3 vndf=pathtracing_SampleGGXVNDF(rngState,vt,r2,r2);\n\t vec3 nv=reflect(-vt,vndf);\n\t\n\t //Sample direction back to camera space\n\t nv=nv.x*ot+nv.y*ob+nv.z*n;\n\n\t float FH=pathtracing_schlickWeight(dot(n,nv));\n\t vec3 Cspec0=mix(vec3(obj_Specular*0.25),obj_BaseColor,obj_Metallic);\n\t vec3 Fs=mix(Cspec0,vec3(1.0),FH);\n\t rgb=Fs*rgb;\n\t v=nv;\n\t }\n\t io=p;\n\t d=0.01;\n\t }\n\t } else {\n\t rgb*=$hdri(pathtracing_equirectangularMap(v.xzy)).xyz;\n\t\n\t break;\n\t }\n\t }//for(int i\n\t if (ii==$MaxRefIte) rgb=vec3(0.0);//did not hit any light source\n\n\t AAColor+=max(rgb,vec3(0));\n\t\n\t}\n\n\treturn AAColor/floor($Samples);\n\t\n}\n\n", "longdesc": "Path tracing ray marching node for MFSDF objects using a environment 360 HDRI image\n\nCode - PauloFalcao\n\n", "name": "MFSDF Render Path Tracing", "outputs": [ { "rgba": "vec4(pathtracing_$name($uv).xyz,1.0)", "shortdesc": "Image output", "type": "rgba" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 50.0, "label": "MaxDistance", "longdesc": "Maximum render distance", "max": 500.0, "min": 1.0, "name": "MaxDistance", "step": 0.01, "type": "float" }, { "default": 2.0, "label": "MaxRefIte", "longdesc": "Maximum reflection iterations", "name": "MaxRefIte", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "12", "value": "12" }, { "name": "14", "value": "14" }, { "name": "16", "value": "16" }, { "name": "18", "value": "18" }, { "name": "20", "value": "20" }, { "name": "25", "value": "25" }, { "name": "30", "value": "30" }, { "name": "40", "value": "40" }, { "name": "50", "value": "50" } ] }, { "default": 2.0, "label": "MaxRayLoop", "name": "MaxRayLoop", "type": "enum", "values": [ { "name": "16", "value": "16" }, { "name": "32", "value": "32" }, { "name": "64", "value": "64" }, { "name": "128", "value": "128" }, { "name": "256", "value": "256" }, { "name": "512", "value": "512" }, { "name": "1024", "value": "1024" }, { "name": "2048", "value": "2048" }, { "name": "4096", "value": "4096" } ] }, { "default": 6.0, "label": "Precision", "name": "Precision", "type": "enum", "values": [ { "name": "1", "value": "01" }, { "name": "2", "value": "005" }, { "name": "3", "value": "001" }, { "name": "4", "value": "0005" }, { "name": "5", "value": "0001" }, { "name": "6", "value": "00005" }, { "name": "7", "value": "00001" } ] }, { "default": 0.0, "label": "Samples", "name": "Samples", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "4", "value": "4" }, { "name": "8", "value": "8" }, { "name": "12", "value": "12" }, { "name": "16", "value": "16" }, { "name": "24", "value": "24" }, { "name": "32", "value": "32" }, { "name": "48", "value": "48" }, { "name": "64", "value": "64" }, { "name": "96", "value": "96" }, { "name": "128", "value": "128" } ] }, { "control": "None", "default": 0.0, "label": "DOF", "max": 1.0, "min": 0.0, "name": "DOF", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "DOFPlane", "max": 5.0, "min": -5.0, "name": "DOFPlane", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Render Path Tracing" }, "type": "shader" } ], "shader_model": { "global": "", "instance": "", "longdesc": "", "name": "" }, "shortdesc": "", "tree_item": "PF/MFSDF/Render/Render Path Tracing Template" }, { "connections": [ { "from": "pxflib_8", "from_node": "node_pxflib_8", "from_port": 0.0, "keep_alive": false, "to": "iterate_buffer", "to_node": "node_iterate_buffer", "to_port": 1.0 }, { "from": "iterate_buffer", "from_node": "node_iterate_buffer", "from_port": 1.0, "keep_alive": false, "to": "pxflib_8", "to_node": "node_pxflib_8", "to_port": 2.0 }, { "from": "uniform_2", "from_node": "node_uniform_2", "from_port": 0.0, "keep_alive": false, "to": "iterate_buffer", "to_node": "node_iterate_buffer", "to_port": 0.0 }, { "from": "MFSDF_Boolean", "from_node": "node_MFSDF_Boolean", "from_port": 0.0, "keep_alive": false, "to": "pxflib_8", "to_node": "node_pxflib_8", "to_port": 0.0 }, { "from": "iterate_buffer", "from_node": "node_iterate_buffer", "from_port": 1.0, "keep_alive": false, "to": "1983", "to_node": "node_1983", "to_port": 0.0 }, { "from": "pxflib_8", "from_node": "node_pxflib_8", "from_port": 1.0, "keep_alive": false, "to": "1983_2", "to_node": "node_1983_2", "to_port": 0.0 }, { "from": "graph_2", "from_node": "node_graph_2", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Boolean", "to_node": "node_MFSDF_Boolean", "to_port": 0.0 }, { "from": "MFSDF_Object_And_Transform", "from_node": "node_MFSDF_Object_And_Transform", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Boolean", "to_node": "node_MFSDF_Boolean", "to_port": 1.0 }, { "from": "MFSDF_Object", "from_node": "node_MFSDF_Object", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Boolean", "to_node": "node_MFSDF_Boolean", "to_port": 2.0 }, { "from": "sdf3d_sphere", "from_node": "node_sdf3d_sphere", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Object", "to_node": "node_MFSDF_Object", "to_port": 0.0 } ], "display_name": "Render Path Tracing Realtime", "icon_data": "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", "name": "", "nodes": [ { "name": "iterate_buffer", "node_position": { "x": 37.5, "y": -235.125 }, "parameters": { "autostop": false, "f32": true, "filter": false, "iterations": 999999999.0, "mipmap": false, "shrink": false, "size": 9.0 }, "seed": 29168.0, "seed_locked": true, "type": "iterate_buffer" }, { "generic_size": 2.0, "name": "MFSDF_Boolean", "node_position": { "x": -372.5, "y": 84.875 }, "parameters": { "op1": 0.0, "op2": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "vec4 $(name_uv)_sout=$in($uv);\n#for\n$(name_uv)_sout=$op#($(name_uv)_sout, $in#($uv));\n#end", "global": "vec4 mfsdf_boolean_union(vec4 a, vec4 b) {\n\treturn vec4((a.wb.w)?vec4(a.xyz,-a.w):vec4(b));\n}\nvec4 mfsdf_boolean_inter(vec4 a, vec4 b) {\n\treturn vec4((a.w>b.w)?vec4(a):vec4(b));\n}", "inputs": [ { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in", "shortdesc": "V4->V4 MFSDF Base", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in#", "shortdesc": "V4->V4 MFSDF #", "type": "v4v4" } ], "instance": "", "longdesc": "Performs a boolean operation (union, intersection or difference) between two shapes\n\nCode - PauloFalcao", "name": "MFSDF Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "$(name_uv)_sout" } ], "parameters": [ { "default": 2.0, "label": "2:", "name": "op#", "type": "enum", "values": [ { "name": "Union", "value": "mfsdf_boolean_union" }, { "name": "Subtraction", "value": "mfsdf_boolean_sub" }, { "name": "Intersection", "value": "mfsdf_boolean_inter" } ] } ], "shortdesc": "MFSDF Boolean" }, "type": "shader" }, { "name": "comment_line", "node_position": { "x": 527.5, "y": -235.125 }, "parameters": { }, "seed_int": 0.0, "text": "TAARender=false", "type": "comment_line" }, { "name": "comment_line_2", "node_position": { "x": 517.5, "y": -5.125 }, "parameters": { }, "seed_int": 0.0, "text": "TAARender=true", "type": "comment_line" }, { "name": "1983", "node_position": { "x": 527.5, "y": -205.125 }, "parameters": { "gamma": 2.2 }, "seed": -50131.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "buf", "type": "rgba" } ], "instance": "", "name": "Realtime Output", "outputs": [ { "rgba": "vec4(pow($buf($uv).xyz/$buf($uv).w,vec3(1.0/$gamma)),1.0)", "type": "rgba" } ], "parameters": [ { "control": "None", "default": 2.2, "label": "Gamma", "max": 5.0, "min": 0.0, "name": "gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" }, { "connections": [ { "from": "tex3d_pattern_2", "from_port": 0.0, "to": "tex3d_colorize_3", "to_port": 0.0 }, { "from": "tex3d_colorize_3", "from_port": 0.0, "to": "pxflib_4", "to_port": 0.0 }, { "from": "pxflib_4", "from_port": 0.0, "to": "gen_outputs", "to_port": 0.0 }, { "from": "sdf3d_box", "from_port": 0.0, "to": "pxflib_4", "to_port": 5.0 } ], "label": "Checkerboard", "longdesc": "", "name": "graph_2", "node_position": { "x": -772.5, "y": -125.125 }, "nodes": [ { "name": "sdf3d_box", "node_position": { "x": -1041.34008789062, "y": -203.449951171875 }, "parameters": { "r": 0.0, "sx": 6.0, "sy": 0.5, "sz": 6.0 }, "seed_int": 0.0, "type": "sdf3d_box" }, { "name": "tex3d_pattern_2", "node_position": { "x": -1106.34008789062, "y": -381.449951171875 }, "parameters": { "mix": 4.0, "x_scale": "$checkersize", "x_wave": 2.0, "y_scale": 0.0, "y_wave": 2.0, "z_scale": "$checkersize", "z_wave": 2.0 }, "seed_int": 0.0, "type": "tex3d_pattern" }, { "name": "gen_inputs", "node_position": { "x": -1341.34008789062, "y": -277.949951171875 }, "parameters": { }, "ports": [], "seed_int": 0.0, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -171.340026855469, "y": -302.949951171875 }, "parameters": { }, "ports": [ { "group_size": 0.0, "name": "port0", "type": "v4v4" } ], "seed_int": 0.0, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1055.59008789062, "y": -653.449951171875 }, "parameters": { "checkersize": 2.0, "param0": 6.0, "param1": -1.0, "param2": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.859375, "g": 0.859375, "pos": 0.0, "r": 0.859375 }, { "a": 1.0, "b": 0.859375, "g": 0.859375, "pos": 0.99999, "r": 0.859375 }, { "a": 1.0, "b": 0.13671875, "g": 0.13671875, "pos": 1.00001, "r": 0.13671875 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed_int": 0.0, "type": "remote", "widgets": [ { "label": "Board Size", "linked_widgets": [ { "node": "sdf3d_box", "widget": "sx" }, { "node": "sdf3d_box", "widget": "sz" } ], "name": "param0", "type": "linked_control" }, { "default": 1.0, "label": "Checker Size", "max": 20.0, "min": 0.0, "name": "checkersize", "step": 0.001, "type": "named_parameter" }, { "label": "Position", "linked_widgets": [ { "node": "pxflib_4", "widget": "TranlateY" } ], "name": "param1", "type": "linked_control" }, { "label": "Color", "linked_widgets": [ { "node": "tex3d_colorize_3", "widget": "g" } ], "name": "param2", "type": "linked_control" }, { "label": "Metallic", "linked_widgets": [ { "node": "pxflib_4", "widget": "Metallic" } ], "name": "param3", "type": "linked_control" }, { "label": "Specular", "linked_widgets": [ { "node": "pxflib_4", "widget": "Specular" } ], "name": "param4", "type": "linked_control" }, { "label": "Roughness", "linked_widgets": [ { "node": "pxflib_4", "widget": "Roughness" } ], "name": "param5", "type": "linked_control" } ] }, { "name": "tex3d_colorize_3", "node_position": { "x": -850.0, "y": -377.021362304688 }, "parameters": { "g": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.859375, "g": 0.859375, "pos": 0.0, "r": 0.859375 }, { "a": 1.0, "b": 0.859375, "g": 0.859375, "pos": 0.99999, "r": 0.859375 }, { "a": 1.0, "b": 0.13671875, "g": 0.13671875, "pos": 1.00001, "r": 0.13671875 } ], "type": "Gradient" } }, "seed_int": 0.0, "type": "tex3d_colorize" }, { "name": "pxflib_4", "node_position": { "x": -591.953735351562, "y": -359.458862304688 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": -1.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "parameters": { "checkersize": 2.0, "param0": 6.0, "param1": -1.0, "param2": { "interpolation": 0.0, "points": [ { "a": 1.0, "b": 0.859375, "g": 0.859375, "pos": 0.0, "r": 0.859375 }, { "a": 1.0, "b": 0.859375, "g": 0.859375, "pos": 0.99999, "r": 0.859375 }, { "a": 1.0, "b": 0.13671875, "g": 0.13671875, "pos": 1.00001, "r": 0.13671875 } ], "type": "Gradient" }, "param3": 0.0, "param4": 0.5, "param5": 0.0 }, "seed_int": 0.0, "shortdesc": "", "type": "graph" }, { "name": "uniform_2", "node_position": { "x": -112.5, "y": -235.125 }, "parameters": { "color": { "a": 1.0, "b": 0.6171875, "g": 0.6171875, "r": 0.6171875, "type": "Color" } }, "seed_int": 0.0, "type": "uniform" }, { "name": "MFSDF_Object_And_Transform", "node_position": { "x": -492.5, "y": -215.125 }, "parameters": { "BaseColor": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" }, "Emission": 16.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 0.5, "TranlateX": 0.0, "TranlateY": 2.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object And Transform", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "MFSDF_Object", "node_position": { "x": -672.5, "y": 144.875 }, "parameters": { "BaseColor": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" }, "Metallic": 0.0, "Roughness": 0.0, "Specular": 0.5 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "\n", "inputs": [ { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" } ], "instance": "vec4 PBRObjectMaker_simple_$name(vec4 uv){\n\tfloat sdf=$sdf3d(uv.xyz);\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4(0.0,0.0,0.0,sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_simple_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "2:", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "3:", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "4:", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "5:", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object Simple" }, "type": "shader" }, { "name": "sdf3d_sphere", "node_position": { "x": -912.5, "y": 154.875 }, "parameters": { "r": 0.4 }, "seed_int": 0.0, "type": "sdf3d_sphere" }, { "name": "1983_2", "node_position": { "x": 517.5, "y": 24.875 }, "parameters": { }, "seed": -50131.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "buf", "type": "rgba" } ], "instance": "", "name": "TAA Render Output", "outputs": [ { "rgba": "vec4($buf($uv).xyz,1.0)", "type": "rgba" } ], "parameters": [] }, "type": "shader" }, { "name": "pxflib_8", "node_position": { "x": -22.5, "y": 14.875 }, "parameters": { "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "DOF": 0.0, "DOFPlane": 0.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "MaxDistance": 200.0, "MaxRayLoop": 5.0, "MaxRefIte": 4.0, "Precision": 2.0, "ReFrameX": 1.0, "ReFrameY": 1.0, "Size": 9.0, "TAARender": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvoid pathtracing_Onb(in vec3 N, inout vec3 T, inout vec3 B){\n vec3 UpVector=abs(N.z)<0.999?vec3(0,0,1):vec3(1,0,0);\n T=normalize(cross(UpVector,N));\n B=cross(N,T);\n}\n\n\nvec2 pathtracing_equirectangularMap(vec3 dir) {\n const float PI=3.14159265359;\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*PI,PI);\n}\n\n// RANDOM START\n//from https://www.reedbeta.com/blog/hash-functions-for-gpu-rendering/\nuint pathtracing_rand_pcg(inout uint seed){\n uint state = seed;\n seed = seed * uint(747796405) + uint(2891336453);\n uint word = ((state >> ((state >> uint(28)) + uint(4))) ^ state) * uint(277803737);\n return (word >> uint(22)) ^ word;\n}\n\nfloat pathtracing_RandomFloat01(inout uint state){\n uint r=pathtracing_rand_pcg(state);\n r &= uint(0x007FFFFF);\n r |= uint(0x3F800000);\n return uintBitsToFloat(r) - 1.0f;\n}\n\n// RANDOM END\n\n// SAMPLING START\n\nvec2 pathtracing_randomPointInDisc(inout uint state, float radius){\n const float PI=3.14159265359;\n float u1=pathtracing_RandomFloat01(state);\n float u2=pathtracing_RandomFloat01(state);\n u2=u2*2.0*PI;\n float r = radius*sqrt(u1);\n return r*vec2(sin(u2),cos(u2));\n}\n\nvec3 pathtracing_uniformSampleSphere(float r1,float r2){\n const float TAU=6.28318530718;\n float z=1.0-2.0*r1;\n float r=sqrt(max(0.0,1.0-z*z));\n float phi=TAU*r2;\n return vec3(r*cos(phi),r*sin(phi),z);\n}\n\nvec3 pathtracing_cosineSampleHemissphere(inout uint state,vec3 n){\n float u1=pathtracing_RandomFloat01(state);\n float u2=pathtracing_RandomFloat01(state);\n return normalize(n+pathtracing_uniformSampleSphere(u1,u2)); \n}\n\n// Adapted from \"Sampling the GGX Distribution of Visible Normals\",\n// http://jcgt.org/published/0007/04/01/\nvec3 pathtracing_SampleGGXVNDF(inout uint state,vec3 Ve,float alpha_x,float alpha_y){\n\n const float PI=3.14159265359;\n\n float U1=pathtracing_RandomFloat01(state);\n float U2=pathtracing_RandomFloat01(state);\n \n //transforming the view direction to the hemisphere configuration\n vec3 Vh = normalize(vec3(alpha_x * Ve.x, alpha_y * Ve.y, Ve.z));\n\n //orthonormal basis\n vec3 T1;vec3 T2;\n pathtracing_Onb(Vh,T1,T2);\n\n //parameterization of the projected area\n float r = sqrt(U1); \n float phi = 2.0 * PI * U2; \n float t1 = r * cos(phi);\n float t2 = r * sin(phi);\n float s = 0.5 * (1.0 + Vh.z);\n t2 = (1.0 - s)*sqrt(1.0 - t1*t1) + s*t2;\n\n //reprojection onto hemisphere\n vec3 Nh = t1*T1 + t2*T2 + sqrt(max(0.0f, 1.0f - t1*t1 - t2*t2))*Vh;\n\n //transforming the normal back to the ellipsoid configuration\n vec3 Ne = normalize(vec3(alpha_x * Nh.x, alpha_y * Nh.y, max(0.0f, Nh.z))); \n\n return Ne;\n}\n\nfloat pathtracing_schlickWeight(float cosTheta) {\n float m=clamp(1.-cosTheta,0.,1.);\n float m2=m*m;\n return m2*m2*m;\n}\n\n// SAMPLING END\n\n", "inputs": [ { "default": "vec4(1.0,0.0,0.0,length($uv)-0.4)", "function": true, "label": "MFSDF", "name": "mfsdf", "shortdesc": "V4->V4 Multi-Field SDF", "type": "v4v4" }, { "default": "vec3(0.0)", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" }, { "default": "vec4(0.0)", "label": "Iterate Buffer Out", "name": "input", "type": "rgba" } ], "instance": "\n//tetrahedron normal by PauloFalcao\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.$Precision,-0.$Precision,0.0);\n float v1=$mfsdf(vec4(p+e.xyy,0.0)).w;\n float v2=$mfsdf(vec4(p+e.yyx,0.0)).w;\n float v3=$mfsdf(vec4(p+e.yxy,0.0)).w;\n float v4=$mfsdf(vec4(p+e.xxx,0.0)).w;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid raymarch_$name(in vec3 o,in vec3 v,out vec3 p,inout float d){\n float s;\n for(int i=0;i<$MaxRayLoop;i++){\n p=o+v*d;\n s=$mfsdf(vec4(p,0.0)).w;\n if (abs(s)<0.0$Precision) break;\n d+=s;\n if (d>$MaxDistance) break;\n } \n}\n\nvec3 pathtracing_$name(vec2 uv) {\n\t\n vec2 dxy = vec2(1.0)/$Size;\n\n // Init random\n vec2 rndgen=(uv+100.0)*10000.0;\n uint rngState=uint(uint(rndgen.x)*uint(1973)+uint(rndgen.y)*uint(9277) + uint($TAARender*100000.0));\n\n vec3 o=vec3($CamX,$CamY,$CamZ); \n vec3 t=vec3($LookAtX,$LookAtY,$LookAtZ);\n vec3 u=vec3(0.0,1.0,0.0);\n vec3 c=normalize(t-o);\n\t\t o=o+c*$CamZoom;\n\tfloat planeDistance=length(t-o);\n vec3 cx=normalize(cross(u,c));\n vec3 cy=normalize(cross(cx,c));\n\n vec3 rgb=vec3(1.0);\n\t\n\tif (($ReFrameX/2.0>abs(uv.x-0.5))&&($ReFrameY/2.0>abs(uv.y-0.5))){\n\t\tfloat ReFrame=min($ReFrameX,$ReFrameY);\n\t\tuv.x=(uv.x-0.5)/ReFrame+0.5;\n\t\tuv.y=(uv.y-0.5)/ReFrame+0.5;\n\t\tdxy/=ReFrame;\n\n\t vec2 xy=uv.xy;\n\t\txy+=(vec2(pathtracing_RandomFloat01(rngState),pathtracing_RandomFloat01(rngState))-0.5)*dxy-0.5;\n\n\n\t vec3 v=normalize(c*$CamD+cx*xy.x+cy*xy.y);\n\t\t\n\t\t//DOF focal plane\n\t\tfloat fcs=dot(v,c);\n\t\tvec3 focalPoint=o+v*(planeDistance+$DOFPlane)*1.0/fcs;\n\t\tvec2 rdisc=pathtracing_randomPointInDisc(rngState,$DOF);\n\t\to=o+rdisc.x*cx+rdisc.y*cy;\n\t\tv=normalize(focalPoint-o);\n\t\t\n\t vec3 p;\n\t float d=0.01;\n\n\t vec3 io=o;\n\n\t int ii=0;\n\t for(int i=0;i<$MaxRefIte;i++){\n\t \tii=ii+1;\n\t raymarch_$name(io,v,p,d);\n\t \n\t vec3 n=normal_$name(p);\n\t \n\t //View direction to tangent space\n\t vec3 ot;vec3 ob;pathtracing_Onb(n,ot,ob);\n\t vec3 vt=vec3(dot(-v,ot),dot(-v,ob),dot(-v,n));\n\t\t\n\t if (d<$MaxDistance){\t\n\t //if (length(p-o)<$MaxDistance){\n\t vec3 obj_Emission=$mfsdf(vec4(p,13.0)).rgb;\n\t \n\t if ((obj_Emission.x+obj_Emission.y+obj_Emission.z)>0.001){\n\t rgb=obj_Emission*rgb;\n\t break;\n\t } else {\n\t float s=pathtracing_RandomFloat01(rngState);\n\t\t\t\t\n\t vec3 obj_BaseColor=$mfsdf(vec4(p,1.0)).rgb; // 1 - BaseColor (r,g,b,sdf)\n\t float obj_Metallic=clamp($mfsdf(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\t float obj_Specular=clamp(max($mfsdf(vec4(p,4.0)).x,obj_Metallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\t float obj_Roughness=$mfsdf(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\n\t if (s>obj_Specular*obj_Specular*0.5){\n\t rgb=(obj_BaseColor-obj_BaseColor*obj_Metallic)*rgb;\n\t v=pathtracing_cosineSampleHemissphere(rngState,n);\n\t } else {\n\n\t float r2=obj_Roughness*obj_Roughness*0.5;\n\t vec3 vndf=pathtracing_SampleGGXVNDF(rngState,vt,r2,r2);\n\t vec3 nv=reflect(-vt,vndf);\n\t\n\t //Sample direction back to camera space\n\t nv=nv.x*ot+nv.y*ob+nv.z*n;\n\n\t float FH=pathtracing_schlickWeight(dot(n,nv));\n\t vec3 Cspec0=mix(vec3(obj_Specular*0.25),obj_BaseColor,obj_Metallic);\n\t vec3 Fs=mix(Cspec0,vec3(1.0),FH);\n\t rgb=Fs*rgb;\n\t v=nv;\n\t }\n\t io=p;\n\t d=0.01;\n\t }\n\t } else {\n\t rgb*=$hdri(pathtracing_equirectangularMap(v.xzy)).xyz;\n\t\n\t break;\n\t }\n\t }//for(int i\n\t if (ii==$MaxRefIte) rgb=vec3(0.0);//did not hit any light source\n\t\n\t}\n\n\treturn rgb;\n}\n\n\nvec3 pathtracing_taa_$name(vec2 uv) {\n\n // Init random\n vec2 rndgen=(uv+100.0)*10000.0;\n uint rngState=uint(uint(rndgen.x)*uint(1973)+uint(rndgen.y)*uint(9277) + uint($TAARender*100000.0)*uint(26699));\n\n vec3 o=vec3($CamX,$CamY,$CamZ); \n vec3 t=vec3($LookAtX,$LookAtY,$LookAtZ);\n vec3 u=vec3(0.0,1.0,0.0);\n vec3 c=normalize(t-o);\n\t\t o=o+c*$CamZoom;\n\tfloat planeDistance=length(t-o);\n vec3 cx=normalize(cross(u,c));\n vec3 cy=normalize(cross(cx,c));\n\n vec3 rgb=vec3(1.0);\n\t\n vec2 xy=uv.xy-0.5;\n\n vec3 v=normalize(c*$CamD+cx*xy.x+cy*xy.y);\n\t\n\t//DOF focal plane\n\tfloat fcs=dot(v,c);\n\tvec3 focalPoint=o+v*(planeDistance+$DOFPlane)*1.0/fcs;\n\tvec2 rdisc=pathtracing_randomPointInDisc(rngState,$DOF);\n\to=o+rdisc.x*cx+rdisc.y*cy;\n\tv=normalize(focalPoint-o);\n\t\n vec3 p;\n float d=0.01;\n\n vec3 io=o;\n\n int ii=0;\n for(int i=0;i<$MaxRefIte;i++){\n \tii=ii+1;\n raymarch_$name(io,v,p,d);\n \n vec3 n=normal_$name(p);\n \n //View direction to tangent space\n vec3 ot;vec3 ob;pathtracing_Onb(n,ot,ob);\n vec3 vt=vec3(dot(-v,ot),dot(-v,ob),dot(-v,n));\n\t\n if (d<$MaxDistance){\t\n //if (length(p-o)<$MaxDistance){\n vec3 obj_Emission=$mfsdf(vec4(p,13.0)).rgb;\n \n if ((obj_Emission.x+obj_Emission.y+obj_Emission.z)>0.001){\n rgb=obj_Emission*rgb;\n break;\n } else {\n float s=pathtracing_RandomFloat01(rngState);\n\t\t\t\n vec3 obj_BaseColor=$mfsdf(vec4(p,1.0)).rgb; // 1 - BaseColor (r,g,b,sdf)\n float obj_Metallic=clamp($mfsdf(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n float obj_Specular=clamp(max($mfsdf(vec4(p,4.0)).x,obj_Metallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n float obj_Roughness=$mfsdf(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\n if (s>obj_Specular*obj_Specular*0.5){\n rgb=(obj_BaseColor-obj_BaseColor*obj_Metallic)*rgb;\n v=pathtracing_cosineSampleHemissphere(rngState,n);\n } else {\n\n float r2=obj_Roughness*obj_Roughness*0.5;\n vec3 vndf=pathtracing_SampleGGXVNDF(rngState,vt,r2,r2);\n vec3 nv=reflect(-vt,vndf);\n\n //Sample direction back to camera space\n nv=nv.x*ot+nv.y*ob+nv.z*n;\n\n float FH=pathtracing_schlickWeight(dot(n,nv));\n vec3 Cspec0=mix(vec3(obj_Specular*0.25),obj_BaseColor,obj_Metallic);\n vec3 Fs=mix(Cspec0,vec3(1.0),FH);\n rgb=Fs*rgb;\n v=nv;\n }\n io=p;\n d=0.01;\n }\n } else {\n rgb*=$hdri(pathtracing_equirectangularMap(v.xzy)).xyz;\n\n break;\n }\n }//for(int i\n if (ii==$MaxRefIte) rgb=vec3(0.0);//did not hit any light source\n\n\treturn rgb;\n\t\n}\n\n", "longdesc": "Type - MFSDF Render\nCode - PauloFalcao\n\nPath tracing ray marching node for MFSDF objects using a environment 360 HDRI image\n\n", "name": "MFSDF Render Path Tracing Buffer", "outputs": [ { "rgba": "vec4(pathtracing_$name($uv).xyz,1.0)+$input($uv)", "shortdesc": "Iterate Buffer Output", "type": "rgba" }, { "rgba": "vec4(pathtracing_taa_$name($uv).xyz,1.0)", "shortdesc": "TAA Render Output", "type": "rgba" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 50.0, "label": "MaxDistance", "longdesc": "Maximum render distance", "max": 500.0, "min": 1.0, "name": "MaxDistance", "step": 0.01, "type": "float" }, { "default": 2.0, "label": "MaxRefIte", "longdesc": "Maximum reflection iterations", "name": "MaxRefIte", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "12", "value": "12" }, { "name": "14", "value": "14" }, { "name": "16", "value": "16" }, { "name": "18", "value": "18" }, { "name": "20", "value": "20" }, { "name": "25", "value": "25" }, { "name": "30", "value": "30" }, { "name": "40", "value": "40" }, { "name": "50", "value": "50" } ] }, { "default": 2.0, "label": "MaxRayLoop", "name": "MaxRayLoop", "type": "enum", "values": [ { "name": "16", "value": "16" }, { "name": "32", "value": "32" }, { "name": "64", "value": "64" }, { "name": "128", "value": "128" }, { "name": "256", "value": "256" }, { "name": "512", "value": "512" }, { "name": "1024", "value": "1024" }, { "name": "2048", "value": "2048" }, { "name": "4096", "value": "4096" } ] }, { "default": 6.0, "label": "Precision", "name": "Precision", "type": "enum", "values": [ { "name": "1", "value": "01" }, { "name": "2", "value": "005" }, { "name": "3", "value": "001" }, { "name": "4", "value": "0005" }, { "name": "5", "value": "0001" }, { "name": "6", "value": "00005" }, { "name": "7", "value": "00001" } ] }, { "default": 10.0, "first": 0.0, "label": "BufferSize", "last": 13.0, "name": "Size", "type": "size" }, { "control": "None", "default": 1.0, "label": "ReFrameX", "max": 1.0, "min": 0.0, "name": "ReFrameX", "step": 0.01, "type": "float" }, { "control": "None", "default": 1.0, "label": "ReFrameY", "max": 1.0, "min": 0.0, "name": "ReFrameY", "step": 0.01, "type": "float" }, { "control": "None", "default": 0.0, "label": "DOF", "max": 1.0, "min": 0.0, "name": "DOF", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "DOFPlane", "max": 5.0, "min": -5.0, "name": "DOFPlane", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "TAARender", "name": "TAARender", "type": "enum", "values": [ { "name": "true", "value": "$time" }, { "name": "false", "value": "$input.iteration" } ] } ], "shortdesc": "MFSDF Render Path Tracing" }, "type": "shader" } ], "shader_model": { "global": "", "instance": "", "longdesc": "", "name": "" }, "shortdesc": "", "tree_item": "PF/MFSDF/Render/Render Path Tracing Realtime" }, { "display_name": "Neural Fox", "icon_data": "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", "name": "SDF_Neural_Fox", "parameters": { }, "shader_model": { "code": "", "global": "//code from https://www.shadertoy.com/view/3lyfzw\n//Made with this wonderful tutorial https://www.youtube.com/watch?v=8pwXpfi-0bU\n//Using Ida Faber model - CC Attribution\n//https://sketchfab.com/3d-models/stylized-fox-92c2a35e54664974b8564c674cc712da\n\nfloat paulofalcao_sdf3d_generator_neural_fox(vec3 p) {\n //sdf is undefined outside the unit sphere, uncomment to witness the abominations\n if (length(p) > 1.) {\n return length(p)-.8;\n }\n\tp.xyz=vec3(-p.x,-p.z,p.y);\n p.y=-sqrt(p.y*p.y+0.001)+0.01;\n //neural networks can be really compact... when they want to be\n\tvec4 f0_0=sin(p.y*vec4(1.627,-3.273,.822,-1.929)+p.z*vec4(4.114,.716,-3.074,2.185)+p.x*vec4(2.235,.937,3.908,-1.072)+vec4(6.915,3.461,-1.359,1.899));\n\tvec4 f0_1=sin(p.y*vec4(-.001,-3.255,1.831,.966)+p.z*vec4(-3.328,.890,1.475,-.323)+p.x*vec4(.290,-1.169,-4.054,3.146)+vec4(-4.517,-2.674,6.099,.070));\n\tvec4 f0_2=sin(p.y*vec4(3.113,-1.089,2.397,-.459)+p.z*vec4(-4.309,1.202,1.134,2.052)+p.x*vec4(-1.018,.550,-3.955,4.027)+vec4(-7.136,2.863,-1.640,-5.590));\n\tvec4 f0_3=sin(p.y*vec4(.343,1.509,4.401,-1.962)+p.z*vec4(1.198,1.852,2.207,-4.658)+p.x*vec4(2.067,.056,-.156,-.631)+vec4(-4.943,.051,7.095,3.128));\n\tvec4 f1_0=sin(mat4(vec4(.234,.264,-.181,.015),vec4(1.018,-.023,.417,-.338),vec4(.527,-.030,.056,-.005),vec4(-.843,.446,-.139,-.079))*f0_0+\n \tmat4(vec4(-.512,.346,-.264,.380),vec4(.135,.249,.118,-.188),vec4(-.110,.210,.101,-.157),vec4(.126,.259,.262,.446))*f0_1+\n \tmat4(vec4(.595,.318,.262,-.279),vec4(.802,.891,-.050,-.347),vec4(.131,-.369,.420,-.025),vec4(-.217,-.197,.152,.931))*f0_2+\n \tmat4(vec4(.522,.906,-.530,.246),vec4(.685,.684,-.106,.175),vec4(.437,.507,-.459,.127),vec4(.342,-.398,-.243,.008))*f0_3+\n \tvec4(.376,-.814,1.500,-1.007))/1.0+f0_0;\n\tvec4 f1_1=sin(mat4(vec4(.124,.489,-.159,-.094),vec4(.099,.611,-.257,-.614),vec4(-.108,.309,-.121,-.389),vec4(.049,-.606,.030,-.723))*f0_0+\n \tmat4(vec4(.511,.456,-.645,-1.008),vec4(.009,-.461,-.198,-.754),vec4(.978,.413,-.641,-.412),vec4(-1.068,-.308,.291,-.170))*f0_1+\n \tmat4(vec4(.428,-.220,-.163,-.356),vec4(.744,.548,.221,.563),vec4(.242,-.214,-.224,-.567),vec4(.391,.045,-.061,-.186))*f0_2+\n \tmat4(vec4(-.001,-.252,.747,-.435),vec4(.539,.003,-.305,-.643),vec4(-.261,.164,-.336,.295),vec4(.383,-.395,-.136,-.008))*f0_3+\n \tvec4(-1.007,-1.304,1.076,1.194))/1.0+f0_1;\n\tvec4 f1_2=sin(mat4(vec4(-.502,.308,-.174,.023),vec4(-.560,-.534,.624,-.555),vec4(.309,.630,-.122,.310),vec4(.368,.878,-.206,-.350))*f0_0+\n \tmat4(vec4(.684,.334,-.702,.420),vec4(-.698,.960,-.053,-.676),vec4(-.272,.365,-.074,.407),vec4(-.375,.202,.532,-.207))*f0_1+\n \tmat4(vec4(-.116,-.269,.153,-.453),vec4(-.530,.488,-.724,.065),vec4(.405,.667,-.642,.043),vec4(-.103,.430,-.562,.346))*f0_2+\n \tmat4(vec4(.472,-.026,-.433,.070),vec4(-.210,-.057,-.253,.310),vec4(-.344,.047,.386,.552),vec4(.246,-.111,.331,.350))*f0_3+\n \tvec4(-.725,-1.197,.825,-3.455))/1.0+f0_2;\n\tvec4 f1_3=sin(mat4(vec4(.027,.173,.253,-.822),vec4(-.478,.458,.101,.045),vec4(.025,.248,.759,.184),vec4(-.317,-.014,-.077,-.353))*f0_0+\n \tmat4(vec4(-.283,-.201,.219,-.248),vec4(-.571,-.458,.401,-.226),vec4(.432,.245,-.160,-.065),vec4(-.421,-1.315,-.569,-.520))*f0_1+\n \tmat4(vec4(.313,-.258,.291,-.284),vec4(-.732,.295,-.087,-.441),vec4(.836,-.701,.566,.889),vec4(-.116,-.252,-.542,-.396))*f0_2+\n \tmat4(vec4(-.381,-.907,.516,.431),vec4(-.273,.257,.027,-.179),vec4(-.214,.077,-.130,-.282),vec4(-.368,-.270,.618,-.041))*f0_3+\n \tvec4(2.580,-.950,1.416,.227))/1.0+f0_3;\n\tvec4 f2_0=sin(mat4(vec4(.288,.277,.179,.290),vec4(-.968,-1.492,.495,-.421),vec4(.153,-.177,.580,-.388),vec4(.971,-.335,.007,.032))*f1_0+\n\t mat4(vec4(-.194,-.137,.202,.157),vec4(-.160,1.025,-.550,-.053),vec4(.485,.030,-.537,.065),vec4(.021,-.384,-.109,-.452))*f1_1+\n\t mat4(vec4(-.748,.241,.386,-.441),vec4(-.620,-.869,.559,.681),vec4(.367,.256,-.459,-1.047),vec4(.260,.241,-.793,.494))*f1_2+\n\t mat4(vec4(-.958,-.093,-.110,-.074),vec4(-.260,-.856,.521,.613),vec4(-.562,.079,.238,.056),vec4(-.413,-1.011,.118,-.104))*f1_3+\n\t vec4(.980,1.564,-2.935,-.589))/1.4+f1_0;\n\tvec4 f2_1=sin(mat4(vec4(.181,.166,-.082,.469),vec4(.474,.703,.969,.559),vec4(.998,-.016,.193,-.363),vec4(.452,.152,.543,-.394))*f1_0+\n\t mat4(vec4(-.711,-.586,.015,.459),vec4(.404,.538,.575,-.249),vec4(-.562,-.484,.549,.673),vec4(-1.160,.144,-.010,-.093))*f1_1+\n\t mat4(vec4(.663,.424,.164,.089),vec4(1.168,.000,.636,-.309),vec4(.088,-.779,.352,-.722),vec4(-1.071,-.059,-.089,.310))*f1_2+\n\t mat4(vec4(-.156,-.515,.176,-.125),vec4(.034,.431,.367,.228),vec4(.394,.263,.039,.195),vec4(1.077,.460,-.456,-.031))*f1_3+\n\t vec4(.495,.756,-2.986,-1.239))/1.4+f1_1;\n\tvec4 f2_2=sin(mat4(vec4(-.586,-.569,-.492,-.407),vec4(-.224,-.624,.373,-.080),vec4(-.216,.279,.704,.072),vec4(-.780,-.607,.575,.568))*f1_0+\n\t mat4(vec4(.070,-.760,.980,.566),vec4(-.124,-.326,.463,.559),vec4(-.297,.161,-.449,-.236),vec4(-.369,-.591,-.190,-.548))*f1_1+\n\t mat4(vec4(.054,.276,-.894,-.120),vec4(.795,1.111,-.473,.031),vec4(.387,.292,.974,1.024),vec4(.150,.184,.253,-.287))*f1_2+\n\t mat4(vec4(.435,1.658,.294,-.403),vec4(-.377,.175,-.493,.204),vec4(-.499,-.614,.119,-.557),vec4(-.799,-.168,-.481,-.192))*f1_3+\n\t vec4(-2.130,-2.233,-.605,-3.251))/1.4+f1_2;\n\tvec4 f2_3=sin(mat4(vec4(.884,.369,.064,-.009),vec4(.434,.437,-.618,.117),vec4(.046,-.601,-.376,-.182),vec4(1.130,-.913,-.029,.602))*f1_0+\n\t mat4(vec4(.314,-1.064,.861,-.572),vec4(-.633,.111,-.122,-.179),vec4(.277,-.615,-.069,.678),vec4(.109,.024,-1.124,-.553))*f1_1+\n\t mat4(vec4(.243,.009,.461,.333),vec4(-.624,-.670,.328,.350),vec4(1.132,-.523,-.099,.402),vec4(.183,.245,-.232,.186))*f1_2+\n\t mat4(vec4(-.057,.076,.660,-.139),vec4(.729,.450,.109,-.177),vec4(.088,-.111,.020,-.546),vec4(-.487,-1.286,.100,.117))*f1_3+\n\t vec4(.529,-2.910,3.311,2.936))/1.4+f1_3;\n\treturn dot(f2_0,vec4(.021,-.057,.076,-.038))+\n\t dot(f2_1,vec4(-.022,-.081,.064,-.063))+\n\t dot(f2_2,vec4(-.049,-.057,.048,.076))+\n\t dot(f2_3,vec4(.014,-.049,.060,.071))+\n\t -0.010;\n}", "inputs": [], "instance": "", "longdesc": "Generates a fox using a neural network using PauloFalcao code from https://www.shadertoy.com/view/3lyfzw\nModel trained by PauloFalcao\nMade using Blackle https://www.shadertoy.com/view/wtVyWK\nAnd this wonderful tutorial https://www.youtube.com/watch?v=8pwXpfi-0bU\nUsing Ida Faber model\nhttps://sketchfab.com/3d-models/stylized-fox-92c2a35e54664974b8564c674cc712da\n\nCode - PauloFalcao, Blackle", "name": "SDF Neural Fox", "outputs": [ { "sdf3d": "paulofalcao_sdf3d_generator_neural_fox($uv)", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [], "shortdesc": "SDF Neural Fox" }, "shortdesc": "", "tree_item": "PF/SDF3D/Gen/Neural Fox", "type": "shader" }, { "display_name": "Neural Standford Bunny", "icon_data": "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", "name": "SDF_Neural_Stanford_Bunny", "parameters": { }, "shader_model": { "code": "", "global": "//code from blackle https://www.shadertoy.com/view/wtVyWK\n\nfloat blackle_sdf3d_generator_neural_stanford_bunny(vec3 p) {\n p.xyz=vec3(-p.x,-p.z,p.y);\n //sdf is undefined outside the unit sphere, uncomment to witness the abominations\n if (length(p) > 1.) {\n return length(p)-.8;\n }\n //neural networks can be really compact... when they want to be\n vec4 f00=sin(p.y*vec4(-3.02,1.95,-3.42,-.60)+p.z*vec4(3.08,.85,-2.25,-.24)-p.x*vec4(-.29,1.16,-3.74,2.89)+vec4(-.71,4.50,-3.24,-3.50));\n vec4 f01=sin(p.y*vec4(-.40,-3.61,3.23,-.14)+p.z*vec4(-.36,3.64,-3.91,2.66)-p.x*vec4(2.90,-.54,-2.75,2.71)+vec4(7.02,-5.41,-1.12,-7.41));\n vec4 f02=sin(p.y*vec4(-1.77,-1.28,-4.29,-3.20)+p.z*vec4(-3.49,-2.81,-.64,2.79)-p.x*vec4(3.15,2.14,-3.85,1.83)+vec4(-2.07,4.49,5.33,-2.17));\n vec4 f03=sin(p.y*vec4(-.49,.68,3.05,.42)+p.z*vec4(-2.87,.78,3.78,-3.41)-p.x*vec4(-2.65,.33,.07,-.64)+vec4(-3.24,-5.90,1.14,-4.71));\n vec4 f10=sin(mat4(vec4(-.34,.06,-.59,-.76),vec4(.10,-.19,-.12,.44),vec4(.64,-.02,-.26,.15),vec4(-.16,.21,.91,.15))*f00+\n mat4(vec4(.01,.54,-.77,.11),vec4(.06,-.14,.43,.51),vec4(-.18,.08,.39,.20),vec4(.33,-.49,-.10,.19))*f01+\n mat4(vec4(.27,.22,.43,.53),vec4(.18,-.17,.23,-.64),vec4(-.14,.02,-.10,.16),vec4(-.13,-.06,-.04,-.36))*f02+\n mat4(vec4(-.13,.29,-.29,.08),vec4(1.13,.02,-.83,.32),vec4(-.32,.04,-.31,-.16),vec4(.14,-.03,-.20,.39))*f03+\n vec4(.73,-4.28,-1.56,-1.80))/1.0+f00;\n vec4 f11=sin(mat4(vec4(-1.11,.55,-.12,-1.00),vec4(.16,.15,-.30,.31),vec4(-.01,.01,.31,-.42),vec4(-.29,.38,-.04,.71))*f00+\n mat4(vec4(.96,-.02,.86,.52),vec4(-.14,.60,.44,.43),vec4(.02,-.15,-.49,-.05),vec4(-.06,-.25,-.03,-.22))*f01+\n mat4(vec4(.52,.44,-.05,-.11),vec4(-.56,-.10,-.61,-.40),vec4(-.04,.55,.32,-.07),vec4(-.02,.28,.26,-.49))*f02+\n mat4(vec4(.02,-.32,.06,-.17),vec4(-.59,.00,-.24,.60),vec4(-.06,.13,-.21,-.27),vec4(-.12,-.14,.58,-.55))*f03+\n vec4(-2.24,-3.48,-.80,1.41))/1.0+f01;\n vec4 f12=sin(mat4(vec4(.44,-.06,-.79,-.46),vec4(.05,-.60,.30,.36),vec4(.35,.12,.02,.12),vec4(.40,-.26,.63,-.21))*f00+\n mat4(vec4(-.48,.43,-.73,-.40),vec4(.11,-.01,.71,.05),vec4(-.25,.25,-.28,-.20),vec4(.32,-.02,-.84,.16))*f01+\n mat4(vec4(.39,-.07,.90,.36),vec4(-.38,-.27,-1.86,-.39),vec4(.48,-.20,-.05,.10),vec4(-.00,-.21,.29,.63))*f02+\n mat4(vec4(.46,-.32,.06,.09),vec4(.72,-.47,.81,.78),vec4(.90,.02,-.21,.08),vec4(-.16,.22,.32,-.13))*f03+\n vec4(3.38,1.20,.84,1.41))/1.0+f02;\n vec4 f13=sin(mat4(vec4(-.41,-.24,-.71,-.25),vec4(-.24,-.75,-.09,.02),vec4(-.27,-.42,.02,.03),vec4(-.01,.51,-.12,-1.24))*f00+\n mat4(vec4(.64,.31,-1.36,.61),vec4(-.34,.11,.14,.79),vec4(.22,-.16,-.29,-.70),vec4(.02,-.37,.49,.39))*f01+\n mat4(vec4(.79,.47,.54,-.47),vec4(-1.13,-.35,-1.03,-.22),vec4(-.67,-.26,.10,.21),vec4(-.07,-.73,-.11,.72))*f02+\n mat4(vec4(.43,-.23,.13,.09),vec4(1.38,-.63,1.57,-.20),vec4(.39,-.14,.42,.13),vec4(-.57,-.08,-.21,.21))*f03+\n vec4(-.34,-3.28,.43,-.52))/1.0+f03;\n f00=sin(mat4(vec4(-.72,.23,-.89,.52),vec4(.38,.19,-.16,-.88),vec4(.26,-.37,.09,.63),vec4(.29,-.72,.30,-.95))*f10+\n mat4(vec4(-.22,-.51,-.42,-.73),vec4(-.32,.00,-1.03,1.17),vec4(-.20,-.03,-.13,-.16),vec4(-.41,.09,.36,-.84))*f11+\n mat4(vec4(-.21,.01,.33,.47),vec4(.05,.20,-.44,-1.04),vec4(.13,.12,-.13,.31),vec4(.01,-.34,.41,-.34))*f12+\n mat4(vec4(-.13,-.06,-.39,-.22),vec4(.48,.25,.24,-.97),vec4(-.34,.14,.42,-.00),vec4(-.44,.05,.09,-.95))*f13+\n vec4(.48,.87,-.87,-2.06))/1.4+f10;\n f01=sin(mat4(vec4(-.27,.29,-.21,.15),vec4(.34,-.23,.85,-.09),vec4(-1.15,-.24,-.05,-.25),vec4(-.12,-.73,-.17,-.37))*f10+\n mat4(vec4(-1.11,.35,-.93,-.06),vec4(-.79,-.03,-.46,-.37),vec4(.60,-.37,-.14,.45),vec4(-.03,-.21,.02,.59))*f11+\n mat4(vec4(-.92,-.17,-.58,-.18),vec4(.58,.60,.83,-1.04),vec4(-.80,-.16,.23,-.11),vec4(.08,.16,.76,.61))*f12+\n mat4(vec4(.29,.45,.30,.39),vec4(-.91,.66,-.35,-.35),vec4(.21,.16,-.54,-.63),vec4(1.10,-.38,.20,.15))*f13+\n vec4(-1.72,-.14,1.92,2.08))/1.4+f11;\n f02=sin(mat4(vec4(1.00,.66,1.30,-.51),vec4(.88,.25,-.67,.03),vec4(-.68,-.08,-.12,-.14),vec4(.46,1.15,.38,-.10))*f10+\n mat4(vec4(.51,-.57,.41,-.09),vec4(.68,-.50,-.04,-1.01),vec4(.20,.44,-.60,.46),vec4(-.09,-.37,-1.30,.04))*f11+\n mat4(vec4(.14,.29,-.45,-.06),vec4(-.65,.33,-.37,-.95),vec4(.71,-.07,1.00,-.60),vec4(-1.68,-.20,-.00,-.70))*f12+\n mat4(vec4(-.31,.69,.56,.13),vec4(.95,.36,.56,.59),vec4(-.63,.52,-.30,.17),vec4(1.23,.72,.95,.75))*f13+\n vec4(-.90,-3.26,-.44,-3.11))/1.4+f12;\n f03=sin(mat4(vec4(.51,-.98,-.28,.16),vec4(-.22,-.17,-1.03,.22),vec4(.70,-.15,.12,.43),vec4(.78,.67,-.85,-.25))*f10+\n mat4(vec4(.81,.60,-.89,.61),vec4(-1.03,-.33,.60,-.11),vec4(-.06,.01,-.02,-.44),vec4(.73,.69,1.02,.62))*f11+\n mat4(vec4(-.10,.52,.80,-.65),vec4(.40,-.75,.47,1.56),vec4(.03,.05,.08,.31),vec4(-.03,.22,-1.63,.07))*f12+\n mat4(vec4(-.18,-.07,-1.22,.48),vec4(-.01,.56,.07,.15),vec4(.24,.25,-.09,-.54),vec4(.23,-.08,.20,.36))*f13+\n vec4(-1.11,-4.28,1.02,-.23))/1.4+f13;\n return dot(f00,vec4(.09,.12,-.07,-.03))+dot(f01,vec4(-.04,.07,-.08,.05))+\n dot(f02,vec4(-.01,.06,-.02,.07))+dot(f03,vec4(-.05,.07,.03,.04))-0.16;\n}", "inputs": [], "instance": "", "longdesc": "Generates a stanford bunny using a neural network using Blackle code from https://www.shadertoy.com/view/wtVyWK\n\nCode - Blackle", "name": "SDF Neural Stanford Bunny", "outputs": [ { "sdf3d": "blackle_sdf3d_generator_neural_stanford_bunny($uv)", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [], "shortdesc": "SDF Neural Stanford Bunny" }, "shortdesc": "", "tree_item": "PF/SDF3D/Gen/Neural Standford Bunny", "type": "shader" }, { "display_name": "Octahedron", "icon_data": "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", "name": "SDF_Octahedron", "parameters": { "r": 0.5, "x": 0.0 }, "shader_model": { "code": "", "global": "float iq_sdOctahedron( vec3 p, float s){\n p = abs(p);\n float m = p.x+p.y+p.z-s;\n vec3 q;\n if( 3.0*p.x < m ) q = p.xyz;\n else if( 3.0*p.y < m ) q = p.yzx;\n else if( 3.0*p.z < m ) q = p.zxy;\n else return m*0.57735027;\n \n float k = clamp(0.5*(q.z-q.y+s),0.0,s); \n return length(vec3(q.x,q.y-s+k,q.z-k)); \n}", "inputs": [], "instance": "", "longdesc": "Generates a Octahedron as a signed distance function\nCode from www.iquilezles.org/www/articles/distfunctions/distfunctions.htm\n\nCode - IQ", "name": "SDF Octahedron", "outputs": [ { "sdf3d": "iq_sdOctahedron($uv,$r)-$x", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "Radius1.r", "default": 0.5, "label": "Size", "longdesc": "The size of the Octahedron", "max": 1.0, "min": 0.0, "name": "r", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "Rounding", "longdesc": "Roundness of the object", "max": 1.0, "min": 0.0, "name": "x", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Octahedron" }, "shortdesc": "", "tree_item": "PF/SDF3D/Gen/Octahedron", "type": "shader" }, { "display_name": "QuadPyramid", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAD3dJREFUaIF1Wl/otVlVfp619/ksJkaDQGImjJIuoptKHGkKlRwbMxibxiAUwYEupIIIou4Cg2wgoosuuimJoSzSptH0opAM+qNGJpODoU4qNWJioSnNfN9593q6WGvtvc/5Ps93ft/vd8553/2uP8961rP2e/jYz72JpJk1s+Eu6Rju8jEcBMFjDAIunY8hCUSzZiSgY/it8zHcAUhyF4DWDAAAdwcJgCQBkqfeTr0ZTVJrZmaQem+n3iWRhOSSBECtTDof4zxGHOAuSSTG8OfPZ0ndzAAM9+dv3jqGn8dxPsZxjFvHIcGMAEZ4JgEgYGYgIJjxfIyw3swkhTPNLKxprc2Pmlk42Xu70duNUzcSoKDjGCSlCBmGO8lxHBBAGM1Ike4OqBlBmpkZJfT/+d+vx4VnLI0GopndOh+kNbN26hFUkpLOxwHQjIJ6a0aeTo2gGeOlmQny4Q4RjLPCK5d3a6dTYyYHEG4exxg+0j7rvUMebst11mhm3WxE/IQMU2tG9vMxhIxuXJ7k4T7GOPUmYbiMAgigd556/+YX3Ah/zAjwlKcZIGMGhsSt8+EeqctLHmNIOh/j+TMDIb0Zyd6stxbOBBxAGjkkkN2sNYNw6o2kSxyRDbh7f+7mTSmjCygDA7rLIRIkm7XWmhnjAoFggOGukb21CFjYQOYxkijQABgAI2HsJMF4eQzvvblrjCEo09gzjmkuIWkMP4arXgK8cerN2HuLcrLWrJuh4jCGB757azT6cDJAYpG7ZtaatWZhTSSxSoWBjvDLaAjHAgOAhGMMACeamfVm6nLpGA7p5q1zBDTQmN4aO8wlIh8uwdG/7UV3R6KbmQAAYwx3nXo79W6kNTZrEbQyHhLc/TzG+RiRtwjEyWxIcoWxJ7YoAJcC5T48rv22v/nMb3312bve8Mrhfj6yuqLKIwrNDGbDBwmCiuwDLsQVjZTUv/Z/zwU/kGxmQTsuRchJntAAj7QBSalh0/l8uNCMzQyEXALMYh0L9owjrfDg7o8++bFveuELAXy33/z352+F3SRbs2bsrTVYlCWJ3hogF+Rp9My2XAwInXprZjvPkByDLgE4j0EfElxqZBhWrE/Aj5HsGQ5rCEIYLUFQcrAk4Rf/7nO8+25IAOUaPqSgZjbjqffeWlTncB8u1xGRjfcLWgDYzGjsRkZyi+/cXdHCSLr7GC4ownkWaIxgkBBkZDClu7uLlBUNBEuG9cNdwi/9/ecAhsU0SHrpB/72sz/x6mCOMdz9/JxuFfRhFlRhRioDBMtcGUGX+s3zGYBVl4lYRpqGO4ue4hrNjKIgikFQ8UnUQLgh4BiDtU7isLWf/9AzAEABEPjn//1MQMzMghOjOXUmhlEdLSrYWNc1uisaBYB+89YhCEIFFWME/6ZpARtJUUny6vYEpAI7y2tMxAsyWm98+K8/ec/pBm5/EIRFg5OEyH4VffBsQnogiqQ3E+TKqxHoIW+iaLyESJAggECzjyAvBYtlqUeo3B1szYyMsyPjiH5P/sKHnmE/TRZNLqGCrwV8x5Mf/OLDry2+R5wLgcZaU7GiWUIrlsoiPo8RjjZjZDO0VAEgxUnIoeABumajiW5QDJbyBtnL8LYPfio7QP1cJIDpUu8GZOAjgmGnIplmaR4ZsFGh/BjeTy2oPYjFobh2XukIWgZIdLM4P5NgjIhEyGlsNCaHUtKjH3h65vLadgUAg9wVFkTVRQC5CCcjLskBuSc7A8Gzll36GMcYLoUFvU1oM1KZrdfs1NqNUw9VzMJo0FEcGcLr0fd/omxNDbtcYBpU7/FFf/yXGxGDgHsyyjFGeOUKozGqgR7Dbx1Ht2ZYwYCkIQFwz7cSfLQocSHkHQL3kdaeaokk3/LepwCIgFTFfacCnsqK6eGR8VdglcVxFciJxW0RsNtMU2YKweitsZkFkU9Z0qzwUBqutSTsOPKt73+qggwIQmJR810SwhNf+ewFnoDee5c8iGRWYDkAIFoBJjVBcg13O/Vs/CXLRLL3bM9GC0xb/d9a662dWjv1xokEgORbJ2wgSEhuC4gpsqyleOZT7rrrD5/wEkIQMjrWUD2B5Km3F5z6qfferJn13m6cem8J9ugUyLmw9EbEz7XkQFsyB9kyyWZ8y3ufSrUZLs1UM8uN1TvC3T38kdZjuBElpRHpa1VpYZIDRpC0lGToab0lkNh6tJRZc9Vx12hbCybzvvnJj09Dd3hePJYPu/VYLgHf+q73ff3ND8UoEwpFVUXRV1LekEbGGE6yn3qrT0uNSZLFQsvYcEMX/hj5pic/jokkcvkw0zfhHy2TYJol3EZRoRejlxjIGL63RSYiCBrN4an+phrIXliDVRBAVMis9RnHn3niXyqOleMFkjumIlTLGm3qwyylACSK+lb4tivMLhaNy1jizmjNWux81MbB6Ubvk/WrL2clLusXHCbhXYFkf5NznfnhJJtvefzJUNRmxIxoqP/o09N4gISZdUnuMEM3Kyq/oO945Yol3F0Jmx0wm7UsKZ3kM8FUH/j4CghWsw8hWddCr22li3hndlf4YtKQ0FMnTas5V8OCP9DSJnvkiX/KwMyQL/EkXJQxwUK66m/gfc9/LWO/6H7aj1VDAmKrIybSlDmXwQXs1FrvrbVGYwib4qUifrM59T/yZx9FxnWL0eImY6Q+nlasEciaxqqelziKV/0P3u2xI7JDYF9ihock2XvvUawhYyJgl/QTAcFD7/rH1VArTJfFyuy0s8yz/zOXXbGt0/N3laoARe8Xy1nMGhccDkWUUvj2PWNzHEM1v2Ceh//0IzUlXNL7tdKJrDP3h1JJTe+SSneY1QrKrYa5rYQEe/qQY9ysnOyOgIx1kVCzw2s3TfnOT/7JhzfIzAtvxKL53uwQRSvXT6OtGs1z11OSQ37jne85jnHENozHeDbnrBhr5vLsF2WhYooKizAVJS+Lbf6eVD47VcHJNhBceH/7Q1d8NmPPzNwUAdjz7i4L56pwuXUrxZbEH73h+wvNl1J2rrUDSUvBpX6fFUoD187fZuq0dtKu7nr8L0LVVX2iijhpb1aZZY5WTy/r5Yf7McZ5jHe+/vsKM5lrFMZW6BbLcAZg6tAp4d7z5c9Mc/ezV4Y0fUnZOnKPyHOzaMzNOyHmgdmlq1tp/V/l8PsPfq+7/+xf/dtKxQzCLjzTBNKyMHMLgZWN2EPQZvE3eMTObGUgJliScoDKvS1SsUvhx4jnOI9xPo7zMWKU02xEkku/95rvQa06m3FG2leksWKbknCfDTQTc9lr98eXfvp1xxhHjI7HOMYRQ+8xfAwfw4/87TbD7IuCMrwSIoO+ZfB3X/3SBZbpDHKzMuybQKyGiuhyu3hbQNb147/e+KDnQ9WGYz72dMCHu4ZrDLd5kCfgYkKSuyINNakuFfg7r/wuTn24FzI39HvplQ3s6elOnXeKfa26yGETrWlqBVR9zIBhXoOudCNZBUBZFVH+7R/+zuH+y//wH8zOU30F6djqoFIJ5LrGbvil9P7iG19Xg9tlQMIhrXNJDoJg7GQJmBsBzMRf8sNMkSpjEB57xb3bxZbyKQzueFEk9zadvRz5wiMPzgIhUVshRTDuwxeWojbGcJvLXOLwWilXG1Nul3ta9Y6X37MiOQ+12E67sBXEs1/97LSbl6c9+1M/tsG0+gEmbmMu9+GJ6vm0Pa+JsNgsyAVi68BH7tjAV8vIlL3j5fdc9OnlS423OZ3ww+cDuEMJ/OfDr71iVkFDs2TzEdU4fA42ANQ5e2pZ7zMJZf0sxNx2wsoYABK/ed89AH71o89eiKViUiDu892Z9z//0I+yNgwJUiIFv4LwlswCVaA9QBYbqxvXRBrnGwWqSd47L7HG/8fuu3deZbN+q4hrWOLTP/6qRY7Dxxhj+MU7nhuLO7Jnpblktc+DGqHW6lMdbePafB+12xUjXR7x2CvuxXbozG3Ks0v5/ckHf8S14FFMnzp0uB8ePWv3AJe/Famdree2OWhZUV29Brfa/11jSZj32H33fOHLn0ZK9Iu19gw8/cD9xSoa5YcWjHPLrkyvZSZAqrP3Ub5tCglXh8XZBoipaFBie0vsOvHx178KwK985NmZzIDhzMAnHri/Apc33FB3Fq70LbHo2daIuA4wz2QFPaVBc4LdT54PgBWAiJW7gqSTKCKcv/Gyb0cVgbTiF9bnmrPB1XLzjiaWP5hSagtIVrNla/LqtxXLbaJagxa39ydCFh4rk6Mkya//wIsn/N79pU8B+NfX/NC0PquoPCueyIwm0qd+3/zYU9AzSKkXUf9Wc5jlHX8Hi7rK19QCRNwHLI8qSHj7D74Ywq/98+dBPv3A/a0it+F5AwxXvcxwVoyYwrBmi1ilzzXqJF5YsP1g4n8JO+SgXT9XEqRioLe/7CXAS2xd+ZIwUIr1wrHlw6Z24q605oDWw4+N4hQQ3x/73lUcX/fKEOOJalsAjHcwBTkrM/sgLWBtzaXxt9m++0DCo9sRjLvUMb+r0xjpwVofW5CyohaZVTGYWeGfOdCXsVpz1xom9y6zqGZr1lfW7wWbPsyLUZlysRtNcBB+db5qprmafbd167ZP7l0kRlW3fGd4CyB3iPBKrnTpQ9HXpmonnEu5A+hmdDeamxD7WiUb1nyM2NaoZTPYcaxvIRXjmxBchEfVt872dl6cyorNxT3kRQ6LFJG322rTa/6RYo6Kb1NgBaSET2GKe2Y1GfQCBUBKLBrgicGFmwLSBvi8S4sJtkmDF0nnhQgPA0gI7LdL/7wAYGH+ltpC9Q6Pa1xEdh11R5STaCvy04m62uonUHw1aRL/nRVsGUOi1/7TKtD4JL6XVRnc1FKxTxYA5xupceMcAvHtv+n+1suvTWF8N+BCRV8arrzxPOM7H33+VRhIfCe9Fp3sSowALNC9pxR77cbnStBv3RyrcCeYr2zONnQV+92HzY1eIUAW0qyzSGvmY3ZcKJNejXhr2MGeAgQqb9BUAU3Zk1ZjmlMr4WqQXLvb1/y6W4QeMpcxCd0JeCv2qciYV1USMqLP19fyWHuXc6t+8n6GH/ndpfSh9E0FY3WPjLuufdD0DurcVq2GuvopNZlQOxEpup/izlFCXwGbzeepSa4IvlJ5mxxcSb0yd5o505D/9czrrMWtC1Wes+dtgcjgVTfYrrUrdcDD+WuTMDPF3Yc7Wp9ZvVh5R4itEvvGeqSY72KRvStd+pDnYOruuUG17crddolNX6xug9mOd1RtZqHbVFUV/OIfIJtfHZ5on52cq+Xe4REdBJfi4mLHTAW4TSKpBMl1Hd7+IkL0/38GCxJSvGyNAAAAAElFTkSuQmCC", "name": "SDF_QuadPyramid", "parameters": { "h": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "//by IQ https://iquilezles.org/articles/distfunctions/\nfloat sdPyramid( vec3 p, float h ){\n float m2 = h*h + 0.25;\n \n p.xz = abs(p.xz);\n p.xz = (p.z>p.x) ? p.zx : p.xz;\n p.xz -= 0.5;\n\n vec3 q = vec3( p.z, h*p.y - 0.5*p.x, h*p.x + 0.5*p.y);\n \n float s = max(-q.x,0.0);\n float t = clamp( (q.y-0.5*p.z)/(m2+0.25), 0.0, 1.0 );\n \n float a = m2*(q.x+s)*(q.x+s) + q.y*q.y;\n float b = m2*(q.x+0.5*t)*(q.x+0.5*t) + (q.y-m2*t)*(q.y-m2*t);\n \n float d2 = min(q.y,-q.x*m2-q.y*0.5) > 0.0 ? 0.0 : min(a,b);\n \n return sqrt( (d2+q.z*q.z)/m2 ) * sign(max(q.z,-p.y));\n}", "inputs": [], "instance": "", "longdesc": "Generates a quadrangular pyramid\n\nCode - IQ", "name": "SDF QuadPyramid", "outputs": [ { "longdesc": "Shows the rounded box", "sdf3d": "sdPyramid($uv,$h)", "shortdesc": "Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Height", "longdesc": "The radius of the rounded box", "max": 10.0, "min": 0.0, "name": "h", "shortdesc": "Radius", "step": 0.0001, "type": "float" } ], "shortdesc": "QuadPyramid" }, "shortdesc": "", "tree_item": "PF/SDF3D/Gen/QuadPyramid", "type": "shader" }, { "display_name": "Simplex Noise", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAIABJREFUeJyFm2lwZNd13393eUsv6MYODGaABjDD2cjBDMWhdnlI2bJlu2SVXY6spFIVlyMn5ZRd/pC4bFkcWeYwsT8kH1IRy45LcRw5jh0vcbwVpciSKFJDUuI2BJfhDAdAN5bBvgPd/ZZ7bz68B8wMJScX9aofennv3nPP8j//c5741//yl1w7TjDWkqQGYy1xakhTAwI8pVBSACClwBiLEAIlJduT85xwjpqwDEjFUG8f62s3eHr6bW4YQ/9PfhpjLVGScnKywdNRhB8ECOkB8LsnT/Dvb03R3W7Rg6FqLRXn6PY03YUCRc+nGSVsKo//fF8fSkmccwSeh68VCMCBpxWeVmilwDkskKQGJSUimzrOQWosDtBKAhCnBr2+sUaUpABoKRBC4AtB0ZdIKUjSGCzESUpkLKk1pMYihaBlDU2laCqfbe2xtv4GX33nJg4o/NCP0NzfpuPWLrW4zWtCEhTLJDPPAXDy5CP8m7dvMuQMgRLoFIS1hEFAuVymGIZIJK0Etn0faVrEscVTilbcJJICLSW+pyGVNFNDO0nRUoIAYx2eVnQUArRSJKnJ1qYULnUIISgpidY2wtOCgu8hJUghEAgQYK3FiGyx+IrUCpIUnJNY62gsv8xNIXADQ7xwYxqADiGILv0ALm1zppEQ2pQpP2D71rPcPRppikoTnOchlEJrTYgjCEMKHRV6+wdYXtukaeC1+Rew/Q9S8DTWJmgh8KRCCIG2BoUk9CSVQBEnBucc+2lMa9+ws51pMoC1mRZrKREi22yNaeNphU0SEAKLQ0mJA5rtGOcc7TjBOocQoKRES4lxlq7+IwAk9ToO6JKS+ZH3c+b6JkNxi0R7rGzeZMuYexZ/5tQjXL/xNLr2ASLfw2hNHEdYrSEsQqHE8n6b5Tjm1tKLDIZjnH17kz4h6ApCUuXzpZOaODEkQIogAhJjsM5lqu4cAoHI762kREqJVhKtwFqHw6FJ2+y20syc8kU6l+2+UhIB+EriewopBIW3YoK4yddbLRya0d0pImCt9wxrQuD2NrmuFNXOLph/ldQ5PKBDSryxD9HVXiCcvkqflDTZ5XZSwTOGMAyJtccegq0kJYqbzMxe5cVqN5f2UjoEVIIABaRJxM9dN/yvCyF77ZhmFJMai7UOKTMTts5hnaXga1JjSUxCs5VgjCXKfR0I9O2VFay1pMaipMhMQJBJSwqUVHhaYjwP31N0Fau8pBVlv8jPhCF9w2P4QrA79SxfPvYwzhrErW8z8sinWJx/laIQVKWkPPZBVHOeMNokBYpCIFSTnZk3mSuGFLsGEZXjKLNLa2WO+a1tVoeGeN9uSNlZuvyAgh/QNg4jMu/3ycmYvzwLBe3h8p1PTeZ0Y2ewaUozaqGUxBqLjwUt0GRmLaVE/PzHP+gAfE9lauEyB3GgSgdq72tFM0pYe32BU5XjjJiEjjSh5By+s/hC4vk+otDBU0HA+UJIUUpW9/fZso7F619HdHYRbW0iM+fNrTQlcg6AEaUYHB+nNTdHp3PEzlHpPcuRNOGop9kNCyTGMS49nCDfYYfzA758dBdPq2zjhCBKDOCIE0OUpph8gw8cocqdfZIatJICYx3tOOX0jM+Qiem2hnJQ4L+Ppcj8y+04zbSjegI/tyshJSZNMq9rUmileEnMj4cF0rhEob8f5ackrRaeEGxubuAJQVUIKlKyOjyMbDToEIJ30pR4ehoL7AnBESlpBSECENUq66lltt1mU6U86Pv5YjNBhr7GWIcUEikg9HRm30oSWH1o7wJBnKYY68A5nO+hTW433TcVVeUIcfjO0S0crThBAGmODZxzhLoMUpHahNQKlLO0koRQCAQQJQkyTfGiNmkSIRZfRRz/MPvOsWotJSFYB3xjGJ+fZ7pWY7vR4IhSLBlDj5SkwM2hiwzMv0iqNR1Dj1JotdizlmkhGJWSXqUy5xYEXHztbZ67/xjOucPdzs4dnpZAptHOWrRSSGFJjMVai3Y4dmdLjIYC3xm0kpR8n0LPAMZezxyf7xH6HqkxtLcFERbjBSQmyeKqlLTjGJt7W40jjiOESentOU3QavFVY9ixFp1HGAs0ciFopRg79Shb73yL24MXiBdepqgVA1KihEAmMf1SUhKCba1oSMGA5+GcxQrBehrx6dVe/rBrGYDUGJwD39MZYMqBUOAptJKHGp8ag3rPieEv+PsFerWiIBWh8uiqdnP1lb9luTaI72UIy1OKciGkvamoCEFBe/hK45xFKYVUCktmlwiRqZ9SFKSk7Axj8Sa3ctM58AEr1jJvDJtHH2Zv5iq9UqJ3FwmFwIU9VCuDlHSVDmcZUZrtJKVZLCKlYtzzkEISCcGDQTfFOOLBLZ+XO1Oc4xDRtpOUKD9acUIrTmnHCXGakhiDdA72k4TdNCUSAuf57CYJ34hjZA55D6AmOOTePoFUSClJECRS00YQSYX1Q1wQYj0PPB/pB4TFAqUw5FIQ4AtBehceCI5/GIDdpMWytTSdIxSCkhB0OIsfR0hr+J+zr/CnWzvYtM3FnQ3e19zBNPdJcewaQ1LuJOnqIejs5J+v9VIMfaqlAtViSMH38LRCSYmSgnacsNeO2WtHtKIE3Y4TtjffZrvnLGVjqArJxq1nMBdPs7Xfws9/LIVAzxcZLoSUpEBBBpykJDISi8MJ8KRCKYUTAq8QEhSLeA5mkrP8VPQqf9Bs4gnB1rH3QtymJAR2aTIztdyPbPfeT4hDG8PfrL5F7cgFfJvgW4sHBM4QJC2i1LC0/Salo+8lSddo7a1hjSEcGSG1FiOgqBQOR5pa4jSlFPqHUc45h27FCXG0z9ziiwip6T32Pl6OY1pxgpKCs9v9NNaW+VizzvbABLETeEJgXZYUISRoTZo4pADhLKmQ4Hm4QhlT7EAK8NB0FT5MV3UJYyzm+RcoSwkiE2ZNKbZ7z2Y5iQDPWl5Yu44deggpHBKJdI5ysUilXMZzgnY75vbuPmPA6423iY8epV7rxMUJxubmCIco1tMZmMv8hM3ulaaG7VbENrBARHHhO7x9/yjWWB56a44PeAvUeu/HFc5QNQlOK6I0JpEaKyVOAFLhlCWxDiUVeBrj+2xECS3RJN26xe7WIpFzXPrVP+PPf+PzmQmQwfSlnrOUg+CObeRhar0UkkqFKRSwaYRWCr+jgt/Zze7uDnPLrzKiFC+1WhT6Jgg/9zjen3we6xzKuRzUiUMhWOsOgZ7vkeUDYxd+zIHjscuXuXLlCjj4p1PPclxr3MB5KnEb36ZoBJG1uGKJpvZoIjG+j0Vk4Mll6lnwPII8LU2XXyHo7iV2jnfqdfqc47dr7+dkO6I4+wJFIZjrPsOYVowrjXGOgY3rdAjBnDGUhODvoggb+lzoOcYglo5oh86+AZ6fnmZg8AKi3aRkDT3GMFIoIIMSP5M7WRxcvvwYILhy5QqXP3/5jpAdXLlyBTF64UcdDhyOy49d5jv/7GOMDl1kyKV0OUPRGjyX5dBGSiLtsS0Ue1ITa4+YDDlKwFcaTIravcXKxhpHRka4Wa/TAvqsZd85Xk0S9p2jKARFIVjqOcNHg5DpxWt05Rigcey9JGnKh1eu8QHf549bLWaNoVsIEuCjA+cobN0EYL80SjksMFgscrRYpMNa1vfb/JXv07O5TrdWdIclZj/72Sw5EoIrT1zJMl5A/Jc/f84h4IkrV7jUXKZmSwwLR5dJKJqUslIESuF7PniaPSfYyI+WlCRSZOEEgacVZullNlsRqXO0gWFgy1pmjeG2Mez1T9C7+joSaDrHQO9Z2htvUxKCtnM0eu5Hr0wC0O46iZQKEBxXkgFrKJuUTs+jojRBoUC89DoO6Dz1KAPFIoNhQLKxyV4S8/TSPEUcnQiGS2Wuff43s13Pls7ly5czDRDA5cuXeePXP8eogH4MhahNVSmqQUAxCPB9H+EHbCaGpcSwJSVrcUTLGIRUyK23sXGTav8gqXPoRoNt52g6x7wxOGDTWtatJe45w8DmDXqk5FaaMqo1APU0Jek5gzEJnZ3dWahNDdYanLMMBwE1pRgJAkoz38U6RwsonH4Ul6YUPY+KVFSkQMcJbWd5daFBl5IMhwVKMuDjxhxqe6YBf/Gcu/L4FS4mCfcZw/FCSJdJKJuUqqfpLncwOjLCXjNiO45pbG6ylBoWl19hzyREObjpGxg6YKiQjQYt54icY985poFmmnJMStasZbE0SmFvhhGlEDkqNM7R6J8gau3TPzDAzo1n6b3wo9nn1oJz9HqKT9x/P61bUww4wUYc0XKOdmrQ6RrRxixlrfCspSg1HT0TvLY0S7fSjJZLFIzkmc9+9tA/XLlyBX3m13+Vx574bZ66fBldCImAFoog8LGFAlEQ8tbiCrtpyt7+Lb49PU3DGCojI8zU6wRCcHp0lGszM/jAcSFwQJpzc23nKDvHca3ZdY5ACEIlMYMXUKuvI3JkOD34IGLhJUrH3sPOjWcZeviTmHy3Mq4PSlqxXJ+l5vnYKMLlocyLFtjevM32fptVIThZq+GEYGv5Zd4z9DDzq7cJ/QCFh8sXnmVZIL596pL74ux32SoVONkzSo/fS49SVJQi2HyTQrWT12dmWE0SriUJkKWuXh5eXneOcp5kHAOGlcLPw5sF5o0hBbpGLpIoxY4UzO/tMbr8BiZfvABupiny2EWqnd34gY9Js8VLkdFXDseFMOSM5zOGY7vVJpKS7Thmb/G7LO7sc7RWy3GEYLnR4NzYGHpnl0LXWbq1Yz0V/MTGxmEgeOzyY8i3lq6xZS0b+y2WRJM1M89iMsvXb36LVwtFfu/6db7WbNLMQQXArDFMpSlTaUrRGPqlJE5TZvOEB8ATgkAIhsfH0cBWnNASguWbVylUeykKQcu5e6BxWCzRarXY39/HWJNxksaQpil9CHqco08IAqXQQmBNill5lbXdJsdqNVLgnXqd2DmGarXsPG1nYMs6XvqlX8y5wOx+T1x5AvFzxaKbTlOmTj3CB5LZO1ikXqcgBG8Gx6g0G/xDww08gFh+g1Gtqacp/UrxsOfRKQRaCDatxQAvddxHuv4m67mAAMa1ZjpNM8ZICAywVS4gdEBQrOAqx9FKExrD2TDkrOdx2veJ0pS9JKG536AtEvaco+UcNBqkeT6xAJkGbK3TWRliZWOOf1G4D5dD4McuPwYOtANmTn8UieNjj38psw8c7x+FmxuaytZNor4JgtXJ7ysAIQQntcbkprEiBLXxcY4Q4BeOohDs33yaB9t1fjf/zWmt2XeOvQOomr+/ZAxs71GRTbzNTYQn0K0WI33nGZaCo0rmhIbFCYh2lpne3GEQaFtL7FyWPgNnZcZnGmMhPEKHXuLLSnHrc5/LhIDjyuNXUJ1CfOGX/uPvc+nSJYSAbz3zDKfimJWNJkHgIfZXqUVrbPZfQO4vHS48qF1EdAxgb79GkDu+1VLIxeEPcM6FjJa6CKI2dn8PUejDdQxxKlpn1hhmTMbmBqOjrO7sUIGMV3SOTimpCMGitXjb25yMIu6rSoaiXXShG2cdFkdz+RqzG1t0Ocd6LszUOVR+rZIQLG1vc+z4R+j0PDy/l+nNFXpfeIG9H3gEIQSXHrmEqE18PMeBgIPR7U3k0jU4MkG1UmX7xrO0e8/h+z7y9suHAvBHHsJay/jS6yTAQqUT1XWGRxZe5L2exxGlMkqdLMQlA+dpIZldeJE/a7XYv8unADRzhqdoDFUp2baWQaUo5zv6sO/T212lq9JPsreJqFRYmp5m3lq2rKXtXJZGS0mPEOwrxdlTjzLWWSVs7bO+uMTV3U185+jyA7rLnfyT1KDdXRM5vreNW7qWLdAP2b6RFTPCtdeJ+8/j7jKFeDYTRqI1i33DeF5IRyZD9p1jx1oEsD54AWcdjsyb90jJvnNUzvwgUkqUUqxPfiVzpuPj7M/MsG0tcuR9bPs+G9bS03iBp6OI8tIqP7CxTUlKnllcRApBMjJCG2jU63RZS6e1dHgewycvUVawfHuW/d1dEge1rj7mttZpm5S0tcNfBR2I3/vTZ13UjvjLx38TO/sdANTwQwRBSPPW1Xt2KR14EL386uH/x5QiEILFwXGa8zd5n+9TFoKzWtMpJSoXiAIWrD0Mj+vW8rdjH0JrjRCCOInZeevrNJWiaAz++IcQiAO9pFx//hBkRXdt2N1aVMg1ZVVKHpaS01pTU4oAUELwTuUEgfYItIcvJJ1JiwE/QN94+warq6v4nk8bUMMXUVIhheTdw1jDcaVoGMNxrbFACphoD8icWYcQbOfkpAZMPvHYObadY1ApYuBjM1cxZEDpqXYbgA5rKUpJlBtlPJNtQKAUi8YgcyLjwGSOOYcnBDNAKY82RWN4M0+cArL6QygEI9vvMNt9GpXGFJTGekWC0EP0nfgBd2HrLVTfeaKojVJZMcT3PHZvPvM9QjgY92mNyHfhQFRjWnNGazSZIzoAQ7FzFPIwl+aT3rAWmwsn88rZeTHHDwoOr2vzw+UCXzGG/5EkjNZq1BtZiB6t1ViZnj7UokeDgH4pKeZM03zlREa3SUlFKTqkIhA6Y4WFTbEuKxUJIZEqY2p6zv0QBzXo9df/HgYeoNVuM7FfP2R2izmqSMY/RCtJmHWWjjSmYC2+c5xpZsAkcY6tnKSwQOfwe3FA9+2XCXP1zdEpt/omQNwxH09knMOxlUkMMKYU5zyP6aUlvnaXEPrHx6k3GrzH86gKgc6vpwFpLUpkr9I5PE/gC4c+P3Geradeomod2tM4a7O8WWbTcc5lxQ+A5Tcw5dE7O5cfC6Ui5SSlpD0iKSgIIIlRJmUmOIZyGZ4/KFAq7TG09Cqr1mIGz7OfJ6jOWZwx9JiYYD2j5CUQV+/LCM3u04c0XEFK7nOS86uv8YtAvdFgtFbjB5ViSCnCXHC+EMwURwmsQQvwpSQUilAIlDWIH/ypX3Q9b/0968uLyL4HAdBa4fseWimMSWk1m8RRmyiKOL1z69AMZG7ji8UAoUO6ex7giNYMSkF30iZsNglNQgGBFtluKpERrFJkwghyYoO7NCDuOgl5iU5KgRJ3ytm5X8xLY5A4SRIELM19hy3n6Mg17GDnZws1PGcP/UFXEFD1PDqDkDSx6MnXJxmbz6S35USuBY5AKIpSZWXrJEYCaW737q7Fz4UB3b0DAGwvv4Q3cBElBIFfQFkITQImRePwhSBQGi1ELgQB/fdz4MyFyKjropRIpZBK5pyewFmLdRZnsxKXsYY0tYjUIKOI2viH6a4/R1UIWsDN0ihxklBwBg2EUtLheXT4PtVCgUAqtFboA2qo3mggaTA08n46CyE+4JKEQGo8v0BiUloiQZFlbvefvES836TSrmeTbzQo1mpMTX+boG8QWT6O8AI8pfBMglKSQEoKShFIia81xtjD1hXrQCqJ73kopVC5HzrIBJ2xGTGSF3ClsQhlkJ4jShL83Lm1ncP0TzDQ2mM3TUmERApJqBVFz6ccBoTaQyufFIE+f/48XWr5UA31/It0VDtxUiO6T9OOIoq+zxwB75u5Sv/4h/jI/IuI9h77Xd1c2ygSz84ihcDNzkKtRiQEKyuv4A9exPN8tFCEwlLwNGGxyPgv/ALr//UPMMaRWIvIW29AYKTAC0KEkjjrUDorjzlrMEmKs5kWGGsRSYpyFuX5OCWJRj9Atf48bQeB5+EJ2EsNFvByIZT8AK08VBCy3XgOLYTgGY4w0ngBgPdozWB3F1P1Oseq86iFBqNKMaAUUecJwu11wu6ToDXracJA5TiLKwuHdtcxO8vrOSzVyy/jHXkYJSUlPyT1NIkOWfjyHyGVR2xTdqM2CQ67W8fYlKDcx67rRgCB5xNKHyVAIRFK47BIBdJYpMscp5QO4xwSx/74h9E7O2iliZ2lldcJdW5+0gJasdVus9fdi56cnDzkzkdrNcY9j/lGA6/2fnqTmP6+EmVjKGhFj+dTCHw87SGDkMA4VqKYlpSsWnvgnzgFRCMj3Jydpc/Os7YTISvHEQQY59iJ2kgp2V/4LoWuHmJg+nadkVqNKN1Eppu0NtcoDL0P2W7jS0G1UCTQCi0V1mZdbCavSVgs7aiNlApnDKHvg3HYBGJjMc5RVAqdV4hTBFPTV/lXvefQE+cnsrB3fgJe+wrIo6x2R1xA0O97VLBUCooO36cUBPhaU612Un7kUdTXvs7Q3DWuCsG6tbRyQOMBVTKQNG8MrC/RUy2yurjKroNWK2KkVuPm1g5Hql3EzhEMD7NsLbONBopsx05U3yHd2qB45GGiVpPAQSnw8YSkHUeZNxaC1Bpcax4rNH75GJ6zGCQ7ScyeMXgya6/DOtpRimvfxB47Bq0sUhwOv2V4iTpdhWE6fA8XtdF+kHVW+SFeGHJ0ZAR+5h+z9sUnSZKUSlFzvFbDn55mwRi8HAGaep0e53irXufU6CjPTk0xkGd3CmhMT2cAKafMsqYm8IaHkcBCo8HazAwhcKZzipnZWY51dREVKnhSYOMIm7TBJhS6+3ChRGFJW4v09N3H1EKD5SgiRlAmK9tbB2FHmWvT1/jl3nOAQ4u7BPBQ5wn++ObT9I8PkxiD0D5OCqSnEZ6Pk5rV1XXEk79DK01Znvsut8slpqam2Moh7q5zXB//EMP15zkKXBCCLeeoG8OKtUyMjaGA6UaDoVqNm2l6mC8cEKQLjQYnRkepz85ydnSU56an6RCC3fV1To92sDibaQnAcK3G+vQ0G3n22Sslruc4k7u7uOYsSbGGtJZQSpxxxEB07BiXf+Vyds/B0486geBHlOK8S/njmRd4qLOL0d4HOCIkg4WQonN0+D7lMERLSZKkbK/f5MX5Kd6JIuaGh4nqdVp5b8+N8azsfWr621SkxOMOjvdy9XZAIT8/yBk2rc3QG3AAj86MjlIVWaNVhxCszs5m7PPoKPVGg8g5ekdGWLWWp6ezXsUeIfhhrdnsPk13EjPieYx3dEACxi7xnd94Mr+6Q5V7xr4wMvsCE13DvNHco9pboLtUhLU6pcoQLkny8rgktYYoSdlbucZOoLmxuspbaUq6tYUFWoeLz3xB7+ZcZmM5OoM79NeatWw7x6a1bFjLZk5q7DvHjnN4+dGxs0Nza4uVSoXb1rLd0cEbGxu8sr5OwVpeMIbWxgZblQrxxgaeczysNd+IYwYGTtBhEoaKRYYqVbT20WHEz33tBS5dugQINDjODNT4brtFT7gDwPWZGT44Pk59+iqnqmWafgGnfFTSotzVzRurq7TSlIYxDErJorWHaeq5iXMAeC/9Pe08AzxQV/LzjbuI0f/fWBv9IO2pZ+kHwkaDm11nkT0P8Lbn401MUATcjW/SqtcBGFCKbecYU4pW4zuI4YsUymUKHZ20Wi3eeLvOn42M8I+uXAFADJx6xF30fPZ2NmmtvsForUYAtObm6FWKB8fGqAjByuwsx3OqWVnLbWPYtpYRpfhmHFPKGWABDCmFzHf5QMUP7NsXguV3dY7+Q6N06hGssRypP8cbznEGuNl1P1pr3swptImJczhg4MbT1BsNisYwrnWmTd39XBp4gAuFAoOeRzT/XTYrVaYaDZL/9OcIQP14X/iFli2Bcwz1ZDX6qTyz2treplytEgNLm5vMbm5SHB5mdn0dhOCoUvRIyVQujIOxm6txStY+e5DqBnlFeOsf0IC+Cz9Gc+mdw//9nlGcc2yWBznSpSnt7LC9t4gc72OgaOg/8SCTk5MsLy9zXLfo7OxkYHeXTWs5Pv4hdv0Wvezhr9cpqBZJGPJamsK/+wMOtkXWGw1Sk6L94J7JtJxjOy9mLhvDgjGo4WGem57GF4J+KemTkoqUHJMZdVEQgnePZWPokJKNvEVuJk2/5zsAvRd+NOs1BDpOf5TifZeyDwR4zaxesfXAAzAxcfgbh+PcuXOH1BnAG86xIARb9efxGw2enppis6PCt6enmTGG3tu3D6+LAFn5sc/Qo1aw9s5FRms1LHCkVqPpHG/U6+w4x16+c0UhqAhBR37UtKZbyqw48X1GffACkHn501rzQd/n0SDgw77POc9jUClsmtKOIkr9RyjEdcpmjlI6S+udZ2itLLBSLrP6Ls3JWGrHxLlz/J9W5z2fve4cQ0qx5RwvJwmrQ0Mkc3Os2ZzNyMkMfSC9Lplx/gfEQibhO3SUJlPhSk52BiLrFSoJQc/xj9B345ukcFjsCIGqlHRJSffKJKnvczQnKdesZVRreoRgxzlmjeHmO8+wYi07zrG97hiu1VDAyPHjfGV6mkekZCUXgFIZ5PWFOCRGnXN8tVnlVC6ABNgcHuZ9Cws85Puszc5SrNX4bLsLHn88yzQBjXN8M+1jbOGlw4UDzDQaBCKrtB4sviQEA6OjtHOPK8nieK/nUVOKqpSYvAJclZJeKdmyln4pWbaWhjFZG40Qh3jghFL4QjAwMsLz09OUraUN7MzNUcqZ5H4pifM5RM5xtLOT2W9+kzZQEZOZEAYf5MF+A/3307+3Rz3vT3grSViZmiIUgrei6I6K5LBd9B7/sBMAd9nvo3qVeqNxONmDdpayEDwwNpahspkZakpxVCnk+R+l/9QJ/uarTxGuv00lR4Sb1rLrHKO5x55KU7ycpe3PS1cntOZ/t9vEeT/BVv66aS39eTRZMobuCxd4ZXKSyDn6tOb08DArOfABqEiZFWZzH9G/t3ePSVx67MnD8yeuXLkHed5hZvPjm0kvo7UaCbDjHD0jI/SNjGT1vLzXp3NsjMLYGMtC0CME89/9Dme23mFIStou6wvezsnQKWNoGEMx16KOPB/ozCf9XP55wxgS5zBATy4g4JA0Vfm5I8s1+sfHDytKO9YS953nEzczDLlSLrNSLnP/T/wEjzz25GEoBnjs8uXDc83djuvgASNg7fSjdM38PtWxMfZzhCaOHWPGGLqd44iUrM3O8v7xcRb2dtlqRYg8/EVkPsPk+YFPFv/DnKI+EEJVSgrAT3sezyUJvWNjNOv1rH0VhcE1AAAFO0lEQVQ1t1GZa2HztdeYOH+e1yYnsdYyJwTH6nXGhcja5058hCEsQz0f5BfqL7H5a792uKz/F+qQWZ00/7tLCxyOTSmpNxqsTE9j6nVko8Guc6xYy6q1LFrLs9PTTMcJi35IwxhWrWX3rsSkeMDFi6xNvksIuqWkW0r6axcp1z7AbWvpFYJWZyfpuXOsWksl32lJxu6WpWQzrwMKoAWHmiSAzemrfLzaxUOlIl3y3qKOWnqVe3nsvDyeacDB1xwTd8XY/a/+N4rG4I1+kC65hMufC4IMI2w4R9exY0zPzjJ36xli59DHHqY4+x2qeWe3AkpCIHvP4hmDNCm+51EtlRiodlIudnDt2lPsO8efOcejnZ1U4xjx4INMvfoq93sem9YSAvX+88jJV5iYmGByMqtPFtQdkD06PMyfTn6Vi5532A0KeTvMgSbk4fjuoX/2Z3+WycnXSJKEg0Jp/81nmDj5CLrdpjcMCZ3PN5UiHB4+/OGezVrV9fAwqXO8Xa+T1J/n/OgoLTtIv+/R4/uExhAkEQVrKCtFZ1igt9qFUopr155idWiIP7l+PaPIg4B2EODCkPd/8pOs/d3f0Sslb6UpcvGVe0AQQPH+Ox6/3miwAMTAsZERet+1eDh8zPCQWkeA+J0/+roDWFtbZ2p6ivrVv6D55pv85MlLjHoeKk1pAYm7zVze67edC+rAsdwNT+qNBoNScm7sPJ4J6VIZlVb1PcragzjG35/h9sptlq3l87m3/mmt6cnBlMs1JxCCxd4Jmtayu/wq37oLCE28SxgHXv+jn/nMPe/fLQSba8DdcO2wPN7T001fMkudDAk6Y3GklHyf0Dlmp+cYHR7GI6v0ruccoMsXffcIh4fZslvsz8+xLQSVsTGakWDqZoOx0VFsoLiepuylKRMTE3z0xg1WrWUl7/KwwFbuLKurrzEiBNL3eS7vGbLfJ5kqnz/Pex9++HveP1yoEIjl14gGznM3YBdP/uHXHIBafg2Ahdu3efKLX+Tjvs95z+PBsTEWGg0SoGd4mDVrmbOWepoS54sv3n//PTebnJzkhFJ4wENjY1SlZLXRyGp8ZBVhbQxvnz3LJ27epDPvH9yzlhbkDG8W8iq5w+wSgl++SwOstXz6058G4OjRo5TL5e9Z9EH2+VtXrmTUOrDVf6/maIC7mySODg0RhCG3koSRWo05Y+jIebo2mY21XUYtfaNez5oYJ7+3f+jg6ZBkZobRWg199Ci3G42MFSoWcWNjPHD9Ov2eR0VKeqQkcVmzkxZZGVzn4OuAcr97YVopHjh9OjNBd2+3GbnwfJEVSH/r85/n3z7xBOn3yVUOTSDtP4e/8jr/4YknePILXzjE3V/90pfozemoGFgWgoc+9SnE8jI/vLDAV5566nsu+m5B3JqeZmJigh/7lV+hUqkwNzfH1atXCfJJKu5UgQ+eGDlYsCLrKT7wN/qu0Pf5xx/n8uXL99yvkC/aO7huDqI84PZdu3/wO/34448fvtm//iadeQg7GB/9zGcOb3wQXQ1QKpWojYzwja9/HZPbJt9Hwgfj9JkzVCoVAIbzaLI5/F72F1/JQmY+8YPrHyzYcSfN9vI5HDRaf7/Rco4uKfmtK1cO53zQOPUbP/8J7OD5e76vD1NDYKUne2JDcGdH9LsWb4Ekd1Ra67yOp8DLHok31mblq3yCB31Af/PXf82F83du/ulPf5pvfOlLrI1+kI7G8xRyxHgQw+9mkSTwqTQ93Hngnp1/d7jrlhI/T7g8kdUs9q3lypUrfO7JP8+/lc3v/wKOm7rRPfW5GwAAAABJRU5ErkJggg==", "name": "SDF_Simplex_Noise", "parameters": { "Correction": 2.0, "Distance": 0.0, "scale": 1.0, "scale_x": 1.0, "scale_y": 1.0, "scale_z": 1.0, "translate_x": 0.0, "translate_y": 0.0, "translate_z": 0.0 }, "shader_model": { "code": "", "global": "// https://www.shadertoy.com/view/XsX3zB\n//\n// The MIT License\n// Copyright ยฉ 2013 Nikita Miropolskiy\n// \n// ( license has been changed from CCA-NC-SA 3.0 to MIT\n//\n// but thanks for attributing your source code when deriving from this sample \n// with a following link: https://www.shadertoy.com/view/XsX3zB )\n//\n//\n// if you're looking for procedural noise implementation examples you might \n// also want to look at the following shaders:\n// \n// Noise Lab shader by candycat: https://www.shadertoy.com/view/4sc3z2\n//\n// Noise shaders by iq:\n// Value Noise 2D, Derivatives: https://www.shadertoy.com/view/4dXBRH\n// Gradient Noise 2D, Derivatives: https://www.shadertoy.com/view/XdXBRH\n// Value Noise 3D, Derivatives: https://www.shadertoy.com/view/XsXfRH\n// Gradient Noise 3D, Derivatives: https://www.shadertoy.com/view/4dffRH\n// Value Noise 2D : https://www.shadertoy.com/view/lsf3WH\n// Value Noise 3D : https://www.shadertoy.com/view/4sfGzS\n// Gradient Noise 2D : https://www.shadertoy.com/view/XdXGW8\n// Gradient Noise 3D : https://www.shadertoy.com/view/Xsl3Dl\n// Simplex Noise 2D : https://www.shadertoy.com/view/Msf3WH\n// Voronoise: https://www.shadertoy.com/view/Xd23Dh\n//\n//\n//\n\n// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_random3(vec3 c) {\n\tfloat j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));\n\tvec3 r;\n\tr.z = fract(512.0*j);\n\tj *= .125;\n\tr.x = fract(512.0*j);\n\tj *= .125;\n\tr.y = fract(512.0*j);\n\treturn r-0.5;\n}\n\n// skew constants for 3d simplex functions\nconst float XsX3zB_F3 = 0.3333333;\nconst float XsX3zB_G3 = 0.1666667;\n\n// 3d simplex noise\nfloat XsX3zB_simplex3d(vec3 p) {\n\t // 1. find current tetrahedron T and it's four vertices\n\t // s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices\n\t // x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices\n\t \n\t // calculate s and x\n\t vec3 s = floor(p + dot(p, vec3(XsX3zB_F3)));\n\t vec3 x = p - s + dot(s, vec3(XsX3zB_G3));\n\t \n\t // calculate i1 and i2\n\t vec3 e = step(vec3(0.0), x - x.yzx);\n\t vec3 i1 = e*(1.0 - e.zxy);\n\t vec3 i2 = 1.0 - e.zxy*(1.0 - e);\n\t \t\n\t // x1, x2, x3\n\t vec3 x1 = x - i1 + XsX3zB_G3;\n\t vec3 x2 = x - i2 + 2.0*XsX3zB_G3;\n\t vec3 x3 = x - 1.0 + 3.0*XsX3zB_G3;\n\t \n\t // 2. find four surflets and store them in d\n\t vec4 w, d;\n\t \n\t // calculate surflet weights\n\t w.x = dot(x, x);\n\t w.y = dot(x1, x1);\n\t w.z = dot(x2, x2);\n\t w.w = dot(x3, x3);\n\t \n\t // w fades from 0.6 at the center of the surflet to 0.0 at the margin\n\t w = max(0.6 - w, 0.0);\n\t \n\t // calculate surflet components\n\t d.x = dot(XsX3zB_random3(s), x);\n\t d.y = dot(XsX3zB_random3(s + i1), x1);\n\t d.z = dot(XsX3zB_random3(s + i2), x2);\n\t d.w = dot(XsX3zB_random3(s + 1.0), x3);\n\t \n\t // multiply d by w^4\n\t w *= w;\n\t w *= w;\n\t d *= w;\n\t \n\t // 3. return the sum of the four surflets\n\t return dot(d, vec4(52.0));\n}", "inputs": [], "instance": "", "longdesc": "Makes a non periodic noise using nikat code from https://www.shadertoy.com/view/XsX3zB\n\nCode - Nikat", "name": "SDF Simplex Noise", "outputs": [ { "sdf3d": "(XsX3zB_simplex3d(($uv.xyz+vec3($translate_x,$translate_y,$translate_z))*vec3($scale_x,$scale_y,$scale_z)*$scale))/(1.0+$Correction*$scale)-$Distance", "shortdesc": "TEX3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 8.0, "label": "Scale", "longdesc": "Noise scale", "max": 32.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale X", "longdesc": "Noise X scale", "max": 16.0, "min": 0.0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16.0, "min": 0.0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16.0, "min": 0.0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate X", "longdesc": "Noise X Translation", "max": 100.0, "min": 0.0, "name": "translate_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Y", "longdesc": "Noise Y Translation", "max": 100.0, "min": 0.0, "name": "translate_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Z", "longdesc": "Noise Z Translation", "max": 100.0, "min": 0.0, "name": "translate_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Distance", "longdesc": "Distance to surface", "max": 0.5, "min": -0.5, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Simplex Noise" }, "shortdesc": "", "tree_item": "PF/SDF3D/Gen/Simplex Noise", "type": "shader" }, { "display_name": "Checkerboard", "icon_data": "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", "name": "SDF_Checkerboard", "parameters": { "AA": 0.0, "Position": -1.0, "Size": 10.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "float Simple_AAcheckedboard2D(vec2 p) {\n p*=2.0;\n\tvec2 w=max(abs(dFdx(p)),abs(dFdy(p)))+1e-5;\n\tif (max(w.x,w.y)>1.0) {\n\t\treturn mod(floor(p.x)+floor(p.y),2.0);\n\t}\n\tvec2 i=((1.-abs(2.*fract((p+.5*w)/2.)-1.))-(1.-abs(2.*fract((p-.5*w)/2.)-1.)))/w;\n\treturn .5-.5*i.x*i.y;\n}", "inputs": [], "instance": "", "longdesc": "", "name": "SDF Checkerboard", "outputs": [ { "sdf3d": "max($uv.y-$Position,length(vec3($uv.x,$uv.y+$Position,$uv.z))-$Size)", "type": "sdf3d" }, { "tex3d": "vec3($AA)*0.9+0.1", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Position", "max": 2.0, "min": -5.0, "name": "Position", "step": 0.1, "type": "float" }, { "control": "None", "default": 10.0, "label": "Size", "max": 30.0, "min": 1.0, "name": "Size", "step": 1.0, "type": "float" }, { "default": 1.0, "label": "AA", "name": "AA", "shortdesc": "Anti-Aliasing", "type": "enum", "values": [ { "name": "No", "value": "mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0)" }, { "name": "Yes", "value": "Simple_AAcheckedboard2D($uv.xz)" } ] } ] }, "shortdesc": "", "tree_item": "PF/SDF3D/Gen/Checkerboard", "type": "shader" }, { "display_name": "Transform", "icon_data": "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", "name": "SDF_Transform", "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": 0.0, "TranslateZ": 0.0, "scale": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "float o_$name_uv=$in(SDFTrans_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale);\n\n", "global": "vec3 SDFTrans_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Translates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate\n\nCode - RodZilla, PauloFalcao", "name": "SDF Transform", "outputs": [ { "sdf3d": "o_$name_uv*$scale", "shortdesc": "V4->V4 Ouput", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Transform", "type": "shader" }, { "display_name": "Multi Transform", "icon_data": "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", "name": "Multi_Transform", "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": 0.0, "TranslateZ": 0.0, "scale": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "vec3 MultiTrans_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "0.0", "label": "", "name": "tex", "shortdesc": "TEX3D", "type": "tex3d" } ], "instance": "", "longdesc": "Translates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate\n\nCode - RodZilla, PauloFalcao", "name": "Multi Transform", "outputs": [ { "sdf3d": "$in(MultiTrans_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale)*$scale", "shortdesc": "SDF3D", "type": "sdf3d" }, { "shortdesc": "TEX3D", "tex3d": "$tex(MultiTrans_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale)", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Multi Transform", "type": "shader" }, { "display_name": "Repeat", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAIABJREFUeJyNm3ecXNV597/n3DYzO7uzfVd1d4UKRRIWokj0YhMwLsEGm4DNi+PEHUIxLwhpVmVWdGwH24lxsP06CU5igx1kig12bJpsmoQF6m1HW7S9zE69c+897x93ZjSzWkGej/SZnXvPOfd5fk8/94y44RPnKjvvABLDkFiGjp13UJ6H5ylMKVEahEwDqWuEw0FMTcNxPTJZG2lI6qpC5Ow8uWyOvuEEQimu/vBSRoYzPLd1L6amMIMG6axNa2MNQxMp5jVGWLmyjbqAhWmaSE1nbCrNxNgUqUyabM5lsH8CLxigsS7InJZawpagp3+CZCZPwDLo7RnFChpMTEzR3BzhQ4tn01AfYcvvttM7kqRvJEF1MMDcpipGExlaakMMjCQRKCanUqQyNuLaK89Stu0hhcI0NXRNw9B0DMtAE2AaBqmcjZQCTZPUWRb7u/sxDLA0Hd00UFKSyTuELIO+4SmCQcnkRI7WSIhEKsdU3uH0jiaWndZOIGAQDgSorw2jNMXQcILu3iEOHxnB0g1GJhOAoq6umvmzI5y99CSSjscrr71LHsllZ57M/HlNNEdMnnjubTwFb24/iBawGB6aZPHcGoazHunJNKYpydoO7U3VvLNvgJoqg56BCRSg6RqaFIgb//p85XoeUghcz0PTNHRNJ5NOk01lQTn+QEMjEg4Rrq7CzuQYGE8hlUIYGsGAgZ11SNo2jTUBFIK6uiqaamupqwmRyebZtjNOY72vgYAh0aRgwfwGFJLuIyNcunoJhqUznsjiCTg6Ms7Y4ASL2mdxuHcE13PJZ12GxhJYukAKydmntzOWyLDr0BCNtSF6BicwdIN0LsespircvCJlO4yPJsikM6TzHqZpkM87ZGwHy9QRn71qlcqmsrhOjmwuT9AyqKuvxQr6ggQDBunJJI7nAR5HB6cYmsrQUBugxrKoqakiENA54/Ql7PjLXhqba3GVJBSwOHp0mMRUinQ6x1gyR5UpcYQgb+cBUAqqqwIYpkmVpTE4nmJ2S4TTOlpoqQtxaHASXRMMDiVorq9mKmnTPzTO/Ln1hAMGz/zxPayqAA01IbK2TVi6BE2LtO0wPJ7Czec4OpZBCoEVMDE00IDRZI6AqaEL0F3HI1wdwDAjGLqkp3eY3YcHqAkHGByZImSZWJZBQyTA8ESa1sZq8ngELIOxVIa85+F4grz9LslsnsHRBJlMjoztEQjoXHHZCt58az/NEk5dNJuzz1jMX/Yd4YWXdhEOahimzvyWampra7jtCyvwbJveiQSuo8h0DzIynOJjly6jf2iCoxNJlFC8t3+AsKFRbZkMjiYJei6OFIhImO0HB8BxSKRz6JqGAqQmyebyZADXzhOusvCUImAZiA8tmaN03SAQMMlmstTX12HnbQKaIlQVxLY9Otpmk0ylqQnpJBJphBQc6BmktaWe3t5xqsMmtVUmuB5VQZOamhCzWhsYS2QYGEowMZXElAKlwUTCxvM8mhuriYRNHBeGExlOmd/ESfObCZgatp1jV3yEi1Yu5Nnf/YVE1uGMk1vYvu8ojqs4enQcTVNk01l0K4RlaehSMTKWxPEUruPieIKQqeEqhQAytkNzbRDHyWN7gnTOZVZ9NeLiVUuU43g0RsLohsaR/jHmz2siaFkEAxZSSoQUJCanqAqYWJaF49hU19Xi2TZCg+HRBJap09oUIRSwqKurJpvNMzQyztjQOMPjU3hIApokmcuBlJiaRjaXIxAO4Nouc5uq2bF/mKUnz+LA4QHyjsuRnhFWrVyMoWuMTUwQMC2U0MFzQEjGJ5KMJ6YwpGBsKoclwbJ0EikbEEipAB+cUMAglc2TsR1qwwEaaixcTyKu+di5Sjh5cq4iENAxNY1cLoemayjHwzJNTEOSsx1M0yBSV4uQGkI4DBwdp+Okeego7LzNG2/tQtNAagZt85oZGhylJmARqrLIOHnsbI5lC+eRk5KJsQT7Dg/SMaeWuvpmXnp9J7bjEbZM3HyOvpEJWpsbsLM2Tj6HqyTLFrcyNJHGMg3GRiZwFAyNTNLSWE0mm0cTElcpFALHU0xMZZjTGEaXktFkkknGcXIwq66G+bXNtNZXIT515WqVz2axc1k0AZmcjaEL6iIRcjmXusZasrksmiZpaKzFTmdJZWwQGuMTE+C6jCZzONkcAUNHMzQUGkID5Squ+8R5dLS1MpVKk87keWfHXnr7hmmZ3crk2AjprEPPwCSe41BbF+FA91FCls7cebPo7TnK8pPncrBnlKa6aoRmMDQyhqYcEmkbS5e4SuA6HpFIiFTGxs7nCQQCTCUzRGoslJaif3ySVFpRUyuYF5jFgtZaUrbNvt4Euu7a6CGLUHUYTQoa8XBcF13XCUd0tIBJoKYKJ5MlnUzR1zfG+ESSRCqLoUtMQ1IVtKitC9PQUM3yk9swTQPXdtl/eIDh0SSXX/tx/v5rt/PgfV00nZJkfDLFIw/ez9polHmz6pjVGKZnMEE256DrGgNDk0hN40ePrGd8KkttdZDuI0MEAjrZbA4XgQSytoNmWmSdPO5EkvFkjnBAx/WyhEMm6dwEdtakOdTEgDOGdAQ1jR6vxffhGS6eAeL6vz5fOdksruOiGxq5vIcVtIjd/zBf/Yc13PF/78FTCoQgFovRGe1EAAgBwOauLn72+EPohkbf0XFGxpJs3tzFD773CPNn1zMxlUYgUEIyNp4E5XEgPoJpGdRFQixub8LNuyQzWb776He45rq/Y2wqw6WrF7H9wCgoMDSJ6ylcT0Hh2VIAKHQpePo/H2PT+k6mkmlcT5GzXTbfdx/3bowylckxOpri7m/cxHsj/XgSrIAiL0FK0A8NOwh0Nse6CFoali5Yv3ETa6Mb2LhhPROpPEpBV2wTIFH4YAgg1hVDINgVTyAEzG0I8NCDUaSQNDXU4CqwLIvNXV0kMznuumsNCqivr+bHjz3Ko9+6j8mpLMmsgxLQN5bG1S0WL6znrb0jgKCrK0ZnZyegUEKAUtzbFSMajSILSrj6+q9w9edv5pf/+l2S2Ty6l+fO279J/3CCOS0R8nae9Y/8C+OJFI7jopTC8zx0XUe21FrMbQxRHdD43j8+xA/++VEiNSFSWYeJlA0oYrEu/GSiAAEKNsVioEAphULhAZvvf5C22Q0EAhbjiQw7DoxwzU23sv3AKPv7kxwZydE7mgPDor6hhrvWdjKRtAmHgwxNOoxO5tgY6+LoaNp/TqFY2rRpEyAQBQPwlCIWi6FJgZSyYBGKq2/4Kj1HJwCXVCaHIQVf+sqt9PRPMDKeIJXJkc3ZrI2ux3Zc0pkc4tOfuFTdvWYtd63bQCCgMzqRRSHwCvnTN3VRtDwEomj9JUtAgChcbKkNMn9OLd19E4xMZhGIImaIwhoBQ+eHzVUcHpjCcX2puoprlpYWpTnHrsG6aJRYLIYUAlOX1NeYfOuBe7k3tpHxyRSpnE0um+cbN99O3nWJRtfjeh4ouGftWpRSbNy0CZRCKRD//cyv1azGKr76D2sQUhBdF6XAMwhBV1cXAsG66LqS8LGurgIIomCePsViMQA6OzsRBaG7Yl0gFF+P99DQPh8AKfx1PK9cZMWmra/jAsb5q4hGo4jCfFUAHoHPH4quWAyEIGBoPHTfJk49qZG7714HAnr6RjjSP84tt96B53k8/NADpNI5hBQETJ0N69dzz7pOlFKILc8+o2JdXSggGo0WsUYI38wFgmhntHRNIIh1+cGwqH4hfF3FYr5vCiGgKwaF9bq6urh+ZKwkanc8zkcijQw3Bvl12mE6ffGxfy5ZmRACYjH/MxpFFZwRBUIKNCH82kMIFs+rpS4SYmR4nKlkjv7hBJNTaaQUOK7H2nXrufvuNSAoxA+FOGv1KqVrAoTA0AR5V2HqGrm8i6dA0ySu6xVMXBT+VX4CRMsEEEIUXEcd+w4cGBkjHo8DEPI8XrFtMlIC0NbWRjwe963m/NWlLCMAKUXRCUsAKAQx/PijS4km4dGH78MTip/98B8ZGB7n6GiSgKVz+x13MzKeYM2aTvKOg1LgeS7r1kURZ69erTZs6CRoaQRMSVVARyLZsHEDd62JYjsuU1mv5JMbN27yLaXA4OHb7+DCbJqeWXMKaikHRvDkgf2kCtq/YNGiEkhDhw/zim3T3NFRof2T+/oA+FT7AkZmNxWsjpLQvzl4gG7NAuDLjz/Gpi4/QEog2hmlKRLg1AUN3HXnWua1RsjnHW7rXMf2bXEO946wYcNGHMfFcT08z/MtoCZkcvddd5Gzbe67dzOGoREwDeojIdasjTKZzGE++ACOq9jgKabSNtFoFAX88ZprKwT4+OzZbDh0CIDmgnaLdMGiRXSXWcC5Z59Zso4f9/ZXAEDJfnx6wTnmKm1tbQB87Sc/xFO+UoSAdUohhMDzFELAspOauW0iTShoEl17N909IwyPT5HN2mzYuMkH4H/+8KKSAkKWwLYdOjdsxDQkD1YFEEJgOx6R6hBjk1nqa6uYTOYYnsz4nESjHLz1drrjcdoLTBU1OxMAXzh31bTIfiyjCCgEO1/TW//8RgUAe+fMKblPEYTbnvgRdl5h3d9FKusDpAqTDF3iKYWuSeY0VjEyPI4CwvdupKd/nNu+eQ9WwECXwk95Gzdt5tSt23jimksZGU8yqznC8HgSw4CqoEUynSedscnlXZ7be5ih8WG46uPMM02AY5otYzpe9vdf6XpJaCVA+PVUWXoUvLT3MFsHfQtYGQgQqkwTx1HIlDx/8eXowE3XfoTxRJKqUICs7ZLNe1iaQKL41Su7+Hmfz80/2R51tVX8188eA6XQWxpDTE7ZKCFpb2vjl28eBOCcHT3MufhUDF3npTcO8v2d782oVaCkffAt4ET0pzfeKv29+pyzAHhtzyH2jQ7OuGZxrVDBTL575SVIN8fXX9hKPB7HzeUAcIB/fOr3JcDmt8zitIUtPNg9DEC875gqtjz1U75+820cHZhkKp1B3PS5j6us7RAwDU7f0U1/wZyLGn07m61gLCMlbWXfdyrFA+ecQ6FKLfl00bQ3/vl1oNwCfFIwo6sMFYRwpOSSwpwVJ5+EpukI5ZF3HAxNYFkGnqf40459pArzyy0mKATvzJ5d+h6Px1l548eorgqSSqW58Ytfw7YdxKHPfUwZpoF99z28d2CY3rvvLk3qjsePA6AYtW9saS4JW/RlVQhCvlkfywRCwPZ9BwnXRQqjp8WKYiaIxxnyPJo7Orgm4G/Pu457rP9QBZcpVJ5SgKZpCGDKFhzp7ynx2b5gAb8tWEiRfvz6Fh667340IVjruSA1xHXBoAI4tGIFCrgpmSwJD8dbQHNHByf39bHqzJUV2iz+UawQAbr7e/njkd6SZj+9ZElFFigCML0WKFrLlQvn8+5EkunBUkiJKJThL/T2c7Sg+QsK8Qgqs0aR5n7ycjzPY15LLca/bgGgZJfr1/sl7fPXfoZgSbMzkwL+/NbbAHyytZnBufMKxQ8MjwzxzP5DJ5w3nTJSltJaEQQKqfD5A0dK8xqkJFAX8ctx5fG7AT9uDH1AoCyu/aWONrj5TgAMXbDlX7fQ3taGTmGAlAKl4KOnL/dnFkB4+/U3jitWyunpgSEYGOLlgjah0qTL6be5HLS2ssIwiF6xguGxBOPJNPW1YV7fdpDJqQzPCa00vqmwztDhw4x6HoyOowM7Z9Buc0cH7yrFsv7+iutf6mhDKT8+qVgMXQpamsN89LxV7Oo9ilgdDKqHLlpNMm0XC1eUKnixLAY039x+MjBIPB7ncl0vNcdp6WePp/burXhwZlq2CHoeVe3t3LNkAavO6SA3msAKG+zYfogFHa1s3XaQkdEp7LyD53kcGBrG0XwwyoNbQNfZMs0ti9Q4fz4nDwwA8PVrriA+mEAphetRKhAEUFNlUBW0yNkO+oazV/rCl0VwTZMcawkLoKC41HZ4XCnSM6TChZrGAdedkbF/ufqvsG2XnO0gNcGunX3MaYlgNdXR3tbK4HCC9tkNpFI5NE0ipWCxbOHfenpZGQhUrBVw3ZJZTy+MUkrx2eZWTr/2Qrbu6MV1VUGJHsUSSwETSZvJlO3Hk2fPP08JBEJS6rD8tteXPptK8LP39pQedNMzz/D7T32qIvcDWELwsz3+uKILlAe0T7QvwFrWQShg4TgOIVOnuT6MPr+O7KFBAhGL4b5RugddvvXCiyXf/tSSJQyX1RYZpTgyd27pexGEtrY2Pn3XF9h5Sxfgu8+K8SnUGadg55W/racKEBT2AkAhtqxerYQUhR7d/3+0f4h/7+muEKbozx6wWyk04O8XLy4x0iAl/53NVmgFjs//s6Rk9RUXI2Vxx0dRFTL59xffZNfIsYKoCMBcw6BF00pu8AfHYXYhW5RT4xUXY+fzfPzIEAIqsg3AaZFGmpYvxivGA6XY8PIriOcaGlR+8WKkY/PtHe8xncq1CdCGX/yU08PnnYuUks5XXztu/mWahl6wplSZ64Q8j48vOIk1e3aTLEuDRaCHPI+MlCQLzzrXMFje0VFKnZe7DgtPWQLK7+3X57NIKfhkz+CMAJRTk5RsnTULAPGtujqVUoo/ZDLHDSwHoEjxeJz00mXcGwqW+n4pJJomCJgaAoXUBHe8+DIAZ0rJySedVLFGdzxeYmymlricdnZ3097WxkrDoElKQrkM13zyQrbt8YOdoUmE8psfUCileGO/L7yCCvcpUpWu805Liw/AUytWKAF8b9eu/xUAn2tuOVbsFLa2hPDfD5iaRAjlv2LX/UD6H4sWcdLzvz9u3WKd/0EANH9kFYdf+BN/P3c2rbU15ByX4vaIJgWtDVVks3lczyPvKfKOS9Z2cV0P1/V45bWtx63ZN3cu6YJl6fHu7hM+vCR0U3PFd1ViQQESIcD1wJWKgKGBEHgeBCyNm450870DBzh94ULgBF3jtGhefu2vXhbc8+FzGJlMk3c8P1ULQXXIYtGcCKOTGXQBkZoAg6MpslkQSuAKh0w+y5L57ew9Uinj7jKZKyNUgYo5fNMpp5ANVZXdEWX1v/+9fNvW9cB2FJomcBF8e8sLgO/PkWlBa/qzTkTxQ720XHIOVmM1/aNTBE2dxtoqRhNpHNdldGTU3+JOGti2g42G6yjGRkb599FJABa9z/riW3V1CuAXheKivCw9e9CPyhe3zOFoc0NJeFUojBSF/Trh525Nlxzae4AfH+2v6BiHCkWQJQQdR49WMPBqIai1TUurRVrS11eqOz4xt5U5ZyzxTdzJo5RHJmOTy3vk834NkrPz7JwYZ7sySmucV+gRim73u0Il2dbW5gPQ1t7OL2YIgosHBji9o4Oim1xQX8toW3thO7tQJUrfKn536DC9lnHcGsUOr6q9vXRJFtZub2srRfWZqOb8s4j8YstxNcfQ4cNs2Hwzrzz9Eo7jkrPz2HmHqqoI69948zgwp5TiAtOkqtCpbrXtkouJp1asUBQu9s1QyV0bDJYAaCsIURUKI4MWmibZ/MeXSmNnMuciM6my1Nkdj3OF5W9svmrbfPeyVSSSWX44MA5AfukpCGDP7l1c2TtQsVaxlS7SZa2zOBrQefTAzBsxbW1tTClVel48Hue1MtBLLuABT2WzFeh5wKrB43dr2trbOeA4/Hbfvorr7+fPX/t+jIdui6EKPfoVlsUdn7+a5ojO1rf2MZXMkEplcVyXNekMApjo6eOLwWDFOjPl9TkLFvDTabyUU31Zj9AkJU9ns+wJ+7FNbllxuv9H2YTrv/0dDjc10VPIldMp3t3NHE2b8d5M1NbWRmoMbrnlFlxN49kvXMeXP/NJRqdyCM3gtEXzuOLSpbQ016FpGveFQmwOBLm1rNJ8P9o9Q3dYTqn583jrrDMZ8jzea21lTzhc3FVBfO66v1ad6zvZ2z2EhwLld4GyMGDfZz9TKUzBDfrjcX6VSgHHV4vlghdJP+UUvug4SAS1NQFqq4PUBnU0Iak6uQEsHQ4N8Mpre8hk8yTTWVzXRSlYftZSfvzk88DMFrB/zpyK7+V85IGaCy9Aecdc0H/H4wdy8efXX1WjEykMQyedtf0zQfi5/r333iWwuatC8NIiwM9PUD1Op68uXoLneSBAk5La6iCZnM2C1gj1EQshFMLSGDwywvhkkrGJFOOTSb97FH52EQiGJ6bIWH53WB4HpgNQBKGtrY2xkxb4b7A9/OcUFGvo/qFQPZ2xCYcsxqcyFPcCfKwUpmkdJ3iRZtrdmV7Q/Md1H2ZsMsveI2PkHR80w9DJ5D003aB7OEnj3Ai0VOPtH0QJSVN9LVUBE13XGR1PANDaWMvNL74KwN8sWoTgmNXNtAtd5CMej9OTzbBs+fJSuSKloDocYG5rLZl0DvHciy+ofN7128VCYeO/0QUQ3LB75wlBKKbO6aYP8M2TTyYI1C1oJ5v3MAtHU3VDRwGmaWBogpa6MPWnz4aecf6y4yAjIxPoqNIrscdf387Bgo/n8dvhqxcupKUs4JZH9XJe+lpbUCikEOi6RqQmxCUXrMIydMLharoP70Gcee65ynUV69at8197F198FlpjhOCGXX6XOB2Ih/fs4UR0bSBQGj8nncU6YzmmqeF4vhVUhSyqQha6FLgo6iMBJieSbNu2h0QiRWJ0lMf6KoumRFkqPd80WdrejgL+Y//+456/u5DSWxa2++6Hf9ZZCvj8Ddfz1puv0lgXRhcIOjujhUGVNLDzXQAeAe6Qknh3N23t7XxQ/zC3rY2QaZbGxQF+M8DVHfNxz1xBuCrA6HiKgGGQth2mMjZBTSNSV8Ws+jCP9wyAbpZ2iWciA7+eaGtrqwi28Xi8JPwxEriuQtd1Hn74fs5Y3sEX/8+n0XUN8atnnlOup45pHUGsq8sPlXt2Vuy6RqNRmp54wn9QdzdvFNJkOZPjhc9h1+WHp51WwUYRkDNbZ6MvOw3X8Vi6qIXauhBuJsc/P/07/pSdeZc3Ho/TP2c2UkpCR3q4wrJKgm8tuEB/OFwmMuzYsYOGjvk4rn8eaMuT/49wpJ5gVZD6ukYgh3hyyzMKcazJ8TOEJNbVhdqzE4Avr11bwUwRhPLy+UsP386h7n08fOf3Wb5sGcOexzdmqCzLreeMiy9j0bwm3vzjS/zcfv/tbQB7+VJ27drJ8tNPx9t/iAuzWTT8lnq68EVqXNDGtu3vcO+993LNR89BhsLgKh77zk859eKLEb985lk1tGc3AItWnsFUxqYqZKJrgrE3t5cWyihVUc4C/OHxx7nk7/6OZ599lm/cei2v/elNLrzgPGLrfwDAzSfYJC0C0dbezmsHDzJQ9grr/ag/HOYPv7qF3p17uaPzxRnHDE9zZTckSSRzoOA3v/4ZkZoIP/3hfx4D6wcPP1wh1azTlvLgA/dj6hoTb28D/INJACMneAkRi8X47I1X8ZPHnixdW758+QcCANDjuryR94/Pn6gjLNJvDh174dJcqESXL1tWMaYcgN179vCd+7/Cs6/u4nDvKAvbm3jx16+UHQUqA6B4wAmg5ZTTME2d3Lvvlq6ti0aPA6A4p4ig63nk83lUYdy/TIsB5YIX6Yjr8mYBgCJNB6IYY44PbpVACCEYKozZu3cvUkoe3vy3LJnTQs9wgq/e+f2KudFoFDEnEjmuphFA86lLUXsqt8m+UogF0wWfTnY+j+s4FQCcKHOIuXN58sCB467PtPf/fgCA76anr17N29u28bd3fInhkQRN1ZKzFzUTve3R49wDKnsgn6Gyz7qzVnLaRy8p3Su3Epj5rAD4vzMyC+0nnFh4gMMnSHMnSn/lfBZ5NU0TXdO48ppruOqqq+idGGN2fYCGxggDCY8f/Xa/r1Qpj+O5ZAHTX4cuOHMFSxe2ErIMUpksHz5ldckFBPDz5/+b0W07S+Nnekn56IIFvjDvB4Drsu0DXAAq/b+c1/M/ez21NUE+cdIiRjyPL91xBzBeOKxg8pV/uIPh0QSHn/vtcWsOeR56Z+Hk5XQ6dUEzTt7hzug6Mpk82VyOd1/YykXXfoSevhHmn7aENdffWBrfLGUFCJ3RKCNA4xNP/K+KpxMJ79TUAH5QBXh3x46K+6ah880778HUBYtLTVEdj33rEQD+6TsPMziZ5qoFp1TMKwZ28dgMQbA44NIrL+B/nn+l4vrK81cykUjjuh6ju/YREMI/tVmgr0yrGcAHoUjTgTjkumzP52fUelH4IpX78I4dO5Caxsv7D+C6CsdxUChMTfDKk09OX4qmgul3xWIl4SsAmE4nCnAA809dTMAyCAZM+l//S8W9E6VKOAZEOQgHXZfxaXXAdMGLVA7Azp07icViXPQ31/u/EXL93zm8+fQv34dzeGzzZuADLKAcoRPRh1Z9iDmttbyx5eUPtIAiffGOL/P0GRdWXPv9wYP8pcwCihXdTAG2CMDu3bvRdZ3Lb/w8ecfl7jVrcV2PrU/9/H15LpexuL4sv6EK/2eKCdPpnT+/Q++7z7F4aaXGH+jqOm7sZZ+9FgU8/shjDN9wA7ccOkS8u5t4d3fJ0uLxeEWgmyllAezZuxdd1/nM176MoWtIIbh82Wlc+aFlM44v0olkkrFYjCYpjzP59wOhKxajKxbDzcKt33uV+gsuKt0LFX5ZUqSVV30MxzkmTPHeIwUBlVLsl5Ldhe87duwoBbrN//ZgaV51dTX79u1Dk5I7711DMGhgGjqaJkvpLRaLzcj39GvlWUQCLLzk7BlNbqbFys1dBnTm1Qdx7DyRVecBfpsK8ItXtvKrP70BniLvejRJWfK/Ij3iefxaSgxdx7IsZOHEVxGIhYvn8l+vv87OnTvZtm0bvZP7ePvtJ5jdXE24ysLUNXTtGN/NUtIwDYgTCV997gUA6Bd8+Bym0tnSAtPzefEIfNcMYFx70wNc9LHLAV+TTRdcROrVl1ly0aUYmka4ymBzVwzDNNi/ZcsJnwH4x95NE8dx/Ihe1ni9Vzi5BtB80iJaj4xxdGSKiYS/r1exzvs8o1zPl02zAAAAbElEQVTzSkF41flIx1HY+WMl5nRL6Cz8cCE6Q2AUQN7xCAW00jnBbtdFA6SUtNbVsHZdlA2dlXObpSRQ9o6xnDG9YA26rgOVr9V9Wsx1V99MJGQRMLXCa/Hj6dH162mSkmg0WvrxRSX5R+3/P256Eq/SGl4ZAAAAAElFTkSuQmCC", "name": "SDF_Repeat", "parameters": { "RepX": 4.0, "RepY": 1.0, "RepZ": 4.0, "X": 1.0, "Y": 1.0, "Z": 1.0 }, "shader_model": { "code": "", "global": "//Adapted from https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm - Finite Repetition\n\nvec3 opRepLim(vec3 p,vec3 c,vec3 l){\n p+=(c*l)/2.0;\n return p-c*clamp(floor((p+0.0001)/c+0.5),vec3(0.0),l);\n}", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Repeats its input shape\n\nCode - IQ", "name": "SDF Repeat", "outputs": [ { "sdf3d": "$in(opRepLim($uv,vec3($X,$Y,$Z)*2.0,vec3($RepX-1.0,$RepY-1.0,$RepZ-1.0)))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4.0, "min": 0.0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128.0, "min": 1.0, "name": "RepX", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128.0, "min": 1.0, "name": "RepY", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep Z", "longdesc": "Repetitions in the Z axis", "max": 128.0, "min": 1.0, "name": "RepZ", "step": 1.0, "type": "float" } ], "shortdesc": "SDF Repeat" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Repeat", "type": "shader" }, { "display_name": "Polar Repeat", "icon_data": "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", "name": "SDF_Polar_Repeat", "parameters": { "Axis": 1.0, "Distance": 1.0, "Repetitions": 5.0 }, "shader_model": { "code": "", "global": "//Adapted from MaterialMaker\n\nvec3 circle_repeat_transform_X(vec3 p, float count, float distance) {\n\tfloat r = 6.28/count;\n\tfloat pa = atan(p.y, p.z);\n\tfloat a = mod(pa+0.5*r, r)-0.5*r;\n\tvec3 rv;\n\tfloat c = cos(a-pa);\n\tfloat s = sin(a-pa);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c-distance;\n\treturn rv;\n}\n\nvec3 circle_repeat_transform_Y(vec3 p, float count, float distance) {\n\tfloat r = 6.28/count;\n\tfloat pa = atan(p.x, p.z);\n\tfloat a = mod(pa+0.5*r, r)-0.5*r;\n\tvec3 rv;\n\tfloat c = cos(a-pa);\n\tfloat s = sin(a-pa);\n\trv.x = p.x*c+p.z*s;\n\trv.y = p.y;\n\trv.z = -p.x*s+p.z*c-distance;\n\treturn rv;\n}\n\nvec3 circle_repeat_transform_Z(vec3 p, float count, float distance) {\n\tfloat r = 6.28/count;\n\tfloat pa = atan(p.x, p.y);\n\tfloat a = mod(pa+0.5*r, r)-0.5*r;\n\tvec3 rv;\n\tfloat c = cos(a-pa);\n\tfloat s = sin(a-pa);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c-distance;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec2(100, 0.0)", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Repeats its input shape around a axis\n\nCode - Paulo Falcao, RodZilla", "name": "SDF Polar Repeat", "outputs": [ { "sdf3d": "$in(circle_repeat_transform_$Axis($uv, $Repetitions, $Distance))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 0.0, "label": "Axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "None", "default": 4.0, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the circle", "max": 32.0, "min": 1.0, "name": "Repetitions", "shortdesc": "Count", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Distance", "max": 5.0, "min": 0.0, "name": "Distance", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Polar Repeat" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Polar Repeat", "type": "shader" }, { "display_name": "Custom Boolean", "icon_data": "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", "name": "SDF_Custom_Boolean", "parameters": { "Correction": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D A", "name": "in1", "shortdesc": "SDF3D A", "type": "sdf3d" }, { "default": "0.0", "label": "SDF3D B", "name": "in2", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "min($uv.x,$uv.y)", "label": "SDF2D Custom Union", "longdesc": "The union between A and B is defined by this SDF2D\nX is the distance to A\nY is the distance to B", "name": "joinSDF2D", "shortdesc": "SDF2D Custom Union", "type": "sdf2d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - PauloFalcao\n\nA boolean operation between SDF3D A and SDF3D B is defined by a custom SDF2D", "name": "SDF Custom Boolean", "outputs": [ { "sdf3d": "$joinSDF2D(vec2($in1($uv),$in2($uv)))/(1.0+$Correction)", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Custom Boolean", "type": "shader" }, { "connections": [ { "from": "sdf3d_box", "from_node": "node_sdf3d_box", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_smoothboolean_2", "to_node": "node_sdf3d_smoothboolean_2", "to_port": 0.0 }, { "from": "sdf3d_box_2", "from_node": "node_sdf3d_box_2", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_smoothboolean_2", "to_node": "node_sdf3d_smoothboolean_2", "to_port": 1.0 }, { "from": "SDF2D_Axis", "from_node": "node_SDF2D_Axis", "from_port": 0.0, "keep_alive": false, "to": "sdboolean", "to_node": "node_sdboolean", "to_port": 0.0 }, { "from": "sdboolean", "from_node": "node_sdboolean", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_smoothboolean_2", "to_node": "node_sdf3d_smoothboolean_2", "to_port": 2.0 }, { "from": "sdcircle", "from_node": "node_sdcircle", "from_port": 0.0, "keep_alive": false, "to": "sdboolean", "to_node": "node_sdboolean", "to_port": 2.0 }, { "from": "SDF2D_Axis_2", "from_node": "node_SDF2D_Axis_2", "from_port": 0.0, "keep_alive": false, "to": "sdboolean", "to_node": "node_sdboolean", "to_port": 1.0 }, { "from": "sdf3d_smoothboolean_2", "from_node": "node_sdf3d_smoothboolean_2", "from_port": 0.0, "keep_alive": false, "to": "SDF_Transform", "to_node": "node_SDF_Transform", "to_port": 0.0 }, { "from": "SDF_Transform", "from_node": "node_SDF_Transform", "from_port": 0.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 0.0 } ], "display_name": "Custom Boolean Example", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAD1pJREFUaIGVmmtzXMdxhp/umbO7ABY3khIB3kDFkq3ISkmkJJtx2U5SSj64SpSS35GflN+Qz6lUpcqfXKEciZIqUkqSnUgAQQKkCJK4A3vOTOfDnNk9ewOpwRZ295w5M293v/32zADyzx/8RgRVdaohRMOqEGO0KgZBEKoqiEg0K6tgBuCcqIgZIcbTsgrRALD0wakCAsGiIIAIIgK0vCucU1Uzc6pOxaBwrvDOMEHAYkyT4FScaohWVlUZYjQTiGZmCIQYT8rKzLyqACHE49NeFWJZhTKEMkSnkiwxsypGM4uW5kBV0mSqWlbBwMyc1iYlG0TEMK9qhqqYRafaq0I08+pahWsX9dRmVoXkoyggIiFEEULACPV0Ig6ygxIGpypm+J29QzOqGHpViNEAlWQSvSp4p06l7bwZNWroVUFARM2sO9N2qoXTYGZmKqIiycdpuIQpuTyh9KqF9yKkQCFy0itDtGS8qrScswwjmpXBnIpzipgAUGU3qYovQzDDzDC8qqioSBViiLHwakaIlibDKJwWznVaRbqQQlF4pyKqgqEqyTECvSrkEFqIAFUIZlZW8aSsnKpT9U5VpHCu8AhiGBCjgalKjCbgVb1TwHkVIUYTqaMRo/mj0xIzo6apRjEzEQkxphxQoT+TJTtM1AmI00Tv2oZoJiJgIpjhVKOZmIkommOr4kVqKopUIRZOA4QqpCCrapEcohokmpkgZlQxJvtTPEFahXPqfOFUVVPG+MxdjBBjrwpA4V1tj4gT8U69cyJ0O21SYAwEMxOrk6xuglOtgzO4JqlzFaKZFU5TKMxpfRFOehWCgKqqihMSo7zTweBg0SLRv7TYDdGimVPBMAgxxmjeu8I7FU38S2TtR7N2SUJhSG2YFqohG6Ei6iURI0YLMYYYE31TBzNCsBACElJ2mVmMlljnVMFijFVNjtpZiWaCOJVo5veOTpxqCl9Ki5Q6MRiCipHCD0BJSMxLmMoqxCyI6amE2zlN2YyImaW4J/rGBsT+ZzAR6WeFQ83MMBGcumRwMBNwTkBS0kYzFfHeucI5l+IkKZNqdiZAZYgSoxnpAaeSWJj1miqEKopkvbeUXSqKGCRT6/5Wu9nMyhBFSPUEwYk41cI57zTlaIpYjCaJ3jkKSVUli7VXkRBjiKTLKYjJkuSzKkYMEUACMUSJZoqISEr9vndDNBU01670lnz89xudfEX+/cqhirYKn/AZqGCQpM96qJCYoKoIKTNTlARRTbGq/ehPygossSjGGKKlohjNYox9SxINnaqRQm5S84LU4/31gky1379S/u2fNOesQwgSckf5h42ZdOv3a6emdcoBonXS99mYlANCUgIxRAxTiRHEqRrIR7f+KiWd5hhVMZISE5K5fYlMqRZjPylMRUX43RffGiwjjxbfqGE3Rac2NH9jIEr9C/9x7aSWUZFE1+RyrQNMShLv1GlSY0nG+rTGqBM38bQeuc76GC1iNBYiCbQg739fkIl5bu8QuHjwCbDwk19/e3wsCFbHylJ2SfMbgFit2u+v16L8h1djmlmkronRzGWmJuZkRTIRkd+9+5eS638GWadnYmFaOSVx/MdH81idhemdXNvOb3/mwTHULr3227uHh/0SK2M/08KS2p2fkVylIillk9yRpw3R5PYv33SqKkQjWoyxX+oQkdvb3YSyVu4pP0CxfbcNyQYPOmzJ9Vd/+58HB5lNY9Anm9C4ru6T101Acyhq5xnywS9+PqgTIHB7e34ca+5fO7zfof9hd/tuB9r55fJrxJK1a7c+rkpBilj9UZ7e1JdH0A8Z14hGf967b7o+R2I071Q/2O424USSbkqTJ0Nw81iy9enB6s0D534oTyN0YbFhQxuKhiUJyfrGnRX41wwprl6YFoTmRM329n/H/udPf+787e35fuIOYMqA6BPQw2K7vdnrfXn53f8tT3cOd2O0izALS3AOlmEZXDajlanlhpPEIFpspLZhQ7EYaY2Y1Jx556vgbYCKpBRNoH3pqBUFEeQn7VYUOVFZbrd37n/i1m611+8cwAH8APPZgPRagsNsRivbENPKhzq+A3FKFWYc+5ARmfEC4Burx6EwJG/ULsl6CLzW6VxQiWVvwbtLvd5712597Yt/g5idugd78AgWYSnbsAyazWhDBTE/0gx8vWOa7PVG72ykIO724pW8Hx1N/pqUw0m1KjJnUUJoCTOwKFwse+8tr/1sd3MHdvMsFRzALuxBCk4JgIdj+DNUUMH24fb1+dVcrAaoR6A3hSvLWN3ffbB4eVqw6geGc+ul8Ni7bqtVxBA0WkvoQJfY7a7+en/rp1DCVu4c4QSewQEc5t8RNqAHPbh/6eb/qHt9bs6d9mpnjfluBNNQUoL7cPHqWZxrxhc5Fs7f/zIUZWgtO3WF9xaiWmwhHUEWL83Mr7y7v/UmtOD7xiA92M+vA3gEPajgweyFt0JFVal612p9sfvVpdZLk6CPuTYnqru9dKUOTB3IfqkbUvsT5DHch629B/NHBzNP7534KhZLquqdJ1o/GixebnVX3trfugGL8G1j5gqOYB+ewCkoHB0+ap9b2/btIoRuVa3MrmzOzi73ynH5HzchQXUfLl0dcvVwtUrdj5AdeADfIZ8vXHq296CE2aP9zrN71Yzr6VxRFCpqZmp4rCNiC5d8d+VCd/XvDrYvwhYc5+Ei7EEJbbgE3b0Hf3Hh+uXT03Pp2CLELzudy1U5gt6G7egT2324NEyhTMF+64kciOwKD+EhBHg4f/nr/QeHUEHn4Nns7mY516l0pvCFqhJR8GZt1RlFuyuL3ZXfHGy/AuT0OALgJrx7+b23uiuv9HrdqtSqZyJ+bu44xpeq0AjAeAgaaf0va3+tqhOXN6mdYLuwY9zH7huHGJv/BTyC1+BteAPWYAnCq78pqjBXFFaVsaywYFgUTqvquKp6Ij2R84++LOEhAKfn3wgxBixANNS74Px+e/ae8HD9zt+s3hyF0g9IY93h/un89WYp74uUZE1I26uYL5dCb+8+MAensA6b2aMzTzY6z+4dLV8T0Xa7neqlhNCy6KuyKMtW2eu1lspiyRWL+AWtSrWIEHxhRbv0RemK3VDtOX+yu3m/u3p1ymqiaYP7aPnaICRN0R2c3uCElkghMosU9z5WOG4M+wy+gx/gBAxmn260nm4cLV3xhfdFy4m0nM6223Odzly73fFFuyja3nvn1DlzLvqi9MW+8wdmh0jZ7uzsfxOOj9e7qx04PxF9wwb34XLfzkbaNkwRxCEF0kLaIvO7mzPQyhpPXm9+A5uwBycgMPN0w++snyxdnZuZ8b41O9dtdzrXfvWrVllGEXM+et8TPUb3o+yZ7Dt32m5Xsmcbnz0+Pj6EnbmVLXgdPFPg1RFYujZt3VdbKXU981DAhd3NGZiBAgooc4mdA+Ar2IZDOAWB2acbR3HXZi9WZlYUR0+fHUepfOtU/bHogcmJb1Wzsycznb2j9erB17t7j7fgED6/eMOgDWugWLKhmQCDSvzR8rXm2qhppeTDhX5TCEtXkg2dbIbCaV7YzEGAB3APkkwVx8e68709/u5Z9WTv5GDfze2W5YHFfbMeu3sHm2Hrm/2nGz8cHdyDJ7AHn6/cSAfz70DRWMmOkCdh89SHmXn1NtLy+ra5tttbu/XS+p0OzEEXFmAeduBp47ln8Af4P/gprMJ56D5+UvBE+HOEEk7yYmkHtuEZHOVVYJrxmlgPKqNEknekPjpsUEgSwWQAlBHdHVsepvbD2q2r2YY5WIAudGEnK1JqX8AWLMIFWITZTOgKTjPiPTiFE3iUn1oWCmibeND+0iDzYgSJbwYlb2akucVpRqP5dm/t1vX1Oy3oh2Ix2/AEKgBeBuBPjVWqjAwGNKCn/mzdXVh9Z1FYgA60MYeMbE37Q/hxF4+jH64nmW/w/dot4Or6nTbMwSx0YR668ASejcBqAB1pLzc+z8IiLMA5WBC60EFaeSE61ATDfNOtk6FPaoPEgHvXbl3fuJM2XE1GzcMz2J8CdLx1M/RFmMVmkbm8B9I861AzBPFD0McKQtOYkdZcrn539Zfz9z4+B22YgbmM/inswyEcwQn0xgZxWc26WQ9SJNvQxgoTP3Ja0YRXbynrKzbM8GnNBl0sfzYz2Lvyi/bmH9OpRAcWYBnOwyEcwzGc5j1AzLM7KKBVE71+sJNcbvg6xrVk9reNggycPdgTT/T9hFOZIdwjFx5dee+R2cv3P1mC2czm0ywyp1BClbfzkm1wuSamEzEPtnJjAClv9dPnBqoamh9z/5AN4/Hod28+RyPRH11+9+X7nyxkelQQMvT0OTZOJfqA+mbsJ/SDLMxHIskMaUyYClmfQhNwjx1Y9O83kY8fazy89M5DuPjg01SYA7QhDqNv/rZ8ZvG4Rt9oYkPaa/0zIcAQ8Q3vT5ScKZdHr0+QrYeXbl58cHcxgx55NdEbPF65sT88gTBlZ2zWsAE/BnAKsiGQL3rr4aWbD+Hig7vAUgN304CNlbcbjzRgj7FlCGRdoM0zIQBTisLICMPfp6qX8XD15sWtu/269kP+EFZuTJWNUd/b2NWcAw3oYxVhAtaxdDm75e4PV28YrGx9NhHRqIennqnUD6X/BEjpoRl/4xC96fpaa/qvyeil8Zo0Zd22V+scDStvx5W3+3eHitVZJ0IDWJbEw8xP2MYP5h329zhNZGqmTVmF2HbN+GnIJnqgqbfNd7N+HZj+zBlokiBgQ8I29Gscy3Mg2/BgY5k2/C55PzAyxMgT0/Nz0GPiKnl87jFAIy6lrroy5r9Bk+Zlq3dk/X3LWYJ6VjinuWrik1P65LEGtBwjxoQ19SACMrwyGKH/+GQvcGti8Kb2l1H+9//aiGATImhQy2j9tX97aKUwOuoZeIdH+TF6Oyl9xx+fNJ4fkCcb8oIL6/HRpzlpfKBR+Zc0r2R1z0+PQhqd0sBPmHDypGdBZ5Lrp+3mJkxj0P9Hl8n6N7XyT5LRF28TRcomCNn0IfpaMM3NU21IzQ91/FFt3F8j9kxy6AR0jfez/qwxIaDGIIkbN+U5yj8R3JiXpnSY2mRMIp9fg8AGERjqOeU46znIxrNv5OuPVdzxW+OdfOrxAuw568zlTOkcQf/cun7WWOPNj/aaYMvUjcJkWENsHKrcZ2bjmQNNf8QP3xzz1hTozwfSbGcxcqg9T36HUQKJQuNwm1/HoL8QF/qtedJ6tiEj8XlB9/hJwIaBT7r+o5qASa5Waen6fB+/UFYC/w+ddkrDoWLYCAAAAABJRU5ErkJggg==", "nodes": [ { "name": "sdf3d_box_2", "node_position": { "x": -340.407653808594, "y": -125.038391113281 }, "parameters": { "r": 0.01, "sx": 0.07, "sy": 1.39, "sz": 0.5 }, "seed": 44278.0, "type": "sdf3d_box" }, { "name": "sdf3d_box", "node_position": { "x": -333.407653808594, "y": -252.038391113281 }, "parameters": { "r": 0.01, "sx": 2.5, "sy": 0.68, "sz": 2.5 }, "seed": 53834.0, "type": "sdf3d_box" }, { "name": "sdf3d_smoothboolean_2", "node_position": { "x": -60.5551147460938, "y": -183.631713867188 }, "parameters": { "Correction": 0.0 }, "seed": -51977.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D A", "name": "in1", "shortdesc": "SDF3D A", "type": "sdf3d" }, { "default": "0.0", "label": "SDF3D B", "name": "in2", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "min($uv.x,$uv.y)", "label": "SDF2D Custom Union", "longdesc": "The union between A and B is defined by this SDF2D\nX is the distance to A\nY is the distance to B", "name": "joinSDF2D", "shortdesc": "SDF2D Custom Union", "type": "sdf2d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - PauloFalcao\n\nThe union between SDF3D A and SDF3D B is defined by a custom SDF2D", "name": "Custom Union", "outputs": [ { "sdf3d": "$joinSDF2D(vec2($in1($uv),$in2($uv)))/(1.0+$Correction)", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" } ] }, "type": "shader" }, { "generic_size": 2.0, "name": "sdboolean", "node_position": { "x": -111.85400390625, "y": 71.3672485351562 }, "parameters": { "op1": 0.0, "op2": 0.0 }, "seed_int": 0.0, "type": "sdboolean_v" }, { "name": "SDF_Transform", "node_position": { "x": 359.444885253906, "y": -203.631713867188 }, "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": -0.5, "TranslateZ": 0.0, "scale": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "float o_$name_uv=$in(SDFTrans_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale);\n\n", "global": "vec3 SDFTrans_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Translates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate\n\nCode - RodZilla, PauloFalcao", "name": "SDF Transform", "outputs": [ { "sdf3d": "o_$name_uv*$scale", "shortdesc": "V4->V4 Ouput", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "SDF2D_Axis", "node_position": { "x": -370.555114746094, "y": 26.3682861328125 }, "parameters": { "mode": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "SDF2D Distance to Axis\nUsed in more complex operations like Custom Union\n\nCode - PauloFalcao", "name": "SDF2D Axis", "outputs": [ { "sdf2d": "$mode", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 0.0, "label": "Mode", "longdesc": "SDF2D made using the distance to axis X / Y at 0", "name": "mode", "type": "enum", "values": [ { "name": "X", "value": "$uv.x" }, { "name": "Y", "value": "$uv.y" } ] } ], "shortdesc": "SDF2D Distance to Axis" }, "type": "shader" }, { "name": "SDF2D_Axis_2", "node_position": { "x": -370.555114746094, "y": 96.3682861328125 }, "parameters": { "mode": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "SDF2D Distance to Axis\nUsed in more complex operations like Custom Union\n\nCode - PauloFalcao", "name": "SDF2D Axis", "outputs": [ { "sdf2d": "$mode", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 0.0, "label": "Mode", "longdesc": "SDF2D made using the distance to axis X / Y at 0", "name": "mode", "type": "enum", "values": [ { "name": "X", "value": "$uv.x" }, { "name": "Y", "value": "$uv.y" } ] } ], "shortdesc": "SDF2D Distance to Axis" }, "type": "shader" }, { "name": "sdcircle", "node_position": { "x": -370.555114746094, "y": 166.368286132812 }, "parameters": { "cx": -0.3, "cy": -0.3, "r": 0.18 }, "seed": -52182.0, "type": "sdcircle" }, { "generic_size": 1.0, "name": "pxflib", "node_position": { "x": 629.444885253906, "y": -213.631713867188 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Pow": 64.0, "Reflection": 0.2, "Shadow": 1.0, "Specular": 0.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "length($uv.xyz)-0.4", "function": true, "label": "SDF3D #", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "TEX3D #", "name": "tex#", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "\nvec2 input_$name(vec3 p) {\n vec2 sdf=vec2(999999.0,0.0);\n\tfloat m;\n#for\n m=$sdf#(p);\n if (m(#.0-0.5)&&id<(#.0+0.5)) {\n\t t=$tex#(vec4(p,id));\n\t}\n#end\n\n return t;\n}\n\n\n//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=input_$name(p+e.xyy).x;\n float v2=input_$name(p+e.yyx).x;\n float v3=input_$name(p+e.yxy).x;\n float v4=input_$name(p+e.xxx).x;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid march_$name(inout float d,inout vec3 p,inout vec2 dS, vec3 ro, vec3 rd){\n for (int i=0; i < 500; i++) {\n \tp = ro + rd*d;\n dS = input_$name(p);\n d += dS.x;\n if (d > 50.0 || abs(dS.x) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = input_$name( pos + h*nor ).x;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = input_$name( ro + rd*t ).x;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tvec2 dS=vec2(0);\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\t\n\tvec3 objColor=tex_$name(p,dS.y);\n\t\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+pow(r,$Pow)*$Specular;\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=tex_$name(p,dS.y);\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tobjColorRef=max(l,$AmbLight)*objColorRef;\n\t\t} else {\n\t\t\tobjColorRef=$hdri(equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,$Reflection);\n\t} else {\n\t\tcolor=$hdri(equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn color;\n}", "longdesc": "Type - SDF3D Render\nCode - PauloFalcao, IQ\n\nRay marching node for 2 objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\n", "name": "SDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1.0, "min": 0.0, "name": "Reflection", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.4, "label": "Specular", "longdesc": "Objects shading specular component strength, it's the strength of the highlight.", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "Pow", "longdesc": "Shininess of the specular component, it's the size of the specular component, it tries to simulate more shininess surfaces or more rough surfaces.", "max": 1024.0, "min": 0.0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/SDF3D/Op/Custom Boolean Example" }, { "display_name": "Displace", "icon_data": "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", "name": "SDF_Displace", "parameters": { "Bound": 0.01, "Correction": 0.0, "Distort": 0.02 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "length($uv)-0.4", "function": true, "label": "SDF3D", "name": "sdf", "shortdesc": "SDF3D Input", "type": "sdf3d" }, { "default": "vec3(0)", "function": true, "label": "TEX3D", "name": "tex3d", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "\nfloat distort_$name(vec3 uv){\n float sdf=$sdf(uv);\n\tif (abs(sdf)>(abs($Distort)+$Bound)){\n\t\treturn sdf;\n\t} else {\n\t\tvec3 s=$tex3d(vec4(uv,0.0));\n\t return sdf-s.x*$Distort;\n\t}\n}\n", "longdesc": "Displace a 3DSDF based on a TEX3D in a direction\n\nCode - PauloFalcao", "name": "SDF Displace", "outputs": [ { "sdf3d": "distort_$name($uv)/(1.0+abs($Distort*$Correction))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.1, "label": "Amount", "longdesc": "Displace amount", "max": 1.0, "min": 0.0, "name": "Distort", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.1, "label": "Bound", "max": 10.0, "min": 0.0, "name": "Bound", "step": 0.001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Displace", "type": "shader" }, { "display_name": "Displace by Direction", "icon_data": "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", "name": "SDF_Displace_by_Direction", "parameters": { "Correction": 0.0, "DirX": 1.0, "DirY": 1.0, "DirZ": 1.0, "Distort": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "length($uv)-0.4", "function": true, "label": "SDF3D", "name": "sdf", "shortdesc": "SDF3D Input", "type": "sdf3d" }, { "default": "vec3(0)", "function": true, "label": "TEX3D", "name": "tex3d", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=$sdf(p+e.xyy);\n float v2=$sdf(p+e.yyx);\n float v3=$sdf(p+e.yxy);\n float v4=$sdf(p+e.xxx);\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nfloat distort_$name(vec3 uv){\n\tvec3 s=$tex3d(vec4(uv,0.0));\n\treturn $sdf(uv-s*vec3($DirX,$DirY,$DirZ)*$Distort);\n}\n", "longdesc": "Displace a 3DSDF based on a TEX3D in a direction\n\nCode - PauloFalcao", "name": "SDF Displace by Direction", "outputs": [ { "sdf3d": "distort_$name($uv)/(1.0+$Distort*$Correction)", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.1, "label": "Amount", "longdesc": "Displace amount", "max": 1.0, "min": 0.0, "name": "Distort", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Dir X", "longdesc": "Displace X", "max": 1.0, "min": 0.0, "name": "DirX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Dir Y", "longdesc": "Displace Y", "max": 1.0, "min": 0.0, "name": "DirY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Dir Z", "longdesc": "Displace Z", "max": 1.0, "min": 0.0, "name": "DirZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Displace by Direction", "type": "shader" }, { "display_name": "Displace Height", "icon_data": "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", "name": "SDF_Displace_Height", "parameters": { "Bound": 0.0, "Correction": 0.0, "Distort": 0.0 }, "shader_model": { "code": "vec4 $(name_uv)_d = distortHeighByNormal_$name($uv.xyz);\n$(name_uv)_d.w = $(name_uv)_d.w/(1.0+$Distort*$Correction);", "global": "", "inputs": [ { "default": "length($uv)-0.4", "function": true, "label": "SDF3D", "name": "sdf", "shortdesc": "SDF3D Input", "type": "sdf3d" }, { "default": "vec3(0)", "function": true, "label": "TEX3D Displace", "name": "tex3d", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.01,-0.01,0.0);\n float v1=$sdf(p+e.xyy);\n float v2=$sdf(p+e.yyx);\n float v3=$sdf(p+e.yxy);\n float v4=$sdf(p+e.xxx);\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\n//By pauloFalcao\nvec4 distortHeighByNormal_$name(vec3 uv){\n float d=$sdf(uv);\n\tif (d<=abs($Distort*($Bound+1.0))+0.01){\n\t\tvec3 n=normal_$name(uv);\n\t\tvec3 s=$tex3d(vec4(uv-d*n,0.0));\n\t return vec4(s,$sdf(uv-n*s*$Distort));\n\t} else {\n\t\treturn vec4(vec3(0.0),d);\n\t}\n\n}", "longdesc": "Displace the height of a 3DSDF based on a TEX3D\n\nCode - PauloFalcao", "name": "SDF Displace Height", "outputs": [ { "sdf3d": "$(name_uv)_d.w", "shortdesc": "SDF3D Output", "type": "sdf3d" }, { "longdesc": "TEX3D at the original SDF3D surface before the displace", "shortdesc": "TEX3D Output", "tex3d": "$(name_uv)_d.xyz", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Displace", "max": 1.0, "min": 0.0, "name": "Distort", "shortdesc": "Displace amount", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 50.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Bound", "longdesc": "Keep this value as low as possible!\nOutside of the displacement the SDF is just the original SDF.\nThis value controls that bound.\nIncrease this correction value if the resulting SDF is not perfect on the edges.\nA higher value will increase ray marching loop iterations and will result in higher render times", "max": 1.0, "min": 0.0, "name": "Bound", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Displace Height" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Displace Height", "type": "shader" }, { "display_name": "Smooth Axis Symmetry", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAH8FJREFUeJx1m2uQJNlV33/n3sysrn5Md09PP2ZnurJ6dldid9lZxEpIFlgSCGzZgiAM3xxgHPiDCQeBg08K0PQib48lImz8hQBhIwhDEMIhXmH7kxEB3gUtSOKhnd3VzuzuTGd17867t6u765mZ9x5/yFvV1TPrjMjIqnzVPeeex//8zy157Nkf0c3NSyiAgqqiKNUJ2NraYvJ6daiub21tgVTnNjc3Rx/H925tbY0f2tzcDFclvPd5dPxNQOC5zeeqa5e3kHBudOTE06NrTIxLUWDz0mb43Ye3zeeqMVze2jp+x4UPfFpHAm1uXuL550cP6wmhQbl0aXM88PH5CQWMpB8JPvFouH58bjwI4LnnNgFBZEJEga3LlxFkPPBjPcj48KDSHxz71uWtMDnH7x09eHnrMvLbf/TX+uBDqsrW1vNc2tysvlcn0fG1B2f25Egmr4/GdGwBx8L/3LuvMHf2g3igV5Z0Ozf47dmN8SxPKuQ9twcsRMLvbG1tnVD+aNvc3Bzfu7W1hUClAEXZen5rbNqTLnBp89IJ4Z/fev7EPWPBJsY5aYKTggsw84VfoGYXkaIkjiylc5Tek6vSV6UP9GzEngjfEQb8/595mZjhB+5B2dq6zOREbF7aHF+rxnkZ+dIffm089c9vbT3kT2OlBKvQBxQ0adpb4+cf3n6p+wYra99N7BxSFBhfot6jKE6VoVeGqhTW0kXYLz3D+hTvHN3gz+cuwIQrXN66fPziCcU/N6FskAdiQeXCD27ym3/wVwqwNeH7oxuPBdWx4FvPb52wimN1MSG8ntDD9K/8F6acY9oItswxziHeod7j1eMVCpQCGCgMEIZRTEcsh0a4g/DRX/qlEy6xdXlrQv7KJN7Lzd5rG923tbWFNJ7+p8dzrg8IfSzPCYX87P6r1NaepUQpyjZ7967z5fknj4WfkP6zUzXqqtSBxBVYVyLOgSsR70EEBUqgUKU0hiHCQIQ8SjhU6CUJ90T4R5+99JD5CzL27YfdgLGyjt3kZEqR3/zKX+nW1mhWTwa8SaFP/fIvkxhBvQcxFOrJvdL3nk5Z0CkdOj1NF6ULFO03mFt8P4vAbOmY8SVTvsSUBaYssYCd0K8KlAglUBqLsxG5jegbi9an6XTfZu/tN1mdn2VpsYGJl7GVSeAF+s7RE+G/OjcOhO8pMLC5+dw4gMr60/9kHAMq0x8JXx2Xv/B55pMakQhFPsA5F4SvAtdQlaEIPYWeCj2gC2h9ioFXapHFHHU4I8qcL0nKglgVq4plMmSBiuBFMLUapY0ZiMUlNTzKtBhmIkve6ZCIIbYWULz3lN5TAjlC1znyOOLQRqSf/SyXL0+4wntglqgKRGEQqoyC4a8cvc7a2oeYnplBnKMshljvyF2Od44oeIpTxQExULcxXqFUpdPpIrWEgRHKOKLIC/rOM6dQ854YJUKwk2NTiJIEjRJyiThz6+/YO/chTk/XKTpd6hozV6tBkSMuR9WjXnHqKbwnQogQCi8kCncub/EjqjyzuVm5wSi26bF7y2/8/gsP4YDVX/gJlleeZTaOkKKgzAd4VzIsCwZ5ztA5CqAAchGGCEMjDFQYRhFdhCOn9IAiidE4phgMmANm+h1mXUkNJREhEsEgiCr16RlMrU4Pw9mbf8vtRz7IbBJjioKZKIZ8SIxHnMOoR73De48HSq84gVypxmMt5dQ07zrPnjX8yXtkp83NTSIRTgSt1f/08ywtf4AZEWQ4RMsc6x3eObQoEa8YQCpgACKICMYbIiPVTIilZg25cxgb0QeWb/4dEbD/yLPk/Q71IqduIFawKDMzswzrMyy//bfUqYJiUquRDwfMRBHDYZ9YHc77KoA6F6xGq7ikHhCMCLGxuFLRYZ/T03P4suRHRPif3o1Nf3NzE1WPnH/qB0cuDyi/U68zbyx1YygHffAlqh7nHXnpyF3J0Hty9Qy8MlRPjuDjhMJachvTQ5DpaXpvvkhPlQg4Zy3Fyjp++jwKFL6K+PPbX6Onimx8lKWdr1OE+0WEvdUPMGMtNXUkriRWj5QF1nsiFKPARCrFGJwIpRgKYxhaSx7XGNbq3MmH3BLD9372syesQH7jf7wwhkprn/mXnF56hlNxghQFlsrM1DucKmUIfv2yZFCWDLxn4BwkCZrUKKIaPRGmd79RxYfmR7FlyXSSMOz3qzwuggNy7ymoovcQYGqKjld6AtPbLwFQND5CfThkwRqmXUHiSyLniFGsVyyVNRqqVIoxOKAUoTCGwkYMjKVnYzrWctc53rr7D7y6/F0TLhBqKhWYXzhPJIIVQQWMsVWOVgVRrFiMd9U9gClL6kmCTNUp4joL2Us4wBhD3vxoFe3jGKNKaQ3el3jPWJGlCDURhsBgmFOUJSaO0Mc+xlFZUqjiZ2cYHHVYEqh7T1yW1IAYJTGW2BpEzLgyNCGm2GANFgHnsGKIvXJm7VkoHVABoaj6cJmfv/m3yGMfw3qPCIixqCpiLUaqyOnUI9YigPFKYi3ENXx9loXrf4mKcPeRZ5lPasxZWwEdV+DLAu8dpStxqhj1IZYo3ldZJBHDnI3IRTjqdomNwdZqDLyHJMGqMixyZkXw3uGlEtIaiwsuI5WJVaoQqWKbCRbiHVYgco6n7v49P/arfwJAtHW5qumf2qiqMFXFKyRJUgU+9Rgb4dWBd7iyxHnA2Cr4Tc+yeP2vQITb5z7IUhQzE0dY71GXg/eUrqQoC6QswblqllSR4O8qBsVTOod1jtlaDSuWo+EQiSyltbSLApmehe7ReKbzENFiY7AiCIJTxWPwCBhTvduDcyWl89hajTipjWOA/c+/+t8/98KLL/KBt69ypiZEtQUiaxARFEWMhSjCS/WyUhUvghODqc/Q88p8e5e6CCw1mTaWGoJxBdY5xJX4fEiZF6C+8tZAuqj3ODcRxKTCFSqCiWNMHDEsSrwRnBHUWIyxGPUYqVxNjEWsATHVuAAnQu4VJ6YCR0VBaSxDEco45rB3l69843VefPHFKpBuXtrEqzLotSlResMhw7JEra2iqkKh4EyEE1vtJqJTFJzLXmJKhHvrH2ZKhLo1SJEjZYHxlQKMKjVrSKwhNobYCJGCCWgwEiECIipAJc4hZUEE1KIIdZ7cOQ7LkkGtTj+pMYxiBmIYqDLwykBhqJCrMHCegkoJeenAWLxAMjWFCriy4PvkFqBEW89XDM8vAs7luMPryKnHKIFBf8D0zDSFc7gwO95YEKE/HHLu5t9hgJvnv4e6KpEqlCUSCh1RrdwkjnG+MvERflAxqBrw1XcnggEiI8QieFUoHZExGKr35F5pFwXexhWMdqNyWipwhCBiUKkEdsZUrxchnpqi5z0M7qDqxi4QjTDQUJX6mRWGe3fx7iq69ATEEUeDAU7BJvHY/IdOKW0VfGoiGO+JrMECWjoiMSAewSBR5ajOe2xksd5jVRGv4D3OVSk2ApwYvDEhklPFICAytoo/aIUZBFDB2Igiz0kEYiogZsSAEdSYalfFxgk973FG6B7e5vTqWbIs49KXfg07v3LhcwL86OmEW60Wa+fOM+zskx/dwmoPU6tRmBr9oqgwQJFTCCzvfB0jwl7zo0TeEQOJMYgqsQ0YXz1RFGGtxUYRxlqMtSAGjMFDtYciyBuh1Cq+VFBbwlHJoQI4Id8X+RB1jshW2SqKY6amp6nVpzFJgokTNIopjSE3Qt57h+5BRnR6iTeyDID//fINDCJsPvcch97TU2Wgyq1On+nlFcx0jcO71+jdu4Lv7aCujY8ihu03GKqiqsTFHnEUVYWMjTCmSkXGRsRJQhTFxEkVeaOo+p4ktepaHGOjGGOCUhDEGMRUQU1Vq+qzKBAxFRgToaseZmYpkxo9hXhujnh2jtLYiZjgGXiP67/N8N3X6B3d4fbhEdeyjGazyQj8RSMq+m9u3OB9UURPlZVGg4EqAiSnl/HAdpaxMLtHqUptaYW8vcf9Wsxy3sEkSySJwViDNQnqXMjRVbqK4giMoSZCbzhAS1dVLcYilooaE0ERnBKKm+Mip1SPjxUPUNynLId0Zs6TJDEztRq5GPAOq1Ar98h7bYzm9AY9cpRb3QGdwDkWqmRZxk7jI1UafPnaO5/72Mc/TuNHf4Jb/+vLHLXbtA8OePfggNn5ea63WkzPzzOzsICZnsHWZxgA0m4zv95Aex3iqTNYAgILJEUcV7NtowixlnPPPsupn/5pDr72ErlzlKqUgQssVMlVq6itVYU5KB1DhYF6qE1VdYYI/YOMfq+N5HuY/JC6dtHuHbR7C9d5h2LQZnZxAZKEnft7HOQlK40G77TbdELpDnAwfx7QY0oMlH+jN+nv7jItwuPNJrutFmmaosB2q4Wqsp6m9LOMGREOjCGdnebU4jo2PkM9ikmMwQDWCEmSYI3FWENSq4GBg6MO/SKnlxd0h0M6eU4nz+mVjgFSCS/QVxgYQ1mr0QUOVem2r9IdHHFqeQ0PzImwZAx7OztMhVS60WzSarVwqpxNU4aqdFV5Ncvoeg9A2mzyol/l0uYmEXKSLr6/9e84JcJrWcajacrrWVaxNcB6mtIDeqqYADr2un2S6C71pRUGRY4Tw2y9jvMeF9IgxjAoS/LSUSCojauk7xW84gqHN9VveAGP4AWiWo0BSongD99kOOywuLzGjVYLT0WpLRnDdzab3NnZIRKhH1z4epZVNHtQwJlGg26WjYUfsdhm3CwIjOs3b9zg5e1tltbXeS3LONNo0Asv6GmVho7CsdCKyc3zPq59FWyEN4ZuPiT3nsNuj36RMyhKSgUf0JwTGe/eGOKpGnF9iqnZGZLpaSSKSOr16roYyvY1er02+90BrVaLZpqSpiklsNJo0IexsP0wtuU05dtZRleV10LUT5tNsjChoyAoXwq0+OR29XP/lr2dHRLAipCm6TgQKhUT9Dhw4dFHOdjZYUaEc6dmsCZh+tQaTK0gqiRxghhTwV4EiSxOYVCWDAOvMHCuaop4T885hgg97+mqkg9vsX90j4NiwG53wLngjl6VG60WCjyWprw7cgEZ1bYVw3w2WPB6mtIKSmg1PjwWHiCaaDGOt9vO0fOe9zebRCJ0tYrAZxoNPOCAg1aLq1nGBzY22NvZ4dZRj8fTZfrv7hLV9qnNnmEYrSBOK2AC4DzDsiT3jsJXga8AunlOTpX3cxTXv0k5aNMddpk+s1oFzM72iTGmaQrAW60WTzSb1ER4J8QsHxTw2nb1zEj4RpqyXXqMMeP3RNUhNBtGnZSkyQ81hE5AaDvhBS7sHlhWZTnghrVGg7oIOZCcPsPbrRbLeQexNzFJnag2A1MLDGWWEq24AGXMLInbR/MuxbCH80O6+ZCp5TVKneO17W0WG40TwmetFuvBGgAGqmStFoYqPo3G2Aj5vpVlNNKUve/4AT5x5gxzc3PMzs7w5d//fSR95lPH0z9hCJ8qWhWOB3ZC0HGqlOE47T3rScKatTzdbHJvZ4fHm01utlpcCBlkxL+dPjWDV3AoDsEhlGjlClrR6zmQLK2M/fjbWUZHldONBt/e3kY59uHE+6oAExn/xkaashN+c3RuZCUK3Gi1mPvkTzLZ8JmuTxNN9lB0gqRfs5ZeyM9pmnI9y3DBtN4nwpExOOfoGEMvDHqgympIPWuNBgK0Wi3ihSU88Harxfk0pQwgK8syHknTMTdwLUTuESJdbTQ4CoxtMwi/qMoRkAST3glBcZSpJjcfrEWBuR/8yXBDpbQrV64AYDY3n5vQ2fF2tLvLWWNYNoYFY5gJ9FUswuuq1IDXy5KF9XW6IepenUg9gyDQappyLcsYhnOj85PnrmUZA2A1TcfH1fC+EXDJQgortWqm2uokPsSnkQJGMWo9TdkOrrKepgQ6kldeucKVV66MM5/81h9+bUwKj2OAwn+QW+y2WhVxqcpySIPfzjKWglmmwIq1LG9ssL+zQz0oKQIuNJtjc8yybFz4nE/TsSW9lWXkVJXoWhB4pdGo0leoTZgw/QbwtnPURJgNiPMGFfgZuepoG1lFKwTGvxwsvmfn2oyEhwCIFH5RbrG3s8OcCAsiLBvDcHeXs9bykY0N8t1d1qxldmODjvfkWcbpRqMCG0FZr29vczXLKvcISlxpNE7k68n8/XqwnteDErqqpM3meGbTcO+AqgR3QJ6mNNKUOjAtwnc0m0wB70tTdieU0Wq1aN75FhefuVjxnZP7l4IFTPb2f3b36zzVbHJ4/x4qhsKVzK+sMpwYfHdi0POqHIhwyhimgESER0MgnPRPD9zIMkrgXKNBAbyRZZxNUwaqXM0yloMFeD2erlVgRoRXi4Kz1lIGkzZUcaUuwnlraabpOEOUIbAOQkwRoP2+j4c3yjgG2Jev3fzciy+8OGEUyvcf3WR4eMjC3GlmTjeIT13AmXk0XsRHiwhQFiVzUzXKfpeVZpNau8091bGgs/PzzC4sUFDl6nv7+0wvLFCfn+duu019fp4hcLvd5vb+Psn8PMn8PD1V9ttt0maTg3abRrPJ1MEB22XJkrW4AGoWFhYwwOLCAuXhIU1reWRxkeHhIasLC9zc2aF7cMDphQUArrda1B59ZqyA1dVVVldXkfTiRBoMJvBb0b0qrw+hmHoEp1WrqhRB45ihVIsY2v0+OSDlDq++9RZnjOEdEd7fbBIDu60WGyEXTyK4UQx4JE3HHeZRAG1M3I8q2moxUOWm9xxIBaiWllaIbQTeYVRpRhHvjxIwFrUJpU3ox6cpBnc5GhzS7h2QdToYYOaH/hWTQT96MDL89M7Xedtanmg2KV1JIgYvOu7nl96TeweqzNUSDvoDDg97rFtLW5WlRoOOKjHQVeXbAY2lzSY+xIfrrRbngp/noywQTF7DMWu1WA0Wdcd7FkWwK+sM4lU0SXBSUWACnLGWqdDH8FK5hnpFkzPUa8vkxaskUlHmFfk87g0fc4Kj7bFmk/PGsNtqcfrUAslc9WB1ewWbEwBrGXplKopo5z3mjamQXavFVSqMvtxojINRTxUfUFovxI+zwQL6E/4+mbsLqq7UfMD5rn6eotdl2O9Tr9WYihM2koSGjbDqEWMo1WMRVCri1WsVNGPgfLPJXa3wzitXrlQKeDA1aBjAk80msQi9o+uY+cewCANXYlSIxRBFMW44RMuCC/0+fRFiY7jnPY+GmsEDeXjntRDYHMGdwszneozMxrwDFcgpsoxaIDYdFceA8xigLApmjKFJQgJjbtCKoURwzlOoYrvvcHDQHi/GuHLl5WMXEMUcQwhlc/MSwwB3b7RabLda3L9/G99+A6DyO/Wocwx7XXyRUyv3iKmi9JwxLG5scLS7y4wISeghjsqtMQk6iddD8TLaR8Ala7WImk1UK+5h1D+YSmJia5lTeCKKWbV2zEZLQJTVDpExSHE0TqejomgsswYcsLm5OV45dd/7arkacL7RwAEzs3X8u6+i3V2sjYgiS2wt1kZMxwWxCFMi2DTltDF8z8YGg91dzhjDvDHMiozzdC0opibC+9J0DJx0Ym9N5HCaTQoN/YXeTWan6qxby7NTUzTrdaKoWmkkQkWJA6qe2LfR/avMzZ9iO5TEABcvXuTixYtjRUSqOg48AIuXfo3TX/g5DnZ3qxI1IDYFzqdz9PdehWQWsPjOPWaPDisTBzYCOpsW4YwxrBjD/MYGQ1XebLVYMoa5jQ3eCjVAGRT93RsblMD1LOOUCE82m1zPMqLgLm+LoKosDw44PX2OldlZpvMCNVL1G8QE3FC11Tja5s79WxV5s7/HuTTlrvc0m01uBzlHSjCosvX884wUoapcCYDkapaxlqbjYFUAd97d4/btFndvXWfm9CIAbwHvbzaph5meCaBoUYTO7i693V0+tLFBf3eXlaCYFWPo7e6yHOqNM8bwbHCfBWM4FSzn3s4OMRUx0z5s43q7FAi2PhVadpXL2vJd/OFbzPh3uHv/FufStEq1jQa5Kttj8z+5mZHZbW09PzbCd5wb016jwmbIMWo7m6YVwMmyqjcgwu1WiykR7uzskO+/y9m5WWYCX3fKGNo7OywYw2ljWAzHD2xssBiKrfbODqfC/b7dZn1xifLwiJXZWRIRLgREOTVtybtZtSrFH+GOMu5uf42bN9/k9t5d3gxjHB2vZRlXJ3sBD2xy/slPjouhUTwAZfiFf89RKHAeC4UNHKcoFxQTBZMdsbKDThdnpojqc5TJGVQMprhP6XJylzMsClwgRYYKOYbCRJTJDF2ZDYucFFfu0+sf0Bl2uNXeZyXEo51WiwVj+ODGBvMi1EOFOuJ4HPBmAFUdVdrec6rRoJVl1H7wJyuhJxRg55Y3PjepkRdfeIGPf+zjRN/3zzCv/HXVI2i3x7B2Zn6emfl5phcWuNduE4swPDigf3DA8uIiWpTUZk4jyRI2DMwmc8RTi8T1JeL6GYgX0GQRO3UajeZQO42XWmhuSrXyy9Sh7JDnfc6cXeOtLGN+YYH9gwPSNCUOFNjBwQHtgwPm5ufDWkGYCrA6mp+ntb/PqYUF2u028YVnHir8H8IBBApza2uLH5OS8+vr3N/Z4cB7TAhyO6FHoFQBb6PZZDpYAGVBpB4J7zWRBWPJQ6PTqpKgmMiSe63WAZSCpUKb6jyxhO6QK1haWuS1wAX4UNSMGKPFMJ4SxvR9CayFgurQ+2p5D1APs/+QC5x74vsVqP4bMLGVRcnnv/B5PiV3eMRa7rVaPBrqbhPMyIjQ393ltAhPbWxQo8rV/X6Jzm5gTBWdTRRVRAZVG3xYOkpg6B2lCL2iZKhKryzJpWKFi/wuh5372IVTdFR5NdBi6wE33NnZYSEE3ceDi47Y4KtZxlGoMZrNJl/tzXPx4tM8SPxcuXIF+eKX//wBTlDJ84K8yCnynDzP+eIXv8i/iPe412qNF0hFIrw/TVm3ljMT3ZlYhDPz88TTp5HZBmKkWlvsHVhLHhY7lFK1B3Pv6RY5feerxVKqlG6fo85d7NwMr2YZi6FuUFW2Az+pwNMjywvcoAPyYB2NkPezLOPNlYtj4StFHFNi0cPC5+N9MBjQ6/X48R//cb7ylT/gH5937OzsVGAGWFJlharUPBUqtTRNscCwcwidFjLXBFOhSA9YgTiyuLIE5yvQYiNyLbEoUe8Ww36bd9vv0nn3PutpypXtbdYCOhzR3lmrxWtZNg6+o9pBA5EC8Ke9U7ByMYj+MB0UJwnmmE1UiqIY78PhkF6vT6/Xo9fr8clP/gAvDBe5unKRby0/zR3v+fPr1zkKi6bPhU7NCOJOzc5STxQOrkFnt1rXq1qt7S0dQvhLjIL3nmh4Gw7f4v6djL2DfdYDdTYCS60sozma1YAUlWPCYxCKrdH5/9OdI/zNBQWeePJJnvrO7xyr4Wd+5mew1h6Xw857yrIc78PhkOFwEI7V/uyzz/LNb36zCpMf/GHKsuTm0ZtcbDR4I8tOIDgrwkaaEk8lQE5/71VyNRAlVcrySlnklGWO8wV3Dw7oB4LzfJrSUR0LP8kOZRMwWSb2UQC8sfQU1zrVGRV49MKjRFGED43R+tQUn/rUp6jX62xeunTsAt5VC4+ddycUUbrR54KyLAFoplWREkURf7r4BPLKV/nwxgZvZBl1ERrNJhEVtEUEgmAjxvZcmqIK927dIqeK2ufm5xlQlcqvbW+z1GiMCdNJ4dfTlG/4lROm3O12mPjvSLW+UYT18+dxzo3XED598SKPv+9x4jgeP3usAO/xvlp+Pv4cTAiUl156aYy3sywbNx0AbgXkuJKm3NvZqaDnzs54UfWoxX4j9AXeyjLOpSnnAsQe0eIrjcYYwb26vc1AlWmOewKNNOWlB4QHmJmZDYroArC8vEwUWbxXpqZinnzySdbX16nX63jn8dahWq1zjIATxRCMGFPhj//4jzgulo4bj6C0Whly+2XSNOWVtTVOb2/zoQsXWA7d2tVGoyqFpVoKO6LGx4shVHkzyxjCmBR9PctYDYzSiIp34VkF/ubWLVh9WAGT29LSEgsL86ytnWVxYYH6dJ3p+jTeV4s+q8nVaqW4hBhwTBMLxgj/7b/95ljo4y2szgLM7ZfHwWSn1aq6xOfO8Q/b2yyG3JyI8FiaspNlY8U1gqBrE8c3QpNkRJuP2OaOKrMc1/C3ajVQxdx5+YTAfvWZ8ewbIxy02xweHrCxceF46ewD8K+a1DDZX/y9P1MFXFnyHz//eeD4P4LjFZ2jB1SR2986JizDEeDpp59m5do1vvfCBfZHmIDjBgkc0+IjUnS0gmOgJ/uBh6rVmr6guLuzs8E9/XHVGqanE8yete/CWDv2dxHhh3/400xN1anX60xP16lP1YmTmDiOieMEay3y67/3Z3rcETr+37ByLPTos9z+1kOCj51HlQ9/5CM8cf8+qwEY1UR4NE3HEHpEbd1otaoyFU70Gl7LMo7C2oBR9fb3+/th/fJxuY4q7YODagYJlhsWcevZ7zpWQqgtfupf/xT1er1anRbH492E5TzHmwRPD8eRW4gI9s7LJ7T7Xvs3vv51bpw7x7ZzTK2vM7u+zn6oyA6855Us45WA0UfHwzDjL29vM7++znKajoX/1sEBYgzGWiJriaKIg3abg4OD4xRoTLUGUaoldvbOFcY943DT7/7O7xJHMdYarDGV4GGNgPz67331uDM0ns2JJrICD8z85Kw/aA2f+MQn+L9/8Rd8otnkkUBqxCK8HfL3KBWOguEo9Z15YA3An7711vjz6uoqAty+c+fEPTYoZyQrARIjgq49czyZMkqRwmc+8xmiOHpYAQ8pYVL4B4R9LwX8809/+gSSfPGFF1DgBzY2mAsc4IgidwHgDEPBMoKuAF99883j3w8DP7u2xu3bt5ncoiiqFlQyEeMmFCCAn1DCSAFI4DwqT+f/AUvWjyKemnc/AAAAAElFTkSuQmCC", "name": "SDF_Smooth_Axis_Symmetry", "parameters": { "mode": 0.0, "smooth": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Transforms a SDF3D making a mirror smooth symmetry using the chosen axis\n\nCode - PauloFalcao", "name": "SDF Smooth Axis Symmetry", "outputs": [ { "sdf3d": "$in(vec3($mode))", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "default": 0.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "sqrt($uv.xyz*$uv.xyz+$smooth)" }, { "name": "XY", "value": "sqrt($uv.xy*$uv.xy+$smooth),$uv.z" }, { "name": "XZ", "value": "sqrt($uv.x*$uv.x+$smooth),$uv.y,sqrt($uv.z*$uv.z+$smooth)" }, { "name": "YZ", "value": "$uv.x,sqrt($uv.yz*$uv.yz+$smooth)" }, { "name": "X", "value": "sqrt($uv.x*$uv.x+$smooth),$uv.yz" }, { "name": "Y", "value": "$uv.x,sqrt($uv.y*$uv.y+$smooth),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,sqrt($uv.z*$uv.z+$smooth)" } ] }, { "control": "None", "default": 0.0, "label": "Smooth", "max": 1.0, "min": 0.0, "name": "smooth", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Axis Symmetry" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Smooth Axis Symmetry", "type": "shader" }, { "display_name": "Smooth Polar Repeat", "icon_data": "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", "name": "SDF_Smooth_Polar_Repeat", "parameters": { "Axis": 1.0, "Distance": 1.0, "Repetitions": 6.0, "Smooth": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "vec3 sdf_smoothRot_X(vec3 p,float s,float m,float distance){\n s*=0.5;\n float x=asin(sin(atan(p.y,p.z)*s)/(m+1.0))/s;\n return vec3(p.x,sin(x)*length(p.yz),cos(x)*length(p.yz)-distance);\n}\n\nvec3 sdf_smoothRot_Y(vec3 p,float s,float m,float distance){\n s*=0.5;\n float x=asin(sin(atan(p.x,p.z)*s)/(m+1.0))/s;\n return vec3(sin(x)*length(p.xz),p.y,cos(x)*length(p.xz)-distance);\n}\n\nvec3 sdf_smoothRot_Z(vec3 p,float s,float m,float distance){\n s*=0.5;\n float x=asin(sin(atan(p.x,p.y)*s)/(m+1.0))/s;\n return vec3(sin(x)*length(p.xy),cos(x)*length(p.xy)-distance,p.z);\n}\n\n", "inputs": [ { "default": "vec2(100, 0.0)", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "This is a Smooth Polar Repeat based in a technique I create based on the Blackle Mori asinsin smooth repetition but for polar repetitions. The technique was later improved by gaz.\n\nA shadertoy with the technique is here https://www.shadertoy.com/view/NdS3Dh\nGaz improvement https://www.shadertoy.com/view/7sKGzR\n\nCode - PauloFalcao, Gaz", "name": "SDF Smooth Polar Repeat", "outputs": [ { "sdf3d": "$in(sdf_smoothRot_$Axis($uv,$Repetitions,$Smooth,$Distance))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 0.0, "label": "Axis", "longdesc": "Polar repetition axis, objects will be repeated around this axis.", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "None", "default": 6.0, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the axis", "max": 32.0, "min": 1.0, "name": "Repetitions", "shortdesc": "Count", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Distance", "longdesc": "Object distance from the center", "max": 5.0, "min": 0.0, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Smooth", "longdesc": "Smoothness between objects", "max": 1.0, "min": 0.0, "name": "Smooth", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Polar Repeat" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Smooth Polar Repeat", "type": "shader" }, { "display_name": "Smooth Repeat Fold", "icon_data": "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", "name": "SDF_Smooth_Repeat_Fold", "parameters": { "Axis": 4.0, "Iterations": 2.0, "SmoothX": 0.0, "SmoothY": 0.0, "SmoothZ": 0.0, "X": 0.5, "Y": 0.5, "Z": 0.5 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "//From https://www.shadertoy.com/view/wlyBWm by @paulofalcao\n\nvec3 smoothrepeat_$name(vec3 p,vec3 smooth_size,vec3 size){\n size.$Axis/=2.0;\n float w=pow(2.0,float($Iterations));\n\tfor(int i=0;i<$Iterations;i++){\n p.$Axis=sqrt(p.$Axis*p.$Axis+smooth_size.$Axis);//smooth abs\n\t\tp.$Axis-=size.$Axis*w;//translate\n\t\tw=w/2.0;\n\t}\n\treturn p;\n}\n", "longdesc": "Repeats its input shape with smoothness using folding reflection symmetry\n\nCode - PauloFalcao", "name": "SDF Smooth Repeat Fold", "outputs": [ { "sdf3d": "$in(smoothrepeat_$name($uv,vec3($SmoothX,$SmoothY,$SmoothZ),vec3($X,$Y,$Z)))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 3.0, "label": "Axis", "longdesc": "Repetition axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "x" }, { "name": "Y", "value": "y" }, { "name": "Z", "value": "z" }, { "name": "XY", "value": "xy" }, { "name": "XZ", "value": "xz" }, { "name": "YZ", "value": "yz" }, { "name": "XYZ", "value": "xyz" } ] }, { "default": 2.0, "label": "Repetitions", "longdesc": "Repetitions in the X axis", "name": "Iterations", "type": "enum", "values": [ { "name": "1", "value": "0" }, { "name": "2", "value": "1" }, { "name": "4", "value": "2" }, { "name": "8", "value": "3" }, { "name": "16", "value": "4" }, { "name": "32", "value": "5" }, { "name": "64", "value": "6" }, { "name": "128", "value": "7" }, { "name": "256", "value": "8" }, { "name": "512", "value": "9" }, { "name": "1024", "value": "10" }, { "name": "2048", "value": "11" }, { "name": "4096", "value": "12" }, { "name": "8192", "value": "13" }, { "name": "16384", "value": "14" }, { "name": "32768", "value": "15" }, { "name": "65536", "value": "16" } ] }, { "control": "None", "default": 0.5, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4.0, "min": 0.0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 0.1, "min": 0.0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 0.1, "min": 0.0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 0.1, "min": 0.0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Repeat" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Smooth Repeat Fold", "type": "shader" }, { "display_name": "Smooth Repeat Infinite", "icon_data": "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", "name": "SDF_Smooth_Repeat_Infinite", "parameters": { "Axis": 4.0, "SmoothX": 0.0, "SmoothY": 0.0, "SmoothZ": 0.0, "X": 0.5, "Y": 0.5, "Z": 0.5 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "float blakle_smoothrepeat_asin_sin_$name(vec3 p,vec3 smooth_size,vec3 size){\n vec3 t=p;\n t.$Axis/=size.$Axis;\n t.$Axis=(asin(sin(t.$Axis)*(1.0-smooth_size.$Axis)))*size.$Axis;\n\tp.$Axis=t.$Axis;\n return $in(p);\n}", "longdesc": "Repeats its input shape with smoothness using reflection symmetry (Infinite repetitions)\n\nCode - Blackle", "name": "SDF Smooth Repeat Infinite", "outputs": [ { "sdf3d": "blakle_smoothrepeat_asin_sin_$name($uv,vec3($SmoothX,$SmoothY,$SmoothZ),vec3($X,$Y,$Z)*0.635)", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 6.0, "label": "Axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "x" }, { "name": "Y", "value": "y" }, { "name": "Z", "value": "z" }, { "name": "XY", "value": "xy" }, { "name": "XZ", "value": "xz" }, { "name": "YZ", "value": "yz" }, { "name": "XYZ", "value": "xyz" } ] }, { "control": "None", "default": 1.0, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4.0, "min": 0.0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 1.0, "min": 0.0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 1.0, "min": 0.0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 1.0, "min": 0.0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Repeat V2" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Smooth Repeat Infinite", "type": "shader" }, { "display_name": "Smooth Repeat Limited", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAQAElEQVR4AXR7B5hc1ZnleaFydXV1V+dWB+UstVBAKAckhEBCEiLIJhlsgsdjZvab3YnenZ39Bs94x/aOvYONtQwgoQAIUACBBAiQhCRQjq3Y6pyqqytXdcW3539SC/mz3apb79V79917/3T+c+99UstGzjdGTF1hrH7q74w//4eXjZHTVho1E5YYtROXGnNXPGv87b9uMP7h3zYZjz73j8a0xY8ZKx77r8Y//fvbxi9f+9j4l9/uMB7/0UvG4gd/xOM/G//955uNf/nNdmPtMz8xhoxfYlSOWWRMnveo8eOf/MZY9/w/GaNnrDLqJi8zaifdYzzy7D8a/3v9B8YLf/MrY+Xjf21MWbDOrPdv6z80fvXGXuNfX9lpLH34RWPxmh8ZP/zbXxs/ffl943/8cqsxfckTRg3HNnTKcuOeh//C+AnHtmTtj42xM9eYcgy/4z5e22z8lOP4s7/7v8ayR//SWLT6z4yX/uN949/Z7sub9hn/61fbTDnWPf8/DdXj8WDSpImYNm0ahg8fjlWrVqGurg5DamowcuRIyJ/Cr0gkgp7eXpw9dw4HDxxET3c3rly5ikuXL6GttRXneP3ixYuIxWJ8dgjmzJmN8vIyVA+phs/nw5zZs/H4449j2NBhKC0phW7R0dbWZtZ1F7gRCoWxa9dO7NixHc3Nzejs6EQinkAwFMTu3btx4sQJqIrCdudg3tx5qKyohKZpUFQV99xzD55+5mlMmTIF5RUVuHzlMjra21FZWYnamlp0c6wbN27Eu+++i6+//pp9hZDN5sx+1Gw2i2vXmnDq1Cn0+ntxrekauvjA9abruHTxEox8noO1YNiwYZg8eTKKvEUYQcWUlpZh0sSJWLBgAUSJ0o7NZmPDWdh57OnpQSqdRlNTEz788EMcO34cvVRgciCJYDCIL774wlSApqqoGVKDpUuXUvH1cLsL4HS5MGLECNy/4n5TcdQ/+vmMKMzFeyNHjUQmk6EA1/HhBx9i586duHL5iqmQdCqNE8dP4LPP9qG/vx/l5eW49957MWvWLORzeeQpzxAa5b77luOBlQ9ALaZ15s2fh7vummlWnj1rNpbdswzV1UMwdOhQOBxOU2jR9NUrVyCCiUA7duxAX18fPv/8c3R0dsLv9+PgwYPo5HlZWRnbuwtjx4yFw+4wvWvSpEmmhz380MN48sknUVtbC7FoT08v+6pGaWmpqRjxpDc3vonXX38dZ86cwRX2KcI2NjZiz569uHD+AsSDHnjgAUy54w6I0sVjJ9IYc+bMwRNPPIGnn34aI0aOQFt7m2kQuS9Ky+Vy+OrQIbz88svY+OabNHQX1M7ODuz/cj+OHTuOWDRmWkYE7OhoZ+Wv8Olnn5peISFQWVUFp9MBX4kP8xfMp7uVm8I88fgTpvVmzLjT9JQ0rVNCN/d6vUilUhz4HnzwwQc4ffo0Wlqa6eY70N3VhSNHvsZOuv2evXswQM+QEKyqrkIun2N7dZgxfQa9YAX+/u//Hvfffz8mTpxAo9QjEAiYgk9pmGIev9z/JTZt3mSOvbu7C5cvX0bTtWs4ybDZtGkThd2IXipajDB+/HgUFxeb3uAuKIBaQJcT7RcVF6GwsBDTp0/HvHlzUVTkxahRo7BwwUIzbsX9x48bhzK6lK7pOHP6DM6eOYuuzi5a6rSp7S+//BJbtm7F5UuXEY/HTZd3M75VVTEFdLmcqKdXrVq9CsuWLTOFqautYyhNQllZORZQqbPpqg6HwxRy//79OPrNUdPTxLPOX7iAzZu3YMOGDTh69KjpjRUV5SZWpQZSpvdZrTZMnzEdax96CMvo+mJ5kc9mt2H4iOFYvnw5Vq5cacp66KtDUNOMU3ExVVEQDofRTstfZjwlEklTi7s/2k0AOk7LteDc+fNm3EodGZDT6WTMuk3wWX7vctP6oiTpVBR495K7IYAlbhomiAZDIYZKL6xWKzrpAYIJ4uISTgJQJ0+ewvXrzRAFX7x0kYB1xByTPN/Q0IBHHnkES9imxHH90Hoqsx7z5y8whZo2fRqyuSwOHz5sepqRN+ChhUPBEC4yfHYRJ9555x0TCKVv8K+vzw91YGDAdBkTZVUVoi1PoYe3gRxBYwE7ENcePWo0Hlr7EH7w/R/gTrr6okWLTM2L11RVVyNv5E3AO3ToMN54/XUTVFtb24jsu+gJftMFP9n7CXbt/IDt5iAILYitaiqt3YdZs2dhyh1TsGjxIjz/wvP40Y9+hNmMacEhu92OCqK7eIuN5wKkmxjD63/3O4bRYRPsDh44gC4qtbHxAj5i1viIhhMwXXrPUowfP8EEcsGvuXPnMutNwkMPrTX7UMsIWGKp1avXQAQvpyveOWMGpk2biqqqSjOFCJKHI2E0UpPbtm1jp0ewYcMb+MUvfmFq+/Sp0wSn85AwEmtZLFYzAwytr8djjz0OcXcJpxqmVnFBG910/LjxWPXAKhOh6xkWrS2tbOPCrfT32WefEZsY25s24aWfvoT333vf7Kud6W0IAdrjKUQkGmXotTN8yvDCCy/gse9+F/Pmz0cd+x0/YQLsNjuG0DgrV67AU08+BcGMA/sP4DCNdIlh6vf3QY1GIzh39hz27fsM165eM1199+6PcIho2cRUeOjQV5C8KvldUp2kp2o26ispgXiB/BZ8WLdunZmPy8pKTcWJJyWTSYaIy4w3VVVMZX7Gfvbs+RjffPMNRJgjh4+gmXn/wMEDJiBepOsnkgniw1DMnDkTdXV1ZiYZPXqUabmVK1Zg3XfWmW5fS4WW+ErQzLBJsK9a4ol4qoSIjF/So2QOAdtLbFf6kzQvY3hn2zs4dvwY1BTzZjwRZwqsMDUprrmCnSxZspRAWIQVK1aagorQkyZPwgx6h1haSIrZKDFDwkjIxmfMGMIhzpw9ix3bd0Bi7uTJk2Yqk7hLpVOmgjsJnPW0kvQl6UzSluRp4RUz75yJMnKMqXdMxcKFiyDXc/ksQ+o0jp84DiFjuq6b7t5BsiTERnDqra1vYc+ePcQYP5Sb/0Sxp8hvBNtGjhyFtWvX4ntPPYUld9+NMaNHs4yBOm78OBMVJf48Hg8EgS0WCzo6Osy8vGvXLojbCPMTIbdu3QLJ1YlEApfoRjt37OTgTkGYXJG32HxeAERnbM8ZMwITPA7MTEfwTEURnhlSinn5BB6YOAouIw0b2aCPKbWMHEAIjIDg+vXrzdTb2tqC1rZWfPLpJ8hl8wTH69jz8cd49dVXyUQPwOv1oqa2xkzLAuQKPWzKlAamyolmav6rv/orPPPMM6itrTUJnJXAW1RURCypxIQJE5EnSG7eshnqBaaWrVu2YMvmzYzxCyQ1HSb1vEyKK4JkyRRFGRIvngIP7rzzTkwmqSkpLTHdc/Wa1aarSn59iKnnCdLd6QTMp4YMQdm+fSjY/gHqGptQfbkZo9t6sER1oHj/EQReXY/LW9YjcP0yBdsDodFi2WgsCkl9jY0X4Sbrm01iJql5FENAgHDx4rtNz5Cc/sjDD+PFF//CDIfiomKmxV40k2dEiFfCK4SciduLUoX8CBc5duyYqVjxehezGPUG2Jl3a6gpFzsU6jiXPOBe5suJZFdShIRMIKg4SYKkY5k3OMkQVVXFVc4HLjK+pMGWlhbsJQKXXr8OJ/GkUreihNnBm0ujMJOCJzMAz0AC3kQMVXkVBe0BtH20Aw1jR2LFyhVYft99JieYOvUOM+xkLA0NDbhn2T0UeiEKaXXxjI/pCY0XG+mhIdNTj5NmSziKt7737nvYRdJ1iWRI0vsQGkLkEo89c/YMEjfxZSVD+36Gujpp0mSsuH8FZnOyUkvAEfcXlJU82kQef+nSJXrEh5BJj+TyI5xMbH3rLZMPXKegotGPCJrnz51HAfNuvaqhBgasmgYLACWXgcHYl6OFyrAaOdioEFsyjkKSl6L+BLp3vo1yVq4tsKMs1A3nueNof/lf0P7Gy+j86F1EW65g+9tbqewrkPmJgJdYc+/evXCRXA3nJE6UJWMXsI5GohjGuUtDw2Qz7p9+5mk89vhjmDtnrknPbcxCkv1GEwdU4dtvUaB33n4bQkqC/UG8//77JnWVxuLxmCmscH4BkyrSYdFqYWGhSUOFVgpBkdAopoWGcgYYJ+eOUQnhbAZBCh83DGToLbBYoNtssBDEVNJdSyqJItLm8jgQ2bINylvvYXpnAPPiOYyKGKhp7kPZyYvIbH4Hd3RfQXU2Bg8FFpwqcLtNgPR6izBv3jz84Nln8Td/89dmJpKxCAUXD7CTNxQyZYpyJNx/R+7wi1/+gl6yC2JcFfxTFAViXYkXRVHMSYvEnfAAAY4ZjHuZZEgeF1B5iIRI0HRETTXGVFfAHQsieuooIie+RuDSSYRifrT1d6A9HkYPBeznDCyi6Rig5nOcHIHhY+HALPQSm25BIY/lBKVKekg5Eb8sn0Yxw6U4FUdRPIJKzicm2MswjW0tG16JBRRYvE1mlUJ+BEANKlkmP5JeJRTW/2493qZR9x/YT2xrxEViihAolUEvtPkUWad4kVroLcQdnFWtWrUKC8n7vV4vJO6WLFlCNxoOaVhTVURJOtIciIRGD8lIB3N5zdWLqOaMTWGm0Fj0PXtQ2tMPn6ojS8WGIp3oTgbQRWv3cIABWj5EcpJhtsk5XRBlGHYnHPSKAqK0XTGg02u0TBpW0lobi4O/7QNxuIkddRY38ifPInCEU2lO22XStmv7+/jwvW048skenOSkKBXohdXIIkuK30JydYh8X4BcsGwViZfIeQcZp7fIa4aEatA6Mq0VLWbZIVMoZOYnYSA5NkT+foj8+o033sBvf/sK9n70Efw7tmMI43+m1YVpuhVDU1nU5IFqLjJU5xVUaQ4McZfC6atDKpeAP9yMFt5rYulg/URJOQI2B/p4HqHVBwwgzZAZoKISFD7Na6An6roGq67DKue8bklE4UvnMawvhkUUcn4qiOld1zGRgFv79VHMIHFbp1qwlm0tSHajLBXCAk71J0wYT4pfYnr2ODLQpVxAmc4FICFLZIIxCLJufHOjSW0lx8ssTBYf8lQObv5JHC1evBh3k7aOYYz76BU+urWHLusiwjtYnByki0cXY9tJ1y3UHfAU1yPFej3+RjT623Dkwn7sPvg+Tjafgb/9JLTmIwgngvATK/roYf1sO8o+k2w/y5AxbFYoxA6NYaLznj09gEICa2VOwdC8DSMUB4ayz7rUAGqI8PX0ltEMp5nOCqy2OKDtew8nvthnErBAoA/CGQJ9AZzi1Fy8WmVfkHQmE40ldy/BBE4chK+vWbMGc+fOwVhOgSczUzz22GMYy+lkhGwsS/S2cIAKhTc4mDzdVKPVLGzMymLhdSuvWeJR2FQbGWUdHLSimuiGhjwcUGBlHbh8iNBT0mGGSrADXXE/AswQvfSUoKogSusnqYQMcUNhztYYJiqvWYkbXosVJbqOYoZNIT3HzecKxABUvotptpClylAx2ihE7tMPfSUd0QAAEABJREFUsOvV3+LNjRux7/N9phKEfBV4CqAOHVoPAbkVzMNTpkzh8EGFKGRQNRg7diwi4TB6e3sgubeV+d5P4pKgi8XpHVF2GEtn6L5AnhZSaSmL1QqrHNmShfedtIyLsVtTNR5jqiZgWsVYTC0Zgam+4RjjrUVlYS2KeSx0FfKJHPyxLviRQSdnop20ZK+qIUzcyJKEZaiEtN0JEhdoDA+dStIMA6CyFRaNirDQEDbxFBrGTmUU0TtG6G5MpYJUfwec5DwVlRXmJGztg2uh9tEdTp86BVnYSNMNQeHE9QVNX3nlFZNoCBM8f/4cdr+/Bf0pP4LZFPo4je4jMAWyacRo3TQtkrPbOTg7NB4tBDarRYdd11DAo1tzotrqQY2tAFV0zXIFKKc7l0qhxauopNKykSh2F6Ez1IyeSBeucp5ynUrooHK7LDb06Hb0EzdCvJaiB6YAJClwPJNFmnoweE3XLVxvsMDCMek0ks72bVxtyoR7UGFEzUVVne3ZbHYuxVVBjZA2ysRmG2dHP/vZz3CALnJoxzac/3gnYyyDyekoZuVimJYKQeIrxWzgbzuNZrptV5oAR0sFaIUQ3TFKJSQdTuS4ymSQNSoctOZww87rPirFZ9FQYOTgoHUcmTScPLpoOcENZzKGAg7UWVSPGt9QhFJhBPou4dy1r3Ho9F4cOLoLZy5+jkDnOS7d9cBP5ftJ06UEafkwFRGjR6Sp7CyVYFgtUKh86hlJpGB4HYhRye9yZVhod3t7G4TnqMxztLkBIQzzmO8rSWdHXbuMNby6ltq+z16IuZob821ezHSXo750DDwcoJoIIBJqYZ6PootCdNLteqnZIDWrV9cgYXMizvMBXmNigIWDUWkxhYM1KLzK+hYqzsp+bBy8jdetqQHYKZjdWYIyX72ZSmOqgT7WE1AEBUMmjnyoFfG+6+job0V3tBuhfAp99IoAjRFUVMQYgkkqPcNwVKn4bmseeXY+oGgQMiT8YCuX7j7karWqahrn71VYxTW6aZymVnf1YIhhR63NgwoOspRWKqGbCzEpGkigmIMsplLsZaNgEMAS8R70JHpxhbPDy5yTX+hrw4mO67geC6Ev3AW1+wJBR2xAd2WajVNZaQqUp7sq7FsYmo0DtWoqLFSEzri1Md25dRdqy0ZjcnEd7iwfhSlDGjCpciKvjUOpbxTKC6tQ6imDk8/FExzDgB999K4ehlMPFRGgsOKRAwTQrnQMCUNFAjoG/2RucIn7GOqjjz6KaSRCQ5jXFU6BfdResarAS7QuIFJL2rETSBzEBwfJhYsMzSE8XrPCwkFYdDsC8QCSvefReO0wTrScxcGz+3H8+jH0hNoQTIYR5TP9ZHH9fD7IEqMCkozRHPuCzQbVaoNOi+m6TiUYsNK13cwUhcwgxVYfau3FqNPsqFatGKJbUU3hqliGkYdUlY5AUfUkOI0M/MSOdir4GrGjDSr89MLD/e3o7OlGYe1I3Lv6IVRyaU1WrTQqX2f/6uZNm3CcruDngqdYwcaB6bSEwoZkEqPRC6x0U6sCDi5PppaFhR6hxiLsVIWlqBZexnoz68WJ0vbiYjg4KbISbUOqBj+BKNF1Ac2BDnpKmGkux5JFhP3EOYAUhc/QTfOsr7HoNhs0KsJKryjkeYWDEySrBcW0rpcGKWDfHpYCgpuDXMOTiKNCs6CofBwKXD7Egk3oyqXQlomhmYZpoRfqDMXioaMwmjPaZ77/ffyXv/xLZoFlXAGfBjqiQd4dpWAJ5Kj1LIVNMUZTtFgegEoSo6sarIw/OwciSrJIvFJB9nQSTqsbxb5hmFxYhsmM3YmOCkxzVmJGQQ3GF9WhoGQYEnTjHClxONyCAMOllwruoZV76Ql+RUWIVh2g8lSvl/TYjjxTnWpzwGbRYecI7RyT4ITQZAufkzRn49FBhTiYkezJOCSJer018BbVwBLrQH+kBX2Bq0jTe93l1ahumAkYYDGgaRpUtivTaFXlYIxUCNF0HAOKgSgFi/ChOIXM6Tpgs0KARKOVLLSI1WqjMnSIp7ipHA8VU0wsGF4+GqNcVRhKd62kIsqcPpQ7fKjieW1BJcpKR8HmHYIc++qPtKKH7beRUHXkgR624WcoBS12hHQbohQ+wbFmaRCD4SjjztGT8nxG5XWdg7dr2k3lwAwZWzoFFzGm2FUCS3EhNJcTAY6/nPuD3c4ytHNjJEPZDGqhL9CHY9xXGEgOQHU57ChRgeHZfjg6jiPTeRLRSDfCBL84O0lZrciwGBTeIKBoPOocsMVigcPpgofHEtYrVS2oZL0SWsWXz6A4l0YhPUQWQDxMcaWqikJihpNKUHi/I3AFzckoLof8OHbmUxw+8SG+aTyMpsB19PB6kCkxSqETLEK64rR4isLLtNpgWxr7slis0Nm3rgAahdf4TEe2BzlmnD64cE6rxr5sCToSObzNKf9PX3oJsvp17epVhEJhaKynzuLae13FEFT7fNyprUGxrxgObQC5gV7EcglEVA2S25XiElQQLLkCAYPeoLkLYdB1xRMK2VChrsLNIHJyIDZ6kJ3adlCJTh5djFkrqanErY1u6vZUw82YDlMJbb2NaKbSWinctUQ/mkKdNMJp6D3M94kw+hiKApxBtiMTpzjrpal0AVCDSlBYtJuKCOWSCCQjSGbzxBmNGd6AzroKn5FZrZQIF0tkn+CFH76AxdzbUPdxnfxqbAADhlQDnIxFX0kJ4w9IhTsQSUXgV3UEKGyMJCdKN40yA8gihz3UBk1RIaxLIwhKUTlQnVaz0NXsdGEb49zK3xK3Oi0k9NTCOHX6hsFNS0YowAD77Afgl0IgvMi2rg7E0dJ9EZ09V9A7EEYf+wlkcgixrYiiIM7wS9ITUxQ+xzDNszSlwuile4fjCVSNHAdZFRIPEcEHywruODvo9VYqZhq3AdUUufypvBUdBuOAA5CKwv8T3NvL0ZLp/naEklFcZ6NfnT6HlkwWvYxFvecCwFlcjs9kOagsr2XopnkKLgBjoedYdR0OdmSnh5hZhN4hSrDGo1R0KSpLhmEOhZ3F1LiUQt1jcWCerRjTS2pRUzwEJRTOkuxHX7AZ/eEmhJU0/MzxftbvY5+iNJkwyUJLZz6NLuZ7wQuLtwTzuaz/He4fvPjij7k6/DTq6+sxj1Pj8vIy3PqjcUypE3zqlZQTIStLKIQQiyhCKqrpOLRgOxJ91xDtPoe4sLD+q+hPxSH5PEGB4xQiRsvLMatoyNM6itUC3WYzi5VWthLRxVMsVIKTLi/F5iqHo/4uFLP46ngsm4AKVyVKXFXwuapRXjEevmGzUFEyHE4OJhJuRTATQg/7ak+l0UkA9dMzQ8z3AY4jwZBjNdTOW46S0jLYiVnyvkFlZRUWLlwI2QDazv0KWS0WGWW7nAowIBYrqxuK8wseRHzoOMBilXZulXy4G52BVsbVAPrTQUicKXQ5u9MGJd6LJCcuGc4XYgS3BCMpQ6vnmC3ELRXihcqB6PxtpVKsBC27boGTxcsQKKJFfWRvJfSgcpIvs1BBpbk0fET2MnpVcUEZPJUTUOgsxkCsF32hZnSn4mjjs630yNbMALqyMTgYPvayatSMGQ+VHkUQgBTZoTrBaXx/f4C72qfx29/+Bm9y/eOrr76CuohAMHPmXVjBJeIRXAbXH/0B9HXPQakdDvnLs6FrHPR5LlacC4dxMq2iUXOQkpajqshDZpaAOxeE156Bx51HzmJAZocJTUeKBClN6+fpCTQHNCpB528LFeKw2eHleYnNCp+uQpinh4J7aEU3QdPN8HMxiziJBR7S4yLdChdDxl1cj1x2AJ3hFvQnu9ATvEacuASV/coCbQ9T3v79B9Hc3IwclSqe3M4NFnmxIk+FyW+Z7QYC/ZCFXs4GozjOPbJG7qrKTcXlhj51Dqx/8U+wvLQeZ9c8j10Fw3HdOwpNrmFot/jQSfcUYRRFgay3CV50kUZH+nvgtAwgpRsIqirCqoYYlZBzezB0yh0QRdxY5XFC01RILneyngOAg3zESmsL0XEwNh38bWdoOSRkSMwcnIMUKDpcngq4S0ejgEtiffE+9CSCaA32IENhm3J29KTykPX/Nze9iV/+8v9wAeRz7OGu9AANaDBMGO3iFOzRPIN69Og3kL29Tz/9FD/715/hM+7KdpE7+4NB7DnwFfYeOAiV2tcpCEcNKCoyLG8lLZAlpUBfHxtk0xz0QDKJro42ZPxXOT8Io4f1ehUN3cwwjd296CdXiOp2xAhgaVoDHJDC5zQ58ppCgXUwAhXAplJBigI7f1upDCvj3kaPcFNJbkcRLFSEquro02wIF/jQkrWgPWdjbcUcj8S3LOm73S4899yzePrp72HMmDGorKyAlaEoxma34HSYz1AZHAdk8/IwF0BlL1DWBFNc9LAwnikeVFrMynP57SNn8Ny1EKERE/jw73+k4RTTXWm6G0Y2QcwYQHcigqvcb+jKGQgRqXPhTiQpcIpT2LR5zEGOhqqY/WiaBqtugYMhYtN1WKkIC5WgUwmWVAJBYk5npAdZjjtfUIJ+zYHLkTiymQQo/a1SX18PWeXSVA3VVdV48MEH8TiX9u7m5uhdd92FSm7/qwbVIIVPmZ+62losWrQQDQ0NuIdT5IcfehhTp06FhQMCFHi4pL2YuCEpxXLfg9BvLqPhtj+v1wtvYSF8GT9SzBjZWBtiXNxIxlqQDF4Hgi2IUiDhEgm6boJWTdL6GQqaI3aAfWkUXic+WKxWiNJ1VYVOK2XoBdfCbcgyNBRSwNG1Ptw7uwGPP3A3ZoyuhC3RAVDx7oICzJ41CzqVaQoGQFVU2Ig9U++YikULF5m74Sqvm/cVntTUDOHe+3fIBn0Ule5ns6G+vg7L770XP/7xn1ObDXj44YcxgWCp0lpauhdWKgncMgctBQogCvJQeEVRkCGgXQn24lR7MzoTIQQYr9FMEiEK7Y13wIUYMkTvMAEvygyS5BjSqoocXTTPohA0hXpbOA6LlYpgH6eTvbR8njUBnag/lKvUd3Cdf+zYMVhx3734by++gFXzJmPi6GEmszUrml90FxobN0sw2I+W5haoJXRniZM5c+fiiSefNLUEavpGxRvfef6OxmLo7Ow0t82OfvMNOpsaeZONcsBObqLYX3gB3ZwK++12XGPoXIrHcSAUwnEem1jnDK9d40BUlwsyZyjg7pEz1IoKhFDrTqHYlUVGyyFOSyRoqQF6wYCuI00LZhl6Ktv1I4MQMwDkj9eLyssxhJufGs/lkhQrFVVbXYmm0wexZePr5lZ+GzdyEsQngxWkZOlt8r5TJBqBumDBApSWlXFXdiIUVqBU5rd8SWWDrnqFO607tm+HvB/QHwhgL3eF3tvwGxMwL/NeJpPBYe4QvRMK4f/19mJ9dzde6erCXtZNsKEAhZfi4GKEhzRbp0LyHEQ0EoG8KBVifs4yr1vzYSQ5XQ4TF0LEBw4PCd2KNAFYJmRBG8HR4yaLdMJCF68aMYQdReYAAAuJSURBVAIOegG7+L3PYeJYsLsNnReP4r333sW2d97BR9zQOXjgAAS0RYbGxkZiRgaqkIH2tja89fZb+OSTT241JMKLMsRNZElchB+8aYhHhEOQjmRd7TpXk7p7ejj3zmCAg0/yfpZCWqx0WxaximygLiR2FBN8ZEJ1e1uyPBXjYqvdbkWhS0cm0gI/Aa+fnhCiAqJWOwKk0/1azsQgyfeyKtzG1CtpeLAtOcpmr2zuyLnKBV0OxcxW58+dg2z4bNmyBbKN7+Eyu6IoULtoqTQt6Pf7ceTIEfz85z/HQTIkWTGVd2/eemsrwqEgQJIiRcmloKZCgKpDURSM5d6BxKEg7PPPPw95UcJOdwX/FEUxAWzdunWQ9wuqubNcSavZly5lAOus8e1HNmFtjHWHw07q60WJFkUfvaSXCu1jtQBnj/FsimfgnBNoCYchW/O/+tWvsIv7kqFQCP39/aZXSgqUijlrIQ+EeGqB3xDXj3PtUsb86LpH8eMXX4TKGjc+N0wOscYRutDhw4dw9doVlHgcsMbbYem/zHIJevAqtFgXtNyAuakqHFtQWhopLS2FvPMjr6aIwDU1NZCt6rq6OrltFkVRoDMfW+kNitdrXitgZpFX2swfN7/cag5l+SAyUT+yXNoKEzNuDhFNFN5gO1JVOMypU6fw2muv4ezZsxBj1LJfQf88J1dSxyzyMBWxlHglM14QDAsK3IMK4F3FrAaxwgyi+lyC4t3z7sKaxTOweM6d8BUX3ajAb1VVMWv2bMheodTnpVsfAaQSguFDq1dj9PDhiHCwHXTVWxVunuhMrVZ6QgFRXKx/8/KtgwzHwfmFEu9AuPcSQtmoea+dodJJK8oYzAs3v8oJiJKuV65ciVWrVmHpfQ9gfMN00E0pKuXj97BhQ803zSB/Ny4NKkCu3CgCincxfzokB0c7UVbsMa34+BNPYM2aNRAry5tb8kaJxPaNp779NgdO68SYMc4xpK4QbN7lZsRG7sv9niKoxFZNw6tkkl8zw3zbwrdnEgLnOCE6m04jSKG7KHwTgVOU/G0tmEAoBnO5aVG26/V6MXnaXVhGJTz/3PPmy98FBM2p3BFWmb7F+oPPMwQMyKCdRNPvcP4s1rcQcNRYD8DcLBVF29KAUEnRssyuhAYL+sv924tG4Opu7cD6rTuRVN0wNAepdgrNzc14/fXXsWHDBvP9QMGYz/btQxs9ZDPx5yfckNnADHJRBKXA23ltA0uE7lxIj3RPnoyhNEwDhRABB8NO+paFjxqmQ2GMNl4wSL9zNg+sxJSSEh/knSZ57e8at9HlNb5YLA5ZX2RVqPLigLzsKC9CDafLijYUzsYU7sBIhcEiaCvv/H3xxRecPB3HG2+8gS+//NJE1EFFSHZo6urDf+77Gn7Fhj7ViiS5P6gUaUdmYYLAW7krI7Er7+mUlpRAURSECXjH6AkvM4X+c1sbPo/HMYxCz+U8fnJDAyawNEyZgvvvu4+8/mkz/ARwa8lcZewyd/AIMGtW5Kwe5HWHdGmWZDJh7ggdP34cr/3na+abI0eOfI2mpmtQhRPruo4UZ0tSW7xBycah3LS+XJN7MkmSIgOXa3EO8AhdfOfOndi9e7f5Gopkkj273kWkvRF6vAuWeDc0ruiACC7PSFEUBfL2SQkFv4/CrCJW3EumWcnVW7kvRWWdEhI0CbUyAqtghFDrwZBzkUyJVQWD5Jq86NDVH0HQXoqoswJpu4/NiCQ88CPvCMsLXyAOiCHlVaB99L6dO3dBFWvIy0KSz+V9uqtcMZV0BxIgPguxrlhdUo68XCDXBotYXNKPoK8oIUm2Zbomqa4iQpttGIPVTUvPnz/fTIlyUWK5guRIdqae5CRl7dq1EMXIPeENhaTUcq4o3wojv6UoimK+WygeJVzm9ddexdbt2xHhdBg3PU7qSTn41UEaeEBOWWQ8BkMgjwjxRJUvEURyp2jq7bffxu4PPsYAp69OCnSBVj5H1zGYj/n0H/3IQCXXS7r77ne/a866RDAHcWXwAUVRMIghIvjgdYnbAlVFKRdGp4wbh+9973tmKhNlxhgSMrbBurcfxduE9IiBJLRiAxmcuXDJ5DFiVHnjLRwOm1RY+Mztz944v6EIguCNn4PfooiTjVfw3q7dCJDKBsnwiiwWuCjAH1QGTIuJKw+6sHjAOAryBLOG/GcmwRghRqIkeZ3tRg7mg/KhpRTdCcNWiDzjVrO4cPXyFbS2tppgKQRH4laEleqDRcYo//tEDCbXxD8M1YK8ostPiPDbtm2DvDssYF1fX4/blW5Wuvn1hzJRMZrDjXGL7odMNJYxPkWQGsZiAZUgnd18FjYyPolT6UBRbr8Dk08IGVrG2aK4tniHgN7gs4PHuKUAfVYf/Cyne5L4/PAxiIBiWQlHwR1JoxKzwSAZKR+UdHrixAmId5i9UpE5ixPgETf/JNaLyUckqw1yAwH7m7dvHb5VAAUnRkC36BBLjZsxFyFvPST9NTQ0cFXlOay5/36UEYA0RYGs8N5LIiOvykuavNXibSeKwnr0HgEpsdivf/1rSDqUgZvViBEap7c6S6a/Bcc+34Ggv9O8NfgluCMeIHEub6x8RMDdSeAVYB6sY1DwnMU9+NM8irInTZpkWl68T7xSwlT+I4YskgjwS8UbChDhKb0ILwRHXpJU2WiK7hkoqEGaKUVRNcj/0vrz557DQrK4RczH86iYG04nTf1hkUGK5QSo5K4AphAiKTKBEosaXNjQMlGcPXoAV86fhEKlSN0/VsQzipkdfvjDH5qUewTTtoRUluFjKNqtR8QgktLFA25dvHlSVFSE5cuX49lnn4WQJ1WsYVB4IQ0LmXPFpTVV9CJXgRTjMuSqQsRRirjNi3xBKWwVw9ESNfDZiUvoCydgZeMOsTaPpkvyKB8BqVOnTpkuLb8Hiyhk8+bNkP8rJO8iypRaOMXg/T91lDCSiYxMp6eSI6xZvRrL7l+FhtlLUFjoYZajJcn33WSEEn46mSbj5Nb1wXNJsz6Gh6wYqWJxeUByqrw8qKkq1cFnBkfBBrOqjri9CCF7CQ4192H3iYs4449j59dnsWXnpzhz9BhXdQ14+KzghNhC3FaEGuQNg80NHgW5Zd1RUqhYRSZNt2eNwXqDR7G0uK6EpACymwp3O10YMWUeFi1egkcfeRQLuLZhI/ubeeedEP4w+OyfOoqBTAWI1YXj3/CG26pTePlFvUJWhdo6OvHx3k+ZUzkt5b0cV3Z7QnHs3XcAv/mP/0Dj+fNQOLW2kM5ueOUVSCqT5/9U0WghsYL0Ld73/e9/35ysSNYQN779uerqajONamSWaUcZEiQ9SRe32wl+Vq45SMyLS8uUPByOmLNaCZnb2xg8F3lyTOuybqAePnTInENv3rQJws2FJQmCmu7CJ6SyWOvy5Uvmf6pIC2OUi7wnnxy9I2orQh9XZXfu2IHdH36IA6TIApZOWun2kJD6g0UEFKwZzanx4DXh+DKdFkUIQ5UZnihJrC/sUc5zJFgh3Y2QxcMlNJv5qAxHSpZ0+lMu6x/5+ghe+d3vsJcLPM2cY8TIWuX+YJGHhPz1cq6hCkLnuCoriyJHjhzG9vffx34KYAIUaxoEJQGsPR/vuWF5XpPPYGMGAyZJKwSdZcznTvOFK1lflP+MMJMo7CUZUvmATmXIkafmRwBqOic5g2hsXrz5JSEh7izKkKMoSurLbYULMwqVIOeDY7gRsIbJ7a8Kk+VNoepHjx411zCF5QoWyTXeMuUQaiwgrYqbSENmIzwRwQ+T/W18800IQMlC6KfUpDBGeZhVKPKNb/OZmxcHNCeKJ8/D2DvnQlaG5b/JCcd/6pFHMIozNYlZ8QiN9RVFwWOkvsLv+fOPfsRDxAPE+kLDxZrC7EyPYoYafGhwDOK18gpcijtIN67dGGM0GoF47x6uY0r2Ef4gy3vNzc0Qz/7/AAAA//9l5DeHAAAABklEQVQDAMecmnkLhldNAAAAAElFTkSuQmCC", "name": "SDF_Smooth_Repeat_Limited", "parameters": { "Axis": 4.0, "RepX": 3.0, "RepY": 3.0, "RepZ": 3.0, "SmoothB": 0.0, "SmoothX": 0.0, "SmoothY": 0.0, "SmoothZ": 0.0, "X": 0.5, "Y": 0.5, "Z": 0.5 }, "shader_model": { "code": "", "global": "//Uses shapes from https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm by iq\n//And Smooth Repetition in https://www.shadertoy.com/view/wlyBWm by blakle\n\nfloat iq_sdRoundBox(in vec3 p,in vec3 b, float r ){\n vec3 q = abs(p) - b;\n return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0)-r;\n}\n\nfloat iq_opSmoothIntersection( float d1, float d2, float k ) {\n float h = clamp( 0.5 - 0.5*(d2-d1)/k, 0.0, 1.0 );\n return mix( d2, d1, h ) + k*h*(1.0-h);\n}\n\n\n", "inputs": [ { "default": "0.0", "function": true, "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "vec3 blakle_smoothrepeat_asin_sin_$name(vec3 p,vec3 smooth_size,vec3 size){\n vec3 t=p;\n t.$Axis/=size.$Axis;\n t.$Axis=(asin(sin(t.$Axis)*(1.0-smooth_size.$Axis)))*size.$Axis;\n\tp.$Axis=t.$Axis;\n return p;\n}\n\nfloat Blackle_SDF3D_Smooth_Repeat_$name(vec3 p,vec3 size,vec3 rep,vec3 smooth_,float smoothb){\n float b=iq_sdRoundBox(p,size*rep,smoothb);\n p=blakle_smoothrepeat_asin_sin_$name(p,smooth_,size);\n return iq_opSmoothIntersection($in(p),b,smoothb);\n}\n", "longdesc": "Repeats its input shape with smoothness using reflection symmetry with a smooth box limit\n\nCode - Blackle, PauloFalcao", "name": "SDF Smooth Repeat Limited", "outputs": [ { "sdf3d": "Blackle_SDF3D_Smooth_Repeat_$name($uv,vec3($X,$Y,$Z)*0.635,vec3($RepX,$RepY,$RepZ)+1.5,vec3($SmoothX,$SmoothY,$SmoothZ),$SmoothB)", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 6.0, "label": "Axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "x" }, { "name": "Y", "value": "y" }, { "name": "Z", "value": "z" }, { "name": "XY", "value": "xy" }, { "name": "XZ", "value": "xz" }, { "name": "YZ", "value": "yz" }, { "name": "XYZ", "value": "xyz" } ] }, { "control": "None", "default": 1.0, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4.0, "min": 0.0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128.0, "min": 1.0, "name": "RepX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128.0, "min": 1.0, "name": "RepY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep Z", "longdesc": "Repetitions in the Z axis", "max": 128.0, "min": 1.0, "name": "RepZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 1.0, "min": 0.0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 1.0, "min": 0.0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 1.0, "min": 0.0, "name": "SmoothZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.01, "label": "SmoothB", "longdesc": "Smoothness on the boundary. Uses smooth intersection with a box", "max": 1.0, "min": 0.0, "name": "SmoothB", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Repeat V2 Limited" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Smooth Repeat Limited", "type": "shader" }, { "display_name": "Axis Symmetry", "icon_data": "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", "name": "SDF_Axis_Symmetry", "parameters": { "mode": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D", "name": "in", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "", "longdesc": "Transforms a SDF3D making a mirror symmetry using the chosen axis\n\nCode - PauloFalcao", "name": "SDF Axis Symmetry", "outputs": [ { "sdf3d": "$in(vec3($mode))", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "default": 6.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "abs($uv.xyz)" }, { "name": "XY", "value": "abs($uv.xy),$uv.z" }, { "name": "XZ", "value": "abs($uv.x),$uv.y,abs($uv.z)" }, { "name": "YZ", "value": "$uv.x,abs($uv.yz)" }, { "name": "X", "value": "abs($uv.x),$uv.yz" }, { "name": "Y", "value": "$uv.x,abs($uv.y),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,abs($uv.z)" } ] } ], "shortdesc": "SDF Axis Symmetry" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Axis Symmetry", "type": "shader" }, { "display_name": "RotAndFlip", "icon_data": "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", "name": "SDF3D_RotAndFlip", "parameters": { "anglex": 0.0, "angley": 0.0, "anglez": 0.0, "flipx": 0.0, "flipy": 0.0, "flipz": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "sdf", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec3 sdf3drotandflip_$name(vec3 p) {\n\tvec3 point = p;\n\t$flipx\n\t$flipy\n\t$flipz\n\tvec3 resultX = $anglex;\n\tvec3 resultY = $angley;\n\tvec3 resultZ = $anglez;\n\treturn resultZ;\n}", "longdesc": "Rotates and flips axis", "name": "SDF3D RotAndFlip", "outputs": [ { "sdf3d": "$sdf(sdf3drotandflip_$name($uv));", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 0.0, "label": "Flip X", "name": "flipx", "type": "enum", "values": [ { "name": "No", "value": "" }, { "name": "Yes", "value": "point.x = -point.x;" } ] }, { "default": 0.0, "label": "Flip Y", "name": "flipy", "type": "enum", "values": [ { "name": "No", "value": "" }, { "name": "Yes", "value": "point.y = -point.y;" } ] }, { "default": 0.0, "label": "Flip Z", "name": "flipz", "type": "enum", "values": [ { "name": "No", "value": "" }, { "name": "Yes", "value": "point.z = -point.z;" } ] }, { "default": 3.0, "label": "Angle X", "name": "anglex", "type": "enum", "values": [ { "name": "0ยฐ", "value": "point;" }, { "name": "90ยฐ", "value": "vec3(point.x, -point.z, point.y);" }, { "name": "180ยฐ", "value": "vec3(point.x, -point.y, -point.z);" }, { "name": "270ยฐ", "value": "vec3(point.x, point.z, -point.y);" } ] }, { "default": 3.0, "label": "Angle Y", "name": "angley", "type": "enum", "values": [ { "name": "0ยฐ", "value": "resultX;" }, { "name": "90ยฐ", "value": "vec3(resultX.z, resultX.y, -resultX.x);" }, { "name": "180ยฐ", "value": "vec3(-resultX.x, resultX.y, -resultX.z);" }, { "name": "270ยฐ", "value": "vec3(-resultX.z, resultX.y, resultX.x);" } ] }, { "default": 3.0, "label": "Angle Z", "name": "anglez", "type": "enum", "values": [ { "name": "0ยฐ", "value": "resultY;" }, { "name": "90ยฐ", "value": "vec3(-resultY.y, resultY.x, resultY.z);" }, { "name": "180ยฐ", "value": "vec3(-resultY.x, -resultY.y, resultY.z);" }, { "name": "270ยฐ", "value": "vec3(resultY.y, -resultY.x, resultY.z);" } ] } ], "shortdesc": "SDF3D RotAndFlip" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/RotAndFlip", "type": "shader" }, { "display_name": "Bevel", "icon_data": "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", "name": "SDF3D_Bevel", "parameters": { "s": 0.2 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "A kind of bevel, only works well with axis aligned surfaces\n\nCode - PauloFalcao", "name": "SDF3D Bevel", "outputs": [ { "sdf3d": "($in($uv+vec3(0.0,0.0,$s))+$in($uv+vec3(0.0,0.0,-$s))+$in($uv+vec3(0.0,$s,0.0))+$in($uv+vec3(0.0,-$s,0.0))+$in($uv+vec3($s,0.0,0.0))+$in($uv+vec3(-$s,0.0,0.0)))/6.0", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.5, "label": "Size", "max": 1.0, "min": 0.0, "name": "s", "step": 0.0001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Bevel", "type": "shader" }, { "display_name": "Blur", "icon_data": "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", "name": "SDF_Blur", "parameters": { "blur": 0.0, "bound": 1.0, "iterations": 3.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "", "longdesc": "SDF3D Input", "name": "in", "type": "sdf3d" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$in(p);\n\tif (d0.0)?\nmix($(name_uv)_b,$texa(vec4($uv.xyz,1.0)),clamp($(name_uv)_sdfdiff*$(name_uv)_mix*$f*100.0,0.0,1.0)):\nmix($(name_uv)_b,$texc(vec4($uv.xyz,1.0)),clamp(-$(name_uv)_sdfdiff*$(name_uv)_mix*$f*100.,0.0,1.0));\n", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base SDF", "longdesc": "Main SDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "sdfa", "shortdesc": "Main SDF", "type": "sdf3d" }, { "default": "0.5", "function": true, "label": "Surface Deform", "longdesc": "Surface deformation texture based on the difference between the two PDFs", "name": "texd", "shortdesc": "Surface Deform Texture", "type": "tex3d_gs" }, { "default": "vec3(0.8,0.6,0.6)", "function": true, "label": "Tex Bump", "longdesc": "Bump Texture, where the SDF difference is negative", "name": "texa", "shortdesc": "Bump Texture", "type": "tex3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "Tex Surface", "longdesc": "Surface Texture, where the SDF difference is close to zero", "name": "texb", "shortdesc": "Surface Texture", "type": "tex3d" }, { "default": "vec3(0.3,0.1,0.1)", "function": true, "label": "Tex Hole", "longdesc": "Hole Texture, where the SDF difference is positive", "name": "texc", "shortdesc": "Hole Texture", "type": "tex3d" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$sdfa(p);\n\tif (d0.0)?\nmix($(name_uv)_b,$texa(vec4($uv.xyz,1.0)),clamp($(name_uv)_sdfdiff*$(name_uv)_mix*$f*100.0,0.0,1.0)):\nmix($(name_uv)_b,$texc(vec4($uv.xyz,1.0)),clamp(-$(name_uv)_sdfdiff*$(name_uv)_mix*$f*100.,0.0,1.0));\n", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base SDF", "longdesc": "Main SDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "sdfa", "shortdesc": "Main SDF", "type": "sdf3d" }, { "default": "0.5", "function": true, "label": "Surface Deform", "longdesc": "Surface deformation texture based on the difference between the two PDFs", "name": "texd", "shortdesc": "Surface Deform Texture", "type": "tex3d_gs" }, { "default": "vec3(0.8,0.6,0.6)", "function": true, "label": "Tex Bump", "longdesc": "Bump Texture, where the SDF difference is negative", "name": "texa", "shortdesc": "Bump Texture", "type": "tex3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "Tex Surface", "longdesc": "Surface Texture, where the SDF difference is close to zero", "name": "texb", "shortdesc": "Surface Texture", "type": "tex3d" }, { "default": "vec3(0.3,0.1,0.1)", "function": true, "label": "Tex Hole", "longdesc": "Hole Texture, where the SDF difference is positive", "name": "texc", "shortdesc": "Hole Texture", "type": "tex3d" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$sdfa(p);\n\tif (dV4 Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nTranslates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate", "name": "SDF Transform", "outputs": [ { "sdf3d": "o_$name_uv*$scale", "shortdesc": "V4->V4 Ouput", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "SDF_Checkerboard", "node_position": { "x": 464.149597167969, "y": -221.072265625 }, "parameters": { "AA": 0.0, "Position": -1.0, "Size": 10.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "float Simple_AAcheckedboard2D(vec2 p) {\n p*=2.0;\n\tvec2 w=max(abs(dFdx(p)),abs(dFdy(p)))+1e-5;\n\tif (max(w.x,w.y)>1.0) {\n\t\treturn mod(floor(p.x)+floor(p.y),2.0);\n\t}\n\tvec2 i=((1.-abs(2.*fract((p+.5*w)/2.)-1.))-(1.-abs(2.*fract((p-.5*w)/2.)-1.)))/w;\n\treturn .5-.5*i.x*i.y;\n}", "inputs": [], "instance": "", "longdesc": "", "name": "SDF Checkerboard", "outputs": [ { "sdf3d": "max($uv.y-$Position,length(vec3($uv.x,$uv.y+$Position,$uv.z))-$Size)", "type": "sdf3d" }, { "tex3d": "vec3($AA)*0.9+0.1", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Position", "max": 2.0, "min": -5.0, "name": "Position", "step": 0.1, "type": "float" }, { "control": "None", "default": 10.0, "label": "Size", "max": 30.0, "min": 1.0, "name": "Size", "step": 1.0, "type": "float" }, { "default": 1.0, "label": "AA", "name": "AA", "shortdesc": "Anti-Aliasing", "type": "enum", "values": [ { "name": "No", "value": "mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0)" }, { "name": "Yes", "value": "Simple_AAcheckedboard2D($uv.xz)" } ] } ] }, "type": "shader" }, { "name": "Multi_Transform", "node_position": { "x": 444.149597167969, "y": -11.072265625 }, "parameters": { "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "TranslateX": 0.0, "TranslateY": 0.0, "TranslateZ": 0.0, "scale": 2.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "vec3 MultiTrans_Obj_Transform_Rot(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "0.0", "label": "", "name": "tex", "shortdesc": "TEX3D", "type": "tex3d" } ], "instance": "", "longdesc": "Translates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate\n\nCode - RodZilla, PauloFalcao", "name": "Multi Transform", "outputs": [ { "sdf3d": "$in(MultiTrans_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale)*$scale", "shortdesc": "SDF3D", "type": "sdf3d" }, { "shortdesc": "TEX3D", "tex3d": "$tex(MultiTrans_Obj_Transform_Rot($uv.xyz-vec3($TranslateX,$TranslateY,$TranslateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale)", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "generic_size": 2.0, "name": "pxflib_4", "node_position": { "x": 804.149597167969, "y": -211.072265625 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Pow": 64.0, "Reflection": 0.2, "Shadow": 1.0, "Specular": 0.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "length($uv.xyz)-0.4", "function": true, "label": "SDF3D #", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "TEX3D #", "name": "tex#", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "\nvec2 input_$name(vec3 p) {\n vec2 sdf=vec2(999999.0,0.0);\n\tfloat m;\n#for\n m=$sdf#(p);\n if (m(#.0-0.5)&&id<(#.0+0.5)) {\n\t t=$tex#(vec4(p,id));\n\t}\n#end\n\n return t;\n}\n\n\n//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=input_$name(p+e.xyy).x;\n float v2=input_$name(p+e.yyx).x;\n float v3=input_$name(p+e.yxy).x;\n float v4=input_$name(p+e.xxx).x;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid march_$name(inout float d,inout vec3 p,inout vec2 dS, vec3 ro, vec3 rd){\n for (int i=0; i < 500; i++) {\n \tp = ro + rd*d;\n dS = input_$name(p);\n d += dS.x;\n if (d > 50.0 || abs(dS.x) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = input_$name( pos + h*nor ).x;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = input_$name( ro + rd*t ).x;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tvec2 dS=vec2(0);\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\t\n\tvec3 objColor=tex_$name(p,dS.y);\n\t\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+pow(r,$Pow)*$Specular;\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=tex_$name(p,dS.y);\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tobjColorRef=max(l,$AmbLight)*objColorRef;\n\t\t} else {\n\t\t\tobjColorRef=$hdri(equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,$Reflection);\n\t} else {\n\t\tcolor=$hdri(equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn color;\n}", "longdesc": "Type - SDF3D Render\nCode - PauloFalcao, IQ\n\nRay marching node for 2 objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\n", "name": "SDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1.0, "min": 0.0, "name": "Reflection", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.4, "label": "Specular", "longdesc": "Objects shading specular component strength, it's the strength of the highlight.", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "Pow", "longdesc": "Shininess of the specular component, it's the size of the specular component, it tries to simulate more shininess surfaces or more rough surfaces.", "max": 1024.0, "min": 0.0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/SDF3D/Op/Deform Edges Example" }, { "display_name": "Deform Edges Generic", "icon_data": "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", "name": "SDF_Deform_Edges_Generic", "parameters": { "f": 2.5, "g": 2.5, "h": 0.0, "m": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "float $(name_uv)_sdfa=$sdfa($uv.xyz);\nfloat $(name_uv)_sdfb=$sdfb($uv.xyz);\nfloat $(name_uv)_mix=$texd(vec4($uv.xyz,1.0));\nvec3 $(name_uv)_b=$texb(vec4($uv.xyz,1.0));\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nfloat $(name_uv)_modsdf=mix($(name_uv)_sdfa,$(name_uv)_sdfb,$(name_uv)_mix*$g+$m);\nvec3 $(name_uv)_tex=($(name_uv)_sdfdiff>0.0)?\nmix($(name_uv)_b,$texa(vec4($uv.xyz,1.0)),clamp($(name_uv)_sdfdiff*$(name_uv)_mix*$f*100.0,0.0,1.0)):\nmix($(name_uv)_b,$texc(vec4($uv.xyz,1.0)),clamp(-$(name_uv)_sdfdiff*$(name_uv)_mix*$f*100.,0.0,1.0));", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base SDF", "longdesc": "Main SDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "sdfa", "shortdesc": "Main SDF", "type": "sdf3d" }, { "default": "0.0", "function": true, "label": "Modified SDF", "longdesc": "Modified SDF goes here, typically is the Base SDF with Blur, using the SDF Blur node.", "name": "sdfb", "shortdesc": "Modified SDF", "type": "sdf3d" }, { "default": "0.2", "function": true, "label": "Surface Deform", "longdesc": "Surface deformation texture based on the difference between the two PDFs", "name": "texd", "shortdesc": "Surface Deform Texture", "type": "tex3d_gs" }, { "default": "vec3(0.7)", "function": true, "label": "Tex Bump", "longdesc": "Bump Texture, where the SDF difference is negative", "name": "texa", "shortdesc": "Bump Texture", "type": "tex3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "Tex Surface", "longdesc": "Surface Texture, where the SDF difference is close to zero", "name": "texb", "shortdesc": "Surface Texture", "type": "tex3d" }, { "default": "vec3(0.2)", "function": true, "label": "Tex Hole", "longdesc": "Hole Texture, where the SDF difference is positive", "name": "texc", "shortdesc": "Hole Texture", "type": "tex3d" } ], "instance": "", "longdesc": "Modifies an SDF by comparing the base SDF and a modified version of the base SDF.\nTypically the modified version is a soft version of the base version, which can be done using the Node SDF Blur\nObject colors are modified based on the difference of the two SDFs, with a texture for surface where the two SDFs are equal, a texture for holes where the difference is negative, and a texture for bumps where the difference is positive.\n\nCode - PauloFalcao", "name": "SDF Deform Edges Generic", "outputs": [ { "sdf3d": "$(name_uv)_modsdf", "type": "sdf3d" }, { "tex3d": "$(name_uv)_tex", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Deform", "max": 4.0, "min": 0.0, "name": "g", "shortdesc": "SDF Deformation amount", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Select", "max": 1.0, "min": 0.0, "name": "m", "shortdesc": "SDF Selection between the base SDF (value 0) and the modified SDF (value 1)", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Color Contrast", "max": 1.0, "min": 0.0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Color Shift", "max": 1.0, "min": -1.0, "name": "h", "shortdesc": "Shift difference between Textures", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Deform Edges Generic" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Deform Edges Generic", "type": "shader" }, { "display_name": "Fractal IFS", "icon_data": "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", "name": "SDF_Fractal_IFS", "parameters": { "iterations": 3.0, "minite": 0.0, "mode": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "SDF3D", "longdesc": "The object that will be repeated", "name": "obj3d", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "vec4(0.0)", "function": true, "label": "V4->V4 3D Transformation", "longdesc": "The transformation that will be applied each iteration", "name": "trans3d", "shortdesc": "V4->V4 Transformation", "type": "v4v4" }, { "default": "min($uv.x,$uv.y)", "function": true, "label": "SDF2D Custom Boolean", "longdesc": "(opcional) The combine operation, defined as a SDF2D.\nWill be applied after each SDF3D evaluation to combine with the previous result.", "name": "custombool", "shortdesc": "SDF2D Join", "type": "sdf2d" } ], "instance": "float for_fold_$name(vec4 p) {\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n }\n return $obj3d(p.xyz)/p.w;\n}\n\nfloat for_min_$name(vec4 p) {\n float d=0.0;\n float m=999999.0;\n if ($minite==0){\n\t d=$obj3d(p.xyz);\n\t m=min(999999.0,d);\n }\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n\td=$obj3d(p.xyz);\n\tif (i>=$minite) m=min(m,d/p.w);\n }\n return m;\n}\n\nfloat for_custom_$name(vec4 p) {\n float d=$obj3d(p.xyz);\n float m=$custombool(vec2(999999.0,d));\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n\td=$obj3d(p.xyz);\n\tm=$custombool(vec2(m,d/p.w));\n }\n return m;\n}", "longdesc": "IFS Fractal, repeats a shape x Iterations times, and for each iteration uses the transformation in 3D Transformation Node.\n\n3D transformation node uses the generic V4->V4 Type\n\nThere are 3 modes available:\n - Fold\n Transforms space x Iterations times.\n The object SDF3D is evaluated only once after the last iteration.\n Using operators like Axis Symmetry is possible to repeat space.\n - Min\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the min operation.\n - Custom\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the custom SDF2D operation.\n\nCode - PauloFalcao", "name": "SDF Fractal IFS", "outputs": [ { "sdf3d": "$mode", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 24.0, "label": "Iterations", "longdesc": "Number of Iterations", "name": "iterations", "type": "enum", "values": [ { "name": "0", "value": "0" }, { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" }, { "name": "17", "value": "17" }, { "name": "18", "value": "18" }, { "name": "19", "value": "19" }, { "name": "20", "value": "20" }, { "name": "21", "value": "21" }, { "name": "22", "value": "22" }, { "name": "23", "value": "23" }, { "name": "24", "value": "24" } ] }, { "default": 0.0, "label": "Mode", "longdesc": "Iteration combine mode.\n - Fold\n Transforms space x Iterations times.\n The object SDF3D is evaluated only once after the last iteration.\n Using operators like Axis Symmetry is possible to repeat space.\n - Min\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the min operation.\n - Custom\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the custom SDF2D operation.", "name": "mode", "type": "enum", "values": [ { "name": "Fold", "value": "for_fold_$name(vec4($uv,1.0))" }, { "name": "Min", "value": "for_min_$name(vec4($uv,1.0))" }, { "name": "Custom", "value": "for_custom_$name(vec4($uv,1.0))" } ] }, { "default": 0.0, "label": "MinIteration", "longdesc": "Used for Min and Custom, only the objects after and on this iteration will be combined.", "name": "minite", "shortdesc": "Minimum Iteration", "type": "enum", "values": [ { "name": "0", "value": "0" }, { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" } ] } ], "shortdesc": "SDF Fractal" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Fractal IFS", "type": "shader" }, { "connections": [ { "from": "sdf3d_sphere", "from_node": "node_sdf3d_sphere", "from_port": 0.0, "keep_alive": false, "to": "pxflib_18", "to_node": "node_pxflib_18", "to_port": 0.0 }, { "from": "sdsmoothboolean", "from_node": "node_sdsmoothboolean", "from_port": 0.0, "keep_alive": false, "to": "pxflib_18", "to_node": "node_pxflib_18", "to_port": 2.0 }, { "from": "pxflib_18", "from_node": "node_pxflib_18", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_rotate_2", "to_node": "node_sdf3d_rotate_2", "to_port": 0.0 }, { "from": "SDF_Checkerboard", "from_node": "node_SDF_Checkerboard", "from_port": 0.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 0.0 }, { "from": "SDF_Checkerboard", "from_node": "node_SDF_Checkerboard", "from_port": 1.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 1.0 }, { "from": "sdf3d_rotate_2", "from_node": "node_sdf3d_rotate_2", "from_port": 0.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 2.0 }, { "from": "pxflib_2", "from_node": "node_pxflib_2", "from_port": 0.0, "keep_alive": false, "to": "pxflib_8", "to_node": "node_pxflib_8", "to_port": 0.0 }, { "from": "pxflib_8", "from_node": "node_pxflib_8", "from_port": 0.0, "keep_alive": false, "to": "pxflib_3", "to_node": "node_pxflib_3", "to_port": 0.0 }, { "from": "pxflib_3", "from_node": "node_pxflib_3", "from_port": 0.0, "keep_alive": false, "to": "pxflib_5", "to_node": "node_pxflib_5", "to_port": 0.0 }, { "from": "pxflib_5", "from_node": "node_pxflib_5", "from_port": 0.0, "keep_alive": false, "to": "pxflib_4", "to_node": "node_pxflib_4", "to_port": 0.0 }, { "from": "pxflib_4", "from_node": "node_pxflib_4", "from_port": 0.0, "keep_alive": false, "to": "pxflib_18", "to_node": "node_pxflib_18", "to_port": 1.0 } ], "display_name": "Fractal IFS Example", "icon_data": "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", "nodes": [ { "name": "sdf3d_sphere", "node_position": { "x": -363.157257080078, "y": -245.824523925781 }, "parameters": { "r": 0.45 }, "seed": 31350.0, "type": "sdf3d_sphere" }, { "name": "sdsmoothboolean", "node_position": { "x": -13.1572875976562, "y": 91.1754760742188 }, "parameters": { "k": 0.01 }, "seed": 61915.0, "shader_model": { "code": "", "global": "float sdSmoothXYUnion( float d1, float d2, float k ) {\n float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 );\n return mix( d2, d1, h ) - k*h*(1.0-h); }", "inputs": [], "instance": "", "longdesc": "Type - SDF2D Operator\nCode - IQ, RodZilla\n\nReturns a 2D SDF of a smooth boolean operation (union, intersection and difference) between the X axis and the Y axis\n\nBased of the original sdSmoothBoolean with X axis and Y axis for input", "name": "Smooth Union XY", "outputs": [ { "longdesc": "The shape generated by the boolean operation", "sdf2d": "sdSmoothXYUnion($uv.x, $uv.y, $k)", "shortdesc": "Output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "", "longdesc": "The smoothness of the boolean operation", "max": 1.0, "min": 0.0, "name": "k", "shortdesc": "Smoothness", "step": 0.0001, "type": "float" } ], "shortdesc": "Smooth Union XY" }, "type": "shader" }, { "name": "pxflib_4", "node_position": { "x": -440.672271728516, "y": 273.290466308594 }, "parameters": { "mode": 0.0, "smooth": "sin($time*0.2)*0.1+0.1" }, "seed": -23788.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "V4->V4", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nTransforms a V4->V4 making a mirror smooth symmetry using the chosen axis", "name": "Smooth Axis Symmetry", "outputs": [ { "shortdesc": "V4->V4 output", "type": "v4v4", "v4v4": "$in(vec4(vec3($mode),$uv.w))" } ], "parameters": [ { "default": 0.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "sqrt($uv.xyz*$uv.xyz+$smooth)" }, { "name": "XY", "value": "sqrt($uv.xy*$uv.xy+$smooth),$uv.z" }, { "name": "XZ", "value": "sqrt($uv.x*$uv.x+$smooth),$uv.y,sqrt($uv.z*$uv.z+$smooth)" }, { "name": "YZ", "value": "$uv.x,sqrt($uv.yz*$uv.yz+$smooth)" }, { "name": "X", "value": "sqrt($uv.x*$uv.x+$smooth),$uv.yz" }, { "name": "Y", "value": "$uv.x,sqrt($uv.y*$uv.y+$smooth),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,sqrt($uv.z*$uv.z+$smooth)" } ] }, { "control": "None", "default": 0.0, "label": "Smooth", "longdesc": "Smooth amount", "max": 1.0, "min": 0.0, "name": "smooth", "step": 0.001, "type": "float" } ], "shortdesc": "Smooth Axis Symmetry" }, "type": "shader" }, { "name": "pxflib_5", "node_position": { "x": -450.672271728516, "y": 173.290466308594 }, "parameters": { "ax": -20.0, "ay": 30.0, "az": -20.0 }, "seed": -55518.0, "shader_model": { "code": "", "global": "vec3 v4v4_rotate(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nRotates a V4->V4\nAdapted from RodZilla TEX3D Rotate", "name": "Rotate", "outputs": [ { "shortdesc": "V4->V4 Ouput", "type": "v4v4", "v4v4": "$in(vec4(v4v4_rotate($uv.xyz, -vec3($ax, $ay, $az)*0.01745329251), $uv.w))" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "X", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "ax", "shortdesc": "Rotate.x", "step": 1.0, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "ay", "shortdesc": "Rotate.y", "step": 1.0, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "az", "shortdesc": "Rotate.z", "step": 1.0, "type": "float" } ], "shortdesc": "V4->V4 Rotate" }, "type": "shader" }, { "name": "pxflib_3", "node_position": { "x": -450.672271728516, "y": 73.2904663085938 }, "parameters": { "x": 0.5, "y": 0.5, "z": 0.5 }, "seed": -47518.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nTranslates the input V4->V4 Coordinates", "name": "Translate", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$in(vec4($uv.xyz-vec3($x, $y, $z),$uv.w))" } ], "parameters": [ { "control": "P1.x", "default": 0.0, "label": "X", "max": 1.0, "min": -1.0, "name": "x", "step": 0.001, "type": "float" }, { "control": "P1.y", "default": 0.0, "label": "Y", "max": 1.0, "min": -1.0, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 1.0, "min": -1.0, "name": "z", "step": 0.001, "type": "float" } ], "shortdesc": "Translate" }, "type": "shader" }, { "name": "pxflib_18", "node_position": { "x": 12.1926879882812, "y": -132.174560546875 }, "parameters": { "iterations": 6.0, "mode": 2.0 }, "seed": -64326.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "SDF3D", "longdesc": "The object that will be repeated", "name": "obj3d", "shortdesc": "SDF3D", "type": "sdf3d" }, { "default": "vec4(0.0)", "function": true, "label": "V4->V4 3D Transformation", "longdesc": "The transformation that will be applied each iteration", "name": "trans3d", "shortdesc": "V4->V4 Transformation", "type": "v4v4" }, { "default": "min($uv.x,$uv.y)", "function": true, "label": "SDF2D Custom Boolean", "longdesc": "(opcional) The combine operation, defined as a SDF2D.\nWill be applied after each SDF3D evaluation to combine with the previous result.", "name": "custombool", "shortdesc": "SDF2D Join", "type": "sdf2d" } ], "instance": "float for_fold_$name(vec4 p) {\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n }\n return $obj3d(p.xyz)/p.w;\n}\n\nfloat for_min_$name(vec4 p) {\n float d=$obj3d(p.xyz);\n float m=min(999999.0,d);\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n\td=$obj3d(p.xyz);\n\tm=min(m,d/p.w);\n }\n return m;\n}\n\nfloat for_custom_$name(vec4 p) {\n float d=$obj3d(p.xyz);\n float m=$custombool(vec2(999999.0,d));\n for(int i=0;i<$iterations;i++){\n p=$trans3d(p);\n\td=$obj3d(p.xyz);\n\tm=$custombool(vec2(m,d/p.w));\n }\n return m;\n}", "longdesc": "Type - SDF3D Generator\nCode - PauloFalcao\n\nRepeats a shape x Iterations times, and for each iteration uses the transformation in 3D Transformation Node.\n\n3D transformation node uses the generic V4->V4 Type\n\nThere are 3 modes available:\n - Fold\n Transforms space x Iterations times.\n The object SDF3D is evaluated only once after the last iteration.\n Using operators like Axis Symmetry is possible to repeat space.\n - Min\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the min operation.\n - Custom\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the custom SDF2D operation.", "name": "Fractal", "outputs": [ { "sdf3d": "$mode", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 24.0, "label": "Iterations", "longdesc": "Number of Iterations", "name": "iterations", "type": "enum", "values": [ { "name": "0", "value": "0" }, { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" }, { "name": "17", "value": "17" }, { "name": "18", "value": "18" }, { "name": "19", "value": "19" }, { "name": "20", "value": "20" }, { "name": "21", "value": "21" }, { "name": "22", "value": "22" }, { "name": "23", "value": "23" }, { "name": "24", "value": "24" } ] }, { "default": 0.0, "label": "Mode", "longdesc": "Iteration combine mode.\n - Fold\n Transforms space x Iterations times.\n The object SDF3D is evaluated only once after the last iteration.\n Using operators like Axis Symmetry is possible to repeat space.\n - Min\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the min operation.\n - Custom\n Transforms space x Iterations times.\n The object SDF3D is evaluated for each iteration,\n and combined with the previous result using the custom SDF2D operation.", "name": "mode", "type": "enum", "values": [ { "name": "Fold", "value": "for_fold_$name(vec4($uv,1.0))" }, { "name": "Min", "value": "for_min_$name(vec4($uv,1.0))" }, { "name": "Custom", "value": "for_custom_$name(vec4($uv,1.0))" } ] } ], "shortdesc": "Fractal" }, "type": "shader" }, { "generic_size": 1.0, "name": "sdf3d_rotate_2", "node_position": { "x": 459.327728271484, "y": -116.709533691406 }, "parameters": { "ax": "$time*13.0", "ay": "$time*23.0", "az": "$time*17.0" }, "seed": -40181.0, "type": "sdf3d_rotate" }, { "name": "pxflib_8", "node_position": { "x": -450.672271728516, "y": -76.7095336914062 }, "parameters": { "mode": 1.0, "x": 1.0, "xyz": 0.327, "y": 1.0, "z": 1.0 }, "seed": 47382.0, "shader_model": { "code": "vec4 o_$name_uv=$in(vec4($uv.xyz/vec3($x, $y, $z)/$xyz,$uv.w));", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "", "name": "in", "shortdesc": "V4->V4 Input", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nScales the input V4->V4 Coordinates", "name": "Scale", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$mode" } ], "parameters": [ { "control": "P1.x", "default": 1.0, "label": "XYZ", "longdesc": "Scales all axis", "max": 1.0, "min": -1.0, "name": "xyz", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "X", "longdesc": "Scale X axis", "max": 1.0, "min": -1.0, "name": "x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Y", "longdesc": "Scale Y axis", "max": 1.0, "min": -1.0, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Z", "longdesc": "Scale Z axis", "max": 1.0, "min": -1.0, "name": "z", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "Mode", "longdesc": "- Multi-Field SDF mode is the default mode used for scaling Multi-Field SDF objecta.\n- Coordinates Transformation is the mode that should be used for coordinates transformations operations, like in the fractal node input V4->V4 3D Transformation", "name": "mode", "type": "enum", "values": [ { "name": "Multi-Field SDF (def. mode)", "value": "vec4(o_$name_uv.xyz,o_$name_uv.w*min(min($x, $y), $z)*$xyz)" }, { "name": "Coordinates Transformation", "value": "vec4(o_$name_uv.xyz,$uv.w/min(min($x, $y), $z)/$xyz)" } ] } ], "shortdesc": "Translate" }, "type": "shader" }, { "name": "pxflib_2", "node_position": { "x": -450.672271728516, "y": -146.709533691406 }, "parameters": { }, "seed": 39623.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nInput Coordinates", "name": "Axis", "outputs": [ { "shortdesc": "V4->V4 Coordinates Output", "type": "v4v4", "v4v4": "$uv" } ], "parameters": [], "shortdesc": "Axis" }, "type": "shader" }, { "name": "SDF_Checkerboard", "node_position": { "x": 299.327728271484, "y": -296.709533691406 }, "parameters": { "AA": 0.0, "Position": -1.0, "Size": 10.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "float Simple_AAcheckedboard2D(vec2 p) {\n p*=2.0;\n\tvec2 w=max(abs(dFdx(p)),abs(dFdy(p)))+1e-5;\n\tif (max(w.x,w.y)>1.0) {\n\t\treturn mod(floor(p.x)+floor(p.y),2.0);\n\t}\n\tvec2 i=((1.-abs(2.*fract((p+.5*w)/2.)-1.))-(1.-abs(2.*fract((p-.5*w)/2.)-1.)))/w;\n\treturn .5-.5*i.x*i.y;\n}", "inputs": [], "instance": "", "longdesc": "", "name": "SDF Checkerboard", "outputs": [ { "sdf3d": "max($uv.y-$Position,length(vec3($uv.x,$uv.y+$Position,$uv.z))-$Size)", "type": "sdf3d" }, { "tex3d": "vec3($AA)*0.9+0.1", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Position", "max": 2.0, "min": -5.0, "name": "Position", "step": 0.1, "type": "float" }, { "control": "None", "default": 10.0, "label": "Size", "max": 30.0, "min": 1.0, "name": "Size", "step": 1.0, "type": "float" }, { "default": 1.0, "label": "AA", "name": "AA", "shortdesc": "Anti-Aliasing", "type": "enum", "values": [ { "name": "No", "value": "mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0)" }, { "name": "Yes", "value": "Simple_AAcheckedboard2D($uv.xz)" } ] } ] }, "type": "shader" }, { "generic_size": 2.0, "name": "pxflib", "node_position": { "x": 659.327758789062, "y": -246.709533691406 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Pow": 64.0, "Reflection": 0.2, "Shadow": 1.0, "Specular": 0.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "length($uv.xyz)-0.4", "function": true, "label": "SDF3D #", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "TEX3D #", "name": "tex#", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "\nvec2 input_$name(vec3 p) {\n vec2 sdf=vec2(999999.0,0.0);\n\tfloat m;\n#for\n m=$sdf#(p);\n if (m(#.0-0.5)&&id<(#.0+0.5)) {\n\t t=$tex#(vec4(p,id));\n\t}\n#end\n\n return t;\n}\n\n\n//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=input_$name(p+e.xyy).x;\n float v2=input_$name(p+e.yyx).x;\n float v3=input_$name(p+e.yxy).x;\n float v4=input_$name(p+e.xxx).x;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid march_$name(inout float d,inout vec3 p,inout vec2 dS, vec3 ro, vec3 rd){\n for (int i=0; i < 500; i++) {\n \tp = ro + rd*d;\n dS = input_$name(p);\n d += dS.x;\n if (d > 50.0 || abs(dS.x) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = input_$name( pos + h*nor ).x;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = input_$name( ro + rd*t ).x;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tvec2 dS=vec2(0);\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\t\n\tvec3 objColor=tex_$name(p,dS.y);\n\t\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+pow(r,$Pow)*$Specular;\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=tex_$name(p,dS.y);\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tobjColorRef=max(l,$AmbLight)*objColorRef;\n\t\t} else {\n\t\t\tobjColorRef=$hdri(equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,$Reflection);\n\t} else {\n\t\tcolor=$hdri(equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn color;\n}", "longdesc": "Type - SDF3D Render\nCode - PauloFalcao, IQ\n\nRay marching node for 2 objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\n", "name": "SDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1.0, "min": 0.0, "name": "Reflection", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.4, "label": "Specular", "longdesc": "Objects shading specular component strength, it's the strength of the highlight.", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "Pow", "longdesc": "Shininess of the specular component, it's the size of the specular component, it tries to simulate more shininess surfaces or more rough surfaces.", "max": 1024.0, "min": 0.0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/SDF3D/Op/Fractal IFS Example" }, { "display_name": "Selector2D XZ", "generic_size": 2.0, "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAQAElEQVR4AXyaB5zcxZHvf/2f2ZnNu1pFJJSQRDRgMCJKQiChBAgQIAHmwEQb/Mhg7j7v3fnevTv73T0DtsHgsw0+m2TAGIRxwCIIJJAIygKhnLXSanOe3Zn//32r/zO7y5m7/3Z1VXdXV1dV554NHn3g1uix79waPQr8+IFbon6I8wr5P7r/luiHwCP33Rw9dO9N0UP33JiHm6LXL/l2ZN8jF90a/e28W6NZUvQj5D76nW9Gjz74TU8/ct8t0a/n3xb96cq7o5cW3BHdMevG6Dr4vjVhTHTruFHRLcC3jhod/b+7b4x+cM9NHv8b9L/edUP0f++8Ifr+nd/wcMvYkdENI4dFN48Z6evfPuMb0Q/m3x69gtzfI/cfb7s2+t8D4J9u/xvSANjoN664K3oJ+O6cm6Obz7k6CjK9verK9KirO6NucHdPr3p6s8pmDXJgIBcqFwK5nEKw+JxzGrO9WOMzo7WitUm3Tbtamzq6deiPP1Pn2FEKHNZFkee3Oh899HMdoo0MMmqAlr88peLxRwrH6YQrL9RXgOMun6tkMiHnXAy+HYskJ3kYP/8CTVwwVz2ZjEqs/p6lKkXXImRmg0CJJ55RIgiUTCTyEKgoGSiF3IkHKhUWJZXt6tbeP/9CPe8/r+C0nSXqzcZGhiiMRgQUhzblxOcMiI7dFGj4zrQ613Zr7du1Wrxjh15e9qH2tnSoNwpU/86vVT9hjBYunIfhJiP02ORQXZ82t2nN4Qa1JpP6OjJPuGKevgIEeCswo8kzPkhvrEWOKHBSEASA88YlyPjKVfPlgoSiMNJRzknFaR3GCW2zbvR8lhUQGZgzPn1jmRpxSrakROWpIo2SlBg5TEEniSHvrMRbgRce0JBzTgRFMJlTJu0o1kXjZ+mTni69te+APj1QJ9pSkC5RWXWNtHqxOpc/p8SYI1TOCCnUy6FcztI4M0SWC5y2tLRp8e492jbnJp2AXCsPCyMMXmvPHCYnJVysUxKdkolARRiQogfTQIL0xPkzddmpl6mholRrm1u0trVd9Yws55wCg8B5mxJBoC4nbaR85fZduujhf9FZC+7Q165boGAHQ/4zWjOBicAadAqo6MireuQpjd2a0oWvPKanX/mD9vdgRjKtquHDVbLhj9KqVxTsf08lR41W6bhRmn71fJ1Nj5oBBsJwAzOqePxo5Va+qKJUSplMTqvqm7W9o1PHMwK9EzDe6jjJK21Gmx4xxHolgsAbdtK2lO695F7lPstp8cFavb1rr3Y0taqLod007kjvKHNWUTLB8E/QuU6dTJPMkqe0k1F446IbtKqlWd/+/hMKPmnv1BbWAd/dNB7rHCnA+MEX36bLf/+Efnr5nTocOdlUMSPCXW8rwfxLY3QvDjQjv3rlPL9OZMMcoyMky8aB5JzzSp946QVKjx2pZO1yFW34vUqqKpSRlKH8+N1lMV/eQLLiNISDx4Lpdcwmp+PrBmsbyt793e9rc3O7Orp6FRSllV3xgro/+I2mXT7Hd2BAJwYD6qcZZY0Iqli3WF2dPdpc36QbvjZfwe7tbypkPMNLsWhY2v37tzVk3q0qYaj9YeE9amvrUMfbv0L5970R1lMhw/vkhRfqlGvm60SMd855QxNBgMcD34teASygCLlOxy2Yw6KaVemE0Wp76z9UiXznnDKBU9dDvxCsss/k5xgRWfQyHEKP/TwhVVXqUEeH9mZ61cG65RJJRZ/8Tpllz6qUUWiLovHifUIUA84yeecumK2S0Ueoh05IbXxd2dDRYU6BtTrz4vM9s2C2kB411e8KSdxeSg/3MHSKGVoB8+6Uqy7WqRh96tUXeU+jv2JAGEQCY5wzU/IjQEYL0SgEOvmaS6ClkdA1OOvC/3GLWmE9SNqU9wbTW0ab4gYdDz+piLVKyO1lh2rC+J7lzyvc/Y433EbW+Itm6NiLZ2JU6MGmnckI6ShbKBGv0+mobHdGwRFDVdG6ShVrX1Mw7+IZ3nhryJitYnsiof1MjRa2xRI8MobatK2TrpwrYQ+BOtiBg9T3RXBGMhnWoMkzCKMQRpioZDJAmnTJBTqfaXXxqz/Rzx9+TDvaO7QTll563Ho9NLmAr0/vp+fcrC7msIMuxTltb/5SiVHDWU+KNO6i8zWBrdF48aOp1weBNYhckxdS1/DJrFNBIsFIzKkTRwTe4yhphaapFwTzZjy1tq5BtXj76Pm36djLZsm874E8ryw4i0K5AWD1TQ7tEkwlS0XyTqE3JrG2HLuvQtO/9Q3988zr9Clnh1201cPZIWvygF6MNfm90G//canqkXS4K6PB40arCg8WkT6GIX0Uva68o6wVs9c5GCg3Pcwmbzjtxjj0o+NobDn6stkSvIExmgHWuDXYm8uqc+nTSjI/tzP8dzQ2q1HS6Rx67ICUYQhmWDT7HGHK9kFOWXrRO9UaRbnQMA46lYXu2pMXaPe8G/Veba1u//t/0e7uXnUir4H2etHb17POsDqA6eaQ0YIem5pa9O6Hq3TS3Bmajz7OOTmwiCHlnJOTuSF2OiSJmI6QabLNxhy6eJ3Im3TpLAU+g0ZiVqpBpMaMlFv1O1UOrlauqEhd9EQv29dRj/6anSDLSMjFGGPNaT1WDmRJF0ZESAOn/GmZjt1TrtnjZmjJ4UN64Ec/1Yo9B7SXrSjLwSlC5dZ3n1b2iGGaPudcrzCq0KmRrH5kCRRuZQFuR/4qVu6fv/A7zSf/TBwaKfIKO+RgvzzIkRcHK0WYT1iulVsdk21OMKf4RdDmioFzToYnzp+hYra4Tk521aXFQjOVDKlR+tJvyyqaAKucw+AYQr/1eZrpY+Un7C7X+Z9v02etLXr0xcXaxZYVuYQSxWUqG1Sj8MOXlN39tpIcns657ALZ4hmwKAamqbWI9hEGTpl3rlLoUrL2Vdp22orzbj39Mq1E7oM//pXO3VmqRMIpEQQsyoHHdmgySCDMGWCXc04BPIkg5kmQnwgC7JVEmQcz1Bo1z4+7cLqGMy+rYCopL1Mnxh5kUazjSBlQwcmp/4tkRptTjnjsaR2D8XM5PP3bBdfLplHOFali8GAVFZeoomuz3N6lfvVOJYt0AvPYOYc0h7io0GFeMd8OZSFOdWxf5RteU4bDWCdTZ+2hw/rGKRfp9eYG3bfgfn21tkbT//ReXobJidApkq09YsRQQBtCrss7ic5IBGINwGzzdh9QiQpW8eQJM5V00twXHtHehibtYRgeSibknMObzgsqKOnkNOinz6uC88Mlix/XLy65TU1BEUo4Dim/UWbLGyo6+L56O5pkBpmTx86dJnOc0bQq+xDtlTS5QeA8fSJzNdPdowgnlGz6o3JMn0S6xE/FLbWHtfCGb+vJ9ev1q8oTlVmb0d33/0Tzh0/TafsqNZXj9px3PsQHGChpDk6azMg5a0eJTj9U4+WTrTwDTATLOA6GVLpIM69fpMc4t29jW1y35Ck1Wm8444jBOeeFmLKDL/qWistKtPT2/6Me5LSyONp+XcypsShVJFuExs2brqPYusbMZc6Ldg3M4fBD4kaEE4RcZoBlAZFOXHShenFCgu2vqmONhqxZrOKKKpXWDFYiVaxMV4927Tuo9zdu1YLTZ+jBJ57U42vX60fbt+shN17bl9Vr57J6PVF+gp5n5Dy1f59+uXmL6W6tybcn+5zTSSxcnQpVn+vVY088pR0sRDuZAhlOWzNN8cgYY4BdJiG5OalepsgxJ39FnY1NsgNH7463lERhKx/rDT/P21So7pzzdWNJjAFzhOcgB5rYd0zIjmAj5fiFc2Wn1h7aaeEmpwPLlPr4ZSWrq1U8YoRKjzxSicGDlCsuVjaZVAa9Ozq71cg9obauSfsONuhAXaMaSNu9weQGzjnzAoo4nbwlpdGfB9rV0aatba36nAPKrpx0uDenWg4fnShCBbkgrmO97pwTldULzqJ0/f5apRkl4ZJfyr4iev7I2VO9IWa4H+7wFbDZSzIuhwitLmDlIe2FlmcADdJxV8yVnQFMFpXUy+jK4ojMgeXKsrAeuekNBSNHKjt0mDoqqtUzeKg0cpSSY8coNX4cF7fxKgWnjxipFKPHbNDJLFrDN0mfZTq1tqlRq9hzt7V1qSUXeMMa2Kp68Pill86UVXBmscM8tDBFP2NedQaBWjq71MDilCJ/CMV2wzxylhkvdI0UYlgMkU9bXag+2oz1eVga06Ei6lge4nwIcHQQOB13+WxNYrdyjIYkaxPbkLI4Y8voEWrlspY5vFItXHwitvPgwxeV4LIUcFnq5N7QxP2nZcebatv5loLEmoyWHjygpbUH9TELyr7OjLJKqGzQIGWo2PzuM9zzR2pYOmVmezAFEnlFHDmZ7XvUwIHGXnzquJeL4WcOGDXzHFEsWCU59X+RYgP7MT7zHM45sOtn9en+pFFW6uAKKDt2wWyduGCWTud0V5PLqQpnlHCyTHI1ruLy08uZpgVoZittZwq7iWOVTiWVRFCa+sHyXfu0lXmRQYMk21RxVbWKKyrU8d6zSlLRLhqVTprCdRZ+OefkqCywIYNSbnfOOe1jmO5sbdO+lmZVXnGXpvz78/npJc/unPNpU9xAfF5WH45TkVAmDrIc55ycc74uSJKliS3hwPn0cTjhTBbL86+5WDO5t8xhlMzDORdyzpjFaJnOOnTWnKk6bfY0nXrheToeCKqGD1XliOEqHzJU6bJyf0Bx+95VCUZZLw/mJHjmFXNkbVlTppwNyXgoh6gacSrM+euyUGYrK/VnbJnbW1pUtOhenfXEc7KPIm9AEAR++0wEMTZHxLKNC6tBxmuyIGVtGUCQzJfDYPWCwGnao09rGlP4zENDdN+cO3TvI7/U3bNu0+lFx+uk3vE6r3qybj/nes1Mn6QzDw/1vBf85Bl5/Vkkg2RxqWo+elnas1TBgff8Q6M9UYXcuSez6h7PvFffh/noYMM3pLcNm3InXHSe0gwxOzBFaL6tI6Mdza3a19qq9NX3aTLnA+ecCLEkJ2gnM6AAzjk5xV9kiHXAjDb5BtaWgWVP3VbMHj5Y9/3wP7Rhzjf0l4bDemnrFl33wP/UVcfM0MLb79fDz7+qn7z6Z/3TL57V1+/7e33vt4v103Xr9PSe3Vp8xmWq2V6ks8OJ6MCTVicPmdYzJty2mJOunKNTrroQL0XoUABbyNAMJlOI3AFlkbJcWDIsMGWV5UqmilSbyaqurV1JtqXyRfdo8lsrqZw30Sz0cmKZDtOdIzbo54KSnHMqfFN2V+j6CXPUe/xEfVB7QHdOvlRL99bqU+4Ih9q71MtulWDEllSUq7S6UsXokuZckmT9iuQ4K2RUW9+stbv2a8mmbfrZ0uUKRANdrN69LGLHM19Oyr/o5hgeoT1vsQrn6O0cODQYoDgkToiNmHjJTCVsz9/3nkpRoCuZUBujaPf2XZp0xmlyR1+ggLYIUr9NsrQlA6KAhHOOvIEgncQ0OrNuiM557XG9+PqftHj5Sq1vbFE9e7xLObiWSQAAEABJREFUFLFmVfopXM3WVsn2V8pDbUnVIBkUV7KmQZcOGqwS8ss4khdXViiRSqmbBT+YcOF0HX/5bB2H8dazIbc4MzaL8VmcYJBjdc1hvEGIM4wnIm38BbC8o5gKxtv93jMqxfuhnHq4Og+95xplEwmNevOD2AnkO+cYfoCjDwJnOXLO0l+EyfR6KdPolEvn6pEZ13I+6VRdT042dctqali3yhhxKY2yLW4pt9XtSxSyDWZ3vClHZyQ4H5Q2fiS3+hWNW/eaSquqVDPyCJUNHqIhnA0CM8gMsx73V1uGUQ+jwUaEpbMDjPd8GP5l2OSEDIlxOLSE/bibO34pQ89ME589aTVv3hEbicEJD4ECcIDhzjm4vhjsfJJDxvnP/UDP/PJZHeoN1W49Xl6uIJGQHbMDprD2vqtDbHFlEzns0LNFHOHTxWkledMIEgmOCKGKRh+hWkZoxA3U+IsbPlQpTguyvqdz6sVQD5zfez3k5I3vGwWhXxNCHBAxCiLTlagwAgZi46mkvAIFUkUJKKmb/TnwlLwTiFT4EON3E0tHnoo07PFnlQucZr/8Y/1q7k3qcAk1Rk4R+nRxNik69IG/UZocaztLpxmMnTNVYzh8jeXIPm7ONI2nQwwi9M6iQw/TsodzgqUzLNz+QSSHUBu6tvrnMC4HswfyszjGynIF2pehJr1NbDr3g1lCatSsKRoGLqFXrSfW/a8fqwu57bNv0rI/LI0XDcpNcYN4ISEjH0reWqFqnuQT9OKhf39ZuUTSvwLbCMtxOLPLlelqjj6a/f1Y9vlj2K38yZA2nXPmF8mp75sA3zFMcwOjra7dMAMzNEQ5g5iOe9roLKPDDM95o3MKPaacdSKkjimPHzCIgPHmEEvv/8v7GnP+9UqzEF780Pe0YfV6NfNb3s43nlQXDGaI1e3TDk3RWc45v0YUj5muTE+P5n7nLn3w57dEgcIkl633n1fyyBGy7+hLZmgir9lGm51O/OXrx9MqQBbAKAry+c7BQwWQ7FY6CacFEYbEBob6AqbHzcgwb2xYUBx+qxPijBA6tHLKoj4c6Vx6roy5ly5N67k77lMrsg6yYtfReM7A18WR4MjqMuzJ9mEz9wpH3SwjT6eN90YwF9XOZSwxcjiPsxdoIoutg7sAMotIECAddYAghoQL5B0SONm6EwSknYGLeUNTADAcopA5wRo3HEMUOwYjcgbweF7qWHmhToGe8PYKDZp0gZRw6ujtUUNXRo3UO0zDWebc+UyPEMcZfw5stDkUcWIcKQGv/YJs6xAZSsgpYH4XSUqXpOWcA0gUgqWhHTAwWNpARM45UB6c5HBGUADfA7Ru2BtmShXSRmNwLg+mbMwTMm0Z8/QcrJ42fOqyVRp23Dx1s/W185ZwkF+U6jgg7eXG1sgW1cYi5GvBTMDeyCQo/oyWunfvVytOy8C795FnZL8RVqSKNGjMSE1kQUN/bwxRvlpcz+TGGQNi5/rYPOEk55wCKcZGmyK+so/EB2EBQEOMI4aO+YyAJR8sL09q+vJVKjt6tszwxt6M9vOWsA9DakOnTnq1DUaHISYQKaBYcbL7AwU9pNoZ/u2sAR8seUfnsf8XB4GqeE2mGIeZPtQlQRiQjmSdYx2JCMmMleSc64MA2sBGgHNxfhAyd20IhlhjlUGiCYDYWvBNCCGKP0c+lPGCfJh1cLC6J8zUYd4T9rW1aRc3wl2cshpdQgn28Q7u4iGL17QZZ8XS4kZiJ9BGRC7IyzLcjsGtPVm14cD0tXNUxst0DaXWZsRo7NeVmsjyI9PyDSwNEKgRB1SWQZwStBP2y0n2KBr1ea5fsBlpqkQoCZcpaElIU8IyLXnRwRpNxfjabEb7utu1hVvgVs7/OzC+uyjFnC1WK0/rRRxSUokEtf+r4LwyppTJ7WLENDAFmtg5fsMPKUdMGK9hc2/RELbQfh1NNwOTabXQGWT69YHpTTHZUJQXaLxD8HlBTJggA2MCU+TzqdknjAyjr/lovS6uH6YpGL+zt5vf+Fu4jNRrPW8K27gKN2ZDpcoqvPHtHFhSE8b4RfRrs87xRqJDXzCDC6B8aYofYUtWvqBmRkEd8uo7OnXM1DOVLi/T8B179dcfSuYzTZbycmSfFaG3WWVJZ1EByDd7cAAG22KXzwBZBwPkk7j54w26pn64FrSN0nQuJJ+POkcb21q0sblRq3n++nD/IW3hJtYMb8AxtMQeVEpL1L3sOaUxvpeePJGXId84GsZYXk3nY+U/a0/s/71qJcc5pwNMg9qOLj3xr49oyouPqHrBHZqyZAWlfx1MlnPETn1SzX7Z5wkfxWXwyHjlFMytH6qLG4bp0sbhHuaD55GegbFn11Zp9ciz9El7iz6sO6SP6+u04sBBLd97QGb4ztYOZRjaRSUl9FCVyqoH+f8C6d32F5VgfI4j9aSZNu8xTnw4iZhmiU0JkA/oRoCMhF4KocoqyhQGCe3Hgftwwk/PvUpncywOTpin8zhowfLfB2sLsF6OgXGQT1tFa97aCpZj2PLDdYrhkJbVHdSyQ7VaxjvhsoOH9C4GL91/UO8Baw81aBdbWzvDvKSyQlXDh6qUt8PS6mqlOPzYLz7F7PVFrPb2PjD6fIyP+hum/fzIsjyAqWbKDISvccJz/FaYWf6ckpwkcy6pXWyj1u5jUxfprL+7Wzr1Mp3zk2d9bcT76t7F+YShvwIa9+uHcVuhYSBY39CiVfwM/uGBOq3cV6ePgNUH6rWpvkW7WttVx0rcSS84eqOEK+6gEcNUc+RIjB+uNHNdChQx3O2fFRzz1hrp5eByBCs+8glxa74XUNljlDFMkvI4OI8sdgrZBlP8ZhiseZVDYKhEMqU9OGELr0wP3fWg9rS3qezmf9DcvVV4EdMjXxlxRsdAIu/sOF1oz7CHuIqCgJ5L8kNCuryUF5QylVZXqHRQpUprKlVeM0hlg6pVOXSIqvjhoXLYCBWVlikoKtJQrrv2dmi3siSrfBA42S1r2PQzNGLm2XnxMcJeTxg2XQeCKeoLB0T2ImU3N3uQrUCfUE6JVFr1OGZjU4vW2ws2T2An/8P9msn6NJ2bo8nWgA+zfcq3RUSgKXJhNBrvkJaCXHmlwsoqRZXVisqrpIoqJSqrFZSRX1yqoLRcKR4RokRCI/h9wHH3DnhoOMSd34TQBcrQO4PPPV3D6HUTPtDDljZNaBdkClDDEkDMRx6qkLQ4zxP5M38Pct3e91TKDiDOFMk0i6tz+rylXasPHtb3br9HG1mXzlyxWRewlp1r04IGvVwE2miMWOALacM0gNrWZqxHMIafnccw1EbzYmL0keARn7ysIUA50Mn1s3PbEgX8sLkXo11RkiGZYJiG6uKCUz11soaed6Y/S1iDBtaQQUzHDRHTsG/eSGiUKCgJNv4YfLEvd87JO4FHj5KyUrlkkYrolGQ6rXru9WsON+kj1qh/vuMBrWEt023f1fktIzX3wCDNevw5L4NWvGP7ZNOW1yKPg3UsWuv41XUDeCP4U15ONvFyso1fgg5DJzFaiUBZhl8P+3IX3u9mXaia8jUNOR/D/ekrlJ3GTKZviBY8JsNjU2Fgz5CmY2IFB+STTbAMBBCO4Z5v7rAF1abbGDpEQUIlVdW8A1ZILtDBjm6tZnH+gJ/kXlm2Usu2bdPalia1fP1ezQ+O19yGEbq0bqguZ72Yx9viwjfe11XcOK8GFv7hXQUBC1YE5Li0hGDejxRglN3KHEMwwetJivyas07RkHMnqwajq6edJutdAzPQG2Oqe4NR2eOonwcG48M0jJYxgCMAkjKC1SYNB4Fc0hZLR/ODjNXNcTrcO2KIUnUfoHTgHVAxZIiS6WKZIxrbu7WJH0DfZzF/d89+/WH1Br36AQ7Zs0sfNdZrA4e22ktv08FzFqnu3Gt1cMo1qjvnKgWTJp+oY884Wcec+VVNOuurmnj2KTqK3h3PnB5z3hkaCq6eNlkDP+zLK4sRVuAzjDAgDyMIWEBMGbE3iEoekwVjxH4fkQXgcBtB5tAYqIpXzHCDCfNnyDmpiO3Vdhrxw82QD34jsS5V8aNO1fBhSvESnSovkc35BpyxhVfjVZxOl3JQe2v7br21baeWfL5Vr69Zp9dXrdWf163XXzZ+Kk6CNIY6hdiTciBTW57Sf/HFHHE8kMWUNQnOOTkHDCzEBVbDO4GoYLBhM9YgNIdYGU4o5I+ZO01jeOOzp7AImQeZniFrw3DOC1E6pbSdR4YMU6qq0jujmINUwhzmAnXQ4EGm77aWNn3G9r6+oVlrwPbvukHIbTCkIdpTAYygjle7gH3iyyIYCH0lZq4j5ZyLjS9g8voDvU7C2osdjwRCSIZBwQmGC4DfLGgsjgiZribBtuMdvBP0siul+Gl88EcvKc2WHVVUyFVWK8lakaysVIpDW7q6SqWDqlTMWSbFgprmB5NicGDGh+YEGi80Fg6gzRka8BV4PCYfveXAFrBVPgHhnBNBTnwWFYBkHKxm3nxIM8jyTW6hfcMGlgcLzD7W2Auna/zsqerlF+Asx+1cEKiZRdx2qTYuYCPyu1qE4WFlpdoTKWVSJQrLqxTUDFZiUI0SHNuTQNDXAKMgdgaq9DmANtHKK0CelRdokhTGCsGi2FJ98aOY8MW8vpR5pC/hiVgmJJWM7mvLssgg24+COJKOYjQcy7SwhbqXId7FYt3F1NjGqNjMXaSRX7iLWSuOXP+aRq95RSMZISNWvKDhjJaaj36rFqYaa0AkMyz0oyDM0+TRYGgAU9+TmOeJy6KCFihnxjuLjM6DVz5PG7LyLwK5TtRyspGi/BcbadKhCD4bPXxzloa2Up+m0OijGA0n8XvAV2eerSKe40Kggx0sM3qEdnGkXseWvoqtfTX0pzhmE7CVEdNbt1LB/es3e1nI9aPdBHrl/YjIO8TTUewc6Jg38vXQQZhg6IvgJDMMJMefCp+DAOIyCJJfHigj9JdZewbxwDPK9DQlPJ1nPIkRMRmHnI0zhqFrCY5IgZM0GKGH/dNnl51pmDY5LltB2akL9CAvLQ9uMEcgCut8z+ex9X7IKCjkWaMx0CI8xOgQgQxA+eBoTAY0LPsckUEfyidI9weTYdCfE3PFseXGbUcyfaz5yFr/YhVrVRYdN2uKzpg3XdOYKtN4kJmOU87jen4e+FyO7VM40wT1DOvElXer6MSL9cDv32EUIBLJhYYM48C+fGvYIM4v8Ma9ovzXr65l5LUzZGBZ/wloDvmxDKPj4pi5EHvsIyuFsAAzwTI8WLve30QOD4AUg095nkJk+iNCwd7mJh1oaVan3QivuEt34YQHbFpQ6pnAqIaCBWO/iAvOIBcexMNPgLAA5YMvpa/I82lwnDJiAFBIvhnlKSMoNRpkJb4NyzaJlmfgiAYaGtNkysk5A4FjkH39AhXY83UtT9i1OCIYOljFl9+pzl37da+fEjG3b5BKBMvwYArE+VAQBJSDNjVJmPNs5PQ5iMqWZxywWEAOmVbIuzkAAAOsSURBVMR/HcgnWL7VMWaPLcPASY4/H5wkM1IQFgo0aUjFn5Nz/SAX51rHBgdYJGp5eKwDtmzdpqNvv0nlC+9Rx859utNGQoGXSoRCyurGBqOoKecBTbHd53vD8YDlg3wekQXjiut7aQjw+K+jQol32oBirweRwxIPTsI+Of58cHFa/nOyMk9+SRTUKVAd28bhri41dHbqLR4gJ73wsCpZF7pwwrdwwpfU68saaGBMh36BCrHanGBg+R6o5TGW9WPzBRm4heIBgTzCgIyYdIacHMgM8wAtn1OI1fcZXyHhnJNzgGIQOMhyt27kvNzQk1UjN7/Gjg6tuvY+Hf3dB1XBK2yKFyBTUf/NZ8aYoWa0XUY8MBQsvw+obzSIUWB9ChiPGY6hkOTTUoE2RsDyQX3BQWGDxf8JpFuWfqhrn/ytrgGuysOiJ1/SVb94SVcD1/z8RV335gphdx/w87jUnS5WSxCoiUeGVn6S2r/vgHTCCLl0Sonx03Xbxq1opi9+bmAybwzaekeAzdgYqNqX/nK6UKeA43qxTGqYiwY25unr31mpRU/9VpcD1x0eqr9pGqFOtvTomvtV/M1/1KSHn9Fxzy3RcY//VtUPPqzo+r9Tz6J71X36FVrYMFxX8+p9bW2NgiQvPGzzak8WqcM5tXDRaAOWXHC9jn3uByoqLVFu+x7dwaLoW/buM6rfA3SaTEvszPdirPxAQwq0GWn8HlPBRk3IVhxCf4EHJqR4eSbbWjS45t2PNZ/e7WXbDhberZF/+0NNfO1xTfrdo2ouTWlr/WGt2rpVLy9+Xc898XM989wLWrJ8hVZt364NtQf0GS9HW1ubtTPTpX0uYgHglSXBi08mwnhaaOnNqZmp0MR68D4PCJNeeERVTIUcv8rcxXqAj7wLvPk+opJX1nzgVfb6hmSbUX2QXxMKRhq2MsOFKdOXRoLP93JjmQuXr9Yifobr/cpFSmL4sYsfV3ZwlT74+BM9O3Whfnb6pVqx7lNtrD2kjQfrMLZO62oBHkjWgtccOKQ1PO2vBgyv5QVpzZ69CtJjR8muhS5waufltRkLGxkB9rvcoYZGrbr6Hk267iq/HpgT7l+7SYJH/it4wBJeW/MCYDSKezQQGx3Jer3PQOOhepyO+nqcbOhIV/CT+0KGava4uepkSpYfPU77mhr1/LRFev+j1dpSV68t9Y36nN8lP29q1WfN3Pn5weYznsq2dPVoG7vcDsDwZp7yPm3v1Aae+9fxYLK+vkn/HwAA//9nb5p+AAAABklEQVQDABBWz3J8I7ViAAAAAElFTkSuQmCC", "name": "SDF3D_Selector2D_XZ", "parameters": { }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Selection Map", "name": "map", "shortdesc": "2D texture for selecting SDFs", "type": "f" }, { "default": "0.0", "function": true, "label": "SDF#", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" } ], "instance": "\nfloat sdfselector_$name(vec3 p) {\n\tvec2 tile_xy = fract(p.xz+0.5)-0.5;\n\tvec2 tile_pos = floor(p.xz+0.5)-0.5;\n\n\tfloat sel = clamp($map(tile_pos),0.0,1.0);\n\t\n\tint index = int(floor(sel * float(#count)+1.0));\n\t\n\t#for\n\t\tif (index == #) {\n\t\t\treturn $sdf#(vec3(tile_xy.x,p.y,tile_xy.y));\n\t\t}\n\t#end\n\t\n\treturn 1e10;\n}\n\n\nvec3 sdf2d_diff_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(0.5,xy.y,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(-0.5,xy.y,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,xy.y,0.5))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,xy.y,-0.5))<0.0) col+=vec3(1.0);\n\t\tt=t+4.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (outc.x<1.0) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n\nvec3 sdf2d_show_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(xy.x,0.0,xy.y))<0.0) col+=vec3(1.0);\n\t\tt=t+1.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (xy.x>0.49&&xy.x<0.51||xy.x<-0.49&&xy.x>-0.51||\n\t xy.y>0.49&&xy.y<0.51||xy.y<-0.49&&xy.y>-0.51) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n", "longdesc": "Selects one of multiple SDF3D inputs based on a selection map value for each tile.\nThe map's red channel (0.0-1.0) determines which SDF is used per tile.\n\nCode - PauloFalcao", "name": "SDF3D Selector2D XZ", "outputs": [ { "sdf3d": "sdfselector_$name($uv)", "shortdesc": "SDF Output", "type": "sdf3d" }, { "longdesc": "Checks the differences between the 4 connecting faces of the SDFs.", "rgb": "sdf2d_diff_$name($uv)", "shortdesc": "Debug tile faces", "type": "rgb" }, { "longdesc": "Show a 2d slice of the SDFs.", "rgb": "sdf2d_show_$name($uv)", "shortdesc": "Debug tile", "type": "rgb" } ], "parameters": [], "shortdesc": "SDF3D Selector XZ" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Selector2D XZ", "type": "shader" }, { "display_name": "Selector2D XY", "generic_size": 2.0, "icon_data": "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", "name": "SDF3D_Selector2D_XY", "parameters": { }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Selection Map", "name": "map", "shortdesc": "2D texture for selecting SDFs", "type": "f" }, { "default": "0.0", "function": true, "label": "SDF#", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" } ], "instance": "\nfloat sdfselector_$name(vec3 p) {\n\n\tvec2 tile_xy = fract(p.xy+0.5)-0.5;\n\tvec2 tile_pos = floor(p.xy+0.5)-0.5;\n\n\tfloat sel = clamp($map(tile_pos),0.0,1.0);\n\n\tint index = int(floor(sel * float(#count)+1.0));\n\t\n\t#for\n\t\tif (index == #) {\n\t\t\t\treturn $sdf#(vec3(tile_xy.x,tile_xy.y,p.z));\n\t}\n\t#end\n\n\treturn 1e10;\n}\n\n\nvec3 sdf2d_diff_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(0.5,xy.y,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(-0.5,xy.y,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,0.5,xy.y))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,-0.5,xy.y))<0.0) col+=vec3(1.0);\n\t\tt=t+4.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (outc.x<1.0) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n\nvec3 sdf2d_show_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(xy.x,xy.y,0.0))<0.0) col+=vec3(1.0);\n\t\tt=t+1.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (xy.x>0.49&&xy.x<0.51||xy.x<-0.49&&xy.x>-0.51||\n\t xy.y>0.49&&xy.y<0.51||xy.y<-0.49&&xy.y>-0.51) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n", "longdesc": "Selects one of multiple SDF3D inputs based on a selection map value for each tile.\nThe map's red channel (0.0-1.0) determines which SDF is used per tile.\n\nCode - PauloFalcao", "name": "SDF3D Selector2D XY", "outputs": [ { "sdf3d": "sdfselector_$name($uv)", "shortdesc": "SDF Output", "type": "sdf3d" }, { "longdesc": "Checks the differences between the 4 connecting faces of the SDFs.", "rgb": "sdf2d_diff_$name($uv)", "shortdesc": "Debug tile faces", "type": "rgb" }, { "longdesc": "Show a 2d slice of the SDFs.", "rgb": "sdf2d_show_$name($uv)", "shortdesc": "Debug tile", "type": "rgb" } ], "parameters": [], "shortdesc": "SDF3D Selector XY" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Selector2D XY", "type": "shader" }, { "display_name": "Selector2D YZ", "generic_size": 2.0, "icon_data": "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", "name": "SDF3D_Selector2D_YZ", "parameters": { }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Selection Map", "name": "map", "shortdesc": "2D texture for selecting SDFs", "type": "f" }, { "default": "0.0", "function": true, "label": "SDF#", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" } ], "instance": "\nfloat sdfselector_$name(vec3 p) {\n\n\tvec2 tile_xy = fract(p.yz+0.5)-0.5;\n\tvec2 tile_pos = floor(p.yz+0.5)-0.5;\n\n\tfloat sel = clamp($map(tile_pos),0.0,1.0);\n\n\tint index = int(floor(sel * float(#count)+1.0));\n\n\t#for\n\t\tif (index == #) {\n\t\t\t\treturn $sdf#(vec3(p.x,tile_xy.x,tile_xy.y));\n\t}\n\t#end\n\n\treturn 1e10;\n}\n\n\nvec3 sdf2d_diff_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(xy.y,0.5,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.y,-0.5,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,xy.y,0.5))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,xy.y,-0.5))<0.0) col+=vec3(1.0);\n\t\tt=t+4.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (outc.x<1.0) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n\nvec3 sdf2d_show_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(0.0,xy.x,xy.y))<0.0) col+=vec3(1.0);\n\t\tt=t+1.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (xy.x>0.49&&xy.x<0.51||xy.x<-0.49&&xy.x>-0.51||\n\t xy.y>0.49&&xy.y<0.51||xy.y<-0.49&&xy.y>-0.51) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n", "longdesc": "Selects one of multiple SDF3D inputs based on a selection map value for each tile.\nThe map (0.0-1.0) determines which SDF is used per tile.\n\nCode - Paulo Falcao", "name": "SDF3D Selector2D YZ", "outputs": [ { "sdf3d": "sdfselector_$name($uv)", "shortdesc": "SDF Output", "type": "sdf3d" }, { "longdesc": "Checks the differences between the 4 connecting faces of the SDFs.", "rgb": "sdf2d_diff_$name($uv)", "shortdesc": "Debug tile faces", "type": "rgb" }, { "longdesc": "Show a 2d slice of the SDFs.", "rgb": "sdf2d_show_$name($uv)", "shortdesc": "Debug tile", "type": "rgb" } ], "parameters": [], "shortdesc": "SDF3D Selector YZ" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Selector2D YZ", "type": "shader" }, { "connections": [ { "from": "sdf3d_torus_2", "from_node": "node_sdf3d_torus_2", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_translate_3_4", "to_node": "node_sdf3d_translate_3_4", "to_port": 0.0 }, { "from": "sdf3d_torus_2", "from_node": "node_sdf3d_torus_2", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_translate_3_5", "to_node": "node_sdf3d_translate_3_5", "to_port": 0.0 }, { "from": "sdf3d_translate_3_4", "from_node": "node_sdf3d_translate_3_4", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_boolean_3", "to_node": "node_sdf3d_boolean_3", "to_port": 0.0 }, { "from": "sdf3d_translate_3_5", "from_node": "node_sdf3d_translate_3_5", "from_port": 0.0, "keep_alive": false, "to": "sdf3d_boolean_3", "to_node": "node_sdf3d_boolean_3", "to_port": 1.0 }, { "from": "sdf3d_boolean_3", "from_node": "node_sdf3d_boolean_3", "from_port": 0.0, "keep_alive": false, "to": "_3", "to_node": "node__3", "to_port": 0.0 }, { "from": "sdf3d_boolean_3", "from_node": "node_sdf3d_boolean_3", "from_port": 0.0, "keep_alive": false, "to": "RandomSDF3DSelector_7", "to_node": "node_RandomSDF3DSelector_7", "to_port": 1.0 }, { "from": "_3", "from_node": "node__3", "from_port": 0.0, "keep_alive": false, "to": "RandomSDF3DSelector_7", "to_node": "node_RandomSDF3DSelector_7", "to_port": 2.0 }, { "from": "shader_2", "from_node": "node_shader_2", "from_port": 0.0, "keep_alive": false, "to": "RandomSDF3DSelector_7", "to_node": "node_RandomSDF3DSelector_7", "to_port": 0.0 }, { "from": "RandomSDF3DSelector_7", "from_node": "node_RandomSDF3DSelector_7", "from_port": 0.0, "keep_alive": false, "to": "pxflib_3", "to_node": "node_pxflib_3", "to_port": 5.0 }, { "from": "pxflib_3", "from_node": "node_pxflib_3", "from_port": 0.0, "keep_alive": false, "to": "MFSDF_Render", "to_node": "node_MFSDF_Render", "to_port": 0.0 } ], "display_name": "Selector2D XZ Example", "icon_data": "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", "nodes": [ { "name": "sdf3d_torus_2", "node_position": { "x": -746.499450683594, "y": -46.5116386413574 }, "parameters": { "R": 0.5, "axis": 1.0, "r": 0.1 }, "seed_int": 0.0, "type": "sdf3d_torus" }, { "generic_size": 1.0, "name": "sdf3d_translate_3_5", "node_position": { "x": -516.499450683594, "y": 33.4883613586426 }, "parameters": { "x": -0.5, "y": 0.0, "z": -0.5 }, "seed_int": 0.0, "type": "sdf3d_translate" }, { "generic_size": 1.0, "name": "sdf3d_boolean_3", "node_position": { "x": -326.499450683594, "y": -46.5116386413574 }, "parameters": { "op1": 0.0 }, "seed_int": 0.0, "type": "sdf3d_boolean_v" }, { "name": "pxflib_3", "node_position": { "x": 453.500549316406, "y": -176.511642456055 }, "parameters": { "BaseColor": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" }, "Emission": 0.0, "Metallic": 0.0, "RotateX": 0.0, "RotateY": 0.0, "RotateZ": 0.0, "Roughness": 0.0, "Specular": 1.0, "TranlateX": 0.0, "TranlateY": 0.0, "TranlateZ": 0.0, "scale": 1.0 }, "seed": -5947.0, "seed_locked": true, "shader_model": { "code": "", "global": "vec3 MFSDF_Obj_Maker_rotate3d(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "vec3(1.0)", "function": true, "label": "BaseColor", "name": "BaseColor_tex3d", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "1.0", "function": true, "label": "Metallic", "name": "Metallic_tex3d", "shortdesc": "Grayscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Specular", "name": "Specular_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "1.0", "function": true, "label": "Roughness", "name": "Roughness_tex3d", "shortdesc": "Greyscale TEX3D", "type": "tex3d_gs" }, { "default": "vec3(1.0)", "function": true, "label": "Emission", "name": "Emission_tex3d", "type": "tex3d" }, { "default": "length($uv)-0.4 ", "function": true, "label": "Object", "name": "sdf3d", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec4 PBRObjectMaker_$name(vec4 uv){\n uv.xyz=MFSDF_Obj_Maker_rotate3d(uv.xyz-vec3($TranlateX,$TranlateY,$TranlateZ),vec3($RotateX,$RotateY,$RotateZ)*0.01745329251)/$scale;\n\tfloat sdf=$sdf3d(uv.xyz)*$scale;\n\t//13 - Emission\n\tif (uv.w>12.5&&uv.w<13.5) {\n\t\treturn vec4($Emission*$Emission_tex3d(vec4(uv.xyz,13.0)),sdf);\n\t} else\n\t//5 - Roughness\n\tif (uv.w>4.5&&uv.w<5.5) {\n\t\treturn vec4($Roughness*clamp($Roughness_tex3d(vec4(uv.xyz,5.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//4 - Specular\n\tif (uv.w>3.5) {\n\t\treturn vec4($Specular*clamp($Specular_tex3d(vec4(uv.xyz,4.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//2 - Metallic\n\tif (uv.w>1.5&&uv.w<2.5) {\n\t\treturn vec4($Metallic*clamp($Metallic_tex3d(vec4(uv.xyz,2.0)),0.0,1.0),0.0,0.0,sdf);\n\t} else\n\t//1 - BaseColor\n\tif (uv.w>0.5){\n\t\treturn vec4($BaseColor.rgb*clamp($BaseColor_tex3d(vec4(uv.xyz,1.0)),vec3(0.0),vec3(1.0)),sdf);\n\t} else\n\t//0 - SDF\n\t{\n\t\treturn vec4(vec3(0),sdf);\n\t}\n}", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nCreates a Multi Field SDF (MFSDF), a single function that defines the object (SDF) and all materials properties using a TEX3D for each property.\nThis also have Rotation, Scale and Translation", "name": "MFSDF Object", "outputs": [ { "shortdesc": "V4->V4 MFSDF ", "type": "v4v4", "v4v4": "PBRObjectMaker_$name($uv)" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "", "longdesc": "Emission Scale", "max": 500.0, "min": 0.0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "S", "longdesc": "Object scale", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "max": 180.0, "min": -180.0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "max": 180.0, "min": -180.0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "max": 180.0, "min": -180.0, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "generic_size": 1.0, "name": "sdf3d_translate_3_4", "node_position": { "x": -509.742736816406, "y": -93.3683242797852 }, "parameters": { "x": 0.5, "y": 0.0, "z": 0.5 }, "seed_int": 0.0, "type": "sdf3d_translate" }, { "name": "shader_2", "node_position": { "x": -139.742782592773, "y": -143.36833190918 }, "parameters": { "seed": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "float random2d1d(vec2 c,float seed) {\n\tc = fract(c*17.15)+5.0+seed;\n\tc += dot(c.x, c.y);\n\treturn fract(c.x*c.x*c.y);\n}\n", "inputs": [], "instance": "", "longdesc": "A simple 2d random noise\n\nCode - Paulo Falcao", "name": "Greyscale RandomNoise2D", "outputs": [ { "f": "random2d1d($uv,$seed)", "shortdesc": "Greyscale Output", "type": "f" } ], "parameters": [ { "control": "None", "default": 0.5, "label": "Seed", "max": 1.0, "min": 0.0, "name": "seed", "shortdesc": "Random Seed", "step": 0.0001, "type": "float" } ], "shortdesc": "Greyscale RandomNoise2D" }, "type": "shader" }, { "name": "_3", "node_position": { "x": -119.742782592773, "y": 26.6316738128662 }, "parameters": { "anglex": 0.0, "angley": 0.0, "anglez": 0.0, "flipx": 1.0, "flipy": 0.0, "flipz": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "sdf", "shortdesc": "SDF3D", "type": "sdf3d" } ], "instance": "vec3 sdf3drotandflip_$name(vec3 p) {\n\tvec3 point = p;\n\t$flipx\n\t$flipy\n\t$flipz\n\tvec3 resultX = $anglex;\n\tvec3 resultY = $angley;\n\tvec3 resultZ = $anglez;\n\treturn resultZ;\n}", "longdesc": "Rotates and flips axis", "name": "SDF3D RotAndFlip", "outputs": [ { "sdf3d": "$sdf(sdf3drotandflip_$name($uv));", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 0.0, "label": "Flip X", "name": "flipx", "type": "enum", "values": [ { "name": "No", "value": "" }, { "name": "Yes", "value": "point.x = -point.x;" } ] }, { "default": 0.0, "label": "Flip Y", "name": "flipy", "type": "enum", "values": [ { "name": "No", "value": "" }, { "name": "Yes", "value": "point.y = -point.y;" } ] }, { "default": 0.0, "label": "Flip Z", "name": "flipz", "type": "enum", "values": [ { "name": "No", "value": "" }, { "name": "Yes", "value": "point.z = -point.z;" } ] }, { "default": 3.0, "label": "Angle X", "name": "anglex", "type": "enum", "values": [ { "name": "0ยฐ", "value": "point;" }, { "name": "90ยฐ", "value": "vec3(point.x, -point.z, point.y);" }, { "name": "180ยฐ", "value": "vec3(point.x, -point.y, -point.z);" }, { "name": "270ยฐ", "value": "vec3(point.x, point.z, -point.y);" } ] }, { "default": 3.0, "label": "Angle Y", "name": "angley", "type": "enum", "values": [ { "name": "0ยฐ", "value": "resultX;" }, { "name": "90ยฐ", "value": "vec3(resultX.z, resultX.y, -resultX.x);" }, { "name": "180ยฐ", "value": "vec3(-resultX.x, resultX.y, -resultX.z);" }, { "name": "270ยฐ", "value": "vec3(-resultX.z, resultX.y, resultX.x);" } ] }, { "default": 3.0, "label": "Angle Z", "name": "anglez", "type": "enum", "values": [ { "name": "0ยฐ", "value": "resultY;" }, { "name": "90ยฐ", "value": "vec3(-resultY.y, resultY.x, resultY.z);" }, { "name": "180ยฐ", "value": "vec3(-resultY.x, -resultY.y, resultY.z);" }, { "name": "270ยฐ", "value": "vec3(resultY.y, -resultY.x, resultY.z);" } ] } ], "shortdesc": "SDF3D RotAndFlip" }, "type": "shader" }, { "generic_size": 2.0, "name": "RandomSDF3DSelector_7", "node_position": { "x": 173.500564575195, "y": -66.5116348266602 }, "parameters": { }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Selection Map", "name": "map", "shortdesc": "2D texture for selecting SDFs", "type": "f" }, { "default": "0.0", "function": true, "label": "SDF#", "name": "sdf#", "type": "sdf3d" } ], "instance": "\nfloat sdfselector_$name(vec3 p) {\n\tvec2 tile_xy = fract(p.xz+0.5)-0.5;\n\tvec2 tile_pos = floor(p.xz+0.5)-0.5;\n\n\tfloat sel = clamp($map(tile_pos),0.0,1.0);\n\n\tint index = int(floor(sel * float(#count)+1.0));\n\t\n\t#for\n\t\tif (index == #) {\n\t\t\treturn $sdf#(vec3(tile_xy.x,p.y,tile_xy.y));\n\t\t}\n\t#end\n\t\n\treturn 1e10;\n}\n\n\nvec3 sdf2d_diff_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(0.5,xy.y,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(-0.5,xy.y,xy.x))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,xy.y,0.5))<0.0) col+=vec3(1.0);\n\t\tif (sdfselector_$name(vec3(xy.x,xy.y,-0.5))<0.0) col+=vec3(1.0);\n\t\tt=t+4.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (outc.x<1.0) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n\nvec3 sdf2d_show_$name(vec2 xy) {\n\txy-=0.5;\n\tvec3 col=vec3(0.0);\n\tfloat t=0.0;\n\n\t#for\n\t\tif (sdfselector_$name(vec3(xy.x,0.0,xy.y))<0.0) col+=vec3(1.0);\n\t\tt=t+1.0;\n\t#end\n\n\tvec3 outc=col/t;\n\tif (xy.x>0.49&&xy.x<0.51||xy.x<-0.49&&xy.x>-0.51||\n\t xy.y>0.49&&xy.y<0.51||xy.y<-0.49&&xy.y>-0.51) outc*=vec3(1.0,0.0,0.0);\n\treturn pow(outc,vec3(1.0/2.2));\n}\n", "longdesc": "Type: SDF3D Operator\n\nSelects one of multiple SDF3D inputs based on a selection map value for each tile.\nThe map (0.0-1.0) determines which SDF is used per tile.", "name": "SDF3D Selector2D XZ", "outputs": [ { "sdf3d": "sdfselector_$name($uv)", "shortdesc": "SDF Output", "type": "sdf3d" }, { "longdesc": "Checks the differences between the 4 connecting faces of the SDFs.", "rgb": "sdf2d_diff_$name($uv)", "shortdesc": "Debug tile faces", "type": "rgb" }, { "longdesc": "Show a 2d slice of the SDFs.", "rgb": "sdf2d_show_$name($uv)", "shortdesc": "Debug tile", "type": "rgb" } ], "parameters": [], "shortdesc": "Random SDF3D Selector" }, "type": "shader" }, { "generic_size": 1.0, "name": "MFSDF_Render", "node_position": { "x": 776.225769042969, "y": -183.336837768555 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 6.0, "CamZ": 3.0, "CamZoom": 1.0, "Gamma": 1.4, "LookAtX": 0.0, "LookAtY": 1.2, "LookAtZ": 0.0, "Shadow": 1.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "vec2 Simple360HDR_equirectangularMap(vec3 dir) {\n\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999999.0)", "function": true, "label": "MFSDF", "name": "mfsdf#", "shortdesc": "V4->V4 Multi-Field SDF #", "type": "v4v4" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "vec4 mfsdf_$name(vec4 p){ \n vec4 a=vec4(0.0,0.0,0.0,999999999.0);\n vec4 b;\n #for\n b=$mfsdf#(p);\n a=(a.w 50.0 || abs(dS) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = mfsdf_$name(vec4( pos + h*nor ,0.0)).w;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t vec3 p=ro + rd*t;\n\t\tfloat h = mfsdf_$name(vec4(p,0.0)).w;\n\t\tfloat isLight=mfsdf_$name(vec4(p,13.0)).x;\n\t\tif (isLight>0.0) h=999999.0;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tfloat dS=0.0;\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\tvec3 objColor=mfsdf_$name(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp(mfsdf_$name(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max(mfsdf_$name(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=mfsdf_$name(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=mfsdf_$name(vec4(p,13.0)).xyz; // 13 - Emission (r,g,b,sdf)\n\tobjColor=max(objColor,objEmission);\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tif (objEmission.x>0.0){\n\t\t\tcolor=objEmission;\n\t\t} else {\n\t\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*((1.0-objMetallic)*objColor)+\n\t\t\tpow(r,pow(256.0,(1.0-objRoughness)))*objSpecular*mix(vec3(1.0),objColor,objMetallic)*(1.0-objRoughness)*16.0;\n\t\t}\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tvec3 objEmissionRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=mfsdf_$name(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=mfsdf_$name(vec4(p,13.0)).xyz;\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tif (objEmissionRef.x>0.0){\n\t\t\t objColorRef=objEmissionRef;\n\t\t\t} else {\n\t\t\t objColorRef=max(l,$AmbLight)*objColorRef;\n\t\t\t}\n\t\t} else {\n\t\t\tobjColorRef=$hdri(Simple360HDR_equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,objSpecular*mix(vec3(1.0),objColor,objMetallic));\n\t} else {\n\t\tcolor=$hdri(Simple360HDR_equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn pow(color,vec3(1.0/$Gamma));\n}", "longdesc": "Ray marching node for n objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\nCode - PauloFalcao, IQ\n", "name": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3.0, "min": 0.0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/SDF3D/Op/Selector2D XZ Example" }, { "display_name": "Rotate with TEX3D modulation", "icon_data": "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", "name": "Rotate_with_TEX3D_modulation", "parameters": { "ax": 0.0, "ay": 0.0, "az": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "vec3 rotate3d_with_modulation(vec3 p, vec3 a) {\n\tvec3 rv;\n\tfloat c;\n\tfloat s;\n\tc = cos(a.x);\n\ts = sin(a.x);\n\trv.x = p.x;\n\trv.y = p.y*c+p.z*s;\n\trv.z = -p.y*s+p.z*c;\n\tc = cos(a.y);\n\ts = sin(a.y);\n\tp.x = rv.x*c+rv.z*s;\n\tp.y = rv.y;\n\tp.z = -rv.x*s+rv.z*c;\n\tc = cos(a.z);\n\ts = sin(a.z);\n\trv.x = p.x*c+p.y*s;\n\trv.y = -p.x*s+p.y*c;\n\trv.z = p.z;\n\treturn rv;\n}\n", "inputs": [ { "default": "0.0", "label": "", "name": "xt", "shortdesc": "TEX3D", "type": "tex3d_gs" }, { "default": "0.0", "label": "", "name": "yt", "shortdesc": "TEX3D", "type": "tex3d_gs" }, { "default": "0.0", "label": "", "name": "zt", "shortdesc": "TEX3D", "type": "tex3d_gs" }, { "default": "0.0", "label": "", "longdesc": "The input object as signed distance function", "name": "in", "shortdesc": "Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Rotates its input 3D object described as a signed distance function.\n\nCode - PauloFalcao", "name": "Rotate with TEX3D modulation", "outputs": [ { "longdesc": "The rotated object", "sdf3d": "$in(rotate3d_with_modulation($uv, -vec3($xt($uv)*$ax, $yt($uv)*$ay, $zt($uv)*$az)*0.01745329251))", "shortdesc": "Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "X", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "ax", "shortdesc": "Rotate.x", "step": 1.0, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "ay", "shortdesc": "Rotate.y", "step": 1.0, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "az", "shortdesc": "Rotate.z", "step": 1.0, "type": "float" } ], "shortdesc": "Rotate" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Rotate with TEX3D modulation", "type": "shader" }, { "display_name": "Twist", "icon_data": "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", "name": "SDF_Twist", "parameters": { "angle": 0.0, "axis": 1.0, "correction": 0.0 }, "shader_model": { "code": "", "global": "vec2 twist_rot(vec2 v, float a) {\n\ta=a*0.01745329251;\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(vec2(c, -s),vec2(s, c));\n\treturn m * v;\n}\n\nvec3 twistX(vec3 v, float a){\n\tv.yz=twist_rot(v.yz,v.x*a);\n\treturn v;\n}\n\nvec3 twistY(vec3 v, float a){\n\tv.xz=twist_rot(v.xz,v.y*a);\n\treturn v;\n}\n\nvec3 twistZ(vec3 v, float a){\n\tv.xy=twist_rot(v.xy,v.z*a);\n\treturn v;\n}\n\n", "inputs": [ { "default": "vec2(0.0)", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Twist a SDF3D on the specified axis by an angle.\n\nCode - PauloFalcao", "name": "SDF Twist", "outputs": [ { "sdf3d": "$in(twist$axis($uv,$angle))/(1.0+$correction)", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 0.0, "label": "Axis", "name": "axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "Angle1.a", "default": 0.0, "label": "Angle", "max": 360.0, "min": -360.0, "name": "angle", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 5.0, "min": 0.0, "name": "correction", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Twist" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Twist", "type": "shader" }, { "display_name": "Boolean Chamfer", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAACfpJREFUaIG1mltzHEcVx3+nZ/auqyVZluREtqUkYBNyITgUOPkE4YPwpfgGPFA8QfHAA0VRBqoA3wikitg4Ntq1JcfSSiuvZg4Pc+ue6ZFWa3NqpZnu6T7nf67d07vy82u3AEXJSXF6iqvaTWu4M3Lp0R/LI+AX1S6XfrL2Aw9D+PP3GqqqWYcIImJEkv9GxChaINNktmrCRAtl6tADgnhlT0GFoIw+uTtWhbQ/R6OoqmqsGuawbIhlHKei0mLOlOgT81ejILHMzfsnwO3rGVRBJDWaqoap4IoOZ5EWA1MLOX3npHK4etUQ5Pb1QFWjWI2ICECoqegcutZByAMlw21f87/XCqGKEmKroejN+xFw+0YQqyayDEXEZ32a9JU/OaVN0r7sqm8aPUVeOjGiN+9FcaxxrFEch6fYr2Rpv0Dnqb6OCmJJOoQ+DCGEC7CSgs/rhf7oQQTy+/cIsxAox3MVasrE++g1q48l9gX8N/sItOBtOIRl6CUpbM269aUkqZ2lQckBnrpQ1ajm6TnxK+zDE/Qb6EMO9Bj+Bc9gKFyAZbTh6hBmXs/B2rjV/VcP9LXtfxcG6I7TVwDdE/bgMgxhCRatuWEy2vWB758f6PSF06a78E90bPXYRs4bj2EEgs4jxlGgQF+zJNkJ8tpwS7Sx9tF9ZVzGLaVrTh0wBQoJk+pZi159F1xdpBBSEXc2faP60vugwqsH1+CS06dGc/vjRa8VJZJ6bw9zevrrH59Lgf/4uzVRIdfCwDvKhmKstYEshHI0KqeG/GlrgoKoTuWEUzjmct+FDWhVhiRJjI1b/Itaucja4+01f6okcZm5d4K+DW/DrG9omEMWx/52tFfWh1oE01nfw1Ck4LYMV4UL/nWIMAfvZe3WHWeMD+ybKVFWUaAL7yBrTjw4UkKowrdMXnHI/5nKSXQDNssDnGtotepC5Tzop9DUniKAqiYRpO/DVjLEtqMrInwTEPJ502xGS4VbkKSabSnX3fBWXziExT6iAuc8KKZcpB9dfN/VWlQUZRU+LNBbWViRYYWQUvWRnGnUKvTzuKFaWkRpwidObFQ4Wu1sN+oUy3K1qd2ClvSdIoJ82G7BDKiIbdk61mGGJM/uM0HUnhi5nRNRBMm+Mi89n8JyHWaftqGzLSvX/UpiONA9uCP0ANYmVmCo2oFQ0unfhys1C1YdhRZMfx6XsPqbEMMBPIPBzp23oDcB+gi+8+zeK3iyfKMBq3C9DPrszUn+YlAKaM8xl6axVuxckzOCWNlXHioPdu6s7dz52fbns+98bmAWOj6Rh3AMI1hf+ziGJlx5du8YPneg5OxroScPgy/m1ipaetEX75y2a46T44P+nY1h/xbcuPLjpTBoIwdLm6Pdh11oQQv+iiPk5rVbC63lRdjorn7VHDVHo8XDwf3uxU0IvIaEuo1WooAnWspHXeVOgBE8Rdf7d7dgZXl1dfWDpWZTkJbQRg6XNg92H7ZhBHcAOIEhfPfSR43xeBZaECImWBj0gnC43zocHHRX5iD0FocaLwRfzF2y07aki4XeTnBN0DyH9/p312F2Y/tC5/JKq5VsZgRpCi1ktLT5cvfhb2EII9ha/ejazNq80IYgE9WNNWrMD2fbsr93fDgIuysdCPzLrtcDs2sFdjtIEtB5T4XfEfT6d7egsf3ZnOktt1t5Ptk6jJc2f7n78N3VDzdnLs1DF0L3kDJARLUxszLsNnm5u3s4WOgut9Nt0RnoCwX86DMxVfQKB7A17He3PptR7QnN9KBAVJFsO98UmsgHixsHr8Y9aFYCOREWxPFwNDLtheNeS/b3Wt2VnmbJUE/JY+tstIreVaM0WSHa/qyn2oVuGGZ9yXcQ6XiBBVg3pqsY66A1YaGZk5vCgjGtw6O55iWzfvXB8wdRtjz5Dmmtl3C1j1Ws+qJWp7PSZSQQwli1YaQXhKqx50QEgPlu+/DosHkyPg4bSYY4gjLmnTiaC8Lg5CTuXF660Cpbr55MxebV014Pl+TU8u/7L45EYo3FwpS/T6nSNkGr0xaY1Tjjo/nHZt4U6agGo1HLSAeCydCThJANVFMV8hQunJKdoaczm7AIT435FuJsTDYSEOKo3Wr0rm0h0g2CINZyDLh1Moyi0JhvD4azViUlV9qea5nBlNEXiIsbRxPSpoEZ+HLv2SPYx56UWrrbbBox46dPBJrGtKIT1/y2NYiQsTH76NXjYS/5NqME34ZtKWG0Yu8McXrndVzikEB1TvXO3rPHyIHkXgI0UG2EYRAEB8MhSMOYFmqc9AUQQWGE7EI/Or44Hi1AoyLNCyH5mKq9C8PbLrC+m7G8QQDz8Je9wRMYpsVHRbURBIEJgjA4OYkQGkHQEGlaVk+K1QnyEtlBo/h4HeYz9JOfzxgferVvbPUz9zs+baDz6B/2BjvIEYLSMEGz0TCBhI1GpCpIINIQCePIZOhj5AjZhd34eCF6taJ0i63lROmbKlCOFq1oQaX2WlmVdLSUBeV3e4M+nATGQGACY4I4jpN8NiKhSAgNVRHGyEvYAY2O15R59wWyjFFOc4ixLe+5ydZoC7hj/ly5NrqI/ubFoC/mqNGIjIjISRQpCGJEAjEhBEYOkefCi2i0GI2W0Y51ApqvPG4Kn+qBevTqrNGWBLXvrE9HWVF+PXj6dRDsmOCFMfuqI9VXImNjXhkZiuzGcV/jbv9vl5Q5Tcql2tDrANc5IcxVrt5Y6pe5qoenAm1YhtuP/73w/B8H8OkPfxrDCHlhzMCYx7v3ZuAydODE5VVh7rl6jxfCs9D7nCmldpnjLFyERXj0p19F0M+2Hm9BmKyyMM6qkW0Jj71cIVLpCz3oi0E1DpigSAQZUODVaQPzla+CrV6K7QpPCEGdA85R3c5PekqrSrkO5RDCh376c5/pqEaaN4/DCnonbLxf+J2uwiSL6NHCu1YKuOS1WtrjJExCoQd9lYVPtzrSc31N42dVZ6MkYRwBbgjhx1qBXuuECV9kK4OcOqRnjHJ6wwr+GqyKw90jRJjY/JXI1lKn3wrlOg4Qls9/aqCXHvlw2OF3lh6qjj3LJdTvg+LLe6vXoGkQpUZwftCUN9N750J2STg4B4H6cH67Dvxh+qg02Wrad7bWzuhUYParRR/WStPVovSWhMUJFLw6DOe3K9M8H6vhe4+0wjysRIgnWqq39f7Nk0hU+Hp++8q3X6XQ57aw2E9OOVonLrOWqQRP2QP2bck0tj0quFLLfT23VaCfGHHF1tX+1CmWB+w/97Zy50GbmNybvCX05cm1Lql74CRzmFVRjwpn4y7LEz2rAGXWOXcgVXkkVpvUA5NxVudnAn7JtXvCKXQStPDAm7BNAuNUH6ivdW6h6S9kkiqkHtOfj5ODqC4Tqrxtu52T8rohYV0ETUSCJ2hqAqn8fs2U6F0X6/8AaNaVGFgs5B0AAAAASUVORK5CYII=", "name": "SDF_Boolean_Chamfer", "parameters": { "Size": 0.5 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "//based on fOpUnionChamfer from https://mercury.sexy/hg_sdf/\n\nfloat fOpUnionChamfer(float a, float b, float r) {\n\treturn min(min(a, b), (a - r + b)*sqrt(0.5));\n}", "inputs": [ { "default": "$uv.x", "label": "SDF3D A", "name": "in1", "shortdesc": "SDF3D A", "type": "sdf3d" }, { "default": "$uv.y", "label": "SDF3D B", "name": "in2", "shortdesc": "SDF3D B", "type": "sdf3d" } ], "instance": "", "longdesc": "Makes SDF3D chamfer with 2 objects using Mercury fOpUnionChamfer from https://mercury.sexy/hg_sdf/\n\nCode - Mercury", "name": "SDF Boolean Chamfer", "outputs": [ { "sdf3d": "fOpUnionChamfer($in1($uv), $in2($uv), $Size)", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 5.0, "label": "Size", "longdesc": "The size of the chamfer", "max": 10.0, "min": 0.0, "name": "Size", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Union Chamfer" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Boolean Chamfer", "type": "shader" }, { "display_name": "Boolean Stairs", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAGNlJREFUeJyNm2uMXMl133+n6t7unhnOk/Mgl/viS+tdSoos+RE5hgLLQCwnQBAESZQPsYF8SKwPQYBYH5YzwCKfNCPFUQLZsKN8CCRHCRD5oQSRbEt+bFZrCZKS2HK0Wi255HJ3xV3udDc5wyE5M9333qqTD1V1+07PkFQBje6+93bdOv/zP/9zquq2/PI/+MeqqlTOA5AZg6JYY1BVjAilc6gqmTVMtHKKypFZg/dKWTkGZRnPW4qyQkQQAYDKeYwIlXMYY8isoawcrTxjopWRWUunleG94ryiquwXZfzuERGsEfIso5VZvGrdL0Ary0AgtxZrBOeV0jm8V4oqjNsYg/OezFpSa2UZxgiZL/axRshUKauKEsisxalijVA4H2+qGHK0rMhQpBIsijUw2RGcB68VkxYyazAiOOcBg4hQeRCEzAr7BewP99gtAoCT7RZ5ZjEiKGBUaVlDnlsm2jnWBDRVPc57jBGGVJSVxxVDjAj3Klf3UXlfA2+Noao8RpXc5OGYNRg8eMgyHeJKj/dKJoQOiiHtPEMUBMUYcF4Z7g8ogMI51GswzHmsCR6faOVk1rJbVbUnrBEEwUeWiYDX4GlByK1hb3ef0nmGZUVubegns7Ss5e5dZaLVQgQq79Ho2dAHNdOMMZQQxi1C8nVuMjIDnTzHGsWpQxBQKJ0n8+U+znmccziv5JkBYFBRD3DgHGgIC+89ebxzK7OoVUwcnPEeIxbjK3JjmLSC1+ANRTHiUdWa3qpKUYTQyozQaYG1inMDBIv3JoynclhrsAitlsVlQlF5EEGA0jmcr/Be8VSB0cagwHB/AAjVUGI4ewRAJDi9LRW5VcQGunhVOnmG12CYKlgTUTWGyjmKyrFflAyHwzoWrRGwBl8JE62AthEQEUoTwByUCgqFeryvACUXEPWIBmYMihC3ey7EfxxrzaIQ02EsJrKrlYVQaRlDWZWUqpDZAHAVxpvH+FdCiObW0s4sWcsarDGRxlKLjvNK5RwKFJXD+RB/zoUBGBFya2llNv7eIALOeYrS4bUii32DImKYarfq3xojVG7EhGFZUZQV7TxjWFZMT2aRpo5hWUVBDIAKgvNBXzKb+vI4r2TGICaAZY0htyCAi8yrnKNyQmkMUghZ6Rx394dUzkVPBmSD6CTMpM4CilI6jypUzpFZizW1uGKMwVpqQbPGgIbfVN5jNBzPYpbxXmvDNN5zZrITKB+vEQkxW3lPUVY160JYjZhbVBUDr+TWkmWGqnLsxYySsgcoOMGIx6sns8ZwbKKNc0FdO3kWAQhGV97XMesan0Fo51kAJXaeZxbnfBA0F2JSCazwkboh3g37URQ1ho8Axgh5ZsmzQNeg2DbeA1SVuakJvHqEwFaNYaHAflEyiAYLggp1OA+Kqh6/CBgbmJSF+DDkWcijXhVXaR1vCXVjTBA9Dfm0ch7vPWWkmggMiyp4oqwoKleDF2jnQ3qM1xoZhZyJgW6NYHKJ2UIQFMVTVA4jYK1BK2rAk0EQzrUyG0UxOCsTgxKc0slzAkwhpKtYK2RTnRZGEuVDalFCft4rCoaRcs4H9Qyoj1KZj8WSSEiVydt1IWVkpPqAOB9qjEj5xAiNHnfOY6NDTJ5jYhg6D0YUNYr3Md6twViJQHi8j/1ZW4+trBwmCmIkLu0s6IsayO7uDam8o6o8lXMMo+AlY5MmhMwntS5ILJhE4gBUyaMxIUTAmnDeR/1oZbYenGqo/AA++NaAv3hyKsZ00JnM2FgASS2mg7KkKEqE4ACppB6nSBBX510cb9SCWHkmzSDa0Wlloe/9ogixGuluRDA2VFREVa9cMNil8yaQs/KeVmYPaQEiWBFaeRYH5fnwD02Q46CptR4B0OrwC++MhBSFP1gZMijKoAvWhpQnQjvLULR2CCQhDZ2GEA7jIoLTyrPI2lCTJEEUgWxnd1CrfgoFAJdUXQQf6auqmJhP8whSM1db0xQvw8feyphTBTF8vxiw12lDzOnhR9EvOnqX4ZCyHPChPcttMXyvrPBPT+BdyPdVpDuEjJPEM41dFMBALIldzD4Jex9DJ81lssyGWj0zBmuFLBqWysyU7kLMhfOh4lIMUnvIWsFICJcgRsLlrUu1kycRnpk4zzHv8HguFSW3h/vsKexmGZuVZ6fV4q2tKzVVAfaNcNY+EygeCyBVU5fFKlCUoxrBmMA+9RqZoiNwABsrXdUgnNnK3HTweEoPkfqjcpW6PE56EIob6mJoVDdorOldEK7gCwD2UL6/9SrElHVP4SvDQQ0QxIOp1WESxExiGhzVAKApPWsIUWsMRoVKfQxTUjFTM1gQrJXIBsju7g+jgCRUgoGp9HTxhkkAcwyV+jrei7KqJyap9HTqsWIYeE8ncJ56FLXJUvfRBEGbGEio4AZFGVWdA6WwjdNryyg1WmMig2MqjyESkip1PxJnu1nqJM9MfVE9w/JJWcN0OJWtgTEhV//iv/y3rK2uNYywrK+vs7q6xvu8siBgNDBBomcF2B0WtR6OlCd6Kp5JBvzdX/0Mq6urrK+vhyt0dO3X/+NqPR7n/YGKNjE1tSyW5SaCJCJkNip6WTm+/k4bUDbWNwBYXVurKbuxvo4Cq6ur9TGAr19cHQ1dYX1jnYvx2Gv7A46fPEkmwlavhxHh5PJyCItul6nZeQC6vR5Ly8sNAKKngEpD3teadSOoV1fXIigBxNW1NYQwhiS1a2tr0Di2trbK33/KRsZC9uebbcbb6upqHT9JkJ69eLE2UqG+8erq6sj49XW8G6n0z3zuf9C9+Ct0RNhR5dTSEnuqZMDs0hJuOESBheXlYGg0r9vr4YHF5WX+6We+EIscRdUfGCMKqxcvsr6xUYOWzm1sbKCxlkxgpfalS2X9WZ54+m/oyKBgyOraau3N5Jb6WGRCSluBmp8IN9dRmr9x8VnuesVtXeU20BGhI8Jjy8ts9/sMVfnTCEAy1quy2e/jIxgeaB8/T0uEzampev4/3hJDV9fWGkdgY30jsCKlXhE2ok1rERD5L//9hejkEVIbG+uNUNOIngaQ4vG11dW6IAnHldXVVT7uPVve0/WeG86xvPM6LREm4itfXuZOv08FfLMoamOXlpdx0fNNAE6sPM0j1rBsLMeN4finPlkbnoxY39igMWBW11brME7CI+Of4/dMVRv0CJ1cvBgEZy2FwhjtmumlPrcWrr1jd3iiZVkYTvGYEcgybkYwjonQ3tykI0K2tMTMjRu4aPBet0tHhOPGsGgMcyLMGsNknvGld36AV+WeKs/60X0/sf6JIMCpsjswnjU2osOQaGMEYKMO3zXkC196QZOhyZMHPT8SwCbtm8dQ6D/7LFves3XrCm1rmYyUf3R5Gd/rcUeVbe/pe8+m9xwT4ecffy9ffvP/sWgMsyLMGMOUCC/Ozh7QgSSGe90ue8fP88sTE/y7ehFiZPbGxgZra6sHPL6+vhHYuTbSgMDmwBB59KkPKqoHYnucEesxJA6K4yju/pV39J2n7x3bt67yuLVMidAGJlZWmBShJcIxEfa6XUpCft9VJRfh94uCxaWlWgQdsNnr4VRZJIRCqco+8OMrT7NsLUvGsPSpT7K2usb6xkaD4vdpjfBIxgPIqXf9dW3GdxK7cWEcxX2TEaHnl//5P2Ru7gxb3lNsv8ZeLEImRGom3BVhJn4+vrzM690u25ENbzuHAxaXlrjV7TIrgosgJS140lpmjWH2+HkWjOGLmz/g5qn3RCukZupBTx9uMvZF/vPvPa8jz6/WSK1vHBa89D0B0H32WfreI1tXmcoy2oDMnUG2rrITKb+rSicCMS1Ca2WFbq/H9OIiO6rc8p7e5mYwmJEAnrKW6RgW05E9P1w8z42qz+vdLvPA1uxpfmlyks8YE4XwYFuL3j5SABMAv/17z2tT6SHGTcPgkOtHuR+U/rMX6XtPzzvcras8aS1TKytMRS9rr8ddVW57z058b8WwABgCuxGkLe9ZMYbJKHxTSQBF+ObsbM2CxIrdXo9Sle3Z0/y9Tocla/j3cSY6zoIDxh8Bgnz+d/9M16KB6UwCoAZllGHiDVb5Vee55T03vWfv1pXaw5PxtSdCW4RHRNjznjuq7KtSAENVKk0Fb5hUTcXfT4jwO430mJhxvPF9T5XHreX4wjkWjWHBGJY++cmmtfXHcY1I5qcKUU6e+ylNhh0SkYbh6cDms8/SdZ5y+zWeOH6eO94z2LrKnio73tMeA2JfhDMrK+Qi9FOeB37i8b/Gd/fe5l4E53YEs2h42sfrK0Z68GgMjWljmJs/y7QRvrD5Cm7mSX5pcpJfj+EQssFBQDY2NkCkzhQA8si5nxrL6AdbiixFuel8TfvOraucyzKOiXB77gx2+zW2x+ieYndyZYWOhO2qXq/HwvIyhSo/7HbZVeWuKq3FRS53u8yr1l538fPj1jITjZ6JwH5nbo5Br8d1VWZVudkIh8VPfqoe/9rqau3YjfWNmho1Az7/u3920M+r4yoaqNp3Ho/S956+8+zcfJXzWRaEKlIXqL25ExmRgGiLkMUe3yGktdmlJfZ7vQBC/E0RPf2EtcwYw7HY/zERvjM/z41ul8XIiv14/QB479JTLBrDkjEYYMkY2Fivq0VgFAojYiC/ff6nG4UwB7BIFdamd3Sd58zO69yaPxPi/uYVClVmo1eScLUJFL8bAbgbK7iwjxOaj95NejBQZfHEMwy6rzAdRTAZ/QedKYo72yxGVqRwcBGAEvixLGMh6sEfbf6A3bnT/JOJSU7E6fDNPOPTZdW0u/6QnHLA+JTySpQ7Xtnxyh1VrjvHue1rZPNn2V58F3rrCtuxoJkRYU81eMwYlk6cYKHXY6jKMArgkFDRuQhCwtoA+a0r5HlOW4TnZ0/TYgvf6zFVFHSiseMAPGktc8YwvXCOeWN4sfsKHRFuK+x4Tw7MiLBYlnUo0wiDBgOi2Q3vDyKVgUB773E3X+XpLGPeGPYWziG3rhxIc5kIs5ENQ2M4vbLC7X6fk0tLiAi9Xo/jS0tUQNXrMVxa4nq3y/TSEvuqvN7tMrG0xNVulynVWviaRj/W0IOUOb5Tltz1noqQIc4vvosTMRwA5oyhLQfyQ2gbG00ADhq/E2d0J4xhKyr03f7lMCOLk5WpWLGluL/tPfPHTnHz3tt1Hs+BfHkZK6N1Q9/vU0b6DpeWGKiyp8ob0fB7kTGJLY9YO9KChhD+r5guK+CeKqUqJ61lceEcx42wYAz/bX+fj3YmQng2bE9gZOOpr1IYoNwlDGTYv8z00lOBvktPsdO/HIQnDmTGGJ7OMt50jikR7uyFBf673rNDWAfINzexErbA0vzfRQCKzc2gA8BENH5XlX929gN89Y2/qvVlRoQpY/hmUdRsqGJIVdFpp6xlbuEsx0Q4JoY/3nyF3eknQpZRxSJkB+xVsvElBkf0jEIBXHeO9966ghw/T0ugspbb3vOOc+zHTc6BKtMinLCWGVXmRNiNXtzVoB/Awc0LgqglJhSqTMeyd0KEv/zh9zgTPT8hwvPDYR0O1RgAH3j0vdza/AFzMTRmxfBC7xJ7qiwYwyBmCyfUHk+0PyCC2ngJQZxuzp1m886brNy6QmvxXXhj6EAd93siDIE9CZTbE2HCWpYbKj+MAliOCWC6jwAWyFPIxPf/04jtowxP8wV6l3gifu4Ywx9uvkIBvOM9fzPLRrY1VqyOzALJ6Aypl7BslnPNOTxwvH+ZORE61tLxngmRMKNzjhljKFWZkriSvLLCTr/PiZUVbvZ6PBEHcWr5PNd7V+ot7dlHLnD1rZcYRhrfbjBnL06BE80TAKdjjVCHhgjfKkucKnubrzAgZI0PLL2LCYFONPTACnSkgLx84YJe97P04vp/RfDYXa9sqee2V/a7rzAETiUBNGEtPk12kghmUZWn4vw/B7JYATa3BpoaUI7VA2nw+xGA3SiGJ+MaQ60JUWRfjJpQxb724m/PZhnz82eZN4Z5I0xLEMFx0cv+/MYNps0m73nkAi8NCzLCgwXHjICCRSmsZcd7rjjHXhzkggjzxtAWYcJ7JkW4p8pOKm0hgBABMGMAJPWuxkBIQOzH+5yIYnssVoVJI54fDoOGRGYUBB35F6ffx1evfz/ogQ16cGysEq3pDshn5+frNPjhR9/Dt4dFZELocFcV17vETiPfW+CEtSwYw3ykfNNjg4YnCg3PAoxvfiQhbCp5CqFcRiHYgjCfaND8KMNPRYYkBs4aw+T82ZCKj/B8zYDml5eKLj/bWuEbRRFiJqauveUfY6l3iTx6dluVa1XFvrUUMSQmRZgXYT8OKHmyKX4HRFBGZYmJLxu9lEtYN8jj978oS3Zjn7Xh0fjHxmqElDUmFs6SE4w/1BqVj/z+U08dKoTely3zzTJsHniUUoNA3VPF9y7VC5xvO8fJuD53LCLfGaP9qcWzXLv5Wu25OgOoNhRZahBuOFcLYmLSXrz3oGF4Uv3paHiagrcXztUef9ASYWbC06VHAgBwIV/hpeGAPZE4LwgxuqsK/cvsRPFLCx3zDWFqei8VQAn4+9E/GdacOyRB3FVl13sGwJlo+LgmtGqPP9hwAEH5n91LbHl/fwD6vR4feuQRbvkZrlWjDFFqqLdt/zJ34uBS9bYTl7snIhOS8Iw2RsMWdHOJqxn/KZ7Hs8G+Kqetrev/ZHgn3svMn40he0S932htUV7svcqlqhqB8dn5eU0bk/1e79CPnj5xgnnm+W58zsajVAoFStZ/lQGw632dHZL4nXry/Vy69n8PMCHl4cSEZknbBKBQZdGYWgwnohhONcKsI4KZP3M01ceAaLmSN9od/uT69w6z4dT5n9ZfN7ePNL7Zfu7EM3y7Gm0qOg2MqBTat67UA98nztMbBqVyt7nqC2OVYNSNVAnWYtgIqZRaZf5MLGweTPa2K+jmHb5dHbSt17BVHjkf1gR/w+zcF4TEkB/PV3hxMKApo01PTm+9VhtbNqjdjPVE/yYAdRZgVDhZRlkhPfkt82c4uON/4MmL+nvuSnZMxot6677g9Ho9lpeXw5pgOvgbdgRCMnq8vb99ghd3d9H4MMX4sunM1mtkIgx0tN3d3OBozgPSAoQ0wiOZJATG1CEzd/q+xqSWAZUYvtJ9hS3vWb6PDQcZcO4ntWnGv7519b7Gp3YhX+HNYsANN9qvjxbV/cxtXzviyY+DL8beU3r0hKwD4OdOj0F8dMsFLssO37hx49C5BETvCIZnaaenOZj+r/yjB4Lwwtsv8Uyec2H+NC+X1ZEDvD1/BoD57WvAQc8eBUJzWzw9oud/BK+3veO1Vofn3zoscD9Kk8//zp/owQXR8G34sY8eAmFcI05Yy7nj5/jfZTnq4Ag0Zm+/fqgWaL6aM71mawIw3m1eDulNHOM7xSZwtHeBI8MgXfvd2SfTo7ga43F0m9Znv1gb3O/1jhTITef4Ru8yP9tujybb92kp/oWQziAoeyqbx40fb0kfWmXBjvN82d6rjU+GNo0d/95sy8vLFD/zdwDIxh90SEvha2trMH+G3+TeQ4YGz2++wt869R5e2H34tZ6wJ2iAbe/ve11GWJFKzZYF+3mLL2+/Tra4+ND73K+9de4n688XLlxAPvfFP44kaBgONN35m/nuA+uEFCrvb5/kr+7dYfsIJizvvMGwAbYBbuvhCwVwDeob9agIV8wdvnnjxn29CofDYPza62d/YnSftFF64swHxkZx+Kvfeo3/cOLEIRCOEsoLrRV6g32uVkeTevb268EwDgMwLnrWV1zz93jh5juMt6Zx94v/1IYf/Nv3PSef++LXFI3PBI5vhW4FBU+Pt3/25En6jWf67teWt7c5Nn+a7xbFkednb79xAAA/f/rArbNyyI32JH904/sPvM+P0v5y5vH684UL7z50PgAAo6dDGBmemqry3HPPMRgMmP70px8KAIRd3GPVNN8pRyA04T2x8yabM08c+I0d7tPL2nylf/mh/T+MAU3Dx9uFC+/mscce4yMf+chBAC5+7KOHLk4PRQyHw/A3uar6kUDo93rkInxo5Wle3N974LVZMeBu3uFP+5cPCNxRhj2surunyqt+9Jc7nXvy0LWtvMW/+bVfA0D+02/91gHe14+W1k+DhOa9r0Hw3t8XhKPE8hdOvYdv3bvD/thxW5WUNuNbt17jzsLCAw17kPil9vrMDJcvB/YkAAB09kkg/L+g3W4jcb1zfWN9bG4R27jx6cetVotWq4Uxhrsf//gBY+9XKwB87e2X+ODMHKfioIz3iHdcdbf5mm7f1/jUHmb8tW6X12dmMMZw4cIF3v3ug7EuO2+Q775Fp9Op/4KXnoKtGbA29nTVUSAAOOcYDocURYH3njNf+MJDp9Kp/dyj76V/9zYvZm2++tb3HmrYw9IawLXp6fhPNKnfU3v55ZdD8dRuY+M/XfzsE6OnSAFZmZu7b/12PxCqquK5556ra4eUHX6UJouL/Nfr1x9o1IPSWrr+nir92dnacGMOk/ns2bN8+MMfPjKs/WwQ4P8PMA84WMc04B0AAAAASUVORK5CYII=", "name": "SDF_Boolean_Stairs", "parameters": { "NStairs": 6.0, "Size": 1.0 }, "shader_model": { "code": "", "global": "//based on fOpUnionStairs from https://mercury.sexy/hg_sdf/\n\nfloat fOpUnionStairs(float a, float b, float r, float n) {\n\tfloat s = r/n;\n\tfloat u = b-r;\n\treturn min(min(a,b), 0.5 * (u + a + abs ((mod (u - a + s, 2.0 * s)) - s)));\n}", "inputs": [ { "default": "$uv.x", "label": "SDF3D A", "name": "in1", "shortdesc": "SDF3D A", "type": "sdf3d" }, { "default": "$uv.y", "label": "SDF3D B", "name": "in2", "shortdesc": "SDF3D B", "type": "sdf3d" } ], "instance": "", "longdesc": "Makes SDF3D stairs with 2 objects using Mercury fOpUnionStairs from https://mercury.sexy/hg_sdf/\n\nCode - Mercury", "name": "SDF Boolean Stairs", "outputs": [ { "sdf3d": "fOpUnionStairs($in1($uv), $in2($uv), $Size, $NStairs)", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 5.0, "label": "Size", "longdesc": "The size of the stairs", "max": 10.0, "min": 0.0, "name": "Size", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "NStairs", "longdesc": "The number of the stairs", "max": 10.0, "min": 0.0, "name": "NStairs", "step": 1.0, "type": "float" } ], "shortdesc": "SDF Union Stairs" }, "shortdesc": "", "tree_item": "PF/SDF3D/Op/Boolean Stairs", "type": "shader" }, { "display_name": "Render", "generic_size": 1.0, "icon_data": "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", "name": "SDF_Render", "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Pow": 64.0, "Reflection": 0.2, "Shadow": 1.0, "Specular": 0.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "length($uv.xyz)-0.4", "function": true, "label": "SDF3D #", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "TEX3D #", "name": "tex#", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "\nvec2 input_$name(vec3 p) {\n vec2 sdf=vec2(999999.0,0.0);\n\tfloat m;\n#for\n m=$sdf#(p);\n if (m(#.0-0.5)&&id<(#.0+0.5)) {\n\t t=$tex#(vec4(p,id));\n\t}\n#end\n\n return t;\n}\n\n\n//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=input_$name(p+e.xyy).x;\n float v2=input_$name(p+e.yyx).x;\n float v3=input_$name(p+e.yxy).x;\n float v4=input_$name(p+e.xxx).x;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid march_$name(inout float d,inout vec3 p,inout vec2 dS, vec3 ro, vec3 rd){\n for (int i=0; i < 500; i++) {\n \tp = ro + rd*d;\n dS = input_$name(p);\n d += dS.x;\n if (d > 50.0 || abs(dS.x) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = input_$name( pos + h*nor ).x;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = input_$name( ro + rd*t ).x;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tvec2 dS=vec2(0);\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\t\n\tvec3 objColor=tex_$name(p,dS.y);\n\t\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+pow(r,$Pow)*$Specular;\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=tex_$name(p,dS.y);\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tobjColorRef=max(l,$AmbLight)*objColorRef;\n\t\t} else {\n\t\t\tobjColorRef=$hdri(equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,$Reflection);\n\t} else {\n\t\tcolor=$hdri(equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn color;\n}", "longdesc": "Type - SDF3D Render\nCode - PauloFalcao, IQ\n\nRay marching node for 2 objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\n", "name": "SDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1.0, "min": 0.0, "name": "Reflection", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.4, "label": "Specular", "longdesc": "Objects shading specular component strength, it's the strength of the highlight.", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "Pow", "longdesc": "Shininess of the specular component, it's the size of the specular component, it tries to simulate more shininess surfaces or more rough surfaces.", "max": 1024.0, "min": 0.0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/SDF3D/Render/Render", "type": "shader" }, { "connections": [ { "from": "SDF_Checkerboard", "from_node": "node_SDF_Checkerboard", "from_port": 0.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 0.0 }, { "from": "SDF_Checkerboard", "from_node": "node_SDF_Checkerboard", "from_port": 1.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 1.0 }, { "from": "sdf3d_sphere_2", "from_node": "node_sdf3d_sphere_2", "from_port": 0.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 2.0 }, { "from": "tex3d_uniform", "from_node": "node_tex3d_uniform", "from_port": 0.0, "keep_alive": false, "to": "pxflib", "to_node": "node_pxflib", "to_port": 3.0 } ], "display_name": "Render Template", "icon_data": "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", "nodes": [ { "name": "SDF_Checkerboard", "node_position": { "x": -206.768615722656, "y": -155.210876464844 }, "parameters": { "AA": 0.0, "Position": -1.0, "Size": 10.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "float Simple_AAcheckedboard2D(vec2 p) {\n p*=2.0;\n\tvec2 w=max(abs(dFdx(p)),abs(dFdy(p)))+1e-5;\n\tif (max(w.x,w.y)>1.0) {\n\t\treturn mod(floor(p.x)+floor(p.y),2.0);\n\t}\n\tvec2 i=((1.-abs(2.*fract((p+.5*w)/2.)-1.))-(1.-abs(2.*fract((p-.5*w)/2.)-1.)))/w;\n\treturn .5-.5*i.x*i.y;\n}", "inputs": [], "instance": "", "longdesc": "", "name": "SDF Checkerboard", "outputs": [ { "sdf3d": "max($uv.y-$Position,length(vec3($uv.x,$uv.y+$Position,$uv.z))-$Size)", "type": "sdf3d" }, { "tex3d": "vec3($AA)*0.9+0.1", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Position", "max": 2.0, "min": -5.0, "name": "Position", "step": 0.1, "type": "float" }, { "control": "None", "default": 10.0, "label": "Size", "max": 30.0, "min": 1.0, "name": "Size", "step": 1.0, "type": "float" }, { "default": 1.0, "label": "AA", "name": "AA", "shortdesc": "Anti-Aliasing", "type": "enum", "values": [ { "name": "No", "value": "mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0)" }, { "name": "Yes", "value": "Simple_AAcheckedboard2D($uv.xz)" } ] } ] }, "type": "shader" }, { "name": "sdf3d_sphere_2", "node_position": { "x": -146.768615722656, "y": -35.2108764648438 }, "parameters": { "r": 0.4 }, "seed_int": 0.0, "type": "sdf3d_sphere" }, { "name": "tex3d_uniform", "node_position": { "x": -164.768615722656, "y": 39.7891235351562 }, "parameters": { "color": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" } }, "seed_int": 0.0, "type": "tex3d_uniform" }, { "generic_size": 2.0, "name": "pxflib", "node_position": { "x": 115.805847167969, "y": -153.867370605469 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Pow": 64.0, "Reflection": 0.2, "Shadow": 1.0, "Specular": 0.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "length($uv.xyz)-0.4", "function": true, "label": "SDF3D #", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "TEX3D #", "name": "tex#", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "\nvec2 input_$name(vec3 p) {\n vec2 sdf=vec2(999999.0,0.0);\n\tfloat m;\n#for\n m=$sdf#(p);\n if (m(#.0-0.5)&&id<(#.0+0.5)) {\n\t t=$tex#(vec4(p,id));\n\t}\n#end\n\n return t;\n}\n\n\n//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=input_$name(p+e.xyy).x;\n float v2=input_$name(p+e.yyx).x;\n float v3=input_$name(p+e.yxy).x;\n float v4=input_$name(p+e.xxx).x;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid march_$name(inout float d,inout vec3 p,inout vec2 dS, vec3 ro, vec3 rd){\n for (int i=0; i < 500; i++) {\n \tp = ro + rd*d;\n dS = input_$name(p);\n d += dS.x;\n if (d > 50.0 || abs(dS.x) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = input_$name( pos + h*nor ).x;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = input_$name( ro + rd*t ).x;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tvec2 dS=vec2(0);\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\t\n\tvec3 objColor=tex_$name(p,dS.y);\n\t\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+pow(r,$Pow)*$Specular;\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=tex_$name(p,dS.y);\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tobjColorRef=max(l,$AmbLight)*objColorRef;\n\t\t} else {\n\t\t\tobjColorRef=$hdri(equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,$Reflection);\n\t} else {\n\t\tcolor=$hdri(equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn color;\n}", "longdesc": "Type - SDF3D Render\nCode - PauloFalcao, IQ\n\nRay marching node for 2 objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\n", "name": "SDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1.0, "min": 0.0, "name": "Reflection", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.4, "label": "Specular", "longdesc": "Objects shading specular component strength, it's the strength of the highlight.", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "Pow", "longdesc": "Shininess of the specular component, it's the size of the specular component, it tries to simulate more shininess surfaces or more rough surfaces.", "max": 1024.0, "min": 0.0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/SDF3D/Render/Render Template" }, { "display_name": "Render MatCap", "icon_data": "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", "name": "SDF_Render_MatCap", "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "MatCapMode": 0.0, "MatCapRef": 1.0, "Pow": 64.0, "Shadow": 1.0, "SkyColor": { "interpolation": 3.0, "points": [ { "a": 1.0, "b": 0.979167, "g": 0.864656, "pos": 0.0, "r": 0.793357 }, { "a": 1.0, "b": 1.0, "g": 0.6984, "pos": 0.118182, "r": 0.510612 }, { "a": 1.0, "b": 0.557292, "g": 0.329521, "pos": 0.411598, "r": 0.287342 }, { "a": 1.0, "b": 0.416667, "g": 0.209503, "pos": 0.945455, "r": 0.17114 } ], "type": "Gradient" }, "Specular": 1.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "length($uv)-0.4", "function": true, "label": "SDF3D A", "name": "sdf_a", "shortdesc": "SDF3D A", "type": "sdf3d" }, { "default": "vec3(1.0,0.1,0.1)", "function": true, "label": "TEX3D A", "name": "tex3d_a", "shortdesc": "TEX3D A", "type": "tex3d" }, { "default": "vec3(0.0,0.0,1.0)", "function": true, "label": "MatCap A", "longdesc": "MapCap image for object A\nMatCap (Material Capture, also known as LitSphere) are complete materials, including lighting and reflections\nDownload MapCaps from https://github.com/nidorx/matcaps", "name": "matcap_a", "shortdesc": "Image MapCap", "type": "rgb" }, { "default": "$uv.y+1.0", "function": true, "label": "SDF3D B", "name": "sdf_b", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "(vec3(mod(floor($uv.x)+floor($uv.z),2.0))*0.25+0.5)", "function": true, "label": "TEX3D B", "name": "tex3d_b", "shortdesc": "TEX3D B", "type": "tex3d" } ], "instance": "vec2 input_$name(vec3 p) {\n float sdfa=$sdf_a(p);\n\tfloat sdfb=$sdf_b(p);\n\tif (sdfa 50.0 || abs(dS.x) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.15*float(i)/4.0;\n float d = input_$name( pos + h*nor ).x;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = input_$name( ro + rd*t ).x;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tvec2 dS=vec2(0);\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\tvec3 objColor=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.0));\n\tfloat fog=max(1.0-(d/50.0),0.0);\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tfloat r=clamp(dot(reflect(rd,-n),light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+pow(r,$Pow)*$Specular;\n\t\tif (dS.y<0.5){\n\t \tvec3 mc=$matcap_a((n*mat3(cX,cY,ray)).xy*0.5+0.5);\n\t\t\tfloat mcf=$MatCapRef;\n\t\t\t$MatCapMode\n\t\t}\n\t} else {\n\t color=$SkyColor(rd.y).xyz;\n\t}\n return color*(fog)+$SkyColor(rd.y).xyz*(1.0-fog);\n}\n\n\n\n", "longdesc": "Ray marching node for 2 objects using a matcap image for reflections\n\nCode - PauloFalcao, IQ", "name": "SDF Render MatCap", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.4, "label": "Specular", "longdesc": "Objects shading specular component strength, it's the strength of the highlight.", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "Pow", "longdesc": "Shininess of the specular component, it's the size of the specular component, it tries to simulate more shininess surfaces or more rough surfaces.", "max": 1024.0, "min": 0.0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "MatCapRef", "longdesc": "MatCap image reflection strength", "max": 1.0, "min": 0.0, "name": "MatCapRef", "shortdesc": "MatCapRef", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "MatCapMode", "longdesc": "Matcap Mode", "name": "MatCapMode", "type": "enum", "values": [ { "name": "None", "value": "" }, { "name": "Direct", "value": "color=mc;" }, { "name": "Mix", "value": "color=mix(color,mc,mcf);" }, { "name": "Add", "value": "color+=mc*mcf;" } ] }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "default": { "interpolation": 3.0, "points": [ { "a": 1.0, "b": 1.0, "g": 0.6984, "pos": 0.009091, "r": 0.510612 }, { "a": 1.0, "b": 0.317708, "g": 0.187858, "pos": 1.0, "r": 0.163812 } ], "type": "Gradient" }, "label": "SkyColor", "longdesc": "A gradient that tries to simulate a sky", "name": "SkyColor", "type": "gradient" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" } ], "shortdesc": "Ray Marching MatCap" }, "shortdesc": "", "tree_item": "PF/SDF3D/Render/Render MatCap", "type": "shader" }, { "display_name": "Axis", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQhJREFUeJztkKFNgwEUBi80BEFq8CV4LKKKAVgAVHcAA2ELdsAjMJWVHQLxLwH2w5K3wAm+S575nrkcy7IELgL8uc/AT+B+7M+B78Db2G8CX4H92Al8BI6B67G/BA6Bh7HfBt4Dj2NfB14DT4Gz8bsL7AKXY78KbAObsZ8GzgOrnPDPaQBbwKYBbAGbBrAFbBrAFrBpAFvApgFsAZsGsAVsGsAWsGkAW8CmAWwBmwawBWwawBawaQBbwKYBbAGbBrAFbBrAFrBpAFvApgFsAZsGsAVsGsAWsGkAW8CmAWwBmwawBWwawBawaQBbwKYBbAGbBrAFbBrAFrBpAFvApgFsAZsGsAVsfgH3UU+JzCgMYwAAAABJRU5ErkJggg==", "name": "SDF2D_Axis", "parameters": { "mode": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "SDF2D Distance to Axis\nUsed in more complex operations like Custom Union\n\nCode - PauloFalcao", "name": "SDF2D Axis", "outputs": [ { "sdf2d": "$mode", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 0.0, "label": "Mode", "longdesc": "SDF2D made using the distance to axis X / Y at 0", "name": "mode", "type": "enum", "values": [ { "name": "X", "value": "$uv.x" }, { "name": "Y", "value": "$uv.y" } ] } ], "shortdesc": "SDF2D Distance to Axis" }, "shortdesc": "", "tree_item": "PF/SDF2D/Gen/Axis", "type": "shader" }, { "display_name": "Axis Symmetry", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAhhJREFUeJztmrFKw0AYx38txaE49hW6OLSDL6CzgoM+gBQEFzdxc+omPoAghD6ADgV1tS/g0sGlbyBOIg5Scg5JIW01McnlPu19fzhoc7n8jj+5S5vvXwMMdIA+sA00gXfgE7taA9aBD+AROAfGcZ8cvwYdA9fAJvAMDIER8Gp5Ai1gC9gDNoAn4CjuE+UPDUwNPBhoG6Di1o5ZUxOxpfm8GRg7gicnMTYRW5Zfj9bcEJh8c9tUpUnMbCLNb0QbzmjhhB2CYN8qste7Be4TR0bASeKzGP/FQHfuFgmCwIRhaLUFQbBwG3ZNxJblN9JcO6vXrbh/EYaFxrngpxoAcFkSflpyfNV8Oxb/Y3lvQOYSSOrwl+cNck9Djp/LAICrjP7jvBcU5uc2AODuh+O7RS4mzC9kAMDBwvebohcS5nu/CaoB0hOQVuE9wPWar4pfyABXu70Lfm4Dqn7Ou+bnMmBgGZ5XVfC93wS9NyBzCZT9P19WVfNTDSj6JseWXPAbUcWkNXcweoFoV8vXbBGxZ5/F+FMDfYfv5GetHxcnpPmeF0aQL03J8r0vjtYA43N53PsfQt4vAaQ3IXm++GNI8wGifM0HSNfnpfmaD8garPmAFZf3Bmg+IO8kNB+A5gMAzQesjNQA6QlIS/MBRQZpPkBQmg+wLO83Qe8N0HxAWqfmAyxK8wFLTfMB5i8URpAvTWk+AM0HCPK/ANfkGNbiPqw8AAAAAElFTkSuQmCC", "name": "SDF2D_Axis_Symmetry", "parameters": { "mode": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "$uv.x", "label": "SDF2D", "name": "in", "shortdesc": "SDF2D", "type": "sdf2d" } ], "instance": "", "longdesc": "Transforms a SDF2D making a mirror symmetry using the chosen axis\n\nCode - PauloFalcao", "name": "SDF2D Axis Symmetry", "outputs": [ { "sdf2d": "$in($mode)", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 2.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XY", "value": "abs($uv.xy-vec2(0.5))+vec2(0.5)" }, { "name": "X", "value": "vec2(abs($uv.x-0.5)+0.5,$uv.y)" }, { "name": "Y", "value": "vec2($uv.x,abs($uv.y-0.5)+0.5)" } ] } ], "shortdesc": "SDF2D Axis Symmetry" }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Axis Symmetry", "type": "shader" }, { "display_name": "Blur", "icon_data": "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", "name": "SDF2D_Blur", "parameters": { "blur": 0.0, "iterations": 4.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "", "name": "in", "shortdesc": "SDF2D Input", "type": "sdf2d" } ], "instance": "float blursdf_$name(in vec2 p,in float r){\n\tfloat a=0.0;\n\t//fibonacci angle\n\tfor(int i=0;i<$iterations;i++){\n\t\tfloat g=float(i)*2.39996322973;\n\t\tfloat v=r*sqrt(float(i))*0.01;\n\t\ta+=$in(p+vec2(v*cos(g),v*sin(g))*(1.0/sqrt($iterations.0)));\n\t}\n\n\treturn a/$iterations.0;\n}", "longdesc": "Blurs a SDF2D sampling fibonacci points on a disc\n\nCode - PauloFalcao", "name": "SDF2D Blur", "outputs": [ { "sdf2d": "blursdf_$name($uv,$blur)", "shortdesc": "SDF2D Output", "type": "sdf2d" } ], "parameters": [ { "default": 4.0, "label": "Iterations", "name": "iterations", "type": "enum", "values": [ { "name": "3", "value": "3" }, { "name": "5", "value": "5" }, { "name": "8", "value": "8" }, { "name": "13", "value": "13" }, { "name": "21", "value": "21" }, { "name": "34", "value": "34" }, { "name": "55", "value": "55" }, { "name": "89", "value": "89" }, { "name": "144", "value": "144" }, { "name": "233", "value": "233" }, { "name": "377", "value": "377" }, { "name": "610", "value": "610" }, { "name": "987", "value": "987" } ] }, { "control": "None", "default": 0.0, "label": "Blur", "max": 5.0, "min": 0.0, "name": "blur", "step": 0.001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Blur", "type": "shader" }, { "display_name": "Custom Boolean", "icon_data": "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", "name": "SDF2D_Boolean_Union", "parameters": { "Correction": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "$uv.x", "label": "SDF2D A", "name": "in1", "shortdesc": "SDF2D A", "type": "sdf2d" }, { "default": "$uv.y", "label": "SDF2D B", "name": "in2", "shortdesc": "SDF2D B", "type": "sdf2d" }, { "default": "min($uv.x,$uv.y)", "label": "SDF2D Custom Union", "longdesc": "The union between A and B is defined by this SDF2D\nX is the distance to A\nY is the distance to B", "name": "joinSDF2D", "shortdesc": "SDF2D Custom Union", "type": "sdf2d" } ], "instance": "", "longdesc": "A custom boolean operation between SDF2D A and SDF2D B is defined by a custom SDF2D\n\nCode - PauloFalcao", "name": "SDF2D Boolean Union", "outputs": [ { "sdf2d": "$joinSDF2D(vec2($in1($uv),$in2($uv)))/(1.0+$Correction)", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "SDF2D Custom Union" }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Custom Boolean", "type": "shader" }, { "connections": [ { "from": "sdbox", "from_node": "node_sdbox", "from_port": 0.0, "keep_alive": false, "to": "paulofalcao_sdf2d_operator_custom_union_2", "to_node": "node_paulofalcao_sdf2d_operator_custom_union_2", "to_port": 0.0 }, { "from": "sdbox_2", "from_node": "node_sdbox_2", "from_port": 0.0, "keep_alive": false, "to": "paulofalcao_sdf2d_operator_custom_union_2", "to_node": "node_paulofalcao_sdf2d_operator_custom_union_2", "to_port": 1.0 }, { "from": "paulofalcao_sdf2d_input_3", "from_node": "node_paulofalcao_sdf2d_input_3", "from_port": 0.0, "keep_alive": false, "to": "sdboolean", "to_node": "node_sdboolean", "to_port": 0.0 }, { "from": "paulofalcao_sdf2d_input_4", "from_node": "node_paulofalcao_sdf2d_input_4", "from_port": 0.0, "keep_alive": false, "to": "sdboolean", "to_node": "node_sdboolean", "to_port": 1.0 }, { "from": "sdcircle_2", "from_node": "node_sdcircle_2", "from_port": 0.0, "keep_alive": false, "to": "sdboolean", "to_node": "node_sdboolean", "to_port": 2.0 }, { "from": "sdboolean", "from_node": "node_sdboolean", "from_port": 0.0, "keep_alive": false, "to": "paulofalcao_sdf2d_operator_custom_union_2", "to_node": "node_paulofalcao_sdf2d_operator_custom_union_2", "to_port": 2.0 } ], "display_name": "Custom Boolean Example", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAA0JJREFUaIHtmj9LI0EYxn+GjaBVwO7gEKzkSiGlpFj0GklvtfErHF4drCN6X8GvIClGwQO5UrC8MiCCzRFYsAhcwmKxRDc7725mN7uuI3lIM+9MnnnfnX/v7jwrpKELx3APx3Cn1T7C12h5NBodHBykEgL0+/21tbV0KgCacAo7cAonc2lj6IIPzdQ2j7HyaDQyoZaaxalm0QQfumJdTTIO4QEa0lOvBHfQgAcYzm1aB9+Y991GIAof6tFydATq0wf/kREOxVsMTqTu3zzv27ALwB+4LME5Q/4v4OuupkyvHkzgClpTSwuuTKbQGZxpdAlTSOefQC/ZqxmHu9CRGq3CJMI7BwsEkIQWTGBVqupE9yVx4bZhYNyT7NnCAYQYQFuy+4ADXdjT6lbhF2xl7KkkbMEAFPyfte+Fg/As/WeSo5/SRiDFpeca3GvWHri5+igVrrSm75HyBSFWz/OCIFBKKaWCIPA8T2+zyAiY8EuONR0pX7jR2Q8PD2u1t1NPKQVcXFxI3WSGMX/cMTHZaev7ZhAEejvdmHsEDPmhpW9HejK3C7cx0/X1td6BaMwHY/7b6VH9BjEbtRuWTSERV7Gy53nhqnqFUkrfKHIHYMivOwY4Jrl4uBsEQRDOy/39/aOjo6K2oCz837K8OWRHySexDOsX8TKAqmF9AE6xS8oQRXbquiVmzuIuVCBc17V+Ci0DqBrWB+DopsKXXYGEPzTLZxwBPcrcOCuaUIf1I7AMoGpYH4DT7/cLpNOuHwUUmz46Jl0awtyzAju1fgotA6ganyGAR+kXh9n3+/ww4xdcdSSVhfBp8WPcD/yF73PZLPu4u7wf+HiwbAqJsOl+ANuvWdGXLPTMBR7pnhV6P9CSLrpvHdjRrD9hIr4uV4obyaWdGpxKs2g9q1SlZAxgXTOGskawWm4TngPnkuDpErYzCZ5KQCh42pYUaB04j5ZtlZytREyCkm4WMVGeoNw1fCdOUO6aiwplV+vwNLf72V7jnpn8bTHdKPAUlV1Gc6ExbGYRvlYCHzZh/FqOJXNjaMAwQcRYLTowhEbUexKy0Y3pUKSLv98NzemD39Drko7bEziBLvxOlt8LKPTKMCq/T9xdXgCqhw/WZjLb1QAAAABJRU5ErkJggg==", "nodes": [ { "name": "sdbox_2", "node_position": { "x": -163.157135009766, "y": -139.802551269531 }, "parameters": { "cx": 0.0, "cy": 0.0, "h": 0.5, "w": 0.1 }, "seed": 56656.0, "type": "sdbox" }, { "name": "sdbox", "node_position": { "x": -165.157135009766, "y": -269.802551269531 }, "parameters": { "cx": 0.0, "cy": 0.0, "h": 0.1, "w": 0.5 }, "seed": 7444.0, "type": "sdbox" }, { "name": "paulofalcao_sdf2d_input_3", "node_position": { "x": -243.821014404297, "y": 4.80462646484375 }, "parameters": { "mode": 0.0 }, "seed": 34667.0, "seed_locked": true, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Type - SDF2D Generator\nCode - PauloFalcao\n\nSDF2D Distance to Axis\nUsed in more complex operations like Custom Union", "name": "Axis", "outputs": [ { "sdf2d": "$mode", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 0.0, "label": "Mode", "longdesc": "SDF2D made using the distance to axis X / Y at 0", "name": "mode", "type": "enum", "values": [ { "name": "X", "value": "$uv.x" }, { "name": "Y", "value": "$uv.y" } ] } ], "shortdesc": "Distance to Axis" }, "type": "shader" }, { "name": "sdcircle_2", "node_position": { "x": -233.821014404297, "y": 144.804626464844 }, "parameters": { "cx": -0.35, "cy": -0.35, "r": 0.06 }, "seed": -64610.0, "type": "sdcircle" }, { "name": "paulofalcao_sdf2d_input_4", "node_position": { "x": -233.821014404297, "y": 74.8046264648438 }, "parameters": { "mode": 1.0 }, "seed": -56712.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Type - SDF2D Generator\nCode - PauloFalcao\n\nSDF2D Distance to Axis\nUsed in more complex operations like Custom Union", "name": "Axis", "outputs": [ { "sdf2d": "$mode", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 0.0, "label": "Mode", "longdesc": "SDF2D made using the distance to axis X / Y at 0", "name": "mode", "type": "enum", "values": [ { "name": "X", "value": "$uv.x" }, { "name": "Y", "value": "$uv.y" } ] } ], "shortdesc": "Distance to Axis" }, "type": "shader" }, { "generic_size": 2.0, "name": "sdboolean", "node_position": { "x": 33.098388671875, "y": -8.11334228515625 }, "parameters": { "op1": 0.0, "op2": 0.0 }, "seed_int": 0.0, "type": "sdboolean_v" }, { "name": "paulofalcao_sdf2d_operator_custom_union_2", "node_position": { "x": 286.178985595703, "y": -145.195373535156 }, "parameters": { "Correction": 0.0 }, "seed": -38336.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "$uv.x", "label": "SDF2D A", "name": "in1", "shortdesc": "SDF2D A", "type": "sdf2d" }, { "default": "$uv.y", "label": "SDF2D B", "name": "in2", "shortdesc": "SDF2D B", "type": "sdf2d" }, { "default": "min($uv.x,$uv.y)", "label": "SDF2D Custom Union", "longdesc": "The union between A and B is defined by this SDF2D\nX is the distance to A\nY is the distance to B", "name": "joinSDF2D", "shortdesc": "SDF2D Custom Union", "type": "sdf2d" } ], "instance": "", "longdesc": "Type - SDF2D Operator\nCode - PauloFalcao\n\nThe union between SDF2D A and SDF2D B is defined by a custom SDF2D", "name": "Custom Union", "outputs": [ { "sdf2d": "$joinSDF2D(vec2($in1($uv),$in2($uv)))/(1.0+$Correction)", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Correction", "longdesc": "Keep this value as low as possible!\nIncrease this correction value if the resulting SDF is not perfect.\nA higher value will increase ray marching loop iterations and will result in higher render times.", "max": 10.0, "min": 0.0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "Custom Union" }, "type": "shader" } ], "tree_item": "PF/SDF2D/Op/Custom Boolean Example" }, { "display_name": "Repeat", "icon_data": "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", "name": "SDF2D_Repeat", "parameters": { "RepX": 3.0, "RepY": 3.0, "X": 0.1, "Y": 0.1 }, "shader_model": { "code": "", "global": "//Adapted from https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm - Finite Repetition\n\nvec2 opRepLim2D(vec2 p,vec2 c,vec2 l){\n p+=(c*l)/2.0;\n return p-c*clamp(floor((p+0.0001)/c+0.5),vec2(0.0),l);\n}", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf2d" } ], "instance": "", "longdesc": "Repeats its input shape\n\nCode - IQ", "name": "SDF2D Repeat", "outputs": [ { "sdf2d": "$in(opRepLim2D($uv-vec2(0.5),vec2($X,$Y)*2.0,vec2($RepX-1.0,$RepY-1.0))+vec2(0.5))", "shortdesc": "SDF2D Output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4.0, "min": 0.0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4.0, "min": 0.0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128.0, "min": 1.0, "name": "RepX", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128.0, "min": 1.0, "name": "RepY", "step": 1.0, "type": "float" } ], "shortdesc": "SDF2D Repeat" }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Repeat", "type": "shader" }, { "display_name": "Smooth Boolean XY", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAEcdJREFUeJy9m3twlXV6xz9JTkiEHIkBIguBhEu4LJFbUKIOiIoWb2W1gq5rHce67my3tv7Tbaezdaad2e10tp3utsu6rcs6yK4toqiwLogXlGwbDDdFCCwgNyMhFyD35EBynv7x/b17kje/9+SwbvvMnMnl/M77+z237/N9nvc9Wb8BKwHOAJuBNe73KCkHvgbcCcwBRgEtwAFgB7AFOJjm8z7JAuYDFcAsYMpLL1FSUkJxcTGFhYUUFBSQl5dHTk4OWVlZJJNJ+vv76evro6+vj8uXL//29/7+fpLJZOZ7d4GdAl4B/gVoTbN4tXvdBBQDHU7xt4FXgcNXoHQ5UAUsBGZt3UpZWRnFxcXE43Fyc3NJJpP09PTQ0dHBxYsXOX/+PC0tLTQ3N/PUU83I7OeBi0CbO00X0AtcAvqA4Q2RdRjsZeD7QGfEonHAN4CVyOvZwHHgXeBl4L+vQOllQNXatVRUVFBaWkpRURG5ubkkEglaW1tpaGjgzJkzrFx5wu1yzP08keEuVyj/CFYIRsRrAdhzYCfB+sBawH4J9niaz4Rfd4P9M1h1dbWdO3fO+vr6LJlMWmtrq9XV1dkbb7xh8F2DVQbTMr7u7+U1Oc2bt4NtAGt2yh8H+xFYZQYXzgd7BGzdunVWV1dnXV1dZmbW2dlpdXV1tnHjRoO/NLjp/1fh0CvL/TJE7kVhvxTIR8D2CgLJdt8HBshDwL3r11NVVcXkyZOJxWK0tLRQV1fHrbfWAO8B7wxzlUxkAjARGI9QqQgYDcQRPOcDeUAMyEFwO1i8BrgX+BawBOX7HuBF4KfDHOcWYPWaNSxbtozp06cTi8VoaGhg//793Hffe8CbwNEr15NrEfrMBKYCk5DSY5DCo5CiuUjRQKIcn5JYeKvbkeeXIOv8D/AfCOyi5BrgCWDlzp3Mnz+feDxOU1MTe/fu5e67twGbgPorVPgGYAEwG5jiFL4GuMop2QckEPK3oErQ6l5tDK4M3aSqQz/h6jAI8DaAtYF1g70D9sAwOXQz2PPPP28nT560ZDJpnZ2dVlNTY/CswYwryMcyg8cM1hi8b3DKoNOgz+CSwQWDYwY7DX5h8D2DpwzuNJhpcNXvigP6ZRxC+2awBNhOsNXDfPgRsK1bt1pbW5slk0k7deqUvfDCC+5QmWyeY3CvwT85pesNep3SbU7h7Qb/ZvANB5jx3zcQ6pfvkCp1e8GeHOaDz4DV1tZaIpGw3t5e+/DDDw3+ymBMBpuONXjCebJugKfb3d+bDL5jcMf/hcKDXjEQu1uJoOUUQvsowBsBfBv46qFDzJo1i46ODqqrq7nvvheBjRGfCqQQWAWsQBxwAkKaJsQja4EPUJXoG+ZamUgeqg5jEH6MBgqAke69EcTKkQHmIPjYhkqdT0YAfwM8cvQo5eXlNDU18dZbb/HYYz9BcJlOViEz3wiUIAd8BuxDXcQ24OTvqOg0xDMHVohxSOmBJTGXVEnMBrKIfQ1x+2xgF/AC0XX+26SUP3v2LJs3b+ab3/wB8Js0h5sHPArcAcxwB6hH3t4GvE76DiQseUAlMJdUhZgAjEXezXPaJBHq96Iq0IIqQlAVeoBeYneiIDmCQn9vxLbPoLAPlN+0aRNPP/190veOjyJatBiFYQtiFW8CG1Azk4mMB24GFqFYLXOnHuWUTSC3nQYagQbgc/c6616NKNUuDb50G9hFsB8Og/a1tbXW399vjY2N9txzzxlMHgbknjXY51C9x/3+PYOKDAEq1+Bug38w2OYqwkWDLkuVxPcNfmbw1wZfMZXDKwTCPrAPUD33LbjZlbpEImGtra324osvDrPRHFMtP+mQvcngNYOHMzzUJFN9/7nBAYPzTukWg0/ctf7OKVzyxSvBOVcCfW9eg0hOW1ub9fb22pYtWyx983KjO3ijU/64qYbPz+AwZQZ/YfC6wacGHaayeNzgTYO/N1hhMOqLKz2wDB5AwwyfPAEsX76ceDzO7t27XamLQvulwNOITBeg9mkjqinpQO5qhBMrEPUtBi6j/n8/sBONXD5Lc410koOqQymqPkGFUOMU24F/knML4valpaWcOXOGxYs3EV3nb0TKL0c1dh+wnuiCGsgK4I8QwE1Ctf8Y8CGwHfglQ0BrWJlOqnGagrrFcaSaphEIOA3oJ7Yl4jKr16xh/vz5dHd3s2PHDqKp0RzUO96OlN8DrAV+luaQxcDjwD3u83kIsXcBv0Ix2Z+BsqAIWkyqcSpDzVQcKZtEpbAd8YzzQPOAlycvHgI7dOiQmZlrbKK4/VgHeI2mhmWXieKmy7ubDH5icNSBW4PBrwz+zF0v0wqx3OBvDTYa7DE47c7xucFhgw9MVPu7Bn9isMwEsEOuN/gf+WDr16+3RCJhjY2NpnIWdZBnLYX2Hxl8a5iDP+hA7pyJ/x80+FcTeGai+FSDr5tK364BSp92RnjVKfxVUzXKAATDAfUAUFVVRSwWY+/evcB/RYTeo8BXSHUQAeBFydeBR9AAHJQqr6FU6UjzOVCarEBYMRMBWBIRq+NoNr0bYUem5Colgyyybt06SyQSVl9fb/DnEZabZ7DFRHKaTKWuMI2lnzaoMZW2c6Zu74EMPDTF4BlT7T/ivH3KoNrgRwaP2BflAoMi4G7g+uuvJxaLsX//fjTJ8cmjCHgMDcXXEl3qngb+GPiyW/MuAtTqND7JAR4G7kLgNgZx94PI0++hKnGlEke3Xqahsjhx8EjsdqC0tJSWlhY3w/ONsVahxmYM8DHi9B9FbBiE/ZeBC6j5+XGa9aBGZzXiFaUo1I+hCrENGTBTyUFtdwVKncmIB4xG3WFOygDlwA3V1YwcOZLa2lrUsISlELW0M1D+bSMaIx5EyleQarR/CBxKc+CHgfvdoeOogdkNbCWaroUlG/W3lcjwZahTHIkitsedpwloSBlgGVBeXk5XV5cbXfumt6sQ6YkhEHsp4hA3oTSZj9rPd5Hno5QfDTyJ5tEzEAf4GIX5y2TGAqehUW4lcue1aIB6Cd0+O4p4wFHUvh8BLqYMULV2LWPHjuXo0aMox8IyFiFxCUqNN/HfBi0GHkN3/kDU+adEh30Z8BTwB+7aF1C4v4qY4HCyELmvElHeQmTAC+58h5ExP0Jka7DEQPaqqKggOzubQ4cO4b9p8YduM0PDjA0RB3ocuA31A3uAnxMNeLPREH45oqufub3Xkz5VQIOWO9H4fIrbrxt5uM7tvQuf0gMlBvJVaWkp7e3trFpV61mWgyBygjvkNvz1dgWitxNRuL1GdCWZDfwpAtRCd/AtKFoupDnyl5AzlqJ0iSMe8THqQX5N5rdrnQEWAkVFRRw/fjziw0E5ynKbvO5ZczVqbOYg3v0e0f1AGfL8HSj/D6N51I9x7DRC7hpwlrEI0D5BBOg9d7YrkWnEstD9+dzcXI4dO4a/3V2GSkgTGmD6av5DiKnloRT5T/wMbzTK+eXI84dRJfn3NActdte/DYFdNmKftQgoM/e4jHcdSvxJxOYDZWVlJBIJVq70gVoZmsXlu8Nui1izAtHiz1FHVxNxgCcR4I1DYf8K6ZVfiHjBjQjZW0k9lvE6mh0MJ1OB61FJnuL2zgf6iVUAxcXFtLa24kfqpajH7kYWP+lZsxJZtg8BTxQ3eBiVuhKEJVtQ2EfJHYhPVKI6fhoNSN4gswdxFiGEm4OcE0fEqhX1EJ8SmwXE43GH/r4cWozy7QS6aRGWScCtKEyPIe+3eNZVIpIzA4HcOwjwonL+foQpc93fnyBCtAHlfjpZjNLxOgTIeciBn7ozfoKcXU9syksvkZuby5kzZ9yCgRLclo4h4uDjB3e5jS4jMPIxthwUxgtRjd6FSl0U2j+ISNccRGT2oYriY6cDZTbCiYXIMXkIkI84pfegMVtKYiUlJSSTSfdMTlhuQPnd5Q4Rvl2Vi1KkGEXIdvyTnIfdujgqV68SXefvR8pXIE/XIK//OmI9aNR1D/J6ufu7A2HWPgSSx72fjBUXF9PT0xOxICg3Dci7YbkDhaghy/qY2xQUJaWI22+PWBdcLyilPe7g65HnomQeAuBKFLEJRHX3oJRNd9cKYoWFhXR0dKDcCMtshJYnUdiGZQnKsSYETr4BZgCQSdTYRD1qsRCF/lx3nRqGV/4eVE5nI97fiHJ7B9FVaLDECgoKXP6HI+Ba5L0ksmK4po9HiuW799/2XH4Omi+PQQbeir+xKUYYUen+3ofCPkr5fLf+VpSifSilqt0emdxrXAjMJZaXl8f58+cZ+hzeHKRkJ/6SczMiJT3ojqJPsRXIOz2kGhyfPITq/EgEVq8RnfNjSGHKeARy+1FqpcOJQKqQ46YDY4nl5OTQ0uIrWzPR7eUmd6iwLEL4UI+fPU5FRroGGdBHoED4cBuKuNPIg1FoX4we1F3i9m5Eob6ZKJBLyQIE6jMREcoG2ollZWXR3NwcocBVCADDBshDETLCbezr9m53m/Wg3PdNcr6EDDANhe1OorvMMUj5pWgoWg+8j6Iq3SC0BBlsLmrmct1ep4CDxJLJpHv2NiyTUP3+jKH5X4lyL4FoaVfo/VwU0kXIQD7+AOrqFiBvHEAMz0dy8lHYL3HXDNrm4UjRUneO6ahd7kT0+2PklEZi/f39+JnbeAQupz3vzUXheJ4wsZDcgsZRSVKTnbDMcwcci7zxNtH0dvWAtfVI+V8Q3QcUoZJaibyedHocQFiUwrtYX18fQ0NoAgq5hDtcWGYjsnEEP1LfiMK7heibqXciWtyDegxfiw0qdbcihzSisN9AtPLlqDTORd1mO6pSu7xncQa4GPr3RNS2duE3wBQUticYOjm+2m2ej8J/p+fzCxEgxRG+bI9QaJ5TpswpUoNyPirsF5DiBXnoyZDgDrP/SZbY5cuX0VOVA2U8qa9ChFNgGoqQBP7B6WJkoF4Ucr7R+jK3pgMxTF8/P4pUGe1zimwmGvAWI+VnkHJODUqX6DvMLgLCIFeMLNjGUMuVo1wMmoywLEBlphkBTVimodwsQPgQBZD3uHVXIZKznehSt5hUSiXduXaS/uaLdHEGCKN4EalyEQ63qe7wp/E/WRDQ59P4+4cl7hrdiPH5WvDZiENci/K+mmiSE4R9ME4/jEpuOgpdgFJwdlAFekMLRqMS6KOUQZvZyNBGYzopanqEoeGajbwaDEGjlLoNRVoCcfutEesCwAs8fxhFiq8yBTINkbipwNXiAUNzJO5+hrEBhA/ZiCCFZQ7yWjv+knaTO3Q/Gl37cn8xAslRyMBRM8giUoCXjQz+LumVX4QipgTNOFqCGyPhPn+U++kzwDhkbd+8fSYy3gkEgGEJWtYLRIdo8LhMh1sT1dUFrXie229nmmtmIW4yD+FbwG8OBgYIf7sqH/X4YXDMQ9z+En4DTEH0uJ6hA48cRI6uQtHha68XoelSHgpn3wgORIqCVDqLjBQFeCMQj7gORU03Mtg+4MjQL0xI8pABwuBYjDzc6zYeKDmIPyTxc4eFCB8uIeV8Bqxy12h3B/QNM0oQ0ZpAqhOM+vrNCNSTBKSoDaXK7t/uH2GAGDJAd+j/Y1B6dDPUAFNRevTi/4pbBSqfF1H5C8tUUg9MHSF61r8EgW0wp4gaxGQhzwfKX0SRV8NA4pft3yQHGSBcHa5B6dGNqsBAKUXVo52hw1UQPoxEhvON369Hud+N2GHUiG4uKmNnURpFPat8Cwr7QPkDKE0Gs94IAwTfpQpbdjTiB11oTjBQSlB0XGSoAeLozpKh8Zov/CvcugaiwewGFPqdTqGoPmMRArwiFPYHUUQNvVMVYQAIHiQcLAUoPboYapzxKOfOM3Q6NMu934OfPi8gNX47hr+UVaEoykUY4wNRUJ0PnjjtRulUQ9SDWGkMAEOrw0iUHmFsgNSUxTdbmIaipxU/sF3nPt+Kf/oEKYrdijDEhzMFyPslqNSdQIAXbvYCmTCcAcISfBnB140VoajxGaAUYUcT/v6h3L0fhQ8LEfAFN0V9PQYoRaaiKP0cVZKo5wMmAtddqQFGIHwIgyPIw/34DTARRU4DQ70xDYFfP8IOX/c4l1QDdpChAAwy4mzUjgdPh/iMDcKRCmA8/wsTwhyVl7Q3QgAAAABJRU5ErkJggg==", "name": "SDF2D_Boolean_Union_XY", "parameters": { "k": 0.0 }, "shader_model": { "code": "", "global": "float sdSmoothXYUnion( float d1, float d2, float k ) {\n float h = clamp( 0.5 + 0.5*(d2-d1)/k, 0.0, 1.0 );\n return mix( d2, d1, h ) - k*h*(1.0-h); }", "inputs": [], "instance": "", "longdesc": "Returns a 2D SDF of a smooth boolean operation (union, intersection and difference) between the X axis and the Y axis\n\nBased of the original sdSmoothBoolean with X axis and Y axis for input\n\nCode - IQ, RodZilla", "name": "SDF2D Boolean Union XY", "outputs": [ { "longdesc": "The shape generated by the boolean operation", "sdf2d": "sdSmoothXYUnion($uv.x, $uv.y, $k)", "shortdesc": "Output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "", "longdesc": "The smoothness of the boolean operation", "max": 1.0, "min": 0.0, "name": "k", "shortdesc": "Smoothness", "step": 0.0001, "type": "float" } ], "shortdesc": "SDF2D Smooth Union XY" }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Smooth Boolean XY", "type": "shader" }, { "display_name": "Boolean Chamfer", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAitJREFUeJztmaFOA0EQhr8jkKB4AAQ5j0GiCKJ9hD4AQYLDYfAkBAOSYHC8RIPCYBBoqCdIzg3iaChwO9s7tnt7N3zJJW12et3v3925QDNAmGEMXAK3uJkAO8CzUlMAq8o4gIgwHA49VYtHptcYZDTzvuqagOSemsIzDoiIeGsiXablywAMywum5UEwLQ+Sfb6oJGS3z7LMU1UAL56axZDAyhdt7gLT8r8DMCb/PQCD8l8BGJWXZWij22t3yoFHzz0CktbK5wKTuLvAtHx5mZZ3B2BEvjoAQ/LlU2CWuN3+DthQakbArud7/k6iKz8SGMc7AkblywAMywum5ac7wLC8HoAB+d+PwSlxH3UH6I+7Y2AdePXMpxmJr/yxwEW8I2BM/nsABuW/AjAqXwZgWF6W0+z2h0rNGbCljNdkMBh0aOXPBPaD7oAlPZ7UVv4JuFJq6qME0H95UAPQfqjM6YM8qAG4yOmLPIDzbwE3j8CaMh5T/hxYUcb9NAhAI7b8DfBQb4o/aHAEXHRPHoIGsEvX5CFoABppykO0ANKUh+BN0IX2n5xQ8psN5hUtABeh5E8893DTcgBbwJEyPq/8KfDeaAaRekATFi8PyQYQRx6SDWCFGPKQbAAa4eSh9SZYl03Kbq/J7wFvc9+xYwH42AOua32ig0fARX156FUA82/7WXoUQDPMB9CzJljFtjpqIACAe+eI+SPwH0DbE2gb8wEYaYJVlL97Gt8BBR+0VPDvnG/uvgAAAABJRU5ErkJggg==", "name": "SDF2D_Boolean_Chamfer", "parameters": { "Size": 0.5 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "//based on fOpUnionStairs from https://mercury.sexy/hg_sdf/\n\nfloat fOpUnionChamfer(float a, float b, float r) {\n\treturn min(min(a, b), (a - r + b)*sqrt(0.5));\n}", "inputs": [ { "default": "$uv.x", "label": "SDF2D A", "name": "in1", "shortdesc": "SDF2D A", "type": "sdf2d" }, { "default": "$uv.y", "label": "SDF2D B", "name": "in2", "shortdesc": "SDF2D B", "type": "sdf2d" } ], "instance": "", "longdesc": "Makes SDF2D chamfer with 2 objects using Mercury fOpUnionChamfer from https://mercury.sexy/hg_sdf/\n\nCode - Mercury", "name": "SDF2D Boolean Chamfer", "outputs": [ { "longdesc": "SDF2D stairs generated by the boolean operation", "sdf2d": "fOpUnionChamfer($in1($uv), $in2($uv), $Size)", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 5.0, "label": "Size", "longdesc": "The size of the stairs", "max": 10.0, "min": 0.0, "name": "Size", "step": 0.001, "type": "float" } ], "shortdesc": "SDF2D Union Chamfer" }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Boolean Chamfer", "type": "shader" }, { "display_name": "Boolean Stairs", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABAlJREFUeJztm01IVFEUx3/mEwIHoohACTc11KIwRIgYjBa5MGhlLaKCwYW0KHER2aJFC6GPRYS0aTO4EUsojCAiYmjXooWKBdYmmGrRpxU5JebU4mZY3Pvkf3vOE26/1cy95//ucJg599xz7tS8hx84uA3kF73fAjwAal0C4BQwuOj9SeBipUKpVIpRpUcEcFQUvQaOiJpisUhX10lRtfxECy/uiMIJr+U+eKmWk1Vpf4C0Cd4BkW2w3+NBhUJBVDR7rpQsVgcAnI4RvbOMZbNZcrmcuPxOICNqkiW6HTN5WXxYuVwmkzkrqqaAC6ImOaL8Egb6xjUO3Bc11+VVkiL4IBi8A6ItgvFeryXyHpo+r5V8iB6IgtEvX0TFNuC4qNkHtIoaP6JaTG7/N7atboGxsTF1GWBU1HwGRkSNTgTmYKPm9m1tbaJiCjgjaq4BD0WNRvBBMHgHOFPh5afRQ5N8YLQ6oFAokM1mxUdNivY7gAFRcxDoFDXxOL8BuVyOcrksPm69Y/ytY3wt8Mox51o7g0m3kyE6FTNpDjbqYntE+xfAAVFzD7gkauxEg0uaqAcbgKei/VePNZIh+F0geAdE2nk/j8ntFQZF+zpgWNR0AN2ixhBdrFREyXHcm4cr2qtb10agwTE36xjfDMyI60BUKpUoFouibBST2yuotaWP6MfiCdTcIgJ+dWzUpoV6sAG4Kto/Bl6KmieSdfBBMHgHOKJZs/iYRkxur5AX7QF6Rft64ESshcMB/ZimhcIAJrdXOBcz98YytgloF9doATY4Z2OOwxn0SP8Kk9sr3BLtvwNDouYNcNM6s0Q94AJ60+IAem5/TLR/BtwQNXcxW+ufBB8Eg3dAFUpidaJ9k8caLR6a3YDsgD5M00JhGJPbqxqFLNAVM//JMrYL2O7zDWjFNC1suMpYDdgCkH2rW2BaHF+NXpes+P4ERjBNC4U+TG6vsF+0fwmclxT/EAN8OjbqwQZirjEmQvC7QPAOSGgbbMU0LRR6Mbm9whXRvgnoibVIMA/oxH3jy1XGasfk9jZc0d7VsfrmGF8DzDvmykknQuOYpoXCECa3V1CrUdO4vj3LkAn6dGzUgw3AI9He3oILPggG74AqHIY6RPsW3IHOhfqPB4BDQFUc0I1pWih0YXJ7G65oH+do25WvdUBjtW6IzKBfw5pET53V8tpsNa/IDKA2LdSDjUEr4QUfBIN3QIq3xOo9NGq5bOuSFik64AR6La8Hk9srHI6Zm0vTAWA6NraymK2Gt8A89oNS3O3m586ZlB0ApmNzV9RcwX29zoX9T10rwAFgL5hWh/+7QNofIB1qfr9agQ7YjWlaKBzC5PYK5nbqCnQAwHbAdXvN1XxpxF56m4tZp4afE5e0ibv6TscAAAAASUVORK5CYII=", "name": "SDF2D_Boolean_Stairs", "parameters": { "NStairs": 5.0, "Size": 0.5 }, "shader_model": { "code": "", "global": "//based on fOpUnionStairs from https://mercury.sexy/hg_sdf/\n\nfloat fOpUnionStairs(float a, float b, float r, float n) {\n\tfloat s = r/n;\n\tfloat u = b-r;\n\treturn min(min(a,b), 0.5 * (u + a + abs ((mod (u - a + s, 2.0 * s)) - s)));\n}", "inputs": [ { "default": "$uv.x", "label": "SDF2D A", "name": "in1", "shortdesc": "SDF2D A", "type": "sdf2d" }, { "default": "$uv.y", "label": "SDF2D B", "name": "in2", "shortdesc": "SDF2D B", "type": "sdf2d" } ], "instance": "", "longdesc": "Makes SDF2D stairs with 2 objects using Mercury fOpUnionStairs from https://mercury.sexy/hg_sdf/\n\nCode - Mercury", "name": "SDF2D Boolean Stairs", "outputs": [ { "longdesc": "SDF2D stairs generated by the boolean operation", "sdf2d": "fOpUnionStairs($in1($uv), $in2($uv), $Size, $NStairs)", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 5.0, "label": "Size", "longdesc": "The size of the stairs", "max": 10.0, "min": 0.0, "name": "Size", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "NStairs", "longdesc": "The number of the stairs", "max": 10.0, "min": 0.0, "name": "NStairs", "step": 1.0, "type": "float" } ], "shortdesc": "SDF2D Union Stairs" }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Boolean Stairs", "type": "shader" }, { "display_name": "Distance Coloring", "icon_data": "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", "name": "SDF2D_Distance_Coloring", "parameters": { }, "shader_model": { "code": "", "global": "//by IQ\n//from https://www.shadertoy.com/view/3ltSW2\nvec3 iq_2dsdf_coloring( in float c )\n{\n vec3 col = vec3(1.0) - sign(c)*vec3(0.1,0.4,0.7);\n\tcol *= 1.0 - exp(-2.0*abs(c));\n\tcol *= 0.8 + 0.2*cos(128.0*abs(c));\n\tcol = mix( col, vec3(1.0), 1.0-smoothstep(0.0,0.015,abs(c)) );\n\n\treturn col;\n}", "inputs": [ { "default": "length($uv)-0.5", "label": "SDF2D", "name": "c", "shortdesc": "SDF2D input", "type": "sdf2d" } ], "instance": "", "longdesc": "IQ SDF 2D distance coloring from https://www.shadertoy.com/view/3ltSW2\n\nCode - IQ", "name": "SDF2D Distance Coloring", "outputs": [ { "rgb": "iq_2dsdf_coloring($c($uv*2.0-1.0))", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [], "shortdesc": "SDF2D Distance Coloring" }, "shortdesc": "", "tree_item": "PF/SDF2D/Render/Distance Coloring", "type": "shader" }, { "display_name": "Code", "generic_size": 1.0, "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAACLNJREFUeJy1m22MVVcVhh/GYkMdQg1pJdWSFhLT1tGMCQJimvmhQJor/ECqYGtCO62tmQSMSeOIbSIQMOkPzQTaNBIhfGgMzJ/SpnUqEwX8SDV0amrF1Cmm9Cu2YmakykgYX3/se+jlznnXPndmOMmbmbveffY562OvvfY+5/AUiBKcMPJO0BrDvWbkY2NjpXLoM3IE+438bSN/xsg7BMvs9dtWUX7cbOSLgT8YbsTIZ86caZgPGznAOSP/n5F/0MivAc4bbpw2d/k3jfxLwOuG+5ORt7W5y8x3ZwRX+a+RzzLyucA/DDdWboATwBJzyjIjrwH7DTc6OmqYBUZ+O/CC4f5l5B8y8hvwxnxvogG2AEOmOXgvfxsYMNzJkycNM8/IvwA8ZzinzNVG7qIM4N3LDXCCNCo3muYDwGcNZyOjVqOvr8+wF428y8gBnDFdbnAGmAOcgROgN0DP22z8Pv4WcINGPjQ0FPR5zMjPGvlawada7MvNDl2Cj4mc0gX+HnDHA06S4e4ULDfcqJH/LLjHx1o0TI8AXWXi47JjAPhGwHcEXH9/v2G2AbcY7nkjX2zki4AnDTdm5Asv/Rd6fgC0ZZLej8P/gpF3CxYZ7k0j3xlcZ5eRHyz+j8PeVX0F/hhwIyMjhpsd3NhwcL1DRn7SyBcIvmi4A94AA8QJr8DFgOvv79fcuXMN/5egX5cANwnmG+4lI98SXGdH+tsJ+npd6XOg31VQHNBbGd57H8E7Rt4h6DXcK0F/LgEOGPk8wcr0/xrQjRWVLvBn0MqAHx6Owni/4HrDRec5A/QKrjbcL4z8m42/W1P+rYzytVpNhw8fDvr4T8C9auTLBV813ItBf9818n2TM0A05gucP38+4I8E3t+rlBxb8T7y8/zm4Jw9rRngOHG2LzA+Pp5pcybgXPGD4PdGvk7wOcP9MuhvQzUDHAf9s2J0jI5GCuQU7JOf+/cE50Xhf9DIH2qWvf+jVlf6Ir62d8r7Ka9QcFPAu6kP+eIHwZNG3i240XA/vfz3a6Tw/glxcnPIh/1sxfP+8YB7WHC74XYH50Xhv9VHQCuo1WqZhFfAlbwI2gS/Dni3/4d88YN8lXm/4ANTN8Dw8HBmqitwMcP/O+B2yi99N8onP6c8mhD+rRqgv78/U+FV9TxKoX9zwEdT36mAc8UPKkmA1QwwNDSkkZGRTKJrxfPd8tveCKJV5EbBiqDfTxvu+67PicJaraahoSFJqhjqBWZX8HybfMWHUtX3eMC/HHCuKEJ2Oh0bG9P4+LgkaWRkRIODg1q9enULShfoU5ztC+TqhWja2y24znBr5Je+6wULq0dA6xhVPM8XiJIeisc9gqOT9H5p8psOAxxRXN62ovwe+QUPiqu+HvnHX126tPSdgFWTNcB+pVWdW9g0ok35sF8rv9uD0pL3awEfZf7I+ztaMUBR0b1TUXGUsnKU8FAa05F3URzeewNuReD9TtWjJrrwnXWlLyguMMpwXPFUV+B0ho/m/PbMfWW9L1L23i/4ldJ4vqAU3sfk9+0jtCmN96jIKZDLH0fld3tykdEjn/lvE3y++N2qgjmvR7V9gesqeP5RwQMBv0t+xYfgR1W8P10G6FO8pG3EWuXH/DrBjwO+Q/DDgH8i4LoEn5kuA+xVyvBuM6MZexRne+p9PZtpMxhwS5RWfY7f3ixrVekOpd3bV+X38MrwiuJ5HsEtisd1TnnU8MCjBPcJZk3GAN11pc/K79s7LFdc3jZ6Pqf8AcXjPgp9BN8qkxf/tCmNj21KyeysUng/p+oh3owhxQubAuuUD/stiouh9Ur5xfHbSuVXpRdbzpHevHgBeISpHzuBlcDHK7R9lPQezx1Bm25gBnAgaLMU2GS4VcARe+YkvVuGh5W2sdxOTjOOKp7qUFrl5YqwcLEj+E7ET4fie5TGudvALMMpxUVOoXw0n6OmpzwlmJD1G9A+FQMsV8rs7qGFQ6/yyQ6lxJvz/A9Uf83F4EHBRwP+3lYNsKmudJUprQwvKk5kBbaoZPu6CZvlFzooLXbuDvhaLgLWKr2Tc1opvA/JP5/PYbfizYxGHKhgpB41Pd4qwSMBd63gjuL323UFT9c99JTge6qeyCJsVNrDc9tYzRhUPM+jVOX1ZNrsyPD3NP6eqpJO8VPyu7fN6FC+wis8n1M+N3TuapZNp+K7lZ7YuIcWZdileGFTYLPyYd8rmBPwXYJbp9sA65SGjntQ6dCuNBvkQh6lbB8lPJSi7hMBP08p8U3gJqN0b13pYy16u8BeVd9h2qd4qkNpunObogXsjJC7gUVKz+lOKoX3Y8oXMA49ijcwm5Gr8ArluzJt7o34Z5SmqN/UvXpKKXMfqytbNZFFWFPvL+elAusVf01SYGOFPjfk+pmqchG664q7JzZleELxqq5Ar+Ixj1LYzwj4m66UAXYphbp7UFmGJYo3MxqxVXG2Ryk5Xxvw7YJPTqcBupXezGh1+7zwerSN1YhckYPgK0pZP2pzaV9wKkpvrit9UNWms2b0KL/aK9CpuLxt9HxO+aWNv6ve7AKlRcqAUni7lxCrYIVShrdPbJvwoOKFTYG7FYf9BOU1I5Wh15B2ZW4gfWIyH/gI6UOkMeCvwM+Bp5na0QU8AOzDf2HUfGwHHsd/x1YcG+r9KmizhJJvEZYpJavJhHBVrK97PFfNNWKVMjs5DQjn+ToWO+5KKY3Sayl7Wgj1AtvU9PDCYJ6qDQ2r/JUwwP11b5e+kJTBfTJb1yXokqntm7Ak12Y6lH6orvRWlbyHV1GZ7Sp5aGFwl0pWdSVYWqW/Vm92ntL79vuUwnvDFAx3m9K8XiXcUcrw91RsW0X5WZpRWOHyYw7QSfoebCFwfb3Z68Axqmdwd3QCXwYG66hy1EgfRz6badcO3Ir/xLs4ZgHnmZEWHeOk6e494F3gDPAy8EbFm6t6rCJ9e/o08NuK57STjHWofn/RcRMwG3gp0y4pD/B/ldVR28bkgyoAAAAASUVORK5CYII=", "name": "SDF2D_Code", "parameters": { "code": "$in1($uv)" }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "length($uv)-0.4", "label": "", "name": "in#", "shortdesc": "SDF2D #", "type": "sdf2d" } ], "instance": "", "longdesc": "Executes the code in the parameter\nExamples:\n$in1($uv)\nlength($uv)-0.4\n\nCode - PauloFalcao", "name": "SDF2D Code", "outputs": [ { "sdf2d": "$code", "shortdesc": "SDF2D Output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 0.5, "label": "", "longdesc": "Examples:\n$in1($uv)\nlength($uv)-0.4", "max": 1.0, "min": 0.0, "name": "code", "step": 0.1, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/SDF2D/Op/Code", "type": "shader" }, { "display_name": "Box with Edge Distortion", "icon_data": "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", "name": "SDF_Box_with_Edge_Distortion", "parameters": { "r": 0.1, "sx": 1.0, "sy": 1.0, "sz": 1.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "float box3d(vec3 uv, vec3 s) {\n\tvec3 q = abs(uv) - s;\n\treturn length(max(q, 0.0))+min(max(q.x, max(q.y, q.z)), 0.0);\n}\n", "inputs": [ { "default": "0.0", "label": "Distortion", "name": "t", "type": "tex3d_gs" } ], "instance": "", "longdesc": "Generates a rounded box with edge distortion\n\nCode - PauloFalcao", "name": "SDF Box with Edge Distortion", "outputs": [ { "longdesc": "Shows the rounded box", "sdf3d": "(box3d($uv, vec3($sx, $sy, $sz)-$r/2.0)-$r/2.0)+$t($uv)*((box3d($uv, vec3($sx, $sy, $sz)-$r)-$r)-(box3d($uv, vec3($sx, $sy, $sz)-$r/2.0)-$r/2.0))", "shortdesc": "Output", "type": "sdf3d" } ], "parameters": [ { "control": "Rect1.x", "default": 0.5, "label": "Size X", "longdesc": "The size of the box along the X axis", "max": 1.0, "min": 0.0, "name": "sx", "shortdesc": "Size.x", "step": 0.01, "type": "float" }, { "control": "Rect1.y", "default": 0.5, "label": "Size Y", "longdesc": "The size of the box along the Y axis", "max": 1.0, "min": 0.0, "name": "sy", "shortdesc": "Size.y", "step": 0.01, "type": "float" }, { "control": "None", "default": 0.5, "label": "Size Z", "longdesc": "The size of the box along the Z axis", "max": 1.0, "min": 0.0, "name": "sz", "shortdesc": "Size.z", "step": 0.01, "type": "float" }, { "control": "None", "default": 0.5, "label": "Radius", "longdesc": "The radius of the rounded box", "max": 1.0, "min": 0.0, "name": "r", "shortdesc": "Radius", "step": 0.01, "type": "float" } ], "shortdesc": "SDF Box with Distortion" }, "shortdesc": "", "tree_item": "PF/SDF3D/Gen/Box with Edge Distortion", "type": "shader" }, { "display_name": "Axis", "icon_data": "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", "name": "TEX3D_Axis", "parameters": { "mode": 5.0 }, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Generates a TEX3D using direct coordinates\n\nCode - PauloFalcao", "name": "TEX3D Axis", "outputs": [ { "shortdesc": "V4->V4 output", "tex3d": "vec3($mode)", "type": "tex3d" } ], "parameters": [ { "default": 1.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "$uv.xyz" }, { "name": "XY", "value": "$uv.xy,0.0" }, { "name": "XZ", "value": "$uv.x,0.0,$uv.z" }, { "name": "YZ", "value": "0.0,$uv.yz" }, { "name": "X", "value": "$uv.x" }, { "name": "Y", "value": "$uv.y" }, { "name": "Z", "value": "$uv.z" } ] } ], "shortdesc": "TEX3D Axis" }, "shortdesc": "", "tree_item": "PF/TEX3D/Gen/Axis", "type": "shader" }, { "display_name": "Checkerboard", "icon_data": "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", "name": "TEX3D_Checkerboard", "parameters": { "AA": 0.0, "Position": -1.0, "Size": 10.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "float Simple_AAcheckedboard2D(vec2 p) {\n p*=2.0;\n\tvec2 w=max(abs(dFdx(p)),abs(dFdy(p)))+1e-5;\n\tif (max(w.x,w.y)>1.0) {\n\t\treturn mod(floor(p.x)+floor(p.y),2.0);\n\t}\n\tvec2 i=((1.-abs(2.*fract((p+.5*w)/2.)-1.))-(1.-abs(2.*fract((p-.5*w)/2.)-1.)))/w;\n\treturn .5-.5*i.x*i.y;\n}", "inputs": [], "instance": "", "longdesc": "Generates a Checkerboard pattern\n\nCode - PauloFalcao", "name": "TEX3D Checkerboard", "outputs": [ { "sdf3d": "max($uv.y-$Position,length(vec3($uv.x,$uv.y+$Position,$uv.z))-$Size)", "type": "sdf3d" }, { "tex3d": "vec3($AA)*0.9+0.1", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Position", "max": 2.0, "min": -5.0, "name": "Position", "step": 0.1, "type": "float" }, { "control": "None", "default": 10.0, "label": "Size", "max": 30.0, "min": 1.0, "name": "Size", "step": 1.0, "type": "float" }, { "default": 1.0, "label": "AA", "longdesc": "Does not work with TAA Render", "name": "AA", "shortdesc": "Anti-Aliasing", "type": "enum", "values": [ { "name": "No", "value": "mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0)" }, { "name": "Yes", "value": "Simple_AAcheckedboard2D($uv.xz)" } ] } ] }, "shortdesc": "", "tree_item": "PF/TEX3D/Gen/Checkerboard", "type": "shader" }, { "display_name": "Color", "icon_data": "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", "name": "TEX3D_Color", "parameters": { "color": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" } }, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "A 3D Texture with a single color\n\nCode - PauloFalcao", "name": "TEX3D Color", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$color.xyz", "type": "tex3d" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "shortdesc": "", "tree_item": "PF/TEX3D/Gen/Color", "type": "shader" }, { "display_name": "Simplex Noise", "icon_data": "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", "name": "TEX3D_Simplex_Noise", "parameters": { "scale": 16.0, "scale_x": 1.0, "scale_y": 1.0, "scale_z": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "// https://www.shadertoy.com/view/XsX3zB\n//\n// The MIT License\n// Copyright ยฉ 2013 Nikita Miropolskiy\n// \n// ( license has been changed from CCA-NC-SA 3.0 to MIT\n//\n// but thanks for attributing your source code when deriving from this sample \n// with a following link: https://www.shadertoy.com/view/XsX3zB )\n//\n//\n// if you're looking for procedural noise implementation examples you might \n// also want to look at the following shaders:\n// \n// Noise Lab shader by candycat: https://www.shadertoy.com/view/4sc3z2\n//\n// Noise shaders by iq:\n// Value Noise 2D, Derivatives: https://www.shadertoy.com/view/4dXBRH\n// Gradient Noise 2D, Derivatives: https://www.shadertoy.com/view/XdXBRH\n// Value Noise 3D, Derivatives: https://www.shadertoy.com/view/XsXfRH\n// Gradient Noise 3D, Derivatives: https://www.shadertoy.com/view/4dffRH\n// Value Noise 2D : https://www.shadertoy.com/view/lsf3WH\n// Value Noise 3D : https://www.shadertoy.com/view/4sfGzS\n// Gradient Noise 2D : https://www.shadertoy.com/view/XdXGW8\n// Gradient Noise 3D : https://www.shadertoy.com/view/Xsl3Dl\n// Simplex Noise 2D : https://www.shadertoy.com/view/Msf3WH\n// Voronoise: https://www.shadertoy.com/view/Xd23Dh\n//\n//\n//\n\n// using https://www.shadertoy.com/view/4djSRW Hash without Sine by Dave_Hoskins\n// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_random3(vec3 c) {\n\tc = fract(c * vec3(.1031, .1030, .0973));\n c += dot(c, c.yxz+0.3333333);\n return fract((c.xxy + c.yxx)*c.zyx)-0.5;\n}\n\n// skew constants for 3d simplex functions\nconst float XsX3zB_F3 = 0.3333333;\nconst float XsX3zB_G3 = 0.1666667;\n\n// 3d simplex noise\nfloat XsX3zB_simplex3d(vec3 p) {\n\t // 1. find current tetrahedron T and it's four vertices\n\t // s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices\n\t // x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices\n\t \n\t // calculate s and x\n\t vec3 s = floor(p + dot(p, vec3(XsX3zB_F3)));\n\t vec3 x = p - s + dot(s, vec3(XsX3zB_G3));\n\t \n\t // calculate i1 and i2\n\t vec3 e = step(vec3(0.0), x - x.yzx);\n\t vec3 i1 = e*(1.0 - e.zxy);\n\t vec3 i2 = 1.0 - e.zxy*(1.0 - e);\n\t \t\n\t // x1, x2, x3\n\t vec3 x1 = x - i1 + XsX3zB_G3;\n\t vec3 x2 = x - i2 + 2.0*XsX3zB_G3;\n\t vec3 x3 = x - 1.0 + 3.0*XsX3zB_G3;\n\t \n\t // 2. find four surflets and store them in d\n\t vec4 w, d;\n\t \n\t // calculate surflet weights\n\t w.x = dot(x, x);\n\t w.y = dot(x1, x1);\n\t w.z = dot(x2, x2);\n\t w.w = dot(x3, x3);\n\t \n\t // w fades from 0.6 at the center of the surflet to 0.0 at the margin\n\t w = max(0.6 - w, 0.0);\n\t \n\t // calculate surflet components\n\t d.x = dot(XsX3zB_random3(s), x);\n\t d.y = dot(XsX3zB_random3(s + i1), x1);\n\t d.z = dot(XsX3zB_random3(s + i2), x2);\n\t d.w = dot(XsX3zB_random3(s + 1.0), x3);\n\t \n\t // multiply d by w^4\n\t w *= w;\n\t w *= w;\n\t d *= w;\n\t \n\t // 3. return the sum of the four surflets\n\t return dot(d, vec4(52.0));\n}", "inputs": [], "instance": "", "longdesc": "Makes a non periodic noise using nikat code from https://www.shadertoy.com/view/XsX3zB\n\nCode - Nikat", "name": "TEX3D Simplex Noise", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "vec3(XsX3zB_simplex3d($uv.xyz*vec3($scale_x,$scale_y,$scale_z)*0.5*$scale))*0.5+0.5", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8.0, "label": "Scale", "longdesc": "Noise scale", "max": 32.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale X", "longdesc": "Noise X scale", "max": 16.0, "min": 0.0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16.0, "min": 0.0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16.0, "min": 0.0, "name": "scale_z", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Simplex Noise" }, "shortdesc": "", "tree_item": "PF/TEX3D/Gen/Simplex Noise", "type": "shader" }, { "display_name": "Simplex Noise Octaves", "icon_data": "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", "name": "TEX3D_Simplex_Noise_Octaves", "parameters": { "brightness": 0.0, "clamp": 1.0, "contrast": 2.0, "iterations": 5.0, "persistence": 0.5, "scale": 4.0, "scale_x": 1.0, "scale_y": 1.0, "scale_z": 1.0, "transx": 0.0, "transy": 0.0, "transz": 0.0 }, "seed_int": 0.0, "shader_model": { "code": "vec3 $(name_uv)_out = vec3($(name)_bc($(name)_fbm($uv.xyz*vec3($scale_x,$scale_y,$scale_z)*0.5*$scale+vec3($transx,$transy,$transz),$persistence)*0.5+0.5,$contrast,$brightness));", "global": "// https://www.shadertoy.com/view/XsX3zB\n//\n// The MIT License\n// Copyright ยฉ 2013 Nikita Miropolskiy\n// \n// ( license has been changed from CCA-NC-SA 3.0 to MIT\n//\n// but thanks for attributing your source code when deriving from this sample \n// with a following link: https://www.shadertoy.com/view/XsX3zB )\n//\n//\n// if you're looking for procedural noise implementation examples you might \n// also want to look at the following shaders:\n// \n// Noise Lab shader by candycat: https://www.shadertoy.com/view/4sc3z2\n//\n// Noise shaders by iq:\n// Value Noise 2D, Derivatives: https://www.shadertoy.com/view/4dXBRH\n// Gradient Noise 2D, Derivatives: https://www.shadertoy.com/view/XdXBRH\n// Value Noise 3D, Derivatives: https://www.shadertoy.com/view/XsXfRH\n// Gradient Noise 3D, Derivatives: https://www.shadertoy.com/view/4dffRH\n// Value Noise 2D : https://www.shadertoy.com/view/lsf3WH\n// Value Noise 3D : https://www.shadertoy.com/view/4sfGzS\n// Gradient Noise 2D : https://www.shadertoy.com/view/XdXGW8\n// Gradient Noise 3D : https://www.shadertoy.com/view/Xsl3Dl\n// Simplex Noise 2D : https://www.shadertoy.com/view/Msf3WH\n// Voronoise: https://www.shadertoy.com/view/Xd23Dh\n//\n//\n//\n\n// using https://www.shadertoy.com/view/4djSRW Hash without Sine by Dave_Hoskins\n// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_oct_random3(vec3 c) {\n\tc = fract(c * vec3(.1031, .1030, .0973));\n c += dot(c, c.yxz+0.3333333);\n return fract((c.xxy + c.yxx)*c.zyx)-0.5;\n}\n\n// skew constants for 3d simplex functions\nconst float XsX3zB_oct_F3 = 0.3333333;\nconst float XsX3zB_oct_G3 = 0.1666667;\n\n// 3d simplex noise\nfloat XsX3zB_oct_simplex3d(vec3 p) {\n\t // 1. find current tetrahedron T and it's four vertices\n\t // s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices\n\t // x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices\n\t \n\t // calculate s and x\n\t vec3 s = floor(p + dot(p, vec3(XsX3zB_oct_F3)));\n\t vec3 x = p - s + dot(s, vec3(XsX3zB_oct_G3));\n\t \n\t // calculate i1 and i2\n\t vec3 e = step(vec3(0.0), x - x.yzx);\n\t vec3 i1 = e*(1.0 - e.zxy);\n\t vec3 i2 = 1.0 - e.zxy*(1.0 - e);\n\t \t\n\t // x1, x2, x3\n\t vec3 x1 = x - i1 + XsX3zB_oct_G3;\n\t vec3 x2 = x - i2 + 2.0*XsX3zB_oct_G3;\n\t vec3 x3 = x - 1.0 + 3.0*XsX3zB_oct_G3;\n\t \n\t // 2. find four surflets and store them in d\n\t vec4 w, d;\n\t \n\t // calculate surflet weights\n\t w.x = dot(x, x);\n\t w.y = dot(x1, x1);\n\t w.z = dot(x2, x2);\n\t w.w = dot(x3, x3);\n\t \n\t // w fades from 0.6 at the center of the surflet to 0.0 at the margin\n\t w = max(0.6 - w, 0.0);\n\t \n\t // calculate surflet components\n\t d.x = dot(XsX3zB_oct_random3(s), x);\n\t d.y = dot(XsX3zB_oct_random3(s + i1), x1);\n\t d.z = dot(XsX3zB_oct_random3(s + i2), x2);\n\t d.w = dot(XsX3zB_oct_random3(s + 1.0), x3);\n\t \n\t // multiply d by w^4\n\t w *= w;\n\t w *= w;\n\t d *= w;\n\t \n\t // 3. return the sum of the four surflets\n\t return dot(d, vec4(52.0));\n}", "inputs": [], "instance": "float $(name)_fbm(vec3 coord, float persistence) {\n\tfloat normalize_factor = 0.0;\n\tfloat value = 0.0;\n\tfloat scale = 1.0;\n\tfloat size = 1.0;\n\tfor (int i = 0; i < $iterations; i++) {\n\t\tvalue += XsX3zB_oct_simplex3d(coord*size) * scale;\n\t\tnormalize_factor += scale;\n\t\tsize *= 2.0;\n\t\tscale *= persistence;\n\t}\n\treturn value / normalize_factor;\n}\n\nfloat $(name)_bc(float f,float contrast, float brightness) {\n\treturn f*contrast+brightness+0.5-contrast*0.5;\n}\n", "longdesc": "Makes a non periodic noise with octaves using nikat code from https://www.shadertoy.com/view/XsX3zB\n\nCode - Nikat", "name": "TEX3D Simplex Noise Octaves", "outputs": [ { "shortdesc": "TEX3D output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8.0, "label": "Scale", "longdesc": "Noise scale", "max": 32.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale X", "longdesc": "Noise X scale", "max": 16.0, "min": 0.0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16.0, "min": 0.0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16.0, "min": 0.0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate X", "longdesc": "Noise X translate", "max": 100.0, "min": 0.0, "name": "transx", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Y", "longdesc": "Noise Y translate", "max": 100.0, "min": 0.0, "name": "transy", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Translate Z", "longdesc": "Noise Z translate", "max": 100.0, "min": 0.0, "name": "transz", "step": 0.001, "type": "float" }, { "default": 12.0, "label": "Iterations", "longdesc": "Noise iterations / octaves", "name": "iterations", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" } ] }, { "control": "None", "default": 0.5, "label": "Persistence", "longdesc": "How higher octaves affect the output", "max": 1.0, "min": 0.0, "name": "persistence", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Brightness", "longdesc": "Overall brightness", "max": 1.0, "min": 0.0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Contrast", "longdesc": "Overall Contrast", "max": 1.0, "min": 0.0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "Clamp", "longdesc": "Makes the output restricted between 0 and 1", "name": "clamp", "type": "enum", "values": [ { "name": "false", "value": "$(name_uv)_out" }, { "name": "true", "value": "clamp($(name_uv)_out,vec3(0),vec3(1))" } ] } ], "shortdesc": "TEX3D Simplex Noise Octaves" }, "shortdesc": "", "tree_item": "PF/TEX3D/Gen/Simplex Noise Octaves", "type": "shader" }, { "display_name": "Scale", "icon_data": "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", "name": "TEX3D_Scale", "parameters": { "Scale": 1.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec3(0)", "label": "", "name": "in", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "", "longdesc": "Scales the TEX3D texture\n\nCode - PauloFalcao", "name": "TEX3D Scale", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$in($uv*$Scale)", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Scale", "longdesc": "Scale factor", "max": 10.0, "min": 0.0, "name": "Scale", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Scale" }, "shortdesc": "", "tree_item": "PF/TEX3D/Op/Scale", "type": "shader" }, { "display_name": "Translate", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAA+BJREFUeJztWttuozAQHcDY/aAIRPrQVqpUqb/cx/5NqjwhIe7sw2roxNjGyTZmss2RLAgQ7HPmeDyQRAAwwS9GvPUAtsZdgK0HsDXuAmw9gK3x6wUQITrZ7/eQJAnEcQxRFM1bbCZ8fHyEGNr1BCiKApIkmYlT0rgPAE4RQuDHBSiKAoQQM2naaNSpGPr5kPgxAfI8hzRNTyJuIy+EACHEiUOSJFmdFtfAjwiAUdctT+d8HMeQpulMnl5vyg+h8E8C7HY7UEotiFDySZKAlHImjy4xCbDFNLhYgCzLZlI28lLKmTw2Gn3MFabvhsJFAmRZBlJKa+SFEDN5kwAuB7AXYLfbndhYj2CapqCUMpLXHXCTAiilZgI6eSklPDw8OKNvSoL6fdgKQIsbPXsrpWby6IA0TRcJ8GanQJ7n1oSH5JVSC/tLKU/I36wDcN7r5NH2SN42/89xQByHe0bzEsBU12PCo7an5F0JcC0JshPAVNsLIWbCOvH/ygFFURjrehNhnbwpAdocwDYHuCo8m9UpedcSaFtOWTlAjwzW9pSgS4g1AZA8SwH2+/3C/jaiaHPTZ58pQF3AZgro0cfMbyNv2rpqAPZTQH+R4Yq0jTxt9BnCVQixEUB/feUi59N08jfhAHSBaeC2Y/ScSwxXMRQKVgEeHx+N7/HWiJqKHGz0OPtCiL6awuXPNnhbcznEtQqwEgCzv2mwPs33WnYCIOhb3bWBu8hTe6/dJ2QdYJX68/Pz+yJDlqZkTOfXXGC7D+6HgpfXbL/k+DaXeFsnwbMEoBXhtVsoePdk+l1v7Xc+076pmc6HgrOncRwXx1zE9WM256ydDylABEz/Jte27cmKEEURTNPfoU7TBNM0wTiOMI4jDMMAwzBA13XQdR00TQNVVUFZlpDnubOfIH+QuAR6IUa3+jX0OBWn67rVflgLgFudIAUSpg0dUdf1aj+s/yPkWxBR8jgl2raF19fX1e+yFsAUbbpvIt73PXRdB1VVefXBdgpQ2IhjEqTJsO97aJoGnp6evO7NVgA9+vS4jTiuAGVZevdzUwKYIk/Jt20LVVXB8/Ozdz+sBZimabECUPJInJLPsuysftgKgFWoXgDRyOuFz+FwOLsftgIMwwAA3wLYsj2SPx6P8Pb2dnY/bAXo+362vz739Tl/PB7h5eXlon5YC4DQKzxK/nA4XBR5BFsBsI6n0e/7fl7nL0l4JrAVoGkaAIBF5HGdP2epc4GtAHVdn2R8tLxvhecLtgKUZTk/0tZ17fVgcwnYCvD19QXv7+9X74ftG6FQYP04HAJ3AbYewNa4C7D1ALbGrxfgD7hpBE5IUx6AAAAAAElFTkSuQmCC", "name": "TEX3D_Translate", "parameters": { "x": 0.0, "y": 0.0, "z": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "", "name": "in", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "", "longdesc": "Translates the input TEX3D\n\nCode - PauloFalcao", "name": "TEX3D Translate", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$in($uv-vec4($x, $y, $z,0.0))", "type": "tex3d" } ], "parameters": [ { "control": "P1.x", "default": 0.0, "label": "X", "max": 1.0, "min": -1.0, "name": "x", "step": 0.001, "type": "float" }, { "control": "P1.y", "default": 0.0, "label": "Y", "max": 1.0, "min": -1.0, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 1.0, "min": -1.0, "name": "z", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Translate" }, "shortdesc": "", "tree_item": "PF/TEX3D/Op/Translate", "type": "shader" }, { "display_name": "Brightness and Contrast", "icon_data": "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", "name": "TEX3D_Brightness_and_Contrast", "parameters": { "brightness": 0.0, "clamp": 0.0, "contrast": 1.0 }, "shader_model": { "code": "vec3 $(name_uv)_bc = vec3($in($uv)*$contrast+vec3($brightness)+0.5-$contrast*0.5);", "global": "", "inputs": [ { "default": "vec3(0)", "label": "", "name": "in", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "", "longdesc": "Changes TEX3D brightness and contrast\n\nCode - PauloFalcao", "name": "TEX3D Brightness and Contrast", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Brightness", "longdesc": "Brightness amount", "max": 1.0, "min": -1.0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Contrast", "longdesc": "Contrast amount", "max": 2.0, "min": 0.0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1.0, "label": "Clamp", "longdesc": "Clamp values between 0 and 1", "name": "clamp", "type": "enum", "values": [ { "name": "true", "value": "clamp($(name_uv)_bc,vec3(0),vec3(1))" }, { "name": "false", "value": "$(name_uv)_bc" } ] } ] }, "shortdesc": "", "tree_item": "PF/TEX3D/Op/Brightness and Contrast", "type": "shader" }, { "display_name": "Axis Symmetry", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABRNJREFUeJztWr9P8lwYPS2lFMTww93/wUEJMUbjYCIkxsDCYOLE5GRCwsbioonGCScX42BMjJMBJv1j2AiDYCiBlvYbvtx+pbRwW25t3u/lJE/qW25Pn3Puc2/vbV8OgI6/GHzQCQSNlQFBJxA0VgYEnUDQWBkQdAJBY2UAa8JsNou9vT3WtMjn8zg+PmbOK7AiymQyCIfDCIVC4Hn2hZVMJqGqKk5PTzEej9FoNJjwMsk0m81CFEUIgmAEayQSCSSTSWxsbCCdTqNQKDDh5eDTXiCXy4HjOIRCIYiiiHA4DEEQ8Pz8PPe6arUKjuPAcZxxTtd1XF9f+5EmuyFgBc/zEEUR7+/vrq67ubmZ+vfV1RXLtGbgWwX8KfDlMVgqlZhz1ut15pwA4yFQKBQgSRJEUWRJCwCQJAmPj4/QdR3lcpkZr6sKyGazjr8Vi0VEo1FEIhFIkrR0YlZIkmTE09OTY7tKpeKKl9qATCbj+HgrFouQJMkQH4lEXCVBA8JN4uXlxbZdKpXC5eUlNS+1AWSRYwUp+0gkMhWsYeYmJry9vc20i8fjSKfT1LxUBmSzWYRCIVsDyJgnyYmi6MscQLitRlgRi8Wwvr6OWq1GxUtlgCAI4Hl+ZolbKpWMpIhwvwyw3of83Wq1ptpFo1Gsra0hkUhQ8bpeB+RyOfA8j4+Pj7nt7u7uplaA5EiCVJQ5iMkcxxlHsiLc3d2de79mswlFUXBycuJGjvvHIMdxVD1MxJMwiycGkCPP81MGmMVbl8VOiEQinjZhrq8IhUJUy1uz+HlBqmNRLMLh4aGnoee6AmhvYhZGMwTMVWAdAjQV4Ca3qTzdXkDTG6QdEet1CJAjLX7FANq9vlUwMYIIN1eBnQFeKsDLewjfdoOvr69LTYJWAzY3N/1I07/3AXYVQPsY9DoEPOXpF7GdQLNwqwnW3vcyBLzAVwPsyn1e71sXQ6QK/ITvFUCELYr/pQFm8ebSXmSA13WAF/zKHGAn2jre502Cf6QB88TZVUJQk6DrAVatVumIbQQtEzTodDpu5XjbDdK2s5azUzj97rYCfmU36CYZ80xuZ4jT7162w17h2xxgFWAn2Ol36zk/4ekhS/O5yirGLpx629rzNCb0ej0vUtwboOv0eyc7IXaiFomnMUDXdVe5GfcGxW4wn88jmUwikUjg4eHBOF+v141X1Oa3taIo4uDgwHUy80DEEaG6rkPTNEwmE0SjUaNdu92GLMvo9/vY3t5eyEtVAZqmQVVVTCaTqfMXFxczznvpBVpY76Pr+pR4AFBVFYqiQJZlKk4qA5rNJkajEVRVtU3KHNZEWcGpAqxQVRWj0Qj7+/tUvNRzwHg8xmg0mjlfLpehaRo0TZsxgiWswjVNm+l9ABiNRvj5+aHmpTag0Wg4ltX5+bmRFDGCNczCNU1z/AAry7Kr+YfpK7G3tzfjU9nR0RErWgD/ViAxwa7nl4HOOlqtFnPO4XDInBOAvvovMn4RN5tNfH5+Ls3T6/Xw/f3NICN7+LYXUBQFPM/j6+vL+KIrCAK2trbmXtfpdKZ2dYqi+Lq2YDIEKpUKUqkU4vE4YrEYotEozs7OGKT3H9rtNlRVNZ7zsixjZ2dnaV4mQ+D29hbdbhf9fh+DwQDD4ZAF7RRkWcZgMEC/30e322UiHmA4BO7v7wEAtVptZsnMAv1+H7IsU6/waLF6CgSdQNBYGRB0AkFjZUDQCQSNlQFBJxA0/noD/gFzEtfh4gFJUgAAAABJRU5ErkJggg==", "name": "TEX3D_Axis_Symmetry", "parameters": { "mode": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "TEX3D", "name": "in", "shortdesc": "SDF3D", "type": "tex3d" } ], "instance": "", "longdesc": "Transforms a TEX3D making a mirror symmetry using the chosen axis\n\nCode - PauloFalcao", "name": "TEX3D Axis Symmetry", "outputs": [ { "shortdesc": "SDF3D output", "tex3d": "$in(vec3($mode))", "type": "tex3d" } ], "parameters": [ { "default": 6.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XYZ", "value": "abs($uv.xyz)" }, { "name": "XY", "value": "abs($uv.xy),$uv.z" }, { "name": "XZ", "value": "abs($uv.x),$uv.y,abs($uv.z)" }, { "name": "YZ", "value": "$uv.x,abs($uv.yz)" }, { "name": "X", "value": "abs($uv.x),$uv.yz" }, { "name": "Y", "value": "$uv.x,abs($uv.y),$uv.z" }, { "name": "Z", "value": "$uv.x,$uv.y,abs($uv.z)" } ] } ], "shortdesc": "TEX3D Axis Symmetry" }, "shortdesc": "", "tree_item": "PF/TEX3D/Op/Axis Symmetry", "type": "shader" }, { "display_name": "Paint Edges", "icon_data": "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", "name": "Tex3D_Paint_Edges", "parameters": { "edges": 0.04, "f": 2.0, "h": 0.0, "iterations": 4.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "float $(name_uv)_sdfa=$sdfa($uv.xyz);\nfloat $(name_uv)_sdfb=blursdf3d_$name($uv.xyz,$edges,1.01);\nvec3 $(name_uv)_b=$texb(vec4($uv.xyz,1.0));\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nvec3 $(name_uv)_tex=($(name_uv)_sdfdiff>0.0)?\nmix($(name_uv)_b,$texa(vec4($uv.xyz,1.0)),clamp($(name_uv)_sdfdiff*$f*100.0,0.0,1.0)):\nmix($(name_uv)_b,$texc(vec4($uv.xyz,1.0)),clamp(-$(name_uv)_sdfdiff*$f*100.,0.0,1.0));\n", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base SDF", "longdesc": "Main SDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "sdfa", "shortdesc": "Main SDF", "type": "sdf3d" }, { "default": "vec3(0.8,0.6,0.6)", "function": true, "label": "Tex Bump ", "longdesc": "Bump Texture, where the SDF difference is negative", "name": "texa", "shortdesc": "Bump Texture", "type": "tex3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "Tex Surface", "longdesc": "Surface Texture, where the SDF difference is close to zero", "name": "texb", "shortdesc": "Surface Texture", "type": "tex3d" }, { "default": "vec3(0.3,0.1,0.1)", "function": true, "label": "Tex Hole", "longdesc": "Hole Texture, where the SDF difference is positive", "name": "texc", "shortdesc": "Hole Texture", "type": "tex3d" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$sdfa(p);\n\tif (dV4 Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nTranslates, Rotates, Scale a SDF3D\nAdapted from RodZilla Rotate", "name": "SDF Transform", "outputs": [ { "sdf3d": "o_$name_uv*$scale", "shortdesc": "V4->V4 Ouput", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "S", "max": 4.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "X", "max": 10.0, "min": -10.0, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Y", "max": 10.0, "min": -10.0, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Z", "max": 10.0, "min": -10.0, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180.0, "min": -180.0, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180.0, "min": -180.0, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180.0, "min": -180.0, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "pxflib", "node_position": { "x": -412.582000732422, "y": 79.0516967773438 }, "parameters": { "color": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0, "type": "Color" } }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Type - TEX3D Generator\nCode - PauloFalcao\n\nA 3D Texture with a single color", "name": "TEX3D Color", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$color.xyz", "type": "tex3d" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "pxflib_2", "node_position": { "x": -413.582000732422, "y": 143.051696777344 }, "parameters": { "color": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 1.0, "type": "Color" } }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Type - TEX3D Generator\nCode - PauloFalcao\n\nA 3D Texture with a single color", "name": "TEX3D Color", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$color.xyz", "type": "tex3d" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "pxflib_3", "node_position": { "x": -413.582000732422, "y": 225.051696777344 }, "parameters": { "color": { "a": 1.0, "b": 0.0, "g": 0.0, "r": 0.0, "type": "Color" } }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Type - TEX3D Generator\nCode - PauloFalcao\n\nA 3D Texture with a single color", "name": "TEX3D Color", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$color.xyz", "type": "tex3d" } ], "parameters": [ { "default": { "a": 1.0, "b": 1.0, "g": 1.0, "r": 1.0 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "sdf3d_box_2", "node_position": { "x": -456.582000732422, "y": -97.9483032226562 }, "parameters": { "r": 0.03, "sx": 0.3, "sy": 0.25, "sz": 0.25 }, "seed_int": 0.0, "type": "sdf3d_box" }, { "name": "sdf3d_box", "node_position": { "x": -448.582000732422, "y": -246.948303222656 }, "parameters": { "r": 0.03, "sx": 0.3, "sy": 0.25, "sz": 0.25 }, "seed_int": 0.0, "type": "sdf3d_box" }, { "name": "sdf3d_boolean", "node_position": { "x": 19.4180297851562, "y": -171.948303222656 }, "parameters": { "op": 1.0 }, "seed_int": 0.0, "type": "sdf3d_boolean" }, { "name": "shader_3", "node_position": { "x": -158.901428222656, "y": 149.815612792969 }, "parameters": { "edges": 0.0377, "f": 2.0, "h": 0.0, "iterations": 4.0 }, "seed_int": 0.0, "shader_model": { "code": "float $(name_uv)_sdfa=$sdfa($uv.xyz);\nfloat $(name_uv)_sdfb=blursdf3d_$name($uv.xyz,$edges,1.01);\nvec3 $(name_uv)_b=$texb(vec4($uv.xyz,1.0));\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nvec3 $(name_uv)_tex=($(name_uv)_sdfdiff>0.0)?\nmix($(name_uv)_b,$texa(vec4($uv.xyz,1.0)),clamp($(name_uv)_sdfdiff*$f*100.0,0.0,1.0)):\nmix($(name_uv)_b,$texc(vec4($uv.xyz,1.0)),clamp(-$(name_uv)_sdfdiff*$f*100.,0.0,1.0));\n", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base SDF", "longdesc": "Main SDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "sdfa", "shortdesc": "Main SDF", "type": "sdf3d" }, { "default": "vec3(0.8,0.6,0.6)", "function": true, "label": "Tex Bump ", "longdesc": "Bump Texture, where the SDF difference is negative", "name": "texa", "shortdesc": "Bump Texture", "type": "tex3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "Tex Surface", "longdesc": "Surface Texture, where the SDF difference is close to zero", "name": "texb", "shortdesc": "Surface Texture", "type": "tex3d" }, { "default": "vec3(0.3,0.1,0.1)", "function": true, "label": "Tex Hole", "longdesc": "Hole Texture, where the SDF difference is positive", "name": "texc", "shortdesc": "Hole Texture", "type": "tex3d" } ], "instance": "float blursdf3d_$name(in vec3 p,in float b,float f){\n\tfloat a=0.0;\n\tfloat d=$sdfa(p);\n\tif (d1.0) {\n\t\treturn mod(floor(p.x)+floor(p.y),2.0);\n\t}\n\tvec2 i=((1.-abs(2.*fract((p+.5*w)/2.)-1.))-(1.-abs(2.*fract((p-.5*w)/2.)-1.)))/w;\n\treturn .5-.5*i.x*i.y;\n}", "inputs": [], "instance": "", "longdesc": "", "name": "SDF Checkerboard", "outputs": [ { "sdf3d": "max($uv.y-$Position,length(vec3($uv.x,$uv.y+$Position,$uv.z))-$Size)", "type": "sdf3d" }, { "tex3d": "vec3($AA)*0.9+0.1", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Position", "max": 2.0, "min": -5.0, "name": "Position", "step": 0.1, "type": "float" }, { "control": "None", "default": 10.0, "label": "Size", "max": 30.0, "min": 1.0, "name": "Size", "step": 1.0, "type": "float" }, { "default": 1.0, "label": "AA", "name": "AA", "shortdesc": "Anti-Aliasing", "type": "enum", "values": [ { "name": "No", "value": "mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0)" }, { "name": "Yes", "value": "Simple_AAcheckedboard2D($uv.xz)" } ] } ] }, "type": "shader" }, { "generic_size": 2.0, "name": "pxflib_4", "node_position": { "x": 656.818725585938, "y": -235.759582519531 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1.0, "CamD": 1.5, "CamX": 2.5, "CamY": 2.0, "CamZ": 3.0, "CamZoom": 1.0, "LookAtX": 0.0, "LookAtY": 0.0, "LookAtZ": 0.0, "Pow": 64.0, "Reflection": 0.2, "Shadow": 1.0, "Specular": 0.0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*3.14159265359,3.14159265359);\n}\n\n\n//Simple HDRI START\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat Simple360HDR_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat Simple360HDR_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=Simple360HDR_hash12(v1);\n float n01=Simple360HDR_hash12(v1+vec2(0,1));\n float n10=Simple360HDR_hash12(v1+vec2(1,0));\n float n11=Simple360HDR_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat Simple360HDR_noiseOct(vec2 p){\n return\n Simple360HDR_noise(p)*0.5+\n Simple360HDR_noise(p*2.0+13.0)*0.25+\n Simple360HDR_noise(p*4.0+23.0)*0.15+\n Simple360HDR_noise(p*8.0+33.0)*0.10+\n Simple360HDR_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 Simple360HDR_skyColor(vec3 p){\n\tvec3 s1=vec3(0.2,0.5,1.0);\n\tvec3 s2=vec3(0.1,0.2,0.4)*1.5;\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)-0.5)*vec3(1.0);\n\tfloat d=length(p);\n return mix(s2+v,s1+v*(12.0/max(d,20.0)),clamp(d*0.1,0.0,1.0));\n}\n\nvec3 Simple360HDR_floorColor(vec3 p){\n vec3 v=(Simple360HDR_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\nvec3 Simple360HDR_renderHDR360(vec3 rd, vec3 sun){\n vec3 col;\n\tvec3 p;\n\tvec3 c;\n\tif (rd.y>0.0) {\n p=rd*(5.0/rd.y);\n c=Simple360HDR_skyColor(p);\n } else {\n p=rd*(-10.0/rd.y);\n c=Simple360HDR_floorColor(p);\n\t\tc=mix(c,vec3(0.5,0.7,1.0),clamp(1.0-sqrt(-rd.y)*3.0,0.0,1.0));\n\t}\n\tvec3 skycolor=vec3(0.1,0.45,0.68);\n\tfloat d=length(p);\n\t\n\tfloat ds=clamp(dot(sun,rd),0.0,1.0);\n\tvec3 sunc=(ds>0.9997?vec3(2.0):vec3(0.0))+pow(ds,512.0)*4.0+pow(ds,128.0)*vec3(0.5)+pow(ds,4.0)*vec3(0.5);\n if (rd.y>0.0){\n\t\tc+=vec3(0.3)*pow(1.0-abs(rd.y),3.0)*0.7;\n\t} \n return c+sunc;\n}\n\nvec3 Simple360HDR_make360hdri(vec2 p, vec3 sun){\n float xPI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(xPI,xPI/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n return Simple360HDR_renderHDR360(rayDirection,sun);\n}\n//Simple HDRI END\n\n", "inputs": [ { "default": "length($uv.xyz)-0.4", "function": true, "label": "SDF3D #", "name": "sdf#", "shortdesc": "SDF3D #", "type": "sdf3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "TEX3D #", "name": "tex#", "shortdesc": "TEX3D", "type": "tex3d" }, { "default": "Simple360HDR_make360hdri(vec2($uv.x,-$uv.y+1.0),normalize(vec3(-$SunX,$SunY,-$SunZ)))", "function": true, "label": "360 HDRI Image", "longdesc": "By default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/", "name": "hdri", "shortdesc": "Image 360 HDRI", "type": "rgb" } ], "instance": "\nvec2 input_$name(vec3 p) {\n vec2 sdf=vec2(999999.0,0.0);\n\tfloat m;\n#for\n m=$sdf#(p);\n if (m(#.0-0.5)&&id<(#.0+0.5)) {\n\t t=$tex#(vec4(p,id));\n\t}\n#end\n\n return t;\n}\n\n\n//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=input_$name(p+e.xyy).x;\n float v2=input_$name(p+e.yyx).x;\n float v3=input_$name(p+e.yxy).x;\n float v4=input_$name(p+e.xxx).x;\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}\n\nvoid march_$name(inout float d,inout vec3 p,inout vec2 dS, vec3 ro, vec3 rd){\n for (int i=0; i < 500; i++) {\n \tp = ro + rd*d;\n dS = input_$name(p);\n d += dS.x;\n if (d > 50.0 || abs(dS.x) < 0.0001) break;\n }\n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcAO_$name( in vec3 pos, in vec3 nor ){\n\tfloat occ = 0.0;\n float sca = 1.0;\n for( int i=0; i<5; i++ ){\n float h = 0.001 + 0.25*float(i)/4.0;\n float d = input_$name( pos + h*nor ).x;\n occ += (h-d)*sca;\n sca *= 0.98;\n }\n return clamp( 1.0 - 1.6*occ, 0.0, 1.0 ); \n}\n\n//from https://www.shadertoy.com/view/lsKcDD\nfloat calcSoftshadow_$name( in vec3 ro, in vec3 rd, in float mint, in float tmax){\n\tfloat res = 1.0;\n float t = mint;\n float ph = 1e10; // big, such that y = 0 on the first iteration\n for( int i=0; i<32; i++ ){\n\t\tfloat h = input_$name( ro + rd*t ).x;\n res = min( res, 10.0*h/t );\n t += h;\n if( res<0.0001 || t>tmax ) break; \n }\n return clamp( res, 0.0, 1.0 );\n}\n\nvec3 raymarch_$name(vec2 uv) {\n uv-=0.5;\n\tvec3 cam=vec3($CamX,$CamY,$CamZ)*$CamZoom;\n\tvec3 lookat=vec3($LookAtX,$LookAtY,$LookAtZ);\n\tvec3 ray=normalize(lookat-cam);\n\tvec3 cX=normalize(cross(vec3(0.0,1.0,0.0),ray));\n\tvec3 cY=normalize(cross(cX,ray));\n\tvec3 rd = normalize(ray*$CamD+cX*uv.x+cY*uv.y);\n\tvec3 ro = cam;\n\t\n\tfloat d=0.;\n\tvec3 p=vec3(0);\n\tvec2 dS=vec2(0);\n\tmarch_$name(d,p,dS,ro,rd);\n\t\n vec3 color=vec3(0.0);\n\t\n\tvec3 objColor=tex_$name(p,dS.y);\n\t\n\tvec3 light=normalize(vec3($SunX,$SunY,$SunZ));\n\tif (d<50.0) {\n\t vec3 n=normal_$name(p);\n\t\tfloat l=clamp(dot(-light,-n),0.0,1.0);\n\t\tvec3 ref=normalize(reflect(rd,-n));\n\t\tfloat r=clamp(dot(ref,light),0.0,1.0);\n\t\tfloat cAO=mix(1.0,calcAO_$name(p,n),$AmbOcclusion);\n\t\tfloat shadow=mix(1.0,calcSoftshadow_$name(p,light,0.05,5.0),$Shadow);\n\t\tcolor=min(vec3(max(shadow,$AmbLight)),max(l,$AmbLight))*max(cAO,$AmbLight)*objColor+pow(r,$Pow)*$Specular;\n\t\t//reflection\n\t\td=0.01;\n\t\tmarch_$name(d,p,dS,p,ref);\n\t\tvec3 objColorRef=vec3(0);\n\t\tif (d<50.0) {\n\t\t\tobjColorRef=tex_$name(p,dS.y);\n\t\t\tn=normal_$name(p);\n\t\t\tl=clamp(dot(-light,-n),0.0,1.0);\n\t\t\tobjColorRef=max(l,$AmbLight)*objColorRef;\n\t\t} else {\n\t\t\tobjColorRef=$hdri(equirectangularMap(ref.xzy)).xyz;\n\t\t}\n\t\tcolor=mix(color,objColorRef,$Reflection);\n\t} else {\n\t\tcolor=$hdri(equirectangularMap(rd.xzy)).xyz;\n\t}\n\treturn color;\n}", "longdesc": "Type - SDF3D Render\nCode - PauloFalcao, IQ\n\nRay marching node for 2 objects using a environment 360 HDRI image\nBy default uses a very simple procedural hdri 360 image\nUse other procedural HDRI images from /PauloFalcao/Image/Generator\nOr download real ones from https://hdrihaven.com/\n\n", "name": "SDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "CamX", "longdesc": "Camera position X", "max": 5.0, "min": -5.0, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamY", "longdesc": "Camera position Y", "max": 5.0, "min": -5.0, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.0, "label": "CamZ", "longdesc": "Camera position Z", "max": 5.0, "min": -5.0, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5.0, "min": -5.0, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5.0, "min": -5.0, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5.0, "min": -5.0, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5.0, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5.0, "min": 0.0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5.0, "min": 0.0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1.0, "min": 0.0, "name": "Reflection", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.4, "label": "Specular", "longdesc": "Objects shading specular component strength, it's the strength of the highlight.", "max": 1.0, "min": 0.0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32.0, "label": "Pow", "longdesc": "Shininess of the specular component, it's the size of the specular component, it tries to simulate more shininess surfaces or more rough surfaces.", "max": 1024.0, "min": 0.0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10.0, "min": -10.0, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10.0, "min": -10.0, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10.0, "min": -10.0, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1.0, "min": 0.0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1.0, "min": 0.0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Shadow", "longdesc": "Shadow strength", "max": 1.0, "min": 0.0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PF/TEX3D/Op/Paint Edges Example" }, { "display_name": "Paint Edges Generic", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAH/JJREFUaIGNemmMHOd55vsddfR9Tk/PfXNmOEPODEmR1n1ENmUplrKOtbHXhpEFuIg3WhhxsIv88P7YBEh2YTkxYhsO5CUWNrICVoJ8jWwntizxMClLFCmemuEM5+6Z6e7pu7u6zu/YH01TNIdU/P5ofFVd9dbzvHcd6L9+822MEUYIAAjGXAjL9RSCW2spgRLseAwh5FMV12OaSoWQLmNcSJUSAHAZN37y5+9cX+sNK0/9l/9x9epV0zRVYIc7g1Zlp7azve1QLd0fxuzClQ+e6KQXM+VkyF/qOri2vvHgZ78OCISQCAHFRIIEAABgXCiUcCEpxi5jCCEuJCUYADBCXAgAAIRASurWspRghWAhQSDgQlAAJgQHxIUQQjogMcYuY4wQjJHFhRQSIdBUBTC2PU8IudOwAkQG4qm/+Zu/0TTtq1/96ve+9z2p7J3oGQ8AHgNxZaeEdYUKz3DkodH+9ZLhDwQzmYwwch4XCiUAIDFGCDVtlxCkEOJwwYVwALiQBCOMsSOkQgkg5HqMca4qCsGIukbRBSAYAQDGyPEYBkQIQgg5HvMYBwCFEIIRx5gqNEgJIsC5wB4SQoLHSqsnpBbojAUzPDgdzibu+4PZ2dk9e/b84he/CHz60wrTe3VWyS/XbKPDR3YsuJDfMj3pVS8EAgHWLBGMuSM9zikhCAEBQB6qOy5GSKFEStAosSxPCOlTFdvkGGMhBAA4tgz7fZR4DUowBuwxhjDWpeRCSA8QQjoCBYSmUCk9z+NM8LohGOdSAsaIYKwpFCPEOUeCZ01RqGf7w8p7589/4QtfmJycJIQIIXh5u4rsrp4+sX3dE2glW4oG/cFYJFOuqmrIbZYpIYxzQrBEGBBwLlSF+gE8j7sOlxIkIX6VIoK4axEhFUo8xhFCXArHsKgqLUUSApgCF1y6jCEJPoVKKR2Xcc5dj7geMx2XC6Ep1GOcEiwAFIUiSQEBK2f3h9mbWbdueEpPe8ixq9Xqd7/7Xcuy6vX6Hz54IJ/b2szu9ARiYel22c2c5aznNruiPkdRhF13EVIIEZ7gEgjGTAhuAyUEIxAuazouAGgKbUU/xtgBUBUqAKSUNhe0VNqhGAspAcD1mATQFcpVqlCCJWgIEAeNYum6NvdcTyiUqJgQjIG5nicVSvb0dTU+WE5qqAr+cys7vT5++vTpdDr9xBNPrKyssFAqZVWvzc2b3OGcBVXam4z6Q6jIaKVSaTYqCiVIoRgjDEgCUAQEY+5KIaWPkIAfSSkxEg5jDcsxHZcxQQhWKUEIUUJoyo9Nx2OCIwS6inyqgkASzDzmMs4RQgDggfQh0DUwbc+xrTrnPlVhnLfKRY1XP9UdfH/bEM1SV8S3YeJgwOac7+zs9Pf3CyEureWTkWC1aFaaTjygEZBY8sJ2VihBxEyVqMhzFYUKKQjCgAAJhEAKCY7LOBeUEAlAMAorKIARE5hxQQnoqkIJ0FKliBGiGGsKJQhZTZNxIYTgQqgKVQiWUiKEEEJCCMw5EUwKIT0XSxBSqAjtP/zA+ZOZvW0+0+OrZbO9o6NWyhNf6MaNG8vLy4yxZsMex6aDhV/BbZrMN+ytUj2qgBEMeXbDYkSllLvIZfwmXCkxRkICJZgSAhJAgsOFQokQUqNEI8C4cEyryQXZ09fnObZtm4bZNK2m5C6RXKegYim567q249ggPMlcz3U8z5Hc07BEghPgKpI+ihpAqGQ+s3ioJ3o511CZ/bHh9NpWLpbu8fv99XpdSnigy99s1D/WHaIKzTtEMC+caKs7LBmJcM8VzGWeI5gnhadi6VcxRTKgYj9FCpaSe5y5FLgUnhSeY9t1w2g0DdexpfCon3CFYEoxQRhj5HrM9VzTla7HPM4pwVJKjhAhWCGYSgAABYimEIyxrhAJss7YynpmprNnPl97ZiS2UnEuLGfbVLS0uDA1c6CtrW1iYqJS3Azmi0WHCz10I7+Z8tOtbM6j/lSAWK7HBedcWI4HAMzGTYxUShECjHGrrzkeo4S0GpkQMqS0DAxceBRxm3EQHhJCAAKVEsyFy7hg3K8QBFyA5FwIDhxjhBDGyGPSlcAFp4RghFK9Y+GxvVWjEhvpJxuXInal4fKc4cY7NM/z5ubmqtVqJpN5bP9odvFyRDqh7hGlmSWmhRWtWCqarse5cDnHCLXykiBkY6RQQjBmXHAhfZoiBXY9QAABXcMgCMKYYIwQtZoNj3OMoJWvdc4dxilGlBDJsJCSIKQqlBLCOcMECU+2+gCW0rUdJsTcyZOKojw9ElvdyaUV/F7FKpleR0itlLaulsqpnoHp6ennnnvu9OnTtkDE5eVywd/ZjatViyMCTMPC4cxPkZRCSkmkwAhJDh4HrBAF47BPIViqCrQYMu4IJgFjBhIhRCsNgwkhpSQYAwAhWEqJKWUguBCUYISxx7jrcQCgAmOMOBfAwWGMC2m73ti+6fHx8epvfjzO8hdzNYqRRvFa1ZFSJsJKe6rtypUrlmUFg0E3PaTtzE/1DRpqeMvmalDTVUWlJKirCCEpASEAAC4EAMIIACHGheMxKWXTBoRQq6IQjBRKMMJcCDqQTqiUCAke51JIj/PWCR4XUkopASMkAYQUBGMJ0mVCCCmlZFx4jGOE0un0Ky//81MDQegc62HLkylzqWRvG27JZDFNXL/wGxP7BgYGqtVqrKu/sXNjfi1L/IZG0OOjaS4EF4hxYbue4zEhQSGYceFyThASUuqqAgAIQAKolKgKVSkBCYRgTaEIgBwa6cUYo9YhCFRKAj7NpylBnxYN+CIBn19X/ZpCCRFSMiZaUyAAIIQpwQTj9VLjD599rmpYBcMJCEvYzZ2m1x5Q0iE1GArbSije2VutVtfX1wcHB538eoWGc7lcRJGJeJwLKaRsWURTFJUSQK05BQG0RlMpAVpWpxhLCS7jXAghJRfC44K6jFOCVUpbISSlFFJihAAhLkQrhzBGCiF6gHqMu5y3FHApAIBiMp/JrK+vj3d3ZK5sdAfA5tRweUhXHaxu1rygirdzmzVXjI6OUkpv8Ihn1uJBHTk2SPA4xwgJKRFCHuMSbu6RAgBu0uBCSikkIEoIxQgDanHwOMYI0dYGAlehWKEUpJQArQihBGN8s4W1pgyA307sCKQAISTnbKbdDwCrTZQhqT0pktn8jZDQnwzu1MxtxyCeMZ1ILtZxoVDo7OwEgJQGxYZb96VcxighXAiPcy5uqhdSIgyAAAMiuFW+CUIAN6sMAEBr9mn5hEz2dRCMKcYSEIBkLfeAFFJ6THhccC64kAgjKcHj/CYxhFSF6irVFEowXq9anudFY/HR8b1evTQdQ9QfDgibS7nT9PpjejgaM2hwcXFxdHTUF43XNm7MDPXIm7M+VinRFEoxRhiplAR0NairQV3VNaWlH9+McrgVTiqlrZwm9+3p0xVKCZESGOdSylbcEYwIRqTlAgCCsZSyFWwYY0IwRkjIVi0SlhJMJpOpVGq7ZsVS6c1yY26r7A8GY0F/GLFC3TJBqUpNUZStra2evv7c6mJfV7qVlJRgQOjWiI4xFq3EuJkbAACtWZNghBGSEoQUQshWeuCm7VabVt20Hc/jQvBWQknJhRQShJSAgFKiEKJSihEWUggpHI9Zjsc4xwgphFSr1UQiEY/HHccpbCzbth0J+muM5GpmXarJAE1iG4prDz30kKIotVpNw1IKKaRkXNxUQgklWKG4tRBSuozbLnM95jLuceEybtqeYTuW6zEuJEghgXFBfapCKW7Bbs3chLSyGYQQT//Zf2uF3bFjxwDg+PHjt9a3SzweP3fu3Kc+9amdnZ0G0kNC5PI7gxFFCAFECevIdryZqFw6d/Lo0aOvv/66CHc/++d/dYeSW2qPHz9++/pH3/6fEgAjRBUMQFrlmwvR6msoFovdoaiFsqXx1vpeHG5t/sVf/MXc3Nxn/vjTJ//P1+PIalZLdYfruh6Kp5xGJd3Tv7x0Y76Otl3l6NGjP/zhD7/97W/D3eSuNG6/0B2Q8F21/P5yi9Ubb7wRCAR++cavtEYuLoy5grVScdo1ubad7+nsKNabDRIMuHXq1FdWVqanp1966aXdnmyput1Gt1vzdvS3/kWxWGx3YNzhxNvh7vZJS1Kp1MzMjGman4DF1UJ9o+ZsN9xUQNnfFa1F+oRRqeW32oJawaNzsu2xxx6bn58/e/bsHZe4AzTcO3Rv7UE/+MEPdgO6q/s+4gL79wxubG5OHjg8PDz8wFhv7o1/TqHmv94oT6T8616gwmkSmdFg4O3lfCQUfGejkujoqVQq//AP//B7Gu4Ouf2U3yFwh43v6uLd2o8dO3ZgqOvG+mbf6MTDjzyay+WeevDg5ju/LG6uBYamEl39J0+egErWaVR7ovpC0WKIyHj3ar7y9a9//a62281q9wG3zrqZxB9B/SPC5tZZD431bq2v1P3tn/zkJzVNC1O5cfW9I/vHVxt8MVfdt2ewsr1uLpyLUbbpKE3LvpRrdo/u++CDD+644r08fFdirZ0femD3f3eNorvKv/7jfzcrhXcLfM+B+4eHhyORSO7Mj5uWPRnFDRryxVMn3n1/KCC36k7Cr1woeDOTe69k63/913/9b+LbzeEOy35UCP2brG4p/c3xv728Y1GjWAz3v/DCC9euXVtbnB+ozeWrxv2jPfOWz2Ms5FRXc8X2oFK2eRmHN1ytVqt985vf/Ah8sMs5u5HcJYR2q7uD1W6rvPK//mo+V0GcN0xr7P4nxsfHz5w589BYd7o0lzVYTvhr9Xo7dVRF2S43NIUWPGoJtMPUv//7v//9zXRXuYsHdqP/CO3Hjx//2te+NpHUB1Uzu5mZK5g7EPjCn325UqnU6/VgedUqbqZCvpW19cGBgeWNTL5m1R3GJWgKvWHrjuN8tKV2G+sOPL+XB+6q+tbxB/f07x/oqNy4pEguCN2uNEc/9R8B4PLly319fX2rv9puuD6Ku9riK01ULeRMj69WnJGEnsHJiiMOHz584cKFQ4cOaZrGOc9kMhcvXrwX4t307vTAbqy7i+kttul0+hN/8IS2s7CV23l4pOPX5y68s2lEdZKcOCIx7e/v39zcHIpQWD5HMVIpyTrEti3XYw4TsYCec+nbq8UvfvGL8Xi8v78/n89v35jr7unZLDcymYyqqp7n+f3+3t7eBx54YLcr4FYZvdeItjuBbif23X988XEtf4EOPLSnMwCes33jg9Xt0+s1lWCHi70Pfrx7YKhUKkUam8HCwlzBCmkk7qNMSJWgisUsgSK6crnpi/cOR0VzMsTAqtvUX/RItVode+hoR0/f7C/e/PznP//yyy+//fbbsEtaYD4kcC8P3MHh8ccfTwfoytIiFlwyb+rIA23xmL59tZZdv5YpKQTlDM/hwot0RimfPHC4Dppq7IS2LkkJhssv55tDMR0BhELBqs3Xay6T0BkPMYkaDSMV8fd0tDeUSGz0IELo+PHjBw8edF13dXX17/7u7+4K8u5JfFfRNO0TTzxenHsXQKqE6OB97JnnP8jWus2NYc3aKtUalRKoPsMwFkpWwqcEonHaPf6JZz516vXXEqLRrJaalv3L67mDHUGiqoFE2q6VbdPYdLUwZt3JSN6GwanDlxZWJmYOnT9//sknn0QInT9/PruysJItwj1Kyz2T+PYTXn311cHBwfXVlczm5gCut1FPDUbsoQcymcxzzz1nXztFQrHm2py3vegpfmYaTZetlZsj7dEmDYb7xjObm1gKx2PJzh6yet5yHKaHEVUV4ZYNW6e4DjoQOhDTt+p2euohRn1+v//73//+wYMHr71zOhkNLeTrdwV25zC320GvvPJKMpmcmpo6/ZP/F7DLwWisNx7Y8HyFcjU9NhMKhY7sG/vBd7525KGHy+ffAIRMLeYyRq1arVpuODwdVCs0EukdSXX1vXPm9MT+qbOnTo7Hac2FWCxWLuS0YFRtFhRKpR4SjukE2ozU2MDAwKlTpxYWFlRVTWGr1ye+8Lf/G+5W4gGA3it+Tpw4cfHixbGhAdWp1QvZhmkf3DtaXV+sbmR7xg7pEEJGIc1z599c6m5PitJmHfn8WKxkC0Oj45qp7BSLFZthBL17uww9sr2ZSYT9mwvXDgx22B6jrCJr+e7e/m2S8E083NXb9+vXvrd3z76e6cdeeumlXC4HALFYzFffoqGU4ZRvN/wdVZW88cYbs7Ozzz77LADMzs5OTU2Nj4+Hw2EFRKFUdrlgQOYvXUjLeq2QWyk2LlZx994DilUpXjkT7duzvbXZpbhr2/mYX1ktNso4ONDdUd1cDao4SABjxBoVAPBHotcvvpcKqg5W1Hpe8fkjbemyYfkSHZWVayffevPpL37p8nr+9ddfv++++4LBYDabbdZrus+3Uqg/3h8eeODobhO3AP9OCL344otPP/3066+/Pjw8XKvV3nvvveeff/79999vi4UZEErp0tLS/v37G43G6GCfu/BOVBHtGqxUrEgsHkm2Zy0I+fWLly71JKP5rUxCFSBBC0XUZBf1hQI+TTqmU86XcxkGGELJulDbpx82DKNRKX6wsPTMM8/88pe/RAgRQkzTlI4pOUONQtf49HtXr98ricmf/MmftFaTk5NXr16tVquaprV+9+/fPzg42Gg0qKpNTExkMpmxsbG1tTWd4rkL77DkwPTMzPrSQocuCjiyVvcCVNZKhWHVjAZ9yVikjgPn8nY0oO/rSZab9ur2jqkn1rI7oyFJFKUR6u4++OjW1paUsm9g0PO8np6eRCJRr9cPjPRurS07Rn2or3s0yJaqXs2w7gj9Z38rH4bQT3/6U4zx/v37CSGf+9znTNMcHx8/d+7c3r17bdsWQqiqyhjb2dnJ5nf+6N//B6NeE0Ismcq23vnra8sBTcFWLUKFrioXSoL1HpCxzsmpaTOz2LRdmuwpK3HmWIJ58aHJ62tbbttQy0yFQiGdTufzedu2r1y5Us/cWN3KOaYZoaLiYgtosW5/6zv/dOzYsVac35G0HzayTCazcek36w2m6/qjjz66vr6ez+cHBwej0eibb75ZKBTuv//+TCYTCAQSiUQ2m+2J6KcvzT/55JO/+tWvVldX77vvvlKplEqlstnsE0880d7ePjs7OzMzU1iZ7/GJSjZjcNRx/zMbGxtbW1sBXU1EI7ZtbxXKjLHx8fE333yzq6srl8vp9e1w93CjsJ0gXiMx3BYN6YHQ6TNnd5fKmyH08ssvt1Zra2vR2hoSvL425xCf6biNRuOtt94SQhw6dGhkZCSXyxWLxcOHD2cyma6urrXszuDg4Pz8/N69e5+cHvEFw+9fubazs/PII4/kr7+vqarpcZ/Pp65dSEjDtJ2LVmhubi4ajSqKovsD756/MHPosGEYPT095XJ5dXU1Ho/T4qrD+JEnn/GKW7FEW40hw3ZdjxUKhQ+fjN5Wgp599tkPc+Ctt97yFxZLlepYwFWyc7VClhc2ph5/ZnNzU1XVQqGwvr4upTQMo62t7dVXX/3kJz9ZrVbb2to8z1vNV/bPHIzH47ZpQHEjxutnl3cS8Vhtc8ku55odEzm1PRAIxGIxSqmu69lslhBy+PBhSumlS5eklLVazahVu3wwntTOLm7VbI97TsNyrabBJDz//POf+9znPvvZz87Ozt5eUuH2TvzSSy8NW6uKa5QsrysWcn0xDQnkj5STY6VSSdO0TCazb9++crn8yCOPFAqFUqkkpaSUep43MjLieV6hUHjwwQdffPHFzs7OWrloG/WgV2d6ZD6Tbz1x2bNnTzIcePPXb6dSKU3Ttra2QqFQvV7fWPggQhgEoh6XBwLmuzlb+GPD7ZFKpbJerCc6eo4ePTo0NJRMJimlt6K/xYH4fL5WUv/Lv/zLnpBUKNWA01AiqCvxeGwpky2u34jxetCvx33k8L7xxsK51XMnebQzn8+3cAwNDV24cAEhdOLEiaGhoY6OjlOnTk3NHKg1rWj3ECeqaZqdnZ22bXPOVzc2R0ZGRkZGarVatVq9fu0Ka9aTYZ+iUByMCc7sUBqrOqllgXkNJewLx44cOdLf359MJjVNu72Gzs7Ozs7OkpdffrmV3T//+c97qRkAT6o+D7DJJNiNBoPOsC8pG36VtsdCNy6+k83v9EX1dGfXB+tZP+JX5q6bpjk6Orq2tjY1NfX+++/HYjFFUb785S9fvXrVsqzOzs6nnnrq5MmTk5OT2Wx2bGyMc14oFIaHh1955ZWJEE/piMQ6h/eMzc/PY1+4kV2LJRJ2vZKvW4Vqo1Aqz8/Pnzlz5jOf+czt/evW+sNGdurUqcGNk/mG7bkOSvRompq5fpVgFGlLc8uw9LjRqKfAuLDd2Jfyny/wqcFOjSCMEffHNzIZwERt6504eIQblUunfpGcvN+27QceeGB9fb1Wqw0MDDQajeHh4Uwm86Mf/cjv9+u6ns/nfdXMQCJwJucNDAxYRsMD3OHkCjTeMK1auWQw0DSNkJsvWm5F/+39+MNZ6MqVK5Gov1zNp8J+tZmlFhpKBq/nG51YrFTrPs3p9SucgemJkEYe7lZdLKG+o+l6U+JhxQipxOerb516ZatidPsJKS2XIDo/P9/b2xsKhfx+f6VS+dnPfvb0009/9atfffXVV5eWlsx6RcU0Y6EOxc0VSpr0ABNHIttxqS9osJKiKL99ufE7Jej2pvZhI7tw4UIkFh+PQEMqGc83NnXArpW4a+crDSEhFdQ8zwWAuI/GUh1qLMUsQ1c1U9KIaK6WmumgakW6p4d7GrkNPwETFJMjCai6Olfc2Tnz7vnp6ent7e333ntveXl5fX09l8uN+pyu9raqYQlALvU36jVKaaqrx2w2M1vZ5/7o3y0vL7fMf1fod1YhAHj5n74x0Rm7nq8Pjk0MjO+/+Pr/jddWbSYUf7CG/O2imq3Z3e3JrN5pehzKmx26pIIR3T/kZ9dloigDbmHjQFQWLbbmaIen9619cMFH8OpOBbcP5VA4nU4HAoGurq4f/vCHkUbGAaVpmmNtgctlEaEcpQat3Jpt1FAgTkOxo0eP9vf3JxIJXdfhHrP0zSp0a28iFt24MR/y6u9cu1Ft2l067/aJxXyN6gHEXV883dkW8xplo5iNelWDIxptR2Z1sS7VWLtl26newcGONgySBiJNPVGrVT0meLMa8SnjCU3kl89vlGyX6bpeqVSq2Yyn+ELSnuxp26y7aiheajQDutZkoEUS999/f2s0CgQCLWzPPvvs7G/l9pniwyS2LOvs2bO+zMVCbqsuVaH4ekfGuyvz2zvF1apzZLhzrc6Cwuxvj/sUki9V8qZAqf5mPmNy1LP/iC+SWL6xyHJLUwfvY5vzl9d3mOt8YqKnUq3uGM5qxXm0P/yO6B478uhPf/rTcrk8ROpLtjYR9JZdvw5eaniyuLEUisZrNpuYmBgfH+/q6opEIrcXfribtL7/ENVqdWVlZXZ2NhL0TUZxhBmjEXLjg6s8nO5JpwhCi5s7bZEgcLawXXZ6prdcRQjBm7X+rg5MqSfg7XPvtQ2M7v3YY7liuSr1Tl0ikBtlw6fr3SF1IuW7lGu6vtjly5cJIX6/H2n+QChM9YBf1zBVsPCM0s6luYWFhYWf/exnsVjM7/ffQv8Rgl577bVarbaxsXHt2rWrV6+OJvRIM1u1WKy9Y+zBj6NSplrITrb5FvJ1yZnPMwxQMVVLUgvyZjIcWNgsdAVpDbRLeSsUjXnNel9neiKpsa2FssWElKo/ROOdueU5n4LFwT9aWFp5/PHHv//976c06fpivLDBm9UiBGampy9dvbqZK6iq2krcW7l71/v1DwlEo1EhxAsvvLC4uHj27NkQ8qZiMFdhT+xJX1zZbhue/NhoT2llbqUhD7brXrM2v11puKI/Fc27dKQtaJZyQtF90tlIHfKwktRkorGxWai6Zv2hofZitVY1PSUUDTCjySDxxOdXcuWtra1IJDI3N9doNGZmZkJLp6uRvvMrOatpGKZFaeuDG3R76fyIVxYoFotJKYUQX/nKV1588UUhBGNstC2Yb1iDUTXU1lmp1cPSmkiHytLfJutLZeuB0d6aabdR73rJGUto6xWr4fDLFYH0wOjgwOGR7tqN97VAqKnHB1PRrSvvOkSPg4kQfGeZxOOJ++6771f/+nNXQK1WiyqyM6zVhLqeL1uOs7ttwT2e7N75WOU73/mO4zimaTYajXq9/o1vfKPFJBHyD7dHpdUgGO3ULb+CozqZHupJUpdyV2KSaUpdOEzIhZJleWJ6emr+xkoi5FMJDgYCW7n8od4YEcxmoir1cse0ZVmTk5MLCwtWKTd3/Xoce9mqYSA93dm1urp6R/B8BIEPPXD7PbEQwnVdx3EMw2g0GrVa7Vvf+tbHP/7x5eXl6saNoIp1igMqicSTD/ZFkV2faxCfU20PKIsluy3km0ioZUa3HNKnmD+5XvpYbxT7Qv5YGwVp1ivStX7DOp566qnXXnstFo1sry491iZO5ERXRH/uP33l3XffHRkZSafT0Wj0hRde+D3R30ngljDGWkz+8i//shVgn/70p69cucIYq2SWMMYAaH9Kt6k/rYMqHAXjQDAQDYcd0zBcTpl9OW8Otsf9oXBDqnvCUITgRt0dOvRwsVi0bXt7M7N2+Z3p9sCZPJMI9w+NPPzww93d3YlEIhgMfjTi2+XYsWN3r1OU0i996UsANz+7wxj/+Mc/llL+6Z/+aam0/8qVKwBwfm3RrzSzquJTiErJOOU7jtEfIv0BfnrNZkLq3ArZrtTbLhfk/ocOWDVrfX09kUicOHFC13VdUeaK1kg6VcXBmZmZRCIRiURaTfd2fP+mK+75ZO6OPfJ3RQjRSpL/fLjz9bm8wwST8Mf7OmPxeNyvLK6sA4AnRGd7u7CNgpaq1erJmcdUVbUsa3Nzs7q9liuUVG7TZM/U1NTQ0FA6nY5EIq2bk3th2M3k2LFj/x/eBmuknq3algAAAABJRU5ErkJggg==", "name": "TEX3D_Paint_Edges_Generic", "parameters": { "f": 0.5, "h": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "float $(name_uv)_sdfa=$sdfa($uv.xyz);\nfloat $(name_uv)_sdfb=$sdfb($uv.xyz);\nvec3 $(name_uv)_b=$texb(vec4($uv.xyz,1.0));\nfloat $(name_uv)_sdfdiff=$(name_uv)_sdfb-$(name_uv)_sdfa+$h*0.1;\nvec3 $(name_uv)_tex=($(name_uv)_sdfdiff>0.0)?\nmix($(name_uv)_b,$texa(vec4($uv.xyz,1.0)),clamp($(name_uv)_sdfdiff*$f*100.0,0.0,1.0)):\nmix($(name_uv)_b,$texc(vec4($uv.xyz,1.0)),clamp(-$(name_uv)_sdfdiff*$f*100.,0.0,1.0));", "global": "", "inputs": [ { "default": "0.0", "function": true, "label": "Base SDF", "longdesc": "Main SDF goes here, adding a small SDF blur can help to avoid hard edges", "name": "sdfa", "shortdesc": "Main SDF", "type": "sdf3d" }, { "default": "0.0", "function": true, "label": "Modified SDF", "longdesc": "Modified SDF goes here, typically is the Base SDF with Blur, using the SDF Blur node.", "name": "sdfb", "shortdesc": "Modified SDF", "type": "sdf3d" }, { "default": "vec3(0.7)", "function": true, "label": "Tex Bump ", "longdesc": "Bump Texture, where the SDF difference is negative", "name": "texa", "shortdesc": "Bump Texture", "type": "tex3d" }, { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "Tex Surface", "longdesc": "Surface Texture, where the SDF difference is close to zero", "name": "texb", "shortdesc": "Surface Texture", "type": "tex3d" }, { "default": "vec3(0.2)", "function": true, "label": "Tex Hole", "longdesc": "Hole Texture, where the SDF difference is positive", "name": "texc", "shortdesc": "Hole Texture", "type": "tex3d" } ], "instance": "", "longdesc": "Creates a TEX3D by comparing the base SDF and a modified version of the base SDF.\nTypically the modified version is a soft version of the base version, which can be done using the Node SDF Blur\nObject colors are modified based on the difference of the two SDFs, with a texture for surface where the two SDFs are equal, a texture for holes where the difference is negative, and a texture for bumps where the difference is positive.\n\nCode - PauloFalcao", "name": "TEX3D Paint Edges Generic", "outputs": [ { "tex3d": "$(name_uv)_tex", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0.0, "label": "Color Contrast", "max": 1.0, "min": 0.0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Color Shift", "max": 1.0, "min": -1.0, "name": "h", "shortdesc": "Shift difference between Textures", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Paint Edges Generic" }, "shortdesc": "", "tree_item": "PF/TEX3D/Op/Paint Edges Generic", "type": "shader" }, { "display_name": "SDF3D to TEX3D", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAADxlJREFUeJytW1usXkUV/tbM/OdKAuKlKDV4SUPEWEMkIoEnQhoTY0AgAV5In5CYeH7FFzBeEgMJL4bs8+SDBBIlVBtqIaFNubQ02kMsiGCxgr1LT6Q0WG3KoXTvmfFhbmtmz/5PMQ5M9/7/f1/m+9Za31ozex96/IltFnD/j8djAIAFsNg0KJsFMF5YAAA0A79ne7Z3CABgYTzGYtNUfw5jgB9DeQz/nYpxLPjfqDgnHMPPdQcR6BNr10UCai1+bfsH8JuPx+OcAAs0i012EU5weX4YUwBRM0BogcBJbdIxGYmbnthm3U0TCXxg3Oq8cXA5sJzMZrHBeGGcnVsSFayR/i3vtegGXhtHAXKBWxkWTbNYvWYYc0ZA0yz2AAy1Hgh281p4lADCMeE6wfo99/Xgy/PL1jQNoiF7bZhcHwIJSLRsvGluvRJcsHo4bgg8ACyMF9w9Bo45deoUPnLxxYPnpzHVdcgWv8cxMxJ5mBEAWrN2XRbdTdN492DfTvAIW34KYbTYDMY+97ZTp/4dLUNEICL869QpPPTQQxWicrEuQ7Vs44WFDDxv8Z5r1q6zQxapxRMHmalqMYig4DW3vecH97DLOBEgOAJABOGJePfdd/HLhx92RmHXKUl340qfS68FUCVivLDgNKAPvQ5q6IhJ7h9I+Pbdd8NaC2stELZFCx4QuhACJATeOXEC1153XSShpj8OYB08b83iYkYmbdqyLRnCt4Xx5LjnbVJdAAAvvfwyrDEw1sJa47LpBAK4B5AQEIIgSEAIgbfffhsbNmzIUm66b157lN4ZwJdjdyFQsBJaOcSQV8u0md2kabC0tARtDIzWMNbAGAtrTPQAa607lZFARHEbwXsv4F1KieXlZezctSuOpz+M9M14YTxRB2jTlu0RyST3aTLw7Eb+Xrfcegu01tDaAzcm7zYnwZ3NSKSkA0MESCnjVkqJt44fx4tLS4Pex8cajilTYSKg4jqTL2xx87duhtYandYevIYJW2OgjXHu73vuAX0PqmlAjwApIYWAVApSSigpcezAPvxp34F6yZtMBaBfYap093TUpJi3AG668UZ0XYeV99+H7rqMgEiCKTyh8IAyBEAuF1At/j3oCF5KSCWhpCPhk5ddjps+/0X8YvFB3D2+tzruYPmSHNq0Zbs9nxJz9+7d6Lqu37WG7rqMAF0joCaEkVLy1bC3fBkCnADfVdgqBaUUpN8qpfDmvr34zvfum1w6h8nQmlgJ5lYGgNtuuw1d26LrOrRdF/dL8J3uoDtdIUHD6IoOePePmaC0fsX9HfgQ/8oRoNxWMfBqpKDUCCOl8MKzT+FnD6YaIlW5SQlUCfqO228HALRdhw/OnkXbtejaIQIc8EmeUIoh14HcFz0JLO2V8c+7s7oLg4wArTBSGlopXHf9N7Br5878JsWnWApv3LgRXduiDT0Ajx7gPlfDoCCg053XApOTYA2sqRPgLA8QiUSCFJBC9ghQQQCVqvbRaOS9wXnCaDSCGils2bIFAGVCSD/86YOWg27bLhHxIUnQWsftUBhYrgNsLujAUyJACBf3IgAXkFJNJmCkMFKjjAQHPhExGo2wefPmqAfqXHsObQDJPYATUGx7ZOjOaUGnoXXYlmGgYYxNXlCkwRT7jgRndU6AhJQaSkloo6GkKgTWkxvuEYlm5Tfc/q233orRaITxeAzVnguWbxkJXfocvKK3dfvJA4L1ExGhMOJeYH1l2KskGQEp9vO4l0rCGAVlLKwyGUA+x0jkWpZp+6TfcccdUF3XOUv6HsF3CXwMgSiCq5PgwiGEgPMChG4t+gUswYKghYD2kyApNYyRvisHmGmIx+yv1ZvSVLQvpNv0k8oBTOptBXDtXN3zAmgDGA3A+G7BB+312HUjACNghUBnpJtHRNHkFs2cJ9eSYuvKbIpC638BEUEFqyUh873ThSunnn3vj+vY8VEIOw1oDdgAPmzLxlEJ140ArIWBRZeZkljGoPPsIs0wY6XpCYiAyyJGaxhT++wFTZsU36zHeYDWzupWM+A18GULHgLAEqAJhjS0doCN4V3Hfa2DeGpoXduG35nQkoDSHkgCYJJqB+EqZ3Zedd2+Zd87VzUhzg139fMBzz3COItbAgzBCuHvZftj8d+ncWoYLWAGydAQQrh9B5zn6QA6payQVhzAlG7yVOMGHvctB38ey8yrUcKv58XP+nLajSGU2t4IYR3CVoxnktFFOsgykNZPXCb0HjC+uAFkwhb7h2ll2VqeXyM25fpIDDNUjRBR5tJccQNQnm4qQw3CwiY0EL7/TwQIf7yAV7t0Xc9N3Gd8JI9IQy0JMQUhKpwEBjybqSHe0yeP/syNK6uwwrFOFkaEUaUrZCLXpzIBD93XBEG1BSMikB5JYWzkwFnNYHNCVAS8WpxGQ/anrdYYtw0XlhbpPwDai1m8SL0QygigAF5ms0ISwhMh8nToGYieOBAyOTGAqoIfyLFhgcIIA2EogRYCkpWjoVohAJoIhpySwxBgxWQCvMsHy/OVoJyItHDSHysKMoaahRqyfLZA6cEbIUDB2kJARItLWAAyu4A/V2sYIWI6tYygfEksga+uB/IVoThTFHHtIBJS9MxrKzjVYDyTAJGJgzEecLS6lJCZxfMlbtIaxlvfpSSRxWRaEkuEDy6JefCciNTz8BAk4rlcMwhMTJlXKKYhhbUpuTmLcZnFukwgYo3t3J6InLfUFkSz9cB4cqrfY6WWng7JkojCE9I+MTJYiIgyRHwpXItzI4QbuBAQxvbcPXN1bj1oB54XVnExtGL9IgSGvIDKUKgslGZekXmEJ4QqIQIwAjLQJrq8lQbWitzdeRwX7ktGwxiRg1/lqVDmQVHZ06AjmPPVhbLTsGCqsAhhTCIhs7iVsDIvapPbM5c3Gkb7mBc+5getH1JvD3+/xsi8oFgwjV7g1w4LMmRJHCMzhIUSRDAkIIS3lI9xUQy6FDtiBFAQO8qXv8tFUG79/vIFDwGegURPFIl7QBkOXCRrXhG9yl1bUbA2A2+t7Sl8TeyIKMZ8FLyMAD5hYhVnLQQKQjMtmOQJYd0w8wSeLcr6IWULQd4DLFEGPswBynIlvlUBim5P2mWM6PL8CVBp/QJ8+pflaEZCPRSI5f5SDzgZMq4qc2EsiVBiEvDeBMiXm5r6bu/jXnjB67l/WM5iGjDkAVkYFGkxEFB9gLKaN1RCIicguHqcz+fxGV2enOVJEMgQhFd9E3TEWvYcMNXduQD2S+FSCFHTgqoeFCvJVZFMIcFJSBpgc/BZiRIrSmLW8emSjJ8bCG91USEAbMm6DIFiolyEQCKBE9D3gnqtMBAS7BglhEiWQR18sE8YVHT9MBgjYIT1KdQWBHDwzPrVEECa1fG1hVIQV0uPRViEx2tZlggEfOnyy7DvjaPR+quB783/TZgd2iikxhrvVSKuLfQI4C5Q3KtOANgUmHlBDIUBEmTwipIEASEV1N8PHMCaNWtx4sSJOKIPD17AirR2KGw58UFGgMPer4Qo3bQgoJyZimoohGeKdXHkJAi0K6ewf/9+qNOnT+Ps2YOQ0xfykZwfeDIQ1pFgrXVElBllEgGFEBDbqQphzAg5EbHWFxNIYJqwfPQNnDx5EoCfC7Rti6uuWoc/v34gekAaQIUAS7BkQYJy4KKW933xU8R+jYAyBLJFjSFDFN6wWjjseWEH5ubmouOp6elpnD17Fnv37sXnLv8y3nrrH3FxJnTDrVC6vrXRA3oLqwXwRADLOLyxMKAwZc0mSFwQK3owoUYYTY2w+7mnYa3FmTNnMD8/78597LdP2ue2b4W1FtPT01AzF1UfgNjwQCIWOPk6/ODSeUiDoRCqxT/ngOXdXhj0JkplKPh0WXjB9MwMdu54MhkG7noXXHCBWxO84es34ZltW9C2La644lM4cOSf6SbGbS1ZdxNLMOQUXlhf/JREcLcPc4nzAN/3gn5GIO6Nvj6Y6AVS9cCHtrKyAvrYJZ+xTdNg5zNPQWuNqakpfGH91Th06EDP6qZa5vLKLwceifDunoMfKoYKDVjNCyJ4TwYjwBhgzwvbe+CjiAqRXpK6fsM38ez2rei6Dgf/9ooLBb8m6ETPONEzNoqg9bm+nD5nOZ/PJlngFzwwEXT/hlDItSDXAZ4VSjFcOf0OXnrpparlA/h7f3S/8wALG9+fe277VkxNTWH9+vU4ePRt5I+UktUnxn819mvCV5trIgffI4F9zirERMChN17D8ePHo8dWwf/4fvf5o5dcFk3SLDbYueMpzM/PY3Z2Fuuu+Ar27389e1C6KgGVtFe6fs/6FQ/oh0GfhFILpJT4457ncebMmTwbDYAH3POnNBALbN26FQDQti2OHviLfx2Vv6Ymsjc2y3d4lH+RMXub0//GX3J0LziyLsOrr+n9v3g9xV+OTNfh956ZmcHepZ2w1mJubm4w7jl4R4A/pvn5A0B3BgDw2GOPQWuNtm3x2U9/3NfPBdjKC0z9z2rC4FUBQhUkJjKVLK5d9JnZOezZvSOzOi92Avj7fvIAyqYA9v6sJyCc1HUdlpeXceWV1+C1V1/xak8g//Cz7vqV2K8p/+BskIeA209a0N+3EPjDrr7SA4jFzsrKShU8ANCvN21NNWn3Hqy18Y3qO++8E1NTU5ifn4cRs/jg3LnzEL5J4pcGOIA/Y2I1As51Gi8vPe8MU3kNN1j+8OHD6c/01Hy8y3hhHAhgwtQ6LxiPx9i4cSOICDMzM7j00kuxfOI/qL9PwAuePgEAel4w3PiMsCQAUQiXj72Jo0eP9v8OoYj7w4cPx89N04CI8N3v3xe/E6Uqz87Oxh8fffRRAEDXdTh58iSu/to1E2OxJ46qtq8mXqN8Hb7/vcLepZ04duxYBFsDf+TIkQx8MCoAkH4vERCN5M99v5WRLQB45JFHYIxB27b466sv4sILL/LLShxw/23unrj9H/r09Az27N6BrusGLU5EOHLkyKB/xfDwJIjcIx0TwQvi39kQxawwog8S4JKEMjOUFl3VC1ImKH+bm5vD00/+pge8FL5Dhw5VgTdNE/Esxj+isqBfPf67bGIeLjdF59C2bXSbu+66C1NTU5idncVXr70BS3t+n+J/qPIr1X+wCgytrAbdd6OpKWzd/KsodnNzc1nsh3bw4MFosBJ8dhciGOHS5H8Bagj+d19m1MAAAAAASUVORK5CYII=", "name": "SDF3D_to_TEX3D", "parameters": { }, "shader_model": { "code": "float o_$name_uv=$in($uv.xyz);", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Converts a SDF3D to a grayscale TEX3D\n\nCode - PauloFalcao", "name": "SDF3D to TEX3D", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "vec3(o_$name_uv,o_$name_uv,o_$name_uv)", "type": "tex3d" } ], "parameters": [] }, "shortdesc": "", "tree_item": "PF/TEX3D/Util/SDF3D to TEX3D", "type": "shader" }, { "display_name": "Triplanar to TEX3D by SDF", "icon_data": "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", "name": "Triplanar_to_TEX3D_by_SDF", "parameters": { }, "shader_model": { "code": "vec3 texx_$name_uv=$texx($uv.yz+0.5);\nvec3 texy_$name_uv=$texy($uv.xz+0.5);\nvec3 texz_$name_uv=$texz($uv.xy+0.5);", "global": "", "inputs": [ { "default": "vec3(1.0,0.0,0.0)", "function": true, "label": "TexX", "name": "texx", "type": "rgb" }, { "default": "vec3(0.0,1.0,0.0)", "function": true, "label": "TexY", "name": "texy", "type": "rgb" }, { "default": "vec3(0.0,0.0,1.0)", "function": true, "label": "TexZ", "name": "texz", "type": "rgb" }, { "default": "length($uv)-0.4", "function": true, "label": "SDF3D", "name": "sdf", "type": "sdf3d" } ], "instance": "//tetrahedron normal by PauloFalcao\n//https://www.shadertoy.com/view/XstGDS\nvec3 normal_$name(vec3 p){ \n const vec3 e=vec3(0.001,-0.001,0.0);\n float v1=$sdf(p+e.xyy);\n float v2=$sdf(p+e.yyx);\n float v3=$sdf(p+e.yxy);\n float v4=$sdf(p+e.xxx);\n return normalize(vec3(v4+v1-v3-v2,v3+v4-v1-v2,v2+v4-v3-v1));\n}", "longdesc": "Chooses a TEX3D based on normal\n\nCode - PauloFalcao", "name": "Triplanar to TEX3D by SDF", "outputs": [ { "tex3d": "abs(normal_$name($uv.xyz))*mat3(vec3(texx_$name_uv.x,texy_$name_uv.x,texz_$name_uv.x),vec3(texx_$name_uv.y,texy_$name_uv.y,texz_$name_uv.y),vec3(texx_$name_uv.z,texy_$name_uv.z,texz_$name_uv.z))", "type": "tex3d" } ], "parameters": [] }, "shortdesc": "", "tree_item": "PF/TEX3D/Util/Triplanar to TEX3D by SDF", "type": "shader" }, { "display_name": "Code", "generic_size": 1.0, "icon_data": "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", "name": "TEX3D_Code", "parameters": { "code": "$in1($uv)" }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec3(1.0)", "label": "", "name": "in#", "shortdesc": "TEX3D #", "type": "tex3d" } ], "instance": "", "longdesc": "Executes the code in the parameter\nExamples:\n$in1($uv)\nvec3(uv.x,uv.y,uv.z)\n\nCode - PauloFalcao", "name": "TEX3D Code", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$code", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0.5, "label": "", "longdesc": "Examples:\n$in1($uv)\nlength($uv)-0.4", "max": 1.0, "min": 0.0, "name": "code", "step": 0.1, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/TEX3D/Op/Code", "type": "shader" }, { "display_name": "360 HDRI Nimitz Sky", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAHkFJREFUeJyNm1msZdeZ139r2nufc+e6NQ8uV6UmT5U4dgank07SwSHpDIK0AhLQoSUkxANSK0g8IjkIkPqFB94ACfUDqEHQtHqAiChJR93QkKSTju3YKZfL5SrXPNzx3HPO3ntNPKy19zllbNRb2nXq7mmt9Q3/77/W9y3xm9/8lxEEQoAQYnYyO2L3G2N/hhCI3bUQ8cET8vVHz3wvBGKEGPMvkRjz12P+Tt/g3P/nDpH/Ecz6CanfCJBCIqVAComQAikEQkiUkkgpUVKilOrvCyHQxpi5QQuK/DdEhJCE4BFSPjLwNJj0fx8CzrnUO++JCGKMeO9x3icBeI917hHB+LnfecE+MmCRByFlHkw6pUwD6u6DQEqBVgrQCAVaKbTSecCiF4DWek7RoAtjcM7hnaMsS+qmIcZI3TQ457HO4pyjaS1CCJq2pTAarTRFYdBaAxHnPBD7gVnriDHivMd7T8zXm7bFOod3nhAD3nt8CMCs0zJrrNOgzJqOMc6EIARSql5ZZVGgtaYwhrIoEEKglCSEiBQCrTXGGMrCZEFBCAF949ZtAKSUnfUxqWsebm4y2hvjg6dpWrz3FEVBVRaURUlRGJSUSaMxYrSiMKb/8Gg8xjpLCLG3GOeSUELWdAihdzUhJVVZEmOkEIYIBCEQIhKyyxBnfiCEwBiNkoqiKIgIlFRIqbDOMayq/E5qz3mX3TVQFKmf2zu7aGMKnHPsjPYYT6fsjvaw1jGeTHrzlNkFpnWyCilVkp5WKKXw3jOdTnttCwHTuqFt237wCCiNwYfQ4w0IvPdorRBB0kqRMCIElFIYY5BSJq2WJVVZEWKACCFGBCCVpGlamqbGZ1ccVBXWWoaDAUopVFauECRrjLofhwaBUprt3T22dnaom4YQYueECCGIgFIaEJjCYJ1j1DRopTDZp5RKHZ1kvzdG45zF+9h3elrXvQ+GmNxCCIFzUJYKIngf8L7BGINSiuFgwPraGosLC0TSfessbWsJMaKkpCrTgL33KKWom6a3JkgWWBSGQVWhpKRpW0KING2L/vNXXqVu2hnOCoFSqpdwFwc6fPI++TII6tYyqRukEBnEkkmXZYFWirXVVeq6pm6aHlta2/Z+HLP7KOkJIWlESoExBT4EfIhIpSjHE8hA5n2gtW0OHhEli2x1goXhkMGgSq4lBNPpFO0Vy4uLDAdVwhepsM5z/dYN9sYTtFIaIRxKqySAGDHGZAQPfQzswpYPsZdsEopIPh3T3yFGmtbilUer5J8hhBkY5ggB2TUiuJjuGWMoigFKSWKI7OzuEDNAOu8QQqbvBI+SybQnkylaawZVRVkWKdRJhVIS7zyDQcWB9XUKk6z8+vUbvPHWVbRO0U7XrUUqBTGZelmU7FtdobUpbFnn8N7TWkvwOfzlzidwTppHCNIXAt4nwW2PRnjv58Kmn9lU7MCMHhid8wQf2BptAQkPlheX2Nkd0VqHyqEPQQI8AYUxeA+T6YTBoML7QGEMrW1x3jOta0bjCY8dPcq0tly+eo3xtMbacfrOwWMXX4oxobBSCm0MzieNlUVJDHBw/zrTuiXEGXh1v48eyVxSGBOE0IVHeiKUSE7sTTjOvRdj8ssOeI8fPYI2CXN88Fib/L4DWq0NAkGIScBKqv47ddOiczglwtbOLj97/RdIIWlbiw+BqqpQH7jwiZca65BCzSwhgjYFPkTOnjrJE2dOc/XG7Wz6CSeYG34fnUgsLGaNW+d61tc/1ce9+S/MhBlJQi6MYTKdUhYFUqn+e3vjMU3TUJiiD7NdeLXOZUBOz7dtAsaHW1vcvncfkS1mcWFIYQwhgm6tS2xJqkwlFUVhEEKyvrrCO7fv8+a1myAkShuE9xB89v2kCUEOS5ldBe96oERkexcSMU9/0w1AJD4RA1oXeOfwmTAppbj34CHLy8s982ybGiFkCnPDIZGIzxYrhKC1LVolDBBCsLG1Td00GG0oTMFgMEArTd1YYmzR+1aW2dod40NEZZQUUrOytMT2aEJZlgwGA5rWMplOCdKDc0DSrgBEACESyfAhEHuNJsbmY8y/Phu7mCk+qZynzl2gbhveuXmL0KaotLS4xPbOLuPJBGddAscIxuhsXTETuCSAvcxdvA8Mq6q3nO4wxlAVJVVZcvTQQYzZRq8sL1MUFfc3dzC6ACFZWVrk4hPnWVla4pVLl3nu6Se4eecOf/HaJVqbYmiIEZFPxNwZBQJJFBFi0qzIkw8y84vdwBEgIouLiywsLOC8x9qE9hEY5fDnnM+0OuQpR6AqyxxVoLU2yVNKvPdMptPEFLPWY4z5uyLR4bJEG4PWBr22ssSk3sSYApCURcm3f/efAvDf/uAyP798lbOnHucf/+aX+PzX/wlSqRSfI8QAKJE5Q4Y0AYiIiJIoAl1siP2AswRE7HHj4Pp+rt+8ycbWDgjJTGlZmJHZ9YwdIYLN/EVKgbUOYzRN29K0lqa1KTQWBc4HGmsZ7U2oygGFKSiKgmOHlxMVbloPSKpywBc+/fHeZL701XN86avnCNuAhpPHjnLpretIaVCKxBh9QAiFEDGdMRKF7MeaaHOK3ULITItjNoN0XH3nJgfW96GUxrnQYSwJRmT/nMj4W5ZVr9XWObRSxBiQShGC67mItZ6qssQQaVqHUi2t8yitMl5J9E9fv8qgqlheWkLrgreuvcm7D7kKfhtCFChtkHlmp1TM3D6CUDMwz5r6pec+xMPNh2xsbfNwa6fHCPFI8Es0u24srfX9gGfwIHo/Fvlvow1SanxssdZjbQLjEDtekPhLiCTcAHwIjMZTiu1dCmMwuuD2/S1k0wYmtWdcO7SCJ84/+f8IAECtQlmW/L1f+xxlUSKkJiIRQoNQCKlS54VE5N8fvvxzbt59yNbumAP79nFgfR9S6SwslS1HIZVO7yP7a919kHnam9qISKatpW5sP/tLDFTQWo/zgbp1hCiY1pbxpKZpLD5A03qsC7x+5SaXrl7j4P51pJBdhzTHDh3k05/49HsKACBEyZlTp9i/WiGkzuds8EKoHEUUAkniQIqF4QKHDuzj2JGDHNq/j/W1tf69sqr42Ieepiqr/tr8aYzpBSykRmtD03p296as79tH6yI+CkJIZ914jC4JUQISHwWDwYBBWbG2ssLayhKDUvD8M+cZDIZJAEJqpNSceuwxnn1u8L4C+MKnnuff/pc/5sVf+giPHdmfBCBm52PHDnHx/ONA6uyp48d49ukLPH/xSVaWlpBScejAflaWlxhUA04eO4wUkn2rKzz71Dm++JmPs7iw0FsIQuGCoCxL/saXXqQsCnwUIBQByds37vXKK6uKiCJESW09EYkxBqMNShkCklMnDjGeOkbjCSePHWXfygpSiE6Thv/98pX3HTzAZLrDN7/xRX7v+z+jbSd075ItQUrNxvYuCMXFJ85x4tgRhFDcvHufhWHFvtWVtMSGxwe4eW+Lc6dOcPTwAbZ2trl89RpGa4aDwSMW5j387PVLtA5kf71rNz1z8thhpDJU1YCPfvAppNS0DqZtZHtUsz1quXz9Pm29xfrqEsvL6/ynb/8Z6tiZX3lJqQJtShCGZ88+z4FD7+b46Xjm4gnGO5Ij60N+/vor7LUFf+crL+CaHR7sWDZ3xuyOLSC4v7nNc0+dR6tAB3fXb94khMi0bhlNkpYGpeLW3dtczytTG7sO50ncQUiU0hij2R037N+3zKR2GSvSefLYQT778We5dvMGo0lav0zh0PHk2VPcebiLjwIhNI0F5yMnjhykbgLv3NtBHT//4ktKFxSmRJuKP/uLN/j6V555Xyv4N7/9h7xxfYcLp0/w8ME1RLQcPHCU1aVFpo1nWtv8pOCFD52jrsc83Nxka2eXuw8eYn1gbwo+SIRUnDp+kBu3bzFpBHs1SGl6/z9+5CCDsqQwgs98/DkmU8fmzgQy+Eml8d6hRODZpy/yi6u30EpxYN8y9zcn3N/YRUiFUgYhkpsXRhK85czJo5w6cRz5zV9/EakKkAVPnz2BkMX7Dv7WVXjr7Su8/OYd/vint1DlAX7y2tt4Sq7f3WVr1CCUQaiCpcVlzp06gXOWjc1Nbt3bIKKZ1JbGK6QqEKrglSsP0hxeV0i90F9XumTSOC6cTrjys19c5taDHZQu+dwLzyJUwde/8AL7Vwq8q1kalglfloasLFbsW1sDadC6BKERyqB0wWCwwGgaeLC5w/mTa8gbN6+zMFzg4rmjXLq+hdQlP/qft95TADvbW7ggQZY8efow3/hrL4JZ47s/usLD3QapSqRKlrS0tIQkMhqPqVuHVhHrBVEuIlVFWQ5QumR1eYVTjz1OEBVSlYj8DWTBuA7cuf+A1eVFTh5e49kLx6iqAX/ykysoVfLjl19hNJ6itGY4KFHCsTiQnDp+mMWFBcqyYnFxCaFKPvORp1C6ZNSUOLWfa3cnvHzpCuoDFz71UrWwn7Onz3Lj3ogPnj3Mw4e3+NhHT/cD/9mf7/H9H7zGn776gNNHl3jrjuPm/T2Orztef/MKXq3x2WePMNrbZtIaEJKv/ZWPcvfeLd66fp2dvT3qNnD48An2rR1kuWo5eeIEShl+9ZPn2NrZ5d6ORKq0rL1vdYnawsJwyPqSpGlqWmsZTy3DhVVGU8dA7bBVL/NXP/lBrA88++QT3Lh9k5sbnr1pw+bI0nrF048P2Z4ort3ZQqgSpQvWlwsWzR7DwSLqwvN/66XDS1MOrgiev3CIew/ucPbkYf7oOy/z8D78zn/+E77yKxd57iNH+O3fuwJqiZXFgi9//AC/8/t/gFj+ECcPVdy9fYUHkzUeP+DZqUsWStjcuM1rl6/Q2MDXvvAiMbR87oWLPNhpKbTgzLEVrly/hlIFZrDOgfVVagu/fPEQbVuzUysmTWRYBg4fOMCwMkRRMW0cTq5SlSX37l7h5p27HDu0n6Z13NmRfOyZM7x2+RJFucTJwwuc/cAZdvcm/N0vP8crV3d58lhgdWUFKUAdeuobLw2XDvHDH34HH2BlsSAGy+bWJv/g73+az/7yBb73gze5fOk25WCFjY1bfONLz/Pv/uN/QAjNE4+t8NSZE4zHI9YXPZeub2CGBziyf4n1lZKHGxssrZ3kI8+c5aevvsreeJcYHHt7u5RFya0HO3zq+Yt85KnHOLiSrOf6/Qmf++hZHju8xsmDBQ82Ntje3eHW/Q1GtWIaF9FacuH0EW5ul+wbNFy9fg1Lxbnjyxw/uMJvfO1XOX9yFSkEb759jQ+cvsCDe29zf1yxtXGTqTjC7dEi4t//7t14/fKfsra6xu29ZTbrVT51QfPzG55/9s0z/Ivf+q+sLC1y+erbFMtnWd53gr/+wjr/6FvfIgqNUprTj59hZWWVO3fvsLn1gL/5tV+n2bvDeLzLD/7Pjxk1Bi0DRjRsTDSh2WBYVbjqNMLtsrN5AynBR8OZk8d57PAa79y+y7mTR7j01lu8cfU6gohafYrPf+I5Dq0anI/85I07tKNr/MavfZVv/evfZ3UouXfvOouF48D6Outrq4ynjrvNUY6vNiyVge2pQC2dY2tUc37/DurzX/zbL337e/+DvcmYs8fXGcd9vH31VZ48uUjJEi6W/OF3vo1QJU+cf5JhZfjuy5scXtM06hDFYJ3zZ87x47cSuxosHeS1V/8Xm7sT/vv3v8fdBxucPv9Rbm87Gn2Ei0+cp9KWGw+mfPLDT3D44Dpnz32YUOzn8SNrHDu4xju3bnFrso+buyW33nmds2ef5ssvvsg0LKJEw6uv/oiXbxu2N97GBc2lN39BGJzEq0Wa8X3WVtZ47APPcezEWd54UFKIMdff+inPXXyG3WlAKEPUQ5TfQ/zDf/6jqKRgwC5L66cplOKdKz/mQx/+DL6dUpRDopC0znP7znV2x2NicEgz5MY7bxKDY3n9GKO9PaKbMp5OqIarOe/nCD6RE+qH1E4yWNoPboINAq1LjHuIFwOCWcRORzjXsLRykEpHxi0QPW0zwRQLIASh3mRvb5fVg6f7WWKMETfZQJoBulxMU2M3xskBK2Vke+opigop0vS8GiwhhcBNtxC/9a++G4dVyUJZsFiVLFUFC6VhUBiMSvN66wK1dYzqlr26Za9uGNcNk6alblvq1tJaS+tsv/7vc9KjX5KaT/y+N9F89JittL7v0S8s/X+upTWJnBnOyVdjchLVGPTowVv4ooBhhR6WmEFJMSgpSoNUaW5unaeuLU3TUk8bRntTJk3LaNqkqWknBOdSaiuEtMafBdCt5Xcpt/5a10lBvwrU/b+rUQg5/9Bdm+Uj0vDiI/eZW01KglAyfcdojRQCoxVlUVAaTVUY9GjrLmMpCcsLjLYFS4OSqtCsLgxwPs2vpRQ4HxjXlp3JlMY6dic11nkmTUtjbU57OVrrkFLQtClRqaWkcR6jVU6fgcvL5kbJtGgh04h8iEjZpdmSCRRaMW1tSr+RcoHzieJAWnDtZBIiaClwIaKVJOaFkihS/UBUEhpNKwRTpdCu3qHQir3dKUoKmolioSzY3IwsDUqmje2FYF1gr26wzrM3mVK3Fi0lOg8+OgfOUzvHoDD4EAkuUCnJeNxS6JTOKqTAmJSjixGMUEyaFiMlWsj+u411tEqykLPKnRBb7zFK0ViLcx5BSs5qKRgYjUQQnEUEyaA0TJo2FVlEBV7gnKDQmugl+uHDuwxKk/x/WBGUZGJTUcJ0L0l32lqqwjBt2rS85DxFdNRtzahtGRhDKQWlhjpYtPBIbxE5e9u2jpJAJTRGpYE7F6m0JhBpasdQKVrniV6woGSuOUiW0EzGCMABOuf8lNEMlWRYJLNvnadQCmyTluG9ByGonUCJtHTftrFPmojC4EJAL2lLdJbNzR0mewYpwGiFUSlTGyI475mopCWRBRLz0rghdXB5mLKyJgRCsDRNxgApKbRkwSictwQPPq/pjyaB0mgGWqMQGBlZqEp8cExby6RpGRYFWgWkSKvP1nl0CAgrcTYJJISADBEfBFpKBkYztWnFeFynFNnqwoCi0uyMRzTWU1BSaY1uJtspV24d7QQOry2jUUQXsT6k/JoP1HVgYBQhRFrXoFVCVSHACk8Ra6bWgvcoHxhIaK1DC0mBRkfJ0KRw6n3LsDRMQkuwDYUuET6B3GRvTKE12geGwiO9w9apZsH1RVeBxUGZagtswIXAQllAFLjWE4JC+RSFBiIQQ2S8V7PrAwiQgPaBUhv0oQXJnc1dpHNMG8uNepfSaFSu0QkxUmiFVpKSklIppPH4YGlbnzPIHtfIZKY2pbYKrdESCqUQpCiCUiwPSha1ZNJMwTYQA0UFhVZY7ym0wKhIkBEMNLZhcVGxORpDcFRFWvXFT1gZDnA+pOjTtsQIhZJEC4UULC9UxKioW8vGaI8QMogSaact+4cr6I3tbbQAZESVKewNjKA0itG0wWTQKrSkbWvqXHwghQAfKJRkaaFgNG3Yy2GxMhpdJIEQI/c3RtTWsbY4xLY1RqfkSqliqjKRHiVg0tYADBeHFFoxrlsWiuRCpRrSWk/rHK2LKbxFhyIgo6M0CucDRqVwuFAVDEvNuG6Q0bFSaWJMkcGHiBTwYGsbvbU3pdAqxUeTyE9XFlMVhiInEUKIDAuD9YFJ3VAYTST5ZBfb9+qm5wNdyNJz5WwPd/cotGahKhgUJg1CCBrrCCFhT2XS9a7wqqs+UVKwtjjAep+XvVNRhgvp2camXKXzASVTvO9qkQqtGZQFw9JQt47RNIXw1nm0DwHrUwwuTSTGlGOvCp1DTTLpQVGwO6n7okMhwOQCJOtyXZBStCIBXGNdX9A4bW36W4g+i2u9pzIpv58yxAIRJS4EpBeJTPnQd1RJwbDyFFqjpMC7ZIlVYWidT+6aOaCSScvOzyrYtJL9cwtVyf3tEZPGZusXiQCVRlNbmyoxcvWG0QoctM71luJ8oLU+MzPQWrK1lwobqsLkXH1AKQm5PAbAKMnKwoBCK3wIfVtSCEqt+pTWuO4YI5lupzAcgVDEbMKJ9E4bS2UMlTHU1vZsT+SQ2eFYKs0J2JxKdz4t1uqyMCxUBUYpIkmLMUstxJjLYkAp0Ut80rS4THcjULeWaWtzji51sLEOLJRGU2idQmvvajrTXoF1nkIrJq3NpQQp+sSM9rbTbv4bSAsZMrnpoDSEELO5m74krir0XEZZ4EPEet/XOFWFTuA+KExKOYfAsCx602udQwqJkgKtUodb69gJgca63jRb5/MEKPQVna1zvf+KXB/YTUyUTIPuLEXJZJpGydRutpZpxhKAQutMkelJWczkvwO27ltCJBdorOvnBCFG6saitQJS2EyWB1opmTsms5kmf+nmVV1OvsmD7VLSdesSeGVyIgTIIHPFSBqk0QqZJywyA1OMYHQufxUCrcC61EnrPc55XNZ016dI7CdHRkmGhUEp2QNwxxEAgg+0eDrXLguTqbycC4PJ6gBkkRlfV6kV8zSjM2UpBS5XXcTcWJPT0q1zfSesmxVH5yK6VNk1VzCllczoLHK9jupnZTEmTbtcHxhjzJFCUijVI/ugLHprqozu0b6bEMXsRj4LxeYaZiADeswTqyRgHWJECYkxKldbiZTLZ77uJ8+1siZt4/uPdQWVg7JAitSUlikT08360lxc9IIla0bLLgIkN4A0e/TeEfMUuotGqUA7aTHmkgGlJCoPpKse2500iRrn6NRN5MLcTNP50OOQjjEispalSOGnm352iOryHL91Hus9Uso+xBAzKkEOV7KfR+go57Cgy/On0vaudkrKlK7SKvmt1qnOIIf5RF1z7b+Wsp/fp70J8RHlNDZZofUBKUI/hfYuASEivacz1xFCoLsCNu9871fJpzyF0dTW9eYvsoCsC7nRXOsXyKCZ4rmSgiJLGOjDUifkECJ1aymNJkTRo32MKXQxt2YgRArJUopcPptodirMEhnhEzDXrU3GHnP9oZhpvKsrnhG7kNYIQgjYbMbe5zCTTTNVcyR/7QpVrAt9OOqcToj0rtIaKSU6a70DWPLgu984A2ggkTAfZ2Gu8+mYf7sBdpakVMDkvQJSgPU5ZPq0NqC7WmcpCH5GjoAc/8lWANpl7XZSCyGidSZCdFWY9IDSWZzOYQuRtGPyJgTRcbuumDKTJSEEhVL4LOyOvnadijEJoXMTJQUxl++SBeyzQJxLa3xtZpc2V5H1tZgilWbFvATXYUAq803Y0QvLet/7ZwcY+Cz5rJ0QQkbn0CN44thJC4nTd3G1qwBKR8g8PsZEVTvhpHXDmVX0BdekmWHahxB6rOhcrltfdJnUdN/rALtbjPXZ3bqxdYAthcAF11u2Tu3OVm+7CUW3yigAnwGHrAGtFFrOKsiTyaYtL12jIQacAyVS6YrM5hhzJ2ymo1378wueraUfHJnYdJR5ZsayF06Y24jVDT7LK+1L8gEXEtolakzGKolOs9p5AeQ4HiKR+aXtR6u1usXIDlmF6CoFRaqCyz2IuR7Q+ZldBBFpbbdXKFeM9/4viDIQfQItJWTPVDvzFQG8ACVm23zefXQWFUIial24DllBPiTL1M6H/kJktklC5AHPlrJDjnh519ZcIypvqQkBkEk7HWgm0++OiM+AlQTb6WmGGWnSkkp/5iy/Jzk9XoSIEL435ZCvzX87ZmvwMeGBEGl9MI0zzRi1yztAusaS2aXm5v21M9MUe1ON7uzZ9NtZThAhc4NcJ9oLMm+AyqyzG1Wnnfl9i53FOe+RMVehk77jhECK0HP/vt084H7JPM78HpX62c0pUvm+SOsBHanoTTwDXbd1rdNwJ6E41+lOa+njMg8y9uGnM8dO2x1m9J3InRKZFPW2IjocSB12uTh7Xuap7UcxbKZFHskfdP3uOYwQiNhZQJztBJ3XBOSdIHMtdmDThZjuWhqonzPWTv9xxhizMDqh9dvnYk5shLwfUIAIomdvSZudoGPP9xNspF7PC2W2rzCzxu6xyAzTOkAP75benEZ9yHXNYuaF85qM73p+XjtzFt7zjL4f79aamIGrR8wIj5wJvxN6Z03z/U4e8+h23241Skro7vQAn5uMiQj5R17qaphj9lkvZlbRdfK9Bj4TnuhNsBPWPCjNhBDfJbhuR+hMkDOCFueE1k2PeQ/LnOtHxp60feldN0UnoMwEeynmi2LepOZCmuhf7p6dlzmPWkeMj2h6fvfnbOP0bLCCRLcDMUWOOGtMPPL9+e88MiYeMYG5djrNdy/Mj1V3BEfM3Uxl76KX1Fyzc62+R/B99MlZJzM17Xw69sj07vdmHU+sL9vpewxQvFff5tt8ZMCit/veJUmTOK3UHPR2H3/kY++Brn+ZYxY0Zp2Y7/1f9nifR+Pcv+9+XnS35nFBdIH90eP/AlLekfcxHN2AAAAAAElFTkSuQmCC", "name": "4690", "parameters": { "cloudtime": 618.0, "sunPosX": 2.5, "sunPosY": 2.5, "sunPosZ": 2.5 }, "seed": -2939.0, "shader_model": { "code": "", "global": "// Day at the Lake by nimitz, 2020 (twitter: @stormoid)\n// https://www.shadertoy.com/view/wl3czN\n// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License\n// Contact the author for other licensing options\n//\n// Simple floor by PauloFalcao\n//\n// Modified for Material Maker by (twitter: @PauloFalcao)\n//\n\nmat3 nz_cloudrot_y(float a){\n\tfloat sa = sin(a);\n\tfloat ca = cos(a);\n\treturn mat3(vec3(ca,.0,sa),vec3(.0,1.,.0),vec3(-sa,.0,ca));\n}\n\nvec3 nz_cloudsIntcPlane(vec3 ro, vec3 rd, float plH){\n ro.y += plH;\n float t = -ro.y/rd.y;\n if (t < 0.)\n return vec3(1e6);\n float u = ro.x + rd.x*t;\n float v = ro.z + rd.z*t;\n return vec3(t,u,v);\n}\n\nvec4 nz_cloudMap(vec3 p, float time){\n p.xz += vec2(-time*1.0, time*0.25);\n time *= 0.25;\n p.y -= 9.0;\n p *= vec3(0.19,0.3,0.19)*0.45;\n vec3 bp = p;\n float rz = 0.;\n vec3 drv = vec3(0);\n \n float z = 0.5;\n float trk= 0.9;\n float dspAmp = 0.2;\n \n float att = clamp(1.31-abs(p.y - 5.5)*0.095,0.,1.);\n float off = dot(sin(p*.52)*0.7+0.3, cos(p.yzx*0.6)*0.7+0.3)*0.75 - 0.2; //large structures\n float ofst = 12.1 - time*0.1;\n \n for (int i = 0; i<6; i++){\n p += sin(p.yzx*trk - trk*2.0)*dspAmp;\n \n vec3 c = cos(p);\n vec3 s = sin(p);\n vec3 cs = cos(p.yzx + s.xyz + ofst);\n vec3 ss = sin(p.yzx + s.xyz + ofst);\n vec3 s2 = sin(p + s.zxy + ofst);\n vec3 cdrv = (c*(cs - s*ss) - s*ss.yzx - s.zxy*s2)*z;\n \n rz += (dot(s, cs) + off - 0.1)*z; //cloud density\n rz *= att;\n drv += cdrv;\n \n p += cdrv*0.09;\n p.xz += time*0.1;\n \n dspAmp *= 0.7;\n z *= 0.57;\n trk *= 2.1;\n p *= mat3(\n\t\t vec3(0.33338, 0.56034, -0.71817),\n\t\t vec3(-0.87887, 0.32651, -0.15323),\n\t\t vec3(0.15162, 0.69596, 0.61339)\n\t\t)*2.01;\n }\n \n return vec4(rz, drv);\n}\n\n//-----------------------------Sky rendering---------------------------\n// modified from an prototype public domain implementation by shadertoy user Jodie: https://www.shadertoy.com/view/ttSGzh\n// That version has some serious accuracy issues, I modified it to somewhat match the Hosek-Wilkie sky model visuals.\n\n\nvec3 nz_getThickness(vec3 rd){\n\n\tconst float earthRadius=6371000.;\n\tconst float atmoDepth=8228.;\n\tconst float mieDepth=1800.0;\n\tconst float ozoneHeight=30000.;\n\t\n const vec4 cns = earthRadius + \n \t\t\tvec4(atmoDepth, mieDepth, ozoneHeight, ozoneHeight + atmoDepth);\n const float r2 = earthRadius * earthRadius;\n float b = -rd.y*earthRadius;\n vec4 z = sqrt( cns*cns + (b*b - r2) );\n return vec3(b + z.xy, z.w - z.z);\n}\n\n\nvec3 nz_getSky(vec3 rd, vec3 lgt, float addDepth){\n\n\tconst vec3 rayleighCoefficient=vec3(5.6e-6 , 1.25e-5 , 2.9e-5 );\n\tconst float mieCoefficient=16e-6;// adjust for foggier look\n\tconst vec3 ozoneCoefficient=(vec3(3.426, 8.298,.356) * 6e-5 / 100.);\n\tconst vec3 sunColor=vec3(.95,.96,1.2 );\n\t\n const vec3 addCol = vec3(1.,1.,1.);\n const mat3 coeffs = mat3(rayleighCoefficient, vec3(mieCoefficient), ozoneCoefficient)/0.693147;\n vec3 thickness = nz_getThickness(rd) + addDepth*addCol;\n float rdl = max(dot(rd, lgt), 0.0);\n\n vec3 rayleighScatter =(thickness.x * (0.4*rdl*rdl + 1.12))* rayleighCoefficient;\n float g = 0.8 - lgt.y*0.15 - mieCoefficient*1500.;\n float g2 = g*g;\n float a = inversesqrt(g2 - (2.0*g*rdl - 1.0));\n float phaseMie = (0.4 + lgt.y*0.1 + mieCoefficient*7000.)*(1.0 - g2)*a*a*a;\n float mieScatter = thickness.y * phaseMie * mieCoefficient;\n\n vec3 sunCoeff = coeffs*(nz_getThickness(lgt) + addDepth*addCol);\n vec3 viewCoeff = coeffs*thickness;\n vec3 absorption = (exp2(-viewCoeff) - exp2(-sunCoeff))/((sunCoeff - viewCoeff)*0.693147);\n\n return vec3(clamp(sunColor*(rayleighScatter + mieScatter)*absorption*(0.6 + lgt.y*0.3), 0., 100.5));\n}\n\n\n\n//-------------------------End of sky rendering------------------------\n//---------------------------------------------------------------------\n\nvec3 nz_getSun(vec3 rd, float sunCoeff, vec3 lgt){\n float rdl = max(dot(rd, lgt), 0.0);\n float dcy = smoothstep(-0.05,0.2,lgt.y);\n vec3 sun = 50.0*vec3(1.,1.,.4)*pow(rdl, 10000.)*clamp(1.0 - dcy*.7, 0.,1.);\n sun += 60.0*vec3(1.,0.7,.5)*pow(rdl, 3500.);\n sun *= clamp(1.0 - dcy*.6, 0.,1.);\n sun *= exp2(-sunCoeff*0.45);\n return sun;\n}\n\n\nvec4 nz_getClouds( in vec3 ro, in vec3 rd, float scnD, vec3 skyCol, float time, vec3 lgt){\n\tvec4 rez = vec4(0.);\n\tfloat t = min(nz_cloudsIntcPlane(ro, rd, -12.).x, 175.);\n \n float updl = dot(lgt, vec3(0, 1, 0));\n float sunUp = max(updl, 0.);\n float sunUp3 = clamp(sunUp*sunUp*sunUp*6., 0.0, 1.0);\n float sunDw = 1.0 - sunUp;\n sunDw = pow(sunDw, 6.0);\n \n float bsd = dot(lgt.xz, rd.xz);\n float sd = max(bsd, 0.0);\n float sd2 = max(bsd*0.55 + 0.53,0.);\n \n vec3 topSky = clamp(nz_getSky(vec3(0, 1, 0), lgt, 0.).xyz, 0.,1.);\n vec3 baseCol = mix(topSky, vec3(0.05, 0.066, 0.09), clamp(sunUp3,0.0, 0.6))*0.2;\n \n float extraDepth = 14e4*((1.0-bsd)*0.2 + 0.9)*pow(1.0 - sunUp, 4.0);\n vec3 hlitCol = clamp(nz_getSky(normalize((lgt-vec3(0,0.001,0))*nz_cloudrot_y(0.15)), lgt, extraDepth).xyz ,0.0, 1.0);\n hlitCol = hlitCol*sd2*mix(sunDw, sunDw*sunDw, sd)*16.;\n \n vec3 bSkyCol = nz_getSky(rd, lgt, extraDepth*5.0*(sunUp*0.8 + 0.2)).xyz;\n vec3 sunLCol = mix(vec3(1.0, 0.8, 0.75), vec3(.5), sunUp);\n vec3 atmoCol = mix(bSkyCol*(sunUp*0.3+0.7), sunLCol*dot(bSkyCol, vec3(0.38)), sunUp3)*0.25;\n \n\tfor(int i=0; i<85; i++){\n\t\tvec3 pos = ro + t*rd;\n if(rez.a > 0.99 || t > 300. || pos.y > 150.)break;\n vec4 cld = nz_cloudMap(pos, time);\n\t\tfloat den = clamp(cld.x, 0., 1.)*1.02;\n\t\tfloat dn = clamp((cld.x + 1.9),0.0 , 3.0);\n float fogT = 0.;\n \n\t\tvec4 col = vec4(0);\n \n if (cld.x > 0.6){ \n col = vec4(baseCol, 0.1);\n float nl = max(dot(cld.yzw, -lgt), -1.2);\n float dif = clamp((cld.x - nz_cloudMap(pos + lgt*8., time).x)*0.4 + 0.2, 0.11, 2.0 )*2.5;\n dif += clamp((cld.x - nz_cloudMap(pos + lgt*15., time).x)*0.2 - 0.03, -0.02, 1. )*4.0;\n \n col.rgb += atmoCol*((nl*0.25 + 0.7)*dif*0.65); //atmosphere lighting\n \n float den2 = den*den;\n float den4 = den2*den2;\n col *= den4*den4;\n col.rgb += col.a*clamp((nl*0.8 + 0.1)*dif,0.,1.)*hlitCol; //twi-lights\n //col *= smoothstep(t-0.0, t+.1, scnD); //blend with scene\n }\n \n float fogC = exp2(t*0.012/(rd.y + 0.35) - 11.7);\n col.rgba += vec4(skyCol, 1.0)*clamp(fogC, 0.0, 1.0);\n\t\trez = rez + col*(1.0 - rez.a);\n t += clamp(7. - dn*dn*.85, 1.2, 7.);\n\t} \n\treturn clamp(rez, 0.0, 1.0);\n}\n\n\n\n//Hash without Sine Dave_Hoskins\n//https://www.shadertoy.com/view/4djSRW \nfloat npxf_hash12(vec2 p)\n{\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat pxf_nz_noise(vec2 v){\n vec2 v1=floor(v);\n vec2 v2=smoothstep(0.0,1.0,fract(v));\n float n00=npxf_hash12(v1);\n float n01=npxf_hash12(v1+vec2(0,1));\n float n10=npxf_hash12(v1+vec2(1,0));\n float n11=npxf_hash12(v1+vec2(1,1));\n return mix(mix(n00,n01,v2.y),mix(n10,n11,v2.y),v2.x);\n}\n\nfloat pxf_nz_noiseOct(vec2 p){\n return\n pxf_nz_noise(p)*0.5+\n pxf_nz_noise(p*2.0+13.0)*0.25+\n pxf_nz_noise(p*4.0+23.0)*0.15+\n pxf_nz_noise(p*8.0+33.0)*0.10+\n pxf_nz_noise(p*16.0+43.0)*0.05;\n}\n\nvec3 pxf_nz_floorColor(vec3 p){\n vec3 v=(pxf_nz_noiseOct(p.xz*0.1)*0.5+0.25)*vec3(0.7,0.5,0.4);\n return v;\n}\n\n\n\nvec3 pxf_nz_renderHDR360( in vec3 rd, float time, vec3 lgt){\n\n vec3 col;\n if (rd.y>-0.35) {\n //Sky\n //Sky\n float ldt = clamp(dot(lgt,rd),0.,1.);\n\n vec3 skyCol = nz_getSky(rd, lgt, 0.);\n col = skyCol.rgb;\n vec3 bg= col;\n\n float powerSun=1.0+pow(ldt,2.0);\n\n col += (nz_getSun(rd,0.0,lgt)+0.05)*powerSun;\n\n float powerCloud=1.0+pow(ldt,32.0)*3.5;\n\n vec4 cld = nz_getClouds(vec3(0,0,0), rd, 10000., bg, time, lgt)*powerCloud;\n col = col*(clamp(1.0-cld.w,0.0,1.0)) + cld.xyz;\n //Floor\n vec3 p=rd*(-10.0/rd.y);\n if ((rd.y>-0.35)&&(rd.y<-0.0)){\n col=mix(col,pxf_nz_floorColor(p),clamp(-rd.y*3.0,0.0,1.0));\n }\n } else{\n vec3 p=rd*(-10.0/rd.y);\n col=pxf_nz_floorColor(p);\n }\n return col;\n}\n\n\nvec3 pxf_nz_make360hdri(vec2 p,float t,vec3 sunPos){\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(3.14159265359,3.14159265359/2.0); \n vec3 rayDirection = vec3(cos(thetaphi.y) * cos(thetaphi.x), sin(thetaphi.y), cos(thetaphi.y) * sin(thetaphi.x));\n\t\n return max(pxf_nz_renderHDR360(rayDirection,t,sunPos),vec3(0.0));\n}", "inputs": [], "instance": "", "longdesc": "Nimitz HDRI Sky\n\nType - Image Generator\nCode - Nimitz, Paulo Falcao\n\nBased on a Day at the Lake by nimitz, 2020 (twitter: @stormoid)\nhttps://www.shadertoy.com/view/wl3czN\nLicense Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License\nContact the author for other licensing options\n\nSimple floor by @PauloFalcao\n\nModified for Material Maker by (twitter: @PauloFalcao)\n\nIf you can, use real HDRIs like the ones\nfrom https://hdrihaven.com/hdris/?c=outdoor in reflections it makes a huge difference!", "name": "Nimitz HDRI Sky", "outputs": [ { "rgb": "pxf_nz_make360hdri(vec2($uv.x,-$uv.y+1.0),$cloudtime,normalize(vec3(-$sunPosX,$sunPosY,-$sunPosZ)))", "shortdesc": "Color Output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 30.0, "label": "Cloud Time", "max": 200.0, "min": 0.0, "name": "cloudtime", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Sun Pos X", "max": 1.0, "min": 0.0, "name": "sunPosX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Sun Pos Y", "max": 1.0, "min": 0.0, "name": "sunPosY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.0, "label": "Sun Pos Z", "max": 1.0, "min": 0.0, "name": "sunPosZ", "step": 0.001, "type": "float" } ] }, "tree_item": "PF/Image/Gen/360 HDRI Nimitz Sky", "type": "shader" }, { "display_name": "Axis", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAI5JREFUeJzt0rENwCAQBME30H/LduAiNmBW+pjTiGetec/MVLfDt/87c3UAAACoJ7QBAACgntAGAACAekIbAAAA6gltAAAAqCe0AQAAoJ7QBgAAgHpCGwAAu57Q5gcAAFBPaAMAAEA9oQ0AAAD1hDYAAADUE9oAAABQT2gDAABAPaENAAAA9YQ2AAAuB/gAJZ4D97ubRUQAAAAASUVORK5CYII=", "name": "Image_Axis", "parameters": { }, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Input Coordinates\n\nCode - PauloFalcao", "name": "Image Axis", "outputs": [ { "rgba": "vec4($uv,0.0,1.0)", "shortdesc": "RGBA Output", "type": "rgba" } ], "parameters": [], "shortdesc": "Axis" }, "shortdesc": "", "tree_item": "PF/Image/Gen/Axis", "type": "shader" }, { "display_name": "Smooth Axis Symmetry", "icon_data": "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", "name": "Image_Smooth_Axis_Symmetry", "parameters": { "mode": 0.0, "smooth": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(0.0,0.0,0.0,1.0)", "label": "", "name": "in", "shortdesc": "RGBA Input", "type": "rgba" } ], "instance": "", "longdesc": "Transforms a RGBA making a mirror smooth symmetry using the chosen axis\n\nCode - PauloFalcao", "name": "Image Smooth Axis Symmetry", "outputs": [ { "rgba": "$in($mode)", "shortdesc": "RGBA output", "type": "rgba" } ], "parameters": [ { "default": 2.0, "label": "Axis", "longdesc": "Axis", "name": "mode", "type": "enum", "values": [ { "name": "XY", "value": "vec2(sqrt(($uv.xy-0.5)*($uv.xy-0.5)+$smooth))+0.5" }, { "name": "X", "value": "vec2(sqrt($uv.x*$uv.x+$smooth),$uv.y)+0.5" }, { "name": "Y", "value": "vec2($uv.x,sqrt($uv.y*$uv.y+$smooth))+0.5" } ] }, { "control": "None", "default": 0.0, "label": "Smooth", "max": 0.02, "min": 0.0, "name": "smooth", "step": 0.00001, "type": "float" } ], "shortdesc": "Image Smooth Axis Symmetry" }, "shortdesc": "", "tree_item": "PF/Image/Op/Smooth Axis Symmetry", "type": "shader" }, { "display_name": "Smooth Polar Repeat", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAACcFJREFUeJzNW2tP4zoQPU2cR0kfSwtoWZD2//+rRYJlRSlL2xSapEnvBzRmMh0npYR7r6WItiT2nDMPj8dOD8AOHTXf9/Hz50+MRiOcnJwgiiJEUYQgCGCMge/78H0fnueh1+vVnt3tdqiqCmVZoixLbLdbFEWBLMuQZRleXl6wXC5xc3ODsiy7Ehmms54AXF9fYzAYoN/v18BLAnq9nr2AN/B0eZ7XSND19TVubm46k7kzAgh8HMcIwxBhGFrwQRDUtE8AJQFVVe2RQ//n1nF9fY3b29tO5O6EgMvLyxp40jhdBL6NAA04gQ+CwBJQliUuLy9xf3//adk/RcBoNMJoNEKSJCp4Dlz6/6EEVFUFYwzKsqyRsNvt4Ps+lssllsvlv0PA6ekpwjCEMcYCJXOXwY40za9er9dIAI8DPB54ngff9+24VVUBeAu6cRxjMpmgKApst1vkeY6/f/92Q8C3b98wGAysZrkGuWC+76uRXoKV32WgA2DB82f4OMYYS4AxBlEUoaoqVFVlLebi4gJFUSDPc6Rpiufn548RcH5+juFwiDiO97TKBedCukxcAyl/55ag3SfHCYIAnudZ0PQcjxk0lY5GI0wmE6xWK8xms2YC4jjG9+/fkSQJoiiy5q6B5wJz4VygeePPccGbGvXr+z6Ad0vh/bhIiOMY/X4fSZLgz58/2Gw2+wRMJhNMp9NaQKNgps3N3Gep0X3yHvndpXHX/bx/+k5ENE2bVVVhu93uTcvz+RxPT0/vBEynU5ydnalTmfRnCZ4G05o2v8vvrv6keWsku9yN92GMwXa7VWei+XwOMxwOMZ1OaxkcD3ptqatL2KqqrJ9KAZtmAd4nD2zyOR4g21Jr6cb0/zzPYc7Pz5EkCfr9vjqXN5k/F7QsyxoRu93O5uwS7KEE8DlfizeSAM0NfN/HdrvdG7OqKpyfn8Nwn6eLJzJtBJRlWfsfkUCC82cO0ZgET8RK8CRbU4CmvjTwFCANmTwHLglwpajagFKj2kLnIwQQoZrpa1OvJJwI4AoKwxBlWSKKIhgtfdWWri6wHLDneVbz3PwJUFsqzK2K/sqoL7NDF6kuJVEiFQQBKd29YGnyL41pAsy1CcBGYVefLv+ncSRAnlW2EcA/+75v44K1dFfe3iQsCaFddA/5GJlgW5+uGcDzPKugpnFdViUtdG994dJ4W0rr+p2DoaoOmaIchzcNfK/Xs2mvlhM0EcDvIQtVCdAeln8/2siEi6LAZrNBURQAoBJNpEkCACAIAgCwpntM0zDxy0igx4Lmmqe/RVHg9fUVaZoiz/O3AUVpjJ7ltcDdbocwDDEYDOD7PsIwrPXdtm5oI4N/NiQAB8I/S9/nYLUUlvt/URRYr9f4/fv3UQJfXV0hiiJst1sbFGWyxS8KwLw1YQMAz9VZG0jNbGVVN8syPD4+HgUeAB4fH5FlmSWApkctXrSR47qMK/cmH5ELGWA/YGngyfyzLDuagCzL8Pr6ipOTEycJPHbxYoqWXmtKMxqrruiqdcpBU+Cjev5isTgaPLXFYoHBYIAoilAUhV3duRKqJlk1hRmec5dluTdHawmGBp60TuBpI+Ozbblc4vT0tFZzdOUSTbLK9QVdpigK2zEngDrgiQ9n1QU+z3NsNhtbcOiiPT09od/v2/WKNo3SVOlyVwmcZDZUTeVmxRmVrHJG6bk8z5HnufXZ1WqF1WrVGQHUH9UoXFmkVpHiBJC8XGmGNKcVDDircjDOIgefpinu7u46A0/t7u4OYRg6CdAWbm3WWhQFTJ7nteKn9KG2Dgn8ZrPBer1WK69dtdlsZl1A8/Um69C0n+f5GwH0o+ycdyj9X9P+YrFAmqZfRkCaplgsFntyymRIyqz5PynPzgJyipD1PGn+MphsNhs8PDx8GXhqDw8PSJJELdkD9UJp01RoZ70vl/h/3rymIohWG5CbnbRfF8cxLi4uvlzgi4uLvR2rpmKOC4uVXxZBOTBXVNUysKqqMB6P8fLy8mVxYDAYYDwe18r33BVcQVDKSXjDMNyvCUoytA5dJSgqNX8VAVTCj+O4tn/hKuDyIMjlpK32MAxh+CkOrSLsSoSaBru6uuo8F7i6utrbvNG277RESLNWIsFo2pcEAO+pMK24aD9AI2A4HGI4HHaWDVJ/EnzT2SOZCmtuUCPAdZrDZeoaq1Rzp0MLXREwmUxqu1aHWquWyPGqcBAEb0VRF3CNVVd2yNcHURTh5OQEo9Ho0ytCfuROgm86eqMFQF4Wt8G+rSzuMive6W63q53jCYIAURRhPB5/moDxeFwDr23cSP+XSRC/9qrCTXMmfeYVVeqECOCdytyAfPbYqlAURej3+87jN017DSQrBWy5YrSXq/rjuvhATYkSnd85Ozs7WvtnZ2dv+3ct4DXZDr0ay+LaZ5kIaeRwK0iSBD9+/DiqLJ4kSU37bSClnIfgaSyLf6RJEjzPs25gzNtJnGM2RmhnSII/pmk4jQwS/J88in6kkSvQzk4URarL8Na0NUam/xnQ/G+tLN62FJYWoUVW3rgl8PVEU8ByLVll2i2V0SSHXAq7lsQqATLRkYO7phjud9zH6ftHCJDb4/Je19hS066SuCWAV4OoKqxNKVo2yJmVbsP7cR1n0UCRYJIEbo18SqN4QfdIJbnK4hZ3nudqvZ135LIALiwPXtwC+NSoBUCNVN/3rTJ4PADqub1c5TXJSBs3ezXBLMtqgUauplykaARwbUnwHyGAuyA/JMXvO0RJrpI4L+Ob9XpdW1BIk2wjgA/CtVVLN5UFi+YCpHEJsNfr1dxNyqEFSbk+4VqnzZv1eg3DS80SPJnjIRqTQZDcQC6u2mIA/42OxdDvMqofYlHk87KCTSV8s1qtEIbhXlIiT1g2RWItELmmvzYCNCXwWMCnOy0rdJk/37ZL0xTz+Ryr1eotE5zP53uMEQEfPSxNWuOW4MrZ+X3ct/niRWqWB1s+Rpv5c7PfOywNvG1Avry8fOq4PH2WJ7qksNJapOu47tfiDe+HK4Zrn0x/vV67j8sDwGazwa9fv45+YQKoH2l3tTYitEbA+JQm3UIDT5s2B70wQW02m2E2m334lRnSflOKyoHKGOACLYHRxqbc1ZL3HP3KDLXn5+faw00vTQHvMYCOxXINuXxaAtWe4bGJv1FKUxr91vlLU7LJjvlrc5wAAq8lNvxz06yi5e0cPE1l/+prc7LR4JeXl7V5v62q3LYYcu3m8qlsuVz+9y9OUru/v3eW1V3riEMI0PbzaR7vAjzQ4bvDt7e3KnhqBFKe5eH/oyjPzV2mr2madvbeMNDx2+NEQlvqfEjqKl+fp+M3XYIHgH8AoZ6dyWI7WesAAAAASUVORK5CYII=", "name": "Image_Smooth_Polar_Repeat", "parameters": { "Distance": 0.0, "Repetitions": 6.0, "Roundness": 0.0, "Smooth": 0.0 }, "shader_model": { "code": "", "global": "vec2 smoothRot_XY(vec2 p,float s,float m,float c,float distance){\n s*=0.5;\n float d=length(p);\n float x=asin(sin(atan(p.x,p.y)*s)*(1.0-m))*d;\n float ds=d*s;\n float y=mix(ds,2.0*ds-sqrt(x*x+ds*ds),c);\n return vec2(x/s,y/s-distance);\n}", "inputs": [ { "default": "vec4(0.0)", "label": "", "name": "in", "shortdesc": "RGBA Input", "type": "rgba" } ], "instance": "", "longdesc": "This is a Smooth Polar Repeat based in a technique I create based on the Blackle Mori asinsin smooth repetition but for polar repetitions.\n\nA shadertoy with the technique is here https://www.shadertoy.com/view/NdS3Dh\n\nCode - PauloFalcao", "name": "Image Smooth Polar Repeat", "outputs": [ { "rgba": "$in(smoothRot_XY($uv-0.5,$Repetitions,$Smooth,1.0-$Roundness, $Distance))", "shortdesc": "RGBA Output", "type": "rgba" } ], "parameters": [ { "control": "None", "default": 6.0, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the axis", "max": 32.0, "min": 1.0, "name": "Repetitions", "shortdesc": "Count", "step": 1.0, "type": "float" }, { "control": "None", "default": 1.0, "label": "Distance", "longdesc": "Object distance from the center", "max": 5.0, "min": 0.0, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Smooth", "longdesc": "Smoothness between objects", "max": 1.0, "min": 0.0, "name": "Smooth", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.0, "label": "Roundness", "longdesc": "This is a correction to the smoothness.\n\n0 (default) - With correction, this way a flat object will no smoothess will be flat, the correction is not perfect with few repetions it's still possible to notice some distortion. \n\n1 - Without correction, using this setting a flat object will be rounded, even with smoothness at zero.", "max": 1.0, "min": 0.0, "name": "Roundness", "step": 0.001, "type": "float" } ], "shortdesc": "Image Smooth Polar Repeat" }, "shortdesc": "", "tree_item": "PF/Image/Op/Smooth Polar Repeat", "type": "shader" }, { "display_name": "Fractal", "icon_data": "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", "name": "Image_Fractal", "parameters": { "blend_type": 0.0, "iterations": 8.0, "mode": 2.0, "opacity": 1.0 }, "shader_model": { "code": "", "global": "vec3 blendf_normal(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1 + (1.0-opacity)*c2;\n}\n\nvec3 blendf_multiply(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1*c2 + (1.0-opacity)*c2;\n}\n\nvec3 blendf_screen( vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_overlay_f(float c1, float c2) {\n\treturn (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));\n}\n\nvec3 blendf_overlay(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_overlay_f(c1.x, c2.x), blendf_overlay_f(c1.y, c2.y), blendf_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_hard_light(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*0.5*(c1*c2+blendf_overlay(c1, c2, 1.0)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_soft_light_f(float c1, float c2) {\n\treturn (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);\n}\n\nvec3 blendf_soft_light( vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_soft_light_f(c1.x, c2.x), blendf_soft_light_f(c1.y, c2.y), blendf_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_burn_f(float c1, float c2) {\n\treturn (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);\n}\n\nvec3 blendf_burn(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_burn_f(c1.x, c2.x), blendf_burn_f(c1.y, c2.y), blendf_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_dodge_f(float c1, float c2) {\n\treturn (c1==1.0)?c1:min(c2/(1.0-c1),1.0);\n}\n\nvec3 blendf_dodge(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_dodge_f(c1.x, c2.x), blendf_dodge_f(c1.y, c2.y), blendf_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_lighten(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*max(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_darken(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*min(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_difference(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;\n}\n", "inputs": [ { "default": "0.0", "function": true, "label": "Image", "longdesc": "The image that will be repeated", "name": "img", "shortdesc": "RGBA Image", "type": "rgba" }, { "default": "vec4($uv,0.0,0.0)", "function": true, "label": "2D Transformation", "longdesc": "The transformation that will be applied each iteration, only transformations nodes can be used, like translate, scale, etc", "name": "trans2d", "shortdesc": "Image Transformaton", "type": "rgba" } ], "instance": "vec4 for_blend_$name(vec2 p) {\n vec2 t=p;\n vec4 o=$img(t);\n for(int i=0;i<$iterations;i++){\n t=$trans2d(t).xy;\n\tvec4 no=$img(t);\n\to=vec4(blendf_$blend_type(o.xyz,no.xyz,$opacity),mix(o.w,no.w,$opacity));\n }\n return o;\n}\n\nvec4 for_avg_$name(vec2 p) {\n vec2 t=p;\n vec4 no=$img(t);\n vec4 o=vec4(no.xyz*$opacity,no.w);\n for(int i=0;i<$iterations;i++){\n t=$trans2d(t).xy;\n\tno=$img(t);\n\to+=vec4(no.xyz*$opacity,no.w);\n }\n return vec4(o/($iterations.0+1.0));\n}\n\nvec4 for_fold_$name(vec2 p) {\n vec2 t=p;\n for(int i=0;i<$iterations;i++){\n t=$trans2d(t).xy;\n }\n vec4 no=$img(t);\n vec4 o=vec4(no.xyz*$opacity,no.w);\n return o;\n}\n", "longdesc": "Repeats a shape x Iterations times, and for each iteration uses the transformation in 2D Transformation Node.\n\n2D Transformation nodes should start with the Image \"Axis\" node, operations should not use buffer, only coordinates transformations should be used, nodes that transform colors here will transform space.\n\nThere are 3 modes available:\n - Average\n Transforms space each iteration.\n The input image is evaluated for each iteration, and at the end the average of all evaluations is returned.\n Using operators like Mirror is possible to repeat space.\n - Blend\n Transforms space each iteration.\n The input image is evaluated for each iteration.\n Each iteration the previous image is combined with the current only using the specified blending mode.\n Using operators like Mirror is possible to repeat space.\n - Fold\n Transforms space each iteration.\n The input image is evaluated only at the end.\n Using operators like Mirror is possible to repeat space.\n\nCode - PauloFalcao, RodZilla (Bending modes)", "name": "Image Fractal", "outputs": [ { "rgba": "$mode", "shortdesc": "SDF3D Output", "type": "rgba" } ], "parameters": [ { "default": 24.0, "label": "Iterations", "longdesc": "Number of Iterations", "name": "iterations", "type": "enum", "values": [ { "name": "0", "value": "0" }, { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" }, { "name": "17", "value": "17" }, { "name": "18", "value": "18" }, { "name": "19", "value": "19" }, { "name": "20", "value": "20" }, { "name": "21", "value": "21" }, { "name": "22", "value": "22" }, { "name": "23", "value": "23" }, { "name": "24", "value": "24" } ] }, { "default": 2.0, "label": "Mode", "longdesc": " - Average\n Transforms space each iteration.\n The input image is evaluated for each iteration, and at the end the average of all evaluations is returned.\n Using operators like Mirror is possible to repeat space.\n - Blend\n Transforms space each iteration.\n The input image is evaluated for each iteration.\n Each iteration the previous image is combined with the current only using the specified blending mode.\n Using operators like Mirror is possible to repeat space.\n - Fold\n Transforms space each iteration.\n The input image is evaluated only at the end.\n Using operators like Mirror is possible to repeat space.", "name": "mode", "type": "enum", "values": [ { "name": "Average", "value": "for_avg_$name($uv)" }, { "name": "Blend", "value": "for_blend_$name($uv)" }, { "name": "Fold", "value": "for_fold_$name($uv)" } ] }, { "default": 0.0, "label": "Blend Mode", "longdesc": "The algorithm used to blend the result of each iteration", "name": "blend_type", "shortdesc": "Blend mode", "type": "enum", "values": [ { "name": "Normal", "value": "normal" }, { "name": "Multiply", "value": "multiply" }, { "name": "Screen", "value": "screen" }, { "name": "Overlay", "value": "overlay" }, { "name": "Hard Light", "value": "hard_light" }, { "name": "Soft Light", "value": "soft_light" }, { "name": "Burn", "value": "burn" }, { "name": "Dodge", "value": "dodge" }, { "name": "Lighten", "value": "lighten" }, { "name": "Darken", "value": "darken" }, { "name": "Difference", "value": "difference" } ] }, { "control": "None", "default": 0.5, "label": "Opacity", "longdesc": "The opacity of the blend operation", "max": 1.0, "min": 0.0, "name": "opacity", "step": 0.001, "type": "float" } ], "shortdesc": "Image Fractal" }, "shortdesc": "", "tree_item": "PF/Image/Op/Fractal", "type": "shader" }, { "connections": [ { "from": "sphere", "from_node": "node_sphere", "from_port": 0.0, "keep_alive": false, "to": "pxflib_2", "to_node": "node_pxflib_2", "to_port": 0.0 }, { "from": "pxflib", "from_node": "node_pxflib", "from_port": 0.0, "keep_alive": false, "to": "translate", "to_node": "node_translate", "to_port": 0.0 }, { "from": "translate", "from_node": "node_translate", "from_port": 0.0, "keep_alive": false, "to": "mirror_2", "to_node": "node_mirror_2", "to_port": 0.0 }, { "from": "mirror_2", "from_node": "node_mirror_2", "from_port": 0.0, "keep_alive": false, "to": "mirror", "to_node": "node_mirror", "to_port": 0.0 }, { "from": "mirror", "from_node": "node_mirror", "from_port": 0.0, "keep_alive": false, "to": "rotate", "to_node": "node_rotate", "to_port": 0.0 }, { "from": "rotate", "from_node": "node_rotate", "from_port": 0.0, "keep_alive": false, "to": "scale_2", "to_node": "node_scale_2", "to_port": 0.0 }, { "from": "scale_2", "from_node": "node_scale_2", "from_port": 0.0, "keep_alive": false, "to": "pxflib_2", "to_node": "node_pxflib_2", "to_port": 1.0 }, { "from": "pxflib_2", "from_node": "node_pxflib_2", "from_port": 0.0, "keep_alive": false, "to": "scale", "to_node": "node_scale", "to_port": 0.0 } ], "display_name": "Fractal Example", "icon_data": "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", "nodes": [ { "color": { "a": 1.0, "b": 0.0, "g": 0.5, "r": 1.0, "type": "Color" }, "name": "comment", "node_position": { "x": 77.922607421875, "y": 50.331298828125 }, "parameters": { }, "seed": 57203.0, "size": { "x": 396.0, "y": 128.0 }, "text": "Remake of Basic Fractal Shader\nhttps://www.shadertoy.com/view/tltSWs\nUsing the Fractal node", "title": "Comment", "type": "comment" }, { "name": "pxflib", "node_position": { "x": -243.698364257812, "y": -192.05419921875 }, "parameters": { }, "seed": 2605.0, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nInput Coordinates", "name": "Axis", "outputs": [ { "rgba": "vec4($uv,0.0,1.0)", "shortdesc": "RGBA Output", "type": "rgba" } ], "parameters": [], "shortdesc": "Axis" }, "type": "shader" }, { "generic_size": 1.0, "name": "translate", "node_position": { "x": -247.698364257812, "y": -122.054321289062 }, "parameters": { "translate_x": 0.5, "translate_y": 0.5 }, "seed": 34811.0, "type": "translate" }, { "generic_size": 1.0, "name": "mirror_2", "node_position": { "x": -248.698364257812, "y": -43.05419921875 }, "parameters": { "direction": 1.0, "flip_sides": false, "offset": 0.0 }, "seed": 42699.0, "type": "mirror" }, { "generic_size": 1.0, "name": "mirror", "node_position": { "x": -251.698364257812, "y": 34.9456787109375 }, "parameters": { "direction": 0.0, "flip_sides": false, "offset": 0.0 }, "seed": -1005.0, "type": "mirror" }, { "generic_size": 1.0, "name": "scale_2", "node_position": { "x": -257.698364257812, "y": 214.945739746094 }, "parameters": { "cx": 0.0, "cy": 0.0, "scale_x": 0.51, "scale_y": 0.51 }, "seed": -48667.0, "type": "scale" }, { "generic_size": 1.0, "name": "rotate", "node_position": { "x": -260.698364257812, "y": 115.94580078125 }, "parameters": { "cx": 0.0, "cy": 0.0, "rotate": "$time*45.0" }, "seed": -7255.0, "type": "rotate" }, { "name": "sphere", "node_position": { "x": -242.077392578125, "y": -329.668701171875 }, "parameters": { "cx": 0.5, "cy": 0.5, "r": 0.49 }, "seed": 26916.0, "type": "sphere" }, { "name": "pxflib_2", "node_position": { "x": 87.922607421875, "y": -139.668701171875 }, "parameters": { "blend_type": 0.0, "iterations": 6.0, "mode": 2.0, "opacity": 1.0 }, "seed": -62335.0, "shader_model": { "code": "", "global": "vec3 blendf_normal(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1 + (1.0-opacity)*c2;\n}\n\nvec3 blendf_multiply(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1*c2 + (1.0-opacity)*c2;\n}\n\nvec3 blendf_screen( vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_overlay_f(float c1, float c2) {\n\treturn (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));\n}\n\nvec3 blendf_overlay(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_overlay_f(c1.x, c2.x), blendf_overlay_f(c1.y, c2.y), blendf_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_hard_light(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*0.5*(c1*c2+blendf_overlay(c1, c2, 1.0)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_soft_light_f(float c1, float c2) {\n\treturn (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);\n}\n\nvec3 blendf_soft_light( vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_soft_light_f(c1.x, c2.x), blendf_soft_light_f(c1.y, c2.y), blendf_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_burn_f(float c1, float c2) {\n\treturn (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);\n}\n\nvec3 blendf_burn(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_burn_f(c1.x, c2.x), blendf_burn_f(c1.y, c2.y), blendf_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blendf_dodge_f(float c1, float c2) {\n\treturn (c1==1.0)?c1:min(c2/(1.0-c1),1.0);\n}\n\nvec3 blendf_dodge(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blendf_dodge_f(c1.x, c2.x), blendf_dodge_f(c1.y, c2.y), blendf_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_lighten(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*max(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_darken(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*min(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blendf_difference(vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;\n}\n", "inputs": [ { "default": "0.0", "function": true, "label": "Image", "longdesc": "The image that will be repeated", "name": "img", "shortdesc": "RGBA Image", "type": "rgba" }, { "default": "vec4($uv,0.0,0.0)", "function": true, "label": "2D Transformation", "longdesc": "The transformation that will be applied each iteration, only transformations nodes can be used, like translate, scale, etc", "name": "trans2d", "shortdesc": "Image Transformaton", "type": "rgba" } ], "instance": "vec4 for_blend_$name(vec2 p) {\n vec2 t=p;\n vec4 o=$img(t);\n for(int i=0;i<$iterations;i++){\n t=$trans2d(t).xy;\n\tvec4 no=$img(t);\n\to=vec4(blendf_$blend_type(o.xyz,no.xyz,$opacity),mix(o.w,no.w,$opacity));\n }\n return o;\n}\n\nvec4 for_avg_$name(vec2 p) {\n vec2 t=p;\n vec4 no=$img(t);\n vec4 o=vec4(no.xyz*$opacity,no.w);\n for(int i=0;i<$iterations;i++){\n t=$trans2d(t).xy;\n\tno=$img(t);\n\to+=vec4(no.xyz*$opacity,no.w);\n }\n return vec4(o/($iterations.0+1.0));\n}\n\nvec4 for_fold_$name(vec2 p) {\n vec2 t=p;\n for(int i=0;i<$iterations;i++){\n t=$trans2d(t).xy;\n }\n vec4 no=$img(t);\n vec4 o=vec4(no.xyz*$opacity,no.w);\n return o;\n}\n", "longdesc": "Type - RGBA Generator\nCode - PauloFalcao, RodZilla (Bending modes)\n\nRepeats a shape x Iterations times, and for each iteration uses the transformation in 2D Transformation Node.\n\n2D Transformation nodes should start with the Image \"Axis\" node, operations should not use buffer, only coordinates transformations should be used, nodes that transform colors here will transform space.\n\nThere are 3 modes available:\n - Average\n Transforms space each iteration.\n The input image is evaluated for each iteration, and at the end the average of all evaluations is returned.\n Using operators like Mirror is possible to repeat space.\n - Blend\n Transforms space each iteration.\n The input image is evaluated for each iteration.\n Each iteration the previous image is combined with the current only using the specified blending mode.\n Using operators like Mirror is possible to repeat space.\n - Fold\n Transforms space each iteration.\n The input image is evaluated only at the end.\n Using operators like Mirror is possible to repeat space.", "name": "Fractal", "outputs": [ { "rgba": "$mode", "shortdesc": "SDF3D Output", "type": "rgba" } ], "parameters": [ { "default": 24.0, "label": "Iterations", "longdesc": "Number of Iterations", "name": "iterations", "type": "enum", "values": [ { "name": "0", "value": "0" }, { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "3", "value": "3" }, { "name": "4", "value": "4" }, { "name": "5", "value": "5" }, { "name": "6", "value": "6" }, { "name": "7", "value": "7" }, { "name": "8", "value": "8" }, { "name": "9", "value": "9" }, { "name": "10", "value": "10" }, { "name": "11", "value": "11" }, { "name": "12", "value": "12" }, { "name": "13", "value": "13" }, { "name": "14", "value": "14" }, { "name": "15", "value": "15" }, { "name": "16", "value": "16" }, { "name": "17", "value": "17" }, { "name": "18", "value": "18" }, { "name": "19", "value": "19" }, { "name": "20", "value": "20" }, { "name": "21", "value": "21" }, { "name": "22", "value": "22" }, { "name": "23", "value": "23" }, { "name": "24", "value": "24" } ] }, { "default": 2.0, "label": "Mode", "longdesc": " - Average\n Transforms space each iteration.\n The input image is evaluated for each iteration, and at the end the average of all evaluations is returned.\n Using operators like Mirror is possible to repeat space.\n - Blend\n Transforms space each iteration.\n The input image is evaluated for each iteration.\n Each iteration the previous image is combined with the current only using the specified blending mode.\n Using operators like Mirror is possible to repeat space.\n - Fold\n Transforms space each iteration.\n The input image is evaluated only at the end.\n Using operators like Mirror is possible to repeat space.", "name": "mode", "type": "enum", "values": [ { "name": "Average", "value": "for_avg_$name($uv)" }, { "name": "Blend", "value": "for_blend_$name($uv)" }, { "name": "Fold", "value": "for_fold_$name($uv)" } ] }, { "default": 0.0, "label": "Blend Mode", "longdesc": "The algorithm used to blend the result of each iteration", "name": "blend_type", "shortdesc": "Blend mode", "type": "enum", "values": [ { "name": "Normal", "value": "normal" }, { "name": "Multiply", "value": "multiply" }, { "name": "Screen", "value": "screen" }, { "name": "Overlay", "value": "overlay" }, { "name": "Hard Light", "value": "hard_light" }, { "name": "Soft Light", "value": "soft_light" }, { "name": "Burn", "value": "burn" }, { "name": "Dodge", "value": "dodge" }, { "name": "Lighten", "value": "lighten" }, { "name": "Darken", "value": "darken" }, { "name": "Difference", "value": "difference" } ] }, { "control": "None", "default": 0.5, "label": "Opacity", "longdesc": "The opacity of the blend operation", "max": 1.0, "min": 0.0, "name": "opacity", "step": 0.001, "type": "float" } ], "shortdesc": "Fractal" }, "type": "shader" }, { "generic_size": 1.0, "name": "scale", "node_position": { "x": 517.922607421875, "y": -119.668701171875 }, "parameters": { "cx": 0.0, "cy": 0.0, "scale_x": "sin($time)*0.5+1.0", "scale_y": "sin($time)*0.5+1.0" }, "seed_int": 0.0, "type": "scale" } ], "tree_item": "PF/Image/Op/Fractal Example" }, { "display_name": "Juliaset Fold Z2", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAA+5JREFUeJztWc9LMlsYfr5Li1q1iNq2aRsEbYKggqAWbQL/hujHwk1Q0TIx2kXUwiLox6JyESQVUjSZSjGVYtkvbSzRCLNVSZhU8N7NvVI5o97Uef3uNw88ML7vOed9znPOmRn1FwDCH4y/uAVwQzOAWwA3NAO4BXBDM4BbADfYDRgbG2Ot/wvai9CfDVYD7HY7Z/kkiINnZ2csdb+TbQdUVlYCAO7u7gAAJpMJMzMzLFrYVwEA9ff3EwDq6elRuzbPhAVBUMxNTk7+/w2Q4/j4OEfdzI3sdvuPCwQCAXZji34HzM3NsdUu6Jvg8/MzysvLCzV8XqC9CislBEEAABgMhpRcLBbD8fHxl9jT05PsOPf397noUwW0u7srez7W19fp5uaG3G43XV9fEwCKxWLs94y88r9OyO/30+XlpWxuZWUlbd+1tTUCQB8fH2Qymfgn/8/x/xLQ6/XcgngNkGNfX59ibnt7OyU2ODhI8/PztLCwQN3d3VmLMRqNxWFAIpEgAFRRUSHbaWJiggCQJEnJmNlsplAoRDabjQRBoNvbWwqHw2SxWNIKWF1dLf4dIMfq6urktSRJZLPZSKfTkSiKZDabKRaL0fv7u+wOyYUejydjm4GBAQJAj4+PPzegtrY2J6Fut5ucTueX2N7eXtb9r66u0uanpqYUc4uLi4XfAZkYCoVSYktLS7JtHx4ecq63vLz8076FMcBgMGTVLh/3gEgk8uVzPB6n09NTdQw4PDxMXgeDQXI4HIqrI4oiuVyutOO1t7fLxre2ttLG/r1xA6DOzk51d8Db21ted0+2X78lSaLZ2dlc6+UmNhqN5nXyAKilpSWrdhaLhZqamngNkCSJHA4Heb3evBvxnZ9X2+v1Ujwep52dHV4DsuHm5qZiTulZ3dDQoNjHaDRSOBym19dX8vv9JAgCRSIRcrlcVFNTk2zndrszalPlZ/GOjg7FXFVVlWxcFEUAwMjISErO6/Xi/PwcFxcXCAaD8Pl8mJ6eRllZGQKBAADA4/Ggvr4+K30F3wHZ8uXlJeu2bW1t1NvbS62trSm5rq4uslqtxXMEcmFzc3Oha/BPUm2Ojo6S2WwmgPGvsXzD6XQq5jY2NgAAVqsVQ0NDiEaj0Ol0yTz7inDw01d5fjFqMxgMfv7MLyhbiqKYsc3JyUnavMzvCfwTy8Sjo6O8jufz+ZLX2h8j3AJ+ikQikZdxflsDSktLAQAHBwc5j8V+xuWo1+uprq6u4HWK8h5gt9tRUlKCxsZGVeqxr3Y6Dg8PF7oG/yS/c39/X7VaRXkE1MRv+xTIFzQDuAVwQzOAWwA3NAO4BXBDM4BbADc0A7gFcONvLg3QpK6FekEAAAAASUVORK5CYII=", "name": "Image_Juliaset_Fold_Z2", "parameters": { }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "RGBA Input", "type": "rgba" } ], "instance": "", "longdesc": "Transforms a RGBA making the Juliaset fold Z^2 transformation\n\nCode - PauloFalcao", "name": "Image Juliaset Fold Z2", "outputs": [ { "rgba": "$in(vec2($uv.x*$uv.x-$uv.y*$uv.y,2.0*$uv.x*$uv.y))", "shortdesc": "SDF3D output", "type": "rgba" } ], "parameters": [], "shortdesc": "Image Juliaset Fold Z2" }, "shortdesc": "", "tree_item": "PF/Image/Op/Juliaset Fold Z2", "type": "shader" }, { "display_name": "Simple Scale", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAmlJREFUeJztmcFqo1AUQE8mKvoklhRDBLPpWmg+wh/oJ80n9Qf8iC5cZxUwm0AMPlOVzixKpJnp1ncLeQck4OYdDhe9khnwhzvml7SANDaAtIA0NoC0gDQ2gLSANDaAtIA0NoC0gDQ2gLSANDaAtIA0NoC0gDQ2gLSANDaAtIA0NoC0gDSOxKF5npMkCUopALTWVFVFURTGXWYY/GMkz3OyLCNJEqIowvM8ALquo65rqqqiLEujIYxNwMvLC9vtljRNeXx8JAxDXNcFoO97mqYhjmOWyyWLxYLX11cjXkYC5HnOdrvl6emJ9XrNw8MDSikc5/P4YRjQWhOG4TgV5/PZyCQYCZBlGWmasl6vieOYKIoIguAmQBAE40R0XUeWZUYCzIHfUx6Q5znPz89sNhtWq9U44kopfN/H8zwcx2E+nzObzfj4+GAYBt7f3wHY7XZT6k0/AdcHXhiGKKUIggDf9/F9/2YCrr9KKcIwJIoikiSZWm/6AEopPM/DdV0cx/nvGkW+3HNdF8/zxtfklNhFaOoDtNZ0XUff9wzDcHNd+fd+3/d0XYfWemq96QNUVUVd1zRNg9b65un/9RlwuVxo2xatNU3TjIvR1EweoCgKsiwjjuOb5WcYhpsAbdtS1zWn04nj8WhsNTayB5RlyXK5HJecvu+/XYROpxOHw4H9fk9ZlibUzAQoioLFYgF8LjlN03y7Ch+PR/b7PW9vb8a+B+7+Y8hogCt3+zn8E7n7RcgGkBaQxgaQFpDGBpAWkMYGkBaQxgaQFpDGBpAWkMYGkBaQxgaQFpDGBpAWkMYGkBaQxgaQFpDmL8T/AAT8pgt4AAAAAElFTkSuQmCC", "name": "Image_Simple_Scale", "parameters": { "scale": 1.0 }, "shader_model": { "code": "", "global": "vec2 scale(vec2 uv, vec2 center, vec2 scale) {\n\tuv -= center;\n\tuv /= scale;\n\tuv += center;\n return uv;\n}", "inputs": [ { "default": "vec4($uv, 0.0, 1.0)", "label": "", "longdesc": "The input image", "name": "i", "shortdesc": "Input", "type": "rgba" } ], "instance": "", "longdesc": "Scales its input\n\nCode - PauloFalcao", "name": "Image Simple Scale", "outputs": [ { "longdesc": "Shows the scaled image", "rgba": "$i((($uv-vec2(0.5))*$scale)+vec2(0.5))", "shortdesc": "Output", "type": "rgba" } ], "parameters": [ { "control": "Scale1.x", "default": 1.0, "label": "Scale", "longdesc": "The scale amount", "max": 1.0, "min": 0.0, "name": "scale", "step": 0.001, "type": "float" } ], "shortdesc": "Image Simple Scale" }, "shortdesc": "", "tree_item": "PF/Image/Op/Simple Scale", "type": "shader" }, { "display_name": "Code", "generic_size": 1.0, "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAI5JREFUeJzt0rENwCAQBME30H/LduAiNmBW+pjTiGetec/MVLfDt/87c3UAAACoJ7QBAACgntAGAACAekIbAAAA6gltAAAAqCe0AQAAoJ7QBgAAgHpCGwAAu57Q5gcAAFBPaAMAAEA9oQ0AAAD1hDYAAADUE9oAAABQT2gDAABAPaENAAAA9YQ2AAAuB/gAJZ4D97ubRUQAAAAASUVORK5CYII=", "name": "Image_Code", "parameters": { "code": "$in1($uv)" }, "seed_int": 0.0, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec3($uv.x,$uv.y,0.0)", "label": "", "name": "in#", "shortdesc": "Image #", "type": "rgb" } ], "instance": "", "longdesc": "Executes the code in the parameter\nExamples:\n$in1($uv)\nvec3(uv.x,uv.y,uv.z)\n\nCode - PauloFalcao", "name": "Image Code", "outputs": [ { "rgb": "$code", "shortdesc": "Image Output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0.5, "label": "", "longdesc": "Examples:\n$in1($uv)\nvec3($uv.x,$uv.y,0.0)", "max": 1.0, "min": 0.0, "name": "code", "step": 0.1, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/Image/Op/Code", "type": "shader" }, { "display_name": "HDRI Subtract", "icon_data": "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", "name": "Image_HDRI_Subtract", "parameters": { "value": 0.0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "HDRI", "name": "hdri", "shortdesc": "Image Input", "type": "rgb" } ], "instance": "", "longdesc": "Subtract a fixed RGB value from the image\n\nCode - PauloFalcao", "name": "Image HDRI Subtract", "outputs": [ { "rgb": "$hdri($uv)-$value", "shortdesc": "Image Output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 1.0, "label": "Value", "longdesc": "Value to be added or subtracted", "max": 32.0, "min": 0.0, "name": "value", "step": 0.1, "type": "float" } ], "shortdesc": "ImageHDRI Subtract" }, "shortdesc": "", "tree_item": "PF/Image/Util/HDRI Subtract", "type": "shader" }, { "display_name": "Magic AA", "icon_data": "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", "name": "Image_Magic_AA", "parameters": { "Gamma": 1.0, "Samples": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "// RANDOM START\n//from https://www.reedbeta.com/blog/hash-functions-for-gpu-rendering/\nuint magicaa_rand_pcg(inout uint seed){\n uint state = seed;\n seed = seed * uint(747796405) + uint(2891336453);\n uint word = ((state >> ((state >> uint(28)) + uint(4))) ^ state) * uint(277803737);\n return (word >> uint(22)) ^ word;\n}\n\nfloat magicaa_RandomFloat01(inout uint state){\n uint r=magicaa_rand_pcg(state);\n r &= uint(0x007FFFFF);\n r |= uint(0x3F800000);\n return uintBitsToFloat(r) - 1.0f;\n}\n\n// RANDOM END\n\n", "inputs": [ { "default": "0.0", "function": true, "label": "", "name": "in", "type": "rgb" } ], "instance": "vec3 randomAA_$name(vec2 uv){\n\tfloat dx = dFdx(uv.x);\n\tfloat dy = dFdy(uv.y);\n\t\n\t// Init random\n\tvec2 rndgen=vec2(\n\t\t\t\tfract(sin(dot(uv, vec2(12.9898, 78.233))) * 43758.5453),\n\t\t\t\tfract(sin(dot(uv, vec2(37.1235, 67.734))) * 73748.3423))*17243.0;\n uint rngState=uint(uint(rndgen.x)*uint(1973)+uint(rndgen.y)*uint(9277) + uint($time*1000.0) * uint(26699)) | uint(1);\n\t\n\tvec2 xy;\n\t\n\tvec3 aa=vec3(0.0);\n\tfor(int i=0;i<$Samples;i++){\n\t\txy=((uv.xy+(vec2(magicaa_RandomFloat01(rngState),magicaa_RandomFloat01(rngState))-0.5)*vec2(dx,dy)));\n\t\taa+=$in(xy);\n\t}\n\treturn pow(aa/float($Samples),1.0/vec3($Gamma));\n}", "longdesc": "Generates an image anti-aliasing using random points in the pixel space.\n\nCode - PauloFalcao\n", "name": "Image Magic AA", "outputs": [ { "rgb": "randomAA_$name($uv)", "type": "rgb" } ], "parameters": [ { "default": 18.0, "label": "", "name": "Samples", "shortdesc": "Number of samples", "type": "enum", "values": [ { "name": "1", "value": "1" }, { "name": "2", "value": "2" }, { "name": "4", "value": "4" }, { "name": "6", "value": "6" }, { "name": "8", "value": "8" }, { "name": "12", "value": "12" }, { "name": "16", "value": "16" }, { "name": "24", "value": "24" }, { "name": "32", "value": "32" }, { "name": "48", "value": "48" }, { "name": "64", "value": "64" }, { "name": "96", "value": "96" }, { "name": "128", "value": "128" }, { "name": "192", "value": "192" }, { "name": "256", "value": "256" }, { "name": "384", "value": "384" }, { "name": "512", "value": "512" }, { "name": "768", "value": "768" }, { "name": "1024", "value": "1024" } ] }, { "control": "None", "default": 1.0, "label": "Gamma", "max": 3.0, "min": 0.0, "name": "Gamma", "step": 0.1, "type": "float" } ] }, "shortdesc": "Does not wotk with TAA Render", "tree_item": "PF/Image/Util/Magic AA", "type": "shader" }, { "display_name": "TEX3D to Image", "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAENBJREFUaIFl2sty48rRBGBcGgQBkJQ0xxv7hfz+7+CFT4x9dCFBXIiLF59Yofh/LSZmRiS6uyorM6sa+T//+c9//etf1+t1HMdlWYqiOBwORVEcj8e2bYuiqKrq5eWlbds8z5um8c+iKMqy3Lbtfr/P83w4HA6HQ13XVVUty3K/38dxzPO8KIppmvZ9P5/Px+Nxnud1XbdtW9c1y7Jpmvq+7/veZ47Ho0Xbtq3r+nQ6VVV1Pp/XdbXKOI73+70sy8PhkOe5tdK///3v379/3+/3ZVkcIMuytm3HcXw8HmVZvry83O/3dV3Lsrzf713X3e93i23btm1bnufTNJVlaetZlt1utyzL5nkuimLf9zzPPz8/LVHX9b7vj8djnudpmvy573uWZdu2ZVmWUkopCWJZluM4Zlm2ruuyLPM8b9t2OBwsl+d5nufper1O02TJLMtkwFMs7/Tn87lpmn3fp2kqiiLP833f53lumsaHl2XZtm2apnVdb7dbnueCve97URTLsjiJRG3b9ng87vd7LFcUhcwUz5+yLOd5XpYlpeRXj8cjpWTdsiztNk3TtG2b7wuD70/TlOf55XIRjCzLqqqSu5RSVVW2KCfLsvjn4XB4PB7Scrvd1nWVzGVZ+r4/Ho9d1+377mzbtlVVlVISy7quD4fD8XisqqooinVdoeB4PALPtm3zPKeUHo/HNE2WTp4ld+u67vvuDLbrL1VVdV13Op3KshSDlFLbtlmWAcO+7xaDS3AS43Vd8zwHrWmabM6v1FVd14JSlqXkwJgzgE0cIFKd57k8pG3buq5zhqIoAHfbNsUkQlVVHY9Ha8iGvEvIuq5wDBg2tCzL4XAAm8fjkWXZ8Xj0dWAYhsHZ8jwX9TzPt21zeJnM8zyw7kiPx0PE53kWu/LXr19Zlnk0gJ7P58vl0nVdWZb+v23b0+mEImR233foPB6PWZZZY1kWB4Z72xI2z4H1pmmcwfHkU2iVCrbY972qqnVd13UFMyH3l/f3d3hJx+PR4eq6fjweziCbSAmjNU1zOp2CcLBYXdfrugq5ys6ybN/3l5cXjISIl2VRncfj0TGGYRCLsixRqmzYwDiO4zgqzn3fh2EAv3i++gHdb7YJ7Ab9H49HMVbZKgz4hLOqqrIsxclKHgct8zzbVlmW0zSJ97ZtTdOUZfn3v/99GIb39/d4PsoGdxUCS2VZDsPg2HKLfFXd19dXCtTConh/M1RK4hosBk7CIHhVVWGGZVmkCLfIpyjahBDiA5tumsY5gRuEhmGwHKxfLhePUnug+3g8okLS8fnjd2VZNk2jOtGfCnHotm19ct93UCbDwzCo5pRS0zT2ZB+OejgcyrKsqgruVZfC9VugB0Vwwito1H5wjB3SxHVdk6C+vb1JCqkDj6ZppmlalgWujsejYsAqWZapOeHxaHACCdlbluXr6yuYet/32+1GCixEH4ngTxoF/fP5jPRIkxiVZYmO7vd7ent742GwkNiQTGgmLofDwRlgkQVQA3Qe3MVJYVRVBSrrun5+fsK3/KSU6rqm4haVCh8W2q7rgnk9ExdN04TZ7/d7VVXpcrkE2fFkpNsBbAU1+Zo6VhLTNA3DQFnquu66ToQOh0PXddg2il425nlWId9OJiXkwybC7TAMAh+S7wk0SlzI1DiOSRjkzhMhzBnqugZomcGGISIhw45d1/U8zyrVV+R9mqZxHE+nE7EXCyTx84TxA0I4F8kWRXE+n8O83O93AtK2bXp9ffWP2KucDsMgltQA8uCkrms4tnXEp2rLsuQ4uCO1GLwhorIBHhBoaS4tPX8Ug1zVdQ3GniOaoYDpdDqhIF5XAdifEve4qMIAOn1xVL6Vxw532ff97XbDVOM4kkVfZyezLFMMRVFcr1caWlWVIm7b1k4ClrfbraoqVP59hnEclWbTNCAEu065LEvbthYAhlBW3Iry8D2Rl3fhBFnED+6RBD/cB8njSlCCTIp6UILGiGhIe5ZlKcuyvu8BiffAUIIUAfMgJjaaD1wUntFKuJgwBUuG4kL2tm3DMGA/RexsbNWyLCoTZZO8iC/pbJrm4+OjLMtkf8uynM/nw+EgEiFA2oD9+SO/wzB8fX0NwyDM9/t9GAY8C1SkgIB4AmJQY4o4+icH83DZA+yg7CzLTqdT1EnTNLfbbZomfUiqnz/ixFqzSspXLYZfUhh+7ve7qqL/dV1HQoDBeuGCwm6dz2c5FAKNQVEUtF8cbSMY3EOsrvQx+LeTq+v69fWVVGVZdr1efW4cR3AHOPIBCU6oJYfjKA+2kWwzJjApUl3XkTNYjTxj5MiPbIfDQ5qW4OeU6DfsZPnXr1/M4+vr6zRN1+uVRsJDnuc8GazXdY1ePRH6lSx6bZrGdrk01Ok8wiHM2BnJ4gOxiGYQqHwmkgAOVVWl0C+WI8YV0f6BTWiwcNZ1PY7jy8tLlmUfHx/ACi15nmPe0+n08vLSNA0+1akCJAZsmgb2nNDXiSNhDc2WK1WktIqi+PPPP/M8T29vb0rEWTGxEIYh47SK58gIz4BNXde/fv2yp2gADHawQpi/kDYCAh5+5dhUPJx8tHiwJ3yi07Zt3/dvb2/jOCZDK81KdJzWCD8nQvM8R8c8jiOhwG5I1ufVq/1lWXa/31FKzF0gLdyyw/R97xiQFizkmUoiyzJFBdhqNekV1Qr8aTKRQGgqdRSY4jm08ZQwS7hCOIrnwMfhAQ87yYaSDSP9U/jbtj2fz8AToIhmCLWwDkVRpHCqzFlKSY3blmhFjL++voJttm07nU7DMDi8yoF4lhO4HYx1lVg8Yce6VlilJOY3f/zxR0pJWhSYPXCEX19ft9sNUhK2EiqOLQKjpCwpBsuyOBKkBcTHcRTReZ6lXjPOgwRjqkItL33cto20m/zpvDU6wCPYANl1Xdd1Yea+vdDlclHUTDkiY4zDqIzjqMkwhFTZxgpSIcz2ivX8PdiQgXVOxsG3wonZMSPMAmmkTHckFkw8UKnM85wOh8P5fBZpcGJ02W6H0Wtz4STQwfSc2qiYrJgMEGlagc6lFHDJZbSgMU3an4PUSLuDdV2n3sxwtdHfruSPP/5gFQ+HQ9/39OJ4POK7PM+Z5L7vPY7WIrUQmuiY7Awao5X7yaEc/0/lMXSZ57nrOkLkkGHaopW1gbgGEKbvBlnWqqoyrNZ3tm37eDykntni3cmciiQgeDpcClLyQOc0d6DEPhPtTkwAQtHKsrxer13XxegXOmKE4YvzPP/+/Tv95z//ET9GZRgG7Sx9kfRQrmmaYvhuPXAnvVBkhhXDwLglkQqAjClVyLPibtvWAZhcCTQNYQjoDAJg5tP1ej2dTvM8f319hTXHANEHhh7F6AUzeBwvGbNUlW0ew5mpfi2Rls39jQfGeVJKMYR7PB7v7+8xocqec38c4OskP/V973/pBVaRoOw59LWnYRh80qoyUNc18lZIXMn9fr/dblHEDiarcBw9QN/3KDV/DrRjCMlvknypgz3XDqip67rvVv3r60uvCc1qzok/Pj7e39+5LgUXtavbjLEC/qmq6nK5IHhKElcQ6s1Iz9wqikGYgqkifLIHgYrTZwChbdtkZCAAKl3ZBXXEOAjJ+K0y0viF+UNcCpFLj/44hvrbtgkhngi7rkFFo9frdVkWlv5yueDu6/WKURC6sVpVVd9u3vmiccayf/31F2f7t7/97Xq9Xq/XWDI8lnFQcK7WVOoiEOl5saXs5DC+AjOQ3Lbtt0FISaP38fGBxH3MRFr2SFtS9aFQEocuabuE4i8yRw6XH1eaxtT8DO7bnoN4zReBjwPIqhXVhlbper2+vb01TdP3PfVdlkUS3t/fge3PP/8kJnxngkI+LBIaCTJWMdJB1TgxbvKiLyuKouu6ECkuKK4wYpqUP6/DtueVphkCtdGyutrSuCjioii4N0j7/Py04uPx+L7nyvPckhwILPofmcqet4BMIidnN7ioeA6oJZOnUF3wqb2MZp+7xraSeT6fKQ9VRifbtv3+/btt258JDCtRVVUisT6KqtBR9bze86s8z92qGzkBsfvg7Xk98/8jHS2LBMaloEvvdV2B2zlZTqwfFUJP5SHi4lHfo2gDptPpJOOEVo9vNna9XrmD0HyR1gkAImLVtdxuN1iyA3zKrUiXm3MAiN7SjES6okKUR3reEaIyxBBdSgrdVoikwJQlBkzuqH/9+sUIXa/X0ClTFiHHPObBNkc1y+e9AXqIfiPirX4CS4aFchVmW5Z4tvDVZVmmvu+j2gArpXS5XNibaKyK51sP4zgKSRjP7Mc1KyseItr3fUwxpAtXQsXb25vYo4TieQPtbDRLEyP5QXHk8ttKRHPEu9LOcRxdkJjVSZncqWA8LWMBbmGmbm7NaLOK58yGYej73u7Dw6sEu7SQRWOOAgvsIKzG1V4SGJ34zx7g9fWVrOr3XDTYVlze0DJVqBJ8TKGn5/0KGuClU0p8NUBLbPAYRaf3SkIZVFUlFhE15uL7gsMogQ+LgQrnaAehAGKPpHkvw6niefND5GOKGrRjWG0ebK8ITe/6+voKEtEuhnLHaDXGLQo9JCtdLhc73p9XvzHw0MfQBD5UJNAl2WY92FUVj088TfEUz2vzMKEAE1+Be9MkGk+LYrrzeDz07o5UPK+ndq8a7PtOhoEsAvbx8RHDGZtmK7Cq2ETGVW3cmmnzOTZ+JNq64nl9FgPGdV15Ywhs27Z83ppBUaTFbMHft237/PxMP8dSUGExunu9XqVMUONtJ9lAuHD1c/iFTxgQi4GEWMTmfMXJx3GM2+wgfgvZGxoQkfX5+keWZQkEZSCA/vn5qXtcflwIqNdAmgqO4ym7LMu86RE3YtFgKJJQt3hDh42L0IKr/cWdog0EEKBI/hNmjfYcz2BSuzydToBIQdPzckWRMJv/R56chyvRSarO+/0eQwoSK954Zv3x5kW0kRwKqlQSypc+juOYQjWXZQk5tAP5ctYY15ifZs83ND4/P4098Lf2uus6/pFPATA5FKCgjez53kgMbHRthJbImKY5w/J8hY52DcOQTNowgBFVvBH0c/6hfKMGyh+XoRBi9gQ2UQC6sHg5bdu2vu+X5yWkZ0ZOIIQbMDszdQQbKi6CTP73+0LfiUgpOvqY2Rs3iAqECFvf91on0wHhjJtG+/D/jqeV0/cwXbhYaIi62GkPbQmW9He2AVQ/3xdbliVReOO7qE5BkhkW3LkVutZ2ew7fRVpRer2HaAzDoE0BMCcHdOdEL/GKrM3JWLRZODSqCwqc/PuVrGBlHJo9b1lCLKrnZYRVGXcJyZ6XIAYQMcHELfG6LTh5HUrFG+JSG2+PxvBCMTweD+QRt+vcbvgXr/DUdZ0UGafxLc4p5XmutVfKpDQ9X5eI6T5Fw+VeN/7vf//rhYDsOUYHejjhVUPsPdxrF/AWU/Xi+dpTXIr6DJiFwizLkoZhcB8ams/Kxq1gUCRnahSFVRyGcIponud//fWXDiasnhq73+8mtU7CVIfA+/FJyIxaivlxqK+jfisGIyCQBr/4J+YFAVZg0z2bNPLJVqX28KMW7cA/hfzxfNFNOT2e7+ygIF0vg20tFiMMSJ7nZio+b+fpH//4R8yQId4X0Ks5lONFNhxYRdrc6XTC2QEwrjt/vsC0P9+V9FvzY4eMCTv+8Znl+ZoCMkQJ+Y+bzJipJe8oxixS16PSGXcWbX9O1/Lnuzb4BLR4AY3/t0VJKf14cUEmGW+jdiOw0CY0AHUC7E/ndDCD4RgdANj/AHZd7lv4V/AQAAAAAElFTkSuQmCC", "name": "TEX3D_to_Image", "parameters": { "Axis": 0.0, "f": 0.0 }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "TEX3D", "type": "tex3d" } ], "instance": "", "longdesc": "Type - TEX3D Util\nCode - PauloFalcao\n\nConvert a TEX3D to Image\n", "name": "TEX3D to Image", "outputs": [ { "rgb": "$in(vec3($Axis)).rgb", "shortdesc": "Color", "type": "rgb" } ], "parameters": [ { "default": 0.0, "label": "", "name": "Axis", "shortdesc": "Axis", "type": "enum", "values": [ { "name": "X", "value": "$f,$uv.x,$uv.y" }, { "name": "Y", "value": "$uv.x,$f,$uv.y" }, { "name": "Z", "value": "$uv.x,$uv.y,$f" } ] }, { "control": "None", "default": 0.0, "label": "", "max": 1.0, "min": 0.0, "name": "f", "shortdesc": "3ยบ field position", "step": 0.001, "type": "float" } ] }, "shortdesc": "", "tree_item": "PF/Image/Util/TEX3D to Image", "type": "shader" }, { "display_name": "RandomNoise2D", "icon_data": "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", "name": "Greyscale_RandomNoise2D", "parameters": { "seed": 1.0 }, "seed_int": 0.0, "shader_model": { "code": "", "global": "float random2d1d(vec2 c,float seed) {\n\tc = fract(c*17.15)+5.0+seed;\n\tc += dot(c.x, c.y);\n\treturn fract(c.x*c.x*c.y);\n}\n", "inputs": [], "instance": "", "longdesc": "A simple 2d random noise\n\nCode - Paulo Falcao", "name": "Greyscale RandomNoise2D", "outputs": [ { "f": "random2d1d($uv,$seed)", "shortdesc": "Greyscale Output", "type": "f" } ], "parameters": [ { "control": "None", "default": 0.5, "label": "Seed", "max": 1.0, "min": 0.0, "name": "seed", "shortdesc": "Random Seed", "step": 0.0001, "type": "float" } ], "shortdesc": "Greyscale RandomNoise2D" }, "shortdesc": "", "tree_item": "PF/Greyscale/RandomNoise2D", "type": "shader" }, { "display_name": "Axis", "icon_data": "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", "name": "V4V4_Axis", "parameters": { }, "shader_model": { "code": "", "global": "", "inputs": [], "instance": "", "longdesc": "Input Coordinates\n\nCode - PauloFalcao", "name": "V4V4 Axis", "outputs": [ { "shortdesc": "V4->V4 Coordinates Output", "type": "v4v4", "v4v4": "$uv" } ], "parameters": [], "shortdesc": "V4V4 Axis" }, "shortdesc": "", "tree_item": "PF/V4V4/Gen/Axis", "type": "shader" }, { "display_name": "Coordinates Boolean", "icon_data": "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", "name": "V4V4_Coordinates_Boolean", "parameters": { }, "seed": 0.0, "seed_locked": false, "shader_model": { "code": "", "global": "vec4 coord_union(vec4 a, vec4 b) {\n if(length(a.xyz)V4 MFSDF A", "type": "v4v4" }, { "default": "vec2(0.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF B", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a boolean operation (union, intersection or difference) between two shapes", "name": "V4V4 Coordinates Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "coord_union($in1($uv), $in2($uv))" } ], "parameters": [], "shortdesc": "V4V4 Coordinates Union" }, "shortdesc": "", "tree_item": "PF/V4V4/Op/Coordinates Boolean", "type": "shader" } ], "name": "PauloFalcaoRayMarching" }