super-three 0.141.0 → 0.144.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/build/three.cjs +1558 -1034
- package/build/three.js +1558 -1034
- package/build/three.min.js +1 -1
- package/build/three.module.js +2012 -1243
- package/examples/js/animation/MMDPhysics.js +1 -16
- package/examples/js/controls/ArcballControls.js +16 -3
- package/examples/js/controls/FirstPersonControls.js +0 -7
- package/examples/js/controls/FlyControls.js +0 -8
- package/examples/js/controls/OrbitControls.js +0 -4
- package/examples/js/controls/PointerLockControls.js +0 -8
- package/examples/js/controls/TrackballControls.js +0 -2
- package/examples/js/controls/TransformControls.js +20 -16
- package/examples/js/effects/AnaglyphEffect.js +2 -2
- package/examples/js/effects/OutlineEffect.js +4 -24
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/js/effects/PeppersGhostEffect.js +2 -2
- package/examples/js/effects/StereoEffect.js +2 -2
- package/examples/js/environments/RoomEnvironment.js +22 -0
- package/examples/js/exporters/ColladaExporter.js +4 -13
- package/examples/js/exporters/DRACOExporter.js +0 -12
- package/examples/js/exporters/GLTFExporter.js +28 -29
- package/examples/js/exporters/OBJExporter.js +2 -23
- package/examples/js/exporters/PLYExporter.js +12 -24
- package/examples/js/exporters/STLExporter.js +0 -7
- package/examples/js/exporters/USDZExporter.js +6 -0
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/ParametricGeometry.js +1 -8
- package/examples/js/interactive/SelectionHelper.js +2 -0
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- package/examples/js/loaders/ColladaLoader.js +1 -0
- package/examples/js/loaders/DRACOLoader.js +2 -25
- package/examples/js/loaders/EXRLoader.js +2 -13
- package/examples/js/loaders/FBXLoader.js +10 -3
- package/examples/js/loaders/FontLoader.js +3 -16
- package/examples/js/loaders/GLTFLoader.js +52 -36
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
- package/examples/js/loaders/LDrawLoader.js +139 -74
- package/examples/js/loaders/OBJLoader.js +7 -13
- package/examples/js/loaders/PCDLoader.js +59 -14
- package/examples/js/loaders/PLYLoader.js +3 -3
- package/examples/js/loaders/SVGLoader.js +4 -3
- package/examples/js/loaders/TIFFLoader.js +31 -0
- package/examples/js/loaders/VRMLLoader.js +33 -24
- package/examples/js/loaders/VTKLoader.js +1 -1
- package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
- package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
- package/examples/js/materials/MeshGouraudMaterial.js +385 -0
- package/examples/js/math/ColorConverter.js +0 -50
- package/examples/js/misc/GPUComputationRenderer.js +23 -0
- package/examples/js/misc/Volume.js +198 -190
- package/examples/js/misc/VolumeSlice.js +90 -88
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/GroundProjectedEnv.js +193 -0
- package/examples/js/objects/Reflector.js +9 -2
- package/examples/js/objects/ReflectorForSSRPass.js +3 -4
- package/examples/js/objects/Refractor.js +10 -4
- package/examples/js/objects/ShadowMesh.js +5 -1
- package/examples/js/postprocessing/OutlinePass.js +5 -3
- package/examples/js/renderers/CSS2DRenderer.js +2 -2
- package/examples/js/renderers/CSS3DRenderer.js +2 -2
- package/examples/js/renderers/Projector.js +2 -23
- package/examples/js/shaders/LuminosityShader.js +1 -1
- package/examples/js/shaders/MMDToonShader.js +6 -2
- package/examples/js/shaders/ToneMapShader.js +1 -1
- package/examples/js/utils/BufferGeometryUtils.js +1 -1
- package/examples/js/utils/GeometryUtils.js +2 -18
- package/examples/js/utils/PackedPhongMaterial.js +1 -1
- package/examples/js/utils/SceneUtils.js +0 -16
- package/examples/jsm/animation/MMDPhysics.js +3 -22
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +0 -7
- package/examples/jsm/controls/FlyControls.js +0 -7
- package/examples/jsm/controls/OrbitControls.js +0 -5
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +0 -3
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -31
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +14 -3
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/interactive/HTMLMesh.js +9 -9
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +10 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +52 -36
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +192 -30
- package/examples/jsm/loaders/LDrawLoader.js +135 -74
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +59 -13
- package/examples/jsm/loaders/PLYLoader.js +3 -3
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +4 -3
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +393 -0
- package/examples/jsm/loaders/VRMLLoader.js +23 -25
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +43 -13
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
- package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +14 -12
- package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
- package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
- package/examples/jsm/nodes/materials/Materials.js +13 -25
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -12
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
- package/examples/jsm/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- package/examples/jsm/postprocessing/OutlinePass.js +5 -3
- package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -2
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +1 -21
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/package.json +18 -14
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +3 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +24 -5
- package/src/cameras/CubeCamera.js +0 -7
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +56 -7
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +2 -1
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +1 -0
- package/src/helpers/HemisphereLightHelper.js +1 -0
- package/src/helpers/PlaneHelper.js +6 -9
- package/src/helpers/PolarGridHelper.js +18 -14
- package/src/helpers/SpotLightHelper.js +1 -0
- package/src/lights/SpotLight.js +2 -0
- package/src/loaders/FileLoader.js +12 -1
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +4 -41
- package/src/materials/Material.js +1 -33
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +3 -13
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +1 -7
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- package/src/renderers/WebGLRenderer.js +84 -8
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib.js +31 -31
- package/src/renderers/shaders/UniformsLib.js +12 -11
- package/src/renderers/shaders/UniformsUtils.js +14 -0
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLLights.js +37 -13
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +10 -15
- package/src/renderers/webgl/WebGLState.js +47 -0
- package/src/renderers/webgl/WebGLUniforms.js +4 -4
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +2 -0
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +45 -37
- package/src/renderers/webxr/WebXRManager.js +58 -33
- package/src/scenes/Scene.js +16 -3
- package/src/textures/Source.js +1 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -144,9 +144,9 @@ function ShadowUniformsCache() {
|
|
|
144
144
|
|
|
145
145
|
let nextVersion = 0;
|
|
146
146
|
|
|
147
|
-
function
|
|
147
|
+
function shadowCastingAndTexturingLightsFirst( lightA, lightB ) {
|
|
148
148
|
|
|
149
|
-
return ( lightB.castShadow ?
|
|
149
|
+
return ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );
|
|
150
150
|
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -169,7 +169,8 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
169
169
|
|
|
170
170
|
numDirectionalShadows: - 1,
|
|
171
171
|
numPointShadows: - 1,
|
|
172
|
-
numSpotShadows: - 1
|
|
172
|
+
numSpotShadows: - 1,
|
|
173
|
+
numSpotMaps: - 1
|
|
173
174
|
},
|
|
174
175
|
|
|
175
176
|
ambient: [ 0, 0, 0 ],
|
|
@@ -179,9 +180,10 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
179
180
|
directionalShadowMap: [],
|
|
180
181
|
directionalShadowMatrix: [],
|
|
181
182
|
spot: [],
|
|
183
|
+
spotLightMap: [],
|
|
182
184
|
spotShadow: [],
|
|
183
185
|
spotShadowMap: [],
|
|
184
|
-
|
|
186
|
+
spotLightMatrix: [],
|
|
185
187
|
rectArea: [],
|
|
186
188
|
rectAreaLTC1: null,
|
|
187
189
|
rectAreaLTC2: null,
|
|
@@ -189,7 +191,8 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
189
191
|
pointShadow: [],
|
|
190
192
|
pointShadowMap: [],
|
|
191
193
|
pointShadowMatrix: [],
|
|
192
|
-
hemi: []
|
|
194
|
+
hemi: [],
|
|
195
|
+
numSpotLightShadowsWithMaps: 0
|
|
193
196
|
|
|
194
197
|
};
|
|
195
198
|
|
|
@@ -214,8 +217,11 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
214
217
|
let numDirectionalShadows = 0;
|
|
215
218
|
let numPointShadows = 0;
|
|
216
219
|
let numSpotShadows = 0;
|
|
220
|
+
let numSpotMaps = 0;
|
|
221
|
+
let numSpotShadowsWithMaps = 0;
|
|
217
222
|
|
|
218
|
-
|
|
223
|
+
// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]
|
|
224
|
+
lights.sort( shadowCastingAndTexturingLightsFirst );
|
|
219
225
|
|
|
220
226
|
// artist-friendly light intensity scaling factor
|
|
221
227
|
const scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;
|
|
@@ -286,9 +292,26 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
286
292
|
uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );
|
|
287
293
|
uniforms.decay = light.decay;
|
|
288
294
|
|
|
289
|
-
|
|
295
|
+
state.spot[ spotLength ] = uniforms;
|
|
290
296
|
|
|
291
|
-
|
|
297
|
+
const shadow = light.shadow;
|
|
298
|
+
|
|
299
|
+
if ( light.map ) {
|
|
300
|
+
|
|
301
|
+
state.spotLightMap[ numSpotMaps ] = light.map;
|
|
302
|
+
numSpotMaps ++;
|
|
303
|
+
|
|
304
|
+
// make sure the lightMatrix is up to date
|
|
305
|
+
// TODO : do it if required only
|
|
306
|
+
shadow.updateMatrices( light );
|
|
307
|
+
|
|
308
|
+
if ( light.castShadow ) numSpotShadowsWithMaps ++;
|
|
309
|
+
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
state.spotLightMatrix[ spotLength ] = shadow.matrix;
|
|
313
|
+
|
|
314
|
+
if ( light.castShadow ) {
|
|
292
315
|
|
|
293
316
|
const shadowUniforms = shadowCache.get( light );
|
|
294
317
|
|
|
@@ -299,14 +322,11 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
299
322
|
|
|
300
323
|
state.spotShadow[ spotLength ] = shadowUniforms;
|
|
301
324
|
state.spotShadowMap[ spotLength ] = shadowMap;
|
|
302
|
-
state.spotShadowMatrix[ spotLength ] = light.shadow.matrix;
|
|
303
325
|
|
|
304
326
|
numSpotShadows ++;
|
|
305
327
|
|
|
306
328
|
}
|
|
307
329
|
|
|
308
|
-
state.spot[ spotLength ] = uniforms;
|
|
309
|
-
|
|
310
330
|
spotLength ++;
|
|
311
331
|
|
|
312
332
|
} else if ( light.isRectAreaLight ) {
|
|
@@ -420,7 +440,8 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
420
440
|
hash.hemiLength !== hemiLength ||
|
|
421
441
|
hash.numDirectionalShadows !== numDirectionalShadows ||
|
|
422
442
|
hash.numPointShadows !== numPointShadows ||
|
|
423
|
-
hash.numSpotShadows !== numSpotShadows
|
|
443
|
+
hash.numSpotShadows !== numSpotShadows ||
|
|
444
|
+
hash.numSpotMaps !== numSpotMaps ) {
|
|
424
445
|
|
|
425
446
|
state.directional.length = directionalLength;
|
|
426
447
|
state.spot.length = spotLength;
|
|
@@ -436,7 +457,9 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
436
457
|
state.spotShadowMap.length = numSpotShadows;
|
|
437
458
|
state.directionalShadowMatrix.length = numDirectionalShadows;
|
|
438
459
|
state.pointShadowMatrix.length = numPointShadows;
|
|
439
|
-
state.
|
|
460
|
+
state.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;
|
|
461
|
+
state.spotLightMap.length = numSpotMaps;
|
|
462
|
+
state.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;
|
|
440
463
|
|
|
441
464
|
hash.directionalLength = directionalLength;
|
|
442
465
|
hash.pointLength = pointLength;
|
|
@@ -447,6 +470,7 @@ function WebGLLights( extensions, capabilities ) {
|
|
|
447
470
|
hash.numDirectionalShadows = numDirectionalShadows;
|
|
448
471
|
hash.numPointShadows = numPointShadows;
|
|
449
472
|
hash.numSpotShadows = numSpotShadows;
|
|
473
|
+
hash.numSpotMaps = numSpotMaps;
|
|
450
474
|
|
|
451
475
|
state.version = nextVersion ++;
|
|
452
476
|
|
|
@@ -15,20 +15,6 @@ function absNumericalSort( a, b ) {
|
|
|
15
15
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
function denormalize( morph, attribute ) {
|
|
19
|
-
|
|
20
|
-
let denominator = 1;
|
|
21
|
-
const array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;
|
|
22
|
-
|
|
23
|
-
if ( array instanceof Int8Array ) denominator = 127;
|
|
24
|
-
else if ( array instanceof Int16Array ) denominator = 32767;
|
|
25
|
-
else if ( array instanceof Int32Array ) denominator = 2147483647;
|
|
26
|
-
else console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );
|
|
27
|
-
|
|
28
|
-
morph.divideScalar( denominator );
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
18
|
function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
33
19
|
|
|
34
20
|
const influencesList = {};
|
|
@@ -112,8 +98,6 @@ function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
|
112
98
|
|
|
113
99
|
morph.fromBufferAttribute( morphTarget, j );
|
|
114
100
|
|
|
115
|
-
if ( morphTarget.normalized === true ) denormalize( morph, morphTarget );
|
|
116
|
-
|
|
117
101
|
buffer[ offset + stride + 0 ] = morph.x;
|
|
118
102
|
buffer[ offset + stride + 1 ] = morph.y;
|
|
119
103
|
buffer[ offset + stride + 2 ] = morph.z;
|
|
@@ -125,8 +109,6 @@ function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
|
125
109
|
|
|
126
110
|
morph.fromBufferAttribute( morphNormal, j );
|
|
127
111
|
|
|
128
|
-
if ( morphNormal.normalized === true ) denormalize( morph, morphNormal );
|
|
129
|
-
|
|
130
112
|
buffer[ offset + stride + 4 ] = morph.x;
|
|
131
113
|
buffer[ offset + stride + 5 ] = morph.y;
|
|
132
114
|
buffer[ offset + stride + 6 ] = morph.z;
|
|
@@ -138,8 +120,6 @@ function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
|
138
120
|
|
|
139
121
|
morph.fromBufferAttribute( morphColor, j );
|
|
140
122
|
|
|
141
|
-
if ( morphColor.normalized === true ) denormalize( morph, morphColor );
|
|
142
|
-
|
|
143
123
|
buffer[ offset + stride + 8 ] = morph.x;
|
|
144
124
|
buffer[ offset + stride + 9 ] = morph.y;
|
|
145
125
|
buffer[ offset + stride + 10 ] = morph.z;
|
|
@@ -176,13 +176,18 @@ function filterEmptyLine( string ) {
|
|
|
176
176
|
|
|
177
177
|
function replaceLightNums( string, parameters ) {
|
|
178
178
|
|
|
179
|
+
const numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;
|
|
180
|
+
|
|
179
181
|
return string
|
|
180
182
|
.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )
|
|
181
183
|
.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )
|
|
184
|
+
.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )
|
|
185
|
+
.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )
|
|
182
186
|
.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )
|
|
183
187
|
.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )
|
|
184
188
|
.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )
|
|
185
189
|
.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )
|
|
190
|
+
.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )
|
|
186
191
|
.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )
|
|
187
192
|
.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );
|
|
188
193
|
|
|
@@ -222,21 +227,11 @@ function includeReplacer( match, include ) {
|
|
|
222
227
|
|
|
223
228
|
// Unroll Loops
|
|
224
229
|
|
|
225
|
-
const deprecatedUnrollLoopPattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g;
|
|
226
230
|
const unrollLoopPattern = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;
|
|
227
231
|
|
|
228
232
|
function unrollLoops( string ) {
|
|
229
233
|
|
|
230
|
-
return string
|
|
231
|
-
.replace( unrollLoopPattern, loopReplacer )
|
|
232
|
-
.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
function deprecatedLoopReplacer( match, start, end, snippet ) {
|
|
237
|
-
|
|
238
|
-
console.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );
|
|
239
|
-
return loopReplacer( match, start, end, snippet );
|
|
234
|
+
return string.replace( unrollLoopPattern, loopReplacer );
|
|
240
235
|
|
|
241
236
|
}
|
|
242
237
|
|
|
@@ -199,12 +199,14 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
199
199
|
numDirLights: lights.directional.length,
|
|
200
200
|
numPointLights: lights.point.length,
|
|
201
201
|
numSpotLights: lights.spot.length,
|
|
202
|
+
numSpotLightMaps: lights.spotLightMap.length,
|
|
202
203
|
numRectAreaLights: lights.rectArea.length,
|
|
203
204
|
numHemiLights: lights.hemi.length,
|
|
204
205
|
|
|
205
206
|
numDirLightShadows: lights.directionalShadowMap.length,
|
|
206
207
|
numPointLightShadows: lights.pointShadowMap.length,
|
|
207
208
|
numSpotLightShadows: lights.spotShadowMap.length,
|
|
209
|
+
numSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,
|
|
208
210
|
|
|
209
211
|
numClippingPlanes: clipping.numPlanes,
|
|
210
212
|
numClipIntersection: clipping.numIntersection,
|
|
@@ -299,11 +301,13 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
299
301
|
array.push( parameters.numDirLights );
|
|
300
302
|
array.push( parameters.numPointLights );
|
|
301
303
|
array.push( parameters.numSpotLights );
|
|
304
|
+
array.push( parameters.numSpotLightMaps );
|
|
302
305
|
array.push( parameters.numHemiLights );
|
|
303
306
|
array.push( parameters.numRectAreaLights );
|
|
304
307
|
array.push( parameters.numDirLightShadows );
|
|
305
308
|
array.push( parameters.numPointLightShadows );
|
|
306
309
|
array.push( parameters.numSpotLightShadows );
|
|
310
|
+
array.push( parameters.numSpotLightShadowsWithMaps );
|
|
307
311
|
array.push( parameters.shadowMapType );
|
|
308
312
|
array.push( parameters.toneMapping );
|
|
309
313
|
array.push( parameters.numClippingPlanes );
|
|
@@ -382,60 +386,60 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
382
386
|
_programLayers.enable( 31 );
|
|
383
387
|
if ( parameters.uvsVertexOnly )
|
|
384
388
|
_programLayers.enable( 32 );
|
|
385
|
-
if ( parameters.fog )
|
|
386
|
-
_programLayers.enable( 33 );
|
|
387
389
|
|
|
388
390
|
array.push( _programLayers.mask );
|
|
389
391
|
_programLayers.disableAll();
|
|
390
392
|
|
|
391
|
-
if ( parameters.
|
|
393
|
+
if ( parameters.fog )
|
|
392
394
|
_programLayers.enable( 0 );
|
|
393
|
-
if ( parameters.
|
|
395
|
+
if ( parameters.useFog )
|
|
394
396
|
_programLayers.enable( 1 );
|
|
395
|
-
if ( parameters.
|
|
397
|
+
if ( parameters.flatShading )
|
|
396
398
|
_programLayers.enable( 2 );
|
|
397
|
-
if ( parameters.
|
|
399
|
+
if ( parameters.logarithmicDepthBuffer )
|
|
398
400
|
_programLayers.enable( 3 );
|
|
399
|
-
if ( parameters.
|
|
401
|
+
if ( parameters.skinning )
|
|
400
402
|
_programLayers.enable( 4 );
|
|
401
|
-
if ( parameters.
|
|
403
|
+
if ( parameters.morphTargets )
|
|
402
404
|
_programLayers.enable( 5 );
|
|
403
|
-
if ( parameters.
|
|
405
|
+
if ( parameters.morphNormals )
|
|
404
406
|
_programLayers.enable( 6 );
|
|
405
|
-
if ( parameters.
|
|
407
|
+
if ( parameters.morphColors )
|
|
406
408
|
_programLayers.enable( 7 );
|
|
407
|
-
if ( parameters.
|
|
409
|
+
if ( parameters.premultipliedAlpha )
|
|
408
410
|
_programLayers.enable( 8 );
|
|
409
|
-
if ( parameters.
|
|
411
|
+
if ( parameters.shadowMapEnabled )
|
|
410
412
|
_programLayers.enable( 9 );
|
|
411
|
-
if ( parameters.
|
|
413
|
+
if ( parameters.physicallyCorrectLights )
|
|
412
414
|
_programLayers.enable( 10 );
|
|
413
|
-
if ( parameters.
|
|
415
|
+
if ( parameters.doubleSided )
|
|
414
416
|
_programLayers.enable( 11 );
|
|
415
|
-
if ( parameters.
|
|
417
|
+
if ( parameters.flipSided )
|
|
416
418
|
_programLayers.enable( 12 );
|
|
417
|
-
if ( parameters.
|
|
419
|
+
if ( parameters.useDepthPacking )
|
|
418
420
|
_programLayers.enable( 13 );
|
|
419
|
-
if ( parameters.
|
|
421
|
+
if ( parameters.dithering )
|
|
420
422
|
_programLayers.enable( 14 );
|
|
421
|
-
if ( parameters.
|
|
423
|
+
if ( parameters.specularIntensityMap )
|
|
422
424
|
_programLayers.enable( 15 );
|
|
423
|
-
if ( parameters.
|
|
425
|
+
if ( parameters.specularColorMap )
|
|
424
426
|
_programLayers.enable( 16 );
|
|
425
|
-
if ( parameters.
|
|
427
|
+
if ( parameters.transmission )
|
|
426
428
|
_programLayers.enable( 17 );
|
|
427
|
-
if ( parameters.
|
|
429
|
+
if ( parameters.transmissionMap )
|
|
428
430
|
_programLayers.enable( 18 );
|
|
429
|
-
if ( parameters.
|
|
431
|
+
if ( parameters.thicknessMap )
|
|
430
432
|
_programLayers.enable( 19 );
|
|
431
|
-
if ( parameters.
|
|
433
|
+
if ( parameters.sheen )
|
|
432
434
|
_programLayers.enable( 20 );
|
|
433
|
-
if ( parameters.
|
|
435
|
+
if ( parameters.sheenColorMap )
|
|
434
436
|
_programLayers.enable( 21 );
|
|
435
|
-
if ( parameters.
|
|
437
|
+
if ( parameters.sheenRoughnessMap )
|
|
436
438
|
_programLayers.enable( 22 );
|
|
437
|
-
if ( parameters.
|
|
439
|
+
if ( parameters.decodeVideoTexture )
|
|
438
440
|
_programLayers.enable( 23 );
|
|
441
|
+
if ( parameters.opaque )
|
|
442
|
+
_programLayers.enable( 24 );
|
|
439
443
|
|
|
440
444
|
array.push( _programLayers.mask );
|
|
441
445
|
|
|
@@ -194,23 +194,24 @@ function WebGLRenderLists() {
|
|
|
194
194
|
|
|
195
195
|
function get( scene, renderCallDepth ) {
|
|
196
196
|
|
|
197
|
+
const listArray = lists.get( scene );
|
|
197
198
|
let list;
|
|
198
199
|
|
|
199
|
-
if (
|
|
200
|
+
if ( listArray === undefined ) {
|
|
200
201
|
|
|
201
202
|
list = new WebGLRenderList();
|
|
202
203
|
lists.set( scene, [ list ] );
|
|
203
204
|
|
|
204
205
|
} else {
|
|
205
206
|
|
|
206
|
-
if ( renderCallDepth >=
|
|
207
|
+
if ( renderCallDepth >= listArray.length ) {
|
|
207
208
|
|
|
208
209
|
list = new WebGLRenderList();
|
|
209
|
-
|
|
210
|
+
listArray.push( list );
|
|
210
211
|
|
|
211
212
|
} else {
|
|
212
213
|
|
|
213
|
-
list =
|
|
214
|
+
list = listArray[ renderCallDepth ];
|
|
214
215
|
|
|
215
216
|
}
|
|
216
217
|
|
|
@@ -63,23 +63,24 @@ function WebGLRenderStates( extensions, capabilities ) {
|
|
|
63
63
|
|
|
64
64
|
function get( scene, renderCallDepth = 0 ) {
|
|
65
65
|
|
|
66
|
+
const renderStateArray = renderStates.get( scene );
|
|
66
67
|
let renderState;
|
|
67
68
|
|
|
68
|
-
if (
|
|
69
|
+
if ( renderStateArray === undefined ) {
|
|
69
70
|
|
|
70
71
|
renderState = new WebGLRenderState( extensions, capabilities );
|
|
71
72
|
renderStates.set( scene, [ renderState ] );
|
|
72
73
|
|
|
73
74
|
} else {
|
|
74
75
|
|
|
75
|
-
if ( renderCallDepth >=
|
|
76
|
+
if ( renderCallDepth >= renderStateArray.length ) {
|
|
76
77
|
|
|
77
78
|
renderState = new WebGLRenderState( extensions, capabilities );
|
|
78
|
-
|
|
79
|
+
renderStateArray.push( renderState );
|
|
79
80
|
|
|
80
81
|
} else {
|
|
81
82
|
|
|
82
|
-
renderState =
|
|
83
|
+
renderState = renderStateArray[ renderCallDepth ];
|
|
83
84
|
|
|
84
85
|
}
|
|
85
86
|
|
|
@@ -77,29 +77,32 @@ class WebGLShaderCache {
|
|
|
77
77
|
_getShaderCacheForMaterial( material ) {
|
|
78
78
|
|
|
79
79
|
const cache = this.materialCache;
|
|
80
|
+
let set = cache.get( material );
|
|
80
81
|
|
|
81
|
-
if (
|
|
82
|
+
if ( set === undefined ) {
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
set = new Set();
|
|
85
|
+
cache.set( material, set );
|
|
84
86
|
|
|
85
87
|
}
|
|
86
88
|
|
|
87
|
-
return
|
|
89
|
+
return set;
|
|
88
90
|
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
_getShaderStage( code ) {
|
|
92
94
|
|
|
93
95
|
const cache = this.shaderCache;
|
|
96
|
+
let stage = cache.get( code );
|
|
94
97
|
|
|
95
|
-
if (
|
|
98
|
+
if ( stage === undefined ) {
|
|
96
99
|
|
|
97
|
-
|
|
100
|
+
stage = new WebGLShaderStage( code );
|
|
98
101
|
cache.set( code, stage );
|
|
99
102
|
|
|
100
103
|
}
|
|
101
104
|
|
|
102
|
-
return
|
|
105
|
+
return stage;
|
|
103
106
|
|
|
104
107
|
}
|
|
105
108
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FrontSide, BackSide, DoubleSide,
|
|
1
|
+
import { FrontSide, BackSide, DoubleSide, NearestFilter, PCFShadowMap, VSMShadowMap, RGBADepthPacking, NoBlending } from '../../constants.js';
|
|
2
2
|
import { WebGLRenderTarget } from '../WebGLRenderTarget.js';
|
|
3
3
|
import { MeshDepthMaterial } from '../../materials/MeshDepthMaterial.js';
|
|
4
4
|
import { MeshDistanceMaterial } from '../../materials/MeshDistanceMaterial.js';
|
|
@@ -131,20 +131,9 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
131
131
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
if ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {
|
|
135
|
-
|
|
136
|
-
shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );
|
|
137
|
-
shadow.map.texture.name = light.name + '.shadowMap';
|
|
138
|
-
|
|
139
|
-
shadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );
|
|
140
|
-
|
|
141
|
-
shadow.camera.updateProjectionMatrix();
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
|
|
145
134
|
if ( shadow.map === null ) {
|
|
146
135
|
|
|
147
|
-
const pars = { minFilter: NearestFilter, magFilter: NearestFilter
|
|
136
|
+
const pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};
|
|
148
137
|
|
|
149
138
|
shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );
|
|
150
139
|
shadow.map.texture.name = light.name + '.shadowMap';
|
|
@@ -181,7 +170,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
181
170
|
|
|
182
171
|
// do blur pass for VSM
|
|
183
172
|
|
|
184
|
-
if (
|
|
173
|
+
if ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {
|
|
185
174
|
|
|
186
175
|
VSMPass( shadow, camera );
|
|
187
176
|
|
|
@@ -211,6 +200,12 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
211
200
|
|
|
212
201
|
}
|
|
213
202
|
|
|
203
|
+
if ( shadow.mapPass === null ) {
|
|
204
|
+
|
|
205
|
+
shadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );
|
|
206
|
+
|
|
207
|
+
}
|
|
208
|
+
|
|
214
209
|
// vertical pass
|
|
215
210
|
|
|
216
211
|
shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;
|
|
@@ -247,7 +242,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
|
|
|
247
242
|
|
|
248
243
|
}
|
|
249
244
|
|
|
250
|
-
if ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||
|
|
245
|
+
if ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||
|
|
251
246
|
( material.displacementMap && material.displacementScale !== 0 ) ||
|
|
252
247
|
( material.alphaMap && material.alphaTest > 0 ) ) {
|
|
253
248
|
|
|
@@ -314,6 +314,9 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
314
314
|
const depthBuffer = new DepthBuffer();
|
|
315
315
|
const stencilBuffer = new StencilBuffer();
|
|
316
316
|
|
|
317
|
+
const uboBindings = new WeakMap();
|
|
318
|
+
const uboProgamMap = new WeakMap();
|
|
319
|
+
|
|
317
320
|
let enabledCapabilities = {};
|
|
318
321
|
|
|
319
322
|
let currentBoundFramebuffers = {};
|
|
@@ -1064,6 +1067,47 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
1064
1067
|
|
|
1065
1068
|
}
|
|
1066
1069
|
|
|
1070
|
+
function updateUBOMapping( uniformsGroup, program ) {
|
|
1071
|
+
|
|
1072
|
+
let mapping = uboProgamMap.get( program );
|
|
1073
|
+
|
|
1074
|
+
if ( mapping === undefined ) {
|
|
1075
|
+
|
|
1076
|
+
mapping = new WeakMap();
|
|
1077
|
+
|
|
1078
|
+
uboProgamMap.set( program, mapping );
|
|
1079
|
+
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
let blockIndex = mapping.get( uniformsGroup );
|
|
1083
|
+
|
|
1084
|
+
if ( blockIndex === undefined ) {
|
|
1085
|
+
|
|
1086
|
+
blockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );
|
|
1087
|
+
|
|
1088
|
+
mapping.set( uniformsGroup, blockIndex );
|
|
1089
|
+
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
function uniformBlockBinding( uniformsGroup, program ) {
|
|
1095
|
+
|
|
1096
|
+
const mapping = uboProgamMap.get( program );
|
|
1097
|
+
const blockIndex = mapping.get( uniformsGroup );
|
|
1098
|
+
|
|
1099
|
+
if ( uboBindings.get( uniformsGroup ) !== blockIndex ) {
|
|
1100
|
+
|
|
1101
|
+
// bind shader specific block index to global block point
|
|
1102
|
+
|
|
1103
|
+
gl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );
|
|
1104
|
+
|
|
1105
|
+
uboBindings.set( uniformsGroup, blockIndex );
|
|
1106
|
+
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1067
1111
|
//
|
|
1068
1112
|
|
|
1069
1113
|
function reset() {
|
|
@@ -1191,6 +1235,9 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
1191
1235
|
texImage2D: texImage2D,
|
|
1192
1236
|
texImage3D: texImage3D,
|
|
1193
1237
|
|
|
1238
|
+
updateUBOMapping: updateUBOMapping,
|
|
1239
|
+
uniformBlockBinding: uniformBlockBinding,
|
|
1240
|
+
|
|
1194
1241
|
texStorage2D: texStorage2D,
|
|
1195
1242
|
texStorage3D: texStorage3D,
|
|
1196
1243
|
texSubImage2D: texSubImage2D,
|
|
@@ -46,10 +46,10 @@ import { Texture } from '../../textures/Texture.js';
|
|
|
46
46
|
import { DataArrayTexture } from '../../textures/DataArrayTexture.js';
|
|
47
47
|
import { Data3DTexture } from '../../textures/Data3DTexture.js';
|
|
48
48
|
|
|
49
|
-
const emptyTexture = new Texture();
|
|
50
|
-
const emptyArrayTexture = new DataArrayTexture();
|
|
51
|
-
const empty3dTexture = new Data3DTexture();
|
|
52
|
-
const emptyCubeTexture = new CubeTexture();
|
|
49
|
+
const emptyTexture = /*@__PURE__*/ new Texture();
|
|
50
|
+
const emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();
|
|
51
|
+
const empty3dTexture = /*@__PURE__*/ new Data3DTexture();
|
|
52
|
+
const emptyCubeTexture = /*@__PURE__*/ new CubeTexture();
|
|
53
53
|
|
|
54
54
|
// --- Utilities ---
|
|
55
55
|
|