{ "lib": [ { "icon_data": "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", "name": "pxflib", "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": "Type - SDF3D Generator\nCode - Blackle\n\nGenerates a stanford bunny using a neural network using Blackle code from https://www.shadertoy.com/view/wtVyWK", "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" }, "tree_item": "PauloFalcao/SDF3D/Generator/SDF Neural Standford Bunny", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "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": "Type - SDF3D Generator\nCode - PauloFalcao, Blackle\n\nGenerates 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", "name": "SDF Neural Fox", "outputs": [ { "sdf3d": "paulofalcao_sdf3d_generator_neural_fox($uv)", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ ], "shortdesc": "SDF Neural Fox" }, "tree_item": "PauloFalcao/SDF3D/Generator/SDF Neural Fox", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "RepX": 4, "RepY": 1, "RepZ": 4, "X": 1, "Y": 1, "Z": 1 }, "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/c+0.5),vec3(0.0),l);\n}", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - IQ\n\nRepeats its input shape", "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, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4, "min": 0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4, "min": 0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4, "min": 0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128, "min": 1, "name": "RepX", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128, "min": 1, "name": "RepY", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Rep Z", "longdesc": "Repetitions in the Z axis", "max": 128, "min": 1, "name": "RepZ", "step": 1, "type": "float" } ], "shortdesc": "SDF Repeat" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 4, "Iterations": 2, "SmoothX": 0, "SmoothY": 0, "SmoothZ": 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": "Type - SDF3D Operator\nCode - PauloFalcao\n\nRepeats its input shape with smoothness using reflection symmetry", "name": "SDF Smooth Repeat", "outputs": [ { "sdf3d": "$in(smoothrepeat_$name($uv,vec3($SmoothX,$SmoothY,$SmoothZ),vec3($X,$Y,$Z)))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 3, "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, "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, "min": 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, "min": 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, "min": 0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 0.1, "min": 0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 0.1, "min": 0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 0.1, "min": 0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Repeat" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Smooth Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 4, "SmoothX": 0, "SmoothY": 0, "SmoothZ": 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": "Type - SDF3D Operator\nCode - Blackle\n\nRepeats its input shape with smoothness using reflection symmetry", "name": "SDF Smooth Repeat V2", "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, "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, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4, "min": 0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4, "min": 0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4, "min": 0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 1, "min": 0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 1, "min": 0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 1, "min": 0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Repeat V2" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Smooth Repeat V2", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 4, "RepX": 3, "RepY": 3, "RepZ": 3, "SmoothB": 0, "SmoothX": 0, "SmoothY": 0, "SmoothZ": 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": "Type - SDF3D Operator\nCode - Blackle, PauloFalcao\n\nRepeats its input shape with smoothness using reflection symmetry with a smooth box limit", "name": "SDF Smooth Repeat V2 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, "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, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4, "min": 0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4, "min": 0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4, "min": 0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128, "min": 1, "name": "RepX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128, "min": 1, "name": "RepY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Rep Z", "longdesc": "Repetitions in the Z axis", "max": 128, "min": 1, "name": "RepZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 1, "min": 0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 1, "min": 0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 1, "min": 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, "min": 0, "name": "SmoothB", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Repeat V2 Limited" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Smooth Repeat V2 Limited", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "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": "Type - Image Generator from SDF2D\nCode - IQ\n\nIQ SDF 2D distance coloring from https://www.shadertoy.com/view/3ltSW2", "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" }, "tree_item": "PauloFalcao/SDF2D/Render/SDF2D Distance Coloring", "type": "shader" }, { "connections": [ { "from": "buffer_2", "from_port": 0, "to": "gen_outputs", "to_port": 0 }, { "from": "4690", "from_port": 0, "to": "buffer_2", "to_port": 0 } ], "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAHplJREFUeJydm2msJNd13393qaW7X79l9n0hOSSHpkiKGkuUZJmUTMWiowWwE8mObThGYlhyAAt2AiSGszAxYARB8sEBDCQfYiSAERtGjCyOFXmLLdGkFEemSUoiOcPhcPZ93rzXa1XdLR/urXo9o5GX1OBNdXdV3XvP9j/nnnNKHHroo4E/5wj8uZfvcQjonhF/xWf/oqdEd/r/GTnc/SmAvvsSCIRY/CaBQAjceV587B6rEYvjCnHXNbF407cf5F5jCkFaRBo3LCz/HuIK9xCg2DprKQVSKKSSKCnJsowiz5FSprkCznm89zjnqJsGYy0hhHjN+7v4F9JSWjLFwryt6Bau3MEc8efyRMq4RqUUWiuU0igl8d5jnaNpDNYabFrfPRkgQAmVrgf0nl27GPT7rAyX6fVKrDE47wkhYK3FWEvd1BhjaYxhOBx2xG9sjphMp5HvIQ4uwl3S7b6Kjlghti6KRYaIb68FWisG/T5lUSBEvNd5T103NMbive/GklIR0nchogZ778myDCEESkqEEGit0I0xlM6T5xmryys4Z7HOYoxlOpshpCDPMgb9PlmW4b3n9uYmk+mU0WhMnmedBO7Wv7Ao6zuIFx2xW9/vZMTWs/H7yvKQpcGg+61uGoyxWOdwzmGMvdN0pcA7j1RRF5VSSClZWR6ipMI5hw8effjAwcgdnQFEEygKGmPQWmOspV+WACilMMawMhzSmIayLPDBY0xUOev8HcKPnxa+LRB/ByOE6MyhM5zEEK0Uy0sDskyndWp6ZUlZFhRVjrEW5xzzqqJuGqqqwvuo3kIIvA9IEaJWhKipO7fvoCwLMq3Rw6UlpBRkWUYIAR/ANAYhBL2yR0nAWof3jroxeO+o6hpnHd4HtIpMEkKilejMZ5H0lthFghESsciMlnjxreYyrxsa61hbGVIWJVIqxtMZxhgaY+j3SrRSrAyHXL1xk6ZpcM7ik51bH82ZpP4ry8sM+j2KPEdvjEZYa+mVJcvDIYSAdY4syyiLPEkk0BhL0zQYY7i9uYlzHq0Vs2reaYAQi8AnvtUEWkKFTITLjgGRGTJdj8+0DDTWE4LgwJ69PHj/Ea5cu05jGpaXBgz6fcaTKaPJmJvrt3HOdWuBiIFCRHMMITCdz7l1+za9Xo/GWrQQ0BjDeDplczxOIBPt3vR6aK3wPqq5kIKqqQFoTPQGxliUiuplrN2Se1iUfCQn/pMdsXczQqYznYlsHVJK1lZXObJ/P/cfOkRV10znc0IIaK25dXsT7wN5lhMCeB8Z4b0nBJ+Am/Q94L0j0yXaudaFNEyms2gXWpNlmnI2o8zzaEsh4kTw0SSkkAz6gw4sbeJ8u9gFONr6W1T/hT+ZUDmeJUrJJLmosnmWgYDxdMZoOuPshUsIqfjGybcxxiCFIM8zmqZBdAivkULQGEOmc6azWbee8WSKEDLi3MZoxHg6xTnPfD5HKRU1IM8ospylQR+tNT4EJHMCIJXCWIv3AaUU1rkEPFFyIYREZPL7QiCVZNDrM51X6fcF4qVESoUUMQ7p90q895RFydFD+zl25DDnLl7myMF9fPPUGaq65tSZ80ipUCqqu7EOrTSt7/Heo3SMEeZVq5lxvUuDAUWeM5lO0ZPJlPFkgveeuq7RWdSAumkwhcGHQL9Xdr5fK00IHuc9jTHcd/gw+/fuYzyZcOb8+QWp3yV9JM6HZOcymoKQCKEo8hwfoMgLnnz0OMeOHOLB+46wZ+cOvvM9B6CAP/3qFcoi583TZzh78RIg+MbJU4nAOZnO0Uownc2QUmKspzY2zRHNZGnQJ4RAnuecu3gJrTW6qmu89zSNiXbcGJzznfrNRUUIIUaJWuNligjrhulsxs3btzn+wAPs2bWLndt38LVXX03B1xbxUsq0KLel/nLrzweBVppnv+spnnvmu3jw6BF236fuwID3fGAvANvX1tBac+nadR66/z6msxmj8Zi1lSGboxFaa9Zvb+B9IASfNEJGAJzNAdI5sLqyglrZdex5a2wMaZONhkACioDzDmsd48kUpRW9sgQExlg2xxOMdWQpGKqqis3JlMaYZA6tTevIlA70FEKqqPYqnleXh/zYD3yCp9/7IMO9km93LK0JZpuCm+vraKVx3jOZz1leimqtlEQrxWQ277zB0UP7cc6z1B8wryoCsDQYQAAphMBaD0hAUhZl99n7gDGO6WyOsY7ZvMLauC8QUpDpjPFkyjvnL3Du4iWuXL/JZDoDEW26dWveB4RUW7Yvt9RfCkWRZezdscT2lT5y9dvS3h3LS0vs2bWDIs+wzqKV5uylq1jn2b9nN7t27IyapxSrK8uURcn9Rw7zyb/2LB987wmkUDFAkhIZ8WoLkevGbi0eSQhx0YiowqPxhI3RhJvrm1jnEUIxndU0xjKeTAGJkposy5BKdTYftSq5QaF46t3vQmmNkJpeAcNBD6myv5h6YDaf0SsKxtM5k1mFdZ7xZM7GaEzd1GxbWyYAzkVcmc7m1E3D62+9xerykMe/42HWVlZw3qOdi4i9eATg8IF9rG9sMp7OOkhrjGNzPEu7wK29sLWey9duUjeGgMD5QC/LsVWDlDIGIUgynSGkYvvqkEGvz+H9+7h8fZ3hIEdnGcfu3/eXYsC7Ht7F1ZvrWA+jyZzrN9epGsusajh99gLTeY2UUcpXb6wzHPRYXV5mXtd8/eQpNkdjrLUM+n20sQGEumPnubK8xKe+9yOA4Jf/069HFU7bcBdSUCPuBKmqtlsBjBDM5k1U/xCDKucD1sPutWWkVKyPptwezTqPs211G/0dfyn6mVVw/vJ1Xnr5m9RNE9cvFNfXx5S5oK4NPmluCIHRtGI0maKUYD6v2BiN8V5gbEBuobLq/pzz/MGLX+Hrb76JlBohVZwkAdfi58Xn2nuFkKytLndm5QIcObgfIRQ3N6bc2Jjy2smzjKYV1XwMCB47/jBXz28R+Ru/ceqexN88D//rj15jZalgeakAofjk93wIpTRCKOZ1wProdhEKhGSp3+fKjdtMZzWTWcXuHTsoy170PkLqLmewMuyzOZ4xqy2n3rnE2+euJk5uSTsGQgKZpN0rSx667xBFnlHVTQSkixc4fuw+/uTVN+j3CjbGNecu30CKxDyhkyfQ6Hwbe3cNqaqKut7aPczms27OP/7ymN/+wz9mNN5kXs145+IVnnrsKM+87wn+y+/8CX/6zbdRSmOd49jhfZw6c4HQbqoQTOYNIQTm1zcAsK7i0L7dGGvQRZ5Tm7iNHU0bhNQMehnTeYP3pGgqmkCeZRzcu50b6yOc9+zavsb2tRWKLGPX9uifV4ZD9u7ezoXLl2gs1KMm7TRFpzlKK9aWhzQWiqLHpVuGPTu3c/jYliFeW5/zC//qRXbv2Masqrh2a8x0NmMymxJQnL86Zv/OAUIqLl5bR+uCgc44d+kGSMWhvds5d+kGQsiYHCGAiCmzygSyTDGbzxH3PfGjIQYoKRHRgVs8Wtt//OHDbF/t88bpczx+/H5efPkkh/bt5N2PPMisqpnOKrz3PHDkENPZlD955eso3ePNdy7HTU7r96VieZCxtraDycwQiExZHS5Rln2EzFleGvIrv/T9/OqvX+BHfvAgAD/+07/J+9/9EP/t977MvJpT1xXGNBjboCUUmWcyGTOrPZkSHNy9wqlzVwneE/ApdRjzAf1ewSc+fIL//vtfQf7dz/x1dJYjZcaOtW1sX1tFqAypMrK8ROkcoTKKTHDj1jq7tq9x8u0zLC+VLPVLQvAMeiXzuubspetcv7XB3l07+dB7n+TC1XWE1CAzhNRIpdFZRpYVHL9vHycePUpRZHzymceorWT3zl3RFQrNT//8H/DayXNbgpAZv/fSa6ytrLI0iMySKmP72hprK8tsTByNyymKkizLOX3xNkJqhMoQ7fwy0tTvDziwdw+PHDuKGvmdzw8GQ2a148SjRzl1/gZL/T46ywkIfIjSu7l+i9FMcOXGTaazOXOTsTLIYnpsNifPMubGEwg4UyGE5JtnrhGQCRwz8qLk6SePcns05pnv/A4++J5H2dy8SW0cP/lDH+dzP3GCJx98Fy+8fIbjDxxhc1Lxu1+6yG/93hmM8/yjH3+a337hVWoj+NATB7h0fUTdNOzfvY0btyesDXMmc8dSv2TeOFjYbwipWVke8o8/97f4nvc/zmuvv8FoPELd/8hHnu8Vms2p58K1TYTUPPPeR7h2a8z3fehR3jx3CyE1QZQIASobgurjg2Z9c8rG5jrrGyOsdVy/XdErCzZHG5w6d43RPKCkZmkwIAhFnmdsrp9n1/ZtKBm4eOUSJ9+5TDVbJ5OWgzuOkvc1P/w3j/E7f3SB+/YNub5hCEj+3b/8MNevBV595UtMzArnrq7zsacOMp6M+dRH3seZc2d5+PAq65sjRnOBkgGEBqH4hz/xA3z1tdP8i8//CE1TcfLtt/nm6bO8fnYT9T0f+eTzb569wbPvvZ9AxvufeJgPvPthHjiwxumz73D5tkcqjZSa1b7j8WN7ePTYQQ7v7qOKbTx2bD+nLls254FPf+wp/uzkBbatDDh3LW6t86LHj3/qgwx6GePRDda2H+Gdi1fTJmYTIQKXr11hNI67yU988t38vX/wn/mZH/soTz+zgxMP7uedyw0fOLGNv/P5X8D2HkMozWee2cfps+c4d1Py0KE1Xnz1PGC5Pi4QQvHp7z1BISdc3Qy89MppPvHh7+Tg7hVe+NrLvP7WaW5t1tggUMs7H36+DkOk20DnA048coCXv/4al69d4+r6lEnTo1fmDJcGDAclZy7e5PT5K0ynt/npH/sM62PHmcsbCJlz//4V3jg/wbs5+3eUDFf3sK1fsW11iDVzGrGdy+sNfV0xlYfZu2OIcYLVYY8iy1gfzTh/dRs7dh/j2Y+s8PO/+AIvfWPKP/n8Q3zun77MP//ZH+a1Uzf5pZ/9GL/7pS9T1TWH9qzxxS+/yHseP8HrZ2+DzJFKcd++NR49doivvXkdpTPeuniTanyZk2+/zfmbjo9+8AQHdy2hlo986nmpCjbHY0azhldOb3Dh4lvc2hxx/NhDXL4NXmQgM5576ihV4yjyjDwrWN+4yfueeJRMK65eu0iZC/buXOb4kT2srW5jqV/wp6+f4+y5Uzh6rC4POLT/AFenSxw/tMStjTEH9h1ifXOEKx+i7PW5Md/G5szzq7/2BR555P08feIIBw/Axz+8l1/45Zep6pr/+eKbnD75EmfOX2RjPGNpsMbp6xBkyc5tS/ziTz3HaPM6X335z5iHASZk5HnGlQ3PpMnR5Q5+8gc/wa/85u+jfu5nfu751y/MePDwbnZtW2LklqHYw8e/+wmWejmf/aFPcPKt1/nUhx7gnfPnaNQutAycv+WZbF7k8eMPcXDvHl46OeHgdoGpN3nume9GSsnpS5uM3DYGS6v865/7PP/xi2+wpq7x7Aee5LEHD+K9QRTb+ZnP/givvnGWB+87ytj0+cnv282nn3s/X/r6hNsXv8y/+eVf439/6XWePXGQU9c1LkgqV1DXc37gYx/ltStLIATDQcmk8px8+y1e+MofcvrCFU686zj/7LPfj6tuoPMlNuucZ9/3HZx951VCMKhs+5PPb9u+nfce38f/ef0y5WCFn/obH+KF//syTxy/n1feeItztyUvvvg7XL+1TjY8zMz10L01Du0a8oUXv86rFx0feGQ73zh9jou35nzx97/AY8cfYlY3FLnk0x97ml/9r7/FgwdX+bNvvIoWga+8VdFYz+6h5atveYzoMTMFP/rcI/zSv/+3XJgeoigHzNnFwQNH2XbgKf74hf/B8QeOMjI9duzcz+P37+Sltx15nvP0u49i6k1mLmNiMqrN8zz0wENcGPV59Ruv8No7t/jcZ57ja29d49KtKadOvcKug08iPv7ZXwvOGbw15GWfQgtuXD3LYO0gmoagenH3Z+YURUljPaG+jSy3AVCEKY0YoN0ISw66H0Pm4GlzhLvLKWcu3WDbnmOsLg+pTGDYy6kbA67mwcP7mLolXLXOsN9jdds+tvUc40qglUTqnNffeIXl1R2sr1/hxq11Dhx+mJvXzkK5A2MNA25zZcPg6w2MlwyGa8xqQwhgTYXOSvz0Cv3hdiqfEQAdDOJv//3/cGfod2eh+N5HuOvaXVVi0f6UcvKLRc1MxYxzrjOKPKOX5/SLgkGZs1QWDMucQZnTyxSZinsQ4zxzY5lWDeOqYTKvmdQ187qhagxV09AYQ2NNVypzPiZuwrdbc/pN37pypgt3Y+gruvR2l5pva5/pPrEw3t3FZykEIZXR2+tKSnRbfdaaPNPkWjMoC5pM43oFoleiegV5vyDvFWS5Rui4TbfOYSpDXTXMZxXTec103jCtaqZ1kypHlsbEYq7zMWnrnE+5iFgfDARkKthIGenUfn6bxlr6RU7VmG5PkCtFbS3OBTKt0ComTYx1CAE+BLRUkdMhkOtYHGmcJ9Px91jbk9TOI3KNUAojBAZBrRW+LKgzjZvnmDJnkmkmvYJenpFrRaZijWBaxdJY1VjmjWFaNczqhnltqEwshzfWxfpGKpI2xiFlrDJZ62KSVwhsSvDWNmqJLpiTKxDOUAqPdZ5MKZrKMSwzKmdxxqOCTlzzSKBqLLX39IscJQXexSyR8oGmcQxS4TQYKKVgPjGUWUaR6VjgFBmhrnFOUTtNMxf0iwxX5ayHQJnFhGfUHhWFA9TGMp7FTPV8VjGt6lSUjbqYpzqYMQ1SCYosw7sGKURkiA94GyikwIWAHo9ukWtFkWmW8hwUhODoZQFnGpa0pGoMA5VjrKNIVZuyCMyqhno2Y6lXUGqF0jKqIR7tY7FESUHTOPIQKHAUIsOZOXMj6Jc5wQmm80CvyBnNA1Wm6eWaJqlqCIF5m7JP1edZ1SBl7F3pC4cRnnnToKRMVWoH1oET1EaQCfCBlMOM5TGlFNZY9M4eWG+YTqf4OqqxSvYqREyBSefxdSyMeilprEMASggGSuDrhkL3CC5QECBYTBUZEKSk0DLWGK3BOhEXKKCaQq/I6OUZLmiEgEKXuAoqY6gaQy/P4/2Ad57KmG5+5wNSRLMMzmNFXFNPK4JvAJhWDVpJVgY9skyxMZlhjaUoc4aZQvtmQnAerMGYwO61IUoGfLBY59Fa4qTH+obtZUbAMfMNmVZkWkUmOU8hampj8c6jvUcJaLxFC0mORhOZYJzD2oZBkTO3hmYOPVFibSzE3JhtUGQa5wLWe6a1YFrVOO8xNoKbdY5BmROAxnmMc/TyDBGix3BOolzEpp7wBB+YjavEeEEWoqBKqdH7lzWX10eUWGbGcOPmjFxrlJRIKZgngNNKUYoIcH0pcN7S2DoWT5yjMrH2a1O7Sq41WkKuFAJHNTegFcOyYEkJZvUMX9e44BG5J9cKUzsyKVBWIUIgA+rGspxJ1scznLEUmUYLj6trVvo9DI4mOFxd40Mg05JgIJeC5UFJCBE/bo0nBB86M3GVYXmwgl7f3KSQIDVkMvrdXh4xYTyvyZWk0II8E1jb0DS+ywcK7ymUZLnMGc9rJvOaeWMoM43OJRIgBK6vj6kay9pSH1NXqeQeyKSnpyQKiwiBqq4QQLHUp8gUs6qJc2uBXi5pjIvuzoKSguANMniEt/QyhXWBLNZiGJQ5/UIzrWpksKyUOtU2ZWc6Nzc20Lcnc3KtOiDMUnU4AL08I9MKmao7/TzDOM+sqskzTSDEel8Cq0lVUzWGxloCkdtaxn4AKQQ3R5Pk/3N6eYaSkZG1sXgPuVaUWfw9hNDNHWuTgrWlHvPGYJN6Q8A6gQ+B2tgY9TmPkqIzz9jroOkVOf0io2os43mFsY7GOrTzHuMioBSZ6gKiMtdopahT3bCX54xmFUq19XzIlEKloqf3IbpPEbtFamO7Fph5Y1KlNgKgEALjHGVqy4nVJIEIEus90olk675bqJKCfumSeQqcjQXcMs9orItCSq5QySjlllGZinFMe9+gLLi+MWZWG7RI0duwV1BkmsqY6AFS51amFVhorI3BiVZY52mMS1EjaC25PYmp5zLPUreIRykJbQcZkCU0zlOg1M7lfaDQKkqyMUyr1GsYYF430azyGL/7PCQVjnHmvI7xRZllVKlZIksRpFYyMqbtaXQekxpCYqAW0GWe0S9zMqUIRG616udDwDtPCKCU6Dg+qxus91jrYpq5Mcwbg07POh81AANFCntbr5ElU2u7wox15Foxa0wMnZO/Dz42YXbSTWP28gwpEgYQ3WibthciQ6XulDLXXeeaSOU64xzOR2a05q7LPEs+NUZ1reo11iJFVM3YeQGNsWz62HjQqmYbgjrnk1SitrT2K4Aij0VPkdTTWNdpikpxRaai+jcJU+YJSwByHaNQJeWWNqTupxbY2rGEiHPUxnb7Ex8CVW3QWgEemyJMKUArJbuFRTVt436RQMYjgDoRa+oYYFSNjeAVQrc/kD4uQBAluwhiMgHTIrghBFqBsXTjWOuw3ne2TLuZSczMlKRfZB0jAbwP3TPeeRpioCSFSCV0j0ymFseMWgcgc6W6nZEPIbUbi06VpRTYhZ1Vq4rRHdluESZpgveh24E1xnagGXsKZUJnkSpN0RyiRKOkrfedmkZPIcmV6pBdSknwsQ+xzHSH9q22teGzS0yJ6wvdPqLFj26X6kNACUmWqbh5CQLnIwd92/vX7ouTJE3tusHarXOvyJGpH09LgRCRmNaFRTMSneoWeYaWsXbXmgGAlhLnLCE1WLXeqMh0ZKCS3T5dKYlKhPgQA7LRLLb8tC05UfqpYzQJ2jpPkUWz1iEERJKyFNH9zJuIpi2iWuc7QDLOIaXc8sUBhGxt38U9f9IqHeQWFnR5hrQrSygvJdikHbWx0U5T3iHdjpJxLTolVlrhRPCLczvnqE3UQuM8UvguN+Gs77pQfcKMVrA6JAVx1qHUlk+33pFnmspYXNsDnBhkrE8aEVU9eBJoCpSMf3niMNC5pZbJ3geqxlBkGh9EdE/WRZeqJAQ67RGppVZK0SU6cq0RHtoOU+c9tXFUjaFt1g8pg9NK3CeQzJMJeu8JQqC995jU29sSKpNqOu+7eKA9bNqQdLCe0l7OeZTWSBk3PVIIWoAlEd+ewxZAR+n5gAuhG7e16ZDOLnmeVpOU8mSp50gKMC4+a5xDINAyunCR8hSLgNo2dEctAG0TuBFCB3Jay66xNeICW4CSKNIqmgEp0dDm79p+78V2+LbrM1cKl5jdhq/tokKITGjNJIbDEaxIDHaJIdZGU2gSU7ou1fadBZESYL7tXBWpbS7gE3Z0zDLOdfbZAgYucT5Jx3uf0Nl3CC6E6NQpxvStXxV35Al9AsEQYqjaMsd5n7rTInN9MvpA3BMoFTtVWqxoTa7tPrUpqGnHawG7TdE57+/AHuejl5NCYL3tNFu3PYEtmrcbirbNWgAuAQ5JAloptGQr+Slog4puUh881sYEhfdRS7yL88i0F7Apymz7+eIZGkNHHCmwiYGLWFBj2THHh636f0t84ld61cdj0zsEMTQmYZWM3eKL7iwkKQQfCPguju5cWDJ9nwZrkVW02WAEImylxYMIKbO7pRdeBBrjuuZMAQS/BbRBeoKLoKWE7CLVVn2FB7dg12FR5RY0jyQ4Y11cI+CTgFxK1+nWxd19iESw9y1jIlbE5GLc67eTtEkG7wEZpdM23kXVb4+AS4DlE6NJmrXV3x9wLrYlLWh+F+R0eOEDQrhOlX36rRs7tAGRj9iSXKYSbZo87hi1dXcWENpNCnfZa6um0ffGLsute+O51RwvfLSJlI2nY2R8I6WNOhel1Yaui6/TtAlOGeK7BIE4jhUCKXwX+3fzJoJbhvmwZfeouM4YDLXvDYiYD2iDiq2CiOgqOtG3y+5aG6S0i26lFgdPb2iF0LmflsCQbKLFjG4RaVEygJdbxZsgWhyIC7bYheLNlqbejWFbUmSroLOwbmNT5CMEMrQaEEK3mFbqUQp+q/lxccIFF9P+Fgl1XQWGTv6hixhbZrRMaz/7kF6P8aKLQIWni96iNFtGhy7ej5YbV73IFJHGaCPO7rbAFqa1gO4XuHe3RJ2PkhBiywoXJRnuun9ROmmOb7kn3EtqYmt+x1YPYpsySzN2ah4WCWnnFHe+dNlmo6Rs+wUXAD5NGWIg5O54qB0lJJt1Yksr2kXei/B2hDZ+b6XWmkQIdzMh3MU40UV2LVFbAVpYYFq7PeYemrl1hIQ9zref71jmVhzQveuXDEUsXGxX27o00T3c3rvI84UFB+4guo3A2mgtdJq0RawgNum390Xm3ananWslcA+auEMFFuZpJd8+sEirbgMcsXBRiBBfgRVb6tPa3tas93C+C7NvLZYOcNotbqsl3/oUXTQYcSrp6T0IFPda2+KcdxAsOr0P3c9xE6eV+ta3M8TCAHe8j32PRf9FR/fIoo2Kv8JA3+bWsPD/3feL9tIdc7aO/c7j/wGgrMXwfekhCQAAAABJRU5ErkJggg==", "label": "Image 360 HDRI Nimitz Sky", "longdesc": "Type - 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": "graph_2", "nodes": [ { "name": "buffer_2", "node_position": { "x": -126, "y": 347.5 }, "parameters": { "size": 11 }, "seed": -20507, "seed_locked": false, "type": "buffer", "version": 1 }, { "name": "4690", "node_position": { "x": -461, "y": 424.5 }, "parameters": { "cloudtime": 575.5, "sunPosX": -1, "sunPosY": 1, "sunPosZ": -1 }, "seed": -2939, "seed_locked": false, "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\n// Clouds cyclic noise\nconst mat3 nz_cloudMapm3x=mat3(\n\t vec3(0.33338, 0.56034, -0.71817),\n\t vec3(-0.87887, 0.32651, -0.15323),\n\t vec3(0.15162, 0.69596, 0.61339)\n\t)*2.01;\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 *= nz_cloudMapm3x;\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 float PI=3.14159265359;\n vec2 thetaphi = ((p * 2.0) - vec2(1.0)) * vec2(PI,PI/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, "label": "Cloud Time", "max": 200, "min": 0, "name": "cloudtime", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Sun Pos X", "max": 1, "min": 0, "name": "sunPosX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Sun Pos Y", "max": 1, "min": 0, "name": "sunPosY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Sun Pos Z", "max": 1, "min": 0, "name": "sunPosZ", "step": 0.001, "type": "float" } ] }, "type": "shader" }, { "name": "gen_inputs", "node_position": { "x": -454, "y": 300 }, "parameters": { }, "ports": [ ], "seed": -12758, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": 97, "y": 342 }, "parameters": { }, "ports": [ { "group_size": 0, "longdesc": "", "name": "port0", "shortdesc": "Image Output", "type": "rgba" } ], "seed": 52201, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -35, "y": 99.5 }, "parameters": { "par1": 11, "par2": -1, "par3": 1, "par4": -1, "param0": 575.5 }, "seed": -16736, "seed_locked": false, "type": "remote", "widgets": [ { "label": "Resolution", "linked_widgets": [ { "node": "buffer_2", "widget": "size" } ], "name": "par1", "type": "linked_control" }, { "label": "Sun Pos X", "linked_widgets": [ { "node": "4690", "widget": "sunPosX" } ], "name": "par2", "type": "linked_control" }, { "label": "Sun Pos Y", "linked_widgets": [ { "node": "4690", "widget": "sunPosY" } ], "name": "par3", "type": "linked_control" }, { "label": "Sun Pos Z", "linked_widgets": [ { "node": "4690", "widget": "sunPosZ" } ], "name": "par4", "type": "linked_control" }, { "label": "Cloud Time", "linked_widgets": [ { "node": "4690", "widget": "cloudtime" } ], "name": "param0", "type": "linked_control" } ] }, { "color": { "a": 1, "b": 0, "g": 0.5, "r": 1, "type": "Color" }, "name": "comment", "node_position": { "x": -818.233337, "y": -69.649994 }, "parameters": { }, "seed": 29001, "seed_locked": false, "size": { "x": 681, "y": 323 }, "text": "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!", "title": "", "type": "comment" } ], "parameters": { "par1": 11, "par2": -1, "par3": 1, "par4": -1, "param0": 575.5 }, "seed": 0, "seed_locked": false, "shortdesc": "Image 360 HDRI Nimitz Sky", "tree_item": "PauloFalcao/Image/Generator/Image 360 HDRI Nimitz Sky", "type": "graph" }, { "icon_data": "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", "name": "pxflib", "parameters": { "value": 0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "HDRI", "name": "hdri", "shortdesc": "Image Input", "type": "rgb" } ], "instance": "", "longdesc": "Type - Image operation\nCode - PauloFalcao\n\nSubtract a fixed RGB value from the image", "name": "Image HDRI Subtract", "outputs": [ { "rgb": "$hdri($uv)-$value", "shortdesc": "Image Output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 1, "label": "Value", "longdesc": "Value to be added or subtracted", "max": 32, "min": 0, "name": "value", "step": 0.1, "type": "float" } ], "shortdesc": "ImageHDRI Subtract" }, "tree_item": "PauloFalcao/Image/Util/Image HDRI Subtract", "type": "shader" }, { "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": "pxflib", "parameters": { "NStairs": 5, "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": "Type - SDF2D Operator\nCode - Mercury\n\nMakes SDF2D stairs with 2 objects using Mercury fOpUnionStairs from https://mercury.sexy/hg_sdf/", "name": "SDF2D Union 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, "label": "Size", "longdesc": "The size of the stairs", "max": 10, "min": 0, "name": "Size", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "label": "NStairs", "longdesc": "The number of the stairs", "max": 10, "min": 0, "name": "NStairs", "step": 1, "type": "float" } ], "shortdesc": "SDF2D Union Stairs" }, "tree_item": "PauloFalcao/SDF2D/Operator/SDF2D Union Stairs", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "NStairs": 6, "Size": 1 }, "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": "Type - SDF3D Operator\nCode - Mercury\n\nMakes SDF3D stairs with 2 objects using Mercury fOpUnionStairs from https://mercury.sexy/hg_sdf/", "name": "SDF Union Stairs", "outputs": [ { "sdf3d": "fOpUnionStairs($in1($uv), $in2($uv), $Size, $NStairs)", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 5, "label": "Size", "longdesc": "The size of the stairs", "max": 10, "min": 0, "name": "Size", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "label": "NStairs", "longdesc": "The number of the stairs", "max": 10, "min": 0, "name": "NStairs", "step": 1, "type": "float" } ], "shortdesc": "SDF Union Stairs" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Union Stairs", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "scale": 16, "scale_x": 1, "scale_y": 1, "scale_z": 1 }, "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": "Type - TEX3D Generator\nCode - Nikat\n\nMakes a non periodic noise using nikat code from https://www.shadertoy.com/view/XsX3zB", "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, "label": "Scale", "longdesc": "Noise scale", "max": 32, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale X", "longdesc": "Noise X scale", "max": 16, "min": 0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16, "min": 0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16, "min": 0, "name": "scale_z", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Simplex Noise" }, "tree_item": "PauloFalcao/TEX3D/Generator/TEX3D Simplex Noise", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "brightness": 0, "clamp": 1, "contrast": 2, "iterations": 5, "persistence": 0.5, "scale": 4, "scale_x": 1, "scale_y": 1, "scale_z": 1, "transx": 0, "transy": 0, "transz": 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// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_oct_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_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": "Type - TEX3D Generator\nCode - Nikat\n\nMakes a non periodic noise with octaves using nikat code from https://www.shadertoy.com/view/XsX3zB", "name": "TEX3D Simplex Noise Octaves", "outputs": [ { "shortdesc": "TEX3D output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8, "label": "Scale", "longdesc": "Noise scale", "max": 32, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale X", "longdesc": "Noise X scale", "max": 16, "min": 0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16, "min": 0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16, "min": 0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate X", "longdesc": "Noise X translate", "max": 100, "min": 0, "name": "transx", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Y", "longdesc": "Noise Y translate", "max": 100, "min": 0, "name": "transy", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Z", "longdesc": "Noise Z translate", "max": 100, "min": 0, "name": "transz", "step": 0.001, "type": "float" }, { "default": 12, "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, "min": 0, "name": "persistence", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Brightness", "longdesc": "Overall brightness", "max": 1, "min": 0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Contrast", "longdesc": "Overall Contrast", "max": 1, "min": 0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1, "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" }, "tree_item": "PauloFalcao/TEX3D/Generator/TEX3D Simplex Noise Octaves", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Correction": 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": "SDF2D Custom Union", "outputs": [ { "sdf2d": "$joinSDF2D(vec2($in1($uv),$in2($uv)))/(1.0+$Correction)", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "control": "None", "default": 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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "SDF2D Custom Union" }, "tree_item": "PauloFalcao/SDF2D/Operator/SDF2D Custom Union", "type": "shader" }, { "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQhJREFUeJztkKFNgwEUBi80BEFq8CV4LKKKAVgAVHcAA2ELdsAjMJWVHQLxLwH2w5K3wAm+S575nrkcy7IELgL8uc/AT+B+7M+B78Db2G8CX4H92Al8BI6B67G/BA6Bh7HfBt4Dj2NfB14DT4Gz8bsL7AKXY78KbAObsZ8GzgOrnPDPaQBbwKYBbAGbBrAFbBrAFrBpAFvApgFsAZsGsAVsGsAWsGkAW8CmAWwBmwawBWwawBawaQBbwKYBbAGbBrAFbBrAFrBpAFvApgFsAZsGsAVsGsAWsGkAW8CmAWwBmwawBWwawBawaQBbwKYBbAGbBrAFbBrAFrBpAFvApgFsAZsGsAVsfgH3UU+JzCgMYwAAAABJRU5ErkJggg==", "name": "pxflib", "parameters": { "mode": 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": "SDF2D Axis", "outputs": [ { "sdf2d": "$mode", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 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" }, "tree_item": "PauloFalcao/SDF2D/Generator/SDF2D Axis", "type": "shader" }, { "connections": [ { "from": "paulofalcao_sdf2d_input_3", "from_port": 0, "to": "sdsmoothboolean", "to_port": 0 }, { "from": "paulofalcao_sdf2d_input_4", "from_port": 0, "to": "sdsmoothboolean", "to_port": 1 }, { "from": "sdsmoothboolean", "from_port": 0, "to": "sdboolean_3", "to_port": 0 }, { "from": "sdcircle_2", "from_port": 0, "to": "sdboolean_3", "to_port": 1 }, { "from": "sdboolean_3", "from_port": 0, "to": "paulofalcao_sdf2d_operator_custom_union_3", "to_port": 2 }, { "from": "sdbox", "from_port": 0, "to": "paulofalcao_sdf2d_operator_custom_union_3", "to_port": 0 }, { "from": "sdbox_2", "from_port": 0, "to": "paulofalcao_sdf2d_operator_custom_union_3", "to_port": 1 } ], "icon_data": "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", "nodes": [ { "name": "sdcircle_2", "node_position": { "x": -222.004883, "y": 128.290039 }, "parameters": { "cx": -0.35, "cy": -0.35, "r": 0.06 }, "type": "sdcircle" }, { "name": "sdsmoothboolean", "node_position": { "x": -50.192383, "y": 19.727539 }, "parameters": { "k": 0.15, "op": 0 }, "type": "sdsmoothboolean" }, { "name": "sdboolean_3", "node_position": { "x": 157.995117, "y": 56.290039 }, "parameters": { "op": 0 }, "type": "sdboolean" }, { "name": "paulofalcao_sdf2d_input_4", "node_position": { "x": -221.004883, "y": 69.790039 }, "parameters": { "mode": 1 }, "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, "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": "sdbox_2", "node_position": { "x": -221.004883, "y": -147.709961 }, "parameters": { "cx": 0, "cy": 0, "h": 0.5, "w": 0.1 }, "type": "sdbox" }, { "name": "paulofalcao_sdf2d_input_3", "node_position": { "x": -221.004883, "y": 9.290039 }, "parameters": { "mode": 0 }, "seed_value": 34667, "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, "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": "sdbox", "node_position": { "x": -223.004883, "y": -277.709961 }, "parameters": { "cx": 0, "cy": 0, "h": 0.1, "w": 0.5 }, "type": "sdbox" }, { "name": "paulofalcao_sdf2d_operator_custom_union_2", "node_position": { "x": 194.22168, "y": -194.967773 }, "parameters": { "Correction": 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, "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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "Custom Union" }, "type": "shader" } ], "tree_item": "PauloFalcao/SDF2D/Operator/SDF2D Custom Union Example" }, { "icon_data": "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", "name": "pxflib", "parameters": { "mode": 0 }, "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": "SDF Axis Symmetry", "outputs": [ { "sdf3d": "$in(vec3($mode))", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "default": 6, "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" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Axis Symmetry", "type": "shader" }, { "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": "pxflib", "parameters": { "mode": 0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "$uv.x", "label": "SDF2D", "name": "in", "shortdesc": "SDF2D", "type": "sdf2d" } ], "instance": "", "longdesc": "Type - SDF2D Operator\nCode - PauloFalcao\n\nTransforms a SDF2D making a mirror symmetry using the chosen axis", "name": "SDF2D Axis Symmetry", "outputs": [ { "sdf2d": "$in($mode)", "shortdesc": "SDF2D output", "type": "sdf2d" } ], "parameters": [ { "default": 2, "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" }, "tree_item": "PauloFalcao/SDF2D/Operator/SDF2D Axis Symmetry", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 1, "Distance": 1, "Repetitions": 5 }, "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": "Type - SDF3D Generator\nCode - Paulo Falcao, RodZilla\n\nRepeats its input shape around a axis", "name": "SDF Polar Repeat", "outputs": [ { "sdf3d": "$in(circle_repeat_transform_$Axis($uv, $Repetitions, $Distance))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 0, "label": "Axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "None", "default": 4, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the circle", "max": 32, "min": 1, "name": "Repetitions", "shortdesc": "Count", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Distance", "max": 5, "min": 0, "name": "Distance", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Polar Repeat" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Polar Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "RepX": 3, "RepY": 3, "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/c+0.5),vec2(0.0),l);\n}", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf2d" } ], "instance": "", "longdesc": "Type - SDF2D Operator\nCode - IQ\n\nRepeats its input shape", "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, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4, "min": 0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4, "min": 0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128, "min": 1, "name": "RepX", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128, "min": 1, "name": "RepY", "step": 1, "type": "float" } ], "shortdesc": "SDF2D Repeat" }, "tree_item": "PauloFalcao/SDF2D/Operator/SDF2D Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Correction": 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": "SDF Custom Union", "outputs": [ { "sdf3d": "$joinSDF2D(vec2($in1($uv),$in2($uv)))/(1.0+$Correction)", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" } ] }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Custom Union", "type": "shader" }, { "connections": [ { "from": "sdcircle_2", "from_port": 0, "to": "sdboolean_3", "to_port": 1 }, { "from": "paulofalcao_sdf2d_input_3", "from_port": 0, "to": "sdboolean_4", "to_port": 0 }, { "from": "paulofalcao_sdf2d_input_4", "from_port": 0, "to": "sdboolean_4", "to_port": 1 }, { "from": "sdboolean_4", "from_port": 0, "to": "sdboolean_3", "to_port": 0 }, { "from": "sdf3d_box_4", "from_port": 0, "to": "sdf3d_smoothboolean_3", "to_port": 0 }, { "from": "sdf3d_box_3", "from_port": 0, "to": "sdf3d_smoothboolean_3", "to_port": 1 }, { "from": "sdboolean_3", "from_port": 0, "to": "sdf3d_smoothboolean_3", "to_port": 2 }, { "from": "sdf3d_smoothboolean_3", "from_port": 0, "to": "pxflib_2", "to_port": 0 } ], "icon_data": "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", "nodes": [ { "name": "sdf3d_smoothboolean_2", "node_position": { "x": 13.971497, "y": -204.775681 }, "parameters": { "Correction": 0 }, "seed": -51977, "seed_locked": false, "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, "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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" } ] }, "type": "shader" }, { "name": "sdboolean", "node_position": { "x": 56.940613, "y": 35.341629 }, "parameters": { "op": 0 }, "seed": 1491, "seed_locked": false, "type": "sdboolean" }, { "name": "sdcircle", "node_position": { "x": -288.059357, "y": 114.341629 }, "parameters": { "cx": -0.3, "cy": -0.3, "r": 0.18 }, "seed": -52182, "seed_locked": false, "type": "sdcircle" }, { "name": "paulofalcao_sdf2d_input", "node_position": { "x": -288.059357, "y": 1.341629 }, "parameters": { "mode": 0 }, "seed": -52131, "seed_locked": false, "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, "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": "sdf3d_box_2", "node_position": { "x": -287.059357, "y": -135.658371 }, "parameters": { "r": 0.01, "sx": 0.07, "sy": 1, "sz": 0.5 }, "seed": 44278, "seed_locked": false, "type": "sdf3d_box" }, { "name": "sdboolean_2", "node_position": { "x": -129.059387, "y": 14.341629 }, "parameters": { "op": 0 }, "seed": -30577, "seed_locked": false, "type": "sdboolean" }, { "name": "paulofalcao_sdf2d_input_2", "node_position": { "x": -289.059357, "y": 54.841629 }, "parameters": { "mode": 1 }, "seed": -60041, "seed_locked": false, "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, "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": "sdf3d_box", "node_position": { "x": -280.059357, "y": -262.658386 }, "parameters": { "r": 0.01, "sx": 2.5, "sy": 0.1, "sz": 2.5 }, "seed": 53834, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib", "node_position": { "x": 477.444061, "y": -224.115829 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamD": 1.5, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 1, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "Pow": 64, "Reflection": 0.2, "Shadow": 1, "Specular": 0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "const float PI=3.14159265359;\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*PI,PI);\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)-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": "max($uv.y+1.0,length(vec3($uv.x,$uv.y+1.0,$uv.z))-10.0)", "function": true, "label": "SDF3D B", "name": "sdf_b", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "vec3(mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0))*0.9+0.1", "function": true, "label": "TEX3D B", "name": "tex3d_b", "shortdesc": "TEX3D B", "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": "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.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\tvec3 objColor=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.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\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=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.0));\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 2 Objs", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1, "min": 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, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "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, "min": 0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PauloFalcao/SDF3D/Operator/SDF Custom Union Example" }, { "icon_data": "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", "name": "pxflib", "parameters": { "mode": 0, "smooth": 0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "SDF3D", "name": "in", "shortdesc": "SDF3D Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - PauloFalcao\n\nTransforms a SDF3D making a mirror smooth symmetry using the chosen axis", "name": "SDF Smooth Axis Symmetry", "outputs": [ { "sdf3d": "$in(vec3($mode))", "shortdesc": "SDF3D output", "type": "sdf3d" } ], "parameters": [ { "default": 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, "label": "Smooth", "max": 1, "min": 0, "name": "smooth", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Axis Symmetry" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Smooth Axis Symmetry", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Correction": 0, "DirX": 1, "DirY": 1, "DirZ": 1, "Distort": 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": "Type - SDF3D Operator\nCode - PauloFalcao\n\nDisplace a 3DSDF based on a TEX3D in a direction", "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, "min": 0, "name": "Distort", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Dir X", "longdesc": "Displace X", "max": 1, "min": 0, "name": "DirX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Dir Y", "longdesc": "Displace Y", "max": 1, "min": 0, "name": "DirY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Dir Z", "longdesc": "Displace Z", "max": 1, "min": 0, "name": "DirZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" } ] }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Displace by Direction", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Bound": 0, "Correction": 0, "Distort": 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": "Type - SDF3D Operator\nCode - PauloFalcao\n\nDisplace the height of a 3DSDF based on a TEX3D", "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, "label": "Displace", "max": 1, "min": 0, "name": "Distort", "shortdesc": "Displace amount", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "Bound", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Displace Height" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Displace Height", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 1, "Distance": 1, "Repetitions": 6, "Smooth": 0 }, "seed": 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": "Type - SDF3D Operator\nCode - PauloFalcao, Gaz\n\nThis 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", "name": "SDF Smooth Polar Repeat", "outputs": [ { "sdf3d": "$in(sdf_smoothRot_$Axis($uv,$Repetitions,$Smooth,$Distance))", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 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, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the axis", "max": 32, "min": 1, "name": "Repetitions", "shortdesc": "Count", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Distance", "longdesc": "Object distance from the center", "max": 5, "min": 0, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Smooth", "longdesc": "Smoothness between objects", "max": 1, "min": 0, "name": "Smooth", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Smooth Polar Repeat" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Smooth Polar Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "mode": 5 }, "shader_model": { "code": "", "global": "", "inputs": [ ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nTransforms a V4->V4 making a mirror symmetry using the chosen axis", "name": "TEX3D Axis", "outputs": [ { "shortdesc": "V4->V4 output", "tex3d": "vec3($mode)", "type": "tex3d" } ], "parameters": [ { "default": 1, "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" }, "tree_item": "PauloFalcao/TEX3D/Generator/TEX3D Axis", "type": "shader" }, { "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": "pxflib", "parameters": { "mode": 0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "TEX3D", "name": "in", "shortdesc": "SDF3D", "type": "tex3d" } ], "instance": "", "longdesc": "Type - TEX3D Operator\nCode - PauloFalcao\n\nTransforms a TEX3D making a mirror symmetry using the chosen axis", "name": "TEX3D Axis Symmetry", "outputs": [ { "shortdesc": "SDF3D output", "tex3d": "$in(vec3($mode))", "type": "tex3d" } ], "parameters": [ { "default": 6, "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" }, "tree_item": "PauloFalcao/TEX3D/Operator/TEX3D Axis Symmetry", "type": "shader" }, { "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAACflJREFUeJztW9tLVFEX/52Z45mrDmHRH1BEIBiBKSpeKiovDwnmQ5QvWoIEXhITMntIHwwpX8QHSevBHkRJg8C0IkMsmgTJp3mJJOnBCyJko3Pmcr6Hvr3b57JnzlFrPvj6weac2Weffdb67bXXXvsyAgAF/8ewJVuAZOMfAckWINn4R0CyBUg2kk5AQUEBCgoKkvZ98W98JC8vD+/fvwcAFBcXw2azQRAECIKA169fq8qeO3cOAPDq1au/IdqfJ6CoqAg2229Dm5mZUT0vLS2FIAjc90tKShCLxTA9Pf1H5PsjBBQUFMBms6kSi7KyMmoBL168oPmVlZU6Ml6+fEnvS0tLMTk5ua+yCtinSDAnJwcfP36kLc6mqakpldKiKEIURdjtdoyMjBjWV1NTg6GhIV1+RUUFJiYm9kNkAPtkAbm5ufjw4cOvCkURNptN14dFUURKSgpVnhDAg9frRUNDAxRFgaIo6OvrAwCkp6fj6tWrGB4e3g/R90ZAVlYWHA4H5ubmaN6bN28My3o8HkqC3W5PSIDH46H3iqKgra0N0WgU0WgUkUgEdXV1GBgY2Iv4APYwDGZnZ2N+fl6l/IULF7jlXS4X3G637sqD2+2myePxwO12w+v1ore3F6mpqfD5fGhsbMT169d3qwKAXfqA7OxsSJIEu91OEzH58vJyiKIISZJoSklJwcDAAJqammjLk+u9e/d09ff09KC1tdXw293d3YhGo2hvb7cqtiEsd4GsrCz4/X4UFRVBFEWdyUuSBIfDQZV/9OgRAKClpUXlAwhxRmhtbUVfXx8EQcCNGzdUz9xuN2KxGB48eIBIJIK2tjYAQHNzM3p7e62qY50Ah8MBALDb7Yb93eVyQZIkPHnyRJXvdDpVDjCRD3A6nRAEAYODgwCA2tpaWn8sFqP+4OHDh7h58yZ8Pp9VVQBY9AG5ubm0z/OEdzgcOuVJvtPphNPphMPhoIkHUo688/TpU5rvdDrhcrlUfiQ1NRWdnZ1W1AFgwQeQcX63uH//vqEFXLt2zbD86OjoLwE1gZGiKIjFYjRFIhFEIhHIsoydnR0Eg0FL/sG0BbDK87x9fX09933iG1j/IEmSqfJsqqqqUlkSua+vr4fH44HX67VkCaYtQOv0ysvLIUkSXC4XHA4HHj9+DAC4deuWyvuT1NjYaFjv6Ogo7Ha7LnosKyszLD81NQVFUVBSUqLKHxkZgSzLqK6uBgDcvXvXcITRwpQFsLE9gSiKtDWJ8gBUrWu2pXdTXuuAiTUQmFEeMEkAUZ4Nb4kgWofHtj57zwOxEG3cwANb7t27dzSfdJGxsTGa19XVlVA3U8Og0YyO11KsQmwXIHj27JkqGNL6k7m5Od23tN8l84NYLEbzHQ4HXWcgSEtLS6xbogLs7E4rCAlyWLBKawkYHx83zGeRn59vymJI8vv9VB7iOAkaGhoSqRefgLy8PNWUVitIPAHJxCclJQWXL1/GxMSETnhRNDbArKwsLC4uxq1fSyLbjbSyxoPpUaCsrAyiKMLj8cDlcmFoaAgtLS2qwEaSJDQ3N+venZiYQEVFhWG9fr8fNptNNxJkZGQgEAhQkybXY8eO6epYXFxEZmamKm9ychI/f/7ExsYG6urquHqZjgMEQVC1bFNTk+o3uWoxPj7ObWkAuuCIJAA4fvy4bh3BCFrlgd9xhMvliqtXXAKKi4vpPVnJ0S5qGAlOQBzebgkAgCNHjnDrjwfSPUhcwENcAojjI+avncoa5fGU44Gth1eeLWMWhYWFcZ0p1THeQ7b/aWN4LQk8weNNewGo6uSVZ79lBaR8f38/v0y8ClgCWOGMBOYJnmjaS97TOkJtmXhL51zl/ktAvMiSOwoUFBRgdnbW8lL06OgoDYLYeN7v9xta0NGjRw3rWV9fhyAIsNlsOHDgAM3f3NykgRA7MyRrhWRmGAqFcOLECUxPT+P8+fNceRPalFXmedbADnFmugZpde33iXUQAshzRVFgt9sRi8WoJbHleeASMDs7G/dFHlglWWi7ipGpG9WjJcBut6ssgIWiKLrNmEQEmIoDKisrzRRTCa79sHa6a0QSCx5JrAUZ1UlIy8jIMCdvvIdko9JKN2AFYZfMecImqke7dM5urLIKs3msvGfOnIkvr2nNNOjp6YkrOBFmfn5elW+FAKMoTtvSgiDA5/Pp8szC9FygpqYGXq+XblJ0dHSgr69PtTwlSRIuXryoe9coVidYX183HAadTidkWdYpZBQLbG1twev1qvICgQB+/PiBtbU17uoSYMECjDYqtcLxmM/MzEQgEDB8pjVdQRCo8lprMtuyS0tLdHiMpzxgggB27U3rdcmmBdsHeRAEAV++fNELoOnDxOzZ+rRXFjs7O9yV45ycnETqJY4D2FUXo6HHCgRBwLdv31SBEBvkaMuSazxijWQimyZmkNAC2JMZfX19uqUosmOTCEZdJZFJJ3ouyzIAtWUuLy8jGo3SZ4lgygeUlpbS+2g0qmP8ypUrpj7Gwkx/Ngp0CMLhsGFAFIlEEA6HcerUKXNywOQoUFFRgfT0dKSlpaG3txfd3d10m5uMBFVVVZiamtKt8KakpHADk83NTcMVId5UNhqNGgZQa2trOHTokCmlWZgeBSYmJhAKhRCJRHD79m1Eo1HVFlUsFsPz589VrcILWVmQZ+w1Xnle9Mgqrz2IFQ+WAqHh4WGEQiGEw2G0t7dTZ8OSUFJSYpkAs+XD4bBh/srKCr33+/2qlaxEsBwJDgwMUAcTiURUJBDPe/bsWZ118KCd2mqdLIEsy9x6CDELCwvIzs62pM+uQuFgMAgAaGtrQzgcpvNwdugpKipCbm5uQgK0RGnL7+zsYHt7mzu0ff/+HaFQCACwurpqWZd9OyY3ODgIp9PJHRF44fDKyorKCZLYfmtr65eAgqCyErLbs7KygnA4jFAohGAwiPX1dZw+fdqy3Hs6Jdbc3Ayfz4fU1FTIsoza2lqMjIyotrPJSMCbC7DDKlng2Nzc1MX2BMTbHz58mOa9fft2V8oD+2QBnZ2ddKJEhkXtWYD8/HzDd0lkqI37Dx48mPC7CwsLWF1djXs6LRH25bR4R0cHgsEgtre3UV1djaqqKsiyDFmWEQ6Hud4b+B24kER+a7G8vIyvX7/S336/HydPntyT8sA+nhVub29Xncy4dOkSvY+3VyfLsqr/s7H/0tISFEVBNBpFMBikxMzMzFj29jzsmxMk4J3MmJycpP6gsLCQ5n/+/Fm1H0gQCARUK76yLJsOb61g3wkg6OrqQlpaGt2iHhsbg8PhUO0Mi6LI9Q2fPn0yPaXdC/7Y/wXu3Lmj+r2xsQGXy6Xbq5uenlYtj5E1vEQrOfuFP2YBidDf3w9JkrjH5P4WkkbA/wqS/qepZOMfAckWINn4R0CyBUg2/gPfGySwSVSiygAAAABJRU5ErkJggg==", "name": "pxflib", "parameters": { "Scale": 1 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec3(0)", "label": "", "name": "in", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "", "longdesc": "Type - TEX3D Operator\nCode - PauloFalcao\n\nScales the TEX3D texture", "name": "TEX3D Scale", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$in($uv*$Scale)", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 1, "label": "Scale", "longdesc": "Scale factor", "max": 10, "min": 0, "name": "Scale", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Scale" }, "tree_item": "PauloFalcao/TEX3D/Operator/TEX3D Scale", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "brightness": 0, "clamp": 0, "contrast": 1 }, "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": "Type - TEX3D Operator\nCode - PauloFalcao\n\nChanges TEX3D brightness and contrast", "name": "TEX3D Brightness and Contrast", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0, "label": "Brightness", "longdesc": "Brightness amount", "max": 1, "min": -1, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Contrast", "longdesc": "Contrast amount", "max": 2, "min": 0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1, "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" } ] } ] }, "tree_item": "PauloFalcao/TEX3D/Operator/TEX3D Brightness and Contrast", "type": "shader" }, { "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": "pxflib", "parameters": { "x": 0, "y": 0, "z": 0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(0.0)", "label": "", "name": "in", "shortdesc": "TEX3D Input", "type": "tex3d" } ], "instance": "", "longdesc": "Type - TEX3D Operator\nCode - PauloFalcao\n\nTranslates the input TEX3D", "name": "TEX3D Translate", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "$in($uv-vec4($x, $y, $z,0.0))", "type": "tex3d" } ], "parameters": [ { "control": "P1.x", "default": 0, "label": "X", "max": 1, "min": -1, "name": "x", "step": 0.001, "type": "float" }, { "control": "P1.y", "default": 0, "label": "Y", "max": 1, "min": -1, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 1, "min": -1, "name": "z", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Translate" }, "tree_item": "PauloFalcao/TEX3D/Operator/TEX3D Translate", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "color": { "a": 1, "b": 0, "g": 0, "r": 1, "type": "Color" } }, "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, "b": 1, "g": 1, "r": 1 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "tree_item": "PauloFalcao/TEX3D/Generator/TEX3D Color", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "angle": 0, "axis": 1, "correction": 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": "Type - SDF3D Operator\nCode - PauloFalcao\n\nTwist a SDF3D on the specified axis by an angle.", "name": "SDF Twist", "outputs": [ { "sdf3d": "$in(twist$axis($uv,$angle))/(1.0+$correction)", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 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, "label": "Angle", "max": 360, "min": -360, "name": "angle", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "correction", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Twist" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Twist", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "iterations": 4, "mode": 1 }, "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": "SDF Fractal", "outputs": [ { "sdf3d": "$mode", "shortdesc": "SDF3D Output", "type": "sdf3d" } ], "parameters": [ { "default": 24, "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, "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": "SDF Fractal" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Fractal", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { }, "shader_model": { "code": "", "global": "", "inputs": [ ], "instance": "", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nInput Coordinates", "name": "V4V4 Axis", "outputs": [ { "shortdesc": "V4->V4 Coordinates Output", "type": "v4v4", "v4v4": "$uv" } ], "parameters": [ ], "shortdesc": "V4V4 Axis" }, "tree_item": "PauloFalcao/V4->V4/Generator/V4V4 Axis", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "x": 0, "y": 0, "z": 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": "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, "label": "X", "max": 1, "min": -1, "name": "x", "step": 0.001, "type": "float" }, { "control": "P1.y", "default": 0, "label": "Y", "max": 1, "min": -1, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 1, "min": -1, "name": "z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Translate" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Translate", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "mode": 0 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "V4->V4", "type": "v4v4" } ], "instance": "", "longdesc": "Type - SDF3D Operator\nCode - PauloFalcao\n\nTransforms a SDF3D making a mirror symmetry using the chosen axis", "name": "MFSDF Axis Symmetry", "outputs": [ { "shortdesc": "SDF3D output", "type": "v4v4", "v4v4": "$in(vec4(vec3($mode),$uv.w))" } ], "parameters": [ { "default": 6, "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" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Axis Symmetry", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "mode": 0, "smooth": 0 }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "vec4(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": "MFSDF Smooth Axis Symmetry", "outputs": [ { "shortdesc": "V4->V4 output", "type": "v4v4", "v4v4": "$in(vec4(vec3($mode),$uv.w))" } ], "parameters": [ { "default": 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, "label": "Smooth", "longdesc": "Smooth amount", "max": 1, "min": 0, "name": "smooth", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Axis Symmetry" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Smooth Axis Symmetry", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "ax": 0, "ay": 0, "az": 0 }, "seed": 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": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nRotates a V4->V4\nAdapted from RodZilla TEX3D Rotate", "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, "label": "X", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "ax", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "ay", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "az", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Rotate" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Rotate", "type": "shader" }, { "connections": [ { "from": "sdf3d_sphere", "from_port": 0, "to": "pxflib_18", "to_port": 0 }, { "from": "pxflib_10", "from_port": 0, "to": "pxflib_9", "to_port": 0 }, { "from": "pxflib_9", "from_port": 0, "to": "pxflib_8", "to_port": 0 }, { "from": "pxflib_8", "from_port": 0, "to": "pxflib_7", "to_port": 0 }, { "from": "sdsmoothboolean", "from_port": 0, "to": "pxflib_18", "to_port": 2 }, { "from": "pxflib_7", "from_port": 0, "to": "pxflib_18", "to_port": 1 }, { "from": "pxflib_18", "from_port": 0, "to": "sdf3d_rotate_2", "to_port": 0 }, { "from": "pxflib_11", "from_port": 0, "to": "pxflib_10", "to_port": 0 }, { "from": "sdf3d_rotate_2", "from_port": 0, "to": "pxflib_12", "to_port": 0 } ], "icon_data": "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", "nodes": [ { "name": "sdf3d_sphere", "node_position": { "x": -333.484985, "y": -293.11499 }, "parameters": { "r": 0.45 }, "type": "sdf3d_sphere" }, { "name": "sdsmoothboolean", "node_position": { "x": 16.514984, "y": 43.88501 }, "parameters": { "k": 0.01 }, "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, "label": "", "longdesc": "The smoothness of the boolean operation", "max": 1, "min": 0, "name": "k", "shortdesc": "Smoothness", "step": 0.0001, "type": "float" } ], "shortdesc": "Smooth Union XY" }, "type": "shader" }, { "name": "sdf3d_rotate_2", "node_position": { "x": 441.514954, "y": -148.115005 }, "parameters": { "ax": "$time*13.0", "ay": "$time*23.0", "az": "$time*17.0" }, "type": "sdf3d_rotate" }, { "name": "pxflib_4", "node_position": { "x": -332.484985, "y": 216.88501 }, "parameters": { "mode": 0, "smooth": "sin($time*0.2)*0.1+0.1" }, "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, "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, "label": "Smooth", "longdesc": "Smooth amount", "max": 1, "min": 0, "name": "smooth", "step": 0.001, "type": "float" } ], "shortdesc": "Smooth Axis Symmetry" }, "type": "shader" }, { "name": "pxflib_5", "node_position": { "x": -336.484985, "y": 114.88501 }, "parameters": { "ax": -20, "ay": 30, "az": -20 }, "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, "label": "X", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "ax", "shortdesc": "Rotate.x", "step": 1, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "ay", "shortdesc": "Rotate.y", "step": 1, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "az", "shortdesc": "Rotate.z", "step": 1, "type": "float" } ], "shortdesc": "V4->V4 Rotate" }, "type": "shader" }, { "name": "pxflib_3", "node_position": { "x": -335.484985, "y": 13.88501 }, "parameters": { "x": 0.5, "y": 0.5, "z": 0.5 }, "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, "label": "X", "max": 1, "min": -1, "name": "x", "step": 0.001, "type": "float" }, { "control": "P1.y", "default": 0, "label": "Y", "max": 1, "min": -1, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 1, "min": -1, "name": "z", "step": 0.001, "type": "float" } ], "shortdesc": "Translate" }, "type": "shader" }, { "name": "pxflib_8", "node_position": { "x": -335.484985, "y": -135.115005 }, "parameters": { "mode": 1, "x": 1, "xyz": 0.327, "y": 1, "z": 1 }, "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, "label": "XYZ", "longdesc": "Scales all axis", "max": 1, "min": -1, "name": "xyz", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "X", "longdesc": "Scale X axis", "max": 1, "min": -1, "name": "x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Y", "longdesc": "Scale Y axis", "max": 1, "min": -1, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Z", "longdesc": "Scale Z axis", "max": 1, "min": -1, "name": "z", "step": 0.001, "type": "float" }, { "default": 1, "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": -334.484985, "y": -183.115005 }, "parameters": { }, "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": "pxflib_18", "node_position": { "x": 41.86496, "y": -179.465012 }, "parameters": { "iterations": 6, "mode": 2 }, "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, "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, "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" }, { "name": "pxflib", "node_position": { "x": 395.515015, "y": -34.114998 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 0.199, "CamD": 1.5, "CamX": "sin(sin($time*0.3)*0.5+0.5)*4.0", "CamY": 1.974, "CamZ": "cos(cos($time*0.2)*0.5+0.5)*4.0", "CamZoom": 1.003, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "Pow": 64, "Reflection": 0.2, "Shadow": 1, "Specular": 0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1 }, "shader_model": { "code": "", "global": "const float PI=3.14159265359;\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*PI,PI);\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)-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": "max($uv.y+1.0,length(vec3($uv.x,$uv.y+1.0,$uv.z))-10.0)", "function": true, "label": "SDF3D B", "name": "sdf_b", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "vec3(mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0))*0.9+0.1", "function": true, "label": "TEX3D B", "name": "tex3d_b", "shortdesc": "TEX3D B", "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": "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.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\tvec3 objColor=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.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\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=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.0));\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": "Ray Marching 360 HDRI Image", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1, "min": 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, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "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, "min": 0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PauloFalcao/SDF3D/Operator/SDF Fractal Example" }, { "icon_data": "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", "name": "pxflib", "parameters": { "mode": 0, "x": 1, "xyz": 1, "y": 1, "z": 1 }, "seed": 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": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nScales the input V4->V4 Coordinates", "name": "MFSDF Scale", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$mode" } ], "parameters": [ { "control": "P1.x", "default": 1, "label": "XYZ", "longdesc": "Scales all axis", "max": 1, "min": -1, "name": "xyz", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "X", "longdesc": "Scale X axis", "max": 1, "min": -1, "name": "x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Y", "longdesc": "Scale Y axis", "max": 1, "min": -1, "name": "y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Z", "longdesc": "Scale Z axis", "max": 1, "min": -1, "name": "z", "step": 0.001, "type": "float" }, { "default": 1, "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" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Scale", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "k": 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": "SDF2D 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, "label": "", "longdesc": "The smoothness of the boolean operation", "max": 1, "min": 0, "name": "k", "shortdesc": "Smoothness", "step": 0.0001, "type": "float" } ], "shortdesc": "SDF2D Smooth Union XY" }, "tree_item": "PauloFalcao/SDF2D/Operator/SDF2D Smooth Union XY", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "r": 0.5, "x": 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": "Type - SDF3D Generator\nCode - IQ\n\nGenerates a Octahedron as a signed distance function\nCode from www.iquilezles.org/www/articles/distfunctions/distfunctions.htm", "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, "min": 0, "name": "r", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "Rounding", "longdesc": "Roundness of the object", "max": 1, "min": 0, "name": "x", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Octahedron" }, "tree_item": "PauloFalcao/SDF3D/Generator/SDF Octahedron", "type": "shader" }, { "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": "pxflib", "parameters": { "Correction": 2, "Distance": 0, "scale": 1, "scale_x": 1, "scale_y": 1, "scale_z": 1, "translate_x": 0, "translate_y": 0, "translate_z": 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": "Type - SDF3D Generator\nCode - Nikat\n\nMakes a non periodic noise using nikat code from https://www.shadertoy.com/view/XsX3zB", "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, "label": "Scale", "longdesc": "Noise scale", "max": 32, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale X", "longdesc": "Noise X scale", "max": 16, "min": 0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16, "min": 0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16, "min": 0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate X", "longdesc": "Noise X Translation", "max": 100, "min": 0, "name": "translate_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Y", "longdesc": "Noise Y Translation", "max": 100, "min": 0, "name": "translate_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Z", "longdesc": "Noise Z Translation", "max": 100, "min": 0, "name": "translate_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Distance", "longdesc": "Distance to surface", "max": 0.5, "min": -0.5, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Simplex Noise" }, "tree_item": "PauloFalcao/SDF3D/Generator/SDF Simplex Noise", "type": "shader" }, { "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": "pxflib", "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": "Type - SDF3D to TEX3D\nCode - PauloFalcao\n\nConverts a SDF3D to a grayscale TEX3D", "name": "SDF3D to TEX3D", "outputs": [ { "shortdesc": "TEX3D Output", "tex3d": "vec3(o_$name_uv,o_$name_uv,o_$name_uv)", "type": "tex3d" } ], "parameters": [ ] }, "tree_item": "PauloFalcao/TEX3D/Util/SDF3D to TEX3D", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "blend_type": 0, "iterations": 8, "mode": 2, "opacity": 1 }, "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": "Image Fractal", "outputs": [ { "rgba": "$mode", "shortdesc": "SDF3D Output", "type": "rgba" } ], "parameters": [ { "default": 24, "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, "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, "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, "min": 0, "name": "opacity", "step": 0.001, "type": "float" } ], "shortdesc": "Image Fractal" }, "tree_item": "PauloFalcao/Image/Operator/Image Fractal", "type": "shader" }, { "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAI5JREFUeJzt0rENwCAQBME30H/LduAiNmBW+pjTiGetec/MVLfDt/87c3UAAACoJ7QBAACgntAGAACAekIbAAAA6gltAAAAqCe0AQAAoJ7QBgAAgHpCGwAAu57Q5gcAAFBPaAMAAEA9oQ0AAAD1hDYAAADUE9oAAABQT2gDAABAPaENAAAA9YQ2AAAuB/gAJZ4D97ubRUQAAAAASUVORK5CYII=", "name": "pxflib", "parameters": { }, "shader_model": { "code": "", "global": "", "inputs": [ ], "instance": "", "longdesc": "Type - V4->V4 Generator\nCode - PauloFalcao\n\nInput Coordinates", "name": "Image Axis", "outputs": [ { "rgba": "vec4($uv,0.0,1.0)", "shortdesc": "RGBA Output", "type": "rgba" } ], "parameters": [ ], "shortdesc": "Axis" }, "tree_item": "PauloFalcao/Image/Generator/Image Axis", "type": "shader" }, { "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": "pxflib", "parameters": { "scale": 1 }, "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", "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, "label": "Scale", "longdesc": "The scale amount", "max": 1, "min": 0, "name": "scale", "step": 0.001, "type": "float" } ], "shortdesc": "Image Simple Scale" }, "tree_item": "PauloFalcao/Image/Operator/Image Simple Scale", "type": "shader" }, { "connections": [ { "from": "sphere", "from_port": 0, "to": "pxflib_2", "to_port": 0 }, { "from": "pxflib", "from_port": 0, "to": "translate", "to_port": 0 }, { "from": "translate", "from_port": 0, "to": "mirror_2", "to_port": 0 }, { "from": "mirror_2", "from_port": 0, "to": "mirror", "to_port": 0 }, { "from": "mirror", "from_port": 0, "to": "rotate", "to_port": 0 }, { "from": "rotate", "from_port": 0, "to": "scale_2", "to_port": 0 }, { "from": "scale_2", "from_port": 0, "to": "pxflib_2", "to_port": 1 }, { "from": "pxflib_2", "from_port": 0, "to": "scale", "to_port": 0 } ], "icon_data": "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", "nodes": [ { "color": { "a": 1, "b": 0, "g": 0.5, "r": 1, "type": "Color" }, "name": "comment", "node_position": { "x": 73.115967, "y": 164.396667 }, "parameters": { }, "size": { "x": 396, "y": 128 }, "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": -206.884033, "y": -221.603333 }, "parameters": { }, "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" }, { "name": "translate", "node_position": { "x": -210.884033, "y": -151.603394 }, "parameters": { "translate_x": 0.5, "translate_y": 0.5 }, "type": "translate" }, { "name": "mirror_2", "node_position": { "x": -211.884033, "y": -72.603333 }, "parameters": { "direction": 1, "offset": 0 }, "type": "mirror" }, { "name": "mirror", "node_position": { "x": -214.884033, "y": 5.396667 }, "parameters": { "direction": 0, "offset": 0 }, "type": "mirror" }, { "name": "scale_2", "node_position": { "x": -220.884033, "y": 185.396667 }, "parameters": { "cx": 0, "cy": 0, "scale_x": 0.51, "scale_y": 0.51 }, "type": "scale" }, { "name": "rotate", "node_position": { "x": -223.884033, "y": 86.396667 }, "parameters": { "cx": 0, "cy": 0, "rotate": "$time*45.0" }, "type": "rotate" }, { "name": "pxflib_2", "node_position": { "x": 123.457153, "y": -156.570435 }, "parameters": { "blend_type": 0, "iterations": 6, "mode": 2, "opacity": 1 }, "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, "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, "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, "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, "min": 0, "name": "opacity", "step": 0.001, "type": "float" } ], "shortdesc": "Fractal" }, "type": "shader" }, { "name": "scale", "node_position": { "x": 157.115967, "y": 14.396667 }, "parameters": { "cx": 0, "cy": 0, "scale_x": "sin($time)*0.5+1.5", "scale_y": "sin($time)*0.5+1.5" }, "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", "name": "Scale", "outputs": [ { "longdesc": "Shows the scaled image", "rgba": "$i(scale($uv, vec2(0.5+$cx, 0.5+$cy), vec2($scale_x, $scale_y)))", "shortdesc": "Output", "type": "rgba" } ], "parameters": [ { "control": "None", "default": 0, "label": "Center X:", "longdesc": "The position of the scale center", "max": 1, "min": -1, "name": "cx", "shortdesc": "Center.x", "step": 0.005, "type": "float" }, { "control": "None", "default": 0, "label": "Center Y:", "longdesc": "The poisition of the scale center", "max": 1, "min": -1, "name": "cy", "shortdesc": "Center.y", "step": 0.005, "type": "float" }, { "control": "None", "default": 1, "label": "Scale X:", "longdesc": "The scale amount along the X axis", "max": 50, "min": 0, "name": "scale_x", "shortdesc": "Scale.x", "step": 0.005, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Y:", "longdesc": "The scale amount along the Y axis", "max": 50, "min": 0, "name": "scale_y", "shortdesc": "Scale.y", "step": 0.005, "type": "float" } ], "shortdesc": "Scale" }, "type": "shader" }, { "name": "sphere", "node_position": { "x": -209.884033, "y": -363.603333 }, "parameters": { "cx": 0.5, "cy": 0.5, "r": 0.49 }, "type": "sphere" } ], "tree_item": "PauloFalcao/Image/Operator/Image Fractal Example" }, { "icon_data": "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", "name": "pxflib", "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}", "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": [ ] }, "tree_item": "PauloFalcao/TEX3D/Util/Triplanar to TEX3D by SDF", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "mode": 0, "smooth": 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": "Type - RGBA Operator\nCode - PauloFalcao\n\nTransforms a RGBA making a mirror smooth symmetry using the chosen axis", "name": "Image Smooth Axis Symmetry", "outputs": [ { "rgba": "$in($mode)", "shortdesc": "RGBA output", "type": "rgba" } ], "parameters": [ { "default": 2, "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, "label": "Smooth", "max": 0.02, "min": 0, "name": "smooth", "step": 0.00001, "type": "float" } ], "shortdesc": "Image Smooth Axis Symmetry" }, "tree_item": "PauloFalcao/Image/Operator/Image Smooth Axis Symmetry", "type": "shader" }, { "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": "pxflib", "parameters": { }, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "0.0", "label": "", "name": "in", "shortdesc": "RGBA Input", "type": "rgba" } ], "instance": "", "longdesc": "Type - RGBA Operator\nCode - PauloFalcao\n\nTransforms a RGBA making the Juliaset fold Z^2 transformation", "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" }, "tree_item": "PauloFalcao/Image/Operator/Image Juliaset Fold Z2", "type": "shader" }, { "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": "pxflib", "parameters": { "Distance": 0, "Repetitions": 6, "Roundness": 0, "Smooth": 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": "Type - RGBA Operator\nCode - PauloFalcao\n\nThis 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", "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, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the axis", "max": 32, "min": 1, "name": "Repetitions", "shortdesc": "Count", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Distance", "longdesc": "Object distance from the center", "max": 5, "min": 0, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Smooth", "longdesc": "Smoothness between objects", "max": 1, "min": 0, "name": "Smooth", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "Roundness", "step": 0.001, "type": "float" } ], "shortdesc": "Image Smooth Polar Repeat" }, "tree_item": "PauloFalcao/Image/Operator/Image Smooth Polar Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { }, "seed": -5947, "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": [ { "shortdesc": "BaseColor", "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": "Specular", "tex3d_gs": "$MFSDF(vec4($uv.xyz,4.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" }, { "sdf3d": "$MFSDF(vec4($uv.xyz,0.0)).w", "shortdesc": "Object", "type": "sdf3d" } ], "parameters": [ ], "shortdesc": "MFSDF Object Attributes" }, "tree_item": "PauloFalcao/MFSDF/Generator/MFSDF Object Attributes", "type": "shader" }, { "connections": [ { "from": "tex3d_pattern_2", "from_port": 0, "to": "tex3d_colorize_3", "to_port": 0 }, { "from": "tex3d_colorize_3", "from_port": 0, "to": "pxflib_4", "to_port": 0 }, { "from": "pxflib_4", "from_port": 0, "to": "gen_outputs", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "pxflib_4", "to_port": 5 } ], "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, "sx": 6, "sy": 0.5, "sz": 6 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "tex3d_pattern_2", "node_position": { "x": -1106.340088, "y": -381.449951 }, "parameters": { "mix": 4, "x_scale": "$checkersize", "x_wave": 2, "y_scale": 0, "y_wave": 2, "z_scale": "$checkersize", "z_wave": 2 }, "seed": 0, "seed_locked": false, "type": "tex3d_pattern" }, { "name": "gen_inputs", "node_position": { "x": -1341.340088, "y": -277.949951 }, "parameters": { }, "ports": [ ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -171.340027, "y": -302.949951 }, "parameters": { }, "ports": [ { "group_size": 0, "name": "port0", "type": "v4v4" } ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1055.590088, "y": -653.449951 }, "parameters": { "checkersize": 2, "param0": 6, "param1": -1, "param2": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0, "param4": 0.5, "param5": 0 }, "seed": 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, "label": "Checker Size", "max": 20, "min": 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, "y": -377.021362 }, "parameters": { "g": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" } }, "seed": 0, "seed_locked": false, "type": "tex3d_colorize" }, { "name": "pxflib_4", "node_position": { "x": -591.953735, "y": -359.458862 }, "parameters": { "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": 0, "TranlateY": -1, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "parameters": { "checkersize": 2, "param0": 6, "param1": -1, "param2": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0, "param4": 0.5, "param5": 0 }, "seed": 0, "seed_locked": false, "shortdesc": "", "tree_item": "PauloFalcao/MFSDF/Objects/MFSDF Checkerboard", "type": "graph" }, { "icon_data": "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", "name": "pxflib", "parameters": { "RepX": 4, "RepY": 1, "RepZ": 4, "X": 1, "Y": 1, "Z": 1 }, "seed": 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/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": "Type - V4->V4 Operator\nCode - IQ\n\nRepeats its input shape", "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, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4, "min": 0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4, "min": 0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4, "min": 0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Rep X", "longdesc": "Repetitions in the X axis", "max": 128, "min": 1, "name": "RepX", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Rep Y", "longdesc": "Repetitions in the Y axis", "max": 128, "min": 1, "name": "RepY", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Rep Z", "longdesc": "Repetitions in the Z axis", "max": 128, "min": 1, "name": "RepZ", "step": 1, "type": "float" } ], "shortdesc": "MFSDF Repeat" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 4, "Iterations": 2, "SmoothX": 0, "SmoothY": 0, "SmoothZ": 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": "Type - SDF3D Operator\nCode - PauloFalcao\n\nRepeats its input shape with smoothness using reflection symmetry", "name": "MFSDF Smooth Repeat", "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, "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, "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, "min": 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, "min": 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, "min": 0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 0.1, "min": 0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 0.1, "min": 0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 0.1, "min": 0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Repeat" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Smooth Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 4, "SmoothX": 0, "SmoothY": 0, "SmoothZ": 0, "X": 0.5, "Y": 0.5, "Z": 0.5 }, "seed": 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": "Type - SDF3D Operator\nCode - Blackle\n\nRepeats its input shape with smoothness using reflection symmetry", "name": "MFSDF Smooth Repeat V2", "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, "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, "label": "Size X", "longdesc": "Size of the grid in the X axis", "max": 4, "min": 0, "name": "X", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Y", "longdesc": "Size of the grid in the Y axis", "max": 4, "min": 0, "name": "Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Size Z", "longdesc": "Size of the grid in the Z axis", "max": 4, "min": 0, "name": "Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothX", "longdesc": "Smoothness on the X axis", "max": 1, "min": 0, "name": "SmoothX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothY", "longdesc": "Smoothness on the Y axis", "max": 1, "min": 0, "name": "SmoothY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SmoothZ", "longdesc": "Smoothness on the Z axis", "max": 1, "min": 0, "name": "SmoothZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Repeat V2" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Smooth Repeat V2", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "angle": 0, "axis": 1, "correction": 0 }, "seed": 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": "Type - SDF3D Operator\nCode - PauloFalcao\n\nTwist a SDF3D on the specified axis by an angle.", "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, "label": "Axis", "name": "axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "Angle1.a", "default": 0, "label": "Angle", "max": 360, "min": -360, "name": "angle", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "correction", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Twist" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Twist", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 1, "Distance": 1, "Repetitions": 5 }, "seed": 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": "Type - V4->V4 Generator\nCode - Paulo Falcao, RodZilla\n\nRepeats its input shape around a axis", "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, "label": "Axis", "name": "Axis", "type": "enum", "values": [ { "name": "X", "value": "X" }, { "name": "Y", "value": "Y" }, { "name": "Z", "value": "Z" } ] }, { "control": "None", "default": 4, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the circle", "max": 32, "min": 1, "name": "Repetitions", "shortdesc": "Count", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Distance", "max": 5, "min": 0, "name": "Distance", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Polar Repeat" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Polar Repeat", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 1, "Distance": 1, "Repetitions": 6, "Smooth": 0 }, "seed": 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": "Type - MFSDF Operator\nCode - PauloFalcao, Gaz\n\nThis 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", "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, "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, "label": "Repetitions", "longdesc": "The number of repetitions of the input shape around the axis", "max": 32, "min": 1, "name": "Repetitions", "shortdesc": "Count", "step": 1, "type": "float" }, { "control": "None", "default": 1, "label": "Distance", "longdesc": "Object distance from the center", "max": 5, "min": 0, "name": "Distance", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Smooth", "longdesc": "Smoothness between objects", "max": 1, "min": 0, "name": "Smooth", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Polar Repeat" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Smooth Polar Repeat", "type": "shader" }, { "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAABUdJREFUaIHtmc2KXEUUx3/3oz9kIPgI6jILVxMmGRRRcOVb5BncunIb0FVeQVfuTDAQBAk+gZCFTxBJIgrTk+mP2y6KKk+dU1Vdt2c6gvShGO7ce7vq/z//c059XDja0Y52tP/SmsN1fQ6NH+DZwUa5SQLn0PrWxC3YFrbw9OYGvQECd6EX0JPo1TCOxgBPrj36tQg46J2BrjjIpxL9BgYY4PHbJ3DmoefQu6dOmS4mgKfhOKzgClbw6K0RuGccH/A50BPo8wylDhvYwBqWsIAfDk3gFKYZ9C1MYSLQWwKtSIltHEsrWMIlvIYfD0TgTgZ9AzOYeAK9IdAZBVQyDLAWOrwaI0UtAYleEuhh6qFP4/jJKSALqxRh7XVYwEv4/gYJnMIsBchBl+5X6INcnUcvo4hYhMDhDVzAC/iuAltfQ0D5vvPoZ7sIdMU0cATwBEIghX5qbLcC93x3AX0Dc5h5AlOB3irQxj9s4xDC01AiXMEl/AUPrkngLOX+mWiKgK2hlWkQMsFVpBBIL+HbIsIdQtmaM/XQ5zF6m8E26gppIEXovXSNj7GCdYVnd2ESO3IKcxE/M5EGKpCCGpMUMUnPaqXmvjvwy34KKPf3wuVT434LtEtFUU0abMRP3Gy9jwLK/a33/TyfAJaMzWxJTNVlG2yB5Bn8PFYBtUKexUCn8YXFqmLDrprkmgKTBq3IgQFu5RXIElBDTgxiC30/AojZYGsIuPsneQLpEDoXpaD1NUfVfhUzKlRkSnQmhJKJm6xUeFYfw0/1Ckg/daaqTAzE5CTQG4gqie1W02FVmwc3Q+dE2EGgNVj74nUyWXO7giYOoZADkoCrQq58jyMQXJXDV27JONlJIOSAjJ8NTGA2ikDovRKrLIsy6OtDKCigHg0ibnO+1nYuerH5Z6u49Xr55S5+v091ZdsEHlYq0MQKWBy5VYCN+zCXl9dzVoFwRxJLirCDQGswdZmbhVZPQCWG7aqKAL4LObC86FL/JonJdyR6uxzapghs498mLXH/mefQmtbF152502bIqPu2z9xTSft+vQKBXLLlxkgqZv+1WwKpwOCvy/FWRUBmgv27dysQGPzTrZkxcjubNAH5tspp6xgLzpJsUj+UC9LGz8HEyRDQ53YFVQQwPTZ50Eo0dT85kTXe5YOhF8RZZQikk/upF1SJYDVpMsgKZGqadKVz/xejFMATCItECb0gy9gWxirDWOdfyJXXf8/vFYdgjbnAgLNYk25W/0roDv3lHgSeiC32Nm7WLGgMpiRKa/aUZQWf70EAGGAlvqNI9IrJztObpFwWdBL9othzicBjuIK14DDEQRXW8cT/Wj7b4oVqm/iM8ZMigdJEhj/vXhkadlQFy2INc62ipxy/EYekS/i7jK+sAPAIFrD058ZKCkkmySoZGypOBhEwyvcX8OkuAsklamTP4bY/+izsFTszbbUmuRE5YIltvJvcye4CTneC2xlCzl77M5WVkCI0q8nglwayaA6mTEka8mvfFSzgjxpkNQoAv8N7MBcitGYtrebd8syqomhtIudVsXSOJgA8hw88h3ro1mz0b8QXvjce/WeVsOoJAL/B+zBPobdrTGeh5uTK/Fp823Nx/6La986qciCY++r2pXB5ecPh9oTb+M1gcrZawgWcjUIDjFIg2K/wIXTG2Qq6dXnB8X/CR3tAqVueZO0reBdO4B1x9CvPT2WpDUIFSmu/UijPtQck4OxruAUn/gRbfW/t4vgJRdOtMUeF+6EIBPvG05jFIkj0LuJzu5M97CYJKHvoP1KRORE52tGOdrT/gf0Dkkzv5XDnUYIAAAAASUVORK5CYII=", "name": "pxflib", "parameters": { "Correction": 0, "iterations": 3, "mode": 1 }, "seed": 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.", "name": "MFSDF Fractal", "outputs": [ { "shortdesc": "V4->V4 Output", "type": "v4v4", "v4v4": "$mode" } ], "parameters": [ { "default": 24, "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, "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, "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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Fractal" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Fractal", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Gamma": 1, "Samples": 0 }, "seed": 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": "Type - Image operation\nCode - PauloFalcao\n\nGenerates an image anti-aliasing using random points in the pixel space.", "name": "Magic AA", "outputs": [ { "rgb": "randomAA_$name($uv)", "type": "rgb" } ], "parameters": [ { "default": 18, "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, "label": "Gamma", "max": 3, "min": 0, "name": "Gamma", "step": 0.1, "type": "float" } ] }, "tree_item": "PauloFalcao/Image/Util/Magic AA", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Axis": 0, "f": 0 }, "seed": 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, "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, "label": "", "max": 1, "min": 0, "name": "f", "shortdesc": "3º field position", "step": 0.001, "type": "float" } ] }, "tree_item": "PauloFalcao/TEX3D/Util/TEX3D to Image", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { }, "seed": 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 Union", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "coord_union($in1($uv), $in2($uv))" } ], "parameters": [ ], "shortdesc": "V4V4 Coordinates Union" }, "tree_item": "PauloFalcao/V4->V4/Operator/V4V4 Coordinates Union", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "s": 1 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "1.0", "label": "", "longdesc": "The input object as a signed distance function", "name": "in", "shortdesc": "Input", "type": "sdf3d" } ], "instance": "", "longdesc": "Folds space by inverting the coordinates of space outside the box ", "name": "SDF Box Folding", "outputs": [ { "longdesc": "The scaled object", "sdf3d": "$in(clamp($uv,-$s,$s)*2.0-$uv)", "shortdesc": "Output", "type": "sdf3d" } ], "parameters": [ { "control": "None", "default": 1, "label": "", "max": 5, "min": 0, "name": "s", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Box Folding" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Box Folding", "type": "shader" }, { "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAIABJREFUaIFNWmdwk0e7fYu6XlXbklxluffeu7GxjcE2pmMCBBIIJYE0CKQQCAQSSEhCSKG3kNADxmCDK8a99yq5yJJtWcXqXXrvD77v3ruzO7NldvY55zw7O7NzwOM71lptNpsdBQEARVEQBC02m9VqA0HQjqIQCEIQCAIgBIF2O2q12d5MgiAIgACAAjAMQSCIgWEYgrAYOGrdh1gcloDHPyt/mZ2ZdunarYIV+WyWo9FoQlGg8db3NjsKAIDdbrejqB1909D/9FEUenMoBMEgCMMQAAAAAEAQhIVhEASsNrsdRSEIhEAQRQEURTEYGE4O9UMBFARAm91us6NGs8VksVisNpPFotEbtUaTwWjWm8xGs8VstdrsdjuK2ux2i9Vmt9shCBJiPPM2bINpTIZf4pQWCgsNMRr1IAiCAGpDQVdnFtfDHQRQrd5Ap1GGJMaAxKXtAlnnQH+AqyMIAPl7j830NmIwMASBIAAAAAACAARBRDwWh8HAMIyBYQIWC8OQHX0DBsTAMAaCsBgMFgMDAADuW5sHACiKAja73WazoyhqttpAELDbUfgN1SAIAMDmw2cNBj2ZjExNzxgNehiLM+i0Do6Ozhw2iqIgCH328S7PgNje1ioGg7Fx6+4Afz8QBFVqNQVB/rx0bbij2i8wWDA68uvlv+WKRQadptVqYRi2WCx//np667sf2FFQODMTHxvb09eHw2K8vXjNf/8IQ9AbTSxWm81uB1DAZrcDAABDEAqgEAhCIAjuKMwEARAFAAgE32CwoygMgSv2HLXbbBQKhUgkTE5Oq1XKqvKHb+/Yp9UbmUwmQibabbZnj/9ZXlzy6b4dh46cNJttFAoFhiG+YKKm9pWfr9frqlISiWTDOVrUIv+wZDrRum7TuwCAlpZV5OctFYtn2Ry2TL7Y1dWdl5P9/MXL5XlL7SgwKxYTiSSEQlUpFX0Dw5VldzJ8nN5oE1Swc6D0T6vNbrFY3+QSAADg7uLsks9+HBoZC/T3HR4dJxAILhyn538c65xZ9I9e0tPb78Xjbtq41tHBQSJZqG9sDg0OMhiN4aHBZrNlnM+32VEsBr597bfFxUUPDw+JRHL65wv/3H3A8+Sy2Ww2ywmCQLF49t+71w58fvzT/TuxWKx/ePJARx2bzfYKjF23eiUEw719gz4+XjarxWpDOzq76l489AyIHe9volNpHx36WqPVYXF4sWjWZrf29g6kJMVf+fPs58fOmAwGlVoFv/f5GQC1X/j1+7InDzdu2kIiEjRaXXBSTvayAjbLcVo4s2vH9t8vXCl/fNtkxw511U+KZHExkae+OVzx7LFUaax6djcpLTs2PtUnIIw/2n/g828mpoRpyYkNTS0RYaGLShUMwxyW4+jkHA6HL169blIs37hh3ZKly504bkHBwSq1+sih/VQm58K5U65cnxuXfuaP9hsMhqJV69as26A1gd7e3gQ8AYKg3v7+B39dXLdqhVpnjk9MhSB4eGwsJDgIPvjZFz19/Ws3bImIipuaFoIQzHJ0OP71Ab+g8PbGqm3bd/T09dv1C0KhkI7ghvt7QNQM4alzMwKdTqdVSnxDkyTCoYiYxNnZ2bGh3uTULCwWg8fjIsLCJAvSVy//tRjUD+//s2ptCZVKJRHx8XHRL57ei4yOf/i4tKW1/dmjm05OTkvSEgYHB2Pik1cUrQkKi+ntahFP81ubXw/1d/Z1t714/iR32QoYhjdu2mpFcb0dr/yDI+vqX4eFhv595z5Y/boDtdvv3Lq4av02m80KYbA0CjLO51/98yc8Hu8XmjTc81oulx89+QsFIS1I5XgCAYfFdvX0YDHY25d+9PEPZDAYCwsLUQnZ1eX33Xwi160ustls1y+d++jg1xgMFoOBUdReV9+UmZ5SXVevUqqrSm8FxmRhMBijcmb5qs0+Xp4z4rkHty8mpi/D4ggJcdH9/QP3bl/6/Ohpvd4glck83N0/+WA7i8WKjo6ura2FICg2JS8+Nsrdw1OlUoJVrzvxWIxwRnzz8i8cDketVk9PT5NIpGMnz8Iwpr2jMzYmWiqVOjo6aHWGE0c+ZbPZ23bun5NIORy2zWpByGQEQZpb22dE4p6WKqaL/8x4FwAAOQUbGmueMpnMJXlrFqTSF6V/5xZutGglKiO2sebJT79dVSyqrly7sXnjWjaHY7ejSpVKr9OeP/vt5nf3h4cGmy2WC7+ejkpYkpqSLBKJF6SyB39fKtn2fmhIkFajISOUwx++i8ETi9ZuBQ98eepF6T9kMjk9Z1VmRrpcLieRiEwG3Wa3Dw2Pjo2Nz81L3J0Ihas3abVaMpnc2NzO47pp9UYfL88TXx/EYrEHvzjx5tWDIWh4dBwEQQ6bpdVqbl7+1Ts4vv11udFopFAoEAQ5uQdlZaaFhYYMjYwx6FQUAN1cnCur65RKZfaSDDJCfllZExsdQafTMRiMyWTq7O5rqn26e99Bk9n20/dHmC4BQQG+GempLDZ7empqZryX4egEZmdnh4eHa9WqHfsOIyTCg0elRALu8b3r+w8e1Wp18/OSxPiYeckCAIDPyl+sXVV44687vu50IpFIZ3thMRi1RouidiqF6uzi/Pc/dy0Wi4jfTXf2m5vo9fDwsFqtubm5IVHJE5PTXjzPR49L+9pq8Hh8SUnJmTNnmEzmRwe/5nK5AAAoVWrUbkcQcnVtvbMz58eTX1y5ef+Pi1cLl+c6ODrJZLL2xsqAsIQAf1+mg1P969f8/paiosLj356CXb2jZPPTKwsL5sRTC+Kp8ZH+EH/e7g8/N5sMzhw2m+Vkt9tKy8q9vbwIoE6tt0WEhQonR40o2c/HWyWbjoiMefqsouzhdbnapJNPefD8dWrZV18d7elqTc4q3Lb9XYaj89T0TKC/Dw6HQyiIYGxw5weHXFw9B/s6cThc6eP7U+ODVZXl9+/c6uznC4bbVxQWe7i7LV1WYNDrUlMSmUzmokLR1lD5/kefG5WzdCc3s9n04OYfOz44PDLQTUYoMA4yFxYWxqUtw0PWyWnhwMAA08Gh9kUpCQ9XPP23rbUxISXLi8c1GAx6MxgXE8FkMrx8Art6+h79czkoMvnn00en+EN0On2KP7j7wy98fXxAu9EC4JatKDKbzFPTMwaj6d87V56XPY6Ijnd1cY5PSB3nC2h0OoNCKFyzZeWqdf4hka1Nr6hUqmZx3t3d/VXty8oXZS/LnxrtuK6Wmpi4ZAqV9rq6HCFiUAjb3FDtExAan5xpMOgrnj5sbGqG9x04Jhbyh3vbAiNTnzz4+6NDJyx6JYsb8uDe7eSkROGMiEqEcCSGco6/dFnhJx+8O9jd+qqld2Ko1c0nsre15szPf+bkFSwvKKZTiA/v/WVGcZDdGBIerdXpZkTiyrK7xavWpmfmxCYkL6o0k6Pdp787rl6UOLFcOW5e929fmpNphCLxshXFgSGR/sERoeExS7LzFuZmZDrY0wnX3NIal5iRkRQxOyv6/swPiXExkVHRFhRjNpsxlsXouMS7d+/AEqVJMNLz9q5Pn96/+vauT348cSg7d0VzXcXO/Yc7W15X1dRs2Fhy6c9z7h7czua6eclCdFRkf2/79dv/Bgb60xycXV2c8Xi8Wq3GEukh4bFx0RH9I9OVZXelc0LhrPydHe8JZ+ak4vHxybmQID9nN8+8ZYXzcl1jbVlmVt68TNPfUUdAmMmJsSwnR/mcYGFOGB4V5x8UKRMORkRFS6XS3vYGtkegTikdHhldnp8v16EqyQQGNZnM5ielTyAIgsODvDgcTmtTXWFBQcXTR6ve2nXr2p9v7/pELpPz3NntHZ2Z6WkImWw1m6kMJpHuioFsQqHQh+vM8w2aE/S9qqtKz1yq1xvOfndkaV7BYE+Ti7tXfEKKs7vX0qwMm9XGZjsdP/olx5U3OS28eelcUlqWr7d3clqmSqPz8/VJSc+WSmVSuUI+J7hx40Z2ZoYDh1tTVZ6VkfLPnbsGg+Hgke/vXDvvxGKNjI7ZbRYGhTArFl+6eq2ltXVoaCincCOcn7t0UaWem5ubmNXYrfrbNy7Pzs6CFm1QUEDj6zrhjIjOYLi5OHuHJsxOjdVWV6RkFYwO9lTX1Lg4Uakcn1fVFZOCkb9vXfv8s4PBYdEurlxXFw6ZRBaKZj3cXQkE/F//3LMa1Xve3+fv55OZvezA/p0WAO/m6sJmOREJeBqN6sJhK+YnRoeHTGbLui27ap7fCwiN1qtkWDy+v7dbLZ9bWlhS9fyJDUXT09K+PvbNgkx2+pdLEeFhTQ31w/1d8O4PP29vaVCr1dkZSatWFjKYDk5OTs/LK56WPiYQSQiCxMcntLe1BobGAHaTt7f3nb+uqdXqLTs+NGnkKr0tKjxwgj82Ns5fkZ8/PTE6Pad4/uhWdGK63Wa9c+tiRFR8gL8fFrIRyAwSkYjBYBJS0sNDQzAYjE6n2/VOSWxE8KLOKpocWbVmXUsPPyUlqaetEUZNNjtw66+/opNz1m58e3F2rG9wSKPRDAwO/XDuSkdTLY2MlShNPZ3NZDIZdmPR9UaT3W4nk8mRkdEvXrwQi8U/nz3L4PD0GsXCwkJTU1NEeDgdwTk6MH88+9PMzAyXy+3pbM4tLGmtL3d3cZ6ZEc1LForWbr3wx68OFHzW8nXtr8tVsrlFpYrr6sT1CfT08ltUqXv6+nvbX6VnLh3ua2Oy3erKH1isNhCCJSJBYuYKAgYte3KPRoQjwsMxeMKfFy7I5fJJ/jAGNT58/MTZ2XlTSUl+8SYQBO0QfmJsIDMlbk4sTshYDqWlpWs0mrVv7UqMj618Uf7RoW8QBMFQ2ANdjUq5dOeOHfHx8VK54vMvv9r34UdWqxUEwYmJCRRFZyf784s2VNbUbtm8mcPhmLUL7+/ZbTIa8XiCVL5Y86p+bFrW0d5+7Y8fiCRy1bN7SzLSj508fePyea5fRG9L9cqSHTQaLX/lRhqNxuFwrl+9otFoBJNTXb19nn6RZrOZxWJ5e3vPzku+OPbD0mWFHG5QZ1NV5dN/pka75EqVVqdtbGl9+vAmvHXL5s6u7qqK0t0fftnb2WS0wu4smmhyLD23+FVdVeHare4cZmNDw6bt+8gE2G63k5geBIw9NjY2NbvAppfFJ6XbLKaW1tbW1rb4uFhnz5CxvsbIhGzh5Bhq0a/auL21+TXPzSkiMqq/q8WBRmGzWCaNQq3TU5nsuqryIB+ub3hSXcVD3/DkOdFEbnZWfHr+kUMfGI1GDoczPz//zXfnsFjc65rnRIxtUSGnUqkrCou9edzRsXGpVPbhwWMwiYzodDoIggJDo3CgRSgY9gqOpZFxNS9KN277AGtTHTx0eOP69V5+wRLRxIJUClj1AAC0tLQ8fninvOJFfHQEnog0NLze/vZWLBaHI9EmxoeIGLurT/gkfygze7lBu+jr42s0mS5fuYrDYjjcQINOBYKgSiquqq6eEYmTUrPam+vc2AyFTHb7zt3xkT4vLy+tBWcza4P8fZ+XPQ4L9PZwd9doNAERKR6enooF8e9/XhgbH3fzjshMDIYy01NhGCaRSLcu/9I/OBwQEDA13ElGKFFR0Tr5lNZG4PF4rW2tJDI5JiXP25OLwWCMRqOTk9PVvx5yOJxLV6998MFePp+PwWBsOEZL3fOE9HwAAEAQXFhYGO5+nZpVUF1dZTEZw0OCuVwum+NcVvqkrq7ODoAIgmzbumWoqz4iIvLRk9J5qYzL5e7eu7/k7b02vVSr1VKptI3r187Pzx87fgJx9CQSiYcPfHjl2vVtW7csLi7yB1sgMhszPzefkJY32N2oUCh27D3wzZcf63S6h4+fnDr7JxHQVVU+tVqtXA+uVqOhEWwKhUKlUlksFgKBMNT1+sCXp2CzYlykelH695GjxxAEUSqVPJ6nEaRO9jU6OzuTSCQABL0CYy5cuvjV8bN0Oq27pTojb5VWJtTpdAwGg0Qk3rj1F4/H8/Dw8PPxjkjIMpstv5w5ymQyp6en4xMSDHaCoyOKw+G+OLCHTCZjMJhtWzZfvnbdyclJoVAM9zTBGzeutxrVXd09M1MTCbGRWAy8JDOzt69fq5Jdu359VXHx4yel7+w9oFqYPP/b7yuWL+d5eYvFYplMFpOS19dSGRafpRCPuHqHF+RmOLgGzIkmBoeGy57c7+3rF4lE2/d8euKrT4rXlPR1t8UnZ0ilCzjIVl9XFZmQ3dxQYzKZOru6AwICggP9c4tKEBrrzs0/YhPTeD5B8rlppVrtzOHMiyaHhgZ5Xt6pWUXZeQX1tS8CgoLiY2N6+/rpFCQmOhpycHBMSU1bXFz08/N3cnJMXVoMAoDJZLJbTL/8efPSlauOjo4njx5cVGqKCpYPDAw8ePBALpdTqVQyqBsTTJrNZpVWN9rT0M9f8HZB3tq44YvDh5YtWxYQEODj47N1Q+H09LRkenDXvs/E4z1ubu52mw0hEj7d945YLLZYLNu3bYtNyfUJTXz24DqVSk3KXIHaURKZ9PR5uU6n8/X1bW3vINBdrTDVxcXZZDKmpSTREDKdThseHp6SW+/cuw+3d3T6ePHEs3MqtQYAIaV0Nix+SdmTB3YUSErN0qpk3d3dcXFxYrHoVf3rosKCBw8fmkym0NBQF8/gtuZ6GhGeEYkXJBJnFmNicioqMlIg4Ht4cBEScXRs7J3dH48N97e0tt26flkwOYkDLVdv3DSazBk5RetWFWhUKgdXv4bq0pj4lDmhYHy490V5aXxcLIWI9QqI7O5o7ujs3LKpBA/bmxpq3TjM5oba5CUrnD18JseGdHo9jQQXFhbCaWlpTc0tQqHQYDB4erjrtBobRBRNj7+/Z7dQMExmusOAJTkxHgLB9Vt3nz51HEGQkm3vd3c0KRWSqKgoPJmWs2KNI4145eq1mNgEBhVx9gr947efM9LSnj0v3//xIQxoff/jL1kOVAKBMDA4xOVy396ymecXMj7UU/7i5bIVq/x4rs+f3Nfr9dkFG5JSlshlkvPnzrY01nI4nBOnz5NxoBM3KDzIW6vR8ng8b//Qn747IhKL9Xo9CIJdXV3woUOHXr16FRQURCaThTOiGZE4ITkjOCxGo7dpFufNemVeUQmT5S6dm8KBVjKCuPtE0AjW2tpalUrlwKDnFqzHYDD84b6RsTGr1ZxTsFE6M2wyW1hOjnMSiUmr6O7pwaDGoeGRxLjYlUVF7j7hrY21E6MDvmGJ3r7Bo72NOBzOPyJlfGyws63xVWWZSCTUKhUmi3XPnj0Dw/z6uiqdSoY4enIcKN3dXdeuXJiamnr7vY8b6iqL128rXJYFTYoUHh4eYrEYhmEGg8ELiP760L7jX34UHBIUk7bMYkfP/fANDof19g/x9Ano6upyd3fTqpQEAuGTw990dHWfPHrgp++PRMbEabXa/QeOgiAwMSUk4rGb3942NTX1hiej2WqxWCISsy9durggHAqKSjWZTBb1nFw0wvWLFIvFkunB3t7eubk5hEaPjozQGEwajebcuXOzgr7wuEyNapHr4XHk6LFxwSSdTkcQ5OKv32k0Gm9vH6FQCGWlRHLd3QpWv+XmzBYIBL4eDmw22263b1yV9+HurTSEvO/9vYrZ8baWRpMN+9mBT6/8fqasvEKr1erkM98eP3bkxNmFhYWTJ7+lUqkdDRWTQ+1p2YXiOUltYw+TySwsLIqIiFiSt8ps0IEgFJ++wmgyUTCm/Pz8i5ev6A0GNg0TGxt74uQpGIa//ObHd3fuCQoMNJvNnp6eer1+7dY9HDrm9j93P35/m7Ozc0xyrkKhSExfbjQaXVxcYMsije0N79x32IxikqL8/7x4mcViDQ8PY7FYFxcXLBablJR09dr10qdPPT08GDTaFH9IvGiZFoyYTCZXV9eopKWDve1MKnHJsjWxEYGNTc0jo2PDo6PNDbVcLlc0OTowOJSbs3RqWigUDJMoVBxg9nRj2bCMG9cuRkdFhYVHeHl5//rbb3LF4u79h6tfPstZVtTV3TMxPjQvkXgFxrEZJE83zslTp1gsFoqiBoOB4+yeuzTLrJVqdfqgAH83V1erUQ1HRoQnpaTDOEpHawOCIMmJCb4h8XOiiTd7WCyWDedYX1vBF0ww6DSdcmFBKkMQZHR0FLAaVm54B0+inzjyyfJVm58/fZiZnpa/aktrY51UKpUsSFUq1bK83MqqajKJCGCI7t5Bf/913dPDJSE1l4Awvvv26OTkpM1mCwsJFoz2i2fnUhOiUJsRtdurqqtHB7snJicbGxtpNFpe4QaZRKSxkvSLM04ODIFA4ObqsnzN1l9+Ot3U3ALv3vnOQE+bzgwsqvValYzj7CwTC5KSEhsam1gsllarpZFgJpNps9lmxOLu3t7FxUWpVAoAQEZGRt2LUk+f4EB/H4xN/7KyauuWzd1tDSvXb/f1dKGzPMdHB+7eu2cwGPZ/8H5jfc2KlRtMWkXdqzo8ZL1+9aJOp/v044/cXV2nhDMpWUUvnj/28/EmO3r6B0c+K33o6R+NBS12PAsLmrQq2VvbP1iSEJyQvsyNw/QMjH3+7HF9zYtNJRtd3dxgpUpFRhAfLvv+3duzs7MHDh6aFYvcfCMHetuzl2R4+EaIhQKbzQYAgNVqpdFoFArFZDKx2eyJiYndH32lVwhv/307OauwtekVk8GAEY5UOBgen+2IAJ3d3UdP/tzT2VJXX9/e0UnEWP38/B79+3h0bOy9fYcWZqcjEpaUlT7isJxmJkaUajWdTh/oaX1W+kiv1zvQiBk5K2kISb4gJhHwmUuXaxclCJ2lks8zqYTGpqbjx49THT25rizY09MzNzurY3AasBlgGNYoFcNj46BVa7Haxsb5biy6A4MxJRTqdDoSicThBqJWA5vNJpFISqXy/p2bfr6+FquVQcKMjI0VFqwY6e8kk8hefiEYEu3JwzsJ0aEBgUElb+9RLy4YTeaxcf72XZ8QIKtJtyiVyRLiY+bFM3FxsU4eQSP97WlpaY9Ly8hkstVq1Wq18gVxUtqSt9/Z1dxY5+3BGh4eoTo4nz1zypPnRWa640CzcE4+zR+EN2zdm5qZg7EsEuju86IJxaIyK38tZDNgsLikhDgSiTQwNILD4TZtXO/CC57h92u1WiwWa7Va9Xo9AABNzc0CgSA1NUWysGA1m/UmM5GAd2UzQCy5o7XB0dW3rbl+YrTfNzSxs7VhZcGK+3f/Cg4KmFuQ4vF4BwcHE0qcGB0QCQUvK6umpoUgCEql0j179uDwpJJ1a1ob60AcEuzniTh5SmYmrlz6/fSpk19+dUQ4MZpbWILqF+ZUNig3Z6lSqeR5eScmxIF2m9VqvXPj95fVNSqFXDg9PTw8UlSwAgLQ3p4ejEXFZDJzC9ZLJBKLxQKCoIeHh5OTk5OT0zcnvm1oaPD185VKpTqDCYNwfvruiEKhiA3h2Wy2ovXbR7vrE9KXC6ZFcXFxAsEEhURUq9WA1YyxqT29vIaHhxkMhtVqdfOJoFAo4+PjQ4N9ZDI5JyfH34MJggAFNpaVV3x75reW3nE6nc5gMIa66vuHhsmQHnp//ydGo/HR48cYq8poscrl8o/37/v2zO99g0NSqSwjPX1iYsKRxZYqlBEREdPT045kgEQiYTAYvV4/Ozvr7+/v5uYWERGRkbvmq6+P1dXVaZSLitnxjw8fx+Fw7YPTJBKpu7lqXiqfFfTAgNXbk5uTmxMUnSaXy4dGxy5fvXbj5i2TyZSUkU8mkxfnxj85fOLRo0dSqXRGPHvpylUjiLysqn7dOSqRSEwmc3Jyik6nAwAgPDyio6MjISEeLr1/q3tgrLzsEcvJsaa6ymgyL6pUosmRyPBwhEp78rTMYrXm5+Vm5a/pamtMTkxgO7u8rKy0WCwkEqlg9VYQQzDpVaHRafzBVhqNFp+W//TJ/eaWloU5YU9Pz8cf7u/qbPcPjffzch0eHS/Z9n79qyoEQURTY+UVFVNTU2tKdnR3NOv1+vGRfiqVmpKUAKHW0dFRjUazZtNONw6zpvI5k8nkOjMnpqZ6Olv8vdyqqqt/PP29xorvamtMTUmG3VxdS/+9t7JwxbPyChQA39lzAIOnero6Jientra3b9i629mV29RQ58aiz8/NhsQt6WqtlyxIoyPCVWrNktQ4d2cHOttzpK8FQZCUJSueP74NQVBmZmZzc7PRaHxw/66/v7+PB2dhYUGt1XK9Avx4rgwH1uUrlykUCo1GM9vhzKUrVIr5rTs/ys1MevS49P79+xwOh0KhLMnMOHLky+Hh4c2bNpHJJCuGsbY4//xvv6MompKaMsqfWr+muLa5H46OiRUIBMmJiTAMWqy25tc1O7dv6u/r44+Pl1e8WLFyLY1Gnxrtf1L2rLO7Jycr3TMg2gbiyXigsak5LWeVSacgwHY/P59nz8vra18GBQVl5q2Z4g9JNKAjjQCC4ODgYFV1TcnGDWajYWx04Ng3x+fn5yYmJiAIWlhY0KlkHb1je9/dJBQMExhu0WEBA4ODSqUSh8NJFPp3t2wYHhnlerj5RSTLZob5YnWIn8fo2Hh6TjEVZ/n4k0+U8jmYTCYH+vsRKA6e7q7jAoHFYrFYrEMjIxQE0er0KXERtdUVLl6h0xOju9/bef3GjbLH94f7u8bG+a7eERRYrzcYIxKzLTplR2cXj8eLiMswGnSAzVi8en1PZzMIgmlLizXKhQcPH3V298hkMjwej8VieTyexWJxcHDIK1y/a+e7L1+U+fv5Vj5/HJ2Sd/+vyyXvfJielSfm9yYsKZga7VOp1Od/+bFgzVYPFvH4t6cQBOnuaHpaVuYfnlK0LBNCEKR7TOJAJbi4ui7JSGMymUNDQ0vSU0fH+Wq1Wrm4mL50ZbCve0hISEdHu91uP/TZZzabjUqlCsc6SUTiOJ9vtVrxDDeDwbAsN2dBOOzCwLt5h9679WdIVAqFQulrr9XaKU5OTgkJCVgslkgkTkxMKJVKjUaz79MjFKyH6A3hAAAOO0lEQVSlu6e3t7cXgjEFhUUgCLpyefzBVhYCxMbGzoz1pKSmqi3E3349NzncjsFgiEQiycETAAB/f39PFv6nX87BISEhCrW5veVV/8BAXm5Obd0rtVq9cuO7/t6evl6et+/cXZIa/7SsrKqqKjM9vXhlUX9f7zhfQCQS5+bmmlpakpOTAbPm8aN7Op1u49t7nT28EQLkzmaGhYa0NNUbDAYEQYpXrZ2ZGsfj8QQCAUVRBoPh6hkEoWYXF2f/0DgmwdrT17eseFPZ43vNjXVKpVImkxWt3z4zK7VbdD+c/Sk8yEuqBcgEmER1nJrg61VSkUhktVoz0tODo9OgtatXebuQY5KyiUTiHxcuGY1GCIJAo5xOQ8b5/Py83JGphcnJSRiGyQgyPT0dHhHx5suJQqEcP31+YmJiVjybkhhPoVAUiwocFkej0VVmHJ3O0Gq1H+77ID41V6VS2Wy21atXz8/PS6XSonXblmcl6PV6vUput9klGnRycvLcmWM+oYnbt26JCA0hEomtryrCwiP+uHDxs4MHXVw9gr1YcdFRF/84p9PpjEbjrb/+3vvxlwwGo+rZPaitrfWzr77raaujszwlEgmBQGCxWE2NjYsGGALBxKSk8PDIkvXrnJyc7ty7r9FqMBQOHouh0WhEIpECG5cvy8XTXcpfVplMJqxVtTg7dv/ho47X5U+fPkVRlE6nq+b5s1ND6UuLz5w5g8Vivz91cpbfozTBLBarb2BAOc8XjXXZ7faszPSJgRY83U0ikzsy6O7urk8e/3vg00+8eJ44LHzo8y/u3H8wNjYml8tPf3dqYnzErpfeuv33ZwcPwJ8fPjwrmurt7dmzY2tPb59EA61ava61+bVRLV2zefe/d29SSdj6hsbwkODk7MLfz/+cHBNGp9PH+XwSieTC4dA43j1tdSaTCQTByqqq1NSUxIQEd08vk9EwPDJCIhI6unuc2aycJUmxMdFr33qPgLEpFIpZoQAFwE3b9upUsotXrpLJ5LTUVAaTCaPGcb7AarODBKecnBy9Rj4smB8Z6rXb7RaIQqfg7XZ7UlKSWCyqeFm5eVOJ0WiEpTLZ6lUre3p7vXmeeCJRPDXa09lCpVInp6dbGusUBpzNqAr09xPPzrY21X95/MfKF2W9ff2LetBm1g6PjHp7cOLi4gC73Wqz7//g/e/P/PDPnTtLsnO9AqOelz7MWZotVywajCYMwnZ3cXx077bFYh0d5xdvfFc2O/XT2e8RB/e9+z9tbXq1YvVWudpIJ+Pu3rs/MTEREujtyqJ9+dWRXe9svnf/gdpCxFiVb5VsdHD17+9sHBep9+7cKhKJTv/wI3z4swP17SNrCnMXJBIGnYYSHFXyOYlEwmKxsvLXigW9Y+P8lUVFVgw9LjJIvKAk49CQ4KCaqnIvLy862yd3SbJCoQgMDCTgsGQEyc/PX7ay5NiXB2tePkNRtGj9Nv5IP0IkRIT4qVSq5Iwc1Grq6e2NiU+5euXPvR99CZkX5UqDUj6HwVN18smr12+aTCYGg7F313t37z8QiUTPyyu8gxMQIj7Q27W67lVtxWMIR9i3a9vU1NTZn385/s0x6Or1mzbtnFarvXztupurW7gvB0EQDAhk5a/t7x9QqVRkMvn873/wnCkQCPIH2/zDk9s7u/F4/ODgIINkk8tkzs4uejuJQCBMTk5OzaksZsvaVcU73v/MwcFh59a1Go0GwhFRvCObzfnrzr94PB6Hw21/a9XSrEzIrIiMjIAti0Q8DjLJyl9URkRE0Gg0DAYzL5GMjo4WFBQgCELA47OSw9IzMkUikZdfwJa3Nn176ru5ubkP9uzWqFTw8rzc1NQUGsenuCD3p1/OLc/Pf1Ja6uDoxPPxR40KhUIhk8lWl+y4ef1SZ3c3kYCPjElaEAmmhTOOjo5yuVyuWCx9+jQ1cymR4vDHb78QMXbAortz/4FJp1Sr1UXrtvV0NJvNJshmEIvFKQmR35/5gebEDQv0cnBwhGGYgiBSmYzP54sVJm9P1wcPHjg7O4cEBlTV1pWUlFy8eHHzu/viw3g4HH5iQjA7N3/wq1M2k6ahsWnHO9sFEwIMFgtt3L6PTCZjYIxIavho/z48zYVGoy3MilNjg+Jjokve3nv89PkXpf+YTCYsFtvU3GLTSRKWFCIIotVqbTYbHgO/vfmtE199cmD/Di6Xm5ycLFmQrF5ZWFxUaDabeWxyXHRkYHiiDQV8fX0WNGhkZGROapQNBSMTl76orAJJrB9/+jlz2Wo8aPD14rm7u+v1+lG+YGJi4sqVK0dP/szjUEZHx5w5nJkF/Z2Hz3E2NRaLPf79ry2trTgsbqDqXwiLxbx63fjpvncunv++rbV1enrabDa787wEfIFQZvLz4WoXJvOWZoMgKBaLS0pKjhw9duzzD3U6HYVCmZ2dJSKUZxUv3tvxzu+X/x4bG5NJpSHBIUqlym6z6fV6R/dALBZHw1lyl2bfuHXbpp33dHdjuvkvy82Znp7C4XDnfjh25dbDgIDAyPAw4cyMzWbT6XRisZjH4+078DWdYGtrbZXKFU+rmtPiQ7OSI8xmM4IgGKsqKilnvKEctduhhpqylUWFJ098gyBIZFSUaLxHp9NlL8nkz6oZBLNeOe/qEx6VnJORlorFYheUZqVSicFgMBiMTCYDQZDj7s/hcIaGhkGTnEqlNvYIzpz9yWQyKdU6JpMJQaBGbxCIZBAEnzj9m1qlNJlMJCJpYmKypb5iaGhodXER1qoqvXt1XKTy8fF9Y9FjMBhHTvykmheQHDzSMzKampqCvNgzM0JuUGL5i5dYAnlmZub+mY9RFEABAFroqX/023cqlXr92jUDg8NNrW1sNvuPCxf93OiBAYF73t9nVs9d+u1MZEQEk8m0GeQcDkej0YSHhxsMBi6XGxMdHhcTLZicMoIUuVzOwJne3vxWT//AjZvX+Xz+zHiPQqFYmJ1sbm6qrq40GIxC8ezsZL9epxkbG8vPy+3u7ZdIZTYA9GSTLl25YtRr8Xj86uKi0rtXgqLSjEpxay/fwdmHQMB7eLiH+nKiwsPMBm3jw+v/NSMCcFKILwAABpiIkMmObv4uTtSm5mYHB4cNGzaqTNhVhbnnf/8jPCRYq9UiZFJu0cboUP/Cddt6+0c3rivu6el5WfFsYnKKQqHQHZw7Wl7n5eRMTEzoDIalK9br1DIOm00iEMLCQiAICvT1bGpt2/beR3Mzgobmls0lG3U2gkoh4Y+PASBU8eIFnU53cXWz2+1sboheq8CBlrqWQZ4LNdCX68L1+e2388PDw8sLCksvnAH/X4GTQv0gEDTJZsOTM/EIUzDan521ZHJqqra21mSHXVn023//U1y8qqWtLSoywqhdrKyu8ee5lD6+r1QqB3q7qXRGf3+/3W5PT4p9+vSpHQAQMql45UqdStY/MEB24I6N9Pn5+sTFJ1CdeC5O1EMHP2J5BM3OCKRyOWjV+/l6V9e+kqpteNhOJBLj4uLcXJwjQ/wcmMxz53/bsqGYSqGyWCwCFpppr0FJNElPPQgC0P8DgIH+q0XV7T9QFE0q3grDsFg4BYIgapCRSCQCgSBRWTPTU/+8ePn46fPbgmLnJgdCAgPaOrs4ru4ajcbZ2ZnrF3Hj5k13d3c6QnZxcW1paentH6DT6V7OCB0fVva8oqunb+9HX9TUvTpy4ifJ9KDCzY2Iw8bExNbV1/sExRqMZv6gcOvmt67duGmxWAwms6d/FI1GA1CUwaCjKHrn7l0UQF1hPQBAAAACAPAfmywAQhD0xssLggAIAmDjoxvOLi4IhZrswzEaje/ufI/FYvm5011cXD/av6+9rb2u4uG/T0oVKjWBQFCr1YXL8ykUykDna5FIpFKpaupf06hUNpsVk5ilUqm8vLzsNtvKwoJ3dn+ytmjppo0baHQaj8cjE/D5q7ee+fFHDMLu76wf7nmdlpbmGRBjNpsBAIhKyDIuziAk4tDQkNForHhZuWH9egAFgP9ae/8TLQiCIACnhQeA4P8iAkEAGGypd6bgQRAs3rTN3893Vm5MSluqNwM1L8sSY8NBEHjw8NHunTsIJJJKpUrJKiRibJvf3a/SGKcnxzw8PKqqa/oHBkHUjMfjgwMDZ2ZmFEZscHDQupX5JrN5oLvNYrE8fV7e2daYvXz947tXOBzOqW+/DQkN6+1obGvvwOFw/T3tq4tXBkSlevmFCPhjvl5e/144A4FvyIZgCPwv5SAAghjwv4KgbyoIoOgbMCgAgj6+vjxv76np6ZGu+uSkpMOHDr33waeff3awvK5DOjNsMpl4ztSRPsgRAWNDvRQSP5FIhMFgyGTyyMiI3W7H4EkSmTw4wLGy7J6rZ6AHl9fSO7k0JUyj0aAo+u+dy2w222KxgBBYV1PJZnOYTKaTq+97u3b1tVSTHD2f/3u7qf5Vkq8zBIEQBL3xGv/vBQAAAEVROD0iEPjvGPy/ZQAEwNHOpuDELLlUYrSCHAfqiVPfxcbFz8/OuLg4Z6bGh8ZmVD77NyU5GSKzGAhOLDcKp8Z37TtEojqq5PMOrv52s7axscHDzc3V1SU2Lc+ul41NioN4jt+dPrNs2bLR0VEej5ecmDAtnNGoVd5eXhcuXqDS6GuKluEg67hIRafRqEw2UcGHIBAC3xAPvbFz/98lBgA4PTLw/+UU9J8O8J8UG21/HZKYMTcj4Hl5zUsk09PTBz/7HCY66FXSkyeOajWqhoaGzJQ4GIZ5vsF11RUr8rKYCLa+oUE2LzQYDEQicXZujoogY4M9WdnZeo38n7v3bDabQCBIzsgvLsxjMBjKxUUOh621kYVT4xqNJi42VqKyWq3WBeHQdGMpBELQf0P/XxGANxECAACC/wMZwDMa6TCklgAAAABJRU5ErkJggg==", "name": "pxflib", "parameters": { "s": 1 }, "seed": 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 ", "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, "label": "", "max": 5, "min": 0, "name": "s", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Box Folding" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Box Folding", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "blur": 0, "iterations": 4 }, "seed": 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": "Type - SDF2D Operator\nCode - PauloFalcao\n\nBlurs a SDF2D sampling fibonacci points on a disc", "name": "SDF2D Blur", "outputs": [ { "sdf2d": "blursdf_$name($uv,$blur)", "shortdesc": "SDF2D Output", "type": "sdf2d" } ], "parameters": [ { "default": 4, "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, "label": "Blur", "max": 5, "min": 0, "name": "blur", "step": 0.001, "type": "float" } ] }, "tree_item": "PauloFalcao/SDF2D/Operator/SDF2D Blur", "type": "shader" }, { "icon_data": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAFtJJREFUaIF9emmQHMd15vcys6q6ey4MgMEAg8RF0SINygNAlCxLlsMb1kpee23ZYYZj7d1weP/4CpkkCAIgSAC8AIggLoKQVrGOkDeWWq5MSeGwLFoOObzy7g9t0BIlXpJIQhKBAZHEMYM50HdXZebzj+qqru4Z8gHTPdOVlfl978r3sprGN00/deIoisIAAcDufQcBAHT2ZP8A4L79h4mQ/hu4/f4HDhdnAnDmySPpn3uyS4RlQgQAzNy9k9MPzzx5ZM8Dh2lgWDrt8ccB0PimHYW13lXOnjgKovv2HwK6uHMoZwoEuuizZc4cf3xg3j0Fejmx5QPSS9SPjAAQ3X/g8OnjR/JL9Mxzz783dBQVRlRcg9CnEvSrH8Dpfoj5VU5fuI9GlxsVfgqT9Gam9KV7ndZu2QVKp+QC166Wzzx5BEQDsPJBp48fKTK8/8DDK17l3sS5BRigLnQeNP6eAw8XifVpKPO03gdf+so/pGtTge5ySTlwNuPyYXv70ady+onHAczvfWgyiSPvmSgm2ZbiRrJ4orKuSHXvgYc5I7ZChACnjz9+/4GHB70KoIltH0wNlhrl9PHH+7hm4DizeDpgQGmpL+09cBigU/kMzABaDz6ysd0KW21OEifIC8FCJKA4DKsqWJRiw4mjyzGn6uhNlUtmzVxfNHnLnSl27hLtRs/eBx/uv7F3e06mj0FmHSrY/F7ndjo3bhNlrWO23jvrLLjlfFPKOIqa5XJNygszL//SV7+JATNmajx1vGDtjMD9Bw6nC9GzX/3m4B0Fuf/AYaALblAfBdfe88BhMKMXOUdTFrz3ofcxjzgvwM5ZeM9EHaAOvul8S8okjKpCxEJMnjjaXY4HtZBLavz7+0m+K4Ge0zNz0bX6OHR/9mSDn+rGBoHwf/7Tb/3e5h2blCw7D+8JpIhJUCxlFbzQSWqJawtRF6IhRZXotpPHctUA2HPg4RWDDXmIEd1/4DCtf9+HUu122Wcekqcl7k8jaXLYve9Qb65eYshuAM6ePHpt33075cgaRllJYibvIyIZhTZQTalmF5dqiY2jcAmoJktt77ac/ULXnvsPpXpMQ6tIY7ld1KknHku1fOqJxzNdFpw8w56nPGYGs/c+HVK0dTEymHmVHAmImLljHREkIKxDBAey1galKJCy07hWn71SA9opbvTWzQzMAO7bd7Dnn6mz5Zv6//rqN/s0XJTexl4A17/b37PvULrQ05kD5ITUQ49uJKpYRwARQiGiQHmQC4Mmc616rU1JDfiZMUrrK8Z8ONtS9+w/vCxLdOWpE0eLu+eeBw6rFE8/+y7cbpFTpNezDO7Ze7CPU48sAPrpgb/cpSbgvCUIBgEe8EIwEDN3apcX3zF1YB5wWi8aE2udz3DmySP53rp7/+GzKQzKIYDykccfp4mtu7ig2T60mQnPnjiaXti97xAvG8oFc3/u9GfTtWb33XtrMD7mfQgigmSUAiWFoDDo2PrVn/5QaF0FfmZMojWAGeDfn/xCUdn37T/UjYBM9xn8PpvQ2q27VkzvKbqnThzJbXLvvoNZlBeAD/4KAER0tBRNWTvCkIAiKFApUEQgpW6c/24TgNYzxjS1bgJzxvzyl/8eoN37Dw7WOui5TK6oYv1La7bsLOrz7IkjfZFYxMUAcE9aY2eXilv7uVPH8rGNg49NeF/2XgASVBJUCpQKQwZuvPGC0PqSMbHW1wAP/MSY3/7y36c37t5/iHoTD8hgYJw9eYyeee75+/Yfeipzkv7Bfd7f+wHu3XswXeVcFrvFe7/7X373A1t3rQYC5ySzJCpLGSkZSIl4sZM0jTELQFvrBQDA28Cnnvx8nt3T93u73UhRutfOnjyaD6bVm9N+oLsH9XMYzE4zBx8LmVt2joFzftW5QqNTHPnm7j+fGtowRhQyC+8VcyUIQiUDIahu5oyZBzpap/nnhjG/+uzfLa/MkVnhnozJuZPHimPS31SOcff+wwD33Iu7g9LYfVSpTS7Z5VwCNOTqG87dGwVvHXysbue+6MaKzgMAQ+NtQDHHQCBE6L3w3rMQ3CagBQit60AN8MbM56sxD7h/liT6+4McfbrZjW+a7v+8GyW79x3KXehhpT6Q2CjpWO8TohioSbkkgznvqqXIe27GC1/m4ZTGdw7cPSXXDnkvpZTeh6AyoSxEJQyS899drfXPjGlpfcGY1H+aWn/6+Od4ABxw996DNKBv6r6ke056jVZtms4LybP93W1WL/CzQk6xJ+861sXexd53gCqJG1LOSzXnfS0KHZAI8etHDr/14CMTQgoCCxEnlgmREJVAjUo5VDceuAK8Zcwc0ACGtf6aHUWWAAi4e2/XYWilviAvLnJCagB0Uc6eTO2AMfBQEMROOJLOO2GtYj/inPAOzralVM53pCwls+889Og2RmBjCNXwXggCEZRqgqLWXAmoAjeBReAmMKz1Yr/WiwhXlDxfFnriv/nGu/bzDIBr+z/zEQ5LwVjiHCvV9r7hXMu5trUe7K2No2g+Ki8RpPdblNpYvRkzYiHiIIiV8lIiUJ6EaJhVwBvGvA0sAVUAwDXg7mf/bkDF6cs9ewtZiLOIHGgwAQUi6hWRfTekn5SNURtv8dy2quyY2865IIilrAlZ9y6S0pXKyczLfuuuNUKM1Gvc7gwJEQUqjn2cJFQKRahEOXJi08IbLzAwobUEygABEymMlTSeOlVKo1ClFLphoqdPHaNnnnseKxDoUZV/+OnpqW2WKCERC1GXwy3va87XApUA8L556ZV/BcY371hj3Xpnx9mvSpKRxEZCOCVloMTwEKkAntuMK97Px9evAAvGCGBh667tQEBUvfjS9P/++rt5AQqxAeBzp47ltLNjlYFtC0C3GsEXeGGjMV8E3rdlp/ScCOowkxDM7AHLsIQYaAHu0itjwDiwDogmfm4sTiadQzmiUomk9Na1rV9iXipFs+7GgjES+PGWnXeARgglIARWH3ukT5XLFHv33oPnTh3rBQwtOxdKQRd34D/ihe3h5HCSCGsZ3JaqZl27Um577wAmsuCEETP7S68IIAFWAWsADahhPRSGURQKIRzDMTcd14Cr5RIBgnkxnm+UJkaBCqAA7/3aJx4rqL/HoC8kgJwGPfPc83v25+dNg/H8X/38TjUxlsTKWu9dAkqESITsEDVBdSkcyIP95ddCwAEWSIAmUAI2AsPj21ZLWZIiFJKZu1cZc6VSndkBnqjpuUwIhUgT0DvJ7PSTn8/Vf3datBcKr4F4UXseOIyiSfKuEgAwLdZMJjayDt7HnoVzkn1IFEkZAaUgpGtvJIAHXPZqgTKQAItAKYqc95ZJMAeAAJPzEgjb7Xa5XCc4xoISk8ls2SM2JgA6meLvzsO3V/RmLwUm9KXnnuf8wCzvUNJW3c//olizWkp0Yutd4px1LrFJwtz23CHqBEFcKsmrryeABTpbdlpmBnlC4pwFJhhTzpbBIRAI8gzvXNPaq9ZeV8GNUrleiqz3baK1F1+a0loBrxnzjfXb0Zd5gGWukQexSKkMnLOmF8eNGSEqA+VAlVUwFKghJYeiKIxCWY4oUFJJRdTS0/UtO5t62lpHnoUUnmGDoBUEs8w1j8TDE7GQUkolRYlIeR5aeCu68iPVaFWEKHvf2rzzIjBrzCefXZ6LeiSWl/f0pa/8Qx4re/rPQJ+69Mod+taKHAYzScnOeXAsqEFU874eJx3PMYm688lQ2RMxsyPiZHbWmBZQBmLgjk3TG5wfIQoCSQTr3FKtXrMuBoLa20tAffK2DklbLtW9F4BPlj544mzq/e9ph26PnxLoXbuvwOGvLr1yq9bWmMrWXYI5EIKJkigMpyYvX7m2WGu0rLOBaks5O/NyRWs2htBNqS2gDqwBKsC01mtGNoHoI3/5p18/fW6h1eokdszasnUdoCNFR8qOlB0ZtMOgBkjACXH7kYcB3L33oWUG6fek9HA3M0qPxp+5G58CQmMUMKy1pLKkCoh8pdwOgpq1DWub1i5ceKkGBEAMWCAGOkAbaAIxsBbYAqzTegLgkU01IZacX2i3k7izyrohdmXryLoYHEsZSxkL2Q6CppTVNCkJsfVo9xxuII3mrYoa4JObQhgTaj2qtQDqxghgbL3moUnrvY1jAKJ5pWXMkNaLxlgg/d8BYqANtNPwAljrxBindaN2eamysZbEbublCBBbdiBJWLhQuTBxzrnYOSdk4l2HxHgYNaSoEV196FEmmjr2SLGyQKHgK1iAueg/f3HplY8Dm7WuGwNAAqNau0zB7UzNdWDGmA5gAVfYCtpABZgCxoBtgM/qUHvLnfGFH1SAcSDavKMMhEki2ZO1ztqO8wnYCemEsESuXKkp2SAC8K927jef/Hzq6/cWwkMh230zGt0c+kPgV7XuABWtBdA2Bhm+RWOU1vPGNIAloAEorQkQQM0YBtKsKoA2MAUoQGodA9eMaV34gQAqAAGCSAAqDEMwhBBKhdZ2rLXOW+css2UvKhUhZE2IO9VE7iTnTh1LaTx96hit2bKz6FJFedrPrzamAkTAWq3rxnQAqfWcMVLrWWOE1m8bcwMoa+0LMdAEHFAy5ueArcBGrRtA2siHWjeMmdKajVm97YMl6ypSRMwKkIBPYuu98y7xvuO5wdwOgjgsVaWIbfU6xbenm3ShUVZ90PtriW8a82mtO8ZMad0GAq3rxjDgAMq23gQY0jrdg1PPaQFVoAKs03otsB6wQGouC6jsvwOCZFYBoHXsPQkhmIMwKoMZnAANcBwnHcewNlLR/DsXRrRG9zATeUmhMv/H8t3unzZNB5df2wEoYBxQQBMI0wAwJtS6BiitG5niW0ADaAAdoGHMCCCBBaAEDGstgLReCoAgzRNA05iyBpzg0lpmhvehUjIMrBTrb9322ss/kj6JwrA+8/Ko1rPG3LP3YPGRI5Y19QUp0PmMeW0jMJwpPgZCrZvAJWM6WteAZur0xjhgCVgLjAMxUAZCQAIAYsADG7RWxqwChoC1WifGhMAqrVvGjGzYEpZWDwUBvOcoahDVnLvZ6cxfeKkKXAOqwBc33FHQPlEfgZVaglzuMj/cAKzVOuUwa0wNuA40gEnAAueBAFin9W3GSEAACwBl+4MDQiDUWhkzAWzWGsaMAGVgtdYtY8a0bhmzWmtFoSivtUK0gXrjeouTBrAAXAGecGM9QFk/I8ujkyufZfcflb4+uu57o+tK1H7LmJlqdQZQwLem7lhdm+tofalaZcADP1+tbtQ6rlYBSIDTgNZ6oVptaX3emIm0XB0dHRodrYyO+mq1MjrqqtXy6Gh5dLRlTDQ6dPPiG1RCO64umLdr1epStXpzdPQdY14emUBf5QwAqg/9uxkhK0U+evCYz55xPPbEaQDjWs8bM6n1amArsBoQwHqtnTEdYA6oaG0A0roJvLlh+5vAnVdf7xizHrhF61VazxlTAQA0jVmlNYCy1m1gwZgOoLRmYMaYWg9Kf1+/Sv8CsFIe7Sdz9JEDnGIvSGLtW2eOtIy5Reup1G2MqWhdAqQxHa1/bExH60VAAt9yo8Xpf+3q6+8HUhpjgDdmUuvYmBGt541Jd0mh9RVjGlpfMOavN2zvx9ct5tSKx+r5n8ePHEpx++4BXx/NC3v+7GNad4CptIMxZrPWS8ZIYFLri5kuK0CyzKj/smH7txl3XXu9bswGYLPWNaCsdRNQWgdAbEy6FV7uqb9fwQwGqeLjsCLAk8ceYWbPPq2PigdPuWhgPZAAJUACQ4A3ZiRLl1VjIq3TrD/bt3TPsH+7/ud/U9WuG7NkzDpgo9ZtYypax0ANaBgzBzS1/oodfZeuklWxhUzHnDn+mPecrpI+Aufl5zYM59xWrZ0xE1ongALKWt80htM9FQAgAAUI4Ntd/1khX1zctuPith2LF1/Vxlw3ZlLrBcADc8Ai8LbWO/c9iidO5+si12fmQl05e+oYmL1Pj0uKMnjS57231lprx4ESEAAi25tioKK1By4aM6p1CwiBRnHxgvzBXb/dbnduzC8sLi5dvPWDM++/U//kByVjJrT2wJLWt97z4HQYKqWeePygFHL/ofxZdU/tNLbxA0+fPJp3PJ49+9TnufeWiffeWpckcRwn7Xb7I4/sHQcAVLQmoG5MSWsLzBkzB7S0vgI0gBng/7mRIoU/+sO7vPfed5vEZrPVbDad90EQjK8am5iYCIIgDIIgCIIwUFJJKYSUUkgp5T39LQ79zy9/vTczA2CfWmEZhcTaJE7iJI47cavVarXbn3juryeMSZ9ACmBI6wSYN6YG3ACqWl8CEuBv7EhxyT/+z7/P+YNNAhEJIYhIKRUoFfRLCj5DL3L/z2mILo+iw5CgrnTdxznX7nTarXar3Wo0mtVarVqrV6u114G61m1AASGgsq037RMWgQ6wVLD6b3zy3/3Of/xUo9m01gpBUkmlVBAESqowDKMwDKMo7EmKPkUupBTZNAxw/kilYIGiFZi9Z+eccy7uqj3uxHG71Wq1261Wu9Vq1ev1Wr3xidf+/23AiDEbtPbAdWNuAgvAZWBB6yXgJ8B5O7zjjtujKCxFpTAKozCMojCKSqVSpJQSQigpVSqBClQQBEqpQEiR6V6kJsJKMtBS5hmVvXfOuTiOe9C76FutVrveaNRqde/cP972oevnvz+t9YIxIRADVWAWuAq8acxlYPOv/c40wMztdic92JdCyMZ1WSrx5PsEkVJKpZruomTv2XnHYPYsvPeiTwYIyN+96w8GPkqD1XlvkySOkyRJWq1Ws9lstlrNZqvVajeazXq97p1L6V5dOzUzf6Vard4ErgEG+CnwKnAdWJq8/drc/Pp1a7OZfdiaU66VajbwbWlbHA57zz4Tl7+xR7dq6QtFdBvi/n6g6EPd6VxXciMkSWKtTWwSx7GzrpgUl2770KsbNiy++KIEOsBVAICbvD2d89Ufv7njjtsBqPo1MTycajoIgm5+rl1zzHZ4MlWwFMLKgiippMr9qN8YkmjQhTITcEqDPXvnXaqVNHGAQaCBlE7VdwCMf/jDAF578cWuca+/CcBN3gbGqz96E8Cv3DEVRVEQBENDQ2EQBEqREOw9APbeMVtrUw6iG7xSqh4LJZWQXZJCCCFYSiH/7ws//I1PfqLP+9mnTpSKTayz1jnv2Tvnugb17Jwrok+hX79yZUAbojHPQ2sZULPnL8/MbJ+eHh4eLpVKQRgqpYio+xWeuOFUGZmfWOd67tTzLeezqiD/uoYsjUx865+//R8+9Yk+CwCZ0n13Q0ixgoTo5lkQrLUp+hWh9+YbWqtmz6e//+SNNz780Y+m6POITLH4oJLtPd1355z3rsCjGwtA/mAMsjQyAeBb//wvKQciymMl/SXNX4K6/kdCSCmkVKo5K23jxe985z2g50Yo/vnK97//0ve+90sf/3ieGUX6ZZyg0hewPm89Uiae8++kAACRIIC6BIoccqHswbJYJqo5942vfe3tixffG/p7yIsvvPCLH/tYij5Nny6o5NbIaaRlDQjO+7QAyus4QYIIvbSa17jpPtzNdF0Joygql0vlcrlcLg/52nPPPAOABsrrZSKzjn5F+W+nT3cjkkgV9//s2zVdF/bOO0eAs9al8eiss845++Ajn6Wxqe1Ar6t5+tRnkW0Fvfhxzlqb3vnZPX9eBDGUnYq6d0HPK3UzuQTAX+zZw963ymu871s19+NUnVIIACov8oLg+JnPM0BjU9sH+smnTx1L2XAeOd475w4cPgJAXD9fRDCePVlKCeTPILjQvdqsPViRIQH1ifd/5k/+uA+79545/xK+IBJSAlBKBio499//R/4s6d8AR8bw6M+9UPkAAAAASUVORK5CYII=", "name": "pxflib", "parameters": { "blur": 0, "bound": 1, "iterations": 3 }, "seed": 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 (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, "min": 0, "name": "Distort", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.1, "label": "Bound", "max": 10, "min": 0, "name": "Bound", "step": 0.001, "type": "float" } ] }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Displace", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "r": 0.1, "sx": 1, "sy": 1, "sz": 1 }, "seed": 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 as a signed distance function", "name": "SDF Box with 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, "min": 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, "min": 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, "min": 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, "min": 0, "name": "r", "shortdesc": "Radius", "step": 0.01, "type": "float" } ], "shortdesc": "SDF Box with Distortion" }, "tree_item": "PauloFalcao/SDF3D/Generator/SDF Box with Distortion", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "ax": 0, "ay": 0, "az": 0 }, "seed": 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.", "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, "label": "X", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "ax", "shortdesc": "Rotate.x", "step": 1, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "ay", "shortdesc": "Rotate.y", "step": 1, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "az", "shortdesc": "Rotate.z", "step": 1, "type": "float" } ], "shortdesc": "Rotate" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Rotate with TEX3D modulation", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "CamD": 1.5, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 1, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "MaxDistance": 200, "MaxRayLoop": 5, "MaxRefIte": 4, "Precision": 2, "Samples": 0 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "\n//MATH\nconst float pathtracing_PI=3.14159265359;\nconst float pathtracing_TAU=6.28318530718;\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\nvec2 pathtracing_equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*pathtracing_PI,pathtracing_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\nvec3 pathtracing_uniformSampleSphere(float r1,float r2){\n float z=1.0-2.0*r1;\n float r=sqrt(max(0.0,1.0-z*z));\n float phi=pathtracing_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 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 * pathtracing_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" } ], "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\n\tfloat dx = dFdx(uv.x);\n\tfloat dy = dFdy(uv.y);\n\t\n\t// Init random\n\tvec2 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\tvec3 o=vec3($CamX,$CamY,$CamZ)*$CamZoom; \n vec3 t=vec3($LookAtX,$LookAtY,$LookAtZ);\n vec3 u=vec3(0.0,1.0,0.0);\n vec3 c=normalize(t-o);\n vec3 cx=normalize(cross(u,c));\n vec3 cy=normalize(cross(cx,c));\n\n vec3 AAColor=vec3(0.0);\n\t\n for(int AALoop=0;AALoop<$Samples;AALoop++){\n\t \n\t vec2 xy=((uv.xy+(vec2(pathtracing_RandomFloat01(rngState),pathtracing_RandomFloat01(rngState))-0.5)*vec2(dx,dy)))-0.5;\n\n\t vec3 v=normalize(c*$CamD+cx*xy.x+cy*xy.y);\n\n\t vec3 p;\n\t float d=0.01;\n\t vec3 rgb=vec3(1.0);\n\t vec3 io=o;\n\t int i;\n\n\t for(i=0;i<$MaxRefIte;i++){\n\t \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\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\t\t\t\tvec3 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 \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 break;\n\t }\n\t }//for(int i\n\t if (i==$MaxRefIte) rgb=vec3(0.0);//did not hit any light source\n\n\t\tAAColor+=max(rgb,vec3(0));\n\t}\n\n\treturn AAColor/floor($Samples);\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", "outputs": [ { "rgb": "pathtracing_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 50, "label": "MaxDistance", "longdesc": "Maximum render distance", "max": 500, "min": 1, "name": "MaxDistance", "step": 0.01, "type": "float" }, { "default": 2, "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, "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, "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, "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" } ] } ], "shortdesc": "MFSDF Render Path Tracing" }, "tree_item": "PauloFalcao/MFSDF/Render/MFSDF Render Path Tracing", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamD": 1.5, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 1, "Gamma": 1.4, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "Shadow": 1, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec2 Simple360HDR_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//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((($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 vec3 p=ro + rd*t;\n\t\tfloat h = $mfsdf(vec4(p,0.0)).w;\n\t\tfloat isLight=$mfsdf(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(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp($mfsdf(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max($mfsdf(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=$mfsdf(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=$mfsdf(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(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=$mfsdf(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": "Type - MFSDF 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": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3, "min": 0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "tree_item": "PauloFalcao/MFSDF/Render/MFSDF Render", "type": "shader" }, { "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": "pxflib", "parameters": { "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": 0, "TranlateY": 0, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "tree_item": "PauloFalcao/MFSDF/Generator/MFSDF Object", "type": "shader" }, { "connections": [ { "from": "sdf3d_box", "from_port": 0, "to": "sdf3d_translate_3_2", "to_port": 0 }, { "from": "sdf3d_translate_3_2", "from_port": 0, "to": "sdf3d_rotate_2", "to_port": 0 }, { "from": "sdf3d_translate_3_2", "from_port": 0, "to": "sdf3d_boolean", "to_port": 0 }, { "from": "pxflib", "from_port": 0, "to": "sdf3d_boolean", "to_port": 1 }, { "from": "sdf3d_rotate_2", "from_port": 0, "to": "sdf3d_translate_3_3", "to_port": 0 }, { "from": "sdf3d_translate_3_3", "from_port": 0, "to": "pxflib", "to_port": 0 }, { "from": "sdf3d_boolean", "from_port": 0, "to": "pxflib_2", "to_port": 8 }, { "from": "pxflib_5", "from_port": 0, "to": "pxflib_3", "to_port": 0 }, { "from": "pxflib_2", "from_port": 0, "to": "pxflib_3", "to_port": 1 }, { "from": "sdf3d_box_2", "from_port": 0, "to": "sdf3d_smoothboolean", "to_port": 0 }, { "from": "sdf3d_translate_3_4", "from_port": 0, "to": "sdf3d_smoothboolean", "to_port": 1 }, { "from": "sdf3d_smoothboolean", "from_port": 0, "to": "pxflib_5", "to_port": 8 }, { "from": "sdf3d_box_3", "from_port": 0, "to": "sdf3d_translate_3_4", "to_port": 0 }, { "from": "pxflib_3", "from_port": 0, "to": "gen_outputs", "to_port": 0 } ], "icon_data": "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", "label": "Stage", "longdesc": "", "name": "graph", "nodes": [ { "name": "sdf3d_translate_3_4", "node_position": { "x": -726, "y": 1007.5 }, "parameters": { "x": 0, "y": 0, "z": -3.77 }, "seed": 0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_smoothboolean", "node_position": { "x": -709, "y": 881.5 }, "parameters": { "k": 2.35, "op": 0 }, "seed": 0, "seed_locked": false, "type": "sdf3d_smoothboolean" }, { "name": "sdf3d_box_3", "node_position": { "x": -975, "y": 966.5 }, "parameters": { "r": 0.01, "sx": 6.22, "sy": 5.59, "sz": 0.37 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "sdf3d_box_2", "node_position": { "x": -974, "y": 794.5 }, "parameters": { "r": 0.01, "sx": 6.1, "sy": 0.47, "sz": 6.76 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib_5", "node_position": { "x": -519.164001, "y": 641.947998 }, "parameters": { "Alpha": 0, "AmbientOcclusion": 0, "BaseColor": { "a": 1, "b": 0.378906, "g": 0.378906, "r": 0.378906, "type": "Color" }, "Emission": 0, "Metallic": 0, "Normal": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 1, "Specular": 0, "TranlateX": 0, "TranlateY": -1, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Clearcoat Normal Scale", "max": 1, "min": 0, "name": "Normal", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Alpha", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "AmbientOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 1, "min": 0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 1, "min": 0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 1, "min": 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 }, "seed": 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, "label": "", "name": "op", "type": "enum", "values": [ { "name": "Union", "value": "sdf3dc1_union" } ] } ], "shortdesc": "Boolean" }, "type": "shader" }, { "name": "pxflib", "node_position": { "x": -893, "y": 634.5 }, "parameters": { "mode": 4 }, "seed": 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, "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, "y": 491.5 }, "parameters": { "x": 2.95, "y": 1.36, "z": 1.36 }, "seed": 0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_boolean", "node_position": { "x": -536, "y": 227.5 }, "parameters": { "op": 0 }, "seed": 0, "seed_locked": false, "type": "sdf3d_boolean" }, { "name": "sdf3d_rotate_2", "node_position": { "x": -830, "y": 283.5 }, "parameters": { "ax": 0, "ay": -39, "az": 65 }, "seed": 0, "seed_locked": false, "type": "sdf3d_rotate" }, { "name": "sdf3d_translate_3_2", "node_position": { "x": -1031, "y": 220.5 }, "parameters": { "x": 0, "y": 3.23, "z": 0 }, "seed": 0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_box", "node_position": { "x": -1269, "y": 253.5 }, "parameters": { "r": 1, "sx": 0.89, "sy": 0.05, "sz": 0.81 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib_2", "node_position": { "x": -351, "y": 218 }, "parameters": { "Alpha": 0, "AmbientOcclusion": 0, "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 3, "Metallic": 0, "Normal": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": 0, "TranlateY": 0, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Clearcoat Normal Scale", "max": 1, "min": 0, "name": "Normal", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Alpha", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "AmbientOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 1, "min": 0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 1, "min": 0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 1, "min": 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, "y": 559.265259 }, "parameters": { }, "ports": [ ], "seed": 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, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -953.511108, "y": -82 }, "parameters": { "param0": 3 }, "seed": 0, "seed_locked": false, "type": "remote", "widgets": [ { "label": "Emission", "linked_widgets": [ { "node": "pxflib_2", "widget": "Emission" } ], "name": "param0", "type": "linked_control" } ] } ], "parameters": { "param0": 3 }, "seed": 0, "seed_locked": false, "shortdesc": "", "tree_item": "PauloFalcao/MFSDF/Objects/MFSDF Stage grey with lights", "type": "graph" }, { "icon_data": "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", "name": "pxflib", "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 1, "Gamma": 1.5, "IPD": 0.1, "IS3D": 0, "Shadow": 1, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed": 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": "Type - MFSDF Render\nCode - PauloFalcao, IQ\n\n360 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\n", "name": "MFSDF Render 360", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3, "min": 0, "name": "Gamma", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.1, "label": "IPD", "max": 1, "min": 0, "name": "IPD", "shortdesc": "Interpupillary Distance", "step": 0.001, "type": "float" }, { "default": 0, "label": "3D", "longdesc": "3D", "name": "IS3D", "type": "enum", "values": [ { "name": "true", "value": "true" }, { "name": "false", "value": "false" } ] } ] }, "tree_item": "PauloFalcao/MFSDF/Render/MFSDF Render 360", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "op": 0 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "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": "in1", "shortdesc": "V4->V4 MFSDF A", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF B", "type": "v4v4" } ], "instance": "", "longdesc": "Type - MFSDF Operator\nCode - PauloFalcao\n\nPerforms a boolean operation (union, intersection or difference) between two shapes", "name": "MFSDF Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "$op($in1($uv), $in2($uv))" } ], "parameters": [ { "default": 2, "label": "", "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" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Boolean", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec4 MFSDF_Union_8(vec4 in1,vec4 in2,vec4 in3,vec4 in4,vec4 in5,vec4 in6,vec4 in7,vec4 in8){\n vec4 t=(in1.wV4 MFSDF 1", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF 2", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in3", "shortdesc": "V4->V4 MFSDF 3", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in4", "shortdesc": "V4->V4 MFSDF 4", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in5", "shortdesc": "V4->V4 MFSDF 5", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in6", "shortdesc": "V4->V4 MFSDF 6", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in7", "shortdesc": "V4->V4 MFSDF 7", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in8", "shortdesc": "V4->V4 MFSDF 8", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a boolean union operation between eight shapes", "name": "MFSDF Union 8", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "MFSDF_Union_8($in1($uv),$in2($uv),$in3($uv),$in4($uv),$in5($uv),$in5($uv),$in7($uv),$in8($uv))" } ], "parameters": [ ] }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Union 8", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec4 MFSDF_Union_4(vec4 in1,vec4 in2,vec4 in3,vec4 in4){\n vec4 t=(in1.wV4 MFSDF 1", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF 2", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in3", "shortdesc": "V4->V4 MFSDF 3", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in4", "shortdesc": "V4->V4 MFSDF 4", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a boolean union operation between 4 shapes", "name": "MFSDF Union 4", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "MFSDF_Union_4($in1($uv),$in2($uv),$in3($uv),$in4($uv))" } ], "parameters": [ ] }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Union 4", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "k": 0.2, "op": 0 }, "seed": 53575, "seed_locked": true, "shader_model": { "code": "", "global": "float mfsdf3d_smooth_union_f(float a,float b,float k){\n\tfloat h = max( k-abs(a-b), 0.0 )/k;\n\treturn min(a,b)-h*h*k*0.25;\n}\n\nvec4 mfsdf3d_smooth_union(vec4 a, vec4 b, float k) {\n float e=0.001;\n k=max(k,e);\n float h=mfsdf3d_smooth_union_f(a.w,b.w,k);\n\tvec2 n=normalize(vec2(mfsdf3d_smooth_union_f(a.w+e,b.w,k)-mfsdf3d_smooth_union_f(a.w-e,b.w,k),\n mfsdf3d_smooth_union_f(a.w,b.w+e,k)-mfsdf3d_smooth_union_f(a.w,b.w-e,k)));\n return vec4(mix(a.xyz,b.xyz,atan(abs(n.y),abs(n.x))/(3.14159265359/2.0)),h);\n}\n\nfloat mfsdf3d_smooth_subtraction_f(float a,float b,float k){\n\tfloat h = max( k-abs(-a-b), 0.0 )/k;\n\treturn max(-a,b)+h*h*k*0.25;\n}\n\nvec4 mfsdf3d_smooth_subtraction(vec4 a, vec4 b, float k) {\n float e=0.001;\n k=max(k,e);\n\tfloat h=mfsdf3d_smooth_subtraction_f(a.w,b.w,k);\n\tvec2 n=normalize(vec2(mfsdf3d_smooth_subtraction_f(a.w+e,b.w,k)-mfsdf3d_smooth_subtraction_f(a.w-e,b.w,k),\n mfsdf3d_smooth_subtraction_f(a.w,b.w+e,k)-mfsdf3d_smooth_subtraction_f(a.w,b.w-e,k)));\n return vec4(mix(a.xyz,b.xyz,atan(abs(n.y),abs(n.x))/(3.14159265359/2.0)),h);\n}\n\nfloat mfsdf3d_smooth_intersection_f(float a,float b,float k){\n\tfloat h = max( k-abs(a-b), 0.0 )/k;\n\treturn max(a,b)+h*h*k*0.25;\n}\n\nvec4 mfsdf3d_smooth_intersection(vec4 a, vec4 b, float k) {\n float e=0.001;\n k=max(k,e);\n\tfloat h=mfsdf3d_smooth_intersection_f(a.w,b.w,k);\n\tvec2 n=normalize(vec2(mfsdf3d_smooth_intersection_f(a.w+e,b.w,k)-mfsdf3d_smooth_intersection_f(a.w-e,b.w,k),\n mfsdf3d_smooth_intersection_f(a.w,b.w+e,k)-mfsdf3d_smooth_intersection_f(a.w,b.w-e,k)));\n return vec4(mix(a.xyz,b.xyz,atan(abs(n.y),abs(n.x))/(3.14159265359/2.0)),h);\n}", "inputs": [ { "default": "vec4(0.0,0.0,0.0,999999.0)", "label": "", "name": "in1", "shortdesc": "V4->V4 MFSDF A", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,999999.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF B", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a smooth boolean operation (union, intersection or difference) between two shapes", "name": "MFSDF Smooth Boolean", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "$op($in1($uv), $in2($uv),$k)" } ], "parameters": [ { "default": 2, "label": "", "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, "label": "", "longdesc": "The smoothness of the boolean operation", "max": 1, "min": 0, "name": "k", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Smooth Boolean" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Smooth Boolean", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "Correction": 0, "boolmode": 0, "colormode": 0, "mixshift": 0, "mixspread": 1, "smooth": 0.25 }, "seed": 53575, "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": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a custom boolean operation between two shapes.\nThe union is defined by a custom SDF2D", "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, "label": "Correction", "max": 1, "min": 0, "name": "Correction", "step": 0.001, "type": "float" }, { "default": 5, "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)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)-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": "max($uv.y+1.0,length(vec3($uv.x,$uv.y+1.0,$uv.z))-10.0)", "function": true, "label": "SDF3D B", "name": "sdf_b", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "vec3(mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0))*0.9+0.1", "function": true, "label": "TEX3D B", "name": "tex3d_b", "shortdesc": "TEX3D B", "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": "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.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\tvec3 objColor=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.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\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=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.0));\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 2 Objs", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1, "min": 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, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "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, "min": 0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "tree_item": "PauloFalcao/SDF3D/Render/SDF Render 2 Objs", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamD": 1.5, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 1, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "MatCapMode": 0, "MatCapRef": 1, "Pow": 64, "Shadow": 1, "SkyColor": { "interpolation": 3, "points": [ { "a": 1, "b": 0.979167, "g": 0.864656, "pos": 0, "r": 0.793357 }, { "a": 1, "b": 1, "g": 0.6984, "pos": 0.118182, "r": 0.510612 }, { "a": 1, "b": 0.557292, "g": 0.329521, "pos": 0.411598, "r": 0.287342 }, { "a": 1, "b": 0.416667, "g": 0.209503, "pos": 0.945455, "r": 0.17114 } ], "type": "Gradient" }, "Specular": 1, "SunX": 2.5, "SunY": 2.5, "SunZ": 1 }, "seed": 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": "Type - SDF3D Render\nCode - PauloFalcao, IQ\n\nRay marching node for 2 objects using a matcap image for reflections", "name": "SDF Render MatCap", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 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, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "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, "min": 0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "MatCapRef", "longdesc": "MatCap image reflection strength", "max": 1, "min": 0, "name": "MatCapRef", "shortdesc": "MatCapRef", "step": 0.001, "type": "float" }, { "default": 1, "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, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "default": { "interpolation": 3, "points": [ { "a": 1, "b": 1, "g": 0.6984, "pos": 0.009091, "r": 0.510612 }, { "a": 1, "b": 0.317708, "g": 0.187858, "pos": 1, "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, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" } ], "shortdesc": "Ray Marching MatCap" }, "tree_item": "PauloFalcao/SDF3D/Render/SDF Render MatCap", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "RotateX": 0, "RotateY": 0, "RotateZ": 0, "TranslateX": 0, "TranslateY": 0, "TranslateZ": 0, "scale": 1 }, "seed": 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": "Type - SDF3D Operator\nCode - RodZilla, PauloFalcao\n\nTranslates, Rotates, Scale a V4->V4\nAdapted from RodZilla Rotate", "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, "label": "S", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Transform" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Transform", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "RotateX": 0, "RotateY": 0, "RotateZ": 0, "TranslateX": 0, "TranslateY": 0, "TranslateZ": 0, "scale": 1 }, "seed": 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": "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, "label": "S", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Transform", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "9999999.0", "label": "", "name": "in1", "shortdesc": "V4->V4 MFSDF 1", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF 2", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in3", "shortdesc": "V4->V4 MFSDF 3", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in4", "shortdesc": "V4->V4 MFSDF 4", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF Operator\nCode - PauloFalcao\n\nPerforms a boolean union operation between 4 shapes", "name": "SDF Union 4", "outputs": [ { "sdf3d": "min(min(min($in1($uv),$in2($uv)),$in3($uv)),$in4($uv))", "shortdesc": "SDF Output", "type": "sdf3d" } ], "parameters": [ ] }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Union 4", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "", "inputs": [ { "default": "9999999.0", "label": "", "name": "in1", "shortdesc": "V4->V4 MFSDF 1", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF 2", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in3", "shortdesc": "V4->V4 MFSDF 3", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in4", "shortdesc": "V4->V4 MFSDF 4", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in5", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in6", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in7", "type": "sdf3d" }, { "default": "9999999.0", "label": "", "name": "in8", "type": "sdf3d" } ], "instance": "", "longdesc": "Type - SDF Operator\nCode - PauloFalcao\n\nPerforms a boolean union operation between 8 shapes", "name": "SDF Union 8", "outputs": [ { "sdf3d": "min(min(min(min(min(min(min($in1($uv),$in2($uv)),$in3($uv)),$in4($uv)),$in5($uv)),$in6($uv)),$in7($uv)),$in8($uv))", "shortdesc": "SDF Output", "type": "sdf3d" } ], "parameters": [ ] }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Union 8", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "f": 2.5, "g": 2.5, "h": 0, "m": 0 }, "seed": 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": "Type - SDF Operator\nCode - PauloFalcao\n\nModifies 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.", "name": "SDF Deform Edges Generic", "outputs": [ { "sdf3d": "$(name_uv)_modsdf", "type": "sdf3d" }, { "tex3d": "$(name_uv)_tex", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0, "label": "Deform", "max": 4, "min": 0, "name": "g", "shortdesc": "SDF Deformation amount", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Select", "max": 1, "min": 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, "label": "Color Contrast", "max": 1, "min": 0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Color Shift", "max": 1, "min": -1, "name": "h", "shortdesc": "Shift difference between Textures", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Deform Edges Generic" }, "tree_item": "PauloFalcao/SDF3D/Operator/SDF Deform Edges Generic", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "f": 2.5, "g": 2.5, "h": 0, "m": 0 }, "seed": 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": "Type - MFSDF Operator\nCode - PauloFalcao\n\nModifies 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", "name": "MFSDF Deform Edges Generic", "outputs": [ { "type": "v4v4", "v4v4": "vec4($(name_uv)_tex,$(name_uv)_modsdf)" } ], "parameters": [ { "control": "None", "default": 0, "label": "Deform", "max": 4, "min": 0, "name": "g", "shortdesc": "SDF Deformation amount", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Select", "max": 1, "min": 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, "label": "Color Contrast", "max": 1, "min": 0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Color Shift", "max": 1, "min": -1, "name": "h", "shortdesc": "Shift difference between Textures", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Deform Edges Generic" }, "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Deform Edges Generic", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "edgeb": 0.01, "edges": 0.04, "f": 2, "g": 2, "h": 0, "iterations": 3, "m": 0, "texdb": 0, "texdc": 1 }, "seed": 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 (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*$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": "Type - TEX3D Operator\nCode - PauloFalcao\n\nCreates 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.", "name": "TEX3D Paint Edges Generic", "outputs": [ { "tex3d": "$(name_uv)_tex", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 0, "label": "Color Contrast", "max": 1, "min": 0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Color Shift", "max": 1, "min": -1, "name": "h", "shortdesc": "Shift difference between Textures", "step": 0.001, "type": "float" } ], "shortdesc": "TEX3D Paint Edges Generic" }, "tree_item": "PauloFalcao/TEX3D/Operator/TEX3D Paint Edges Generic", "type": "shader" }, { "icon_data": "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", "name": "pxflib", "parameters": { "edges": 0.04, "f": 2, "h": 0, "iterations": 4 }, "seed": 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 (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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "pxflib_6", "node_position": { "x": -187.387146, "y": -17.641312 }, "parameters": { }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec4 MFSDF_Union_4(vec4 in1,vec4 in2,vec4 in3,vec4 in4){\n vec4 t=(in1.wV4 MFSDF 1", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF 2", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in3", "shortdesc": "V4->V4 MFSDF 3", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in4", "shortdesc": "V4->V4 MFSDF 4", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a boolean union operation between 4 shapes", "name": "MFSDF Union 4", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "MFSDF_Union_4($in1($uv),$in2($uv),$in3($uv),$in4($uv))" } ], "parameters": [ ] }, "type": "shader" }, { "export_paths": { }, "minimized": true, "name": "Material", "node_position": { "x": 1318.784912, "y": -179.223648 }, "parameters": { "albedo_color": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "ao": 1, "depth_scale": 0.5, "emission_energy": 1, "flags_transparent": true, "metallic": 0, "normal": 1, "roughness": 1, "size": 11, "sss": 1 }, "seed": 0, "seed_locked": false, "type": "material" }, { "connections": [ { "from": "tex3d_pattern_2", "from_port": 0, "to": "tex3d_colorize_3", "to_port": 0 }, { "from": "tex3d_colorize_3", "from_port": 0, "to": "pxflib_4", "to_port": 0 }, { "from": "pxflib_4", "from_port": 0, "to": "gen_outputs", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "pxflib_4", "to_port": 5 } ], "label": "Checkerboard", "longdesc": "", "name": "graph_2", "node_position": { "x": -501.399963, "y": 149.583908 }, "nodes": [ { "name": "sdf3d_box", "node_position": { "x": -1041.340088, "y": -203.449951 }, "parameters": { "r": 0, "sx": 6, "sy": 0.5, "sz": 6 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "tex3d_pattern_2", "node_position": { "x": -1106.340088, "y": -381.449951 }, "parameters": { "mix": 4, "x_scale": "$checkersize", "x_wave": 2, "y_scale": 0, "y_wave": 2, "z_scale": "$checkersize", "z_wave": 2 }, "seed": 0, "seed_locked": false, "type": "tex3d_pattern" }, { "name": "gen_inputs", "node_position": { "x": -1341.340088, "y": -277.949951 }, "parameters": { }, "ports": [ ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -171.340027, "y": -302.949951 }, "parameters": { }, "ports": [ { "group_size": 0, "name": "port0", "type": "v4v4" } ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1055.590088, "y": -653.449951 }, "parameters": { "checkersize": 2, "param0": 6, "param1": -1, "param2": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0, "param4": 0.5, "param5": 0 }, "seed": 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, "label": "Checker Size", "max": 20, "min": 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, "y": -377.021362 }, "parameters": { "g": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" } }, "seed": 0, "seed_locked": false, "type": "tex3d_colorize" }, { "name": "pxflib_4", "node_position": { "x": -591.953735, "y": -359.458862 }, "parameters": { "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": 0, "TranlateY": -1, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "parameters": { "checkersize": 2, "param0": 6, "param1": -1, "param2": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0, "param4": 0.5, "param5": 0 }, "seed": 0, "seed_locked": false, "shortdesc": "", "type": "graph" }, { "name": "sdf3d_torus", "node_position": { "x": -711.609192, "y": -119.045792 }, "parameters": { "R": 1, "axis": 1, "r": 0.34 }, "seed": 0, "seed_locked": false, "type": "sdf3d_torus" }, { "name": "image", "node_position": { "x": -139.677063, "y": -151.710709 }, "parameters": { "image": "C:/Users/PauloFalcao/Desktop/material_maker_1_1_windows/environments/hdris/epping_forest_01_1k.hdr" }, "seed": 0, "seed_locked": false, "type": "image" }, { "connections": [ { "from": "gen_inputs", "from_port": 0, "to": "pxflib", "to_port": 1 }, { "from": "gen_inputs", "from_port": 1, "to": "pxflib", "to_port": 0 }, { "from": "gen_inputs", "from_port": 1, "to": "pxflib_7", "to_port": 0 }, { "from": "gen_inputs", "from_port": 0, "to": "pxflib_7", "to_port": 1 }, { "from": "pxflib_7", "from_port": 0, "to": "gen_outputs", "to_port": 0 } ], "label": "Render Combined Path and Local", "longdesc": "", "name": "graph_5", "node_position": { "x": 42.503601, "y": -95.238785 }, "nodes": [ { "name": "pxflib_7", "node_position": { "x": -724.168213, "y": 224.137207 }, "parameters": { "CamD": 1.5, "CamX": 0.861, "CamY": 2.133, "CamZ": 4.154, "CamZoom": 1, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "MaxDistance": 200, "MaxRayLoop": 5, "MaxRefIte": 4, "Precision": 2, "Samples": 0 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "\n//MATH\nconst float pathtracing_PI=3.14159265359;\nconst float pathtracing_TAU=6.28318530718;\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\nvec2 pathtracing_equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*pathtracing_PI,pathtracing_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\nvec3 pathtracing_uniformSampleSphere(float r1,float r2){\n float z=1.0-2.0*r1;\n float r=sqrt(max(0.0,1.0-z*z));\n float phi=pathtracing_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 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 * pathtracing_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" } ], "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\n\tfloat dx = dFdx(uv.x);\n\tfloat dy = dFdy(uv.y);\n\t\n\t// Init random\n\tvec2 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\tvec3 o=vec3($CamX,$CamY,$CamZ)*$CamZoom; \n vec3 t=vec3($LookAtX,$LookAtY,$LookAtZ);\n vec3 u=vec3(0.0,1.0,0.0);\n vec3 c=normalize(t-o);\n vec3 cx=normalize(cross(u,c));\n vec3 cy=normalize(cross(cx,c));\n\n vec3 AAColor=vec3(0.0);\n\t\n for(int AALoop=0;AALoop<$Samples;AALoop++){\n\t \n\t vec2 xy=((uv.xy+(vec2(pathtracing_RandomFloat01(rngState),pathtracing_RandomFloat01(rngState))-0.5)*vec2(dx,dy)))-0.5;\n\n\t vec3 v=normalize(c*$CamD+cx*xy.x+cy*xy.y);\n\n\t vec3 p;\n\t float d=0.01;\n\t vec3 rgb=vec3(1.0);\n\t vec3 io=o;\n\t int i;\n\n\t for(i=0;i<$MaxRefIte;i++){\n\t \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\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\t\t\t\tvec3 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 \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 break;\n\t }\n\t }//for(int i\n\t if (i==$MaxRefIte) rgb=vec3(0.0);//did not hit any light source\n\n\t\tAAColor+=max(rgb,vec3(0));\n\t}\n\n\treturn AAColor/floor($Samples);\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", "outputs": [ { "rgb": "pathtracing_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 50, "label": "MaxDistance", "longdesc": "Maximum render distance", "max": 500, "min": 1, "name": "MaxDistance", "step": 0.01, "type": "float" }, { "default": 2, "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, "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, "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, "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" } ] } ], "shortdesc": "MFSDF Render Path Tracing" }, "type": "shader" }, { "name": "pxflib", "node_position": { "x": -751.168213, "y": -222.862793 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamD": 1.5, "CamX": 0.861, "CamY": 2.133, "CamZ": 4.154, "CamZoom": 1, "Gamma": 1.4, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "Shadow": 1, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec2 Simple360HDR_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//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((($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 vec3 p=ro + rd*t;\n\t\tfloat h = $mfsdf(vec4(p,0.0)).w;\n\t\tfloat isLight=$mfsdf(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(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp($mfsdf(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max($mfsdf(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=$mfsdf(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=$mfsdf(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(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=$mfsdf(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": "Type - MFSDF 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": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3, "min": 0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" }, { "name": "gen_inputs", "node_position": { "x": -1221.168213, "y": 77.137207 }, "parameters": { }, "ports": [ { "name": "360 HDRI Image", "type": "rgb" }, { "name": "MFSDF", "type": "v4v4" } ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -354.168213, "y": 105.137207 }, "parameters": { }, "ports": [ { "name": "", "type": "rgb" } ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1257.168213, "y": -431.862793 }, "parameters": { "param0": 0.861, "param1": 2.133, "param2": 4.154, "param3": 0, "param4": 0, "param5": 0, "param6": 1.5, "param7": 1 }, "seed": 0, "seed_locked": false, "type": "remote", "widgets": [ { "label": "CamX", "linked_widgets": [ { "node": "pxflib", "widget": "CamX" }, { "node": "pxflib_7", "widget": "CamX" } ], "name": "param0", "type": "linked_control" }, { "label": "CamY", "linked_widgets": [ { "node": "pxflib", "widget": "CamY" }, { "node": "pxflib_7", "widget": "CamY" } ], "name": "param1", "type": "linked_control" }, { "label": "CamZ", "linked_widgets": [ { "node": "pxflib", "widget": "CamZ" }, { "node": "pxflib_7", "widget": "CamZ" } ], "name": "param2", "type": "linked_control" }, { "label": "LookAtX", "linked_widgets": [ { "node": "pxflib", "widget": "LookAtX" }, { "node": "pxflib_7", "widget": "LookAtX" } ], "name": "param3", "type": "linked_control" }, { "label": "LookAtY", "linked_widgets": [ { "node": "pxflib", "widget": "LookAtY" }, { "node": "pxflib_7", "widget": "LookAtY" } ], "name": "param4", "type": "linked_control" }, { "label": "LookAtZ", "linked_widgets": [ { "node": "pxflib", "widget": "LookAtZ" } ], "name": "param5", "type": "linked_control" }, { "label": "CamDistance", "linked_widgets": [ { "node": "pxflib", "widget": "CamD" }, { "node": "pxflib_7", "widget": "CamD" } ], "name": "param6", "type": "linked_control" }, { "label": "CamZoom", "linked_widgets": [ { "node": "pxflib", "widget": "CamZoom" }, { "node": "pxflib_7", "widget": "CamZoom" } ], "name": "param7", "type": "linked_control" } ] } ], "parameters": { "param0": 0.861, "param1": 2.133, "param2": 4.154, "param3": 0, "param4": 0, "param5": 0, "param6": 1.5, "param7": 1 }, "seed": 0, "seed_locked": false, "shortdesc": "", "type": "graph" } ], "tree_item": "PauloFalcao/MFSDF/Render/MFSDF Combined Path and Local" }, { "connections": [ { "from": "pxflib", "from_port": 0, "to": "shader_3", "to_port": 1 }, { "from": "pxflib_2", "from_port": 0, "to": "shader_3", "to_port": 2 }, { "from": "pxflib_3", "from_port": 0, "to": "shader_3", "to_port": 3 }, { "from": "shader_3", "from_port": 0, "to": "pxflib_4", "to_port": 1 }, { "from": "sdf3d_boolean", "from_port": 0, "to": "shader_3", "to_port": 0 }, { "from": "sdf3d_boolean", "from_port": 0, "to": "pxflib_4", "to_port": 0 }, { "from": "sdf3d_box_2", "from_port": 0, "to": "pxflib_5", "to_port": 0 }, { "from": "pxflib_5", "from_port": 0, "to": "sdf3d_boolean", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "sdf3d_boolean", "to_port": 1 } ], "icon_data": "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", "nodes": [ { "name": "pxflib_5", "node_position": { "x": -121.520111, "y": -176.288788 }, "parameters": { "RotateX": 0, "RotateY": 0, "RotateZ": 0, "TranslateX": 0, "TranslateY": 0.2, "TranslateZ": 0.2, "scale": 0.5 }, "seed": 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": "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, "label": "S", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "export_paths": { }, "name": "Material", "node_position": { "x": 367.000397, "y": -44.164886 }, "parameters": { "albedo_color": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "ao": 1, "depth_scale": 0.5, "emission_energy": 1, "flags_transparent": true, "metallic": 0, "normal": 1, "roughness": 1, "size": 11, "sss": 1 }, "seed": 0, "seed_locked": false, "type": "material" }, { "name": "pxflib", "node_position": { "x": -324.520111, "y": 5.711212 }, "parameters": { "color": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" } }, "seed": 0, "seed_locked": false, "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, "b": 1, "g": 1, "r": 1 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "pxflib_2", "node_position": { "x": -325.520111, "y": 69.711212 }, "parameters": { "color": { "a": 1, "b": 0, "g": 0, "r": 1, "type": "Color" } }, "seed": 0, "seed_locked": false, "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, "b": 1, "g": 1, "r": 1 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "pxflib_3", "node_position": { "x": -325.520111, "y": 151.711212 }, "parameters": { "color": { "a": 1, "b": 0, "g": 0, "r": 0, "type": "Color" } }, "seed": 0, "seed_locked": false, "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, "b": 1, "g": 1, "r": 1 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "sdf3d_box_2", "node_position": { "x": -368.520111, "y": -171.288788 }, "parameters": { "r": 0.03, "sx": 0.3, "sy": 0.25, "sz": 0.25 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "sdf3d_box", "node_position": { "x": -360.520111, "y": -320.288788 }, "parameters": { "r": 0.03, "sx": 0.3, "sy": 0.25, "sz": 0.25 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "sdf3d_boolean", "node_position": { "x": 107.479889, "y": -245.288788 }, "parameters": { "op": 1 }, "seed": 0, "seed_locked": false, "type": "sdf3d_boolean" }, { "name": "shader_3", "node_position": { "x": -70.839569, "y": 76.475128 }, "parameters": { "edges": 0.0377, "f": 2, "h": 0, "iterations": 4 }, "seed": 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 (d0.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)-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": "max($uv.y+1.0,length(vec3($uv.x,$uv.y+1.0,$uv.z))-10.0)", "function": true, "label": "SDF3D B", "name": "sdf_b", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "vec3(mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0))*0.9+0.1", "function": true, "label": "TEX3D B", "name": "tex3d_b", "shortdesc": "TEX3D B", "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": "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.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\tvec3 objColor=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.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\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=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.0));\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 2 Objs", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1, "min": 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, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "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, "min": 0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PauloFalcao/TEX3D/Operator/TEX3D Paint Edges Example" }, { "connections": [ { "from": "sdf3d_box_2", "from_port": 0, "to": "pxflib_5", "to_port": 0 }, { "from": "pxflib_5", "from_port": 0, "to": "sdf3d_boolean", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "sdf3d_boolean", "to_port": 1 }, { "from": "sdf3d_boolean", "from_port": 0, "to": "shader_2", "to_port": 0 }, { "from": "pxflib", "from_port": 0, "to": "shader_2", "to_port": 2 }, { "from": "pxflib_2", "from_port": 0, "to": "shader_2", "to_port": 3 }, { "from": "pxflib_3", "from_port": 0, "to": "shader_2", "to_port": 4 }, { "from": "shader_2", "from_port": 0, "to": "pxflib_4", "to_port": 0 }, { "from": "shader_2", "from_port": 1, "to": "pxflib_4", "to_port": 1 }, { "from": "pxflib_6", "from_port": 0, "to": "shader_2", "to_port": 1 } ], "icon_data": "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", "nodes": [ { "name": "pxflib_6", "node_position": { "x": -282.883942, "y": 168.93103 }, "parameters": { "brightness": 0, "clamp": 1, "contrast": 2, "iterations": 5, "persistence": 0.5, "scale": 26.044, "scale_x": 1, "scale_y": 1, "scale_z": 1, "transx": 0, "transy": 0, "transz": 0 }, "seed": 0, "seed_locked": false, "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// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_oct_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_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": "Type - TEX3D Generator\nCode - Nikat\n\nMakes a non periodic noise with octaves using nikat code from https://www.shadertoy.com/view/XsX3zB", "name": "TEX3D Simplex Noise Octaves", "outputs": [ { "shortdesc": "TEX3D output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8, "label": "Scale", "longdesc": "Noise scale", "max": 32, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale X", "longdesc": "Noise X scale", "max": 16, "min": 0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16, "min": 0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16, "min": 0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate X", "longdesc": "Noise X translate", "max": 100, "min": 0, "name": "transx", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Y", "longdesc": "Noise Y translate", "max": 100, "min": 0, "name": "transy", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Z", "longdesc": "Noise Z translate", "max": 100, "min": 0, "name": "transz", "step": 0.001, "type": "float" }, { "default": 12, "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, "min": 0, "name": "persistence", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Brightness", "longdesc": "Overall brightness", "max": 1, "min": 0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Contrast", "longdesc": "Overall Contrast", "max": 1, "min": 0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1, "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_3", "node_position": { "x": -120.404083, "y": 78.642242 }, "parameters": { "color": { "a": 1, "b": 0, "g": 0, "r": 0, "type": "Color" } }, "seed": 0, "seed_locked": false, "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, "b": 1, "g": 1, "r": 1 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "pxflib", "node_position": { "x": -119.404083, "y": -67.357758 }, "parameters": { "color": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" } }, "seed": 0, "seed_locked": false, "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, "b": 1, "g": 1, "r": 1 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "pxflib_2", "node_position": { "x": -117.404083, "y": 8.642242 }, "parameters": { "color": { "a": 1, "b": 0, "g": 0, "r": 1, "type": "Color" } }, "seed": 0, "seed_locked": false, "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, "b": 1, "g": 1, "r": 1 }, "label": "Color", "name": "color", "type": "color" } ], "shortdesc": "TEX3D Color" }, "type": "shader" }, { "name": "shader_2", "node_position": { "x": 124.116058, "y": -6.06897 }, "parameters": { "edgeb": 0.019, "edges": 0.0378, "f": 2, "g": 2, "h": 0, "iterations": 3, "m": 0, "texdb": -0.38, "texdc": 1.768 }, "seed": 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);\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));\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, "label": "S", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "sdf3d_box", "node_position": { "x": -467.404083, "y": -153.357758 }, "parameters": { "r": 0.03, "sx": 0.3, "sy": 0.25, "sz": 0.25 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "sdf3d_boolean", "node_position": { "x": -14.404083, "y": -202.357758 }, "parameters": { "op": 1 }, "seed": 0, "seed_locked": false, "type": "sdf3d_boolean" }, { "name": "pxflib_4", "node_position": { "x": 559.595947, "y": -11.357758 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamD": 1.5, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 0.29, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "Pow": 64, "Reflection": 0.115, "Shadow": 1, "Specular": 0, "SunX": 2.5, "SunY": 2.5, "SunZ": 1 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "const float PI=3.14159265359;\n\nvec2 equirectangularMap(vec3 dir) {\n\tvec2 longlat = vec2(atan(dir.y,dir.x),acos(dir.z));\n \treturn longlat/vec2(2.0*PI,PI);\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)-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": "max($uv.y+1.0,length(vec3($uv.x,$uv.y+1.0,$uv.z))-10.0)", "function": true, "label": "SDF3D B", "name": "sdf_b", "shortdesc": "SDF3D B", "type": "sdf3d" }, { "default": "vec3(mod(floor($uv.x*2.0)+floor($uv.z*2.0),2.0))*0.9+0.1", "function": true, "label": "TEX3D B", "name": "tex3d_b", "shortdesc": "TEX3D B", "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": "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.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\tvec3 objColor=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.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\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=(dS.y<0.5)?$tex3d_a(vec4(p,1.0)):$tex3d_b(vec4(p,1.0));\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 2 Objs", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Reflection", "longdesc": "Reflection strength, reflects other objects or the environment HDRI 360 image ", "max": 1, "min": 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, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 32, "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, "min": 0, "name": "Pow", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PauloFalcao/SDF3D/Operator/SDF Deform Edges Example" }, { "connections": [ { "from": "sdf3d_box_2", "from_port": 0, "to": "pxflib_5", "to_port": 0 }, { "from": "pxflib_5", "from_port": 0, "to": "sdf3d_boolean", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "sdf3d_boolean", "to_port": 1 }, { "from": "sdf3d_boolean", "from_port": 0, "to": "pxflib_6", "to_port": 5 }, { "from": "pxflib_6", "from_port": 0, "to": "shader_2", "to_port": 0 }, { "from": "shader_2", "from_port": 0, "to": "pxflib", "to_port": 0 }, { "from": "pxflib_2", "from_port": 0, "to": "shader_2", "to_port": 1 }, { "from": "pxflib_3", "from_port": 0, "to": "shader_2", "to_port": 2 } ], "icon_data": "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", "nodes": [ { "name": "pxflib_3", "node_position": { "x": -455.528168, "y": -46.438614 }, "parameters": { "brightness": 0, "clamp": 1, "contrast": 2, "iterations": 5, "persistence": 0.5, "scale": 30.38, "scale_x": 1, "scale_y": 1, "scale_z": 1, "transx": 0, "transy": 0, "transz": 0 }, "seed": 0, "seed_locked": false, "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// discontinuous pseudorandom uniformly distributed in [-0.5, +0.5]^3 */\nvec3 XsX3zB_oct_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_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": "Type - TEX3D Generator\nCode - Nikat\n\nMakes a non periodic noise with octaves using nikat code from https://www.shadertoy.com/view/XsX3zB", "name": "TEX3D Simplex Noise Octaves", "outputs": [ { "shortdesc": "TEX3D output", "tex3d": "$clamp", "type": "tex3d" } ], "parameters": [ { "control": "None", "default": 8, "label": "Scale", "longdesc": "Noise scale", "max": 32, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale X", "longdesc": "Noise X scale", "max": 16, "min": 0, "name": "scale_x", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Y", "longdesc": "Noise Y scale", "max": 16, "min": 0, "name": "scale_y", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Scale Z", "longdesc": "Noise Z scale", "max": 16, "min": 0, "name": "scale_z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate X", "longdesc": "Noise X translate", "max": 100, "min": 0, "name": "transx", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Y", "longdesc": "Noise Y translate", "max": 100, "min": 0, "name": "transy", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Translate Z", "longdesc": "Noise Z translate", "max": 100, "min": 0, "name": "transz", "step": 0.001, "type": "float" }, { "default": 12, "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, "min": 0, "name": "persistence", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Brightness", "longdesc": "Overall brightness", "max": 1, "min": 0, "name": "brightness", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Contrast", "longdesc": "Overall Contrast", "max": 1, "min": 0, "name": "contrast", "step": 0.001, "type": "float" }, { "default": 1, "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": -10.528168, "y": -396.518555 }, "parameters": { "BaseColor": { "a": 1, "b": 0, "g": 0, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 1, "TranlateX": 0, "TranlateY": 0, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "sdf3d_boolean", "node_position": { "x": -194.528168, "y": -362.518555 }, "parameters": { "op": 1 }, "seed": 0, "seed_locked": false, "type": "sdf3d_boolean" }, { "name": "pxflib_2", "node_position": { "x": -61.028107, "y": 127.561386 }, "parameters": { "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0, "TranlateX": 0, "TranlateY": 0, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "shader_2", "node_position": { "x": 261.071869, "y": -76.558609 }, "parameters": { "edgeb": 0.01, "edges": 0.044, "f": 2, "g": 1.997, "h": 0, "iterations": 3, "m": 0, "texdb": -0.405, "texdc": 1 }, "seed": 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, "label": "S", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "export_paths": { }, "minimized": true, "name": "Material", "node_position": { "x": 361.181183, "y": 655.967346 }, "parameters": { "albedo_color": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "ao": 1, "depth_scale": 0.5, "emission_energy": 1, "flags_transparent": true, "metallic": 0, "normal": 1, "roughness": 1, "size": 11, "sss": 1 }, "seed": 0, "seed_locked": false, "type": "material" }, { "name": "pxflib", "node_position": { "x": 684.444092, "y": -81.438614 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamD": 1.5, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 0.314, "Gamma": 1.4, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "Shadow": 1, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec2 Simple360HDR_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//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((($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 vec3 p=ro + rd*t;\n\t\tfloat h = $mfsdf(vec4(p,0.0)).w;\n\t\tfloat isLight=$mfsdf(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(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp($mfsdf(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max($mfsdf(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=$mfsdf(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=$mfsdf(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(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=$mfsdf(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": "Type - MFSDF 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": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3, "min": 0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Deform Edges Example" }, { "connections": [ { "from": "sdf3d_box_2", "from_port": 0, "to": "pxflib_5", "to_port": 0 }, { "from": "pxflib_5", "from_port": 0, "to": "sdf3d_boolean", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "sdf3d_boolean", "to_port": 1 }, { "from": "pxflib_6", "from_port": 0, "to": "shader_1", "to_port": 0 }, { "from": "pxflib_2", "from_port": 0, "to": "shader_1", "to_port": 1 }, { "from": "shader_1", "from_port": 0, "to": "pxflib", "to_port": 0 }, { "from": "pxflib_8", "from_port": 0, "to": "pxflib_2", "to_port": 0 }, { "from": "pxflib_7", "from_port": 0, "to": "pxflib_2", "to_port": 5 }, { "from": "pxflib_3", "from_port": 0, "to": "pxflib_4", "to_port": 0 }, { "from": "pxflib_4", "from_port": 0, "to": "pxflib_6", "to_port": 5 }, { "from": "pxflib_9", "from_port": 0, "to": "pxflib_4", "to_port": 1 }, { "from": "sdf3d_box_3", "from_port": 0, "to": "pxflib_10", "to_port": 0 }, { "from": "pxflib_10", "from_port": 0, "to": "pxflib_11", "to_port": 0 }, { "from": "pxflib_11", "from_port": 0, "to": "sdf3d_smoothboolean", "to_port": 0 }, { "from": "sdf3d_boolean", "from_port": 0, "to": "sdf3d_smoothboolean", "to_port": 1 }, { "from": "sdf3d_smoothboolean", "from_port": 0, "to": "pxflib_3", "to_port": 0 }, { "from": "sdf3d_smoothboolean", "from_port": 0, "to": "pxflib_7", "to_port": 0 } ], "icon_data": "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", "nodes": [ { "name": "sdf3d_smoothboolean", "node_position": { "x": -188.58728, "y": -280.217072 }, "parameters": { "k": 0.15, "op": 0 }, "seed": 0, "seed_locked": false, "type": "sdf3d_smoothboolean" }, { "name": "pxflib_4", "node_position": { "x": 286.989502, "y": -267.030487 }, "parameters": { "Bound": 0.01, "Correction": 0, "Distort": 0.005 }, "seed": 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": "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, "min": 0, "name": "Distort", "step": 0.001, "type": "float" }, { "control": "None", "default": 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, "min": 0, "name": "Correction", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.1, "label": "Bound", "max": 10, "min": 0, "name": "Bound", "step": 0.001, "type": "float" } ] }, "type": "shader" }, { "name": "pxflib_3", "node_position": { "x": 3.989502, "y": -191.030487 }, "parameters": { "blur": 0.01, "bound": 1, "iterations": 3 }, "seed": 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 (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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "pxflib_6", "node_position": { "x": 229.969818, "y": -141.995819 }, "parameters": { "BaseColor": { "a": 1, "b": 0, "g": 0, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0.268, "TranlateX": 0, "TranlateY": 0, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "shader_1", "node_position": { "x": 538.448059, "y": 55.253204 }, "parameters": { "f": 1.497, "h": 0 }, "seed": 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)_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, "label": "Color Contrast", "max": 1, "min": 0, "name": "f", "shortdesc": "Increases the difference between Textures", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Color Shift", "max": 1, "min": -1, "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": -27.777283, "y": 188.380829 }, "parameters": { "blur": 0.028, "bound": 1, "iterations": 3 }, "seed": 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 (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, "label": "S", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "pxflib_11", "node_position": { "x": -550.08728, "y": -449.217072 }, "parameters": { "RotateX": 0, "RotateY": 0, "RotateZ": 0, "TranslateX": 0, "TranslateY": 0.266, "TranslateZ": -0.019, "scale": 0.5 }, "seed": 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": "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, "label": "S", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranslateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranslateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranslateZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "longdesc": "The rotation around the X axis", "max": 180, "min": -180, "name": "RotateX", "shortdesc": "Rotate.x", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "longdesc": "The rotation around the Y axis", "max": 180, "min": -180, "name": "RotateY", "shortdesc": "Rotate.y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "longdesc": "The rotation around the Z axis", "max": 180, "min": -180, "name": "RotateZ", "shortdesc": "Rotate.z", "step": 0.001, "type": "float" } ], "shortdesc": "SDF Transform" }, "type": "shader" }, { "name": "pxflib", "node_position": { "x": 903.978882, "y": 51.262207 }, "parameters": { "AmbLight": 0.25, "AmbOcclusion": 1, "CamD": 1.5, "CamX": 2.5, "CamY": 2, "CamZ": 3, "CamZoom": 0.314, "Gamma": 1.4, "LookAtX": 0, "LookAtY": 0, "LookAtZ": 0, "Shadow": 1, "SunX": 2.5, "SunY": 2.5, "SunZ": 2.5 }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec2 Simple360HDR_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//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((($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 vec3 p=ro + rd*t;\n\t\tfloat h = $mfsdf(vec4(p,0.0)).w;\n\t\tfloat isLight=$mfsdf(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(vec4(p,1.0)).xyz; // 1 - BaseColor (r,g,b,sdf) linear (0-1)\n\tfloat objMetallic=clamp($mfsdf(vec4(p,2.0)).x,0.0,1.0); // 2 - Metallic (v,0,0,sdf)\n\tfloat objSpecular=clamp(max($mfsdf(vec4(p,4.0)).x*0.2,objMetallic),0.0,1.0); // 4 - Specular (v,0,0,sdf)\n\tfloat objRoughness=$mfsdf(vec4(p,5.0)).x; // 5 - Roughness (v,0,0,sdf)\n\tvec3 objEmission=$mfsdf(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(vec4(p,1.0)).xyz;\n\t\t\tobjEmissionRef=$mfsdf(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": "Type - MFSDF 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": "MFSDF Render", "outputs": [ { "rgb": "raymarch_$name($uv)", "shortdesc": "Image output", "type": "rgb" } ], "parameters": [ { "control": "None", "default": 0, "label": "CamX", "longdesc": "Camera position X", "max": 5, "min": -5, "name": "CamX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamY", "longdesc": "Camera position Y", "max": 5, "min": -5, "name": "CamY", "step": 0.001, "type": "float" }, { "control": "None", "default": 2, "label": "CamZ", "longdesc": "Camera position Z", "max": 5, "min": -5, "name": "CamZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtX", "longdesc": "Look at position with coordinate X", "max": 5, "min": -5, "name": "LookAtX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtY", "longdesc": "Look at position with coordinate Y", "max": 5, "min": -5, "name": "LookAtY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "LookAtZ", "longdesc": "Look at position with coordinate Z", "max": 5, "min": -5, "name": "LookAtZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 5, "label": "CamDistance", "longdesc": "Camera distance to the view plane, used to define the Field Of View", "max": 5, "min": 0, "name": "CamD", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "CamZoom", "longdesc": "Camera zoom", "max": 5, "min": 0, "name": "CamZoom", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunX", "longdesc": "Sun position coordinate X", "max": 10, "min": -10, "name": "SunX", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunY", "longdesc": "Sun position coordinate Y", "max": 10, "min": -10, "name": "SunY", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "SunZ", "longdesc": "Sun position coordinate Z", "max": 10, "min": -10, "name": "SunZ", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.2, "label": "AmbLight", "longdesc": "Strength of ambient light", "max": 1, "min": 0, "name": "AmbLight", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "AmbOcclusion", "longdesc": "Strength of ambient occlusion", "max": 1, "min": 0, "name": "AmbOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "Shadow", "longdesc": "Shadow strength", "max": 1, "min": 0, "name": "Shadow", "step": 0.001, "type": "float" }, { "control": "None", "default": 2.2, "label": "Gamma", "longdesc": "Gamma Correction", "max": 3, "min": 0, "name": "Gamma", "step": 0.001, "type": "float" } ] }, "type": "shader" } ], "tree_item": "PauloFalcao/MFSDF/Operator/MFSDF Paint Edges Generic Example" }, { "connections": [ { "from": "sdf3d_box", "from_port": 0, "to": "sdf3d_translate_3_2", "to_port": 0 }, { "from": "sdf3d_translate_3_2", "from_port": 0, "to": "sdf3d_rotate_2", "to_port": 0 }, { "from": "sdf3d_translate_3_2", "from_port": 0, "to": "sdf3d_boolean", "to_port": 0 }, { "from": "pxflib", "from_port": 0, "to": "sdf3d_boolean", "to_port": 1 }, { "from": "sdf3d_rotate_2", "from_port": 0, "to": "sdf3d_translate_3_3", "to_port": 0 }, { "from": "sdf3d_translate_3_3", "from_port": 0, "to": "pxflib", "to_port": 0 }, { "from": "sdf3d_boolean", "from_port": 0, "to": "pxflib_2", "to_port": 8 }, { "from": "pxflib_2", "from_port": 0, "to": "gen_outputs", "to_port": 0 } ], "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, "y": 634.5 }, "parameters": { "mode": 4 }, "seed": 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, "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, "y": 491.5 }, "parameters": { "x": 2.95, "y": 1.36, "z": 1.36 }, "seed": 0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_boolean", "node_position": { "x": -536, "y": 227.5 }, "parameters": { "op": 0 }, "seed": 0, "seed_locked": false, "type": "sdf3d_boolean" }, { "name": "sdf3d_rotate_2", "node_position": { "x": -830, "y": 283.5 }, "parameters": { "ax": 0, "ay": -39, "az": 65 }, "seed": 0, "seed_locked": false, "type": "sdf3d_rotate" }, { "name": "sdf3d_translate_3_2", "node_position": { "x": -1031, "y": 220.5 }, "parameters": { "x": 0, "y": 3.23, "z": 0 }, "seed": 0, "seed_locked": false, "type": "sdf3d_translate" }, { "name": "sdf3d_box", "node_position": { "x": -1269, "y": 253.5 }, "parameters": { "r": 1, "sx": 0.89, "sy": 0.05, "sz": 0.81 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib_2", "node_position": { "x": -351, "y": 218 }, "parameters": { "Alpha": 0, "AmbientOcclusion": 0, "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 3, "Metallic": 0, "Normal": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": 0, "TranlateY": 0, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Clearcoat Normal Scale", "max": 1, "min": 0, "name": "Normal", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Alpha", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "AmbientOcclusion", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 1, "min": 0, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 1, "min": 0, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 1, "min": 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, "y": 559.265259 }, "parameters": { }, "ports": [ ], "seed": 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, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -953.511108, "y": -82 }, "parameters": { "param0": 3 }, "seed": 0, "seed_locked": false, "type": "remote", "widgets": [ { "label": "Emission", "linked_widgets": [ { "node": "pxflib_2", "widget": "Emission" } ], "name": "param0", "type": "linked_control" } ] } ], "parameters": { "param0": 3 }, "seed": 0, "seed_locked": false, "shortdesc": "", "tree_item": "PauloFalcao/MFSDF/Objects/MFSDF Stage Lights", "type": "graph" }, { "connections": [ { "from": "pxflib_2", "from_port": 0, "to": "pxflib_4", "to_port": 3 }, { "from": "graph", "from_port": 0, "to": "pxflib_4", "to_port": 0 } ], "icon_data": "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", "nodes": [ { "connections": [ { "from": "pxflib_3", "from_port": 0, "to": "pxflib_6", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "pxflib_3", "to_port": 5 }, { "from": "graph_2", "from_port": 0, "to": "pxflib_6", "to_port": 2 }, { "from": "pxflib_6", "from_port": 0, "to": "gen_outputs", "to_port": 0 }, { "from": "pxflib_5", "from_port": 0, "to": "pxflib_6", "to_port": 1 } ], "label": "Stage", "longdesc": "", "name": "graph", "node_position": { "x": -165.559998, "y": -128.853302 }, "nodes": [ { "name": "pxflib_5", "node_position": { "x": -926.450012, "y": -208.200012 }, "parameters": { "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 10, "Metallic": 0, "RotateX": 0, "RotateY": -53.361, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": -1.354, "TranlateY": 4.42, "TranlateZ": 2.231, "scale": 1.359 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "sdf3d_box", "node_position": { "x": -869.200012, "y": -361.700012 }, "parameters": { "r": 0.01, "sx": 0.16, "sy": 1.93, "sz": 3.57 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "pxflib_3", "node_position": { "x": -639.200012, "y": -494.700012 }, "parameters": { "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 10, "Metallic": 0, "RotateX": 0, "RotateY": -53.361, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": 4.619, "TranlateY": 1.214, "TranlateZ": -3.706, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" }, { "name": "pxflib_6", "node_position": { "x": -286.200012, "y": -317.700012 }, "parameters": { }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec4 MFSDF_Union_4(vec4 in1,vec4 in2,vec4 in3,vec4 in4){\n vec4 t=(in1.wV4 MFSDF 1", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF 2", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in3", "shortdesc": "V4->V4 MFSDF 3", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in4", "shortdesc": "V4->V4 MFSDF 4", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a boolean union operation between 4 shapes", "name": "MFSDF Union 4", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "MFSDF_Union_4($in1($uv),$in2($uv),$in3($uv),$in4($uv))" } ], "parameters": [ ] }, "type": "shader" }, { "connections": [ { "from": "tex3d_pattern_2", "from_port": 0, "to": "tex3d_colorize_3", "to_port": 0 }, { "from": "tex3d_colorize_3", "from_port": 0, "to": "pxflib_4", "to_port": 0 }, { "from": "pxflib_4", "from_port": 0, "to": "gen_outputs", "to_port": 0 }, { "from": "sdf3d_box", "from_port": 0, "to": "pxflib_4", "to_port": 5 } ], "label": "Checkerboard", "longdesc": "", "name": "graph_2", "node_position": { "x": -622.200012, "y": -99.700012 }, "nodes": [ { "name": "sdf3d_box", "node_position": { "x": -1041.340088, "y": -203.449951 }, "parameters": { "r": 0, "sx": 6, "sy": 0.5, "sz": 6 }, "seed": 0, "seed_locked": false, "type": "sdf3d_box" }, { "name": "tex3d_pattern_2", "node_position": { "x": -1106.340088, "y": -381.449951 }, "parameters": { "mix": 4, "x_scale": "$checkersize", "x_wave": 2, "y_scale": 0, "y_wave": 2, "z_scale": "$checkersize", "z_wave": 2 }, "seed": 0, "seed_locked": false, "type": "tex3d_pattern" }, { "name": "gen_inputs", "node_position": { "x": -1341.340088, "y": -277.949951 }, "parameters": { }, "ports": [ ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": -171.340027, "y": -302.949951 }, "parameters": { }, "ports": [ { "group_size": 0, "name": "port0", "type": "v4v4" } ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -1055.590088, "y": -653.449951 }, "parameters": { "checkersize": 2.242, "param0": 6, "param1": -1, "param2": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0, "param4": 1, "param5": 0.089 }, "seed": 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, "label": "Checker Size", "max": 20, "min": 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, "y": -377.021362 }, "parameters": { "g": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" } }, "seed": 0, "seed_locked": false, "type": "tex3d_colorize" }, { "name": "pxflib_4", "node_position": { "x": -591.953735, "y": -359.458862 }, "parameters": { "BaseColor": { "a": 1, "b": 1, "g": 1, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0.089, "Specular": 1, "TranlateX": 0, "TranlateY": -1, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "parameters": { "checkersize": 2.242, "param0": 6, "param1": -1, "param2": { "interpolation": 1, "points": [ { "a": 1, "b": 0.808594, "g": 0.808594, "pos": 0, "r": 0.808594 }, { "a": 1, "b": 0.53125, "g": 0.53125, "pos": 1, "r": 0.53125 } ], "type": "Gradient" }, "param3": 0, "param4": 1, "param5": 0.089 }, "seed": 0, "seed_locked": false, "shortdesc": "", "type": "graph" }, { "name": "gen_inputs", "node_position": { "x": -1426.449951, "y": -296.399994 }, "parameters": { }, "ports": [ ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_outputs", "node_position": { "x": 13.799988, "y": -296.399994 }, "parameters": { }, "ports": [ { "name": "port0", "type": "v4v4" } ], "seed": 0, "seed_locked": false, "type": "ios" }, { "name": "gen_parameters", "node_position": { "x": -868.650024, "y": -794.700012 }, "parameters": { }, "seed": 0, "seed_locked": false, "type": "remote", "widgets": [ ] } ], "parameters": { }, "seed": 0, "seed_locked": false, "shortdesc": "", "type": "graph" }, { "name": "pxflib_4", "node_position": { "x": 120.309937, "y": -116.593338 }, "parameters": { }, "seed": 0, "seed_locked": false, "shader_model": { "code": "", "global": "vec4 MFSDF_Union_4(vec4 in1,vec4 in2,vec4 in3,vec4 in4){\n vec4 t=(in1.wV4 MFSDF 1", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in2", "shortdesc": "V4->V4 MFSDF 2", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in3", "shortdesc": "V4->V4 MFSDF 3", "type": "v4v4" }, { "default": "vec4(0.0,0.0,0.0,9999999.0)", "label": "", "name": "in4", "shortdesc": "V4->V4 MFSDF 4", "type": "v4v4" } ], "instance": "", "longdesc": "Type - V4->V4 Operator\nCode - PauloFalcao\n\nPerforms a boolean union operation between 4 shapes", "name": "MFSDF Union 4", "outputs": [ { "shortdesc": "V4->V4 MFSDF", "type": "v4v4", "v4v4": "MFSDF_Union_4($in1($uv),$in2($uv),$in3($uv),$in4($uv))" } ], "parameters": [ ] }, "type": "shader" }, { "name": "pxflib_2", "node_position": { "x": -224.75, "y": -17.553345 }, "parameters": { "BaseColor": { "a": 1, "b": 0, "g": 0, "r": 1, "type": "Color" }, "Emission": 0, "Metallic": 0, "RotateX": 0, "RotateY": 0, "RotateZ": 0, "Roughness": 0, "Specular": 0.5, "TranlateX": 0, "TranlateY": 0, "TranlateZ": 0, "scale": 1 }, "seed": -5947, "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, "b": 1, "g": 1, "r": 1 }, "label": "", "name": "BaseColor", "type": "color" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Metallic", "step": 0.001, "type": "float" }, { "control": "None", "default": 0.5, "label": "", "max": 1, "min": 0, "name": "Specular", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "max": 1, "min": 0, "name": "Roughness", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "", "longdesc": "Emission Scale", "max": 500, "min": 0, "name": "Emission", "step": 0.001, "type": "float" }, { "control": "None", "default": 1, "label": "S", "longdesc": "Object scale", "max": 4, "min": 0, "name": "scale", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "X", "max": 10, "min": -10, "name": "TranlateX", "shortdesc": "Translate X", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Y", "max": 10, "min": -10, "name": "TranlateY", "shortdesc": "Translate Y", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Z", "max": 10, "min": -10, "name": "TranlateZ", "shortdesc": "Translate Z", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rx", "max": 180, "min": -180, "name": "RotateX", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Ry", "max": 180, "min": -180, "name": "RotateY", "step": 0.001, "type": "float" }, { "control": "None", "default": 0, "label": "Rz", "max": 180, "min": -180, "name": "RotateZ", "step": 0.001, "type": "float" } ], "shortdesc": "MFSDF Object" }, "type": "shader" } ], "tree_item": "PauloFalcao/MFSDF/Objects/MFSDF Stage Checkerboard" } ], "name": "PauloFalcaoRayMarching" }