super-three 0.133.5 → 0.137.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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +37132 -0
- package/build/three.js +2337 -2017
- package/build/three.min.js +2 -2
- package/build/three.module.js +6036 -5378
- 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/MMDAnimationHelper.js +3 -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/controls/experimental/CameraControls.js +6 -2
- 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 +230 -103
- 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/geometries/TextGeometry.js +12 -10
- package/examples/js/interactive/HTMLMesh.js +14 -2
- 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 +215 -275
- 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 +1353 -969
- 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/MD2Loader.js +5 -5
- package/examples/js/loaders/MMDLoader.js +0 -1
- package/examples/js/loaders/MTLLoader.js +10 -3
- package/examples/js/loaders/NRRDLoader.js +9 -2
- package/examples/js/loaders/OBJLoader.js +0 -2
- package/examples/js/loaders/PCDLoader.js +2 -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/STLLoader.js +1 -1
- package/examples/js/loaders/SVGLoader.js +14 -7
- 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 +0 -6
- package/examples/js/modifiers/SimplifyModifier.js +0 -10
- 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/OutlinePass.js +1 -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 +29 -23
- package/examples/js/renderers/CSS3DRenderer.js +41 -36
- 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/js/utils/LDrawUtils.js +182 -0
- 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 +249 -111
- 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/geometries/TextGeometry.js +13 -13
- package/examples/jsm/interactive/HTMLMesh.js +16 -2
- package/examples/jsm/interactive/SelectionBox.js +1 -0
- package/examples/jsm/interactive/SelectionHelper.js +19 -7
- package/examples/jsm/libs/flow.module.js +4099 -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 +213 -309
- 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 +1344 -991
- 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/MD2Loader.js +5 -5
- package/examples/jsm/loaders/MMDLoader.js +0 -1
- package/examples/jsm/loaders/MTLLoader.js +11 -4
- package/examples/jsm/loaders/NRRDLoader.js +10 -2
- package/examples/jsm/loaders/OBJLoader.js +0 -2
- package/examples/jsm/loaders/PCDLoader.js +2 -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/STLLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +18 -8
- package/examples/jsm/loaders/TDSLoader.js +236 -275
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +11 -24
- 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 +0 -6
- package/examples/jsm/modifiers/SimplifyModifier.js +0 -10
- package/examples/jsm/node-editor/NodeEditor.js +709 -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 +25 -0
- package/examples/jsm/node-editor/core/BaseNode.js +83 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +44 -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 +95 -0
- package/examples/jsm/node-editor/inputs/FloatEditor.js +23 -0
- package/examples/jsm/node-editor/inputs/SliderEditor.js +67 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +27 -0
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +29 -0
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +36 -0
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +97 -0
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +111 -0
- package/examples/jsm/node-editor/math/AngleEditor.js +39 -0
- package/examples/jsm/node-editor/math/DotEditor.js +35 -0
- package/examples/jsm/node-editor/math/InvertEditor.js +39 -0
- package/examples/jsm/node-editor/math/LimiterEditor.js +49 -0
- package/examples/jsm/node-editor/math/NormalizeEditor.js +27 -0
- package/examples/jsm/node-editor/math/OperatorEditor.js +51 -0
- package/examples/jsm/node-editor/math/PowerEditor.js +35 -0
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +44 -0
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +27 -0
- package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
- package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
- package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
- package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +43 -0
- package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
- package/examples/jsm/node-editor/utils/TimerEditor.js +58 -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 +2 -5
- 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 +29 -23
- package/examples/jsm/renderers/CSS3DRenderer.js +41 -34
- 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 +5 -3
- 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 +147 -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 +33 -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 +202 -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 +38 -22
- 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 -25
- package/src/core/BufferGeometry.js +2 -2
- 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 +71 -48
- package/src/helpers/CameraHelper.js +1 -1
- package/src/loaders/FileLoader.js +110 -139
- 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/Box3.js +24 -10
- 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/WebGLRenderTarget.js +4 -1
- package/src/renderers/WebGLRenderer.js +109 -202
- 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/morphnormal_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +2 -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/WebGLBackground.js +2 -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/WebGLGeometries.js +2 -2
- 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 +159 -19
- package/src/renderers/webgl/WebGLTextures.js +449 -87
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- package/src/renderers/webgl/WebGLUtils.js +86 -30
- package/src/renderers/webxr/WebXRManager.js +77 -107
- 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/src/utils.js +15 -1
- 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,18 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
GammaEncoding,
|
|
3
2
|
LinearEncoding,
|
|
4
|
-
RGBEEncoding,
|
|
5
|
-
RGBM7Encoding,
|
|
6
|
-
RGBM16Encoding,
|
|
7
|
-
RGBDEncoding,
|
|
8
3
|
sRGBEncoding
|
|
9
4
|
} from 'three';
|
|
10
5
|
|
|
11
6
|
import { TempNode } from '../core/TempNode.js';
|
|
12
|
-
import { ConstNode } from '../core/ConstNode.js';
|
|
13
|
-
import { FloatNode } from '../inputs/FloatNode.js';
|
|
14
7
|
import { FunctionNode } from '../core/FunctionNode.js';
|
|
15
|
-
import { ExpressionNode } from '../core/ExpressionNode.js';
|
|
16
8
|
|
|
17
9
|
class ColorSpaceNode extends TempNode {
|
|
18
10
|
|
|
@@ -65,9 +57,11 @@ class ColorSpaceNode extends TempNode {
|
|
|
65
57
|
|
|
66
58
|
}
|
|
67
59
|
|
|
68
|
-
fromDecoding(
|
|
60
|
+
fromDecoding() {
|
|
69
61
|
|
|
70
|
-
|
|
62
|
+
// TODO: Remove fromDecoding()
|
|
63
|
+
|
|
64
|
+
const components = ColorSpaceNode.getEncodingComponents( LinearEncoding );
|
|
71
65
|
|
|
72
66
|
this.method = components[ 0 ] + 'ToLinear';
|
|
73
67
|
this.factor = components[ 1 ];
|
|
@@ -106,8 +100,6 @@ class ColorSpaceNode extends TempNode {
|
|
|
106
100
|
|
|
107
101
|
ColorSpaceNode.Nodes = ( function () {
|
|
108
102
|
|
|
109
|
-
// 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/
|
|
110
|
-
|
|
111
103
|
const LinearToLinear = new FunctionNode( /* glsl */`
|
|
112
104
|
vec4 LinearToLinear( in vec4 value ) {
|
|
113
105
|
|
|
@@ -116,30 +108,6 @@ ColorSpaceNode.Nodes = ( function () {
|
|
|
116
108
|
}`
|
|
117
109
|
);
|
|
118
110
|
|
|
119
|
-
const GammaToLinear = new FunctionNode( /* glsl */`
|
|
120
|
-
vec4 GammaToLinear( in vec4 value, in float gammaFactor ) {
|
|
121
|
-
|
|
122
|
-
return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );
|
|
123
|
-
|
|
124
|
-
}`
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
const LinearToGamma = new FunctionNode( /* glsl */`
|
|
128
|
-
vec4 LinearToGamma( in vec4 value, in float gammaFactor ) {
|
|
129
|
-
|
|
130
|
-
return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );
|
|
131
|
-
|
|
132
|
-
}`
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
const sRGBToLinear = new FunctionNode( /* glsl */`
|
|
136
|
-
vec4 sRGBToLinear( in vec4 value ) {
|
|
137
|
-
|
|
138
|
-
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.w );
|
|
139
|
-
|
|
140
|
-
}`
|
|
141
|
-
);
|
|
142
|
-
|
|
143
111
|
const LinearTosRGB = new FunctionNode( /* glsl */`
|
|
144
112
|
vec4 LinearTosRGB( in vec4 value ) {
|
|
145
113
|
|
|
@@ -148,146 +116,16 @@ ColorSpaceNode.Nodes = ( function () {
|
|
|
148
116
|
}`
|
|
149
117
|
);
|
|
150
118
|
|
|
151
|
-
const RGBEToLinear = new FunctionNode( /* glsl */`
|
|
152
|
-
vec4 RGBEToLinear( in vec4 value ) {
|
|
153
|
-
|
|
154
|
-
return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );
|
|
155
|
-
|
|
156
|
-
}`
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
const LinearToRGBE = new FunctionNode( /* glsl */`
|
|
160
|
-
vec4 LinearToRGBE( in vec4 value ) {
|
|
161
|
-
|
|
162
|
-
float maxComponent = max( max( value.r, value.g ), value.b );
|
|
163
|
-
float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );
|
|
164
|
-
return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );
|
|
165
|
-
|
|
166
|
-
}`
|
|
167
|
-
);
|
|
168
|
-
|
|
169
|
-
// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
|
|
170
|
-
|
|
171
|
-
const RGBMToLinear = new FunctionNode( /* glsl */`
|
|
172
|
-
vec3 RGBMToLinear( in vec4 value, in float maxRange ) {
|
|
173
|
-
|
|
174
|
-
return vec4( value.xyz * value.w * maxRange, 1.0 );
|
|
175
|
-
|
|
176
|
-
}`
|
|
177
|
-
);
|
|
178
|
-
|
|
179
|
-
const LinearToRGBM = new FunctionNode( /* glsl */`
|
|
180
|
-
vec3 LinearToRGBM( in vec4 value, in float maxRange ) {
|
|
181
|
-
|
|
182
|
-
float maxRGB = max( value.x, max( value.g, value.b ) );
|
|
183
|
-
float M = clamp( maxRGB / maxRange, 0.0, 1.0 );
|
|
184
|
-
M = ceil( M * 255.0 ) / 255.0;
|
|
185
|
-
return vec4( value.rgb / ( M * maxRange ), M );
|
|
186
|
-
|
|
187
|
-
}`
|
|
188
|
-
);
|
|
189
|
-
|
|
190
|
-
// reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
|
|
191
|
-
|
|
192
|
-
const RGBDToLinear = new FunctionNode( /* glsl */`
|
|
193
|
-
vec3 RGBDToLinear( in vec4 value, in float maxRange ) {
|
|
194
|
-
|
|
195
|
-
return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );
|
|
196
|
-
|
|
197
|
-
}`
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const LinearToRGBD = new FunctionNode( /* glsl */`
|
|
202
|
-
vec3 LinearToRGBD( in vec4 value, in float maxRange ) {
|
|
203
|
-
|
|
204
|
-
float maxRGB = max( value.x, max( value.g, value.b ) );
|
|
205
|
-
float D = max( maxRange / maxRGB, 1.0 );
|
|
206
|
-
D = clamp( floor( D ) / 255.0, 0.0, 1.0 );
|
|
207
|
-
return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );
|
|
208
|
-
|
|
209
|
-
}`
|
|
210
|
-
);
|
|
211
|
-
|
|
212
|
-
// LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html
|
|
213
|
-
|
|
214
|
-
// M matrix, for encoding
|
|
215
|
-
|
|
216
|
-
const cLogLuvM = new ConstNode( 'const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );' );
|
|
217
|
-
|
|
218
|
-
const LinearToLogLuv = new FunctionNode( /* glsl */`
|
|
219
|
-
vec4 LinearToLogLuv( in vec4 value ) {
|
|
220
|
-
|
|
221
|
-
vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
|
|
222
|
-
Xp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));
|
|
223
|
-
vec4 vResult;
|
|
224
|
-
vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
|
|
225
|
-
float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
|
|
226
|
-
vResult.w = fract(Le);
|
|
227
|
-
vResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;
|
|
228
|
-
return vResult;
|
|
229
|
-
|
|
230
|
-
}`
|
|
231
|
-
, [ cLogLuvM ] );
|
|
232
|
-
|
|
233
|
-
// Inverse M matrix, for decoding
|
|
234
|
-
|
|
235
|
-
const cLogLuvInverseM = new ConstNode( 'const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );' );
|
|
236
|
-
|
|
237
|
-
const LogLuvToLinear = new FunctionNode( /* glsl */`
|
|
238
|
-
vec4 LogLuvToLinear( in vec4 value ) {
|
|
239
|
-
|
|
240
|
-
float Le = value.z * 255.0 + value.w;
|
|
241
|
-
vec3 Xp_Y_XYZp;
|
|
242
|
-
Xp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);
|
|
243
|
-
Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
|
|
244
|
-
Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
|
|
245
|
-
vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
|
|
246
|
-
return vec4( max(vRGB, 0.0), 1.0 );
|
|
247
|
-
|
|
248
|
-
}`
|
|
249
|
-
, [ cLogLuvInverseM ] );
|
|
250
|
-
|
|
251
119
|
return {
|
|
252
120
|
LinearToLinear: LinearToLinear,
|
|
253
|
-
|
|
254
|
-
LinearToGamma: LinearToGamma,
|
|
255
|
-
sRGBToLinear: sRGBToLinear,
|
|
256
|
-
LinearTosRGB: LinearTosRGB,
|
|
257
|
-
RGBEToLinear: RGBEToLinear,
|
|
258
|
-
LinearToRGBE: LinearToRGBE,
|
|
259
|
-
RGBMToLinear: RGBMToLinear,
|
|
260
|
-
LinearToRGBM: LinearToRGBM,
|
|
261
|
-
RGBDToLinear: RGBDToLinear,
|
|
262
|
-
LinearToRGBD: LinearToRGBD,
|
|
263
|
-
cLogLuvM: cLogLuvM,
|
|
264
|
-
LinearToLogLuv: LinearToLogLuv,
|
|
265
|
-
cLogLuvInverseM: cLogLuvInverseM,
|
|
266
|
-
LogLuvToLinear: LogLuvToLinear
|
|
121
|
+
LinearTosRGB: LinearTosRGB
|
|
267
122
|
};
|
|
268
123
|
|
|
269
124
|
} )();
|
|
270
125
|
|
|
271
126
|
ColorSpaceNode.LINEAR_TO_LINEAR = 'LinearToLinear';
|
|
272
|
-
|
|
273
|
-
ColorSpaceNode.GAMMA_TO_LINEAR = 'GammaToLinear';
|
|
274
|
-
ColorSpaceNode.LINEAR_TO_GAMMA = 'LinearToGamma';
|
|
275
|
-
|
|
276
|
-
ColorSpaceNode.SRGB_TO_LINEAR = 'sRGBToLinear';
|
|
277
127
|
ColorSpaceNode.LINEAR_TO_SRGB = 'LinearTosRGB';
|
|
278
128
|
|
|
279
|
-
ColorSpaceNode.RGBE_TO_LINEAR = 'RGBEToLinear';
|
|
280
|
-
ColorSpaceNode.LINEAR_TO_RGBE = 'LinearToRGBE';
|
|
281
|
-
|
|
282
|
-
ColorSpaceNode.RGBM_TO_LINEAR = 'RGBMToLinear';
|
|
283
|
-
ColorSpaceNode.LINEAR_TO_RGBM = 'LinearToRGBM';
|
|
284
|
-
|
|
285
|
-
ColorSpaceNode.RGBD_TO_LINEAR = 'RGBDToLinear';
|
|
286
|
-
ColorSpaceNode.LINEAR_TO_RGBD = 'LinearToRGBD';
|
|
287
|
-
|
|
288
|
-
ColorSpaceNode.LINEAR_TO_LOG_LUV = 'LinearToLogLuv';
|
|
289
|
-
ColorSpaceNode.LOG_LUV_TO_LINEAR = 'LogLuvToLinear';
|
|
290
|
-
|
|
291
129
|
ColorSpaceNode.getEncodingComponents = function ( encoding ) {
|
|
292
130
|
|
|
293
131
|
switch ( encoding ) {
|
|
@@ -296,16 +134,6 @@ ColorSpaceNode.getEncodingComponents = function ( encoding ) {
|
|
|
296
134
|
return [ 'Linear' ];
|
|
297
135
|
case sRGBEncoding:
|
|
298
136
|
return [ 'sRGB' ];
|
|
299
|
-
case RGBEEncoding:
|
|
300
|
-
return [ 'RGBE' ];
|
|
301
|
-
case RGBM7Encoding:
|
|
302
|
-
return [ 'RGBM', new FloatNode( 7.0 ).setReadonly( true ) ];
|
|
303
|
-
case RGBM16Encoding:
|
|
304
|
-
return [ 'RGBM', new FloatNode( 16.0 ).setReadonly( true ) ];
|
|
305
|
-
case RGBDEncoding:
|
|
306
|
-
return [ 'RGBD', new FloatNode( 256.0 ).setReadonly( true ) ];
|
|
307
|
-
case GammaEncoding:
|
|
308
|
-
return [ 'Gamma', new ExpressionNode( 'float( GAMMA_FACTOR )', 'f' ) ];
|
|
309
137
|
|
|
310
138
|
}
|
|
311
139
|
|
|
@@ -2,19 +2,17 @@ import {
|
|
|
2
2
|
AdditiveBlending,
|
|
3
3
|
Box2,
|
|
4
4
|
BufferGeometry,
|
|
5
|
-
ClampToEdgeWrapping,
|
|
6
5
|
Color,
|
|
7
|
-
|
|
6
|
+
FramebufferTexture,
|
|
8
7
|
InterleavedBuffer,
|
|
9
8
|
InterleavedBufferAttribute,
|
|
10
9
|
Mesh,
|
|
11
10
|
MeshBasicMaterial,
|
|
12
|
-
NearestFilter,
|
|
13
|
-
RGBFormat,
|
|
14
11
|
RawShaderMaterial,
|
|
15
12
|
Vector2,
|
|
16
13
|
Vector3,
|
|
17
|
-
Vector4
|
|
14
|
+
Vector4,
|
|
15
|
+
RGBAFormat
|
|
18
16
|
} from 'three';
|
|
19
17
|
|
|
20
18
|
class Lensflare extends Mesh {
|
|
@@ -34,17 +32,8 @@ class Lensflare extends Mesh {
|
|
|
34
32
|
|
|
35
33
|
// textures
|
|
36
34
|
|
|
37
|
-
const tempMap = new
|
|
38
|
-
|
|
39
|
-
tempMap.magFilter = NearestFilter;
|
|
40
|
-
tempMap.wrapS = ClampToEdgeWrapping;
|
|
41
|
-
tempMap.wrapT = ClampToEdgeWrapping;
|
|
42
|
-
|
|
43
|
-
const occlusionMap = new DataTexture( new Uint8Array( 16 * 16 * 3 ), 16, 16, RGBFormat );
|
|
44
|
-
occlusionMap.minFilter = NearestFilter;
|
|
45
|
-
occlusionMap.magFilter = NearestFilter;
|
|
46
|
-
occlusionMap.wrapS = ClampToEdgeWrapping;
|
|
47
|
-
occlusionMap.wrapT = ClampToEdgeWrapping;
|
|
35
|
+
const tempMap = new FramebufferTexture( 16, 16, RGBAFormat );
|
|
36
|
+
const occlusionMap = new FramebufferTexture( 16, 16, RGBAFormat );
|
|
48
37
|
|
|
49
38
|
// material
|
|
50
39
|
|
|
@@ -2,19 +2,21 @@ import {
|
|
|
2
2
|
BufferAttribute,
|
|
3
3
|
BufferGeometry,
|
|
4
4
|
Color,
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
DynamicDrawUsage,
|
|
6
|
+
Mesh
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Port of http://webglsamples.org/blob/blob.html
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
class MarchingCubes extends
|
|
13
|
+
class MarchingCubes extends Mesh {
|
|
14
14
|
|
|
15
|
-
constructor( resolution, material, enableUvs, enableColors ) {
|
|
15
|
+
constructor( resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 10000 ) {
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
const geometry = new BufferGeometry();
|
|
18
|
+
|
|
19
|
+
super( geometry, material );
|
|
18
20
|
|
|
19
21
|
const scope = this;
|
|
20
22
|
|
|
@@ -24,8 +26,8 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
24
26
|
const nlist = new Float32Array( 12 * 3 );
|
|
25
27
|
const clist = new Float32Array( 12 * 3 );
|
|
26
28
|
|
|
27
|
-
this.enableUvs = enableUvs
|
|
28
|
-
this.enableColors = enableColors
|
|
29
|
+
this.enableUvs = enableUvs;
|
|
30
|
+
this.enableColors = enableColors;
|
|
29
31
|
|
|
30
32
|
// functions have to be object properties
|
|
31
33
|
// prototype functions kill performance
|
|
@@ -56,28 +58,37 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
56
58
|
this.normal_cache = new Float32Array( this.size3 * 3 );
|
|
57
59
|
this.palette = new Float32Array( this.size3 * 3 );
|
|
58
60
|
|
|
59
|
-
//
|
|
61
|
+
//
|
|
60
62
|
|
|
61
|
-
this.maxCount = 4096; // TODO: find the fastest size for this buffer
|
|
62
63
|
this.count = 0;
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
this.
|
|
67
|
-
this.
|
|
65
|
+
const maxVertexCount = maxPolyCount * 3;
|
|
66
|
+
|
|
67
|
+
this.positionArray = new Float32Array( maxVertexCount * 3 );
|
|
68
|
+
const positionAttribute = new BufferAttribute( this.positionArray, 3 );
|
|
69
|
+
positionAttribute.setUsage( DynamicDrawUsage );
|
|
70
|
+
geometry.setAttribute( 'position', positionAttribute );
|
|
68
71
|
|
|
69
|
-
this.
|
|
70
|
-
|
|
72
|
+
this.normalArray = new Float32Array( maxVertexCount * 3 );
|
|
73
|
+
const normalAttribute = new BufferAttribute( this.normalArray, 3 );
|
|
74
|
+
normalAttribute.setUsage( DynamicDrawUsage );
|
|
75
|
+
geometry.setAttribute( 'normal', normalAttribute );
|
|
71
76
|
|
|
72
77
|
if ( this.enableUvs ) {
|
|
73
78
|
|
|
74
|
-
this.uvArray = new Float32Array(
|
|
79
|
+
this.uvArray = new Float32Array( maxVertexCount * 2 );
|
|
80
|
+
const uvAttribute = new BufferAttribute( this.uvArray, 2 );
|
|
81
|
+
uvAttribute.setUsage( DynamicDrawUsage );
|
|
82
|
+
geometry.setAttribute( 'uv', uvAttribute );
|
|
75
83
|
|
|
76
84
|
}
|
|
77
85
|
|
|
78
86
|
if ( this.enableColors ) {
|
|
79
87
|
|
|
80
|
-
this.colorArray = new Float32Array(
|
|
88
|
+
this.colorArray = new Float32Array( maxVertexCount * 3 );
|
|
89
|
+
const colorAttribute = new BufferAttribute( this.colorArray, 3 );
|
|
90
|
+
colorAttribute.setUsage( DynamicDrawUsage );
|
|
91
|
+
geometry.setAttribute( 'color', colorAttribute );
|
|
81
92
|
|
|
82
93
|
}
|
|
83
94
|
|
|
@@ -173,7 +184,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
173
184
|
// Returns total number of triangles. Fills triangles.
|
|
174
185
|
// (this is where most of time is spent - it's inner work of O(n3) loop )
|
|
175
186
|
|
|
176
|
-
function polygonize( fx, fy, fz, q, isol
|
|
187
|
+
function polygonize( fx, fy, fz, q, isol ) {
|
|
177
188
|
|
|
178
189
|
// cache indices
|
|
179
190
|
const q1 = q + 1,
|
|
@@ -369,8 +380,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
369
380
|
clist,
|
|
370
381
|
3 * triTable[ o1 ],
|
|
371
382
|
3 * triTable[ o2 ],
|
|
372
|
-
3 * triTable[ o3 ]
|
|
373
|
-
renderCallback
|
|
383
|
+
3 * triTable[ o3 ]
|
|
374
384
|
);
|
|
375
385
|
|
|
376
386
|
i += 3;
|
|
@@ -382,11 +392,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
382
392
|
|
|
383
393
|
}
|
|
384
394
|
|
|
385
|
-
|
|
386
|
-
// Immediate render mode simulator
|
|
387
|
-
/////////////////////////////////////
|
|
388
|
-
|
|
389
|
-
function posnormtriv( pos, norm, colors, o1, o2, o3, renderCallback ) {
|
|
395
|
+
function posnormtriv( pos, norm, colors, o1, o2, o3 ) {
|
|
390
396
|
|
|
391
397
|
const c = scope.count * 3;
|
|
392
398
|
|
|
@@ -477,69 +483,8 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
477
483
|
|
|
478
484
|
scope.count += 3;
|
|
479
485
|
|
|
480
|
-
if ( scope.count >= scope.maxCount - 3 ) {
|
|
481
|
-
|
|
482
|
-
scope.hasPositions = true;
|
|
483
|
-
scope.hasNormals = true;
|
|
484
|
-
|
|
485
|
-
if ( scope.enableUvs ) {
|
|
486
|
-
|
|
487
|
-
scope.hasUvs = true;
|
|
488
|
-
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
if ( scope.enableColors ) {
|
|
492
|
-
|
|
493
|
-
scope.hasColors = true;
|
|
494
|
-
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
renderCallback( scope );
|
|
498
|
-
|
|
499
|
-
}
|
|
500
|
-
|
|
501
486
|
}
|
|
502
487
|
|
|
503
|
-
this.begin = function () {
|
|
504
|
-
|
|
505
|
-
this.count = 0;
|
|
506
|
-
|
|
507
|
-
this.hasPositions = false;
|
|
508
|
-
this.hasNormals = false;
|
|
509
|
-
this.hasUvs = false;
|
|
510
|
-
this.hasColors = false;
|
|
511
|
-
|
|
512
|
-
};
|
|
513
|
-
|
|
514
|
-
this.end = function ( renderCallback ) {
|
|
515
|
-
|
|
516
|
-
if ( this.count === 0 ) return;
|
|
517
|
-
|
|
518
|
-
for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
|
|
519
|
-
|
|
520
|
-
this.positionArray[ i ] = 0.0;
|
|
521
|
-
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
this.hasPositions = true;
|
|
525
|
-
this.hasNormals = true;
|
|
526
|
-
|
|
527
|
-
if ( this.enableUvs && this.material.map ) {
|
|
528
|
-
|
|
529
|
-
this.hasUvs = true;
|
|
530
|
-
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
if ( this.enableColors && this.material.vertexColors !== NoColors ) {
|
|
534
|
-
|
|
535
|
-
this.hasColors = true;
|
|
536
|
-
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
renderCallback( this );
|
|
540
|
-
|
|
541
|
-
};
|
|
542
|
-
|
|
543
488
|
/////////////////////////////////////
|
|
544
489
|
// Metaballs
|
|
545
490
|
/////////////////////////////////////
|
|
@@ -867,9 +812,9 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
867
812
|
|
|
868
813
|
};
|
|
869
814
|
|
|
870
|
-
this.
|
|
815
|
+
this.onBeforeRender = function () {
|
|
871
816
|
|
|
872
|
-
this.
|
|
817
|
+
this.count = 0;
|
|
873
818
|
|
|
874
819
|
// Triangulate. Yeah, this is slow.
|
|
875
820
|
|
|
@@ -890,7 +835,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
890
835
|
const fx = ( x - this.halfsize ) / this.halfsize; //+ 1
|
|
891
836
|
const q = y_offset + x;
|
|
892
837
|
|
|
893
|
-
|
|
838
|
+
polygonize( fx, fy, fz, q, this.isolation );
|
|
894
839
|
|
|
895
840
|
}
|
|
896
841
|
|
|
@@ -898,76 +843,25 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
898
843
|
|
|
899
844
|
}
|
|
900
845
|
|
|
901
|
-
|
|
846
|
+
// reset unneeded data
|
|
902
847
|
|
|
903
|
-
|
|
848
|
+
for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
|
|
904
849
|
|
|
905
|
-
|
|
850
|
+
this.positionArray[ i ] = 0.0;
|
|
906
851
|
|
|
907
|
-
|
|
908
|
-
'THREE.MarchingCubes: generateGeometry() now returns BufferGeometry'
|
|
909
|
-
);
|
|
910
|
-
return this.generateBufferGeometry();
|
|
852
|
+
}
|
|
911
853
|
|
|
912
|
-
|
|
854
|
+
// update geometry data
|
|
913
855
|
|
|
914
|
-
|
|
856
|
+
geometry.getAttribute( 'position' ).needsUpdate = true;
|
|
857
|
+
geometry.getAttribute( 'normal' ).needsUpdate = true;
|
|
915
858
|
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
result.set( b.slice( 0, length ), a.length );
|
|
919
|
-
return result;
|
|
859
|
+
if ( this.enableUvs ) geometry.getAttribute( 'uv' ).needsUpdate = true;
|
|
860
|
+
if ( this.enableColors ) geometry.getAttribute( 'color' ).needsUpdate = true;
|
|
920
861
|
|
|
921
|
-
|
|
862
|
+
// safety check
|
|
922
863
|
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
const geo = new BufferGeometry();
|
|
926
|
-
let posArray = new Float32Array();
|
|
927
|
-
let normArray = new Float32Array();
|
|
928
|
-
let colorArray = new Float32Array();
|
|
929
|
-
let uvArray = new Float32Array();
|
|
930
|
-
const scope = this;
|
|
931
|
-
|
|
932
|
-
const geo_callback = function ( object ) {
|
|
933
|
-
|
|
934
|
-
if ( scope.hasPositions )
|
|
935
|
-
posArray = concatenate(
|
|
936
|
-
posArray,
|
|
937
|
-
object.positionArray,
|
|
938
|
-
object.count * 3
|
|
939
|
-
);
|
|
940
|
-
if ( scope.hasNormals )
|
|
941
|
-
normArray = concatenate(
|
|
942
|
-
normArray,
|
|
943
|
-
object.normalArray,
|
|
944
|
-
object.count * 3
|
|
945
|
-
);
|
|
946
|
-
if ( scope.hasColors )
|
|
947
|
-
colorArray = concatenate(
|
|
948
|
-
colorArray,
|
|
949
|
-
object.colorArray,
|
|
950
|
-
object.count * 3
|
|
951
|
-
);
|
|
952
|
-
if ( scope.hasUvs )
|
|
953
|
-
uvArray = concatenate( uvArray, object.uvArray, object.count * 2 );
|
|
954
|
-
|
|
955
|
-
object.count = 0;
|
|
956
|
-
|
|
957
|
-
};
|
|
958
|
-
|
|
959
|
-
this.render( geo_callback );
|
|
960
|
-
|
|
961
|
-
if ( this.hasPositions )
|
|
962
|
-
geo.setAttribute( 'position', new BufferAttribute( posArray, 3 ) );
|
|
963
|
-
if ( this.hasNormals )
|
|
964
|
-
geo.setAttribute( 'normal', new BufferAttribute( normArray, 3 ) );
|
|
965
|
-
if ( this.hasColors )
|
|
966
|
-
geo.setAttribute( 'color', new BufferAttribute( colorArray, 3 ) );
|
|
967
|
-
if ( this.hasUvs )
|
|
968
|
-
geo.setAttribute( 'uv', new BufferAttribute( uvArray, 2 ) );
|
|
969
|
-
|
|
970
|
-
return geo;
|
|
864
|
+
if ( this.count / 3 > maxPolyCount ) console.warn( 'THREE.MarchingCubes: Geometry buffers too small for rendering. Please create an instance with a higher poly count.' );
|
|
971
865
|
|
|
972
866
|
};
|
|
973
867
|
|
|
@@ -984,7 +878,7 @@ MarchingCubes.prototype.isMarchingCubes = true;
|
|
|
984
878
|
/////////////////////////////////////
|
|
985
879
|
|
|
986
880
|
// These tables are straight from Paul Bourke's page:
|
|
987
|
-
// http://
|
|
881
|
+
// http://paulbourke.net/geometry/polygonise/
|
|
988
882
|
// who in turn got them from Cory Gene Bloyd.
|
|
989
883
|
|
|
990
884
|
const edgeTable = new Int32Array( [
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Color,
|
|
3
|
-
LinearFilter,
|
|
4
|
-
MathUtils,
|
|
5
3
|
Matrix4,
|
|
6
4
|
Mesh,
|
|
7
5
|
PerspectiveCamera,
|
|
8
6
|
Plane,
|
|
9
|
-
RGBFormat,
|
|
10
7
|
ShaderMaterial,
|
|
11
8
|
UniformsUtils,
|
|
12
9
|
Vector3,
|
|
@@ -47,19 +44,7 @@ class Reflector extends Mesh {
|
|
|
47
44
|
const textureMatrix = new Matrix4();
|
|
48
45
|
const virtualCamera = new PerspectiveCamera();
|
|
49
46
|
|
|
50
|
-
const
|
|
51
|
-
minFilter: LinearFilter,
|
|
52
|
-
magFilter: LinearFilter,
|
|
53
|
-
format: RGBFormat
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
|
|
57
|
-
|
|
58
|
-
if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
|
|
59
|
-
|
|
60
|
-
renderTarget.texture.generateMipmaps = false;
|
|
61
|
-
|
|
62
|
-
}
|
|
47
|
+
const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight );
|
|
63
48
|
|
|
64
49
|
const material = new ShaderMaterial( {
|
|
65
50
|
uniforms: UniformsUtils.clone( shader.uniforms ),
|
|
@@ -193,6 +178,13 @@ class Reflector extends Mesh {
|
|
|
193
178
|
|
|
194
179
|
};
|
|
195
180
|
|
|
181
|
+
this.dispose = function () {
|
|
182
|
+
|
|
183
|
+
renderTarget.dispose();
|
|
184
|
+
scope.material.dispose();
|
|
185
|
+
|
|
186
|
+
};
|
|
187
|
+
|
|
196
188
|
}
|
|
197
189
|
|
|
198
190
|
}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Color,
|
|
3
|
-
LinearFilter,
|
|
4
|
-
MathUtils,
|
|
5
3
|
Matrix4,
|
|
6
4
|
Mesh,
|
|
7
5
|
PerspectiveCamera,
|
|
8
|
-
RGBFormat,
|
|
9
6
|
ShaderMaterial,
|
|
10
7
|
UniformsUtils,
|
|
11
8
|
Vector2,
|
|
@@ -104,20 +101,11 @@ class ReflectorForSSRPass extends Mesh {
|
|
|
104
101
|
}
|
|
105
102
|
|
|
106
103
|
const parameters = {
|
|
107
|
-
minFilter: LinearFilter,
|
|
108
|
-
magFilter: LinearFilter,
|
|
109
|
-
format: RGBFormat,
|
|
110
104
|
depthTexture: useDepthTexture ? depthTexture : null,
|
|
111
105
|
};
|
|
112
106
|
|
|
113
107
|
const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
|
|
114
108
|
|
|
115
|
-
if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
|
|
116
|
-
|
|
117
|
-
renderTarget.texture.generateMipmaps = false;
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
109
|
const material = new ShaderMaterial( {
|
|
122
110
|
transparent: useDepthTexture,
|
|
123
111
|
defines: Object.assign( {}, ReflectorForSSRPass.ReflectorShader.defines, {
|