{"version":3,"file":"index.umd.cjs","sources":["../src/shaders/FillShader.js","../src/shaders/MeshBasicShaderMaterial.js","../src/materials/MeshWboitMaterial.js","../src/shaders/sRGBShader.js","../src/shaders/WboitCompositeShader.js","../src/WboitPass.js","../src/WboitUtils.js"],"sourcesContent":["/**\n * Color fill shader\n */\n\nimport {\n\tColor\n} from 'three';\n\nconst FillShader = {\n\n\tuniforms: {\n\n\t\t'color': { value: new Color( 0xffffff ) },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvoid main() {\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform vec3 color;\n\t\tuniform float opacity;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = vec4( color, opacity );\n\n\t\t}`\n\n};\n\nexport { FillShader };\n","\n/**\n * MeshBasicMaterial as a ShaderMaterial\n */\n\nimport {\n    ShaderChunk,\n    UniformsLib,\n\tUniformsUtils\n} from 'three';\n\nconst MeshBasicShaderMaterial = {\n\n    defines: { USE_MAP: '', USE_UV: '', },\n\n    uniforms: UniformsUtils.merge( [\n        UniformsLib.common,\n        UniformsLib.specularmap,\n        UniformsLib.envmap,\n        UniformsLib.aomap,\n        UniformsLib.lightmap,\n        UniformsLib.fog\n    ] ),\n\n    vertexShader: ShaderChunk.meshbasic_vert,\n\n    fragmentShader: ShaderChunk.meshbasic_frag,\n\n};\n\nexport { MeshBasicShaderMaterial };\n","/**\n * MeshWboitMaterial\n *\n * Basic material with support for weighted, blended order-independent transparency\n */\n\nimport { UniformsUtils, UniformsLib, ShaderMaterial, MultiplyOperation } from 'three';\n\nconst WboitStages = {\n\tNormal: 0.0,\n\tAcummulation: 1.0,\n\tRevealage: 2.0,\n};\n\nconst WboitBasicShader = {\n\n\t// based on MeshBasicMaterial\n\t// https://github.com/mrdoob/three.js/blob/dev/src/materials/MeshBasicMaterial.js\n\t// https://github.com/mrdoob/three.js/blob/dev/src/renderers/shaders/ShaderLib.js\n\t// https://github.com/mrdoob/three.js/blob/dev/src/renderers/shaders/ShaderLib/meshbasic.glsl.js\n\n\tuniforms: UniformsUtils.merge( [\n\t\t{\n\t\t\trenderStage: { value: 0.0 },\n\t\t\tweight: { value: 1.0 },\n\t\t},\n\t\tUniformsLib.common,\n\t\tUniformsLib.specularmap,\n\t\tUniformsLib.envmap,\n\t\tUniformsLib.aomap,\n\t\tUniformsLib.lightmap,\n\t\tUniformsLib.fog\n\t] ),\n\n\tvertexShader: /* glsl */`\n\n\t\t// MeshBasicMaterial\n\n\t\t#include <common>\n\t\t#include <uv_pars_vertex>\n\t\t#include <envmap_pars_vertex>\n\t\t#include <color_pars_vertex>\n\t\t#include <fog_pars_vertex>\n\t\t#include <morphtarget_pars_vertex>\n\t\t#include <skinning_pars_vertex>\n\t\t#include <logdepthbuf_pars_vertex>\n\t\t#include <clipping_planes_pars_vertex>\n\n\t\tvoid main() {\n\n\t\t\t// MeshBasicMaterial\n\n\t\t\t#include <uv_vertex>\n\t\t\t#include <color_vertex>\n\t\t\t#include <morphcolor_vertex>\n\n\t\t\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\n\t\t\t\t#include <beginnormal_vertex>\n\t\t\t\t#include <morphnormal_vertex>\n\t\t\t\t#include <skinbase_vertex>\n\t\t\t\t#include <skinnormal_vertex>\n\t\t\t\t#include <defaultnormal_vertex>\n\n\t\t\t#endif\n\n\t\t\t#include <begin_vertex>\n\t\t\t#include <morphtarget_vertex>\n\t\t\t#include <skinning_vertex>\n\t\t\t#include <project_vertex>\n\t\t\t#include <logdepthbuf_vertex>\n\t\t\t#include <clipping_planes_vertex>\n\n\t\t\t#include <worldpos_vertex>\n\t\t\t#include <envmap_vertex>\n\t\t\t#include <fog_vertex>\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tprecision highp float;\n\t\tprecision highp int;\n\n\t\t// MeshBasicMaterial\n\n\t\tuniform vec3 diffuse;\n\t\tuniform float opacity;\n\n\t\t#ifndef FLAT_SHADED\n\n\t\t\tvarying vec3 vNormal;\n\n\t\t#endif\n\n\t\t#include <common>\n\t\t#include <dithering_pars_fragment>\n\t\t#include <color_pars_fragment>\n\t\t#include <uv_pars_fragment>\n\t\t#include <map_pars_fragment>\n\t\t#include <alphamap_pars_fragment>\n\t\t#include <alphatest_pars_fragment>\n\t\t#include <alphahash_pars_fragment>\n\t\t#include <aomap_pars_fragment>\n\t\t#include <lightmap_pars_fragment>\n\t\t#include <envmap_common_pars_fragment>\n\t\t#include <envmap_pars_fragment>\n\t\t#include <fog_pars_fragment>\n\t\t#include <specularmap_pars_fragment>\n\t\t#include <logdepthbuf_pars_fragment>\n\t\t#include <clipping_planes_pars_fragment>\n\n\t\t// MeshWboitMaterial\n\n\t\tuniform float renderStage;\n\t\tuniform float weight;\n\n\t\tvoid main() {\n\n\t\t\t// MeshBasicMaterial\n\n\t\t\t#include <clipping_planes_fragment>\n\n\t\t\tvec4 diffuseColor = vec4( diffuse, opacity );\n\n\t\t\t#include <logdepthbuf_fragment>\n\t\t\t#include <map_fragment>\n\t\t\t#include <color_fragment>\n\t\t\t#include <alphamap_fragment>\n\t\t\t#include <alphatest_fragment>\n\t\t\t#include <alphahash_fragment>\n\t\t\t#include <specularmap_fragment>\n\n\t\t\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\n\t\t\t// accumulation (baked indirect lighting only)\n\n\t\t\t#ifdef USE_LIGHTMAP\n\n\t\t\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\t\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\n\t\t\t#else\n\n\t\t\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\n\t\t\t#endif\n\n\t\t\t// modulation\n\n\t\t\t#include <aomap_fragment>\n\n\t\t\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\n\t\t\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\n\t\t\t#include <envmap_fragment>\n\t\t\t#include <opaque_fragment>\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <colorspace_fragment>\n\t\t\t#include <fog_fragment>\n\t\t\t#include <premultiplied_alpha_fragment>\n\t\t\t#include <dithering_fragment>\n\n\t\t\t// MeshWboitMaterial\n\n\t\t\tif ( renderStage == ${ WboitStages.Acummulation.toFixed( 1 ) } ) {\n\n\t\t\t\tvec4 accum = gl_FragColor.rgba;\n\n\t\t\t\t#ifndef PREMULTIPLIED_ALPHA\n\t\t\t\t\taccum.rgb *= accum.a;\n\t\t\t\t#endif\n\n\t\t\t\tfloat z = gl_FragCoord.z;\n\n\t\t\t\t/* Equation #9 */\n\t\t\t\t// float w = accum.a * clamp( 0.03 / ( 1e-5 + pow( abs( z ) / 200.0, 4.0 ) ), 0.01, 300.0 );\n\n\t\t\t\t/* McGuire 10/2013 */\n\t\t\t\t// float w = clamp( pow( ( accum.a * 8.0 + 0.01 ) * ( - z * 0.95 + 1.0 ), 3.0 ) * 1e3, 1e-2, 3e2 );\n\n\t\t\t\t/* Stevinz, Adjustable Weight */\n\t\t\t\tfloat scaleWeight = 0.7 + ( 0.3 * weight );\n\t\t\t\tfloat w = clamp( pow( ( accum.a * 8.0 + 0.001 ) * ( - z * scaleWeight + 1.0 ), 3.0 ) * 1000.0, 0.001, 300.0 );\n\n\t\t\t\tgl_FragColor = accum * w;\n\n\t\t\t} else if ( renderStage == ${ WboitStages.Revealage.toFixed( 1 ) } ) {\n\n\t\t\t\t/* McGuire 10/2013 */\n\t\t\t\t// gl_FragColor = vec4( gl_FragColor.a );\n\n\t\t\t\t/* Stevinz, Distance Weighted */\n\t\t\t\tgl_FragColor = vec4( gl_FragColor.a * gl_FragCoord.z );\n\n\t\t\t}\n\n\t\t}`,\n\n};\n\n//\n\nclass MeshWboitMaterial extends ShaderMaterial {\n\n\tconstructor( parameters = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshWboitMaterial = true;\n\n\t\tthis.type = 'MeshWboitMaterial';\n\n\t\t// Flag for WboitPass\n\n\t\tthis.wboitEnabled = true;\n\n\t\t//\n\n\t\tconst shader = WboitBasicShader;\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\t\tthis.vertexShader = shader.vertexShader;\n\t\tthis.fragmentShader = shader.fragmentShader;\n\n\t\t// properties (no uniforms)\n\n\t\tthis.combine = MultiplyOperation;\n\n\t\tthis.transparent = true;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\t// properties (associated w/ uniforms)\n\n\t\tconst exposePropertyNames = [\n\n\t\t\t// Material\n\n\t\t\t'opacity',\n\n\t\t\t// MeshBasicMaterial\n\n\t\t\t'diffuse',\n\t\t\t'map',\n\t\t\t'lightMap',\n\t\t\t'lightMapIntensity',\n\t\t\t'aoMap',\n\t\t\t'aoMapIntensity',\n\t\t\t'specularMap',\n\t\t\t'alphaMap',\n\t\t\t'alphaTest',\n\t\t\t'envMap',\n\t\t\t'reflectivity',\n\t\t\t'refractionRatio',\n\n\t\t\t// MeshWboitMaterial,\n\n\t\t\t'weight',\n\n\t\t];\n\n\t\tfor ( const propertyName of exposePropertyNames ) {\n\n\t\t\tObject.defineProperty( this, propertyName, {\n\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn this.uniforms[ propertyName ].value;\n\n\t\t\t\t},\n\n\t\t\t\tset: function ( value ) {\n\n\t\t\t\t\tthis.uniforms[ propertyName ].value = value;\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\tObject.defineProperty( this, 'color', Object.getOwnPropertyDescriptor( this, 'diffuse' ) );\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\t// MeshBasicMaterial\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\t// MeshWboitMaterial\n\n\t\tthis.weight = source.weight;\n\n\t\treturn this;\n\n\t}\n\n}\n\nexport { MeshWboitMaterial, WboitStages };\n","/**\n * sRGBShader\n */\n\nconst sRGBShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tuniform sampler2D tDiffuse;\n\t\tvarying vec2 vUv;\n\t\tvoid main() {\n\t\t\tvec4 tex = texture2D( tDiffuse, vUv );\n\n            // Set color to fully opaque\n\t\t\t// tex.rgb *= tex.a;\n\t\t\ttex.a = 1.0;\n\n\t\t\t// LinearTosRGB( tex );\n            tex = vec4( mix( pow( tex.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), tex.rgb * 12.92, vec3( lessThanEqual( tex.rgb, vec3( 0.0031308 ) ) ) ), tex.a );\n\n            // Output\n            gl_FragColor = tex;\n\t\t}`\n\n};\n\nexport { sRGBShader };\n","/**\n * Combine accumulation and revealage for weighted, blended order-independent transparency\n */\n\nconst WboitCompositeShader = {\n\n\tuniforms: {\n\n\t\t'tAccumulation': { value: null },\n\t\t'tRevealage': { value: null },\n\t\t'uGamma': { value: 0 },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tprecision highp float;\n\t\tprecision highp int;\n\n\t\tvarying vec2 vUv;\n\n\t\tuniform sampler2D tAccumulation;\n\t\tuniform sampler2D tRevealage;\n\t\tuniform float uGamma;\n\n\t\tfloat EPSILON = 0.00001;\n\n\t\tbool fuzzyEqual( float a, float b ) {\n\n\t\t\treturn abs( a - b ) <= ( abs( a ) < abs( b ) ? abs( b ) : abs( a ) ) * EPSILON;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat reveal = texture2D( tRevealage, vUv ).r;\n\t\t\tif ( fuzzyEqual( reveal, 1.0 ) ) discard;\n\n\t\t\tvec4 accum = texture2D( tAccumulation, vUv );\n\n\t\t\tvec4 composite = vec4( accum.rgb / clamp( accum.a, 0.0001, 50000.0 ), reveal );\n\t\t\tvec4 color = clamp( composite, 0.01, 300.0 );\n\n\t\t\t// LinearTosRGB( color );\n\t\t\tif (uGamma > 0.0) {\n\t\t\t\tcolor.rgb = mix( pow( color.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), color.rgb * 12.92, vec3( lessThanEqual( color.rgb, vec3( 0.0031308 ) ) ) );\n\t\t\t}\n\n\t\t\tgl_FragColor = color;\n\n\t\t}`,\n\n};\n\nexport { WboitCompositeShader };\n","/** /////////////////////////////////////////////////////////////////////////////////\n//\n// @description WboitRenderer\n// @about       Weighted, blended order-independent transparency renderer for use with three.js WebGLRenderer\n// @author      Stephens Nunnally <@stevinz>\n// @license     MIT - Copyright (c) 2022 Stephens Nunnally\n// @source      https://github.com/stevinz/three-wboit\n//\n//      See end of file for license details and acknowledgements\n//\n///////////////////////////////////////////////////////////////////////////////////*/\n\nimport {\n\tAddEquation,\n\tColor,\n\tCustomBlending,\n\tFloatType,\n\tHalfFloatType,\n\tNearestFilter,\n\tOneFactor,\n\tOneMinusSrcAlphaFactor,\n\tRGBAFormat,\n\tSrcAlphaFactor,\n\tSRGBColorSpace,\n\tUnsignedByteType,\n\tVector2,\n\tWebGLRenderTarget,\n\tZeroFactor\n} from 'three';\n\nimport { Pass } from 'three/addons/postprocessing/Pass.js';\nimport { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';\n\nimport { FillShader } from './shaders/FillShader.js';\nimport { WboitCompositeShader } from './shaders/WboitCompositeShader.js';\nimport { WboitStages } from './materials/MeshWboitMaterial.js';\n\nconst _clearColorZero = new Color( 0.0, 0.0, 0.0 );\nconst _clearColorOne = new Color( 1.0, 1.0, 1.0 );\n\nconst CopyShader = {\n\n\tname: 'CopyShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor.a *= opacity;\n\n\n\t\t}`\n\n};\n\nconst CopyAlphaTestShader = {\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'uGamma': { value: 0 },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float uGamma;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 color = texture2D( tDiffuse, vUv );\n\t\t\tif ( color.a == 0.0 ) discard;\n\n\t\t\t// LinearTosRGB( color );\n\t\t\tif (uGamma > 0.0) {\n\t\t\t\tcolor.rgb = mix( pow( color.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), color.rgb * 12.92, vec3( lessThanEqual( color.rgb, vec3( 0.0031308 ) ) ) );\n\t\t\t}\n\n\t\t\tgl_FragColor = vec4(color.rgb, 1.0);\n\n\t\t}`\n\n};\n\n/**\n * Weighted, blended order independent transparency pass.\n * Transparent meshes should use MeshWboitMaterial.\n */\nclass WboitPass extends Pass {\n\n\tconstructor( renderer, scene, camera, clearColor, clearAlpha ) {\n\n\t\tif ( ! renderer ) return console.error( 'WboitPass: Renderer must be supplied!' );\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.clearColor = clearColor;\n\t\tthis.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;\n\n\t\tthis.clear = false;\n\t\tthis.clearDepth = false;\n\t\tthis.needsSwap = false;\n\n\t\t// Internal\n\n\t\tthis._oldClearColor = new Color();\n\t\tthis._blendingCache = new Map();\n\t\tthis._blendEquationCache = new Map();\n\t\tthis._blendSrcCache = new Map();\n\t\tthis._blendDstCache = new Map();\n\t\tthis._depthTestCache = new Map();\n\t\tthis._depthWriteCache = new Map();\n\t\tthis._visibilityCache = new Map();\n\n\t\t// Passes\n\n\t\tthis.opaquePass = new ShaderPass( CopyAlphaTestShader );\n\t\tthis.opaquePass.material.depthTest = false;\n\t\tthis.opaquePass.material.depthWrite = false;\n\t\tthis.opaquePass.material.blending = CustomBlending;\n\t\tthis.opaquePass.material.blendEquation = AddEquation;\n\t\tthis.opaquePass.material.blendSrc = OneFactor;\n\t\tthis.opaquePass.material.blendDst = ZeroFactor;\n\n\t\tthis.transparentPass = new ShaderPass( CopyAlphaTestShader );\n\t\tthis.transparentPass.material.depthTest = false;\n\t\tthis.transparentPass.material.depthWrite = false;\n\t\tthis.transparentPass.material.blending = CustomBlending;\n\t\tthis.transparentPass.material.blendEquation = AddEquation;\n\t\tthis.transparentPass.material.blendSrc = OneFactor;\n\t\tthis.transparentPass.material.blendDst = OneMinusSrcAlphaFactor;\n\n\t\tthis.copyPass = new ShaderPass( CopyShader );\n\t\tthis.copyPass.material.depthTest = false;\n\t\tthis.copyPass.material.depthWrite = false;\n\t\tthis.copyPass.material.blending = CustomBlending;\n\t\tthis.copyPass.material.blendEquation = AddEquation;\n\t\tthis.copyPass.material.blendSrc = OneFactor;\n\t\tthis.copyPass.material.blendDst = ZeroFactor;\n\n\t\tthis.compositePass = new ShaderPass( WboitCompositeShader );\n\t\tthis.compositePass.material.transparent = true;\n\t\tthis.compositePass.material.blending = CustomBlending;\n\t\tthis.compositePass.material.blendEquation = AddEquation;\n\t\tthis.compositePass.material.blendSrc = OneMinusSrcAlphaFactor;\n\t\tthis.compositePass.material.blendDst = SrcAlphaFactor;\n\n\t\tconst testPass = new ShaderPass( FillShader );\n\t\tconst testR = 1.0;\n\t\tconst testG = 1.0;\n\t\tconst testB = 1.0;\n\t\tconst testA = 0.0;\n\t\ttestPass.material.uniforms[ 'color' ].value = new Color( testR, testG, testB );\n\t\ttestPass.material.uniforms[ 'opacity' ].value = testA;\n\t\ttestPass.material.blending = CustomBlending;\n\t\ttestPass.material.blendEquation = AddEquation;\n\t\ttestPass.material.blendSrc = OneFactor;\n\t\ttestPass.material.blendDst = ZeroFactor;\n\n\t\t// Find Best Render Target Type\n\t\t// gl.getExtension( 'EXT_color_buffer_float' ) - lacking support, see:\n\t\t// https://stackoverflow.com/questions/28827511/webgl-ios-render-to-floating-point-texture\n\n\t\tconst size = renderer.getSize( new Vector2() );\n\t\tconst pixelRatio = renderer.getPixelRatio();\n\t\tconst effectiveWidth = size.width * pixelRatio;\n\t\tconst effectiveHeight = size.height * pixelRatio;\n\n\t\tconst gl = renderer.getContext();\n\n\t\tconst oldTarget = renderer.getRenderTarget();\n\t\tconst oldClearAlpha = renderer.getClearAlpha();\n\t\trenderer.getClearColor( this._oldClearColor );\n\n\t\tconst targetTypes = [ FloatType, HalfFloatType, UnsignedByteType ];\n\t\tconst targetGlTypes = [ gl.FLOAT, gl.HALF_FLOAT, gl.UNSIGNED_BYTE ];\n\t\tconst targetBuffers = [ new Float32Array( 4 ), new Uint16Array( 4 ), new Uint8Array( 4 ) ];\n\t\tconst targetDivisor = [ 1, 15360, 255 ];\n\n\t\tlet targetType;\n\n\t\tfor ( let i = 0; i < targetTypes.length; i ++ ) {\n\n\t\t\tconst testTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\tminFilter: NearestFilter,\n\t\t\t\tmagFilter: NearestFilter,\n\t\t\t\ttype: targetTypes[ i ],\n\t\t\t\tformat: RGBAFormat,\n\t\t\t\tstencilBuffer: false,\n\t\t\t\tdepthBuffer: true,\n\t\t\t} );\n\n\t\t\ttestPass.render( renderer, testTarget );\n\n\t\t\tgl.readPixels( 0, 0, 1, 1, gl.RGBA, targetGlTypes[ i ], targetBuffers[ i ] );\n\t\t\tconst rgba = Array.apply( [], targetBuffers[ i ] );\n\t\t\trgba[ 0 ] /= targetDivisor[ i ];\n\t\t\trgba[ 1 ] /= targetDivisor[ i ];\n\t\t\trgba[ 2 ] /= targetDivisor[ i ];\n\t\t\trgba[ 3 ] /= targetDivisor[ i ];\n\n\t\t\tfunction fuzzyEqual( a, b, epsilon = 0.01 ) {\n\n\t\t\t\treturn ( ( a < ( b + epsilon ) ) && ( a > ( b - epsilon ) ) );\n\n\t\t\t}\n\n\t\t\tlet complete = gl.checkFramebufferStatus( gl.FRAMEBUFFER ) === gl.FRAMEBUFFER_COMPLETE;\n\t\t\tcomplete = complete && fuzzyEqual( rgba[ 0 ], testR );\n\t\t\tcomplete = complete && fuzzyEqual( rgba[ 1 ], testG );\n\t\t\tcomplete = complete && fuzzyEqual( rgba[ 2 ], testB );\n\t\t\tcomplete = complete && fuzzyEqual( rgba[ 3 ], testA );\n\t\t\tcomplete = complete || i === targetTypes.length - 1;\n\n\t\t\ttestTarget.dispose();\n\n\t\t\tif ( complete ) {\n\n\t\t\t\ttargetType = targetTypes[ i ];\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( testPass.dispose ) testPass.dispose();\n\t\trenderer.setRenderTarget( oldTarget );\n\t\trenderer.setClearColor( this._oldClearColor, oldClearAlpha );\n\n\t\t// Render Targets\n\n\t\tthis.baseTarget = new WebGLRenderTarget( effectiveWidth, effectiveHeight, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: targetType,\n\t\t\tformat: RGBAFormat,\n\t\t\tstencilBuffer: false,\n\t\t\tdepthBuffer: true,\n\t\t} );\n\n\t\tthis.accumulationTarget = new WebGLRenderTarget( effectiveWidth, effectiveHeight, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: targetType,\n\t\t\tformat: RGBAFormat,\n\t\t\tstencilBuffer: false,\n\t\t\tdepthBuffer: false,\n\t\t} );\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.opaquePass.dispose ) this.opaquePass.dispose();\n\t\tif ( this.transparentPass.dispose ) this.transparentPass.dispose();\n\t\tif ( this.copyPass.dispose ) this.copyPass.dispose();\n\t\tif ( this.compositePass.dispose ) this.compositePass.dispose();\n\n\t\tthis.baseTarget.dispose();\n\t\tthis.accumulationTarget.dispose();\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.baseTarget.setSize( width, height );\n\t\tthis.accumulationTarget.setSize( width, height );\n\n\t}\n\n\trender( renderer, writeBuffer = null /* readBuffer = null, deltaTime, maskActive */ ) {\n\n\t\tconst scene = this.scene;\n\t\tif ( ! scene || ! scene.isScene ) return;\n\n\t\tconst cache = this._visibilityCache;\n\t\tconst blendingCache = this._blendingCache;\n\t\tconst blendEquationCache = this._blendEquationCache;\n\t\tconst blendSrcCache = this._blendSrcCache;\n\t\tconst blendDstCache = this._blendDstCache;\n\t\tconst testCache = this._depthTestCache;\n\t\tconst writeCache = this._depthWriteCache;\n\n\t\tconst opaqueMeshes = [];\n\t\tconst transparentMeshes = [];\n\t\tconst wboitMeshes = [];\n\n\t\tfunction gatherMeshes() {\n\n\t\t\tscene.traverse( ( object ) => {\n\n\t\t\t\tif ( ! object.material ) return;\n\t\t\t\tif ( ! object.visible ) return;\n\n\t\t\t\tconst materials = Array.isArray( object.material ) ? object.material : [ object.material ];\n\t\t\t\tlet isTransparent = true;\n\t\t\t\tlet isWboitCapable = true;\n\n\t\t\t\tfor ( let i = 0; i < materials.length; i ++ ) {\n\n\t\t\t\t\tisTransparent = isTransparent && materials[ i ].transparent;\n\t\t\t\t\tisWboitCapable = isWboitCapable && isTransparent && materials[ i ].wboitEnabled;\n\n\t\t\t\t\ttestCache.set( materials[ i ], materials[ i ].depthTest );\n\t\t\t\t\twriteCache.set( materials[ i ], materials[ i ].depthWrite );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! isWboitCapable ) {\n\n\t\t\t\t\tif ( ! isTransparent ) {\n\n\t\t\t\t\t\topaqueMeshes.push( object );\n\n\t\t\t\t\t\tfor ( let i = 0; i < materials.length; i ++ ) {\n\n\t\t\t\t\t\t\tmaterials[ i ].depthTest = true;\n\t\t\t\t\t\t\tmaterials[ i ].depthWrite = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttransparentMeshes.push( object );\n\n\t\t\t\t\t\tfor ( let i = 0; i < materials.length; i ++ ) {\n\n\t\t\t\t\t\t\tmaterials[ i ].depthTest = true;\n\t\t\t\t\t\t\tmaterials[ i ].depthWrite = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\twboitMeshes.push( object );\n\n\t\t\t\t\tfor ( let i = 0; i < materials.length; i ++ ) {\n\n\t\t\t\t\t\tblendingCache.set( materials[ i ], materials[ i ].blending );\n\t\t\t\t\t\tblendEquationCache.set( materials[ i ], materials[ i ].blendEquation );\n\t\t\t\t\t\tblendSrcCache.set( materials[ i ], materials[ i ].blendSrc );\n\t\t\t\t\t\tblendDstCache.set( materials[ i ], materials[ i ].blendDst );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcache.set( object, object.visible );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction changeVisible( opaqueVisible = true, transparentVisible = true, wboitVisible = true ) {\n\n\t\t\topaqueMeshes.forEach( mesh => mesh.visible = opaqueVisible );\n\t\t\ttransparentMeshes.forEach( mesh => mesh.visible = transparentVisible );\n\t\t\twboitMeshes.forEach( mesh => mesh.visible = wboitVisible );\n\n\t\t}\n\n\t\tfunction resetVisible() {\n\n\t\t\tfor ( const [ key, value ] of cache ) {\n\n\t\t\t\tkey.visible = value;\n\n\t\t\t\tif ( key.material ) {\n\n\t\t\t\t\tconst materials = Array.isArray( key.material ) ? key.material : [ key.material ];\n\n\t\t\t\t\tfor ( let i = 0; i < materials.length; i ++ ) {\n\n\t\t\t\t\t\tmaterials[ i ].depthWrite = testCache.get( materials[ i ] );\n\t\t\t\t\t\tmaterials[ i ].depthTest = writeCache.get( materials[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction prepareWboitBlending( stage ) {\n\n\t\t\twboitMeshes.forEach( ( mesh ) => {\n\n\t\t\t\tconst materials = Array.isArray( mesh.material ) ? mesh.material : [ mesh.material ];\n\n\t\t\t\tfor ( let i = 0; i < materials.length; i ++ ) {\n\n\t\t\t\t\tif ( materials[ i ].wboitEnabled !== true || materials[ i ].transparent !== true ) continue;\n\n\t\t\t\t\tif ( materials[ i ].renderStage ) {\n\n\t\t\t\t\t\tmaterials[ i ].renderStage = stage;\n\n\t\t\t\t\t} else if ( materials[ i ].uniforms && materials[ i ].uniforms[ 'renderStage' ] ) {\n\n\t\t\t\t\t\tmaterials[ i ].uniforms[ 'renderStage' ].value = stage.toFixed( 1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch ( stage ) {\n\n\t\t\t\t\t\tcase WboitStages.Acummulation:\n\n\t\t\t\t\t\t\tmaterials[ i ].blending = CustomBlending;\n\t\t\t\t\t\t\tmaterials[ i ].blendEquation = AddEquation;\n\t\t\t\t\t\t\tmaterials[ i ].blendSrc = OneFactor;\n\t\t\t\t\t\t\tmaterials[ i ].blendDst = OneFactor;\n\t\t\t\t\t\t\tmaterials[ i ].depthWrite = false;\n\t\t\t\t\t\t\tmaterials[ i ].depthTest = true;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase WboitStages.Revealage:\n\n\t\t\t\t\t\t\tmaterials[ i ].blending = CustomBlending;\n\t\t\t\t\t\t\tmaterials[ i ].blendEquation = AddEquation;\n\t\t\t\t\t\t\tmaterials[ i ].blendSrc = ZeroFactor;\n\t\t\t\t\t\t\tmaterials[ i ].blendDst = OneMinusSrcAlphaFactor;\n\t\t\t\t\t\t\tmaterials[ i ].depthWrite = false;\n\t\t\t\t\t\t\tmaterials[ i ].depthTest = true;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tmaterials[ i ].blending = blendingCache.get( materials[ i ] );\n\t\t\t\t\t\t\tmaterials[ i ].blendEquation = blendEquationCache.get( materials[ i ] );\n\t\t\t\t\t\t\tmaterials[ i ].blendSrc = blendSrcCache.get( materials[ i ] );\n\t\t\t\t\t\t\tmaterials[ i ].blendDst = blendDstCache.get( materials[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t\t// Save Current State\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\tconst oldClearAlpha = renderer.getClearAlpha();\n\t\tconst oldRenderTarget = renderer.getRenderTarget();\n\t\tconst oldOverrideMaterial = scene.overrideMaterial;\n\t\trenderer.autoClear = false;\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tscene.overrideMaterial = null;\n\n\t\t// Gather Opaque / Transparent Meshes\n\t\tgatherMeshes();\n\n\t\t// Clear Write Buffer\n\t\tif ( this.clearColor ) {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\trenderer.setClearColor( this.clearColor, this.clearAlpha );\n\t\t\trenderer.clearColor();\n\n\t\t}\n\n\t\t// Render Opaque Objects\n\t\tchangeVisible( true, false, false );\n\t\trenderer.setRenderTarget( this.baseTarget );\n\t\trenderer.setClearColor( _clearColorZero, 0.0 );\n\t\trenderer.clear();\n\t\trenderer.render( scene, this.camera );\n\n\t\t// Gamma Correction\n\t\tthis.opaquePass.material.uniforms['uGamma'].value = (renderer.outputColorSpace === SRGBColorSpace) ? 1 : 0;\n\t\tthis.transparentPass.material.uniforms['uGamma'].value = (renderer.outputColorSpace === SRGBColorSpace) ? 1 : 0;\n\t\tthis.compositePass.material.uniforms['uGamma'].value = (renderer.outputColorSpace === SRGBColorSpace) ? 1 : 0;\n\n\t\t// Copy 'Opaque Render' to write buffer so we can re-use depth buffer\n\t\tthis.opaquePass.render( renderer, writeBuffer, this.baseTarget );\n\n\t\t// Render Transparent Objects\n\t\tchangeVisible( false, true, false );\n\t\trenderer.setRenderTarget( this.baseTarget );\n\t\trenderer.clearColor();\n\t\trenderer.render( scene, this.camera );\n\n\t\t// Copy 'Transparent Render' to write buffer so we can re-use depth buffer\n\t\tthis.transparentPass.render( renderer, writeBuffer, this.baseTarget );\n\n\t\t// Render Wboit Objects, Accumulation Pass (copy render to write buffer so we can re-use depth buffer)\n\t\tchangeVisible( false, false, true );\n\t\tprepareWboitBlending( WboitStages.Acummulation );\n\t\trenderer.setRenderTarget( this.baseTarget );\n\t\trenderer.clearColor();\n\t\trenderer.render( scene, this.camera );\n\t\tthis.copyPass.render( renderer, this.accumulationTarget, this.baseTarget );\n\n\t\t// Render Wboit Objects, Revealage Pass\n\t\tprepareWboitBlending( WboitStages.Revealage );\n\t\trenderer.setRenderTarget( this.baseTarget );\n\t\trenderer.setClearColor( _clearColorOne, 1.0 );\n\t\trenderer.clearColor();\n\t\trenderer.render( scene, this.camera );\n\n\t\t// Composite Wboit Objects\n\t\trenderer.setRenderTarget( writeBuffer );\n\t\tthis.compositePass.uniforms[ 'tAccumulation' ].value = this.accumulationTarget.texture;\n\t\tthis.compositePass.uniforms[ 'tRevealage' ].value = this.baseTarget.texture; /* now holds revealage render */\n\t\tthis.compositePass.render( renderer, writeBuffer );\n\n\t\t// Restore Original State\n\t\tprepareWboitBlending( WboitStages.Normal );\n\t\tresetVisible();\n\t\trenderer.setRenderTarget( oldRenderTarget );\n\t\trenderer.setClearColor( this._oldClearColor, oldClearAlpha );\n\t\tscene.overrideMaterial = oldOverrideMaterial;\n\t\trenderer.autoClear = oldAutoClear;\n\n\t\t// Clear Caches\n\t\tcache.clear();\n\t\tblendingCache.clear();\n\t\tblendEquationCache.clear();\n\t\tblendSrcCache.clear();\n\t\tblendDstCache.clear();\n\t\ttestCache.clear();\n\t\twriteCache.clear();\n\n\t}\n\n}\n\nexport { WboitPass };\n\n/////////////////////////////////////////////////////////////////////////////////////\n/////   Reference\n/////////////////////////////////////////////////////////////////////////////////////\n//\n// Basic OIT Info:\n//      https://learnopengl.com/Guest-Articles/2020/OIT/Introduction\n//      https://en.wikipedia.org/wiki/Order-independent_transparency\n//\n// Weighted, Blended OIT:\n//      https://learnopengl.com/Guest-Articles/2020/OIT/Weighted-Blended\n//      https://therealmjp.github.io/posts/weighted-blended-oit/\n//\n// Multiple Render Targets:\n//      https://github.com/mrdoob/three.js/blob/master/examples/webgl2_multiple_rendertargets.html\n//\n// THREE Issue:\n//      https://github.com/mrdoob/three.js/issues/9977\n//\n/////////////////////////////////////////////////////////////////////////////////////\n/////   Acknowledgements\n/////////////////////////////////////////////////////////////////////////////////////\n//\n// Original Paper on WBOIT:\n//      Description:    Weighted, Blended Order-Independent Transparency\n//      Author:         Morgan McGuire and Louis Bavoil\n//      License:        CC BYND 3.0\n//      Source(s):      http://jcgt.org/published/0002/02/09/\n//                      http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html\n//                      http://casual-effects.blogspot.com/2015/03/implemented-weighted-blended-order.html\n//                      http://casual-effects.blogspot.com/2015/03/colored-blended-order-independent.html\n//                      http://casual-effects.com/research/McGuire2016Transparency/index.html\n//\n// Working WebGL 2 Example:\n//      Description:    WebGL 2 Example: Weighted, Blended Order-independent Transparency\n//      Author:         Tarek Sherif <@tsherif>\n//      License:        Distributed under the MIT License\n//      Source:         https://github.com/tsherif/webgl2examples/blob/master/oit.html\n//\n// Previous Three.js Progress:\n//      Description:    Depth Peel Example\n//      Author:         Dusan Bosnjak <@pailhead>\n//      Source:         https://github.com/mrdoob/three.js/pull/15490\n//                      https://raw.githack.com/pailhead/three.js/depth-peel-stencil/examples/webgl_materials_depthpeel.html\n//\n//      Description:    Weighted, Blended Example\n//      Author:         Alexander Rose <@arose>\n//      Source(s):      https://github.com/mrdoob/three.js/issues/4814\n//                      https://github.com/arose/three.js/tree/oit\n//                      https://github.com/mrdoob/three.js/compare/dev...arose:three.js:oit\n//                      https://raw.githack.com/arose/three.js/oit/examples/webgl_oit.html\n//\n/////////////////////////////////////////////////////////////////////////////////////\n/////   License\n/////////////////////////////////////////////////////////////////////////////////////\n//\n// MIT License\n//\n// three-wboit\n//      Copyright (c) 2022 Stephens Nunnally <@stevinz>\n//\n// Some Portions\n//      Copyright (c) 2010-2022 mrdoob and three.js authors\n//      Copyright (c) 2014 Alexander Rose\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n","/**\n * Helper utilities for WboitPass\n */\n\nimport { WboitStages } from './materials/MeshWboitMaterial.js';\n\nlet _materialCounter = 0;\nconst _stage = { value: 0.5 };\n\nclass WboitUtils {\n\n\tstatic patch( existingMaterial ) {\n\n\t\tlet materials = Array.isArray( existingMaterial ) ? existingMaterial : [ existingMaterial ];\n\n\t\tfor ( let i = 0; i < materials.length; i ++ ) {\n\n\t\t\tconst material = materials[i];\n\t\t\tif ( ! material.isMaterial ) continue;\n\t\t\tif ( material.wboitEnabled ) continue;\n\n\t\t\tconst existingOnBeforeCompile = material.onBeforeCompile;\n\n\t\t\tmaterial.onBeforeCompile = function( shader, renderer ) {\n\n\t\t\t\tif ( material.wboitEnabled === true ) return;\n\t\t\t\tmaterial.wboitEnabled = true;\n\n\t\t\t\tif (typeof existingOnBeforeCompile === 'function') existingOnBeforeCompile( shader, renderer );\n\n\t\t\t\tshader.uniforms.renderStage = _stage;\n\t\t\t\tshader.uniforms.weight = { value: 1.0 };\n\n\t\t\t\tshader.fragmentShader = `\n\t\t\t\t\tuniform float renderStage;\n\t\t\t\t\tuniform float weight;\n\t\t\t\t` + shader.fragmentShader;\n\n\t\t\t\t// shader.fragmentShader = shader.fragmentShader.replace('#include <tonemapping_fragment>', '');\n\t\t\t\t// shader.fragmentShader = shader.fragmentShader.replace('#include <colorspace_fragment>', '');\n\n\t\t\t\tshader.fragmentShader = shader.fragmentShader.replace( /}$/gm, `\n\n\t\t\t\t\tif ( renderStage == ${ WboitStages.Acummulation.toFixed( 1 ) } ) {\n\n\t\t\t\t\t\tvec4 accum = gl_FragColor.rgba;\n\n\t\t\t\t\t\t#ifndef PREMULTIPLIED_ALPHA\n\t\t\t\t\t\t\taccum.rgb *= accum.a;\n\t\t\t\t\t\t#endif\n\n\t\t\t\t\t\tfloat z = gl_FragCoord.z;\n\n\t\t\t\t\t\tfloat scaleWeight = 0.7 + ( 0.3 * weight );\n\t\t\t\t\t\tfloat w = clamp( pow( ( accum.a * 8.0 + 0.001 ) * ( - z * scaleWeight + 1.0 ), 3.0 ) * 1000.0, 0.001, 300.0 );\n\n\t\t\t\t\t\tgl_FragColor = accum * w;\n\n\t\t\t\t\t} else if ( renderStage == ${ WboitStages.Revealage.toFixed( 1 ) } ) {\n\n\t\t\t\t\t \tgl_FragColor = vec4( gl_FragColor.a * gl_FragCoord.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}` );\n\n\t\t\t\tObject.defineProperty( material, 'renderStage', {\n\n\t\t\t\t\tget: function() {\n\n\t\t\t\t\t\treturn _stage;\n\n\t\t\t\t\t},\n\n\t\t\t\t\tset: function( stage ) {\n\n\t\t\t\t\t\t_stage.value = parseFloat( stage );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst materialID = _materialCounter;\n\t\t\t_materialCounter ++;\n\n\t\t\tmaterial.customProgramCacheKey = function () {\n\n\t\t\t\treturn materialID;\n\n\t\t\t};\n\n\t\t\tmaterial.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nexport { WboitUtils };\n"],"names":["Color","UniformsUtils","UniformsLib","ShaderChunk","ShaderMaterial","MultiplyOperation","Pass","ShaderPass","CustomBlending","AddEquation","OneFactor","ZeroFactor","OneMinusSrcAlphaFactor","SrcAlphaFactor","Vector2","FloatType","HalfFloatType","UnsignedByteType","WebGLRenderTarget","NearestFilter","RGBAFormat","SRGBColorSpace"],"mappings":";;;;;;CAAA;CACA;CACA;AAKA;AACK,OAAC,UAAU,GAAG;AACnB;CACA,CAAC,QAAQ,EAAE;AACX;CACA,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAIA,WAAK,EAAE,QAAQ,EAAE,EAAE;CAC3C,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;AAC3B;CACA,EAAE;AACF;CACA,CAAC,YAAY,YAAY,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA,CAAC,cAAc,YAAY,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA;;ACzBK,OAAC,uBAAuB,GAAG;AAChC;CACA,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG;AACzC;CACA,IAAI,QAAQ,EAAEC,mBAAa,CAAC,KAAK,EAAE;CACnC,QAAQC,iBAAW,CAAC,MAAM;CAC1B,QAAQA,iBAAW,CAAC,WAAW;CAC/B,QAAQA,iBAAW,CAAC,MAAM;CAC1B,QAAQA,iBAAW,CAAC,KAAK;CACzB,QAAQA,iBAAW,CAAC,QAAQ;CAC5B,QAAQA,iBAAW,CAAC,GAAG;CACvB,KAAK,EAAE;AACP;CACA,IAAI,YAAY,EAAEC,iBAAW,CAAC,cAAc;AAC5C;CACA,IAAI,cAAc,EAAEA,iBAAW,CAAC,cAAc;AAC9C;CACA;;CC5BA;CACA;CACA;CACA;CACA;AAGA;CACA,MAAM,WAAW,GAAG;CACpB,CAAC,MAAM,EAAE,GAAG;CACZ,CAAC,YAAY,EAAE,GAAG;CAClB,CAAC,SAAS,EAAE,GAAG;CACf,CAAC,CAAC;AACF;CACA,MAAM,gBAAgB,GAAG;AACzB;CACA;CACA;CACA;CACA;AACA;CACA,CAAC,QAAQ,EAAEF,mBAAa,CAAC,KAAK,EAAE;CAChC,EAAE;CACF,GAAG,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;CAC9B,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;CACzB,GAAG;CACH,EAAEC,iBAAW,CAAC,MAAM;CACpB,EAAEA,iBAAW,CAAC,WAAW;CACzB,EAAEA,iBAAW,CAAC,MAAM;CACpB,EAAEA,iBAAW,CAAC,KAAK;CACnB,EAAEA,iBAAW,CAAC,QAAQ;CACtB,EAAEA,iBAAW,CAAC,GAAG;CACjB,EAAE,EAAE;AACJ;CACA,CAAC,YAAY,YAAY,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA,CAAC,cAAc,YAAY,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA,CAAC,CAAC;AACF;CACA;AACA;CACA,MAAM,iBAAiB,SAASE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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA;;CC/DA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AA0BA;CACA,MAAM,eAAe,GAAG,IAAIL,WAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;CACnD,MAAM,cAAc,GAAG,IAAIA,WAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClD;CACA,MAAM,UAAU,GAAG;AACnB;CACA,CAAC,IAAI,EAAE,YAAY;AACnB;CACA,CAAC,QAAQ,EAAE;AACX;CACA,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;CAC7B,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;AAC3B;CACA,EAAE;AACF;CACA,CAAC,YAAY,YAAY,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA,CAAC,cAAc,YAAY,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA,CAAC,CAAC;AACF;CACA,MAAM,mBAAmB,GAAG;AAC5B;CACA,CAAC,QAAQ,EAAE;AACX;CACA,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;CAC7B,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;AACxB;CACA,EAAE;AACF;CACA,CAAC,YAAY,YAAY,CAAC;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA,CAAC,cAAc,YAAY,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC;AACJ;CACA,CAAC,CAAC;AACF;CACA;C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"}