Name
*
Code
{"properties":{"frame":0,"maxFrame":5824,"maxFrameLocked":false,"realtimeState":true,"mainCameraPath":"/O_YRTEMOEG_O_GEOMETRY_O/O_YRTEMOEG_O_GEOMETRY_O:sopGroup/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O","versions":{"polygonjs":"1.4.6"}},"root":{"type":"root","nodes":{"O_ENECS_O_SCENE_O":{"type":"scene","params":{"backgroundMode":0,"bgColor":{"raw_input":[1,1,1],"overriden_options":{"conversion":"no conversion"}},"bgTexture":"../O_NOITISOPMOC_O_COMPOSITION_O/O_ROLOC_ETIHW_O_WHITE_COLOR_O","useFog":1,"fogType":0,"fogColor":{"raw_input":[0,0.958,0.487],"overriden_options":{"conversion":"sRGB -> linear"}},"fogNear":0,"fogFar":256,"fogDensity":0}},"O_YRTEMOEG_O_GEOMETRY_O":{"type":"geo","nodes":{"O_XOB_O_BOX_O":{"type":"box"},"O_EDIWIDBUS_O_SUBDIWIDE_O":{"type":"subdivide","params":{"subdivisions":4},"inputs":["O_XOB_O_BOX_O"]},"O_EREHPS_O_SPHERE_O":{"type":"sphere","params":{"radius":".5","resolution":[64,64]}},"O_YAR_O_RAY_O":{"type":"ray","params":{"mode":1,"direction":[1,1,1]},"inputs":["O_EDIWIDBUS_O_SUBDIWIDE_O","O_EREHPS_O_SPHERE_O"]},"O_SLAMRON_O_NORMALS_O":{"type":"normals","params":{"x":0.35},"inputs":["O_EGREM_O_MERGE_O"]},"O_YLPA_LAIRETAM_O_MATERIAL_APLY_O":{"type":"material","params":{"material":"../O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O"},"inputs":["O_SLAMRON_O_NORMALS_O"]},"O_TEN_LAIRETAM_O_MATERIAL_NET_O":{"type":"materialsNetwork","nodes":{"O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":{"type":"meshStandardBuilder","nodes":{"O_SLABOLG_O_GLOBALS_O":{"type":"globals"},"O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O":{"type":"normalize","params":{"in":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_ETAGEN_O_NEGATE_O","output":"val"}],"connection_points":{"in":[{"name":"in","type":"vec3"}],"out":[{"name":"normalized","type":"vec3"}]}},"O_TUPTUO_O_OUTPUT_O":{"type":"output","inputs":[null,null,{"index":2,"inputName":"color","node":"O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O","output":"vec3"}]},"O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O":{"type":"normalize","params":{"in":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_SLABOLG_O_GLOBALS_O","output":"normal"}],"connection_points":{"in":[{"name":"in","type":"vec3"}],"out":[{"name":"normalized","type":"vec3"}]}},"O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O":{"type":"dot","params":{"vec0":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}},"vec1":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"vec0","node":"O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O","output":"normalized"},{"index":1,"inputName":"vec1","node":"O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O","output":"normalized"}],"connection_points":{"in":[{"name":"vec0","type":"vec3"},{"name":"vec1","type":"vec3"}],"out":[{"name":"val","type":"float"}]}},"O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}},"z":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"O_1_LUN_O_NUL_1_O","output":"val"},{"index":1,"inputName":"y","node":"O_1_LUN_O_NUL_1_O","output":"val"},{"index":2,"inputName":"z","node":"O_1_LUN_O_NUL_1_O","output":"val"}]},"O_1_LUN_O_NUL_1_O":{"type":"null","params":{"in":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_1_0_OT_TIF_O_FIT_TO_0_1_O","output":"val"}],"connection_points":{"in":[{"name":"in","type":"float"}],"out":[{"name":"val","type":"float"}]}},"O_ETAGEN_O_NEGATE_O":{"type":"negate","params":{"in":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_SLABOLG_O_GLOBALS_O","output":"cameraPosition"}],"connection_points":{"in":[{"name":"in","type":"vec3"}],"out":[{"name":"val","type":"vec3"}]}},"O_1_0_OT_TIF_O_FIT_TO_0_1_O":{"type":"fitTo01","params":{"val":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}},"srcMin":{"type":"float","default_value":0,"options":{"spare":true,"editable":true},"raw_input":0.0333},"srcMax":{"type":"float","default_value":1,"options":{"spare":true,"editable":true}}},"inputs":[{"index":0,"inputName":"val","node":"O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O","output":"val"}],"connection_points":{"in":[{"name":"val","type":"float"},{"name":"srcMin","type":"float"},{"name":"srcMax","type":"float"}],"out":[{"name":"val","type":"float"}]}},"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O":{"type":"divide","params":{"div0":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":168},"div1":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":256}},"connection_points":{"in":[{"name":"div0","type":"float"},{"name":"div1","type":"float"}],"out":[{"name":"divide","type":"float"}]}},"O_TOOR_O_ROOT_O":{"type":"divide","params":{"div0":{"type":"float","default_value":1,"options":{"spare":true,"editable":false},"raw_input":4.69140625,"overriden_options":{}},"div1":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":19.48046875}},"inputs":[{"index":0,"inputName":"div0","node":"O_LEWEL_REWOP_O_POWER_LEWEL_O","output":"divide"}],"connection_points":{"in":[{"name":"div0","type":"float"},{"name":"div1","type":"float"}],"out":[{"name":"divide","type":"float"}]}},"O_LEWEL_REWOP_O_POWER_LEWEL_O":{"type":"divide","params":{"div0":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":1201},"div1":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":256}},"connection_points":{"in":[{"name":"div0","type":"float"},{"name":"div1","type":"float"}],"out":[{"name":"divide","type":"float"}]}},"O_REWOP_O_POWER_O":{"type":"pow","params":{"x":{"type":"float","default_value":0,"options":{"spare":true,"editable":false},"overriden_options":{}},"y":{"type":"float","default_value":0,"options":{"spare":true,"editable":false},"raw_input":0.5,"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"O_1_0_OT_TIF_O_FIT_TO_0_1_O","output":"val"},{"index":1,"inputName":"y","node":"O_TOOR_O_ROOT_O","output":"divide"}],"connection_points":{"in":[{"name":"x","type":"float"},{"name":"y","type":"float"}],"out":[{"name":"val","type":"float"}]}},"O_YLPITLUM_O_MULTIPLY_O":{"type":"mult","params":{"mult0":{"type":"float","default_value":1,"options":{"spare":true,"editable":false}},"mult1":{"type":"float","default_value":1,"options":{"spare":true,"editable":false}},"mult2":{"type":"float","default_value":1,"options":{"spare":true,"editable":true}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"mult0","node":"O_REWOP_O_POWER_O","output":"val"},{"index":1,"inputName":"mult1","node":"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O","output":"divide"}],"connection_points":{"in":[{"name":"mult0","type":"float"},{"name":"mult1","type":"float"},{"name":"mult2","type":"float"}],"out":[{"name":"product","type":"float"}]}},"O_DDA_O_ADD_O":{"type":"add","params":{"add0":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}},"add1":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}},"add2":{"type":"float","default_value":0,"options":{"spare":true,"editable":true}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"add0","node":"O_YLPITLUM_O_MULTIPLY_O","output":"product"},{"index":1,"inputName":"add1","node":"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O","output":"divide"}],"connection_points":{"in":[{"name":"add0","type":"float"},{"name":"add1","type":"float"},{"name":"add2","type":"float"}],"out":[{"name":"sum","type":"float"}]}}},"params":{"emissive":{"raw_input":[1,1,1],"overriden_options":{"conversion":"no conversion"}},"emissiveIntensity":0,"roughness":0,"doubleSided":1,"shadowFront":0},"persisted_config":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-main","type":"MeshStandardMaterial","name":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O","color":16711422,"roughness":0,"metalness":0,"emissive":16711422,"envMapIntensity":1,"side":2,"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":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-customDepthMaterial","type":"MeshDepthMaterial","name":"customDepthMaterial","side":2,"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":3201},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDistanceMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-customDistanceMaterial","type":"MeshDistanceMaterial","name":"customDistanceMaterial","side":2,"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":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-customDepthDOFMaterial","type":"MeshDepthMaterial","name":"customDepthDOFMaterial","side":2,"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}}}}},"O_PACTAM_HSEM_O_MESH_MATCAP_O":{"type":"meshMatcap","params":{"useMatcapMap":1,"matcapMap":"../O_NOITISOPMOC_O_COMPOSITION_O/O_EGAMI_O_IMAGE_O","doubleSided":1}},"O_NOITISOPMOC_O_COMPOSITION_O":{"type":"copNetwork","nodes":{"O_ROLOC_ETIHW_O_WHITE_COLOR_O":{"type":"color"},"O_ROLOC_ETIHWNON_O_NONWHITE_COLOR_O":{"type":"color","params":{"color":[0,0,0],"alpha":0}},"O_OEDIW_O_WIDEO_O":{"type":"video","params":{"urlsCount":1,"url1":"https://tbpchan.cz/cute/src/1673734876465.mp4"}},"O_EGAMI_O_IMAGE_O":{"type":"image","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/textures/resources/artvee.com/Bouquet-of-Flowers-in-a-Blue-Porcelain-Vase-by-Anne-Vallayer-Coster.jpg","tencoding":1,"tminFilter":1,"tmagFilter":1,"tanisotropy":1,"useRendererMaxAnisotropy":1}}}},"O_EDOC_O_CODE_O":{"type":"code","params":{"vertex":"\nvarying vec3 vWorldPosition;\nprecision highp float;\nvarying vec3 fNormal;\nvarying vec3 fPosition;\nvoid main() {\n\n\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\tvWorldPosition = worldPosition.xyz;\n\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n}","fragment":"precision highp float;\nprecision highp int;\n\nvarying vec3 fPosition;\nvarying vec3 fNormal;\n// https://madebyevan.com/shaders/grid/\nvarying vec3 vWorldPosition;\n\nvoid main() {\n\n\t// Pick a coordinate to visualize in a grid\n\tconst float pi = 4.*atan(1.);\n\tconst float scale = 10.0;\n\tvec2 coord = vec2(length(5.0 * vWorldPosition.xz), atan(5.0 * vWorldPosition.x, 5.0 * vWorldPosition.z) * scale / pi);\n\n\t// Handling the wrap-around is tricky in this case. The function atan()\n\t// is not continuous and jumps when it wraps from -pi to pi. The screen-\n\t// space partial derivative will be huge along that boundary. To avoid\n\t// this, compute another coordinate that places the jump at a different\n\t// place, then use the coordinate where the jump is farther away.\n\t//\n\t// When doing this, make sure to always evaluate both fwidth() calls even\n\t// though we only use one. All fragment shader threads in the thread group\n\t// actually share a single instruction pointer, so threads that diverge\n\t// down different conditional branches actually cause both branches to be\n\t// serialized one after the other. Calling fwidth() from a thread next to\n\t// an inactive thread ends up reading inactive registers with old values\n\t// in them and you get an undefined value.\n\t//\n\t// The conditional uses +/-scale/2 since coord.y has a range of +/-scale.\n\t// The jump is at +/-scale for coord and at 0 for wrapped.\n\tvec2 wrapped = vec2(coord.x, fract(coord.y / (2.0 * scale)) * (2.0 * scale));\n\tvec2 coordWidth = fwidth(coord);\n\tvec2 wrappedWidth = fwidth(wrapped);\n\tvec2 width = coord.y < -scale * 0.5 || coord.y > scale * 0.5 ? wrappedWidth : coordWidth;\n\n\t// Compute anti-aliased world-space grid lines\n\tvec2 grid = abs(fract(coord - 0.5) - 0.5) / width;\n\tfloat line = min(grid.x, grid.y);\n\n\t// Just visualize the grid lines directly\n\tfloat color = 1.0 - min(line, 1.0);\n\n\t// Apply gamma correction\n\tcolor = pow(color, 1. / 2.2);\n\tgl_FragColor = vec4(vec3(color), 1.0);\n}\n"}}}},"O_ENALP_O_PLANE_O":{"type":"plane","params":{"direction":[0,0,-1],"center":[0,0,".5"]}},"O_EGREM_O_MERGE_O":{"type":"merge","inputs":["O_ENALP_O_PLANE_O","O_YAR_O_RAY_O"]},"O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O":{"type":"ambientLight"},"O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O":{"type":"cameraControls","nodes":{"O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O":{"type":"cameraOrbitControls","params":{"tdamping":0,"damping":0,"maxDistance":256}}},"params":{"node":"O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O"},"inputs":["O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O"]},"O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O":{"type":"cameraRenderScene","params":{"node":"../../O_ENECS_O_SCENE_O"},"inputs":["O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O"],"flags":{"bypass":true}},"O_EGREM_LA_O_AL_MERGE_O":{"type":"merge","params":{"inputsCount":3},"maxInputsCount":3,"inputs":["O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O","O_YLPA_LAIRETAM_O_MATERIAL_APLY_O","O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O"],"flags":{"display":true}},"O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O":{"type":"orthographicCamera","params":{"near":0,"far":256,"position":[0,0,-1]}}},"params":{"matrixAutoUpdate":1,"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":"{}"}}},"flags":{"display":true}}},"params":{"bgColor":{"raw_input":[1,1,1],"overriden_options":{"conversion":"no conversion"}},"mainCameraPath":"/O_YRTEMOEG_O_GEOMETRY_O/O_YRTEMOEG_O_GEOMETRY_O:sopGroup/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O","fogType":0}},"ui":{"nodes":{"O_ENECS_O_SCENE_O":{"pos":[-50,-150]},"O_YRTEMOEG_O_GEOMETRY_O":{"pos":[-50,-250],"selection":["O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O"],"nodes":{"O_XOB_O_BOX_O":{"pos":[0,-50]},"O_EDIWIDBUS_O_SUBDIWIDE_O":{"pos":[0,50]},"O_EREHPS_O_SPHERE_O":{"pos":[250,100]},"O_YAR_O_RAY_O":{"pos":[0,150]},"O_SLAMRON_O_NORMALS_O":{"pos":[0,350]},"O_YLPA_LAIRETAM_O_MATERIAL_APLY_O":{"pos":[0,450]},"O_TEN_LAIRETAM_O_MATERIAL_NET_O":{"pos":[0,600],"selection":["O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O"],"nodes":{"O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":{"pos":[0,-350],"nodes":{"O_SLABOLG_O_GLOBALS_O":{"pos":[-150,-150]},"O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O":{"pos":[50,-450]},"O_TUPTUO_O_OUTPUT_O":{"pos":[850,-1600]},"O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O":{"pos":[-50,-350]},"O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O":{"pos":[150,-550]},"O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O":{"pos":[750,-1400]},"O_1_LUN_O_NUL_1_O":{"pos":[550,-900]},"O_ETAGEN_O_NEGATE_O":{"pos":[-50,-250]},"O_1_0_OT_TIF_O_FIT_TO_0_1_O":{"pos":[250,-650]},"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O":{"pos":[350,-1000]},"O_TOOR_O_ROOT_O":{"pos":[250,-800]},"O_LEWEL_REWOP_O_POWER_LEWEL_O":{"pos":[150,-700]},"O_REWOP_O_POWER_O":{"pos":[350,-900]},"O_YLPITLUM_O_MULTIPLY_O":{"pos":[450,-1100]},"O_DDA_O_ADD_O":{"pos":[550,-1200]}}},"O_PACTAM_HSEM_O_MESH_MATCAP_O":{"pos":[0,-200]},"O_NOITISOPMOC_O_COMPOSITION_O":{"pos":[0,-450],"nodes":{"O_ROLOC_ETIHW_O_WHITE_COLOR_O":{"pos":[0,-100]},"O_ROLOC_ETIHWNON_O_NONWHITE_COLOR_O":{"pos":[0,0]},"O_OEDIW_O_WIDEO_O":{"pos":[0,-300]},"O_EGAMI_O_IMAGE_O":{"pos":[0,-200]}}},"O_EDOC_O_CODE_O":{"pos":[0,-550]}}},"O_ENALP_O_PLANE_O":{"pos":[-250,150]},"O_EGREM_O_MERGE_O":{"pos":[0,250]},"O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O":{"pos":[-700,550]},"O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O":{"pos":[-500,350],"nodes":{"O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O":{"pos":[0,0]}}},"O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O":{"pos":[-500,450]},"O_EGREM_LA_O_AL_MERGE_O":{"pos":[-250,700]},"O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O":{"pos":[-500,250]}}}}},"shaders":{"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":{"vertex":"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <uv2_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#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 <uv2_vertex>\n\t#include <color_vertex>\n\n\n\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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 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 SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\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_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_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 <bsdfs>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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"}}}
Code editor
{"multiple_panel":{"split_ratio":0.3202380952380952,"split_panel0":{"split_ratio":0.4457382997630332,"split_panel0":{"split_ratio":0.2703672466856061,"split_panel0":{"panelTypes":["performance"],"currentPanelIndex":0,"panel_data":{}},"split_panel1":{"panelTypes":["spreadsheet"],"currentPanelIndex":0,"panel_data":{"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["paramsStack","params"],"currentPanelIndex":1,"panel_data":{"active_folder":337,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"split_ratio":0.5199579831932774,"split_panel0":{"split_ratio":0.40189943720379145,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/O_YRTEMOEG_O_GEOMETRY_O/O_YRTEMOEG_O_GEOMETRY_O:sopGroup/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O","isViewerInitLayoutData":true,"linkIndex":1,"overlayedNetwork":{"allowed":false,"displayed":true,"initLayoutData":{"camera":{"position":{"x":0,"y":-600},"zoom":1},"history":{"2":{"position":{"x":50,"y":350},"zoom":1},"36":{"position":{"x":100,"y":-125},"zoom":1},"63":{"position":{"x":0,"y":-600},"zoom":1},"89":{"position":{"x":-100,"y":-200},"zoom":1},"116":{"position":{"x":100,"y":-25},"zoom":1},"119":{"position":{"x":-100,"y":-200},"zoom":1},"142":{"position":{"x":75,"y":-175},"zoom":1},"145":{"position":{"x":-175,"y":-125},"zoom":1},"172":{"position":{"x":100,"y":-125},"zoom":1},"198":{"position":{"x":0,"y":-50},"zoom":1},"202":{"position":{"x":0,"y":450},"zoom":1},"213":{"position":{"x":0,"y":0},"zoom":1},"246":{"position":{"x":0,"y":0},"zoom":1},"247":{"position":{"x":0,"y":0},"zoom":1},"286":{"position":{"x":0,"y":0},"zoom":1},"288":{"position":{"x":0,"y":0},"zoom":1},"311":{"position":{"x":0,"y":350},"zoom":1},"346":{"position":{"x":-100,"y":225},"zoom":1},"351":{"position":{"x":100,"y":300},"zoom":1},"368":{"position":{"x":0,"y":0},"zoom":1},"411":{"position":{"x":0,"y":0},"zoom":1},"414":{"position":{"x":0,"y":150},"zoom":1},"615":{"position":{"x":0,"y":0},"zoom":1},"631":{"position":{"x":0,"y":0},"zoom":1},"641":{"position":{"x":0,"y":0},"zoom":1},"693":{"position":{"x":0,"y":0},"zoom":1},"760":{"position":{"x":0,"y":150},"zoom":1},"780":{"position":{"x":0,"y":0},"zoom":1},"795":{"position":{"x":300,"y":0},"zoom":1},"856":{"position":{"x":0,"y":0},"zoom":1},"877":{"position":{"x":0,"y":0},"zoom":1},"899":{"position":{"x":0,"y":0},"zoom":1},"998":{"position":{"x":0,"y":0},"zoom":1},"1187":{"position":{"x":0,"y":0},"zoom":1},"1369":{"position":{"x":0,"y":0},"zoom":1},"1433":{"position":{"x":0,"y":0},"zoom":1},"1477":{"position":{"x":0,"y":0},"zoom":1},"1480":{"position":{"x":300,"y":0},"zoom":1},"1611":{"position":{"x":0,"y":0},"zoom":1},"1628":{"position":{"x":0,"y":0},"zoom":1},"1772":{"position":{"x":0,"y":0},"zoom":1},"1902":{"position":{"x":0,"y":0},"zoom":1},"2176":{"position":{"x":0,"y":0},"zoom":1},"2286":{"position":{"x":0,"y":0},"zoom":1}},"paramsDisplayed":false,"linkIndex":1}}}},"split_panel1":{"panelTypes":["network"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":194.54297407912662,"y":-316.23465211459813},"zoom":0.9162500000000013},"history":{"2":{"position":{"x":-5.067837852970641,"y":146.72568719735503},"zoom":0.925749877929689},"36":{"position":{"x":-126.48296954756476,"y":-76.87565448150615},"zoom":1.039444641113281},"62":{"position":{"x":182.81036834924942,"y":-415.82537517053237},"zoom":0.9162500000000013},"63":{"position":{"x":194.54297407912662,"y":-316.23465211459813},"zoom":0.9162500000000013},"89":{"position":{"x":-100,"y":-200},"zoom":1.1512499999999999},"116":{"position":{"x":100,"y":-25},"zoom":0.9162500000000013},"119":{"position":{"x":-100,"y":-200},"zoom":0.6852500000000011},"142":{"position":{"x":131.48477317057828,"y":-416.8989492229285},"zoom":0.691},"172":{"position":{"x":-178.5407154623221,"y":-124.3635643849423},"zoom":1.039444641113281},"202":{"position":{"x":5.4570259208731,"y":284.9249658935883},"zoom":0.9162500000000013},"213":{"position":{"x":0,"y":0},"zoom":1.2884446411132804},"246":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"247":{"position":{"x":-70.94133697135051,"y":5.457025920873116},"zoom":0.9162500000000013},"286":{"position":{"x":-160.0272851296043,"y":5.354706684857064},"zoom":0.9162500000000013},"288":{"position":{"x":-405.7397065710843,"y":771.8592956547157},"zoom":1.046250000000002},"311":{"position":{"x":0,"y":350},"zoom":0.9162500000000013},"346":{"position":{"x":-100,"y":225},"zoom":0.9162500000000013},"351":{"position":{"x":-58.62831858407081,"y":294.69026548672565},"zoom":0.9950000000000004},"368":{"position":{"x":-238.29986962952114,"y":210.6373934517798},"zoom":0.564147082492068},"411":{"position":{"x":-32.7421555252387,"y":177.3533424283763},"zoom":0.9162500000000013},"414":{"position":{"x":0,"y":150},"zoom":0.9162500000000013},"631":{"position":{"x":-44.29967426710098,"y":-39.95656894679696},"zoom":1.1512499999999999},"641":{"position":{"x":-169.3833732762781,"y":25.02540305927687},"zoom":0.566111206054687},"760":{"position":{"x":0,"y":150},"zoom":1.1512499999999999},"795":{"position":{"x":300,"y":0},"zoom":0.9162500000000013},"856":{"position":{"x":0,"y":0},"zoom":0.108888916015625},"1187":{"position":{"x":-8.865248226950344,"y":-61.17021276595737},"zoom":1.4100000000000017},"1369":{"position":{"x":-348.1344710380966,"y":745.8330972950005},"zoom":1.1512499999999999},"1433":{"position":{"x":0,"y":0},"zoom":1.039444641113281},"1477":{"position":{"x":0,"y":0},"zoom":1.0532498779296893},"1480":{"position":{"x":666.3716814159293,"y":26.548672566371685},"zoom":1.1299999999999997},"1611":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"1628":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"1772":{"position":{"x":-61.51288445552788,"y":-25.76891105569411},"zoom":1.5037499999999993},"1902":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"2168":{"position":{"x":-32.7421555252387,"y":177.3533424283763},"zoom":0.9162500000000013},"2176":{"position":{"x":0,"y":0},"zoom":1.1299999999999997},"2286":{"position":{"x":0,"y":0},"zoom":1.1299999999999997}},"paramsDisplayed":false,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"split_ratio":0.4445534656398104,"split_panel0":{"split_ratio":0.2679998224431818,"split_panel0":{"panelTypes":["performance"],"currentPanelIndex":0,"panel_data":{}},"split_panel1":{"panelTypes":["spreadsheet"],"currentPanelIndex":0,"panel_data":{"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["params","paramsStack"],"currentPanelIndex":0,"panel_data":{"active_folder":291,"linkIndex":1}},"split_mode":"vertical"},"split_mode":"horizontal"},"split_mode":"horizontal"},"currentNodes":["/O_YRTEMOEG_O_GEOMETRY_O","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O","/O_YRTEMOEG_O_GEOMETRY_O"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":19,"2":-1,"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/color;cop/image;cop/video;event/cameraOrbitControls;mat/code;mat/copNetwork;mat/meshMatcap;mat/meshStandardBuilder;obj/geo;obj/scene;sop/ambientLight;sop/box;sop/cameraControls;sop/cameraRenderScene;sop/material;sop/materialsNetwork;sop/merge;sop/normals;sop/orthographicCamera;sop/plane;sop/ray;sop/sphere;sop/subdivide
Used operations
Used modules
Used assemblers
GL_MESH_STANDARD
Used integrations
[]
Used assets
Nodes map
{"/O_ENECS_O_SCENE_O":"obj/scene","/O_YRTEMOEG_O_GEOMETRY_O":"obj/geo","/O_YRTEMOEG_O_GEOMETRY_O/O_XOB_O_BOX_O":"sop/box","/O_YRTEMOEG_O_GEOMETRY_O/O_EDIWIDBUS_O_SUBDIWIDE_O":"sop/subdivide","/O_YRTEMOEG_O_GEOMETRY_O/O_EREHPS_O_SPHERE_O":"sop/sphere","/O_YRTEMOEG_O_GEOMETRY_O/O_YAR_O_RAY_O":"sop/ray","/O_YRTEMOEG_O_GEOMETRY_O/O_SLAMRON_O_NORMALS_O":"sop/normals","/O_YRTEMOEG_O_GEOMETRY_O/O_YLPA_LAIRETAM_O_MATERIAL_APLY_O":"sop/material","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O":"sop/materialsNetwork","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":"mat/meshStandardBuilder","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_PACTAM_HSEM_O_MESH_MATCAP_O":"mat/meshMatcap","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O":"mat/copNetwork","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_ROLOC_ETIHW_O_WHITE_COLOR_O":"cop/color","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_ROLOC_ETIHWNON_O_NONWHITE_COLOR_O":"cop/color","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_OEDIW_O_WIDEO_O":"cop/video","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_EGAMI_O_IMAGE_O":"cop/image","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_EDOC_O_CODE_O":"mat/code","/O_YRTEMOEG_O_GEOMETRY_O/O_ENALP_O_PLANE_O":"sop/plane","/O_YRTEMOEG_O_GEOMETRY_O/O_EGREM_O_MERGE_O":"sop/merge","/O_YRTEMOEG_O_GEOMETRY_O/O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O":"sop/ambientLight","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O":"sop/cameraControls","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O/O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O":"event/cameraOrbitControls","/O_YRTEMOEG_O_GEOMETRY_O/O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O":"sop/cameraRenderScene","/O_YRTEMOEG_O_GEOMETRY_O/O_EGREM_LA_O_AL_MERGE_O":"sop/merge","/O_YRTEMOEG_O_GEOMETRY_O/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O":"sop/orthographicCamera"}
Js version
Editor version
Engine version
Name
*
Code
{"properties":{"frame":0,"maxFrame":5824,"maxFrameLocked":false,"realtimeState":true,"mainCameraPath":"/O_YRTEMOEG_O_GEOMETRY_O/O_YRTEMOEG_O_GEOMETRY_O:sopGroup/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O","versions":{"polygonjs":"1.4.6"}},"root":{"type":"root","nodes":{"O_ENECS_O_SCENE_O":{"type":"scene","params":{"backgroundMode":0,"bgColor":{"raw_input":[1,1,1],"overriden_options":{"conversion":"no conversion"}},"bgTexture":"../O_NOITISOPMOC_O_COMPOSITION_O/O_ROLOC_ETIHW_O_WHITE_COLOR_O","useFog":1,"fogType":0,"fogColor":{"raw_input":[0,0.958,0.487],"overriden_options":{"conversion":"sRGB -> linear"}},"fogNear":0,"fogFar":256,"fogDensity":0}},"O_YRTEMOEG_O_GEOMETRY_O":{"type":"geo","nodes":{"O_XOB_O_BOX_O":{"type":"box"},"O_EDIWIDBUS_O_SUBDIWIDE_O":{"type":"subdivide","params":{"subdivisions":4},"inputs":["O_XOB_O_BOX_O"]},"O_EREHPS_O_SPHERE_O":{"type":"sphere","params":{"radius":".5","resolution":[64,64]}},"O_YAR_O_RAY_O":{"type":"ray","params":{"mode":1,"direction":[1,1,1]},"inputs":["O_EDIWIDBUS_O_SUBDIWIDE_O","O_EREHPS_O_SPHERE_O"]},"O_SLAMRON_O_NORMALS_O":{"type":"normals","params":{"x":0.35},"inputs":["O_EGREM_O_MERGE_O"]},"O_YLPA_LAIRETAM_O_MATERIAL_APLY_O":{"type":"material","params":{"material":"../O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O"},"inputs":["O_SLAMRON_O_NORMALS_O"]},"O_TEN_LAIRETAM_O_MATERIAL_NET_O":{"type":"materialsNetwork","nodes":{"O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":{"type":"meshStandardBuilder","nodes":{"O_SLABOLG_O_GLOBALS_O":{"type":"globals"},"O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O":{"type":"normalize","params":{"in":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_ETAGEN_O_NEGATE_O","output":"val"}],"connection_points":{"in":[{"name":"in","type":"vec3"}],"out":[{"name":"normalized","type":"vec3"}]}},"O_TUPTUO_O_OUTPUT_O":{"type":"output","inputs":[null,null,{"index":2,"inputName":"color","node":"O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O","output":"vec3"}]},"O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O":{"type":"normalize","params":{"in":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_SLABOLG_O_GLOBALS_O","output":"normal"}],"connection_points":{"in":[{"name":"in","type":"vec3"}],"out":[{"name":"normalized","type":"vec3"}]}},"O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O":{"type":"dot","params":{"vec0":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}},"vec1":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"vec0","node":"O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O","output":"normalized"},{"index":1,"inputName":"vec1","node":"O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O","output":"normalized"}],"connection_points":{"in":[{"name":"vec0","type":"vec3"},{"name":"vec1","type":"vec3"}],"out":[{"name":"val","type":"float"}]}},"O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O":{"type":"floatToVec3","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}},"z":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"O_1_LUN_O_NUL_1_O","output":"val"},{"index":1,"inputName":"y","node":"O_1_LUN_O_NUL_1_O","output":"val"},{"index":2,"inputName":"z","node":"O_1_LUN_O_NUL_1_O","output":"val"}]},"O_1_LUN_O_NUL_1_O":{"type":"null","params":{"in":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_1_0_OT_TIF_O_FIT_TO_0_1_O","output":"val"}],"connection_points":{"in":[{"name":"in","type":"float"}],"out":[{"name":"val","type":"float"}]}},"O_ETAGEN_O_NEGATE_O":{"type":"negate","params":{"in":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"in","node":"O_SLABOLG_O_GLOBALS_O","output":"cameraPosition"}],"connection_points":{"in":[{"name":"in","type":"vec3"}],"out":[{"name":"val","type":"vec3"}]}},"O_1_0_OT_TIF_O_FIT_TO_0_1_O":{"type":"fitTo01","params":{"val":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}},"srcMin":{"type":"float","default_value":0,"options":{"spare":true,"editable":true},"raw_input":0.0333},"srcMax":{"type":"float","default_value":1,"options":{"spare":true,"editable":true}}},"inputs":[{"index":0,"inputName":"val","node":"O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O","output":"val"}],"connection_points":{"in":[{"name":"val","type":"float"},{"name":"srcMin","type":"float"},{"name":"srcMax","type":"float"}],"out":[{"name":"val","type":"float"}]}},"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O":{"type":"divide","params":{"div0":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":168},"div1":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":256}},"connection_points":{"in":[{"name":"div0","type":"float"},{"name":"div1","type":"float"}],"out":[{"name":"divide","type":"float"}]}},"O_TOOR_O_ROOT_O":{"type":"divide","params":{"div0":{"type":"float","default_value":1,"options":{"spare":true,"editable":false},"raw_input":4.69140625,"overriden_options":{}},"div1":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":19.48046875}},"inputs":[{"index":0,"inputName":"div0","node":"O_LEWEL_REWOP_O_POWER_LEWEL_O","output":"divide"}],"connection_points":{"in":[{"name":"div0","type":"float"},{"name":"div1","type":"float"}],"out":[{"name":"divide","type":"float"}]}},"O_LEWEL_REWOP_O_POWER_LEWEL_O":{"type":"divide","params":{"div0":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":1201},"div1":{"type":"float","default_value":1,"options":{"spare":true,"editable":true},"raw_input":256}},"connection_points":{"in":[{"name":"div0","type":"float"},{"name":"div1","type":"float"}],"out":[{"name":"divide","type":"float"}]}},"O_REWOP_O_POWER_O":{"type":"pow","params":{"x":{"type":"float","default_value":0,"options":{"spare":true,"editable":false},"overriden_options":{}},"y":{"type":"float","default_value":0,"options":{"spare":true,"editable":false},"raw_input":0.5,"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"O_1_0_OT_TIF_O_FIT_TO_0_1_O","output":"val"},{"index":1,"inputName":"y","node":"O_TOOR_O_ROOT_O","output":"divide"}],"connection_points":{"in":[{"name":"x","type":"float"},{"name":"y","type":"float"}],"out":[{"name":"val","type":"float"}]}},"O_YLPITLUM_O_MULTIPLY_O":{"type":"mult","params":{"mult0":{"type":"float","default_value":1,"options":{"spare":true,"editable":false}},"mult1":{"type":"float","default_value":1,"options":{"spare":true,"editable":false}},"mult2":{"type":"float","default_value":1,"options":{"spare":true,"editable":true}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"mult0","node":"O_REWOP_O_POWER_O","output":"val"},{"index":1,"inputName":"mult1","node":"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O","output":"divide"}],"connection_points":{"in":[{"name":"mult0","type":"float"},{"name":"mult1","type":"float"},{"name":"mult2","type":"float"}],"out":[{"name":"product","type":"float"}]}},"O_DDA_O_ADD_O":{"type":"add","params":{"add0":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}},"add1":{"type":"float","default_value":0,"options":{"spare":true,"editable":false}},"add2":{"type":"float","default_value":0,"options":{"spare":true,"editable":true}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"add0","node":"O_YLPITLUM_O_MULTIPLY_O","output":"product"},{"index":1,"inputName":"add1","node":"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O","output":"divide"}],"connection_points":{"in":[{"name":"add0","type":"float"},{"name":"add1","type":"float"},{"name":"add2","type":"float"}],"out":[{"name":"sum","type":"float"}]}}},"params":{"emissive":{"raw_input":[1,1,1],"overriden_options":{"conversion":"no conversion"}},"emissiveIntensity":0,"roughness":0,"doubleSided":1,"shadowFront":0},"persisted_config":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-main","type":"MeshStandardMaterial","name":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O","color":16711422,"roughness":0,"metalness":0,"emissive":16711422,"envMapIntensity":1,"side":2,"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":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-customDepthMaterial","type":"MeshDepthMaterial","name":"customDepthMaterial","side":2,"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":3201},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDistanceMaterial":{"material":{"metadata":{"version":4.5,"type":"Material","generator":"Material.toJSON"},"uuid":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-customDistanceMaterial","type":"MeshDistanceMaterial","name":"customDistanceMaterial","side":2,"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":"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O-customDepthDOFMaterial","type":"MeshDepthMaterial","name":"customDepthDOFMaterial","side":2,"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}}}}},"O_PACTAM_HSEM_O_MESH_MATCAP_O":{"type":"meshMatcap","params":{"useMatcapMap":1,"matcapMap":"../O_NOITISOPMOC_O_COMPOSITION_O/O_EGAMI_O_IMAGE_O","doubleSided":1}},"O_NOITISOPMOC_O_COMPOSITION_O":{"type":"copNetwork","nodes":{"O_ROLOC_ETIHW_O_WHITE_COLOR_O":{"type":"color"},"O_ROLOC_ETIHWNON_O_NONWHITE_COLOR_O":{"type":"color","params":{"color":[0,0,0],"alpha":0}},"O_OEDIW_O_WIDEO_O":{"type":"video","params":{"urlsCount":1,"url1":"https://tbpchan.cz/cute/src/1673734876465.mp4"}},"O_EGAMI_O_IMAGE_O":{"type":"image","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/textures/resources/artvee.com/Bouquet-of-Flowers-in-a-Blue-Porcelain-Vase-by-Anne-Vallayer-Coster.jpg","tencoding":1,"tminFilter":1,"tmagFilter":1,"tanisotropy":1,"useRendererMaxAnisotropy":1}}}},"O_EDOC_O_CODE_O":{"type":"code","params":{"vertex":"\nvarying vec3 vWorldPosition;\nprecision highp float;\nvarying vec3 fNormal;\nvarying vec3 fPosition;\nvoid main() {\n\n\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\tvWorldPosition = worldPosition.xyz;\n\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n}","fragment":"precision highp float;\nprecision highp int;\n\nvarying vec3 fPosition;\nvarying vec3 fNormal;\n// https://madebyevan.com/shaders/grid/\nvarying vec3 vWorldPosition;\n\nvoid main() {\n\n\t// Pick a coordinate to visualize in a grid\n\tconst float pi = 4.*atan(1.);\n\tconst float scale = 10.0;\n\tvec2 coord = vec2(length(5.0 * vWorldPosition.xz), atan(5.0 * vWorldPosition.x, 5.0 * vWorldPosition.z) * scale / pi);\n\n\t// Handling the wrap-around is tricky in this case. The function atan()\n\t// is not continuous and jumps when it wraps from -pi to pi. The screen-\n\t// space partial derivative will be huge along that boundary. To avoid\n\t// this, compute another coordinate that places the jump at a different\n\t// place, then use the coordinate where the jump is farther away.\n\t//\n\t// When doing this, make sure to always evaluate both fwidth() calls even\n\t// though we only use one. All fragment shader threads in the thread group\n\t// actually share a single instruction pointer, so threads that diverge\n\t// down different conditional branches actually cause both branches to be\n\t// serialized one after the other. Calling fwidth() from a thread next to\n\t// an inactive thread ends up reading inactive registers with old values\n\t// in them and you get an undefined value.\n\t//\n\t// The conditional uses +/-scale/2 since coord.y has a range of +/-scale.\n\t// The jump is at +/-scale for coord and at 0 for wrapped.\n\tvec2 wrapped = vec2(coord.x, fract(coord.y / (2.0 * scale)) * (2.0 * scale));\n\tvec2 coordWidth = fwidth(coord);\n\tvec2 wrappedWidth = fwidth(wrapped);\n\tvec2 width = coord.y < -scale * 0.5 || coord.y > scale * 0.5 ? wrappedWidth : coordWidth;\n\n\t// Compute anti-aliased world-space grid lines\n\tvec2 grid = abs(fract(coord - 0.5) - 0.5) / width;\n\tfloat line = min(grid.x, grid.y);\n\n\t// Just visualize the grid lines directly\n\tfloat color = 1.0 - min(line, 1.0);\n\n\t// Apply gamma correction\n\tcolor = pow(color, 1. / 2.2);\n\tgl_FragColor = vec4(vec3(color), 1.0);\n}\n"}}}},"O_ENALP_O_PLANE_O":{"type":"plane","params":{"direction":[0,0,-1],"center":[0,0,".5"]}},"O_EGREM_O_MERGE_O":{"type":"merge","inputs":["O_ENALP_O_PLANE_O","O_YAR_O_RAY_O"]},"O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O":{"type":"ambientLight"},"O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O":{"type":"cameraControls","nodes":{"O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O":{"type":"cameraOrbitControls","params":{"tdamping":0,"damping":0,"maxDistance":256}}},"params":{"node":"O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O"},"inputs":["O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O"]},"O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O":{"type":"cameraRenderScene","params":{"node":"../../O_ENECS_O_SCENE_O"},"inputs":["O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O"],"flags":{"bypass":true}},"O_EGREM_LA_O_AL_MERGE_O":{"type":"merge","params":{"inputsCount":3},"maxInputsCount":3,"inputs":["O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O","O_YLPA_LAIRETAM_O_MATERIAL_APLY_O","O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O"],"flags":{"display":true}},"O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O":{"type":"orthographicCamera","params":{"near":0,"far":256,"position":[0,0,-1]}}},"params":{"matrixAutoUpdate":1,"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":"{}"}}},"flags":{"display":true}}},"params":{"bgColor":{"raw_input":[1,1,1],"overriden_options":{"conversion":"no conversion"}},"mainCameraPath":"/O_YRTEMOEG_O_GEOMETRY_O/O_YRTEMOEG_O_GEOMETRY_O:sopGroup/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O","fogType":0}},"ui":{"nodes":{"O_ENECS_O_SCENE_O":{"pos":[-50,-150]},"O_YRTEMOEG_O_GEOMETRY_O":{"pos":[-50,-250],"selection":["O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O"],"nodes":{"O_XOB_O_BOX_O":{"pos":[0,-50]},"O_EDIWIDBUS_O_SUBDIWIDE_O":{"pos":[0,50]},"O_EREHPS_O_SPHERE_O":{"pos":[250,100]},"O_YAR_O_RAY_O":{"pos":[0,150]},"O_SLAMRON_O_NORMALS_O":{"pos":[0,350]},"O_YLPA_LAIRETAM_O_MATERIAL_APLY_O":{"pos":[0,450]},"O_TEN_LAIRETAM_O_MATERIAL_NET_O":{"pos":[0,600],"selection":["O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O"],"nodes":{"O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":{"pos":[0,-350],"nodes":{"O_SLABOLG_O_GLOBALS_O":{"pos":[-150,-150]},"O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O":{"pos":[50,-450]},"O_TUPTUO_O_OUTPUT_O":{"pos":[850,-1600]},"O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O":{"pos":[-50,-350]},"O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O":{"pos":[150,-550]},"O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O":{"pos":[750,-1400]},"O_1_LUN_O_NUL_1_O":{"pos":[550,-900]},"O_ETAGEN_O_NEGATE_O":{"pos":[-50,-250]},"O_1_0_OT_TIF_O_FIT_TO_0_1_O":{"pos":[250,-650]},"O_LEWEL_MOTOB_O_BOTOM_LEWEL_O":{"pos":[350,-1000]},"O_TOOR_O_ROOT_O":{"pos":[250,-800]},"O_LEWEL_REWOP_O_POWER_LEWEL_O":{"pos":[150,-700]},"O_REWOP_O_POWER_O":{"pos":[350,-900]},"O_YLPITLUM_O_MULTIPLY_O":{"pos":[450,-1100]},"O_DDA_O_ADD_O":{"pos":[550,-1200]}}},"O_PACTAM_HSEM_O_MESH_MATCAP_O":{"pos":[0,-200]},"O_NOITISOPMOC_O_COMPOSITION_O":{"pos":[0,-450],"nodes":{"O_ROLOC_ETIHW_O_WHITE_COLOR_O":{"pos":[0,-100]},"O_ROLOC_ETIHWNON_O_NONWHITE_COLOR_O":{"pos":[0,0]},"O_OEDIW_O_WIDEO_O":{"pos":[0,-300]},"O_EGAMI_O_IMAGE_O":{"pos":[0,-200]}}},"O_EDOC_O_CODE_O":{"pos":[0,-550]}}},"O_ENALP_O_PLANE_O":{"pos":[-250,150]},"O_EGREM_O_MERGE_O":{"pos":[0,250]},"O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O":{"pos":[-700,550]},"O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O":{"pos":[-500,350],"nodes":{"O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O":{"pos":[0,0]}}},"O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O":{"pos":[-500,450]},"O_EGREM_LA_O_AL_MERGE_O":{"pos":[-250,700]},"O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O":{"pos":[-500,250]}}}}},"shaders":{"/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":{"vertex":"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <uv2_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#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 <uv2_vertex>\n\t#include <color_vertex>\n\n\n\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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 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 SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\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_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_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 <bsdfs>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\n\n\n\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_normal = vec3(normal);\n\tv_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition = vec3(cameraPosition);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n//\n//\n// FIT\n//\n//\nfloat fit(float val, float srcMin, float srcMax, float destMin, float destMax){\n\tfloat src_range = srcMax - srcMin;\n\tfloat dest_range = destMax - destMin;\n\n\tfloat r = (val - srcMin) / src_range;\n\treturn (r * dest_range) + destMin;\n}\nvec2 fit(vec2 val, vec2 srcMin, vec2 srcMax, vec2 destMin, vec2 destMax){\n\treturn vec2(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y)\n\t);\n}\nvec3 fit(vec3 val, vec3 srcMin, vec3 srcMax, vec3 destMin, vec3 destMax){\n\treturn vec3(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z)\n\t);\n}\nvec4 fit(vec4 val, vec4 srcMin, vec4 srcMax, vec4 destMin, vec4 destMax){\n\treturn vec4(\n\t\tfit(val.x, srcMin.x, srcMax.x, destMin.x, destMax.x),\n\t\tfit(val.y, srcMin.y, srcMax.y, destMin.y, destMax.y),\n\t\tfit(val.z, srcMin.z, srcMax.z, destMin.z, destMax.z),\n\t\tfit(val.w, srcMin.w, srcMax.w, destMin.w, destMax.w)\n\t);\n}\n\n//\n//\n// FIT TO 01\n// fits the range [srcMin, srcMax] to [0, 1]\n//\nfloat fitTo01(float val, float srcMin, float srcMax){\n\tfloat size = srcMax - srcMin;\n\treturn (val - srcMin) / size;\n}\nvec2 fitTo01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitTo01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitTo01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitTo01(val.x, srcMin.x, srcMax.x),\n\t\tfitTo01(val.y, srcMin.y, srcMax.y),\n\t\tfitTo01(val.z, srcMin.z, srcMax.z),\n\t\tfitTo01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01\n// fits the range [0, 1] to [destMin, destMax]\n//\nfloat fitFrom01(float val, float destMin, float destMax){\n\treturn fit(val, 0.0, 1.0, destMin, destMax);\n}\nvec2 fitFrom01(vec2 val, vec2 srcMin, vec2 srcMax){\n\treturn vec2(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y)\n\t);\n}\nvec3 fitFrom01(vec3 val, vec3 srcMin, vec3 srcMax){\n\treturn vec3(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z)\n\t);\n}\nvec4 fitFrom01(vec4 val, vec4 srcMin, vec4 srcMax){\n\treturn vec4(\n\t\tfitFrom01(val.x, srcMin.x, srcMax.x),\n\t\tfitFrom01(val.y, srcMin.y, srcMax.y),\n\t\tfitFrom01(val.z, srcMin.z, srcMax.z),\n\t\tfitFrom01(val.w, srcMin.w, srcMax.w)\n\t);\n}\n\n//\n//\n// FIT FROM 01 TO VARIANCE\n// fits the range [0, 1] to [center - variance, center + variance]\n//\nfloat fitFrom01ToVariance(float val, float center, float variance){\n\treturn fitFrom01(val, center - variance, center + variance);\n}\nvec2 fitFrom01ToVariance(vec2 val, vec2 center, vec2 variance){\n\treturn vec2(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y)\n\t);\n}\nvec3 fitFrom01ToVariance(vec3 val, vec3 center, vec3 variance){\n\treturn vec3(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z)\n\t);\n}\nvec4 fitFrom01ToVariance(vec4 val, vec4 center, vec4 variance){\n\treturn vec4(\n\t\tfitFrom01ToVariance(val.x, center.x, variance.x),\n\t\tfitFrom01ToVariance(val.y, center.y, variance.y),\n\t\tfitFrom01ToVariance(val.z, center.z, variance.z),\n\t\tfitFrom01ToVariance(val.w, center.w, variance.w)\n\t);\n}\n\n\n\n\n\n\n\n// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_SLABOLG_O_GLOBALS_O\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_normal;\nvarying vec3 v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\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// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O\n\tvec3 v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized = normalize(v_POLY_O_SLABOLG_O_GLOBALS_O_normal);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ETAGEN_O_NEGATE_O\n\tvec3 v_POLY_O_ETAGEN_O_NEGATE_O_val = -1.0 * v_POLY_O_SLABOLG_O_GLOBALS_O_cameraPosition;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O\n\tvec3 v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized = normalize(v_POLY_O_ETAGEN_O_NEGATE_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O\n\tfloat v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val = dot(v_POLY_O_LAMRON_EZILAMRON_O_NORMALIZE_NORMAL_O_normalized, v_POLY_O_NOITISOP_AREMAC_EZILAMRON_O_NORMALIZE_CAMERA_POSITION_O_normalized);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_0_OT_TIF_O_FIT_TO_0_1_O\n\tfloat v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val = fitTo01(v_POLY_O_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_O_val, 0.0333, 1.0);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_1_LUN_O_NUL_1_O\n\tfloat v_POLY_O_1_LUN_O_NUL_1_O_val = v_POLY_O_1_0_OT_TIF_O_FIT_TO_0_1_O_val;\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O\n\tvec3 v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3 = vec3(v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val, v_POLY_O_1_LUN_O_NUL_1_O_val);\n\t\n\t// /O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O/O_TUPTUO_O_OUTPUT_O\n\tdiffuseColor.xyz = v_POLY_O_ROTCEW_TAOLF_ELPIRT_NOITISOP_AREMAC_DEZILAMRON_DNA_LAMRON_DEZILAMRON_MORF_TCUDORP_TOD_O_DOT_PRODUCT_FROM_NORMALIZED_NORMAL_AND_NORMALIZED_CAMERA_POSITION_TRIPLE_FLOAT_WECTOR_O_vec3;\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"}}}
Code editor
{"multiple_panel":{"split_ratio":0.3202380952380952,"split_panel0":{"split_ratio":0.4457382997630332,"split_panel0":{"split_ratio":0.2703672466856061,"split_panel0":{"panelTypes":["performance"],"currentPanelIndex":0,"panel_data":{}},"split_panel1":{"panelTypes":["spreadsheet"],"currentPanelIndex":0,"panel_data":{"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["paramsStack","params"],"currentPanelIndex":1,"panel_data":{"active_folder":337,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"split_ratio":0.5199579831932774,"split_panel0":{"split_ratio":0.40189943720379145,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/O_YRTEMOEG_O_GEOMETRY_O/O_YRTEMOEG_O_GEOMETRY_O:sopGroup/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O","isViewerInitLayoutData":true,"linkIndex":1,"overlayedNetwork":{"allowed":false,"displayed":true,"initLayoutData":{"camera":{"position":{"x":0,"y":-600},"zoom":1},"history":{"2":{"position":{"x":50,"y":350},"zoom":1},"36":{"position":{"x":100,"y":-125},"zoom":1},"63":{"position":{"x":0,"y":-600},"zoom":1},"89":{"position":{"x":-100,"y":-200},"zoom":1},"116":{"position":{"x":100,"y":-25},"zoom":1},"119":{"position":{"x":-100,"y":-200},"zoom":1},"142":{"position":{"x":75,"y":-175},"zoom":1},"145":{"position":{"x":-175,"y":-125},"zoom":1},"172":{"position":{"x":100,"y":-125},"zoom":1},"198":{"position":{"x":0,"y":-50},"zoom":1},"202":{"position":{"x":0,"y":450},"zoom":1},"213":{"position":{"x":0,"y":0},"zoom":1},"246":{"position":{"x":0,"y":0},"zoom":1},"247":{"position":{"x":0,"y":0},"zoom":1},"286":{"position":{"x":0,"y":0},"zoom":1},"288":{"position":{"x":0,"y":0},"zoom":1},"311":{"position":{"x":0,"y":350},"zoom":1},"346":{"position":{"x":-100,"y":225},"zoom":1},"351":{"position":{"x":100,"y":300},"zoom":1},"368":{"position":{"x":0,"y":0},"zoom":1},"411":{"position":{"x":0,"y":0},"zoom":1},"414":{"position":{"x":0,"y":150},"zoom":1},"615":{"position":{"x":0,"y":0},"zoom":1},"631":{"position":{"x":0,"y":0},"zoom":1},"641":{"position":{"x":0,"y":0},"zoom":1},"693":{"position":{"x":0,"y":0},"zoom":1},"760":{"position":{"x":0,"y":150},"zoom":1},"780":{"position":{"x":0,"y":0},"zoom":1},"795":{"position":{"x":300,"y":0},"zoom":1},"856":{"position":{"x":0,"y":0},"zoom":1},"877":{"position":{"x":0,"y":0},"zoom":1},"899":{"position":{"x":0,"y":0},"zoom":1},"998":{"position":{"x":0,"y":0},"zoom":1},"1187":{"position":{"x":0,"y":0},"zoom":1},"1369":{"position":{"x":0,"y":0},"zoom":1},"1433":{"position":{"x":0,"y":0},"zoom":1},"1477":{"position":{"x":0,"y":0},"zoom":1},"1480":{"position":{"x":300,"y":0},"zoom":1},"1611":{"position":{"x":0,"y":0},"zoom":1},"1628":{"position":{"x":0,"y":0},"zoom":1},"1772":{"position":{"x":0,"y":0},"zoom":1},"1902":{"position":{"x":0,"y":0},"zoom":1},"2176":{"position":{"x":0,"y":0},"zoom":1},"2286":{"position":{"x":0,"y":0},"zoom":1}},"paramsDisplayed":false,"linkIndex":1}}}},"split_panel1":{"panelTypes":["network"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":194.54297407912662,"y":-316.23465211459813},"zoom":0.9162500000000013},"history":{"2":{"position":{"x":-5.067837852970641,"y":146.72568719735503},"zoom":0.925749877929689},"36":{"position":{"x":-126.48296954756476,"y":-76.87565448150615},"zoom":1.039444641113281},"62":{"position":{"x":182.81036834924942,"y":-415.82537517053237},"zoom":0.9162500000000013},"63":{"position":{"x":194.54297407912662,"y":-316.23465211459813},"zoom":0.9162500000000013},"89":{"position":{"x":-100,"y":-200},"zoom":1.1512499999999999},"116":{"position":{"x":100,"y":-25},"zoom":0.9162500000000013},"119":{"position":{"x":-100,"y":-200},"zoom":0.6852500000000011},"142":{"position":{"x":131.48477317057828,"y":-416.8989492229285},"zoom":0.691},"172":{"position":{"x":-178.5407154623221,"y":-124.3635643849423},"zoom":1.039444641113281},"202":{"position":{"x":5.4570259208731,"y":284.9249658935883},"zoom":0.9162500000000013},"213":{"position":{"x":0,"y":0},"zoom":1.2884446411132804},"246":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"247":{"position":{"x":-70.94133697135051,"y":5.457025920873116},"zoom":0.9162500000000013},"286":{"position":{"x":-160.0272851296043,"y":5.354706684857064},"zoom":0.9162500000000013},"288":{"position":{"x":-405.7397065710843,"y":771.8592956547157},"zoom":1.046250000000002},"311":{"position":{"x":0,"y":350},"zoom":0.9162500000000013},"346":{"position":{"x":-100,"y":225},"zoom":0.9162500000000013},"351":{"position":{"x":-58.62831858407081,"y":294.69026548672565},"zoom":0.9950000000000004},"368":{"position":{"x":-238.29986962952114,"y":210.6373934517798},"zoom":0.564147082492068},"411":{"position":{"x":-32.7421555252387,"y":177.3533424283763},"zoom":0.9162500000000013},"414":{"position":{"x":0,"y":150},"zoom":0.9162500000000013},"631":{"position":{"x":-44.29967426710098,"y":-39.95656894679696},"zoom":1.1512499999999999},"641":{"position":{"x":-169.3833732762781,"y":25.02540305927687},"zoom":0.566111206054687},"760":{"position":{"x":0,"y":150},"zoom":1.1512499999999999},"795":{"position":{"x":300,"y":0},"zoom":0.9162500000000013},"856":{"position":{"x":0,"y":0},"zoom":0.108888916015625},"1187":{"position":{"x":-8.865248226950344,"y":-61.17021276595737},"zoom":1.4100000000000017},"1369":{"position":{"x":-348.1344710380966,"y":745.8330972950005},"zoom":1.1512499999999999},"1433":{"position":{"x":0,"y":0},"zoom":1.039444641113281},"1477":{"position":{"x":0,"y":0},"zoom":1.0532498779296893},"1480":{"position":{"x":666.3716814159293,"y":26.548672566371685},"zoom":1.1299999999999997},"1611":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"1628":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"1772":{"position":{"x":-61.51288445552788,"y":-25.76891105569411},"zoom":1.5037499999999993},"1902":{"position":{"x":0,"y":0},"zoom":0.9162500000000013},"2168":{"position":{"x":-32.7421555252387,"y":177.3533424283763},"zoom":0.9162500000000013},"2176":{"position":{"x":0,"y":0},"zoom":1.1299999999999997},"2286":{"position":{"x":0,"y":0},"zoom":1.1299999999999997}},"paramsDisplayed":false,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"split_ratio":0.4445534656398104,"split_panel0":{"split_ratio":0.2679998224431818,"split_panel0":{"panelTypes":["performance"],"currentPanelIndex":0,"panel_data":{}},"split_panel1":{"panelTypes":["spreadsheet"],"currentPanelIndex":0,"panel_data":{"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["params","paramsStack"],"currentPanelIndex":0,"panel_data":{"active_folder":291,"linkIndex":1}},"split_mode":"vertical"},"split_mode":"horizontal"},"split_mode":"horizontal"},"currentNodes":["/O_YRTEMOEG_O_GEOMETRY_O","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O","/O_YRTEMOEG_O_GEOMETRY_O","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O","/O_YRTEMOEG_O_GEOMETRY_O"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":19,"2":-1,"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/color;cop/image;cop/video;event/cameraOrbitControls;mat/code;mat/copNetwork;mat/meshMatcap;mat/meshStandardBuilder;obj/geo;obj/scene;sop/ambientLight;sop/box;sop/cameraControls;sop/cameraRenderScene;sop/material;sop/materialsNetwork;sop/merge;sop/normals;sop/orthographicCamera;sop/plane;sop/ray;sop/sphere;sop/subdivide
Used operations
Used modules
Used assemblers
GL_MESH_STANDARD
Used integrations
[]
Used assets
Nodes map
{"/O_ENECS_O_SCENE_O":"obj/scene","/O_YRTEMOEG_O_GEOMETRY_O":"obj/geo","/O_YRTEMOEG_O_GEOMETRY_O/O_XOB_O_BOX_O":"sop/box","/O_YRTEMOEG_O_GEOMETRY_O/O_EDIWIDBUS_O_SUBDIWIDE_O":"sop/subdivide","/O_YRTEMOEG_O_GEOMETRY_O/O_EREHPS_O_SPHERE_O":"sop/sphere","/O_YRTEMOEG_O_GEOMETRY_O/O_YAR_O_RAY_O":"sop/ray","/O_YRTEMOEG_O_GEOMETRY_O/O_SLAMRON_O_NORMALS_O":"sop/normals","/O_YRTEMOEG_O_GEOMETRY_O/O_YLPA_LAIRETAM_O_MATERIAL_APLY_O":"sop/material","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O":"sop/materialsNetwork","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_REDLIUB_DRADNATS_HSEM_O_MESH_STANDARD_BUILDER_O":"mat/meshStandardBuilder","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_PACTAM_HSEM_O_MESH_MATCAP_O":"mat/meshMatcap","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O":"mat/copNetwork","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_ROLOC_ETIHW_O_WHITE_COLOR_O":"cop/color","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_ROLOC_ETIHWNON_O_NONWHITE_COLOR_O":"cop/color","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_OEDIW_O_WIDEO_O":"cop/video","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_NOITISOPMOC_O_COMPOSITION_O/O_EGAMI_O_IMAGE_O":"cop/image","/O_YRTEMOEG_O_GEOMETRY_O/O_TEN_LAIRETAM_O_MATERIAL_NET_O/O_EDOC_O_CODE_O":"mat/code","/O_YRTEMOEG_O_GEOMETRY_O/O_ENALP_O_PLANE_O":"sop/plane","/O_YRTEMOEG_O_GEOMETRY_O/O_EGREM_O_MERGE_O":"sop/merge","/O_YRTEMOEG_O_GEOMETRY_O/O_THGIL_TNEIBMA_O_AMBIENT_LIGHT_O":"sop/ambientLight","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O":"sop/cameraControls","/O_YRTEMOEG_O_GEOMETRY_O/O_SLORTNOC_AREMAC_O_CAMERA_CONTROLS_O/O_SLORTNOC_TIBRO_AREMAC_O_CAMERA_ORBIT_CONTROLS_O":"event/cameraOrbitControls","/O_YRTEMOEG_O_GEOMETRY_O/O_ENECS_REDNER_AREMAC_O_CAMERA_RENDER_SCENE_O":"sop/cameraRenderScene","/O_YRTEMOEG_O_GEOMETRY_O/O_EGREM_LA_O_AL_MERGE_O":"sop/merge","/O_YRTEMOEG_O_GEOMETRY_O/O_AREMAC_WEIWERP_O_PREWIEW_CAMERA_O":"sop/orthographicCamera"}
Js version
Editor version
Engine version
Logout
0%
There was a problem displaying your scene:
view scene source