Name
*
Code
{"properties":{"frame":0,"maxFrame":600,"maxFrameLocked":false,"realtimeState":true,"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1","versions":{"polygonjs":"1.4.51"}},"root":{"type":"root","nodes":{"COP":{"type":"copNetwork","nodes":{"cubeCamera1":{"type":"cubeCamera"},"envMap":{"type":"envMap","inputs":["imageEnv"]},"image1":{"type":"image"},"imageEnv":{"type":"imageEXR","params":{"tminFilter":true,"tmagFilter":true,"tanisotropy":true,"useRendererMaxAnisotropy":true}}}},"lights":{"type":"geo","nodes":{"hemisphereLight1":{"type":"hemisphereLight","params":{"intensity":0.52}},"merge1":{"type":"merge","inputs":["hemisphereLight1","polarTransform1"],"flags":{"display":true}},"polarTransform1":{"type":"polarTransform","params":{"center":[0,0.7,0],"latitude":25.2,"depth":3},"inputs":["spotLight1"]},"spotLight1":{"type":"spotLight","params":{"decay":0.1,"distance":10,"castShadow":true}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"cameras":{"type":"geo","nodes":{"cameraControls1":{"type":"cameraControls","nodes":{"cameraOrbitControls1":{"type":"cameraOrbitControls","params":{"target":[0.4091132566022929,0.8073451172434962,-0.30231625916320026]}}},"params":{"node":"cameraOrbitControls1"},"inputs":["perspectiveCamera1"]},"cubeCamera1":{"type":"cubeCamera"},"merge1":{"type":"merge","inputs":["cameraControls1","cubeCamera1"],"flags":{"display":true}},"perspectiveCamera1":{"type":"perspectiveCamera","params":{"position":[3.3,3.3,3.3]}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"env":{"type":"geo","nodes":{"MAT":{"type":"materialsNetwork","nodes":{"meshBasic1":{"type":"meshBasic","params":{"useMap":true,"map":"../../../COP/imageEnv","front":false}}}},"material1":{"type":"material","params":{"material":"../MAT/meshBasic1"},"inputs":["transform1"]},"objectProperties1":{"type":"objectProperties","params":{"tname":true,"name":"envObject"},"inputs":["material1"],"flags":{"display":true}},"sphere1":{"type":"sphere"},"transform1":{"type":"transform","params":{"scale":42},"inputs":["sphere1"]}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"boxes":{"type":"geo","nodes":{"MAT":{"type":"materialsNetwork","nodes":{"meshStandardBuilder1":{"type":"meshStandardBuilder","nodes":{"attribute1":{"type":"attribute","params":{"name":"id"},"maxInputsCount":0,"connection_points":{"in":[],"out":[{"name":"val","type":"float"}]}},"floatToVec2_1":{"type":"floatToVec2","params":{"x":{"overriden_options":{}},"y":{"raw_input":12,"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"round1","output":"val"}]},"floatToVec3_1":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"raw_input":0.81,"overriden_options":{}},"z":{"raw_input":0.81,"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"random1","output":"rand"}]},"globals1":{"type":"globals"},"hsvToRgb1":{"type":"hsvToRgb","params":{"hsv":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"hsv","node":"floatToVec3_1","output":"vec3"}]},"output1":{"type":"output","inputs":[null,null,{"index":2,"inputName":"color","node":"hsvToRgb1","output":"rgb"}]},"random1":{"type":"random","params":{"seed":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"seed","node":"floatToVec2_1","output":"vec2"}]},"round1":{"type":"round","params":{"in":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"in","node":"attribute1","output":"val"}],"connection_points":{"in":[{"name":"in","type":"float"}],"out":[{"name":"val","type":"float"}]}}},"persisted_config":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-main","type":"MeshStandardMaterial","name":"/boxes/MAT/meshStandardBuilder1","color":16777215,"roughness":1,"metalness":0,"emissive":0,"envMapIntensity":1,"depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680,"fog":false},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false},"customMaterials":{"customDepthMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-customDepthMaterial","type":"MeshDepthMaterial","name":"customDepthMaterial","side":1,"depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680,"forceSinglePass":true,"depthPacking":3201},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDistanceMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-customDistanceMaterial","type":"MeshDistanceMaterial","name":"customDistanceMaterial","depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDepthDOFMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-customDepthDOFMaterial","type":"MeshDepthMaterial","name":"customDepthDOFMaterial","depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680,"depthPacking":3200},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}}}}}}},"actor1":{"type":"actor","nodes":{"add1":{"type":"add","params":{"add0":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add1":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add2":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"add0","node":"onTick1","output":"time"},{"index":1,"inputName":"add1","node":"getObjectAttribute1","output":"val"}],"connection_points":{"in":[{"name":"add0","type":"float","isArray":false},{"name":"add1","type":"float","isArray":false},{"name":"add2","type":"float","isArray":false}],"out":[{"name":"sum","type":"float","isArray":false}]}},"euler1":{"type":"euler","params":{"Euler":{"overriden_options":{}},"order":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"Euler","node":"floatToVec3_2","output":"vec3"}]},"floatToVec3_1":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}},"z":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"vec3ToFloat1","output":"x"},{"index":1,"inputName":"y","node":"sin1","output":"sin"},{"index":2,"inputName":"z","node":"vec3ToFloat1","output":"z"}]},"floatToVec3_2":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}},"z":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"multAdd1","output":"val"}]},"getObjectAttribute1":{"type":"getObjectAttribute","params":{"attribName":{"type":"string","default_value":"","options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":"id"},"defaultFloat":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"connection_points":{"in":[{"name":"Object3D","type":"Object3D","isArray":false},{"name":"attribName","type":"string","isArray":false},{"name":"defaultFloat","type":"float","isArray":false}],"out":[{"name":"val","type":"float","isArray":false}]}},"getObjectProperty1":{"type":"getObjectProperty"},"multAdd1":{"type":"multAdd","params":{"value":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"preAdd":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"mult":{"type":"float","default_value":1,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"postAdd":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"value","node":"onTick1","output":"time"}],"connection_points":{"in":[{"name":"value","type":"float","isArray":false},{"name":"preAdd","type":"float","isArray":false},{"name":"mult","type":"float","isArray":false},{"name":"postAdd","type":"float","isArray":false}],"out":[{"name":"val","type":"float","isArray":false}]}},"onTick1":{"type":"onTick"},"setObjectPosition1":{"type":"setObjectPosition","params":{"position":{"overriden_options":{}},"lerp":{"overriden_options":{}},"updateMatrix":{"overriden_options":{}}},"maxInputsCount":5,"inputs":[{"index":0,"inputName":"trigger","node":"onTick1","output":"trigger"},null,{"index":2,"inputName":"position","node":"floatToVec3_1","output":"vec3"}]},"setObjectRotation1":{"type":"setObjectRotation","maxInputsCount":5,"inputs":[{"index":0,"inputName":"trigger","node":"setObjectPosition1","output":"trigger"},null,{"index":2,"inputName":"Euler","node":"euler1","output":"Euler"}]},"sin1":{"type":"sin","params":{"angle":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"angle","node":"add1","output":"sum"}],"connection_points":{"in":[{"name":"angle","type":"float","isArray":false}],"out":[{"name":"sin","type":"float","isArray":false}]}},"vec3ToFloat1":{"type":"vec3ToFloat","params":{"vec3":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec3","node":"getObjectProperty1","output":"position"}]}},"inputs":["attribPromote1"],"persisted_config":{"variableNames":["VAR__vec3ToFloat1_vec3","VAR__floatToVec3_2_","VAR__floatToVec3_1_","VAR__euler1_Euler","VAR__euler1__1","VAR__setObjectPosition1_position"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Euler","data":{"rotation":[0,0,0,"XYZ"],"rotationOrder":"XYZ"}},{"type":"Vector3","data":[0,0,0]}],"functionNames":["getObjectProperty","globalsTime","globalsTimeDelta","getObjectAttribute","addNumber","multAdd","mathFloat_4","mathFloat_1","floatToVec3","eulerSetFromVector3","setObjectPosition","setObjectRotation"],"serializedParamConfigs":[],"eventDatas":[]}},"attribId1":{"type":"attribId","params":{"class":1,"idn":false},"inputs":["copy1"]},"attribPromote1":{"type":"attribPromote","params":{"classFrom":1,"classTo":0,"name":"id"},"inputs":["attribId1"]},"box1":{"type":"box"},"circle1":{"type":"circle","params":{"radius":6,"segments":17}},"copy1":{"type":"copy","inputs":["box1","fuse1"]},"fuse1":{"type":"fuse","inputs":["jitter1"]},"jitter1":{"type":"jitter","params":{"amount":6},"inputs":["circle1"]},"material1":{"type":"material","params":{"material":"../MAT/meshStandardBuilder1"},"inputs":["actor1"],"flags":{"display":true}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"sphere":{"type":"geo","nodes":{"MAT":{"type":"materialsNetwork","nodes":{"meshStandard1":{"type":"meshStandard","params":{"map":"../../../COP/image1","useEnvMap":true,"envMap":"../../../COP/cubeCamera1","metalness":1,"roughness":0}}}},"fuse1":{"type":"fuse","inputs":["icosahedron1"]},"icosahedron1":{"type":"icosahedron","params":{"detail":13}},"material1":{"type":"material","params":{"material":"../MAT/meshStandard1"},"inputs":["transform1"]},"pointBuilder1":{"type":"pointBuilder","nodes":{"add1":{"type":"add","params":{"add0":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add1":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add2":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"add0","node":"globals1","output":"position"},{"index":1,"inputName":"add1","node":"multScalar1","output":"val"}],"connection_points":{"in":[{"name":"add0","type":"Vector3","isArray":false},{"name":"add1","type":"Vector3","isArray":false},{"name":"add2","type":"Vector3","isArray":false}],"out":[{"name":"sum","type":"Vector3","isArray":false}]}},"globals1":{"type":"globals"},"multScalar1":{"type":"multScalar","params":{"value":{"type":"vector3","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"mult":{"type":"float","default_value":1,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"value","node":"globals1","output":"normal"},{"index":1,"inputName":"mult","node":"noiseImproved1","output":"noise"}],"connection_points":{"in":[{"name":"value","type":"Vector3","isArray":false},{"name":"mult","type":"float","isArray":false}],"out":[{"name":"val","type":"Vector3","isArray":false}]}},"noiseImproved1":{"type":"noiseImproved","params":{"position":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"amp":{"type":"float","default_value":1,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":0.04},"freq":{"type":"vector3","default_value":[1,1,1],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"offset":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"octaves":{"type":"integer","default_value":3,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"ampMult":{"type":"float","default_value":0.5,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"freqMult":{"type":"float","default_value":2,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"position","node":"globals1","output":"position"}],"connection_points":{"in":[{"name":"position","type":"Vector3","isArray":false},{"name":"amp","type":"float","isArray":false},{"name":"freq","type":"Vector3","isArray":false},{"name":"offset","type":"Vector3","isArray":false},{"name":"octaves","type":"int","isArray":false},{"name":"ampMult","type":"float","isArray":false},{"name":"freqMult","type":"float","isArray":false}],"out":[{"name":"noise","type":"float","isArray":false}]}},"output1":{"type":"output","inputs":[{"index":0,"inputName":"position","node":"add1","output":"sum"}]}},"inputs":["material1"],"flags":{"display":true},"persisted_config":{"variableNames":["v_POLY_globals1_position","v_POLY_globals1_normal","VAR__noiseImproved1_position","VAR__noiseImproved1_freq","VAR__noiseImproved1_offset","VAR__multScalar1_value","VAR__multScalar1__1","VAR__add1_add0","VAR__add1_add1","VAR__add1_add2"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]}],"functionNames":["noiseImprovedVector3","multScalarVector3","addVector"],"serializedParamConfigs":[],"attributesData":{"read":[],"write":[]}}},"transform1":{"type":"transform","params":{"t":[0,1,0]},"inputs":["fuse1"]}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}}},"params":{"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1"}},"ui":{"nodes":{"COP":{"pos":[-300,0],"nodes":{"cubeCamera1":{"pos":[-200,250]},"envMap":{"pos":[50,250]},"image1":{"pos":[-200,100]},"imageEnv":{"pos":[50,100]}}},"lights":{"pos":[-50,-200],"selection":["hemisphereLight1"],"nodes":{"hemisphereLight1":{"pos":[50,-50]},"merge1":{"pos":[100,300]},"polarTransform1":{"pos":[300,150]},"spotLight1":{"pos":[300,-50]}}},"cameras":{"pos":[-50,-100],"selection":["cameraControls1"],"nodes":{"cameraControls1":{"pos":[0,150],"nodes":{"cameraOrbitControls1":{"pos":[0,0]}}},"cubeCamera1":{"pos":[250,-50]},"merge1":{"pos":[100,350]},"perspectiveCamera1":{"pos":[0,-50]}}},"env":{"pos":[150,-400],"nodes":{"MAT":{"pos":[-250,100],"nodes":{"meshBasic1":{"pos":[-50,-100]}}},"material1":{"pos":[-50,100]},"objectProperties1":{"pos":[-50,250]},"sphere1":{"pos":[-50,-100]},"transform1":{"pos":[-50,0]}}},"boxes":{"pos":[150,-300],"nodes":{"MAT":{"pos":[-300,850],"nodes":{"meshStandardBuilder1":{"pos":[0,-100],"nodes":{"attribute1":{"pos":[-950,-200]},"floatToVec2_1":{"pos":[-600,-200]},"floatToVec3_1":{"pos":[-350,-200]},"globals1":{"pos":[-300,50]},"hsvToRgb1":{"pos":[-250,-200]},"output1":{"pos":[200,0]},"random1":{"pos":[-450,-200]},"round1":{"pos":[-800,-200]}}}}},"actor1":{"pos":[50,700],"nodes":{"add1":{"pos":[-300,100]},"euler1":{"pos":[750,300]},"floatToVec3_1":{"pos":[50,-100]},"floatToVec3_2":{"pos":[600,400]},"getObjectAttribute1":{"pos":[-450,150]},"getObjectProperty1":{"pos":[-400,-400]},"multAdd1":{"pos":[450,400]},"onTick1":{"pos":[-450,-50]},"setObjectPosition1":{"pos":[400,0]},"setObjectRotation1":{"pos":[900,0]},"sin1":{"pos":[-100,-100]},"vec3ToFloat1":{"pos":[-150,-400]}}},"attribId1":{"pos":[50,400]},"attribPromote1":{"pos":[50,550]},"box1":{"pos":[-100,50]},"circle1":{"pos":[100,-200]},"copy1":{"pos":[50,250]},"fuse1":{"pos":[100,50]},"jitter1":{"pos":[100,-50]},"material1":{"pos":[50,850]}}},"sphere":{"pos":[-50,-300],"nodes":{"MAT":{"pos":[-200,350],"nodes":{"meshStandard1":{"pos":[0,0]}}},"fuse1":{"pos":[0,100]},"icosahedron1":{"pos":[0,-50]},"material1":{"pos":[0,350]},"pointBuilder1":{"pos":[0,500],"nodes":{"add1":{"pos":[-200,0]},"globals1":{"pos":[-600,0]},"multScalar1":{"pos":[-350,100]},"noiseImproved1":{"pos":[-450,200]},"output1":{"pos":[0,0]}}},"transform1":{"pos":[0,200]}}}}},"shaders":{"/boxes/MAT/meshStandardBuilder1":{"vertex":"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphcolor_vertex>\n// removed:\n//\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n// removed:\n//\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}","fragment":"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive * POLY_emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat roughnessFactor = roughness * POLY_roughness;\n\n#ifdef USE_ROUGHNESSMAP\n\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\n\t// reads channel G, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\troughnessFactor *= texelRoughness.g;\n\n#endif\n\n\tfloat metalnessFactor = metalness * POLY_metalness;\n\n#ifdef USE_METALNESSMAP\n\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\n\t// reads channel B, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\tmetalnessFactor *= texelMetalness.b;\n\n#endif\n\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\nif(POLY_SSSModel.isActive){\n\tRE_Direct_Scattering(directLight, geometry, POLY_SSSModel, reflectedLight);\n}\n\n\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}","customDepthMaterial.vertex":"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n","customDistanceMaterial.vertex":"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}","customDistanceMaterial.fragment":"\n// INSERT DEFINES\n\n#define DISTANCE\n\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\n\t#include <alphatest_fragment>\n\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist ); // clamp to [ 0, 1 ]\n\n\tgl_FragColor = packDepthToRGBA( dist );\n\n}\n","customDepthDOFMaterial.vertex":"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthDOFMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n"}},"jsFunctionBodies":{"/boxes/actor1":"// insert defines\nclass CustomActorEvaluator extends ActorEvaluator {\n\t// insert members\n\n\t// /boxes/actor1/getObjectProperty1\n\tv_POLY_getObjectProperty1_position = computed(() => getObjectProperty(this.object3D, \"position\"));\n\n\t// /boxes/actor1/onTick1\n\tv_POLY_onTick1_time = computed(() => globalsTime());\n\tv_POLY_onTick1_delta = computed(() => globalsTimeDelta());\n\n\t// /boxes/actor1/getObjectAttribute1\n\tv_POLY_getObjectAttribute1_val = computed(() => getObjectAttribute(this.object3D, \"id\", \"float\", 0.0));\n\n\t// /boxes/actor1/vec3ToFloat1\n\tv_POLY_vec3ToFloat1_x = computed(() => VAR__vec3ToFloat1_vec3.copy(this.v_POLY_getObjectProperty1_position.value).x);\n\tv_POLY_vec3ToFloat1_z = computed(() => VAR__vec3ToFloat1_vec3.copy(this.v_POLY_getObjectProperty1_position.value).z);\n\n\t// /boxes/actor1/add1\n\tv_POLY_add1_sum = computed(() =>\n\t\taddNumber(this.v_POLY_onTick1_time.value, this.v_POLY_getObjectAttribute1_val.value, 0.0)\n\t);\n\n\t// /boxes/actor1/multAdd1\n\tv_POLY_multAdd1_val = computed(() => mathFloat_4(multAdd, this.v_POLY_onTick1_time.value, 0.0, 1.0, 0.0));\n\n\t// /boxes/actor1/sin1\n\tv_POLY_sin1_sin = computed(() => mathFloat_1(Math.sin, this.v_POLY_add1_sum.value));\n\n\t// /boxes/actor1/floatToVec3_2\n\tv_POLY_floatToVec3_2_vec3 = computed(() =>\n\t\tfloatToVec3(this.v_POLY_multAdd1_val.value, 0.0, 0.0, VAR__floatToVec3_2_)\n\t);\n\n\t// /boxes/actor1/floatToVec3_1\n\tv_POLY_floatToVec3_1_vec3 = computed(() =>\n\t\tfloatToVec3(\n\t\t\tthis.v_POLY_vec3ToFloat1_x.value,\n\t\t\tthis.v_POLY_sin1_sin.value,\n\t\t\tthis.v_POLY_vec3ToFloat1_z.value,\n\t\t\tVAR__floatToVec3_1_\n\t\t)\n\t);\n\n\t// /boxes/actor1/euler1\n\tv_POLY_euler1_Euler = computed(() =>\n\t\teulerSetFromVector3(VAR__euler1_Euler.copy(this.v_POLY_floatToVec3_2_vec3.value), 0.0, VAR__euler1__1)\n\t);\n\n\tconstructor(node, object3D) {\n\t\tsuper(node, object3D);\n\t\t// insert after constructor\n\t}\n\t// insert body\n\n\tonTick() {\n\t\tthis.onTick1();\n\t}\n\t// /boxes/actor1/onTick1\n\tonTick1() {\n\t\tthis.setObjectPosition1(0);\n\t}\n\n\t// /boxes/actor1/setObjectPosition1\n\tsetObjectPosition1() {\n\t\tsetObjectPosition(\n\t\t\tthis.object3D,\n\t\t\tVAR__setObjectPosition1_position.copy(this.v_POLY_floatToVec3_1_vec3.value),\n\t\t\t1.0,\n\t\t\ttrue\n\t\t);\n\t\tthis.setObjectRotation1(0);\n\t}\n\n\t// /boxes/actor1/setObjectRotation1\n\tsetObjectRotation1() {\n\t\tsetObjectRotation(this.object3D, this.v_POLY_euler1_Euler.value, 1.0, true);\n\t}\n}\nreturn CustomActorEvaluator;\n","/sphere/pointBuilder1":"// insert defines\n// insert members\n// insert after constructor\nconst CustomPointBuilderEvaluator = function () {\n\t// insert body\n\n\t// /sphere/pointBuilder1/globals1\n\tv_POLY_globals1_position.copy(pointContainer.position);\n\tv_POLY_globals1_normal.copy(pointContainer.normal);\n\n\t// /sphere/pointBuilder1/noiseImproved1\n\tconst v_POLY_noiseImproved1_noise = noiseImprovedVector3(\n\t\tVAR__noiseImproved1_position.copy(v_POLY_globals1_position),\n\t\t0.04,\n\t\tVAR__noiseImproved1_freq.set(1, 1, 1),\n\t\tVAR__noiseImproved1_offset.set(0, 0, 0),\n\t\t3.0,\n\t\t0.5,\n\t\t2.0\n\t);\n\n\t// /sphere/pointBuilder1/multScalar1\n\tconst v_POLY_multScalar1_val = multScalarVector3(\n\t\tVAR__multScalar1_value.copy(v_POLY_globals1_normal),\n\t\tv_POLY_noiseImproved1_noise,\n\t\tVAR__multScalar1__1\n\t);\n\n\t// /sphere/pointBuilder1/add1\n\tconst v_POLY_add1_sum = addVector(\n\t\tVAR__add1_add0.copy(v_POLY_globals1_position),\n\t\tVAR__add1_add1.copy(v_POLY_multScalar1_val),\n\t\tVAR__add1_add2.set(0, 0, 0)\n\t);\n\n\t// /sphere/pointBuilder1/output1\n\tpointContainer.position.copy(v_POLY_add1_sum);\n};\nreturn CustomPointBuilderEvaluator;\n"}}
Code editor
{"multiple_panel":{"split_ratio":0.5,"split_panel0":{"split_ratio":0.5543217692883486,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/cameras/cameras:sopGroup/perspectiveCamera1","isViewerInitLayoutData":true,"linkIndex":1,"overlayedNetwork":{"allowed":false,"displayed":false,"initLayoutData":{"camera":{"position":{"x":0,"y":0},"zoom":1},"history":{},"paramsDisplayed":false,"linkIndex":1}}}},"split_panel1":{"panelTypes":["params"],"currentPanelIndex":0,"panel_data":{"active_folder":42,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["network","params","viewer"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":53.74118310726743,"y":232.94093918758173},"zoom":1.0222221069335933},"history":{"2":{"position":{"x":53.74118310726743,"y":232.94093918758173},"zoom":1.0222221069335933}},"paramsDisplayed":false,"linkIndex":1}},"split_mode":"horizontal"},"currentNodes":["/","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":17,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}},"fullscreenPanelId":null,"saveOptions":{"createExport":false,"checkRemoteAssetsUse":true,"minimizeFilesCount":false,"compressJs":true,"createZip":false,"runPostExportCommand":false},"paramsModal":[]}
Used nodes
cop/cubeCamera;cop/envMap;cop/image;cop/imageEXR;event/cameraOrbitControls;mat/meshBasic;mat/meshStandard;mat/meshStandardBuilder;obj/copNetwork;obj/geo;sop/actor;sop/attribId;sop/attribPromote;sop/box;sop/cameraControls;sop/circle;sop/copy;sop/cubeCamera;sop/fuse;sop/hemisphereLight;sop/icosahedron;sop/jitter;sop/material;sop/materialsNetwork;sop/merge;sop/objectProperties;sop/perspectiveCamera;sop/pointBuilder;sop/polarTransform;sop/sphere;sop/spotLight;sop/transform
Used operations
Used modules
Used assemblers
GL_MESH_STANDARD;JS_ACTOR;JS_POINT_BUILDER
Used integrations
[]
Used assets
Nodes map
{"/COP":"obj/copNetwork","/COP/cubeCamera1":"cop/cubeCamera","/COP/envMap":"cop/envMap","/COP/image1":"cop/image","/COP/imageEnv":"cop/imageEXR","/lights":"obj/geo","/lights/hemisphereLight1":"sop/hemisphereLight","/lights/merge1":"sop/merge","/lights/polarTransform1":"sop/polarTransform","/lights/spotLight1":"sop/spotLight","/cameras":"obj/geo","/cameras/cameraControls1":"sop/cameraControls","/cameras/cameraControls1/cameraOrbitControls1":"event/cameraOrbitControls","/cameras/cubeCamera1":"sop/cubeCamera","/cameras/merge1":"sop/merge","/cameras/perspectiveCamera1":"sop/perspectiveCamera","/env":"obj/geo","/env/MAT":"sop/materialsNetwork","/env/MAT/meshBasic1":"mat/meshBasic","/env/material1":"sop/material","/env/objectProperties1":"sop/objectProperties","/env/sphere1":"sop/sphere","/env/transform1":"sop/transform","/boxes":"obj/geo","/boxes/MAT":"sop/materialsNetwork","/boxes/MAT/meshStandardBuilder1":"mat/meshStandardBuilder","/boxes/actor1":"sop/actor","/boxes/attribId1":"sop/attribId","/boxes/attribPromote1":"sop/attribPromote","/boxes/box1":"sop/box","/boxes/circle1":"sop/circle","/boxes/copy1":"sop/copy","/boxes/fuse1":"sop/fuse","/boxes/jitter1":"sop/jitter","/boxes/material1":"sop/material","/sphere":"obj/geo","/sphere/MAT":"sop/materialsNetwork","/sphere/MAT/meshStandard1":"mat/meshStandard","/sphere/fuse1":"sop/fuse","/sphere/icosahedron1":"sop/icosahedron","/sphere/material1":"sop/material","/sphere/pointBuilder1":"sop/pointBuilder","/sphere/transform1":"sop/transform"}
Js version
Editor version
Engine version
Name
*
Code
{"properties":{"frame":0,"maxFrame":600,"maxFrameLocked":false,"realtimeState":true,"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1","versions":{"polygonjs":"1.4.51"}},"root":{"type":"root","nodes":{"COP":{"type":"copNetwork","nodes":{"cubeCamera1":{"type":"cubeCamera"},"envMap":{"type":"envMap","inputs":["imageEnv"]},"image1":{"type":"image"},"imageEnv":{"type":"imageEXR","params":{"tminFilter":true,"tmagFilter":true,"tanisotropy":true,"useRendererMaxAnisotropy":true}}}},"lights":{"type":"geo","nodes":{"hemisphereLight1":{"type":"hemisphereLight","params":{"intensity":0.52}},"merge1":{"type":"merge","inputs":["hemisphereLight1","polarTransform1"],"flags":{"display":true}},"polarTransform1":{"type":"polarTransform","params":{"center":[0,0.7,0],"latitude":25.2,"depth":3},"inputs":["spotLight1"]},"spotLight1":{"type":"spotLight","params":{"decay":0.1,"distance":10,"castShadow":true}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"cameras":{"type":"geo","nodes":{"cameraControls1":{"type":"cameraControls","nodes":{"cameraOrbitControls1":{"type":"cameraOrbitControls","params":{"target":[0.4091132566022929,0.8073451172434962,-0.30231625916320026]}}},"params":{"node":"cameraOrbitControls1"},"inputs":["perspectiveCamera1"]},"cubeCamera1":{"type":"cubeCamera"},"merge1":{"type":"merge","inputs":["cameraControls1","cubeCamera1"],"flags":{"display":true}},"perspectiveCamera1":{"type":"perspectiveCamera","params":{"position":[3.3,3.3,3.3]}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"env":{"type":"geo","nodes":{"MAT":{"type":"materialsNetwork","nodes":{"meshBasic1":{"type":"meshBasic","params":{"useMap":true,"map":"../../../COP/imageEnv","front":false}}}},"material1":{"type":"material","params":{"material":"../MAT/meshBasic1"},"inputs":["transform1"]},"objectProperties1":{"type":"objectProperties","params":{"tname":true,"name":"envObject"},"inputs":["material1"],"flags":{"display":true}},"sphere1":{"type":"sphere"},"transform1":{"type":"transform","params":{"scale":42},"inputs":["sphere1"]}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"boxes":{"type":"geo","nodes":{"MAT":{"type":"materialsNetwork","nodes":{"meshStandardBuilder1":{"type":"meshStandardBuilder","nodes":{"attribute1":{"type":"attribute","params":{"name":"id"},"maxInputsCount":0,"connection_points":{"in":[],"out":[{"name":"val","type":"float"}]}},"floatToVec2_1":{"type":"floatToVec2","params":{"x":{"overriden_options":{}},"y":{"raw_input":12,"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"round1","output":"val"}]},"floatToVec3_1":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"raw_input":0.81,"overriden_options":{}},"z":{"raw_input":0.81,"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"random1","output":"rand"}]},"globals1":{"type":"globals"},"hsvToRgb1":{"type":"hsvToRgb","params":{"hsv":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"hsv","node":"floatToVec3_1","output":"vec3"}]},"output1":{"type":"output","inputs":[null,null,{"index":2,"inputName":"color","node":"hsvToRgb1","output":"rgb"}]},"random1":{"type":"random","params":{"seed":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"seed","node":"floatToVec2_1","output":"vec2"}]},"round1":{"type":"round","params":{"in":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"in","node":"attribute1","output":"val"}],"connection_points":{"in":[{"name":"in","type":"float"}],"out":[{"name":"val","type":"float"}]}}},"persisted_config":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-main","type":"MeshStandardMaterial","name":"/boxes/MAT/meshStandardBuilder1","color":16777215,"roughness":1,"metalness":0,"emissive":0,"envMapIntensity":1,"depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680,"fog":false},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false},"customMaterials":{"customDepthMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-customDepthMaterial","type":"MeshDepthMaterial","name":"customDepthMaterial","side":1,"depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680,"forceSinglePass":true,"depthPacking":3201},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDistanceMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-customDistanceMaterial","type":"MeshDistanceMaterial","name":"customDistanceMaterial","depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDepthDOFMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/boxes/MAT/meshStandardBuilder1-customDepthDOFMaterial","type":"MeshDepthMaterial","name":"customDepthDOFMaterial","depthFunc":3,"depthTest":true,"depthWrite":true,"colorWrite":true,"stencilWrite":false,"stencilWriteMask":255,"stencilFunc":519,"stencilRef":0,"stencilFuncMask":255,"stencilFail":7680,"stencilZFail":7680,"stencilZPass":7680,"depthPacking":3200},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}}}}}}},"actor1":{"type":"actor","nodes":{"add1":{"type":"add","params":{"add0":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add1":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add2":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"add0","node":"onTick1","output":"time"},{"index":1,"inputName":"add1","node":"getObjectAttribute1","output":"val"}],"connection_points":{"in":[{"name":"add0","type":"float","isArray":false},{"name":"add1","type":"float","isArray":false},{"name":"add2","type":"float","isArray":false}],"out":[{"name":"sum","type":"float","isArray":false}]}},"euler1":{"type":"euler","params":{"Euler":{"overriden_options":{}},"order":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"Euler","node":"floatToVec3_2","output":"vec3"}]},"floatToVec3_1":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}},"z":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"vec3ToFloat1","output":"x"},{"index":1,"inputName":"y","node":"sin1","output":"sin"},{"index":2,"inputName":"z","node":"vec3ToFloat1","output":"z"}]},"floatToVec3_2":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}},"z":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"multAdd1","output":"val"}]},"getObjectAttribute1":{"type":"getObjectAttribute","params":{"attribName":{"type":"string","default_value":"","options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":"id"},"defaultFloat":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"connection_points":{"in":[{"name":"Object3D","type":"Object3D","isArray":false},{"name":"attribName","type":"string","isArray":false},{"name":"defaultFloat","type":"float","isArray":false}],"out":[{"name":"val","type":"float","isArray":false}]}},"getObjectProperty1":{"type":"getObjectProperty"},"multAdd1":{"type":"multAdd","params":{"value":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"preAdd":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"mult":{"type":"float","default_value":1,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"postAdd":{"type":"float","default_value":0,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"value","node":"onTick1","output":"time"}],"connection_points":{"in":[{"name":"value","type":"float","isArray":false},{"name":"preAdd","type":"float","isArray":false},{"name":"mult","type":"float","isArray":false},{"name":"postAdd","type":"float","isArray":false}],"out":[{"name":"val","type":"float","isArray":false}]}},"onTick1":{"type":"onTick"},"setObjectPosition1":{"type":"setObjectPosition","params":{"position":{"overriden_options":{}},"lerp":{"overriden_options":{}},"updateMatrix":{"overriden_options":{}}},"maxInputsCount":5,"inputs":[{"index":0,"inputName":"trigger","node":"onTick1","output":"trigger"},null,{"index":2,"inputName":"position","node":"floatToVec3_1","output":"vec3"}]},"setObjectRotation1":{"type":"setObjectRotation","maxInputsCount":5,"inputs":[{"index":0,"inputName":"trigger","node":"setObjectPosition1","output":"trigger"},null,{"index":2,"inputName":"Euler","node":"euler1","output":"Euler"}]},"sin1":{"type":"sin","params":{"angle":{"type":"float","default_value":0,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"angle","node":"add1","output":"sum"}],"connection_points":{"in":[{"name":"angle","type":"float","isArray":false}],"out":[{"name":"sin","type":"float","isArray":false}]}},"vec3ToFloat1":{"type":"vec3ToFloat","params":{"vec3":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec3","node":"getObjectProperty1","output":"position"}]}},"inputs":["attribPromote1"],"persisted_config":{"variableNames":["VAR__vec3ToFloat1_vec3","VAR__floatToVec3_2_","VAR__floatToVec3_1_","VAR__euler1_Euler","VAR__euler1__1","VAR__setObjectPosition1_position"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Euler","data":{"rotation":[0,0,0,"XYZ"],"rotationOrder":"XYZ"}},{"type":"Vector3","data":[0,0,0]}],"functionNames":["getObjectProperty","globalsTime","globalsTimeDelta","getObjectAttribute","addNumber","multAdd","mathFloat_4","mathFloat_1","floatToVec3","eulerSetFromVector3","setObjectPosition","setObjectRotation"],"serializedParamConfigs":[],"eventDatas":[]}},"attribId1":{"type":"attribId","params":{"class":1,"idn":false},"inputs":["copy1"]},"attribPromote1":{"type":"attribPromote","params":{"classFrom":1,"classTo":0,"name":"id"},"inputs":["attribId1"]},"box1":{"type":"box"},"circle1":{"type":"circle","params":{"radius":6,"segments":17}},"copy1":{"type":"copy","inputs":["box1","fuse1"]},"fuse1":{"type":"fuse","inputs":["jitter1"]},"jitter1":{"type":"jitter","params":{"amount":6},"inputs":["circle1"]},"material1":{"type":"material","params":{"material":"../MAT/meshStandardBuilder1"},"inputs":["actor1"],"flags":{"display":true}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"sphere":{"type":"geo","nodes":{"MAT":{"type":"materialsNetwork","nodes":{"meshStandard1":{"type":"meshStandard","params":{"map":"../../../COP/image1","useEnvMap":true,"envMap":"../../../COP/cubeCamera1","metalness":1,"roughness":0}}}},"fuse1":{"type":"fuse","inputs":["icosahedron1"]},"icosahedron1":{"type":"icosahedron","params":{"detail":13}},"material1":{"type":"material","params":{"material":"../MAT/meshStandard1"},"inputs":["transform1"]},"pointBuilder1":{"type":"pointBuilder","nodes":{"add1":{"type":"add","params":{"add0":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add1":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"add2":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"add0","node":"globals1","output":"position"},{"index":1,"inputName":"add1","node":"multScalar1","output":"val"}],"connection_points":{"in":[{"name":"add0","type":"Vector3","isArray":false},{"name":"add1","type":"Vector3","isArray":false},{"name":"add2","type":"Vector3","isArray":false}],"out":[{"name":"sum","type":"Vector3","isArray":false}]}},"globals1":{"type":"globals"},"multScalar1":{"type":"multScalar","params":{"value":{"type":"vector3","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"mult":{"type":"float","default_value":1,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"value","node":"globals1","output":"normal"},{"index":1,"inputName":"mult","node":"noiseImproved1","output":"noise"}],"connection_points":{"in":[{"name":"value","type":"Vector3","isArray":false},{"name":"mult","type":"float","isArray":false}],"out":[{"name":"val","type":"Vector3","isArray":false}]}},"noiseImproved1":{"type":"noiseImproved","params":{"position":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"amp":{"type":"float","default_value":1,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":0.04},"freq":{"type":"vector3","default_value":[1,1,1],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"offset":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"octaves":{"type":"integer","default_value":3,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"ampMult":{"type":"float","default_value":0.5,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}},"freqMult":{"type":"float","default_value":2,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"inputs":[{"index":0,"inputName":"position","node":"globals1","output":"position"}],"connection_points":{"in":[{"name":"position","type":"Vector3","isArray":false},{"name":"amp","type":"float","isArray":false},{"name":"freq","type":"Vector3","isArray":false},{"name":"offset","type":"Vector3","isArray":false},{"name":"octaves","type":"int","isArray":false},{"name":"ampMult","type":"float","isArray":false},{"name":"freqMult","type":"float","isArray":false}],"out":[{"name":"noise","type":"float","isArray":false}]}},"output1":{"type":"output","inputs":[{"index":0,"inputName":"position","node":"add1","output":"sum"}]}},"inputs":["material1"],"flags":{"display":true},"persisted_config":{"variableNames":["v_POLY_globals1_position","v_POLY_globals1_normal","VAR__noiseImproved1_position","VAR__noiseImproved1_freq","VAR__noiseImproved1_offset","VAR__multScalar1_value","VAR__multScalar1__1","VAR__add1_add0","VAR__add1_add1","VAR__add1_add2"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]}],"functionNames":["noiseImprovedVector3","multScalarVector3","addVector"],"serializedParamConfigs":[],"attributesData":{"read":[],"write":[]}}},"transform1":{"type":"transform","params":{"t":[0,1,0]},"inputs":["fuse1"]}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}}},"params":{"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1"}},"ui":{"nodes":{"COP":{"pos":[-300,0],"nodes":{"cubeCamera1":{"pos":[-200,250]},"envMap":{"pos":[50,250]},"image1":{"pos":[-200,100]},"imageEnv":{"pos":[50,100]}}},"lights":{"pos":[-50,-200],"selection":["hemisphereLight1"],"nodes":{"hemisphereLight1":{"pos":[50,-50]},"merge1":{"pos":[100,300]},"polarTransform1":{"pos":[300,150]},"spotLight1":{"pos":[300,-50]}}},"cameras":{"pos":[-50,-100],"selection":["cameraControls1"],"nodes":{"cameraControls1":{"pos":[0,150],"nodes":{"cameraOrbitControls1":{"pos":[0,0]}}},"cubeCamera1":{"pos":[250,-50]},"merge1":{"pos":[100,350]},"perspectiveCamera1":{"pos":[0,-50]}}},"env":{"pos":[150,-400],"nodes":{"MAT":{"pos":[-250,100],"nodes":{"meshBasic1":{"pos":[-50,-100]}}},"material1":{"pos":[-50,100]},"objectProperties1":{"pos":[-50,250]},"sphere1":{"pos":[-50,-100]},"transform1":{"pos":[-50,0]}}},"boxes":{"pos":[150,-300],"nodes":{"MAT":{"pos":[-300,850],"nodes":{"meshStandardBuilder1":{"pos":[0,-100],"nodes":{"attribute1":{"pos":[-950,-200]},"floatToVec2_1":{"pos":[-600,-200]},"floatToVec3_1":{"pos":[-350,-200]},"globals1":{"pos":[-300,50]},"hsvToRgb1":{"pos":[-250,-200]},"output1":{"pos":[200,0]},"random1":{"pos":[-450,-200]},"round1":{"pos":[-800,-200]}}}}},"actor1":{"pos":[50,700],"nodes":{"add1":{"pos":[-300,100]},"euler1":{"pos":[750,300]},"floatToVec3_1":{"pos":[50,-100]},"floatToVec3_2":{"pos":[600,400]},"getObjectAttribute1":{"pos":[-450,150]},"getObjectProperty1":{"pos":[-400,-400]},"multAdd1":{"pos":[450,400]},"onTick1":{"pos":[-450,-50]},"setObjectPosition1":{"pos":[400,0]},"setObjectRotation1":{"pos":[900,0]},"sin1":{"pos":[-100,-100]},"vec3ToFloat1":{"pos":[-150,-400]}}},"attribId1":{"pos":[50,400]},"attribPromote1":{"pos":[50,550]},"box1":{"pos":[-100,50]},"circle1":{"pos":[100,-200]},"copy1":{"pos":[50,250]},"fuse1":{"pos":[100,50]},"jitter1":{"pos":[100,-50]},"material1":{"pos":[50,850]}}},"sphere":{"pos":[-50,-300],"nodes":{"MAT":{"pos":[-200,350],"nodes":{"meshStandard1":{"pos":[0,0]}}},"fuse1":{"pos":[0,100]},"icosahedron1":{"pos":[0,-50]},"material1":{"pos":[0,350]},"pointBuilder1":{"pos":[0,500],"nodes":{"add1":{"pos":[-200,0]},"globals1":{"pos":[-600,0]},"multScalar1":{"pos":[-350,100]},"noiseImproved1":{"pos":[-450,200]},"output1":{"pos":[0,0]}}},"transform1":{"pos":[0,200]}}}}},"shaders":{"/boxes/MAT/meshStandardBuilder1":{"vertex":"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphcolor_vertex>\n// removed:\n//\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n// removed:\n//\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}","fragment":"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive * POLY_emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat roughnessFactor = roughness * POLY_roughness;\n\n#ifdef USE_ROUGHNESSMAP\n\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\n\t// reads channel G, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\troughnessFactor *= texelRoughness.g;\n\n#endif\n\n\tfloat metalnessFactor = metalness * POLY_metalness;\n\n#ifdef USE_METALNESSMAP\n\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\n\t// reads channel B, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\tmetalnessFactor *= texelMetalness.b;\n\n#endif\n\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\nif(POLY_SSSModel.isActive){\n\tRE_Direct_Scattering(directLight, geometry, POLY_SSSModel, reflectedLight);\n}\n\n\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}","customDepthMaterial.vertex":"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n","customDistanceMaterial.vertex":"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}","customDistanceMaterial.fragment":"\n// INSERT DEFINES\n\n#define DISTANCE\n\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\n\t#include <alphatest_fragment>\n\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist ); // clamp to [ 0, 1 ]\n\n\tgl_FragColor = packDepthToRGBA( dist );\n\n}\n","customDepthDOFMaterial.vertex":"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nattribute float id;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tv_POLY_attribute_id = float(id);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthDOFMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n// https://github.com/hughsk/glsl-hsv2rgb\n// https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl\nvec3 hsv2rgb(vec3 c) {\n\tvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n\tvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n\treturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n\n\n\n\n\n\n// /boxes/MAT/meshStandardBuilder1/attribute1\nvarying float v_POLY_attribute_id;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in GeometricContext geometry,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometry.normal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometry.viewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /boxes/MAT/meshStandardBuilder1/attribute1\n\tfloat v_POLY_attribute1_val = v_POLY_attribute_id;\n\t\n\t// /boxes/MAT/meshStandardBuilder1/round1\n\tfloat v_POLY_round1_val = sign(v_POLY_attribute1_val)*floor(abs(v_POLY_attribute1_val)+0.5);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_round1_val, 12.0);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/random1\n\tfloat v_POLY_random1_rand = rand(v_POLY_floatToVec2_1_vec2);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/floatToVec3_1\n\tvec3 v_POLY_floatToVec3_1_vec3 = vec3(v_POLY_random1_rand, 0.81, 0.81);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/hsvToRgb1\n\tvec3 v_POLY_hsvToRgb1_rgb = hsv2rgb(v_POLY_floatToVec3_1_vec3);\n\t\n\t// /boxes/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_hsvToRgb1_rgb;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n"}},"jsFunctionBodies":{"/boxes/actor1":"// insert defines\nclass CustomActorEvaluator extends ActorEvaluator {\n\t// insert members\n\n\t// /boxes/actor1/getObjectProperty1\n\tv_POLY_getObjectProperty1_position = computed(() => getObjectProperty(this.object3D, \"position\"));\n\n\t// /boxes/actor1/onTick1\n\tv_POLY_onTick1_time = computed(() => globalsTime());\n\tv_POLY_onTick1_delta = computed(() => globalsTimeDelta());\n\n\t// /boxes/actor1/getObjectAttribute1\n\tv_POLY_getObjectAttribute1_val = computed(() => getObjectAttribute(this.object3D, \"id\", \"float\", 0.0));\n\n\t// /boxes/actor1/vec3ToFloat1\n\tv_POLY_vec3ToFloat1_x = computed(() => VAR__vec3ToFloat1_vec3.copy(this.v_POLY_getObjectProperty1_position.value).x);\n\tv_POLY_vec3ToFloat1_z = computed(() => VAR__vec3ToFloat1_vec3.copy(this.v_POLY_getObjectProperty1_position.value).z);\n\n\t// /boxes/actor1/add1\n\tv_POLY_add1_sum = computed(() =>\n\t\taddNumber(this.v_POLY_onTick1_time.value, this.v_POLY_getObjectAttribute1_val.value, 0.0)\n\t);\n\n\t// /boxes/actor1/multAdd1\n\tv_POLY_multAdd1_val = computed(() => mathFloat_4(multAdd, this.v_POLY_onTick1_time.value, 0.0, 1.0, 0.0));\n\n\t// /boxes/actor1/sin1\n\tv_POLY_sin1_sin = computed(() => mathFloat_1(Math.sin, this.v_POLY_add1_sum.value));\n\n\t// /boxes/actor1/floatToVec3_2\n\tv_POLY_floatToVec3_2_vec3 = computed(() =>\n\t\tfloatToVec3(this.v_POLY_multAdd1_val.value, 0.0, 0.0, VAR__floatToVec3_2_)\n\t);\n\n\t// /boxes/actor1/floatToVec3_1\n\tv_POLY_floatToVec3_1_vec3 = computed(() =>\n\t\tfloatToVec3(\n\t\t\tthis.v_POLY_vec3ToFloat1_x.value,\n\t\t\tthis.v_POLY_sin1_sin.value,\n\t\t\tthis.v_POLY_vec3ToFloat1_z.value,\n\t\t\tVAR__floatToVec3_1_\n\t\t)\n\t);\n\n\t// /boxes/actor1/euler1\n\tv_POLY_euler1_Euler = computed(() =>\n\t\teulerSetFromVector3(VAR__euler1_Euler.copy(this.v_POLY_floatToVec3_2_vec3.value), 0.0, VAR__euler1__1)\n\t);\n\n\tconstructor(node, object3D) {\n\t\tsuper(node, object3D);\n\t\t// insert after constructor\n\t}\n\t// insert body\n\n\tonTick() {\n\t\tthis.onTick1();\n\t}\n\t// /boxes/actor1/onTick1\n\tonTick1() {\n\t\tthis.setObjectPosition1(0);\n\t}\n\n\t// /boxes/actor1/setObjectPosition1\n\tsetObjectPosition1() {\n\t\tsetObjectPosition(\n\t\t\tthis.object3D,\n\t\t\tVAR__setObjectPosition1_position.copy(this.v_POLY_floatToVec3_1_vec3.value),\n\t\t\t1.0,\n\t\t\ttrue\n\t\t);\n\t\tthis.setObjectRotation1(0);\n\t}\n\n\t// /boxes/actor1/setObjectRotation1\n\tsetObjectRotation1() {\n\t\tsetObjectRotation(this.object3D, this.v_POLY_euler1_Euler.value, 1.0, true);\n\t}\n}\nreturn CustomActorEvaluator;\n","/sphere/pointBuilder1":"// insert defines\n// insert members\n// insert after constructor\nconst CustomPointBuilderEvaluator = function () {\n\t// insert body\n\n\t// /sphere/pointBuilder1/globals1\n\tv_POLY_globals1_position.copy(pointContainer.position);\n\tv_POLY_globals1_normal.copy(pointContainer.normal);\n\n\t// /sphere/pointBuilder1/noiseImproved1\n\tconst v_POLY_noiseImproved1_noise = noiseImprovedVector3(\n\t\tVAR__noiseImproved1_position.copy(v_POLY_globals1_position),\n\t\t0.04,\n\t\tVAR__noiseImproved1_freq.set(1, 1, 1),\n\t\tVAR__noiseImproved1_offset.set(0, 0, 0),\n\t\t3.0,\n\t\t0.5,\n\t\t2.0\n\t);\n\n\t// /sphere/pointBuilder1/multScalar1\n\tconst v_POLY_multScalar1_val = multScalarVector3(\n\t\tVAR__multScalar1_value.copy(v_POLY_globals1_normal),\n\t\tv_POLY_noiseImproved1_noise,\n\t\tVAR__multScalar1__1\n\t);\n\n\t// /sphere/pointBuilder1/add1\n\tconst v_POLY_add1_sum = addVector(\n\t\tVAR__add1_add0.copy(v_POLY_globals1_position),\n\t\tVAR__add1_add1.copy(v_POLY_multScalar1_val),\n\t\tVAR__add1_add2.set(0, 0, 0)\n\t);\n\n\t// /sphere/pointBuilder1/output1\n\tpointContainer.position.copy(v_POLY_add1_sum);\n};\nreturn CustomPointBuilderEvaluator;\n"}}
Code editor
{"multiple_panel":{"split_ratio":0.5,"split_panel0":{"split_ratio":0.5543217692883486,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/cameras/cameras:sopGroup/perspectiveCamera1","isViewerInitLayoutData":true,"linkIndex":1,"overlayedNetwork":{"allowed":false,"displayed":false,"initLayoutData":{"camera":{"position":{"x":0,"y":0},"zoom":1},"history":{},"paramsDisplayed":false,"linkIndex":1}}}},"split_panel1":{"panelTypes":["params"],"currentPanelIndex":0,"panel_data":{"active_folder":42,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["network","params","viewer"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":53.74118310726743,"y":232.94093918758173},"zoom":1.0222221069335933},"history":{"2":{"position":{"x":53.74118310726743,"y":232.94093918758173},"zoom":1.0222221069335933}},"paramsDisplayed":false,"linkIndex":1}},"split_mode":"horizontal"},"currentNodes":["/","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":17,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}},"fullscreenPanelId":null,"saveOptions":{"createExport":false,"checkRemoteAssetsUse":true,"minimizeFilesCount":false,"compressJs":true,"createZip":false,"runPostExportCommand":false},"paramsModal":[]}
Used nodes
cop/cubeCamera;cop/envMap;cop/image;cop/imageEXR;event/cameraOrbitControls;mat/meshBasic;mat/meshStandard;mat/meshStandardBuilder;obj/copNetwork;obj/geo;sop/actor;sop/attribId;sop/attribPromote;sop/box;sop/cameraControls;sop/circle;sop/copy;sop/cubeCamera;sop/fuse;sop/hemisphereLight;sop/icosahedron;sop/jitter;sop/material;sop/materialsNetwork;sop/merge;sop/objectProperties;sop/perspectiveCamera;sop/pointBuilder;sop/polarTransform;sop/sphere;sop/spotLight;sop/transform
Used operations
Used modules
Used assemblers
GL_MESH_STANDARD;JS_ACTOR;JS_POINT_BUILDER
Used integrations
[]
Used assets
Nodes map
{"/COP":"obj/copNetwork","/COP/cubeCamera1":"cop/cubeCamera","/COP/envMap":"cop/envMap","/COP/image1":"cop/image","/COP/imageEnv":"cop/imageEXR","/lights":"obj/geo","/lights/hemisphereLight1":"sop/hemisphereLight","/lights/merge1":"sop/merge","/lights/polarTransform1":"sop/polarTransform","/lights/spotLight1":"sop/spotLight","/cameras":"obj/geo","/cameras/cameraControls1":"sop/cameraControls","/cameras/cameraControls1/cameraOrbitControls1":"event/cameraOrbitControls","/cameras/cubeCamera1":"sop/cubeCamera","/cameras/merge1":"sop/merge","/cameras/perspectiveCamera1":"sop/perspectiveCamera","/env":"obj/geo","/env/MAT":"sop/materialsNetwork","/env/MAT/meshBasic1":"mat/meshBasic","/env/material1":"sop/material","/env/objectProperties1":"sop/objectProperties","/env/sphere1":"sop/sphere","/env/transform1":"sop/transform","/boxes":"obj/geo","/boxes/MAT":"sop/materialsNetwork","/boxes/MAT/meshStandardBuilder1":"mat/meshStandardBuilder","/boxes/actor1":"sop/actor","/boxes/attribId1":"sop/attribId","/boxes/attribPromote1":"sop/attribPromote","/boxes/box1":"sop/box","/boxes/circle1":"sop/circle","/boxes/copy1":"sop/copy","/boxes/fuse1":"sop/fuse","/boxes/jitter1":"sop/jitter","/boxes/material1":"sop/material","/sphere":"obj/geo","/sphere/MAT":"sop/materialsNetwork","/sphere/MAT/meshStandard1":"mat/meshStandard","/sphere/fuse1":"sop/fuse","/sphere/icosahedron1":"sop/icosahedron","/sphere/material1":"sop/material","/sphere/pointBuilder1":"sop/pointBuilder","/sphere/transform1":"sop/transform"}
Js version
Editor version
Engine version
Logout
0%
There was a problem displaying your scene:
view scene source