super-three 0.133.3 → 0.136.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.js +1059 -783
- package/build/three.min.js +1 -1
- package/build/three.module.js +1424 -895
- 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 +1 -3
- 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/USDZExporter.js +45 -26
- 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/ColladaLoader.js +61 -4
- package/examples/js/loaders/EXRLoader.js +185 -262
- package/examples/js/loaders/FBXLoader.js +4 -5
- package/examples/js/loaders/GLTFLoader.js +96 -33
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -8
- package/examples/js/loaders/KTX2Loader.js +23 -2
- package/examples/js/loaders/KTXLoader.js +1 -1
- package/examples/js/loaders/LDrawLoader.js +26 -30
- package/examples/js/loaders/LUT3dlLoader.js +2 -0
- package/examples/js/loaders/LUTCubeLoader.js +2 -0
- 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 +2 -16
- package/examples/js/loaders/RGBMLoader.js +55 -5
- package/examples/js/loaders/SVGLoader.js +9 -5
- package/examples/js/loaders/TDSLoader.js +237 -271
- package/examples/js/loaders/VOXLoader.js +1 -0
- package/examples/js/loaders/VRMLLoader.js +2 -1
- package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/misc/GPUComputationRenderer.js +3 -1
- package/examples/js/objects/Lensflare.js +2 -10
- package/examples/js/objects/MarchingCubes.js +42 -128
- package/examples/js/objects/Reflector.js +7 -0
- package/examples/js/objects/Refractor.js +7 -0
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +2 -2
- package/examples/js/objects/Water2.js +4 -7
- package/examples/js/postprocessing/GlitchPass.js +3 -1
- package/examples/js/postprocessing/SSAOPass.js +1 -0
- 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/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/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/js/utils/RoughnessMipmapper.js +18 -28
- package/examples/jsm/animation/CCDIKSolver.js +0 -1
- package/examples/jsm/animation/MMDPhysics.js +0 -2
- 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 +161 -75
- package/examples/jsm/exporters/USDZExporter.js +47 -26
- 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/ColladaLoader.js +61 -4
- package/examples/jsm/loaders/EXRLoader.js +184 -293
- package/examples/jsm/loaders/FBXLoader.js +4 -5
- package/examples/jsm/loaders/GLTFLoader.js +101 -37
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -14
- package/examples/jsm/loaders/KTX2Loader.js +30 -2
- package/examples/jsm/loaders/KTXLoader.js +1 -1
- package/examples/jsm/loaders/LDrawLoader.js +23 -24
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -0
- 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 +0 -20
- package/examples/jsm/loaders/RGBMLoader.js +61 -7
- package/examples/jsm/loaders/SVGLoader.js +9 -6
- package/examples/jsm/loaders/TDSLoader.js +236 -275
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +2 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
- package/examples/jsm/node-editor/NodeEditor.js +456 -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 +1 -164
- package/examples/jsm/objects/Lensflare.js +3 -14
- package/examples/jsm/objects/MarchingCubes.js +46 -152
- package/examples/jsm/objects/Reflector.js +7 -0
- package/examples/jsm/objects/Refractor.js +7 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/Water.js +2 -2
- 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 +4 -2
- 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 +1 -1
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -1
- package/examples/jsm/postprocessing/SSRPass.js +1 -1
- package/examples/jsm/postprocessing/SSRrPass.js +1 -1
- package/examples/jsm/postprocessing/SavePass.js +1 -1
- 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 +15 -13
- package/examples/jsm/renderers/nodes/ShaderNode.js +194 -41
- 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 +60 -43
- 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 +10 -2
- 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 +90 -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/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 +12 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +34 -27
- package/examples/jsm/renderers/webgpu/constants.js +2 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +453 -95
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/ConvolutionShader.js +0 -1
- 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/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/RoughnessMipmapper.js +19 -31
- package/examples/jsm/utils/WorkerPool.js +11 -11
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
- package/package.json +24 -18
- package/src/Three.Legacy.js +18 -0
- package/src/Three.js +1 -3
- package/src/cameras/StereoCamera.js +8 -7
- package/src/constants.js +1 -8
- package/src/core/Layers.js +7 -1
- package/src/core/Object3D.js +3 -1
- package/src/extras/PMREMGenerator.js +23 -109
- 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 +7 -4
- package/src/loaders/ObjectLoader.js +2 -0
- package/src/materials/Material.js +4 -4
- package/src/materials/MeshPhysicalMaterial.js +20 -14
- package/src/math/Color.js +0 -38
- package/src/math/MathUtils.js +5 -16
- package/src/math/Ray.js +2 -2
- package/src/math/Sphere.js +10 -1
- package/src/objects/Skeleton.js +1 -0
- package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
- package/src/renderers/WebGLRenderer.js +105 -132
- 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/encodings_pars_fragment.glsl.js +0 -74
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.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/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 +1 -1
- 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 +6 -4
- package/src/renderers/shaders/UniformsLib.js +1 -2
- package/src/renderers/webgl/WebGLCapabilities.js +0 -2
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLMaterials.js +27 -15
- package/src/renderers/webgl/WebGLMorphtargets.js +1 -0
- package/src/renderers/webgl/WebGLProgram.js +11 -24
- package/src/renderers/webgl/WebGLPrograms.js +194 -33
- 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 +76 -17
- package/src/renderers/webgl/WebGLTextures.js +367 -61
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- 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 +6 -0
- package/examples/js/controls/DeviceOrientationControls.js +0 -147
- package/examples/js/libs/dat.gui.min.js +0 -14
- 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/src/extras/objects/ImmediateRenderObject.js +0 -31
package/src/math/Ray.js
CHANGED
|
@@ -100,7 +100,7 @@ class Ray {
|
|
|
100
100
|
|
|
101
101
|
distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {
|
|
102
102
|
|
|
103
|
-
// from
|
|
103
|
+
// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h
|
|
104
104
|
// It returns the min distance between the ray and the segment
|
|
105
105
|
// defined by v0 and v1
|
|
106
106
|
// It can also set two optional targets :
|
|
@@ -399,7 +399,7 @@ class Ray {
|
|
|
399
399
|
|
|
400
400
|
// Compute the offset origin, edges, and normal.
|
|
401
401
|
|
|
402
|
-
// from
|
|
402
|
+
// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h
|
|
403
403
|
|
|
404
404
|
_edge1.subVectors( b, a );
|
|
405
405
|
_edge2.subVectors( c, a );
|
package/src/math/Sphere.js
CHANGED
|
@@ -193,7 +193,16 @@ class Sphere {
|
|
|
193
193
|
// 1) Enclose the farthest point on the other sphere into this sphere.
|
|
194
194
|
// 2) Enclose the opposite point of the farthest point into this sphere.
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
if ( this.center.equals( sphere.center ) === true ) {
|
|
197
|
+
|
|
198
|
+
_toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
} else {
|
|
202
|
+
|
|
203
|
+
_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );
|
|
204
|
+
|
|
205
|
+
}
|
|
197
206
|
|
|
198
207
|
this.expandByPoint( _v1.copy( sphere.center ).add( _toFarthestPoint ) );
|
|
199
208
|
this.expandByPoint( _v1.copy( sphere.center ).sub( _toFarthestPoint ) );
|
package/src/objects/Skeleton.js
CHANGED
|
@@ -178,6 +178,7 @@ class Skeleton {
|
|
|
178
178
|
boneMatrices.set( this.boneMatrices ); // copy current values
|
|
179
179
|
|
|
180
180
|
const boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );
|
|
181
|
+
boneTexture.needsUpdate = true;
|
|
181
182
|
|
|
182
183
|
this.boneMatrices = boneMatrices;
|
|
183
184
|
this.boneTexture = boneTexture;
|
|
@@ -2,12 +2,16 @@ import { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
|
2
2
|
|
|
3
3
|
class WebGLMultisampleRenderTarget extends WebGLRenderTarget {
|
|
4
4
|
|
|
5
|
-
constructor( width, height, options ) {
|
|
5
|
+
constructor( width, height, options = {} ) {
|
|
6
6
|
|
|
7
7
|
super( width, height, options );
|
|
8
8
|
|
|
9
9
|
this.samples = 4;
|
|
10
10
|
|
|
11
|
+
this.ignoreDepthForMultisampleCopy = options.ignoreDepth !== undefined ? options.ignoreDepth : true;
|
|
12
|
+
this.useRenderToTexture = ( options.useRenderToTexture !== undefined ) ? options.useRenderToTexture : false;
|
|
13
|
+
this.useRenderbuffer = this.useRenderToTexture === false;
|
|
14
|
+
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
copy( source ) {
|
|
@@ -15,6 +19,8 @@ class WebGLMultisampleRenderTarget extends WebGLRenderTarget {
|
|
|
15
19
|
super.copy.call( this, source );
|
|
16
20
|
|
|
17
21
|
this.samples = source.samples;
|
|
22
|
+
this.useRenderToTexture = source.useRenderToTexture;
|
|
23
|
+
this.useRenderbuffer = source.useRenderbuffer;
|
|
18
24
|
|
|
19
25
|
return this;
|
|
20
26
|
|
|
@@ -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
|
|
@@ -216,8 +216,10 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
216
216
|
failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat
|
|
217
217
|
};
|
|
218
218
|
|
|
219
|
-
//
|
|
219
|
+
// OffscreenCanvas does not have setAttribute, see #22811
|
|
220
|
+
if ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );
|
|
220
221
|
|
|
222
|
+
// event listeners must be registered before WebGL context is created, see #12753
|
|
221
223
|
_canvas.addEventListener( 'webglcontextlost', onContextLost, false );
|
|
222
224
|
_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
223
225
|
|
|
@@ -303,7 +305,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
303
305
|
clipping = new WebGLClipping( properties );
|
|
304
306
|
programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
|
|
305
307
|
materials = new WebGLMaterials( properties );
|
|
306
|
-
renderLists = new WebGLRenderLists(
|
|
308
|
+
renderLists = new WebGLRenderLists();
|
|
307
309
|
renderStates = new WebGLRenderStates( extensions, capabilities );
|
|
308
310
|
background = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );
|
|
309
311
|
shadowMap = new WebGLShadowMap( _this, objects, capabilities );
|
|
@@ -569,6 +571,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
569
571
|
cubeuvmaps.dispose();
|
|
570
572
|
objects.dispose();
|
|
571
573
|
bindingStates.dispose();
|
|
574
|
+
programCache.dispose();
|
|
572
575
|
|
|
573
576
|
xr.dispose();
|
|
574
577
|
|
|
@@ -653,82 +656,17 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
653
656
|
|
|
654
657
|
} );
|
|
655
658
|
|
|
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 ) {
|
|
659
|
+
if ( material.isShaderMaterial ) {
|
|
696
660
|
|
|
697
|
-
|
|
698
|
-
_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );
|
|
661
|
+
programCache.releaseShaderCache( material );
|
|
699
662
|
|
|
700
|
-
|
|
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 );
|
|
712
|
-
|
|
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 );
|
|
719
|
-
|
|
720
|
-
bindingStates.enableAttribute( programAttributes.color.location );
|
|
721
|
-
_gl.vertexAttribPointer( programAttributes.color.location, 3, _gl.FLOAT, false, 0, 0 );
|
|
663
|
+
}
|
|
722
664
|
|
|
723
665
|
}
|
|
724
666
|
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
_gl.drawArrays( _gl.TRIANGLES, 0, object.count );
|
|
728
|
-
|
|
729
|
-
object.count = 0;
|
|
667
|
+
}
|
|
730
668
|
|
|
731
|
-
|
|
669
|
+
// Buffer rendering
|
|
732
670
|
|
|
733
671
|
this.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {
|
|
734
672
|
|
|
@@ -1171,17 +1109,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1171
1109
|
|
|
1172
1110
|
}
|
|
1173
1111
|
|
|
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
1112
|
} else if ( object.isMesh || object.isLine || object.isPoints ) {
|
|
1186
1113
|
|
|
1187
1114
|
if ( object.isSkinnedMesh ) {
|
|
@@ -1279,7 +1206,8 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1279
1206
|
minFilter: LinearMipmapLinearFilter,
|
|
1280
1207
|
magFilter: NearestFilter,
|
|
1281
1208
|
wrapS: ClampToEdgeWrapping,
|
|
1282
|
-
wrapT: ClampToEdgeWrapping
|
|
1209
|
+
wrapT: ClampToEdgeWrapping,
|
|
1210
|
+
useRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )
|
|
1283
1211
|
} );
|
|
1284
1212
|
|
|
1285
1213
|
}
|
|
@@ -1336,35 +1264,21 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1336
1264
|
|
|
1337
1265
|
material.onBeforeRender( _this, scene, camera, geometry, object, group );
|
|
1338
1266
|
|
|
1339
|
-
if (
|
|
1267
|
+
if ( material.transparent === true && material.side === DoubleSide ) {
|
|
1340
1268
|
|
|
1341
|
-
|
|
1269
|
+
material.side = BackSide;
|
|
1270
|
+
material.needsUpdate = true;
|
|
1271
|
+
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1342
1272
|
|
|
1343
|
-
|
|
1273
|
+
material.side = FrontSide;
|
|
1274
|
+
material.needsUpdate = true;
|
|
1275
|
+
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1344
1276
|
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
renderObjectImmediate( object, program );
|
|
1277
|
+
material.side = DoubleSide;
|
|
1348
1278
|
|
|
1349
1279
|
} else {
|
|
1350
1280
|
|
|
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
|
-
}
|
|
1281
|
+
_this.renderBufferDirect( camera, scene, geometry, material, object, group );
|
|
1368
1282
|
|
|
1369
1283
|
}
|
|
1370
1284
|
|
|
@@ -1423,7 +1337,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1423
1337
|
|
|
1424
1338
|
parameters.uniforms = programCache.getUniforms( material );
|
|
1425
1339
|
|
|
1426
|
-
material.onBuild( parameters, _this );
|
|
1340
|
+
material.onBuild( object, parameters, _this );
|
|
1427
1341
|
|
|
1428
1342
|
material.onBeforeCompile( parameters, _this );
|
|
1429
1343
|
|
|
@@ -1500,6 +1414,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1500
1414
|
materialProperties.numIntersection = parameters.numClipIntersection;
|
|
1501
1415
|
materialProperties.vertexAlphas = parameters.vertexAlphas;
|
|
1502
1416
|
materialProperties.vertexTangents = parameters.vertexTangents;
|
|
1417
|
+
materialProperties.toneMapping = parameters.toneMapping;
|
|
1503
1418
|
|
|
1504
1419
|
}
|
|
1505
1420
|
|
|
@@ -1513,11 +1428,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1513
1428
|
const environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
1514
1429
|
const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
|
|
1515
1430
|
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 =
|
|
1431
|
+
const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
|
|
1432
|
+
const vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;
|
|
1433
|
+
const morphTargets = !! geometry.morphAttributes.position;
|
|
1434
|
+
const morphNormals = !! geometry.morphAttributes.normal;
|
|
1435
|
+
const morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;
|
|
1436
|
+
const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
|
|
1521
1437
|
|
|
1522
1438
|
const materialProperties = properties.get( material );
|
|
1523
1439
|
const lights = currentRenderState.state.lights;
|
|
@@ -1599,6 +1515,10 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1599
1515
|
|
|
1600
1516
|
needsProgramChange = true;
|
|
1601
1517
|
|
|
1518
|
+
} else if ( materialProperties.toneMapping !== toneMapping ) {
|
|
1519
|
+
|
|
1520
|
+
needsProgramChange = true;
|
|
1521
|
+
|
|
1602
1522
|
} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {
|
|
1603
1523
|
|
|
1604
1524
|
needsProgramChange = true;
|
|
@@ -1885,15 +1805,71 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1885
1805
|
|
|
1886
1806
|
};
|
|
1887
1807
|
|
|
1808
|
+
this.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {
|
|
1809
|
+
|
|
1810
|
+
properties.get( renderTarget.texture ).__webglTexture = colorTexture;
|
|
1811
|
+
properties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;
|
|
1812
|
+
|
|
1813
|
+
const renderTargetProperties = properties.get( renderTarget );
|
|
1814
|
+
renderTargetProperties.__hasExternalTextures = true;
|
|
1815
|
+
|
|
1816
|
+
if ( renderTargetProperties.__hasExternalTextures ) {
|
|
1817
|
+
|
|
1818
|
+
renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;
|
|
1819
|
+
|
|
1820
|
+
if ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {
|
|
1821
|
+
|
|
1822
|
+
// The multisample_render_to_texture extension doesn't work properly if there
|
|
1823
|
+
// are midframe flushes and an external depth buffer. Disable use of the extension.
|
|
1824
|
+
if ( renderTarget.useRenderToTexture ) {
|
|
1825
|
+
|
|
1826
|
+
console.warn( 'render-to-texture extension was disabled because an external texture was provided' );
|
|
1827
|
+
renderTarget.useRenderToTexture = false;
|
|
1828
|
+
renderTarget.useRenderbuffer = true;
|
|
1829
|
+
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1832
|
+
}
|
|
1833
|
+
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
};
|
|
1837
|
+
|
|
1838
|
+
this.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {
|
|
1839
|
+
|
|
1840
|
+
const renderTargetProperties = properties.get( renderTarget );
|
|
1841
|
+
renderTargetProperties.__webglFramebuffer = defaultFramebuffer;
|
|
1842
|
+
renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;
|
|
1843
|
+
|
|
1844
|
+
};
|
|
1845
|
+
|
|
1888
1846
|
this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
|
|
1889
1847
|
|
|
1890
1848
|
_currentRenderTarget = renderTarget;
|
|
1891
1849
|
_currentActiveCubeFace = activeCubeFace;
|
|
1892
1850
|
_currentActiveMipmapLevel = activeMipmapLevel;
|
|
1851
|
+
let useDefaultFramebuffer = true;
|
|
1852
|
+
|
|
1853
|
+
if ( renderTarget ) {
|
|
1854
|
+
|
|
1855
|
+
const renderTargetProperties = properties.get( renderTarget );
|
|
1893
1856
|
|
|
1894
|
-
|
|
1857
|
+
if ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {
|
|
1895
1858
|
|
|
1896
|
-
|
|
1859
|
+
// We need to make sure to rebind the framebuffer.
|
|
1860
|
+
state.bindFramebuffer( _gl.FRAMEBUFFER, null );
|
|
1861
|
+
useDefaultFramebuffer = false;
|
|
1862
|
+
|
|
1863
|
+
} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {
|
|
1864
|
+
|
|
1865
|
+
textures.setupRenderTarget( renderTarget );
|
|
1866
|
+
|
|
1867
|
+
} else if ( renderTargetProperties.__hasExternalTextures ) {
|
|
1868
|
+
|
|
1869
|
+
// Color and depth texture must be rebound in order for the swapchain to update.
|
|
1870
|
+
textures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );
|
|
1871
|
+
|
|
1872
|
+
}
|
|
1897
1873
|
|
|
1898
1874
|
}
|
|
1899
1875
|
|
|
@@ -1918,7 +1894,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1918
1894
|
framebuffer = __webglFramebuffer[ activeCubeFace ];
|
|
1919
1895
|
isCube = true;
|
|
1920
1896
|
|
|
1921
|
-
} else if ( renderTarget.
|
|
1897
|
+
} else if ( renderTarget.useRenderbuffer ) {
|
|
1922
1898
|
|
|
1923
1899
|
framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
|
|
1924
1900
|
|
|
@@ -1942,7 +1918,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1942
1918
|
|
|
1943
1919
|
const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
|
|
1944
1920
|
|
|
1945
|
-
if ( framebufferBound && capabilities.drawBuffers ) {
|
|
1921
|
+
if ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {
|
|
1946
1922
|
|
|
1947
1923
|
let needsUpdate = false;
|
|
1948
1924
|
|
|
@@ -2105,25 +2081,20 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2105
2081
|
|
|
2106
2082
|
this.copyFramebufferToTexture = function ( position, texture, level = 0 ) {
|
|
2107
2083
|
|
|
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+
|
|
2084
|
+
if ( texture.isFramebufferTexture !== true ) {
|
|
2118
2085
|
|
|
2119
|
-
|
|
2120
|
-
|
|
2086
|
+
console.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );
|
|
2087
|
+
return;
|
|
2121
2088
|
|
|
2122
2089
|
}
|
|
2123
2090
|
|
|
2091
|
+
const levelScale = Math.pow( 2, - level );
|
|
2092
|
+
const width = Math.floor( texture.image.width * levelScale );
|
|
2093
|
+
const height = Math.floor( texture.image.height * levelScale );
|
|
2094
|
+
|
|
2124
2095
|
textures.setTexture2D( texture, 0 );
|
|
2125
2096
|
|
|
2126
|
-
_gl.
|
|
2097
|
+
_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );
|
|
2127
2098
|
|
|
2128
2099
|
state.unbindTexture();
|
|
2129
2100
|
|
|
@@ -2273,10 +2244,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2273
2244
|
|
|
2274
2245
|
if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {
|
|
2275
2246
|
|
|
2276
|
-
__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );
|
|
2247
|
+
__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );
|
|
2277
2248
|
|
|
2278
2249
|
}
|
|
2279
2250
|
|
|
2280
2251
|
}
|
|
2281
2252
|
|
|
2253
|
+
WebGLRenderer.prototype.isWebGLRenderer = true;
|
|
2254
|
+
|
|
2282
2255
|
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,18 +1,9 @@
|
|
|
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
7
|
vec4 sRGBToLinear( in vec4 value ) {
|
|
17
8
|
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
9
|
}
|
|
@@ -21,69 +12,4 @@ vec4 LinearTosRGB( in vec4 value ) {
|
|
|
21
12
|
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
13
|
}
|
|
23
14
|
|
|
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
15
|
`;
|