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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Material } from './Material.js';
|
|
2
|
-
import { cloneUniforms } from '../renderers/shaders/UniformsUtils.js';
|
|
2
|
+
import { cloneUniforms, cloneUniformsGroups } from '../renderers/shaders/UniformsUtils.js';
|
|
3
3
|
|
|
4
4
|
import default_vertex from '../renderers/shaders/ShaderChunk/default_vertex.glsl.js';
|
|
5
5
|
import default_fragment from '../renderers/shaders/ShaderChunk/default_fragment.glsl.js';
|
|
@@ -16,6 +16,7 @@ class ShaderMaterial extends Material {
|
|
|
16
16
|
|
|
17
17
|
this.defines = {};
|
|
18
18
|
this.uniforms = {};
|
|
19
|
+
this.uniformsGroups = [];
|
|
19
20
|
|
|
20
21
|
this.vertexShader = default_vertex;
|
|
21
22
|
this.fragmentShader = default_fragment;
|
|
@@ -51,12 +52,6 @@ class ShaderMaterial extends Material {
|
|
|
51
52
|
|
|
52
53
|
if ( parameters !== undefined ) {
|
|
53
54
|
|
|
54
|
-
if ( parameters.attributes !== undefined ) {
|
|
55
|
-
|
|
56
|
-
console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
55
|
this.setValues( parameters );
|
|
61
56
|
|
|
62
57
|
}
|
|
@@ -71,6 +66,7 @@ class ShaderMaterial extends Material {
|
|
|
71
66
|
this.vertexShader = source.vertexShader;
|
|
72
67
|
|
|
73
68
|
this.uniforms = cloneUniforms( source.uniforms );
|
|
69
|
+
this.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );
|
|
74
70
|
|
|
75
71
|
this.defines = Object.assign( {}, source.defines );
|
|
76
72
|
|
package/src/math/Color.js
CHANGED
|
@@ -222,12 +222,12 @@ class Color {
|
|
|
222
222
|
case 'hsl':
|
|
223
223
|
case 'hsla':
|
|
224
224
|
|
|
225
|
-
if ( color = /^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( components ) ) {
|
|
225
|
+
if ( color = /^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( components ) ) {
|
|
226
226
|
|
|
227
227
|
// hsl(120,50%,50%) hsla(120,50%,50%,0.5)
|
|
228
228
|
const h = parseFloat( color[ 1 ] ) / 360;
|
|
229
|
-
const s =
|
|
230
|
-
const l =
|
|
229
|
+
const s = parseFloat( color[ 2 ] ) / 100;
|
|
230
|
+
const l = parseFloat( color[ 3 ] ) / 100;
|
|
231
231
|
|
|
232
232
|
handleAlpha( color[ 4 ] );
|
|
233
233
|
|
|
@@ -580,16 +580,6 @@ class Color {
|
|
|
580
580
|
this.g = attribute.getY( index );
|
|
581
581
|
this.b = attribute.getZ( index );
|
|
582
582
|
|
|
583
|
-
if ( attribute.normalized === true ) {
|
|
584
|
-
|
|
585
|
-
// assuming Uint8Array
|
|
586
|
-
|
|
587
|
-
this.r /= 255;
|
|
588
|
-
this.g /= 255;
|
|
589
|
-
this.b /= 255;
|
|
590
|
-
|
|
591
|
-
}
|
|
592
|
-
|
|
593
583
|
return this;
|
|
594
584
|
|
|
595
585
|
}
|
package/src/math/MathUtils.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
const _lut = [];
|
|
2
|
-
|
|
3
|
-
for ( let i = 0; i < 256; i ++ ) {
|
|
4
|
-
|
|
5
|
-
_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );
|
|
6
|
-
|
|
7
|
-
}
|
|
1
|
+
const _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];
|
|
8
2
|
|
|
9
3
|
let _seed = 1234567;
|
|
10
4
|
|
package/src/math/Matrix3.js
CHANGED
|
@@ -2,7 +2,7 @@ class Matrix3 {
|
|
|
2
2
|
|
|
3
3
|
constructor() {
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Matrix3.prototype.isMatrix3 = true;
|
|
6
6
|
|
|
7
7
|
this.elements = [
|
|
8
8
|
|
|
@@ -12,12 +12,6 @@ class Matrix3 {
|
|
|
12
12
|
|
|
13
13
|
];
|
|
14
14
|
|
|
15
|
-
if ( arguments.length > 0 ) {
|
|
16
|
-
|
|
17
|
-
console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
15
|
}
|
|
22
16
|
|
|
23
17
|
set( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {
|
package/src/math/Matrix4.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Vector3 } from './Vector3.js';
|
|
2
|
+
|
|
2
3
|
class Matrix4 {
|
|
3
4
|
|
|
4
5
|
constructor() {
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
Matrix4.prototype.isMatrix4 = true;
|
|
7
8
|
|
|
8
9
|
this.elements = [
|
|
9
10
|
|
|
@@ -14,12 +15,6 @@ class Matrix4 {
|
|
|
14
15
|
|
|
15
16
|
];
|
|
16
17
|
|
|
17
|
-
if ( arguments.length > 0 ) {
|
|
18
|
-
|
|
19
|
-
console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
18
|
}
|
|
24
19
|
|
|
25
20
|
set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {
|
|
@@ -159,12 +154,6 @@ class Matrix4 {
|
|
|
159
154
|
|
|
160
155
|
makeRotationFromEuler( euler ) {
|
|
161
156
|
|
|
162
|
-
if ( ! ( euler && euler.isEuler ) ) {
|
|
163
|
-
|
|
164
|
-
console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
|
|
168
157
|
const te = this.elements;
|
|
169
158
|
|
|
170
159
|
const x = euler.x, y = euler.y, z = euler.z;
|
|
@@ -338,14 +327,7 @@ class Matrix4 {
|
|
|
338
327
|
|
|
339
328
|
}
|
|
340
329
|
|
|
341
|
-
multiply( m
|
|
342
|
-
|
|
343
|
-
if ( n !== undefined ) {
|
|
344
|
-
|
|
345
|
-
console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );
|
|
346
|
-
return this.multiplyMatrices( m, n );
|
|
347
|
-
|
|
348
|
-
}
|
|
330
|
+
multiply( m ) {
|
|
349
331
|
|
|
350
332
|
return this.multiplyMatrices( this, m );
|
|
351
333
|
|
|
@@ -772,12 +754,6 @@ class Matrix4 {
|
|
|
772
754
|
|
|
773
755
|
makePerspective( left, right, top, bottom, near, far ) {
|
|
774
756
|
|
|
775
|
-
if ( far === undefined ) {
|
|
776
|
-
|
|
777
|
-
console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );
|
|
778
|
-
|
|
779
|
-
}
|
|
780
|
-
|
|
781
757
|
const te = this.elements;
|
|
782
758
|
const x = 2 * near / ( right - left );
|
|
783
759
|
const y = 2 * near / ( top - bottom );
|
package/src/math/Quaternion.js
CHANGED
|
@@ -13,13 +13,6 @@ class Quaternion {
|
|
|
13
13
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
static slerp( qa, qb, qm, t ) {
|
|
17
|
-
|
|
18
|
-
console.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );
|
|
19
|
-
return qm.slerpQuaternions( qa, qb, t );
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
16
|
static slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {
|
|
24
17
|
|
|
25
18
|
// fuzz-free, array-based Quaternion SLERP operation
|
|
@@ -207,12 +200,6 @@ class Quaternion {
|
|
|
207
200
|
|
|
208
201
|
setFromEuler( euler, update ) {
|
|
209
202
|
|
|
210
|
-
if ( ! ( euler && euler.isEuler ) ) {
|
|
211
|
-
|
|
212
|
-
throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
|
|
216
203
|
const x = euler._x, y = euler._y, z = euler._z, order = euler._order;
|
|
217
204
|
|
|
218
205
|
// http://www.mathworks.com/matlabcentral/fileexchange/
|
|
@@ -497,14 +484,7 @@ class Quaternion {
|
|
|
497
484
|
|
|
498
485
|
}
|
|
499
486
|
|
|
500
|
-
multiply( q
|
|
501
|
-
|
|
502
|
-
if ( p !== undefined ) {
|
|
503
|
-
|
|
504
|
-
console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );
|
|
505
|
-
return this.multiplyQuaternions( q, p );
|
|
506
|
-
|
|
507
|
-
}
|
|
487
|
+
multiply( q ) {
|
|
508
488
|
|
|
509
489
|
return this.multiplyQuaternions( this, q );
|
|
510
490
|
|
package/src/math/Vector2.js
CHANGED
|
@@ -2,7 +2,7 @@ class Vector2 {
|
|
|
2
2
|
|
|
3
3
|
constructor( x = 0, y = 0 ) {
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Vector2.prototype.isVector2 = true;
|
|
6
6
|
|
|
7
7
|
this.x = x;
|
|
8
8
|
this.y = y;
|
|
@@ -108,14 +108,7 @@ class Vector2 {
|
|
|
108
108
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
add( v
|
|
112
|
-
|
|
113
|
-
if ( w !== undefined ) {
|
|
114
|
-
|
|
115
|
-
console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );
|
|
116
|
-
return this.addVectors( v, w );
|
|
117
|
-
|
|
118
|
-
}
|
|
111
|
+
add( v ) {
|
|
119
112
|
|
|
120
113
|
this.x += v.x;
|
|
121
114
|
this.y += v.y;
|
|
@@ -151,14 +144,7 @@ class Vector2 {
|
|
|
151
144
|
|
|
152
145
|
}
|
|
153
146
|
|
|
154
|
-
sub( v
|
|
155
|
-
|
|
156
|
-
if ( w !== undefined ) {
|
|
157
|
-
|
|
158
|
-
console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );
|
|
159
|
-
return this.subVectors( v, w );
|
|
160
|
-
|
|
161
|
-
}
|
|
147
|
+
sub( v ) {
|
|
162
148
|
|
|
163
149
|
this.x -= v.x;
|
|
164
150
|
this.y -= v.y;
|
|
@@ -434,13 +420,7 @@ class Vector2 {
|
|
|
434
420
|
|
|
435
421
|
}
|
|
436
422
|
|
|
437
|
-
fromBufferAttribute( attribute, index
|
|
438
|
-
|
|
439
|
-
if ( offset !== undefined ) {
|
|
440
|
-
|
|
441
|
-
console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );
|
|
442
|
-
|
|
443
|
-
}
|
|
423
|
+
fromBufferAttribute( attribute, index ) {
|
|
444
424
|
|
|
445
425
|
this.x = attribute.getX( index );
|
|
446
426
|
this.y = attribute.getY( index );
|
package/src/math/Vector3.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as MathUtils from './MathUtils.js';
|
|
2
2
|
import { Quaternion } from './Quaternion.js';
|
|
3
|
+
|
|
3
4
|
class Vector3 {
|
|
4
5
|
|
|
5
6
|
constructor( x = 0, y = 0, z = 0 ) {
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
Vector3.prototype.isVector3 = true;
|
|
8
9
|
|
|
9
10
|
this.x = x;
|
|
10
11
|
this.y = y;
|
|
@@ -102,14 +103,7 @@ class Vector3 {
|
|
|
102
103
|
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
add( v
|
|
106
|
-
|
|
107
|
-
if ( w !== undefined ) {
|
|
108
|
-
|
|
109
|
-
console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );
|
|
110
|
-
return this.addVectors( v, w );
|
|
111
|
-
|
|
112
|
-
}
|
|
106
|
+
add( v ) {
|
|
113
107
|
|
|
114
108
|
this.x += v.x;
|
|
115
109
|
this.y += v.y;
|
|
@@ -149,14 +143,7 @@ class Vector3 {
|
|
|
149
143
|
|
|
150
144
|
}
|
|
151
145
|
|
|
152
|
-
sub( v
|
|
153
|
-
|
|
154
|
-
if ( w !== undefined ) {
|
|
155
|
-
|
|
156
|
-
console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );
|
|
157
|
-
return this.subVectors( v, w );
|
|
158
|
-
|
|
159
|
-
}
|
|
146
|
+
sub( v ) {
|
|
160
147
|
|
|
161
148
|
this.x -= v.x;
|
|
162
149
|
this.y -= v.y;
|
|
@@ -186,14 +173,7 @@ class Vector3 {
|
|
|
186
173
|
|
|
187
174
|
}
|
|
188
175
|
|
|
189
|
-
multiply( v
|
|
190
|
-
|
|
191
|
-
if ( w !== undefined ) {
|
|
192
|
-
|
|
193
|
-
console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );
|
|
194
|
-
return this.multiplyVectors( v, w );
|
|
195
|
-
|
|
196
|
-
}
|
|
176
|
+
multiply( v ) {
|
|
197
177
|
|
|
198
178
|
this.x *= v.x;
|
|
199
179
|
this.y *= v.y;
|
|
@@ -225,12 +205,6 @@ class Vector3 {
|
|
|
225
205
|
|
|
226
206
|
applyEuler( euler ) {
|
|
227
207
|
|
|
228
|
-
if ( ! ( euler && euler.isEuler ) ) {
|
|
229
|
-
|
|
230
|
-
console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
|
|
234
208
|
return this.applyQuaternion( _quaternion.setFromEuler( euler ) );
|
|
235
209
|
|
|
236
210
|
}
|
|
@@ -499,14 +473,7 @@ class Vector3 {
|
|
|
499
473
|
|
|
500
474
|
}
|
|
501
475
|
|
|
502
|
-
cross( v
|
|
503
|
-
|
|
504
|
-
if ( w !== undefined ) {
|
|
505
|
-
|
|
506
|
-
console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );
|
|
507
|
-
return this.crossVectors( v, w );
|
|
508
|
-
|
|
509
|
-
}
|
|
476
|
+
cross( v ) {
|
|
510
477
|
|
|
511
478
|
return this.crossVectors( this, v );
|
|
512
479
|
|
|
@@ -696,13 +663,7 @@ class Vector3 {
|
|
|
696
663
|
|
|
697
664
|
}
|
|
698
665
|
|
|
699
|
-
fromBufferAttribute( attribute, index
|
|
700
|
-
|
|
701
|
-
if ( offset !== undefined ) {
|
|
702
|
-
|
|
703
|
-
console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );
|
|
704
|
-
|
|
705
|
-
}
|
|
666
|
+
fromBufferAttribute( attribute, index ) {
|
|
706
667
|
|
|
707
668
|
this.x = attribute.getX( index );
|
|
708
669
|
this.y = attribute.getY( index );
|
package/src/math/Vector4.js
CHANGED
|
@@ -2,7 +2,7 @@ class Vector4 {
|
|
|
2
2
|
|
|
3
3
|
constructor( x = 0, y = 0, z = 0, w = 1 ) {
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Vector4.prototype.isVector4 = true;
|
|
6
6
|
|
|
7
7
|
this.x = x;
|
|
8
8
|
this.y = y;
|
|
@@ -136,14 +136,7 @@ class Vector4 {
|
|
|
136
136
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
add( v
|
|
140
|
-
|
|
141
|
-
if ( w !== undefined ) {
|
|
142
|
-
|
|
143
|
-
console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );
|
|
144
|
-
return this.addVectors( v, w );
|
|
145
|
-
|
|
146
|
-
}
|
|
139
|
+
add( v ) {
|
|
147
140
|
|
|
148
141
|
this.x += v.x;
|
|
149
142
|
this.y += v.y;
|
|
@@ -187,14 +180,7 @@ class Vector4 {
|
|
|
187
180
|
|
|
188
181
|
}
|
|
189
182
|
|
|
190
|
-
sub( v
|
|
191
|
-
|
|
192
|
-
if ( w !== undefined ) {
|
|
193
|
-
|
|
194
|
-
console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );
|
|
195
|
-
return this.subVectors( v, w );
|
|
196
|
-
|
|
197
|
-
}
|
|
183
|
+
sub( v ) {
|
|
198
184
|
|
|
199
185
|
this.x -= v.x;
|
|
200
186
|
this.y -= v.y;
|
|
@@ -622,13 +608,7 @@ class Vector4 {
|
|
|
622
608
|
|
|
623
609
|
}
|
|
624
610
|
|
|
625
|
-
fromBufferAttribute( attribute, index
|
|
626
|
-
|
|
627
|
-
if ( offset !== undefined ) {
|
|
628
|
-
|
|
629
|
-
console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );
|
|
630
|
-
|
|
631
|
-
}
|
|
611
|
+
fromBufferAttribute( attribute, index ) {
|
|
632
612
|
|
|
633
613
|
this.x = attribute.getX( index );
|
|
634
614
|
this.y = attribute.getY( index );
|
|
@@ -45,6 +45,7 @@ import { WebGLUtils } from './webgl/WebGLUtils.js';
|
|
|
45
45
|
import { WebVRManager } from './webvr/WebVRManager.js';
|
|
46
46
|
import { WebXRManager } from './webxr/WebXRManager.js';
|
|
47
47
|
import { WebGLMaterials } from './webgl/WebGLMaterials.js';
|
|
48
|
+
import { WebGLUniformsGroups } from './webgl/WebGLUniformsGroups.js';
|
|
48
49
|
import { createElementNS } from '../utils.js';
|
|
49
50
|
|
|
50
51
|
function createCanvasElement() {
|
|
@@ -308,7 +309,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
308
309
|
|
|
309
310
|
let background, morphtargets, bufferRenderer, indexedBufferRenderer;
|
|
310
311
|
|
|
311
|
-
let utils, bindingStates;
|
|
312
|
+
let utils, bindingStates, uniformsGroups;
|
|
312
313
|
|
|
313
314
|
function initGLContext() {
|
|
314
315
|
|
|
@@ -339,6 +340,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
339
340
|
renderStates = new WebGLRenderStates( extensions, capabilities );
|
|
340
341
|
background = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );
|
|
341
342
|
shadowMap = new WebGLShadowMap( _this, objects, capabilities );
|
|
343
|
+
uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
|
|
342
344
|
|
|
343
345
|
bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );
|
|
344
346
|
indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );
|
|
@@ -602,6 +604,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
602
604
|
cubeuvmaps.dispose();
|
|
603
605
|
objects.dispose();
|
|
604
606
|
bindingStates.dispose();
|
|
607
|
+
uniformsGroups.dispose();
|
|
605
608
|
programCache.dispose();
|
|
606
609
|
|
|
607
610
|
xr.dispose();
|
|
@@ -843,6 +846,28 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
843
846
|
|
|
844
847
|
this.compile = function ( scene, camera ) {
|
|
845
848
|
|
|
849
|
+
function prepare( material, scene, object ) {
|
|
850
|
+
|
|
851
|
+
if ( material.transparent === true && material.side === DoubleSide ) {
|
|
852
|
+
|
|
853
|
+
material.side = BackSide;
|
|
854
|
+
material.needsUpdate = true;
|
|
855
|
+
getProgram( material, scene, object );
|
|
856
|
+
|
|
857
|
+
material.side = FrontSide;
|
|
858
|
+
material.needsUpdate = true;
|
|
859
|
+
getProgram( material, scene, object );
|
|
860
|
+
|
|
861
|
+
material.side = DoubleSide;
|
|
862
|
+
|
|
863
|
+
} else {
|
|
864
|
+
|
|
865
|
+
getProgram( material, scene, object );
|
|
866
|
+
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
}
|
|
870
|
+
|
|
846
871
|
currentRenderState = renderStates.get( scene );
|
|
847
872
|
currentRenderState.init();
|
|
848
873
|
|
|
@@ -878,13 +903,13 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
878
903
|
|
|
879
904
|
const material2 = material[ i ];
|
|
880
905
|
|
|
881
|
-
|
|
906
|
+
prepare( material2, scene, object );
|
|
882
907
|
|
|
883
908
|
}
|
|
884
909
|
|
|
885
910
|
} else {
|
|
886
911
|
|
|
887
|
-
|
|
912
|
+
prepare( material, scene, object );
|
|
888
913
|
|
|
889
914
|
}
|
|
890
915
|
|
|
@@ -951,11 +976,11 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
951
976
|
|
|
952
977
|
// update scene graph
|
|
953
978
|
|
|
954
|
-
if ( scene.
|
|
979
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
955
980
|
|
|
956
981
|
// update camera matrices and frustum
|
|
957
982
|
|
|
958
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
983
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
959
984
|
|
|
960
985
|
if ( xr.enabled === true && xr.isPresenting === true ) {
|
|
961
986
|
|
|
@@ -1429,7 +1454,8 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1429
1454
|
uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;
|
|
1430
1455
|
uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;
|
|
1431
1456
|
uniforms.spotShadowMap.value = lights.state.spotShadowMap;
|
|
1432
|
-
uniforms.
|
|
1457
|
+
uniforms.spotLightMatrix.value = lights.state.spotLightMatrix;
|
|
1458
|
+
uniforms.spotLightMap.value = lights.state.spotLightMap;
|
|
1433
1459
|
uniforms.pointShadowMap.value = lights.state.pointShadowMap;
|
|
1434
1460
|
uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;
|
|
1435
1461
|
// TODO (abelnation): add area lights shadow info to uniforms
|
|
@@ -1727,7 +1753,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1727
1753
|
|
|
1728
1754
|
}
|
|
1729
1755
|
|
|
1730
|
-
|
|
1731
1756
|
if ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {
|
|
1732
1757
|
|
|
1733
1758
|
materialProperties.receiveShadow = object.receiveShadow;
|
|
@@ -1735,6 +1760,16 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1735
1760
|
|
|
1736
1761
|
}
|
|
1737
1762
|
|
|
1763
|
+
// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512
|
|
1764
|
+
|
|
1765
|
+
if ( material.isMeshGouraudMaterial && material.envMap !== null ) {
|
|
1766
|
+
|
|
1767
|
+
m_uniforms.envMap.value = envMap;
|
|
1768
|
+
|
|
1769
|
+
m_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;
|
|
1770
|
+
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1738
1773
|
if ( refreshMaterial ) {
|
|
1739
1774
|
|
|
1740
1775
|
p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );
|
|
@@ -1787,6 +1822,31 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1787
1822
|
p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );
|
|
1788
1823
|
p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );
|
|
1789
1824
|
|
|
1825
|
+
// UBOs
|
|
1826
|
+
|
|
1827
|
+
if ( material.isShaderMaterial || material.isRawShaderMaterial ) {
|
|
1828
|
+
|
|
1829
|
+
const groups = material.uniformsGroups;
|
|
1830
|
+
|
|
1831
|
+
for ( let i = 0, l = groups.length; i < l; i ++ ) {
|
|
1832
|
+
|
|
1833
|
+
if ( capabilities.isWebGL2 ) {
|
|
1834
|
+
|
|
1835
|
+
const group = groups[ i ];
|
|
1836
|
+
|
|
1837
|
+
uniformsGroups.update( group, program );
|
|
1838
|
+
uniformsGroups.bind( group, program );
|
|
1839
|
+
|
|
1840
|
+
} else {
|
|
1841
|
+
|
|
1842
|
+
console.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );
|
|
1843
|
+
|
|
1844
|
+
}
|
|
1845
|
+
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
}
|
|
1849
|
+
|
|
1790
1850
|
return program;
|
|
1791
1851
|
|
|
1792
1852
|
}
|
|
@@ -2206,7 +2266,23 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2206
2266
|
|
|
2207
2267
|
this.initTexture = function ( texture ) {
|
|
2208
2268
|
|
|
2209
|
-
|
|
2269
|
+
if ( texture.isCubeTexture ) {
|
|
2270
|
+
|
|
2271
|
+
textures.setTextureCube( texture, 0 );
|
|
2272
|
+
|
|
2273
|
+
} else if ( texture.isData3DTexture ) {
|
|
2274
|
+
|
|
2275
|
+
textures.setTexture3D( texture, 0 );
|
|
2276
|
+
|
|
2277
|
+
} else if ( texture.isDataArrayTexture ) {
|
|
2278
|
+
|
|
2279
|
+
textures.setTexture2DArray( texture, 0 );
|
|
2280
|
+
|
|
2281
|
+
} else {
|
|
2282
|
+
|
|
2283
|
+
textures.setTexture2D( texture, 0 );
|
|
2284
|
+
|
|
2285
|
+
}
|
|
2210
2286
|
|
|
2211
2287
|
state.unbindTexture();
|
|
2212
2288
|
|
|
@@ -90,26 +90,26 @@ vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 norm
|
|
|
90
90
|
|
|
91
91
|
#ifdef USE_IRIDESCENCE
|
|
92
92
|
|
|
93
|
-
vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {
|
|
93
|
+
vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
float alpha = pow2( roughness ); // UE4's roughness
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
vec3 halfDir = normalize( lightDir + viewDir );
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
float dotNL = saturate( dot( normal, lightDir ) );
|
|
100
|
+
float dotNV = saturate( dot( normal, viewDir ) );
|
|
101
|
+
float dotNH = saturate( dot( normal, halfDir ) );
|
|
102
|
+
float dotVH = saturate( dot( viewDir, halfDir ) );
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
vec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
float D = D_GGX( alpha, dotNH );
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
return F * ( V * D );
|
|
111
111
|
|
|
112
|
-
}
|
|
112
|
+
}
|
|
113
113
|
|
|
114
114
|
#endif
|
|
115
115
|
|
|
@@ -24,11 +24,9 @@ export default /* glsl */`
|
|
|
24
24
|
|
|
25
25
|
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
vec3
|
|
30
|
-
vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );
|
|
31
|
-
vec3 vN = surf_norm; // normalized
|
|
27
|
+
vec3 vSigmaX = dFdx( surf_pos.xyz );
|
|
28
|
+
vec3 vSigmaY = dFdy( surf_pos.xyz );
|
|
29
|
+
vec3 vN = surf_norm; // normalized
|
|
32
30
|
|
|
33
31
|
vec3 R1 = cross( vSigmaY, vN );
|
|
34
32
|
vec3 R2 = cross( vN, vSigmaX );
|