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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
REVISION,
|
|
2
3
|
BackSide,
|
|
3
4
|
DoubleSide,
|
|
4
5
|
FrontSide,
|
|
@@ -110,7 +111,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
110
111
|
|
|
111
112
|
// physically based shading
|
|
112
113
|
|
|
113
|
-
this.gammaFactor = 2.0; // for backwards compatibility
|
|
114
114
|
this.outputEncoding = LinearEncoding;
|
|
115
115
|
|
|
116
116
|
// physical lights
|
|
@@ -154,10 +154,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
154
154
|
const _scissor = new Vector4( 0, 0, _width, _height );
|
|
155
155
|
let _scissorTest = false;
|
|
156
156
|
|
|
157
|
-
//
|
|
158
|
-
|
|
159
|
-
const _currentDrawBuffers = [];
|
|
160
|
-
|
|
161
157
|
// frustum
|
|
162
158
|
|
|
163
159
|
const _frustum = new Frustum();
|
|
@@ -216,8 +212,10 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
216
212
|
failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat
|
|
217
213
|
};
|
|
218
214
|
|
|
219
|
-
//
|
|
215
|
+
// OffscreenCanvas does not have setAttribute, see #22811
|
|
216
|
+
if ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );
|
|
220
217
|
|
|
218
|
+
// event listeners must be registered before WebGL context is created, see #12753
|
|
221
219
|
_canvas.addEventListener( 'webglcontextlost', onContextLost, false );
|
|
222
220
|
_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
223
221
|
|
|
@@ -288,8 +286,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
288
286
|
|
|
289
287
|
state = new WebGLState( _gl, extensions, capabilities );
|
|
290
288
|
|
|
291
|
-
_currentDrawBuffers[ 0 ] = _gl.BACK;
|
|
292
|
-
|
|
293
289
|
info = new WebGLInfo( _gl );
|
|
294
290
|
properties = new WebGLProperties();
|
|
295
291
|
textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );
|
|
@@ -303,7 +299,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
303
299
|
clipping = new WebGLClipping( properties );
|
|
304
300
|
programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
|
|
305
301
|
materials = new WebGLMaterials( properties );
|
|
306
|
-
renderLists = new WebGLRenderLists(
|
|
302
|
+
renderLists = new WebGLRenderLists();
|
|
307
303
|
renderStates = new WebGLRenderStates( extensions, capabilities );
|
|
308
304
|
background = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );
|
|
309
305
|
shadowMap = new WebGLShadowMap( _this, objects, capabilities );
|
|
@@ -569,6 +565,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
569
565
|
cubeuvmaps.dispose();
|
|
570
566
|
objects.dispose();
|
|
571
567
|
bindingStates.dispose();
|
|
568
|
+
programCache.dispose();
|
|
572
569
|
|
|
573
570
|
xr.dispose();
|
|
574
571
|
|
|
@@ -653,82 +650,17 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
653
650
|
|
|
654
651
|
} );
|
|
655
652
|
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
// Buffer rendering
|
|
661
|
-
|
|
662
|
-
function renderObjectImmediate( object, program ) {
|
|
663
|
-
|
|
664
|
-
object.render( function ( object ) {
|
|
665
|
-
|
|
666
|
-
_this.renderBufferImmediate( object, program );
|
|
667
|
-
|
|
668
|
-
} );
|
|
669
|
-
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
this.renderBufferImmediate = function ( object, program ) {
|
|
673
|
-
|
|
674
|
-
bindingStates.initAttributes();
|
|
675
|
-
|
|
676
|
-
const buffers = properties.get( object );
|
|
677
|
-
|
|
678
|
-
if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();
|
|
679
|
-
if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();
|
|
680
|
-
if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();
|
|
681
|
-
if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();
|
|
682
|
-
|
|
683
|
-
const programAttributes = program.getAttributes();
|
|
684
|
-
|
|
685
|
-
if ( object.hasPositions ) {
|
|
686
|
-
|
|
687
|
-
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );
|
|
688
|
-
_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );
|
|
689
|
-
|
|
690
|
-
bindingStates.enableAttribute( programAttributes.position.location );
|
|
691
|
-
_gl.vertexAttribPointer( programAttributes.position.location, 3, _gl.FLOAT, false, 0, 0 );
|
|
692
|
-
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
if ( object.hasNormals ) {
|
|
696
|
-
|
|
697
|
-
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );
|
|
698
|
-
_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );
|
|
699
|
-
|
|
700
|
-
bindingStates.enableAttribute( programAttributes.normal.location );
|
|
701
|
-
_gl.vertexAttribPointer( programAttributes.normal.location, 3, _gl.FLOAT, false, 0, 0 );
|
|
702
|
-
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
if ( object.hasUvs ) {
|
|
706
|
-
|
|
707
|
-
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );
|
|
708
|
-
_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );
|
|
709
|
-
|
|
710
|
-
bindingStates.enableAttribute( programAttributes.uv.location );
|
|
711
|
-
_gl.vertexAttribPointer( programAttributes.uv.location, 2, _gl.FLOAT, false, 0, 0 );
|
|
653
|
+
if ( material.isShaderMaterial ) {
|
|
712
654
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
if ( object.hasColors ) {
|
|
716
|
-
|
|
717
|
-
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );
|
|
718
|
-
_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );
|
|
655
|
+
programCache.releaseShaderCache( material );
|
|
719
656
|
|
|
720
|
-
|
|
721
|
-
_gl.vertexAttribPointer( programAttributes.color.location, 3, _gl.FLOAT, false, 0, 0 );
|
|
657
|
+
}
|
|
722
658
|
|
|
723
659
|
}
|
|
724
660
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
_gl.drawArrays( _gl.TRIANGLES, 0, object.count );
|
|
728
|
-
|
|
729
|
-
object.count = 0;
|
|
661
|
+
}
|
|
730
662
|
|
|
731
|
-
|
|
663
|
+
// Buffer rendering
|
|
732
664
|
|
|
733
665
|
this.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {
|
|
734
666
|
|
|
@@ -1171,17 +1103,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1171
1103
|
|
|
1172
1104
|
}
|
|
1173
1105
|
|
|
1174
|
-
} else if ( object.isImmediateRenderObject ) {
|
|
1175
|
-
|
|
1176
|
-
if ( sortObjects ) {
|
|
1177
|
-
|
|
1178
|
-
_vector3.setFromMatrixPosition( object.matrixWorld )
|
|
1179
|
-
.applyMatrix4( _projScreenMatrix );
|
|
1180
|
-
|
|
1181
|
-
}
|
|
1182
|
-
|
|
1183
|
-
currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );
|
|
1184
|
-
|
|
1185
1106
|
} else if ( object.isMesh || object.isLine || object.isPoints ) {
|
|
1186
1107
|
|
|
1187
1108
|
if ( object.isSkinnedMesh ) {
|
|
@@ -1279,7 +1200,8 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1279
1200
|
minFilter: LinearMipmapLinearFilter,
|
|
1280
1201
|
magFilter: NearestFilter,
|
|
1281
1202
|
wrapS: ClampToEdgeWrapping,
|
|
1282
|
-
wrapT: ClampToEdgeWrapping
|
|
1203
|
+
wrapT: ClampToEdgeWrapping,
|
|
1204
|
+
useRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )
|
|
1283
1205
|
} );
|
|
1284
1206
|
|
|
1285
1207
|
}
|
|
@@ -1336,35 +1258,21 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1336
1258
|
|
|
1337
1259
|
material.onBeforeRender( _this, scene, camera, geometry, object, group );
|
|
1338
1260
|
|
|
1339
|
-
if (
|
|
1340
|
-
|
|
1341
|
-
const program = setProgram( camera, scene, geometry, material, object );
|
|
1261
|
+
if ( material.transparent === true && material.side === DoubleSide ) {
|
|
1342
1262
|
|
|
1343
|
-
|
|
1263
|
+
material.side = BackSide;
|
|
1264
|
+
material.needsUpdate = true;
|
|
1265
|
+
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1344
1266
|
|
|
1345
|
-
|
|
1267
|
+
material.side = FrontSide;
|
|
1268
|
+
material.needsUpdate = true;
|
|
1269
|
+
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1346
1270
|
|
|
1347
|
-
|
|
1271
|
+
material.side = DoubleSide;
|
|
1348
1272
|
|
|
1349
1273
|
} else {
|
|
1350
1274
|
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
material.side = BackSide;
|
|
1354
|
-
material.needsUpdate = true;
|
|
1355
|
-
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1356
|
-
|
|
1357
|
-
material.side = FrontSide;
|
|
1358
|
-
material.needsUpdate = true;
|
|
1359
|
-
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1360
|
-
|
|
1361
|
-
material.side = DoubleSide;
|
|
1362
|
-
|
|
1363
|
-
} else {
|
|
1364
|
-
|
|
1365
|
-
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1366
|
-
|
|
1367
|
-
}
|
|
1275
|
+
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1368
1276
|
|
|
1369
1277
|
}
|
|
1370
1278
|
|
|
@@ -1423,7 +1331,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1423
1331
|
|
|
1424
1332
|
parameters.uniforms = programCache.getUniforms( material );
|
|
1425
1333
|
|
|
1426
|
-
material.onBuild( parameters, _this );
|
|
1334
|
+
material.onBuild( object, parameters, _this );
|
|
1427
1335
|
|
|
1428
1336
|
material.onBeforeCompile( parameters, _this );
|
|
1429
1337
|
|
|
@@ -1500,6 +1408,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1500
1408
|
materialProperties.numIntersection = parameters.numClipIntersection;
|
|
1501
1409
|
materialProperties.vertexAlphas = parameters.vertexAlphas;
|
|
1502
1410
|
materialProperties.vertexTangents = parameters.vertexTangents;
|
|
1411
|
+
materialProperties.toneMapping = parameters.toneMapping;
|
|
1503
1412
|
|
|
1504
1413
|
}
|
|
1505
1414
|
|
|
@@ -1513,11 +1422,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1513
1422
|
const environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
1514
1423
|
const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
|
|
1515
1424
|
const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );
|
|
1516
|
-
const vertexAlphas = material.vertexColors === true && !! geometry
|
|
1517
|
-
const vertexTangents = !! material.normalMap && !! geometry
|
|
1518
|
-
const morphTargets = !! geometry
|
|
1519
|
-
const morphNormals = !! geometry
|
|
1520
|
-
const morphTargetsCount =
|
|
1425
|
+
const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
|
|
1426
|
+
const vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;
|
|
1427
|
+
const morphTargets = !! geometry.morphAttributes.position;
|
|
1428
|
+
const morphNormals = !! geometry.morphAttributes.normal;
|
|
1429
|
+
const morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;
|
|
1430
|
+
const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
|
|
1521
1431
|
|
|
1522
1432
|
const materialProperties = properties.get( material );
|
|
1523
1433
|
const lights = currentRenderState.state.lights;
|
|
@@ -1599,6 +1509,10 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1599
1509
|
|
|
1600
1510
|
needsProgramChange = true;
|
|
1601
1511
|
|
|
1512
|
+
} else if ( materialProperties.toneMapping !== toneMapping ) {
|
|
1513
|
+
|
|
1514
|
+
needsProgramChange = true;
|
|
1515
|
+
|
|
1602
1516
|
} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {
|
|
1603
1517
|
|
|
1604
1518
|
needsProgramChange = true;
|
|
@@ -1885,15 +1799,71 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1885
1799
|
|
|
1886
1800
|
};
|
|
1887
1801
|
|
|
1802
|
+
this.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {
|
|
1803
|
+
|
|
1804
|
+
properties.get( renderTarget.texture ).__webglTexture = colorTexture;
|
|
1805
|
+
properties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;
|
|
1806
|
+
|
|
1807
|
+
const renderTargetProperties = properties.get( renderTarget );
|
|
1808
|
+
renderTargetProperties.__hasExternalTextures = true;
|
|
1809
|
+
|
|
1810
|
+
if ( renderTargetProperties.__hasExternalTextures ) {
|
|
1811
|
+
|
|
1812
|
+
renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;
|
|
1813
|
+
|
|
1814
|
+
if ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {
|
|
1815
|
+
|
|
1816
|
+
// The multisample_render_to_texture extension doesn't work properly if there
|
|
1817
|
+
// are midframe flushes and an external depth buffer. Disable use of the extension.
|
|
1818
|
+
if ( renderTarget.useRenderToTexture ) {
|
|
1819
|
+
|
|
1820
|
+
console.warn( 'render-to-texture extension was disabled because an external texture was provided' );
|
|
1821
|
+
renderTarget.useRenderToTexture = false;
|
|
1822
|
+
renderTarget.useRenderbuffer = true;
|
|
1823
|
+
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
}
|
|
1827
|
+
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
};
|
|
1831
|
+
|
|
1832
|
+
this.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {
|
|
1833
|
+
|
|
1834
|
+
const renderTargetProperties = properties.get( renderTarget );
|
|
1835
|
+
renderTargetProperties.__webglFramebuffer = defaultFramebuffer;
|
|
1836
|
+
renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;
|
|
1837
|
+
|
|
1838
|
+
};
|
|
1839
|
+
|
|
1888
1840
|
this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
|
|
1889
1841
|
|
|
1890
1842
|
_currentRenderTarget = renderTarget;
|
|
1891
1843
|
_currentActiveCubeFace = activeCubeFace;
|
|
1892
1844
|
_currentActiveMipmapLevel = activeMipmapLevel;
|
|
1845
|
+
let useDefaultFramebuffer = true;
|
|
1846
|
+
|
|
1847
|
+
if ( renderTarget ) {
|
|
1848
|
+
|
|
1849
|
+
const renderTargetProperties = properties.get( renderTarget );
|
|
1850
|
+
|
|
1851
|
+
if ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {
|
|
1852
|
+
|
|
1853
|
+
// We need to make sure to rebind the framebuffer.
|
|
1854
|
+
state.bindFramebuffer( _gl.FRAMEBUFFER, null );
|
|
1855
|
+
useDefaultFramebuffer = false;
|
|
1856
|
+
|
|
1857
|
+
} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {
|
|
1858
|
+
|
|
1859
|
+
textures.setupRenderTarget( renderTarget );
|
|
1893
1860
|
|
|
1894
|
-
|
|
1861
|
+
} else if ( renderTargetProperties.__hasExternalTextures ) {
|
|
1895
1862
|
|
|
1896
|
-
|
|
1863
|
+
// Color and depth texture must be rebound in order for the swapchain to update.
|
|
1864
|
+
textures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );
|
|
1865
|
+
|
|
1866
|
+
}
|
|
1897
1867
|
|
|
1898
1868
|
}
|
|
1899
1869
|
|
|
@@ -1918,7 +1888,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1918
1888
|
framebuffer = __webglFramebuffer[ activeCubeFace ];
|
|
1919
1889
|
isCube = true;
|
|
1920
1890
|
|
|
1921
|
-
} else if ( renderTarget.
|
|
1891
|
+
} else if ( renderTarget.useRenderbuffer ) {
|
|
1922
1892
|
|
|
1923
1893
|
framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
|
|
1924
1894
|
|
|
@@ -1942,69 +1912,9 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1942
1912
|
|
|
1943
1913
|
const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
|
|
1944
1914
|
|
|
1945
|
-
if ( framebufferBound && capabilities.drawBuffers ) {
|
|
1946
|
-
|
|
1947
|
-
let needsUpdate = false;
|
|
1948
|
-
|
|
1949
|
-
if ( renderTarget ) {
|
|
1950
|
-
|
|
1951
|
-
if ( renderTarget.isWebGLMultipleRenderTargets ) {
|
|
1952
|
-
|
|
1953
|
-
const textures = renderTarget.texture;
|
|
1954
|
-
|
|
1955
|
-
if ( _currentDrawBuffers.length !== textures.length || _currentDrawBuffers[ 0 ] !== _gl.COLOR_ATTACHMENT0 ) {
|
|
1956
|
-
|
|
1957
|
-
for ( let i = 0, il = textures.length; i < il; i ++ ) {
|
|
1958
|
-
|
|
1959
|
-
_currentDrawBuffers[ i ] = _gl.COLOR_ATTACHMENT0 + i;
|
|
1960
|
-
|
|
1961
|
-
}
|
|
1962
|
-
|
|
1963
|
-
_currentDrawBuffers.length = textures.length;
|
|
1964
|
-
|
|
1965
|
-
needsUpdate = true;
|
|
1966
|
-
|
|
1967
|
-
}
|
|
1968
|
-
|
|
1969
|
-
} else {
|
|
1970
|
-
|
|
1971
|
-
if ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== _gl.COLOR_ATTACHMENT0 ) {
|
|
1915
|
+
if ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {
|
|
1972
1916
|
|
|
1973
|
-
|
|
1974
|
-
_currentDrawBuffers.length = 1;
|
|
1975
|
-
|
|
1976
|
-
needsUpdate = true;
|
|
1977
|
-
|
|
1978
|
-
}
|
|
1979
|
-
|
|
1980
|
-
}
|
|
1981
|
-
|
|
1982
|
-
} else {
|
|
1983
|
-
|
|
1984
|
-
if ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== _gl.BACK ) {
|
|
1985
|
-
|
|
1986
|
-
_currentDrawBuffers[ 0 ] = _gl.BACK;
|
|
1987
|
-
_currentDrawBuffers.length = 1;
|
|
1988
|
-
|
|
1989
|
-
needsUpdate = true;
|
|
1990
|
-
|
|
1991
|
-
}
|
|
1992
|
-
|
|
1993
|
-
}
|
|
1994
|
-
|
|
1995
|
-
if ( needsUpdate ) {
|
|
1996
|
-
|
|
1997
|
-
if ( capabilities.isWebGL2 ) {
|
|
1998
|
-
|
|
1999
|
-
_gl.drawBuffers( _currentDrawBuffers );
|
|
2000
|
-
|
|
2001
|
-
} else {
|
|
2002
|
-
|
|
2003
|
-
extensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( _currentDrawBuffers );
|
|
2004
|
-
|
|
2005
|
-
}
|
|
2006
|
-
|
|
2007
|
-
}
|
|
1917
|
+
state.drawBuffers( renderTarget, framebuffer );
|
|
2008
1918
|
|
|
2009
1919
|
}
|
|
2010
1920
|
|
|
@@ -2105,25 +2015,20 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2105
2015
|
|
|
2106
2016
|
this.copyFramebufferToTexture = function ( position, texture, level = 0 ) {
|
|
2107
2017
|
|
|
2108
|
-
|
|
2109
|
-
const width = Math.floor( texture.image.width * levelScale );
|
|
2110
|
-
const height = Math.floor( texture.image.height * levelScale );
|
|
2111
|
-
|
|
2112
|
-
let glFormat = utils.convert( texture.format );
|
|
2113
|
-
|
|
2114
|
-
if ( capabilities.isWebGL2 ) {
|
|
2115
|
-
|
|
2116
|
-
// Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1120100
|
|
2117
|
-
// Not needed in Chrome 93+
|
|
2018
|
+
if ( texture.isFramebufferTexture !== true ) {
|
|
2118
2019
|
|
|
2119
|
-
|
|
2120
|
-
|
|
2020
|
+
console.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );
|
|
2021
|
+
return;
|
|
2121
2022
|
|
|
2122
2023
|
}
|
|
2123
2024
|
|
|
2025
|
+
const levelScale = Math.pow( 2, - level );
|
|
2026
|
+
const width = Math.floor( texture.image.width * levelScale );
|
|
2027
|
+
const height = Math.floor( texture.image.height * levelScale );
|
|
2028
|
+
|
|
2124
2029
|
textures.setTexture2D( texture, 0 );
|
|
2125
2030
|
|
|
2126
|
-
_gl.
|
|
2031
|
+
_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );
|
|
2127
2032
|
|
|
2128
2033
|
state.unbindTexture();
|
|
2129
2034
|
|
|
@@ -2273,10 +2178,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2273
2178
|
|
|
2274
2179
|
if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {
|
|
2275
2180
|
|
|
2276
|
-
__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );
|
|
2181
|
+
__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );
|
|
2277
2182
|
|
|
2278
2183
|
}
|
|
2279
2184
|
|
|
2280
2185
|
}
|
|
2281
2186
|
|
|
2187
|
+
WebGLRenderer.prototype.isWebGLRenderer = true;
|
|
2188
|
+
|
|
2282
2189
|
export { WebGLRenderer };
|
|
@@ -239,7 +239,7 @@ float V_Neubelt( float dotNV, float dotNL ) {
|
|
|
239
239
|
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3
|
|
242
|
+
vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
|
|
243
243
|
|
|
244
244
|
vec3 halfDir = normalize( lightDir + viewDir );
|
|
245
245
|
|
|
@@ -250,7 +250,7 @@ vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 no
|
|
|
250
250
|
float D = D_Charlie( sheenRoughness, dotNH );
|
|
251
251
|
float V = V_Neubelt( dotNV, dotNL );
|
|
252
252
|
|
|
253
|
-
return
|
|
253
|
+
return sheenColor * ( D * V );
|
|
254
254
|
|
|
255
255
|
}
|
|
256
256
|
|
|
@@ -5,7 +5,7 @@ export default /* glsl */`
|
|
|
5
5
|
uniform float bumpScale;
|
|
6
6
|
|
|
7
7
|
// Bump Mapping Unparametrized Surfaces on the GPU by Morten S. Mikkelsen
|
|
8
|
-
//
|
|
8
|
+
// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf
|
|
9
9
|
|
|
10
10
|
// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)
|
|
11
11
|
|
|
@@ -89,11 +89,7 @@ export default /* glsl */`
|
|
|
89
89
|
|
|
90
90
|
float texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );
|
|
91
91
|
|
|
92
|
-
vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );
|
|
93
|
-
|
|
94
|
-
vec2 f = fract( uv );
|
|
95
|
-
|
|
96
|
-
uv += 0.5 - f;
|
|
92
|
+
vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;
|
|
97
93
|
|
|
98
94
|
if ( face > 2.0 ) {
|
|
99
95
|
|
|
@@ -117,25 +113,7 @@ export default /* glsl */`
|
|
|
117
113
|
|
|
118
114
|
uv *= texelSize;
|
|
119
115
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
uv.x += texelSize;
|
|
123
|
-
|
|
124
|
-
vec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
|
|
125
|
-
|
|
126
|
-
uv.y += texelSize;
|
|
127
|
-
|
|
128
|
-
vec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
|
|
129
|
-
|
|
130
|
-
uv.x -= texelSize;
|
|
131
|
-
|
|
132
|
-
vec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
|
|
133
|
-
|
|
134
|
-
vec3 tm = mix( tl, tr, f.x );
|
|
135
|
-
|
|
136
|
-
vec3 bm = mix( bl, br, f.x );
|
|
137
|
-
|
|
138
|
-
return mix( tm, bm, f.y );
|
|
116
|
+
return texture2D( envMap, uv ).rgb;
|
|
139
117
|
|
|
140
118
|
}
|
|
141
119
|
|
|
@@ -1,89 +1,11 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
|
-
// For a discussion of what this is, please read this: http://lousodrome.net/blog/light/2013/05/26/gamma-correct-and-hdr-rendering-in-a-32-bits-buffer/
|
|
3
2
|
|
|
4
3
|
vec4 LinearToLinear( in vec4 value ) {
|
|
5
4
|
return value;
|
|
6
5
|
}
|
|
7
6
|
|
|
8
|
-
vec4 GammaToLinear( in vec4 value, in float gammaFactor ) {
|
|
9
|
-
return vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
vec4 LinearToGamma( in vec4 value, in float gammaFactor ) {
|
|
13
|
-
return vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
vec4 sRGBToLinear( in vec4 value ) {
|
|
17
|
-
return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );
|
|
18
|
-
}
|
|
19
|
-
|
|
20
7
|
vec4 LinearTosRGB( in vec4 value ) {
|
|
21
8
|
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
|
22
9
|
}
|
|
23
10
|
|
|
24
|
-
vec4 RGBEToLinear( in vec4 value ) {
|
|
25
|
-
return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
vec4 LinearToRGBE( in vec4 value ) {
|
|
29
|
-
float maxComponent = max( max( value.r, value.g ), value.b );
|
|
30
|
-
float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );
|
|
31
|
-
return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );
|
|
32
|
-
// return vec4( value.brg, ( 3.0 + 128.0 ) / 256.0 );
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
|
|
36
|
-
vec4 RGBMToLinear( in vec4 value, in float maxRange ) {
|
|
37
|
-
return vec4( value.rgb * value.a * maxRange, 1.0 );
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
vec4 LinearToRGBM( in vec4 value, in float maxRange ) {
|
|
41
|
-
float maxRGB = max( value.r, max( value.g, value.b ) );
|
|
42
|
-
float M = clamp( maxRGB / maxRange, 0.0, 1.0 );
|
|
43
|
-
M = ceil( M * 255.0 ) / 255.0;
|
|
44
|
-
return vec4( value.rgb / ( M * maxRange ), M );
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
|
|
48
|
-
vec4 RGBDToLinear( in vec4 value, in float maxRange ) {
|
|
49
|
-
return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
vec4 LinearToRGBD( in vec4 value, in float maxRange ) {
|
|
53
|
-
float maxRGB = max( value.r, max( value.g, value.b ) );
|
|
54
|
-
float D = max( maxRange / maxRGB, 1.0 );
|
|
55
|
-
// NOTE: The implementation with min causes the shader to not compile on
|
|
56
|
-
// a common Alcatel A502DL in Chrome 78/Android 8.1. Some research suggests
|
|
57
|
-
// that the chipset is Mediatek MT6739 w/ IMG PowerVR GE8100 GPU.
|
|
58
|
-
// D = min( floor( D ) / 255.0, 1.0 );
|
|
59
|
-
D = clamp( floor( D ) / 255.0, 0.0, 1.0 );
|
|
60
|
-
return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html
|
|
64
|
-
|
|
65
|
-
// M matrix, for encoding
|
|
66
|
-
const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );
|
|
67
|
-
vec4 LinearToLogLuv( in vec4 value ) {
|
|
68
|
-
vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
|
|
69
|
-
Xp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );
|
|
70
|
-
vec4 vResult;
|
|
71
|
-
vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
|
|
72
|
-
float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
|
|
73
|
-
vResult.w = fract( Le );
|
|
74
|
-
vResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;
|
|
75
|
-
return vResult;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Inverse M matrix, for decoding
|
|
79
|
-
const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );
|
|
80
|
-
vec4 LogLuvToLinear( in vec4 value ) {
|
|
81
|
-
float Le = value.z * 255.0 + value.w;
|
|
82
|
-
vec3 Xp_Y_XYZp;
|
|
83
|
-
Xp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );
|
|
84
|
-
Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
|
|
85
|
-
Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
|
|
86
|
-
vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
|
|
87
|
-
return vec4( max( vRGB, 0.0 ), 1.0 );
|
|
88
|
-
}
|
|
89
11
|
`;
|
|
@@ -38,8 +38,6 @@ export default /* glsl */`
|
|
|
38
38
|
|
|
39
39
|
vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
|
|
40
40
|
|
|
41
|
-
envColor = envMapTexelToLinear( envColor );
|
|
42
|
-
|
|
43
41
|
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
|
44
42
|
|
|
45
43
|
vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );
|
|
@@ -2,7 +2,7 @@ export default /* glsl */`
|
|
|
2
2
|
#ifdef USE_LIGHTMAP
|
|
3
3
|
|
|
4
4
|
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
|
5
|
-
vec3 lightMapIrradiance =
|
|
5
|
+
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
|
6
6
|
|
|
7
7
|
#ifndef PHYSICALLY_CORRECT_LIGHTS
|
|
8
8
|
|
|
@@ -4,7 +4,7 @@ export default /* glsl */`
|
|
|
4
4
|
#ifdef USE_LIGHTMAP
|
|
5
5
|
|
|
6
6
|
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
|
7
|
-
vec3 lightMapIrradiance =
|
|
7
|
+
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
|
8
8
|
|
|
9
9
|
#ifndef PHYSICALLY_CORRECT_LIGHTS
|
|
10
10
|
|