super-three 0.133.4 → 0.136.1
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/LICENSE +1 -1
- package/build/three.js +2285 -1983
- package/build/three.min.js +1 -1
- package/build/three.module.js +5983 -5358
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
- package/examples/fonts/open-sans/open-sans.css +9 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
- package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
- package/examples/js/animation/CCDIKSolver.js +0 -1
- package/examples/js/animation/MMDPhysics.js +2 -4
- package/examples/js/cameras/CinematicCamera.js +2 -7
- package/examples/js/controls/ArcballControls.js +99 -72
- package/examples/js/controls/DragControls.js +7 -0
- package/examples/js/controls/OrbitControls.js +5 -36
- package/examples/js/controls/TrackballControls.js +3 -2
- package/examples/js/controls/TransformControls.js +24 -1
- package/examples/js/csm/CSM.js +2 -2
- package/examples/js/csm/CSMFrustum.js +133 -0
- package/examples/js/curves/CurveExtras.js +0 -2
- package/examples/js/effects/AsciiEffect.js +2 -9
- package/examples/js/exporters/GLTFExporter.js +148 -64
- package/examples/js/exporters/MMDExporter.js +1 -1
- package/examples/js/exporters/USDZExporter.js +45 -26
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/TeapotGeometry.js +0 -1
- package/examples/js/interactive/SelectionBox.js +2 -0
- package/examples/js/interactive/SelectionHelper.js +22 -7
- package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
- package/examples/js/lines/LineMaterial.js +58 -20
- package/examples/js/lines/LineSegments2.js +29 -24
- package/examples/js/loaders/3DMLoader.js +24 -11
- package/examples/js/loaders/3MFLoader.js +2 -2
- package/examples/js/loaders/AMFLoader.js +0 -2
- package/examples/js/loaders/BasisTextureLoader.js +1 -0
- package/examples/js/loaders/ColladaLoader.js +61 -4
- package/examples/js/loaders/EXRLoader.js +201 -272
- package/examples/js/loaders/FBXLoader.js +4 -5
- package/examples/js/loaders/GLTFLoader.js +98 -35
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -10
- package/examples/js/loaders/KTX2Loader.js +23 -2
- package/examples/js/loaders/KTXLoader.js +1 -1
- package/examples/js/loaders/LDrawLoader.js +1169 -901
- package/examples/js/loaders/LUT3dlLoader.js +19 -10
- package/examples/js/loaders/LUTCubeLoader.js +5 -4
- package/examples/js/loaders/LWOLoader.js +8 -6
- package/examples/js/loaders/LogLuvLoader.js +766 -0
- package/examples/js/loaders/MMDLoader.js +0 -1
- package/examples/js/loaders/NRRDLoader.js +9 -2
- package/examples/js/loaders/OBJLoader.js +0 -2
- package/examples/js/loaders/PLYLoader.js +33 -8
- package/examples/js/loaders/RGBELoader.js +8 -22
- package/examples/js/loaders/RGBMLoader.js +56 -6
- package/examples/js/loaders/SVGLoader.js +12 -6
- package/examples/js/loaders/TDSLoader.js +237 -271
- package/examples/js/loaders/VOXLoader.js +1 -0
- package/examples/js/loaders/VRMLLoader.js +11 -22
- package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
- package/examples/js/math/ConvexHull.js +7 -13
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/misc/GPUComputationRenderer.js +3 -1
- package/examples/js/misc/Volume.js +2 -2
- package/examples/js/modifiers/CurveModifier.js +8 -7
- package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/Lensflare.js +2 -10
- package/examples/js/objects/MarchingCubes.js +42 -128
- package/examples/js/objects/Reflector.js +8 -13
- package/examples/js/objects/ReflectorForSSRPass.js +0 -10
- package/examples/js/objects/Refractor.js +8 -13
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +3 -15
- package/examples/js/objects/Water2.js +4 -7
- package/examples/js/postprocessing/GlitchPass.js +6 -5
- package/examples/js/postprocessing/SMAAPass.js +2 -9
- package/examples/js/postprocessing/SSAOPass.js +10 -21
- package/examples/js/postprocessing/SavePass.js +1 -5
- package/examples/js/renderers/CSS2DRenderer.js +4 -4
- package/examples/js/renderers/CSS3DRenderer.js +4 -4
- package/examples/js/shaders/ConvolutionShader.js +0 -1
- package/examples/js/shaders/DigitalGlitch.js +3 -3
- package/examples/js/shaders/FXAAShader.js +1 -1
- package/examples/js/shaders/FilmShader.js +1 -1
- package/examples/js/shaders/GammaCorrectionShader.js +1 -1
- package/examples/js/shaders/HorizontalBlurShader.js +1 -2
- package/examples/js/shaders/MMDToonShader.js +0 -1
- package/examples/js/shaders/SSAOShader.js +1 -1
- package/examples/js/shaders/SSRShader.js +1 -1
- package/examples/js/shaders/SSRrShader.js +1 -1
- package/examples/js/shaders/VerticalBlurShader.js +1 -2
- package/examples/js/utils/GeometryUtils.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +0 -1
- package/examples/jsm/animation/MMDPhysics.js +1 -3
- package/examples/jsm/cameras/CinematicCamera.js +2 -5
- package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
- package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +80 -77
- package/examples/jsm/controls/DragControls.js +7 -0
- package/examples/jsm/controls/OrbitControls.js +9 -51
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +24 -1
- package/examples/jsm/csm/CSM.js +3 -3
- package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
- package/examples/jsm/curves/CurveExtras.js +0 -2
- package/examples/jsm/effects/AsciiEffect.js +2 -9
- package/examples/jsm/exporters/GLTFExporter.js +169 -99
- package/examples/jsm/exporters/MMDExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +47 -26
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +0 -1
- package/examples/jsm/interactive/SelectionBox.js +1 -0
- package/examples/jsm/interactive/SelectionHelper.js +19 -7
- package/examples/jsm/libs/flow.module.js +3338 -0
- package/examples/jsm/libs/lil-gui.module.min.js +8 -0
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
- package/examples/jsm/lines/LineMaterial.js +59 -23
- package/examples/jsm/lines/LineSegments2.js +22 -18
- package/examples/jsm/loaders/3DMLoader.js +18 -12
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +0 -2
- package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
- package/examples/jsm/loaders/ColladaLoader.js +61 -4
- package/examples/jsm/loaders/EXRLoader.js +200 -306
- package/examples/jsm/loaders/FBXLoader.js +4 -5
- package/examples/jsm/loaders/GLTFLoader.js +102 -40
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -17
- package/examples/jsm/loaders/KTX2Loader.js +30 -2
- package/examples/jsm/loaders/KTXLoader.js +1 -1
- package/examples/jsm/loaders/LDrawLoader.js +1159 -898
- package/examples/jsm/loaders/LUT3dlLoader.js +19 -12
- package/examples/jsm/loaders/LUTCubeLoader.js +5 -5
- package/examples/jsm/loaders/LWOLoader.js +8 -6
- package/examples/jsm/loaders/LogLuvLoader.js +606 -0
- package/examples/jsm/loaders/MMDLoader.js +0 -1
- package/examples/jsm/loaders/NRRDLoader.js +10 -2
- package/examples/jsm/loaders/OBJLoader.js +0 -2
- package/examples/jsm/loaders/PLYLoader.js +34 -8
- package/examples/jsm/loaders/RGBELoader.js +7 -28
- package/examples/jsm/loaders/RGBMLoader.js +62 -8
- package/examples/jsm/loaders/SVGLoader.js +15 -7
- package/examples/jsm/loaders/TDSLoader.js +236 -275
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +11 -23
- package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
- package/examples/jsm/math/ConvexHull.js +7 -13
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
- package/examples/jsm/misc/Volume.js +2 -2
- package/examples/jsm/modifiers/CurveModifier.js +9 -8
- package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +455 -0
- package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
- package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
- package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
- package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
- package/examples/jsm/node-editor/examples/rim.json +1 -0
- package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
- package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
- package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
- package/examples/jsm/node-editor/math/DotEditor.js +36 -0
- package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
- package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
- package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
- package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
- package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
- package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
- package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
- package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
- package/examples/jsm/nodes/math/MathNode.js +12 -0
- package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
- package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +5 -177
- package/examples/jsm/objects/Lensflare.js +5 -16
- package/examples/jsm/objects/MarchingCubes.js +46 -152
- package/examples/jsm/objects/Reflector.js +8 -16
- package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
- package/examples/jsm/objects/Refractor.js +8 -16
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/Water.js +3 -18
- package/examples/jsm/objects/Water2.js +4 -8
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
- package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
- package/examples/jsm/postprocessing/BloomPass.js +1 -1
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -1
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
- package/examples/jsm/postprocessing/EffectComposer.js +3 -3
- package/examples/jsm/postprocessing/FilmPass.js +1 -1
- package/examples/jsm/postprocessing/GlitchPass.js +10 -7
- package/examples/jsm/postprocessing/HalftonePass.js +1 -1
- package/examples/jsm/postprocessing/MaskPass.js +1 -1
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -1
- package/examples/jsm/postprocessing/SAOPass.js +2 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -12
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +15 -26
- package/examples/jsm/postprocessing/SSRPass.js +1 -1
- package/examples/jsm/postprocessing/SSRrPass.js +1 -1
- package/examples/jsm/postprocessing/SavePass.js +2 -4
- package/examples/jsm/postprocessing/ShaderPass.js +1 -1
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/TexturePass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
- package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
- package/examples/jsm/renderers/nodes/Nodes.js +17 -13
- package/examples/jsm/renderers/nodes/ShaderNode.js +229 -49
- package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
- package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
- package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
- package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
- package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
- package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
- package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
- package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
- package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
- package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
- package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
- package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
- package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
- package/examples/jsm/renderers/nodes/core/Node.js +32 -10
- package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
- package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
- package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
- package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
- package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
- package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
- package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
- package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
- package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
- package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
- package/examples/jsm/renderers/nodes/core/constants.js +2 -0
- package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +43 -63
- package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
- package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
- package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
- package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
- package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +13 -10
- package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
- package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
- package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
- package/examples/jsm/renderers/nodes/math/MathNode.js +91 -37
- package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
- package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
- package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
- package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
- package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
- package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
- package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +13 -31
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +35 -29
- package/examples/jsm/renderers/webgpu/constants.js +2 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +459 -95
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/ConvolutionShader.js +0 -1
- package/examples/jsm/shaders/DigitalGlitch.js +3 -3
- package/examples/jsm/shaders/FXAAShader.js +1 -1
- package/examples/jsm/shaders/FilmShader.js +1 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
- package/examples/jsm/shaders/MMDToonShader.js +0 -1
- package/examples/jsm/shaders/SSAOShader.js +1 -1
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SSRrShader.js +1 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
- package/examples/jsm/utils/GeometryUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +195 -0
- package/examples/jsm/utils/WorkerPool.js +11 -11
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
- package/examples/jsm/webxr/VRButton.js +24 -0
- package/examples/jsm/webxr/XREstimatedLight.js +2 -0
- package/package.json +27 -18
- package/src/Three.Legacy.js +18 -0
- package/src/Three.js +1 -3
- package/src/animation/AnimationMixer.js +1 -0
- package/src/cameras/CubeCamera.js +2 -0
- package/src/cameras/StereoCamera.js +8 -7
- package/src/constants.js +3 -23
- package/src/core/Layers.js +7 -1
- package/src/core/Object3D.js +3 -1
- package/src/extras/ImageUtils.js +63 -0
- package/src/extras/PMREMGenerator.js +49 -185
- package/src/extras/core/Interpolations.js +1 -1
- package/src/geometries/LatheGeometry.js +70 -47
- package/src/helpers/CameraHelper.js +1 -1
- package/src/loaders/FileLoader.js +98 -144
- package/src/loaders/ImageLoader.js +9 -4
- package/src/loaders/LoaderUtils.js +26 -0
- package/src/loaders/MaterialLoader.js +8 -5
- package/src/loaders/ObjectLoader.js +2 -0
- package/src/materials/Material.js +8 -8
- package/src/materials/MeshPhysicalMaterial.js +20 -14
- package/src/math/Color.js +1 -39
- package/src/math/MathUtils.js +5 -16
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -2
- package/src/math/Sphere.js +10 -1
- package/src/objects/Skeleton.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +0 -2
- package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
- package/src/renderers/WebGLRenderer.js +106 -199
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -78
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
- package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib.js +8 -6
- package/src/renderers/shaders/UniformsLib.js +1 -2
- package/src/renderers/webgl/WebGLCapabilities.js +0 -2
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
- package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLMaterials.js +27 -15
- package/src/renderers/webgl/WebGLMorphtargets.js +13 -0
- package/src/renderers/webgl/WebGLProgram.js +12 -37
- package/src/renderers/webgl/WebGLPrograms.js +192 -70
- package/src/renderers/webgl/WebGLRenderLists.js +4 -14
- package/src/renderers/webgl/WebGLShaderCache.js +120 -0
- package/src/renderers/webgl/WebGLShadowMap.js +14 -5
- package/src/renderers/webgl/WebGLState.js +157 -17
- package/src/renderers/webgl/WebGLTextures.js +442 -83
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- package/src/renderers/webgl/WebGLUtils.js +86 -28
- package/src/renderers/webxr/WebXRManager.js +77 -109
- package/src/scenes/Scene.js +1 -1
- package/src/textures/DataTexture.js +0 -2
- package/src/textures/DataTexture2DArray.js +0 -2
- package/src/textures/DataTexture3D.js +0 -2
- package/src/textures/FramebufferTexture.js +25 -0
- package/src/textures/Texture.js +8 -1
- package/src/textures/VideoTexture.js +1 -3
- package/examples/js/WebGL.js +0 -90
- package/examples/js/controls/DeviceOrientationControls.js +0 -147
- package/examples/js/libs/dat.gui.min.js +0 -14
- package/examples/js/utils/RoughnessMipmapper.js +0 -278
- package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
- package/examples/jsm/libs/dat.gui.module.js +0 -3575
- package/examples/jsm/libs/glslang.js +0 -78
- package/examples/jsm/libs/glslang.wasm +0 -0
- package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
- package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
- package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
- package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
- package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
- package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
- package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
- package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
- package/examples/jsm/utils/RoughnessMipmapper.js +0 -300
- package/src/extras/objects/ImmediateRenderObject.js +0 -31
|
@@ -14,7 +14,7 @@ material.roughness = min( material.roughness, 1.0 );
|
|
|
14
14
|
#ifdef SPECULAR
|
|
15
15
|
|
|
16
16
|
float specularIntensityFactor = specularIntensity;
|
|
17
|
-
vec3
|
|
17
|
+
vec3 specularColorFactor = specularColor;
|
|
18
18
|
|
|
19
19
|
#ifdef USE_SPECULARINTENSITYMAP
|
|
20
20
|
|
|
@@ -22,9 +22,9 @@ material.roughness = min( material.roughness, 1.0 );
|
|
|
22
22
|
|
|
23
23
|
#endif
|
|
24
24
|
|
|
25
|
-
#ifdef
|
|
25
|
+
#ifdef USE_SPECULARCOLORMAP
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
specularColorFactor *= texture2D( specularColorMap, vUv ).rgb;
|
|
28
28
|
|
|
29
29
|
#endif
|
|
30
30
|
|
|
@@ -33,12 +33,12 @@ material.roughness = min( material.roughness, 1.0 );
|
|
|
33
33
|
#else
|
|
34
34
|
|
|
35
35
|
float specularIntensityFactor = 1.0;
|
|
36
|
-
vec3
|
|
36
|
+
vec3 specularColorFactor = vec3( 1.0 );
|
|
37
37
|
material.specularF90 = 1.0;
|
|
38
38
|
|
|
39
39
|
#endif
|
|
40
40
|
|
|
41
|
-
material.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) *
|
|
41
|
+
material.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );
|
|
42
42
|
|
|
43
43
|
#else
|
|
44
44
|
|
|
@@ -75,8 +75,21 @@ material.roughness = min( material.roughness, 1.0 );
|
|
|
75
75
|
|
|
76
76
|
#ifdef USE_SHEEN
|
|
77
77
|
|
|
78
|
-
material.
|
|
78
|
+
material.sheenColor = sheenColor;
|
|
79
|
+
|
|
80
|
+
#ifdef USE_SHEENCOLORMAP
|
|
81
|
+
|
|
82
|
+
material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;
|
|
83
|
+
|
|
84
|
+
#endif
|
|
85
|
+
|
|
79
86
|
material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
|
|
80
87
|
|
|
88
|
+
#ifdef USE_SHEENROUGHNESSMAP
|
|
89
|
+
|
|
90
|
+
material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;
|
|
91
|
+
|
|
92
|
+
#endif
|
|
93
|
+
|
|
81
94
|
#endif
|
|
82
95
|
`;
|
|
@@ -14,7 +14,7 @@ struct PhysicalMaterial {
|
|
|
14
14
|
#endif
|
|
15
15
|
|
|
16
16
|
#ifdef USE_SHEEN
|
|
17
|
-
vec3
|
|
17
|
+
vec3 sheenColor;
|
|
18
18
|
float sheenRoughness;
|
|
19
19
|
#endif
|
|
20
20
|
|
|
@@ -22,6 +22,26 @@ struct PhysicalMaterial {
|
|
|
22
22
|
|
|
23
23
|
// temporary
|
|
24
24
|
vec3 clearcoatSpecular = vec3( 0.0 );
|
|
25
|
+
vec3 sheenSpecular = vec3( 0.0 );
|
|
26
|
+
|
|
27
|
+
// This is a curve-fit approxmation to the "Charlie sheen" BRDF integrated over the hemisphere from
|
|
28
|
+
// Estevez and Kulla 2017, "Production Friendly Microfacet Sheen BRDF". The analysis can be found
|
|
29
|
+
// in the Sheen section of https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing
|
|
30
|
+
float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {
|
|
31
|
+
|
|
32
|
+
float dotNV = saturate( dot( normal, viewDir ) );
|
|
33
|
+
|
|
34
|
+
float r2 = roughness * roughness;
|
|
35
|
+
|
|
36
|
+
float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;
|
|
37
|
+
|
|
38
|
+
float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;
|
|
39
|
+
|
|
40
|
+
float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );
|
|
41
|
+
|
|
42
|
+
return saturate( DG * RECIPROCAL_PI );
|
|
43
|
+
|
|
44
|
+
}
|
|
25
45
|
|
|
26
46
|
// Analytical approximation of the DFG LUT, one half of the
|
|
27
47
|
// split-sum approximation used in indirect specular lighting.
|
|
@@ -133,7 +153,7 @@ void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricC
|
|
|
133
153
|
|
|
134
154
|
#ifdef USE_SHEEN
|
|
135
155
|
|
|
136
|
-
|
|
156
|
+
sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );
|
|
137
157
|
|
|
138
158
|
#endif
|
|
139
159
|
|
|
@@ -157,6 +177,12 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia
|
|
|
157
177
|
|
|
158
178
|
#endif
|
|
159
179
|
|
|
180
|
+
#ifdef USE_SHEEN
|
|
181
|
+
|
|
182
|
+
sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );
|
|
183
|
+
|
|
184
|
+
#endif
|
|
185
|
+
|
|
160
186
|
// Both indirect specular and indirect diffuse light accumulate here
|
|
161
187
|
|
|
162
188
|
vec3 singleScattering = vec3( 0.0 );
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
#ifdef USE_MAP
|
|
3
3
|
|
|
4
|
-
vec4
|
|
4
|
+
vec4 sampledDiffuseColor = texture2D( map, vUv );
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
#ifdef DECODE_VIDEO_TEXTURE
|
|
7
|
+
|
|
8
|
+
// inline sRGB decode (TODO: Remove this code when https://crbug.com/1256340 is solved)
|
|
9
|
+
|
|
10
|
+
sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );
|
|
11
|
+
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
diffuseColor *= sampledDiffuseColor;
|
|
8
15
|
|
|
9
16
|
#endif
|
|
10
17
|
`;
|
|
@@ -13,7 +13,7 @@ vec3 LinearToneMapping( vec3 color ) {
|
|
|
13
13
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
// source: https://www.cs.utah.edu
|
|
16
|
+
// source: https://www.cs.utah.edu/docs/techreports/2002/pdf/UUCS-02-001.pdf
|
|
17
17
|
vec3 ReinhardToneMapping( vec3 color ) {
|
|
18
18
|
|
|
19
19
|
color *= toneMappingExposure;
|
|
@@ -24,7 +24,7 @@ export default /* glsl */`
|
|
|
24
24
|
vec4 transmission = getIBLVolumeRefraction(
|
|
25
25
|
n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,
|
|
26
26
|
pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,
|
|
27
|
-
|
|
27
|
+
attenuationColor, attenuationDistance );
|
|
28
28
|
|
|
29
29
|
totalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );
|
|
30
30
|
transmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );
|
|
@@ -7,7 +7,7 @@ export default /* glsl */`
|
|
|
7
7
|
uniform float transmission;
|
|
8
8
|
uniform float thickness;
|
|
9
9
|
uniform float attenuationDistance;
|
|
10
|
-
uniform vec3
|
|
10
|
+
uniform vec3 attenuationColor;
|
|
11
11
|
|
|
12
12
|
#ifdef USE_TRANSMISSIONMAP
|
|
13
13
|
|
|
@@ -29,7 +29,7 @@ export default /* glsl */`
|
|
|
29
29
|
|
|
30
30
|
varying vec3 vWorldPosition;
|
|
31
31
|
|
|
32
|
-
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
32
|
+
vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
|
|
33
33
|
|
|
34
34
|
// Direction of refracted light.
|
|
35
35
|
vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
|
|
@@ -45,7 +45,7 @@ export default /* glsl */`
|
|
|
45
45
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
float applyIorToRoughness( float roughness, float ior ) {
|
|
48
|
+
float applyIorToRoughness( const in float roughness, const in float ior ) {
|
|
49
49
|
|
|
50
50
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
51
51
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
@@ -53,7 +53,7 @@ export default /* glsl */`
|
|
|
53
53
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
vec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {
|
|
56
|
+
vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
|
|
57
57
|
|
|
58
58
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
59
59
|
|
|
@@ -69,7 +69,7 @@ export default /* glsl */`
|
|
|
69
69
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
vec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {
|
|
72
|
+
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
73
73
|
|
|
74
74
|
if ( attenuationDistance == 0.0 ) {
|
|
75
75
|
|
|
@@ -87,9 +87,10 @@ export default /* glsl */`
|
|
|
87
87
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness,
|
|
91
|
-
vec3
|
|
92
|
-
|
|
90
|
+
vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
|
|
91
|
+
const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
|
|
92
|
+
const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,
|
|
93
|
+
const in vec3 attenuationColor, const in float attenuationDistance ) {
|
|
93
94
|
|
|
94
95
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
95
96
|
vec3 refractedRayExit = position + transmissionRay;
|
|
@@ -26,9 +26,7 @@ void main() {
|
|
|
26
26
|
|
|
27
27
|
vec2 sampleUV = equirectUv( direction );
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
gl_FragColor = mapTexelToLinear( texColor );
|
|
29
|
+
gl_FragColor = texture2D( tEquirect, sampleUV );
|
|
32
30
|
|
|
33
31
|
#include <tonemapping_fragment>
|
|
34
32
|
#include <encodings_fragment>
|
|
@@ -87,7 +87,7 @@ void main() {
|
|
|
87
87
|
#ifdef USE_LIGHTMAP
|
|
88
88
|
|
|
89
89
|
vec4 lightMapTexel= texture2D( lightMap, vUv2 );
|
|
90
|
-
reflectedLight.indirectDiffuse +=
|
|
90
|
+
reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity;
|
|
91
91
|
|
|
92
92
|
#else
|
|
93
93
|
|
|
@@ -86,11 +86,10 @@ void main() {
|
|
|
86
86
|
#ifdef USE_MATCAP
|
|
87
87
|
|
|
88
88
|
vec4 matcapColor = texture2D( matcap, uv );
|
|
89
|
-
matcapColor = matcapTexelToLinear( matcapColor );
|
|
90
89
|
|
|
91
90
|
#else
|
|
92
91
|
|
|
93
|
-
vec4 matcapColor = vec4( 1.0 );
|
|
92
|
+
vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); // default if matcap is missing
|
|
94
93
|
|
|
95
94
|
#endif
|
|
96
95
|
|
|
@@ -77,14 +77,14 @@ uniform float opacity;
|
|
|
77
77
|
|
|
78
78
|
#ifdef SPECULAR
|
|
79
79
|
uniform float specularIntensity;
|
|
80
|
-
uniform vec3
|
|
80
|
+
uniform vec3 specularColor;
|
|
81
81
|
|
|
82
82
|
#ifdef USE_SPECULARINTENSITYMAP
|
|
83
83
|
uniform sampler2D specularIntensityMap;
|
|
84
84
|
#endif
|
|
85
85
|
|
|
86
|
-
#ifdef
|
|
87
|
-
uniform sampler2D
|
|
86
|
+
#ifdef USE_SPECULARCOLORMAP
|
|
87
|
+
uniform sampler2D specularColorMap;
|
|
88
88
|
#endif
|
|
89
89
|
#endif
|
|
90
90
|
|
|
@@ -94,8 +94,16 @@ uniform float opacity;
|
|
|
94
94
|
#endif
|
|
95
95
|
|
|
96
96
|
#ifdef USE_SHEEN
|
|
97
|
-
uniform vec3
|
|
97
|
+
uniform vec3 sheenColor;
|
|
98
98
|
uniform float sheenRoughness;
|
|
99
|
+
|
|
100
|
+
#ifdef USE_SHEENCOLORMAP
|
|
101
|
+
uniform sampler2D sheenColorMap;
|
|
102
|
+
#endif
|
|
103
|
+
|
|
104
|
+
#ifdef USE_SHEENROUGHNESSMAP
|
|
105
|
+
uniform sampler2D sheenRoughnessMap;
|
|
106
|
+
#endif
|
|
99
107
|
#endif
|
|
100
108
|
|
|
101
109
|
varying vec3 vViewPosition;
|
|
@@ -167,13 +175,23 @@ void main() {
|
|
|
167
175
|
|
|
168
176
|
vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
|
|
169
177
|
|
|
178
|
+
#ifdef USE_SHEEN
|
|
179
|
+
|
|
180
|
+
// Sheen energy compensation approximation calculation can be found at the end of
|
|
181
|
+
// https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing
|
|
182
|
+
float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
|
|
183
|
+
|
|
184
|
+
outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;
|
|
185
|
+
|
|
186
|
+
#endif
|
|
187
|
+
|
|
170
188
|
#ifdef USE_CLEARCOAT
|
|
171
189
|
|
|
172
190
|
float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
|
|
173
191
|
|
|
174
192
|
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
|
|
175
193
|
|
|
176
|
-
outgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;
|
|
194
|
+
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
|
|
177
195
|
|
|
178
196
|
#endif
|
|
179
197
|
|
|
@@ -10,12 +10,13 @@ export const fragment = /* glsl */`
|
|
|
10
10
|
uniform sampler2D shadow_pass;
|
|
11
11
|
uniform vec2 resolution;
|
|
12
12
|
uniform float radius;
|
|
13
|
-
uniform float samples;
|
|
14
13
|
|
|
15
14
|
#include <packing>
|
|
16
15
|
|
|
17
16
|
void main() {
|
|
18
17
|
|
|
18
|
+
const float samples = float( VSM_SAMPLES );
|
|
19
|
+
|
|
19
20
|
float mean = 0.0;
|
|
20
21
|
float squared_mean = 0.0;
|
|
21
22
|
|
|
@@ -297,8 +297,10 @@ ShaderLib.physical = {
|
|
|
297
297
|
clearcoatNormalScale: { value: new Vector2( 1, 1 ) },
|
|
298
298
|
clearcoatNormalMap: { value: null },
|
|
299
299
|
sheen: { value: 0 },
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
sheenColor: { value: new Color( 0x000000 ) },
|
|
301
|
+
sheenColorMap: { value: null },
|
|
302
|
+
sheenRoughness: { value: 1 },
|
|
303
|
+
sheenRoughnessMap: { value: null },
|
|
302
304
|
transmission: { value: 0 },
|
|
303
305
|
transmissionMap: { value: null },
|
|
304
306
|
transmissionSamplerSize: { value: new Vector2() },
|
|
@@ -306,11 +308,11 @@ ShaderLib.physical = {
|
|
|
306
308
|
thickness: { value: 0 },
|
|
307
309
|
thicknessMap: { value: null },
|
|
308
310
|
attenuationDistance: { value: 0 },
|
|
309
|
-
|
|
310
|
-
specularIntensity: { value:
|
|
311
|
+
attenuationColor: { value: new Color( 0x000000 ) },
|
|
312
|
+
specularIntensity: { value: 1 },
|
|
311
313
|
specularIntensityMap: { value: null },
|
|
312
|
-
|
|
313
|
-
|
|
314
|
+
specularColor: { value: new Color( 1, 1, 1 ) },
|
|
315
|
+
specularColorMap: { value: null },
|
|
314
316
|
}
|
|
315
317
|
] ),
|
|
316
318
|
|
|
@@ -34,8 +34,7 @@ const UniformsLib = {
|
|
|
34
34
|
flipEnvMap: { value: - 1 },
|
|
35
35
|
reflectivity: { value: 1.0 }, // basic, lambert, phong
|
|
36
36
|
ior: { value: 1.5 }, // standard, physical
|
|
37
|
-
refractionRatio: { value: 0.98 }
|
|
38
|
-
maxMipLevel: { value: 0 }
|
|
37
|
+
refractionRatio: { value: 0.98 }
|
|
39
38
|
|
|
40
39
|
},
|
|
41
40
|
|
|
@@ -52,10 +52,8 @@ function WebGLCapabilities( gl, extensions, parameters ) {
|
|
|
52
52
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
/* eslint-disable no-undef */
|
|
56
55
|
const isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||
|
|
57
56
|
( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );
|
|
58
|
-
/* eslint-enable no-undef */
|
|
59
57
|
|
|
60
58
|
let precision = parameters.precision !== undefined ? parameters.precision : 'highp';
|
|
61
59
|
const maxPrecision = getMaxPrecision( precision );
|
|
@@ -40,14 +40,10 @@ function WebGLCubeMaps( renderer ) {
|
|
|
40
40
|
|
|
41
41
|
if ( image && image.height > 0 ) {
|
|
42
42
|
|
|
43
|
-
const currentRenderTarget = renderer.getRenderTarget();
|
|
44
|
-
|
|
45
43
|
const renderTarget = new WebGLCubeRenderTarget( image.height / 2 );
|
|
46
44
|
renderTarget.fromEquirectangularTexture( renderer, texture );
|
|
47
45
|
cubemaps.set( texture, renderTarget );
|
|
48
46
|
|
|
49
|
-
renderer.setRenderTarget( currentRenderTarget );
|
|
50
|
-
|
|
51
47
|
texture.addEventListener( 'dispose', onTextureDispose );
|
|
52
48
|
|
|
53
49
|
return mapTextureMapping( renderTarget.texture, texture.mapping );
|
|
@@ -9,45 +9,58 @@ function WebGLCubeUVMaps( renderer ) {
|
|
|
9
9
|
|
|
10
10
|
function get( texture ) {
|
|
11
11
|
|
|
12
|
-
if ( texture && texture.isTexture
|
|
12
|
+
if ( texture && texture.isTexture ) {
|
|
13
13
|
|
|
14
14
|
const mapping = texture.mapping;
|
|
15
15
|
|
|
16
16
|
const isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );
|
|
17
17
|
const isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );
|
|
18
18
|
|
|
19
|
+
// equirect/cube map to cubeUV conversion
|
|
20
|
+
|
|
19
21
|
if ( isEquirectMap || isCubeMap ) {
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
if ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {
|
|
24
|
+
|
|
25
|
+
texture.needsPMREMUpdate = false;
|
|
26
|
+
|
|
27
|
+
let renderTarget = cubeUVmaps.get( texture );
|
|
28
|
+
|
|
29
|
+
if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );
|
|
22
30
|
|
|
23
|
-
|
|
31
|
+
renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );
|
|
32
|
+
cubeUVmaps.set( texture, renderTarget );
|
|
24
33
|
|
|
25
|
-
return
|
|
34
|
+
return renderTarget.texture;
|
|
26
35
|
|
|
27
36
|
} else {
|
|
28
37
|
|
|
29
|
-
|
|
38
|
+
if ( cubeUVmaps.has( texture ) ) {
|
|
30
39
|
|
|
31
|
-
|
|
40
|
+
return cubeUVmaps.get( texture ).texture;
|
|
32
41
|
|
|
33
|
-
|
|
42
|
+
} else {
|
|
34
43
|
|
|
35
|
-
|
|
44
|
+
const image = texture.image;
|
|
36
45
|
|
|
37
|
-
|
|
38
|
-
cubeUVmaps.set( texture, renderTarget );
|
|
46
|
+
if ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {
|
|
39
47
|
|
|
40
|
-
|
|
48
|
+
if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );
|
|
41
49
|
|
|
42
|
-
|
|
50
|
+
const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );
|
|
51
|
+
cubeUVmaps.set( texture, renderTarget );
|
|
43
52
|
|
|
44
|
-
|
|
53
|
+
texture.addEventListener( 'dispose', onTextureDispose );
|
|
45
54
|
|
|
46
|
-
|
|
55
|
+
return renderTarget.texture;
|
|
56
|
+
|
|
57
|
+
} else {
|
|
58
|
+
|
|
59
|
+
// image not yet ready. try the conversion next frame
|
|
47
60
|
|
|
48
|
-
|
|
61
|
+
return null;
|
|
49
62
|
|
|
50
|
-
|
|
63
|
+
}
|
|
51
64
|
|
|
52
65
|
}
|
|
53
66
|
|
|
@@ -157,14 +157,6 @@ function WebGLMaterials( properties ) {
|
|
|
157
157
|
uniforms.ior.value = material.ior;
|
|
158
158
|
uniforms.refractionRatio.value = material.refractionRatio;
|
|
159
159
|
|
|
160
|
-
const maxMipLevel = properties.get( envMap ).__maxMipLevel;
|
|
161
|
-
|
|
162
|
-
if ( maxMipLevel !== undefined ) {
|
|
163
|
-
|
|
164
|
-
uniforms.maxMipLevel.value = maxMipLevel;
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
|
|
168
160
|
}
|
|
169
161
|
|
|
170
162
|
if ( material.lightMap ) {
|
|
@@ -253,9 +245,9 @@ function WebGLMaterials( properties ) {
|
|
|
253
245
|
|
|
254
246
|
uvScaleMap = material.specularIntensityMap;
|
|
255
247
|
|
|
256
|
-
} else if ( material.
|
|
248
|
+
} else if ( material.specularColorMap ) {
|
|
257
249
|
|
|
258
|
-
uvScaleMap = material.
|
|
250
|
+
uvScaleMap = material.specularColorMap;
|
|
259
251
|
|
|
260
252
|
} else if ( material.transmissionMap ) {
|
|
261
253
|
|
|
@@ -265,6 +257,14 @@ function WebGLMaterials( properties ) {
|
|
|
265
257
|
|
|
266
258
|
uvScaleMap = material.thicknessMap;
|
|
267
259
|
|
|
260
|
+
} else if ( material.sheenColorMap ) {
|
|
261
|
+
|
|
262
|
+
uvScaleMap = material.sheenColorMap;
|
|
263
|
+
|
|
264
|
+
} else if ( material.sheenRoughnessMap ) {
|
|
265
|
+
|
|
266
|
+
uvScaleMap = material.sheenRoughnessMap;
|
|
267
|
+
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
if ( uvScaleMap !== undefined ) {
|
|
@@ -600,10 +600,22 @@ function WebGLMaterials( properties ) {
|
|
|
600
600
|
|
|
601
601
|
if ( material.sheen > 0 ) {
|
|
602
602
|
|
|
603
|
-
uniforms.
|
|
603
|
+
uniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );
|
|
604
604
|
|
|
605
605
|
uniforms.sheenRoughness.value = material.sheenRoughness;
|
|
606
606
|
|
|
607
|
+
if ( material.sheenColorMap ) {
|
|
608
|
+
|
|
609
|
+
uniforms.sheenColorMap.value = material.sheenColorMap;
|
|
610
|
+
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
if ( material.sheenRoughnessMap ) {
|
|
614
|
+
|
|
615
|
+
uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;
|
|
616
|
+
|
|
617
|
+
}
|
|
618
|
+
|
|
607
619
|
}
|
|
608
620
|
|
|
609
621
|
if ( material.clearcoat > 0 ) {
|
|
@@ -659,12 +671,12 @@ function WebGLMaterials( properties ) {
|
|
|
659
671
|
}
|
|
660
672
|
|
|
661
673
|
uniforms.attenuationDistance.value = material.attenuationDistance;
|
|
662
|
-
uniforms.
|
|
674
|
+
uniforms.attenuationColor.value.copy( material.attenuationColor );
|
|
663
675
|
|
|
664
676
|
}
|
|
665
677
|
|
|
666
678
|
uniforms.specularIntensity.value = material.specularIntensity;
|
|
667
|
-
uniforms.
|
|
679
|
+
uniforms.specularColor.value.copy( material.specularColor );
|
|
668
680
|
|
|
669
681
|
if ( material.specularIntensityMap ) {
|
|
670
682
|
|
|
@@ -672,9 +684,9 @@ function WebGLMaterials( properties ) {
|
|
|
672
684
|
|
|
673
685
|
}
|
|
674
686
|
|
|
675
|
-
if ( material.
|
|
687
|
+
if ( material.specularColorMap ) {
|
|
676
688
|
|
|
677
|
-
uniforms.
|
|
689
|
+
uniforms.specularColorMap.value = material.specularColorMap;
|
|
678
690
|
|
|
679
691
|
}
|
|
680
692
|
|
|
@@ -84,6 +84,7 @@ function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
|
84
84
|
const texture = new DataTexture2DArray( buffer, width, height, numberOfMorphTargets );
|
|
85
85
|
texture.format = RGBAFormat; // using RGBA since RGB might be emulated (and is thus slower)
|
|
86
86
|
texture.type = FloatType;
|
|
87
|
+
texture.needsUpdate = true;
|
|
87
88
|
|
|
88
89
|
// fill buffer
|
|
89
90
|
|
|
@@ -134,6 +135,18 @@ function WebGLMorphtargets( gl, capabilities, textures ) {
|
|
|
134
135
|
|
|
135
136
|
morphTextures.set( geometry, entry );
|
|
136
137
|
|
|
138
|
+
function disposeTexture() {
|
|
139
|
+
|
|
140
|
+
texture.dispose();
|
|
141
|
+
|
|
142
|
+
morphTextures.delete( geometry );
|
|
143
|
+
|
|
144
|
+
geometry.removeEventListener( 'dispose', disposeTexture );
|
|
145
|
+
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
geometry.addEventListener( 'dispose', disposeTexture );
|
|
149
|
+
|
|
137
150
|
}
|
|
138
151
|
|
|
139
152
|
//
|