O-/𖣠⚪𔗢⚪ᗩ∣ᗝ∣Ẏ⚪𖡼𖡼𖡼𖡼⚪𔗢⚪🞋⚪𔗢⚪𖡼𖡼𖡼𖡼⚪Ẏ∣ᗝ∣ᗩ⚪𔗢⚪𖣠/𖣠⚪𔗢⚪✤ᴥᗩ⚪𖡼𖡼𖡼𖡼⚪𔗢⚪🞋⚪𔗢⚪𖡼𖡼𖡼𖡼⚪ᗩᴥ✤⚪𔗢⚪𖣠/𖣠⚪𔗢⚪ᗱᗴᴥᗩᗯ✤ꗳⓄᔓᔕ⚪𖡼𖡼𖡼𖡼⚪𔗢⚪🞋⚪𔗢⚪𖡼𖡼𖡼𖡼⚪ᔓᔕⓄꗳ✤ᗯᗩᴥᗱᗴ⚪𔗢⚪𖣠/𖣠⚪𔗢⚪ЭЄᗩНߦᗱᗴᙏЭЄⓄߦ✤◯𖡼𖡼𖡼𖡼⚪𔗢⚪🞋⚪𔗢⚪𖡼𖡼𖡼𖡼◯✤ߦⓄЭЄᙏᗱᗴߦНᗩЭЄ⚪𔗢⚪𖣠/⠀⠀⠀⠀ⵙ⠀ᔓᔕ⠀ⵙ⠀ᒍᒐ⠀ⵙ⠀◌⠀ⵙ⠀ИN⠀ⵙ⠀Ⓞ⠀ⵙ⠀ᕤᕦ⠀ⵙ⠀人⠀ⵙ⠀ᙁ⠀ⵙ⠀Ⓞ⠀ⵙ⠀ߦ⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⠀⠀⚪⠀⠀⠀⠀ⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙ⠀⠀⠀⠀⚪⠀⠀⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀ߦ⠀ⵙ⠀Ⓞ⠀ⵙ⠀ᙁ⠀ⵙ⠀人⠀ⵙ⠀ᕤᕦ⠀ⵙ⠀Ⓞ⠀ⵙ⠀ИN⠀ⵙ⠀◌⠀ⵙ⠀ᒍᒐ⠀ⵙ⠀ᔓᔕ⠀ⵙ⠀⠀⠀⠀/TXT...⠀⠀⠀⠀ⵙ⠀Ⓞ⠀ⵙ⠀⠀⠀⠀⊚⠀⠀⠀⠀ⵙ⠀ᔓᔕ⠀ⵙ⠀ᒍᒐ⠀ⵙ⠀◌⠀ⵙ⠀ИN⠀ⵙ⠀Ⓞ⠀ⵙ⠀ᕤᕦ⠀ⵙ⠀人⠀ⵙ⠀ᙁ⠀ⵙ⠀Ⓞ⠀ⵙ⠀ߦ⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⠀⠀⚪⠀⠀⠀⠀ⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙ⠀⠀⠀⠀◯⠀⠀⠀⠀ⵙ⠀⠀⠀⠀⚪⠀⠀⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀◌⠀ⵙ⠀⠀⊚⠀⠀ⵙ⠀ߦ⠀ⵙ⠀Ⓞ⠀ⵙ⠀ᙁ⠀ⵙ⠀人⠀ⵙ⠀ᕤᕦ⠀ⵙ⠀Ⓞ⠀ⵙ⠀ИN⠀ⵙ⠀◌⠀ⵙ⠀ᒍᒐ⠀ⵙ⠀ᔓᔕ⠀ⵙ⠀⠀⠀⠀⊚⠀⠀⠀⠀ⵙ⠀Ⓞ⠀ⵙ⠀⠀⠀⠀...TXT
2024-04-05 10:41:01 +00:00

1 line
65 KiB
Plaintext

{"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"}}}