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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ObjectNode, SelectInput, Element, LabelElement } from '../../libs/flow.module.js';
|
|
2
|
+
import { MathNode, Vector3Node } from '../../renderers/nodes/Nodes.js';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_VALUE = new Vector3Node();
|
|
5
|
+
|
|
6
|
+
export class TrigonometryEditor extends ObjectNode {
|
|
7
|
+
|
|
8
|
+
constructor() {
|
|
9
|
+
|
|
10
|
+
const node = new MathNode( MathNode.SIN, DEFAULT_VALUE );
|
|
11
|
+
|
|
12
|
+
super( 'Trigonometry', 1, node, 200 );
|
|
13
|
+
|
|
14
|
+
const optionsField = new SelectInput( [
|
|
15
|
+
{ name: 'Sin', value: MathNode.SIN },
|
|
16
|
+
{ name: 'Cos', value: MathNode.COS },
|
|
17
|
+
{ name: 'Tan', value: MathNode.TAN }
|
|
18
|
+
] ).onChange( () => {
|
|
19
|
+
|
|
20
|
+
node.method = optionsField.getValue();
|
|
21
|
+
|
|
22
|
+
this.invalidate();
|
|
23
|
+
|
|
24
|
+
} );
|
|
25
|
+
|
|
26
|
+
const input = new LabelElement( 'Source' ).setInput( 1 );
|
|
27
|
+
|
|
28
|
+
input.onConnect( () => {
|
|
29
|
+
|
|
30
|
+
node.aNode = input.linkedExtra || DEFAULT_VALUE;
|
|
31
|
+
|
|
32
|
+
} );
|
|
33
|
+
|
|
34
|
+
this.add( new Element().add( optionsField ) )
|
|
35
|
+
.add( input );
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ObjectNode, LabelElement } from '../../libs/flow.module.js';
|
|
2
|
+
import { CheckerNode, UVNode } from '../../renderers/nodes/Nodes.js';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_UV = new UVNode();
|
|
5
|
+
|
|
6
|
+
export class CheckerEditor extends ObjectNode {
|
|
7
|
+
|
|
8
|
+
constructor() {
|
|
9
|
+
|
|
10
|
+
const node = new CheckerNode( DEFAULT_UV );
|
|
11
|
+
|
|
12
|
+
super( 'Checker', 1, node, 200 );
|
|
13
|
+
|
|
14
|
+
const field = new LabelElement( 'UV' ).setInput( 2 );
|
|
15
|
+
|
|
16
|
+
field.onConnect( () => {
|
|
17
|
+
|
|
18
|
+
node.uvNode = field.linkedExtra || DEFAULT_UV;
|
|
19
|
+
|
|
20
|
+
} );
|
|
21
|
+
|
|
22
|
+
this.add( field );
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ObjectNode, SelectInput, LabelElement } from '../../libs/flow.module.js';
|
|
2
|
+
import { OscNode, FloatNode } from '../../renderers/nodes/Nodes.js';
|
|
3
|
+
|
|
4
|
+
const NULL_VALUE = new FloatNode();
|
|
5
|
+
|
|
6
|
+
export class OscillatorEditor extends ObjectNode {
|
|
7
|
+
|
|
8
|
+
constructor() {
|
|
9
|
+
|
|
10
|
+
const node = new OscNode( OscNode.SINE, NULL_VALUE );
|
|
11
|
+
|
|
12
|
+
super( 'Oscillator', 1, node, 250 );
|
|
13
|
+
|
|
14
|
+
const methodInput = new SelectInput( [
|
|
15
|
+
{ name: 'Sine', value: OscNode.SINE },
|
|
16
|
+
{ name: 'Square', value: OscNode.SQUARE },
|
|
17
|
+
{ name: 'Triangle', value: OscNode.TRIANGLE },
|
|
18
|
+
{ name: 'Sawtooth', value: OscNode.SAWTOOTH }
|
|
19
|
+
] );
|
|
20
|
+
|
|
21
|
+
methodInput.onChange( () => {
|
|
22
|
+
|
|
23
|
+
node.method = methodInput.getValue();
|
|
24
|
+
|
|
25
|
+
this.invalidate();
|
|
26
|
+
|
|
27
|
+
} );
|
|
28
|
+
|
|
29
|
+
const timeElement = new LabelElement( 'Time' ).setInput( 1 );
|
|
30
|
+
|
|
31
|
+
timeElement.onConnect( () => {
|
|
32
|
+
|
|
33
|
+
node.timeNode = timeElement.linkedExtra || NULL_VALUE;
|
|
34
|
+
|
|
35
|
+
} );
|
|
36
|
+
|
|
37
|
+
this.add( new LabelElement( 'Method' ).add( methodInput ) )
|
|
38
|
+
.add( timeElement );
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ObjectNode, NumberInput, LabelElement, Element, ButtonInput } from '../../libs/flow.module.js';
|
|
2
|
+
import { TimerNode } from '../../renderers/nodes/Nodes.js';
|
|
3
|
+
|
|
4
|
+
export class TimerEditor extends ObjectNode {
|
|
5
|
+
|
|
6
|
+
constructor() {
|
|
7
|
+
|
|
8
|
+
const node = new TimerNode();
|
|
9
|
+
|
|
10
|
+
super( 'Timer', 1, node, 250 );
|
|
11
|
+
|
|
12
|
+
this.title.setIcon( 'ti ti-clock' );
|
|
13
|
+
|
|
14
|
+
const updateField = () => {
|
|
15
|
+
|
|
16
|
+
field.setValue( node.value.toFixed( 3 ) );
|
|
17
|
+
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const field = new NumberInput().onChange( () => {
|
|
21
|
+
|
|
22
|
+
node.value = field.getValue();
|
|
23
|
+
|
|
24
|
+
} );
|
|
25
|
+
|
|
26
|
+
const scaleField = new NumberInput( 1 ).onChange( () => {
|
|
27
|
+
|
|
28
|
+
node.scale = scaleField.getValue();
|
|
29
|
+
|
|
30
|
+
} );
|
|
31
|
+
|
|
32
|
+
const moreElement = new Element().add( new ButtonInput( 'Reset' ).onClick( () => {
|
|
33
|
+
|
|
34
|
+
node.value = 0;
|
|
35
|
+
|
|
36
|
+
updateField();
|
|
37
|
+
|
|
38
|
+
} ) ).setSerializable( false );
|
|
39
|
+
|
|
40
|
+
this.add( new LabelElement( 'Value' ).add( field ).setSerializable( false ) )
|
|
41
|
+
.add( new LabelElement( 'Scale' ).add( scaleField ) )
|
|
42
|
+
.add( moreElement );
|
|
43
|
+
|
|
44
|
+
// extends node
|
|
45
|
+
|
|
46
|
+
node._update = node.update;
|
|
47
|
+
node.update = function ( ...params ) {
|
|
48
|
+
|
|
49
|
+
this._update( ...params );
|
|
50
|
+
|
|
51
|
+
updateField();
|
|
52
|
+
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
CubeUVReflectionMapping,
|
|
5
5
|
CubeUVRefractionMapping,
|
|
6
6
|
LinearEncoding,
|
|
7
|
-
|
|
7
|
+
sRGBEncoding
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
10
|
import { NodeUniform } from './NodeUniform.js';
|
|
@@ -951,7 +951,7 @@ class NodeBuilder {
|
|
|
951
951
|
|
|
952
952
|
if ( encoding === LinearEncoding && this.context.gamma ) {
|
|
953
953
|
|
|
954
|
-
encoding =
|
|
954
|
+
encoding = sRGBEncoding;
|
|
955
955
|
|
|
956
956
|
}
|
|
957
957
|
|
|
@@ -32,6 +32,7 @@ class StandardNode extends Node {
|
|
|
32
32
|
if ( useClearcoat ) {
|
|
33
33
|
|
|
34
34
|
builder.define( 'CLEARCOAT' );
|
|
35
|
+
builder.define( 'USE_CLEARCOAT' );
|
|
35
36
|
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -185,7 +186,7 @@ class StandardNode extends Node {
|
|
|
185
186
|
|
|
186
187
|
}
|
|
187
188
|
|
|
188
|
-
if ( this.
|
|
189
|
+
if ( this.sheenColor ) this.sheenColor.analyze( builder );
|
|
189
190
|
|
|
190
191
|
// build code
|
|
191
192
|
|
|
@@ -230,7 +231,7 @@ class StandardNode extends Node {
|
|
|
230
231
|
|
|
231
232
|
const clearcoatEnv = useClearcoat && environment ? this.environment.flow( builder, 'c', { cache: 'clearcoat', context: contextClearcoatEnvironment, slot: 'environment' } ) : undefined;
|
|
232
233
|
|
|
233
|
-
const
|
|
234
|
+
const sheenColor = this.sheenColor ? this.sheenColor.flow( builder, 'c' ) : undefined;
|
|
234
235
|
|
|
235
236
|
builder.requires.transparent = alpha !== undefined;
|
|
236
237
|
|
|
@@ -368,9 +369,9 @@ class StandardNode extends Node {
|
|
|
368
369
|
|
|
369
370
|
}
|
|
370
371
|
|
|
371
|
-
if (
|
|
372
|
+
if ( sheenColor ) {
|
|
372
373
|
|
|
373
|
-
output.push( 'material.
|
|
374
|
+
output.push( 'material.sheenColor = ' + sheenColor.result + ';' );
|
|
374
375
|
|
|
375
376
|
}
|
|
376
377
|
|
|
@@ -547,7 +548,7 @@ class StandardNode extends Node {
|
|
|
547
548
|
|
|
548
549
|
if ( source.environment ) this.environment = source.environment;
|
|
549
550
|
|
|
550
|
-
if ( source.
|
|
551
|
+
if ( source.sheenColor ) this.sheenColor = source.sheenColor;
|
|
551
552
|
|
|
552
553
|
return this;
|
|
553
554
|
|
|
@@ -593,7 +594,7 @@ class StandardNode extends Node {
|
|
|
593
594
|
|
|
594
595
|
if ( this.environment ) data.environment = this.environment.toJSON( meta ).uuid;
|
|
595
596
|
|
|
596
|
-
if ( this.
|
|
597
|
+
if ( this.sheenColor ) data.sheenColor = this.sheenColor.toJSON( meta ).uuid;
|
|
597
598
|
|
|
598
599
|
}
|
|
599
600
|
|
|
@@ -18,6 +18,14 @@ class MathNode extends TempNode {
|
|
|
18
18
|
|
|
19
19
|
switch ( this.method ) {
|
|
20
20
|
|
|
21
|
+
// variable
|
|
22
|
+
|
|
23
|
+
case MathNode.ARCTAN:
|
|
24
|
+
|
|
25
|
+
return this.b ? 2 : 1;
|
|
26
|
+
|
|
27
|
+
// 3
|
|
28
|
+
|
|
21
29
|
case MathNode.MIX:
|
|
22
30
|
case MathNode.CLAMP:
|
|
23
31
|
case MathNode.REFRACT:
|
|
@@ -26,6 +34,8 @@ class MathNode extends TempNode {
|
|
|
26
34
|
|
|
27
35
|
return 3;
|
|
28
36
|
|
|
37
|
+
// 2
|
|
38
|
+
|
|
29
39
|
case MathNode.MIN:
|
|
30
40
|
case MathNode.MAX:
|
|
31
41
|
case MathNode.MOD:
|
|
@@ -38,6 +48,8 @@ class MathNode extends TempNode {
|
|
|
38
48
|
|
|
39
49
|
return 2;
|
|
40
50
|
|
|
51
|
+
// 1
|
|
52
|
+
|
|
41
53
|
default:
|
|
42
54
|
|
|
43
55
|
return 1;
|
|
@@ -90,7 +90,7 @@ class BumpMapNode extends TempNode {
|
|
|
90
90
|
BumpMapNode.Nodes = ( function () {
|
|
91
91
|
|
|
92
92
|
// Bump Mapping Unparametrized Surfaces on the GPU by Morten S. Mikkelsen
|
|
93
|
-
//
|
|
93
|
+
// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf
|
|
94
94
|
|
|
95
95
|
// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)
|
|
96
96
|
|
|
@@ -26,19 +26,15 @@ class TextureCubeUVNode extends TempNode {
|
|
|
26
26
|
const bilinearCubeUV = new FunctionCallNode( TextureCubeUVNode.Nodes.bilinearCubeUV, [ texture, uv, mipInt ] );
|
|
27
27
|
|
|
28
28
|
this.colorSpaceTL = this.colorSpaceTL || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
|
|
29
|
-
this.colorSpaceTL.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
|
|
30
29
|
this.colorSpaceTL.input.parse( bilinearCubeUV.build( builder ) + '.tl' );
|
|
31
30
|
|
|
32
31
|
this.colorSpaceTR = this.colorSpaceTR || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
|
|
33
|
-
this.colorSpaceTR.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
|
|
34
32
|
this.colorSpaceTR.input.parse( bilinearCubeUV.build( builder ) + '.tr' );
|
|
35
33
|
|
|
36
34
|
this.colorSpaceBL = this.colorSpaceBL || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
|
|
37
|
-
this.colorSpaceBL.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
|
|
38
35
|
this.colorSpaceBL.input.parse( bilinearCubeUV.build( builder ) + '.bl' );
|
|
39
36
|
|
|
40
37
|
this.colorSpaceBR = this.colorSpaceBR || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
|
|
41
|
-
this.colorSpaceBR.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
|
|
42
38
|
this.colorSpaceBR.input.parse( bilinearCubeUV.build( builder ) + '.br' );
|
|
43
39
|
|
|
44
40
|
// add a custom context for fix incompatibility with the core
|
|
@@ -230,6 +226,7 @@ TextureCubeUVNode.Nodes = ( function () {
|
|
|
230
226
|
|
|
231
227
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
232
228
|
}`, [ TextureCubeUVData, getFace, getUV, cubeUV_maxMipLevel, cubeUV_minMipLevel, cubeUV_maxTileSize, cubeUV_minTileSize ] );
|
|
229
|
+
|
|
233
230
|
bilinearCubeUV.useKeywords = false;
|
|
234
231
|
|
|
235
232
|
// These defines must match with PMREMGenerator
|
|
@@ -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
|
|
|
@@ -106,8 +98,6 @@ class ColorSpaceNode extends TempNode {
|
|
|
106
98
|
|
|
107
99
|
ColorSpaceNode.Nodes = ( function () {
|
|
108
100
|
|
|
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
101
|
const LinearToLinear = new FunctionNode( /* glsl */`
|
|
112
102
|
vec4 LinearToLinear( in vec4 value ) {
|
|
113
103
|
|
|
@@ -116,22 +106,6 @@ ColorSpaceNode.Nodes = ( function () {
|
|
|
116
106
|
}`
|
|
117
107
|
);
|
|
118
108
|
|
|
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
109
|
const sRGBToLinear = new FunctionNode( /* glsl */`
|
|
136
110
|
vec4 sRGBToLinear( in vec4 value ) {
|
|
137
111
|
|
|
@@ -148,146 +122,19 @@ ColorSpaceNode.Nodes = ( function () {
|
|
|
148
122
|
}`
|
|
149
123
|
);
|
|
150
124
|
|
|
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
125
|
return {
|
|
252
126
|
LinearToLinear: LinearToLinear,
|
|
253
|
-
GammaToLinear: GammaToLinear,
|
|
254
|
-
LinearToGamma: LinearToGamma,
|
|
255
127
|
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
|
|
128
|
+
LinearTosRGB: LinearTosRGB
|
|
267
129
|
};
|
|
268
130
|
|
|
269
131
|
} )();
|
|
270
132
|
|
|
271
133
|
ColorSpaceNode.LINEAR_TO_LINEAR = 'LinearToLinear';
|
|
272
134
|
|
|
273
|
-
ColorSpaceNode.GAMMA_TO_LINEAR = 'GammaToLinear';
|
|
274
|
-
ColorSpaceNode.LINEAR_TO_GAMMA = 'LinearToGamma';
|
|
275
|
-
|
|
276
135
|
ColorSpaceNode.SRGB_TO_LINEAR = 'sRGBToLinear';
|
|
277
136
|
ColorSpaceNode.LINEAR_TO_SRGB = 'LinearTosRGB';
|
|
278
137
|
|
|
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
138
|
ColorSpaceNode.getEncodingComponents = function ( encoding ) {
|
|
292
139
|
|
|
293
140
|
switch ( encoding ) {
|
|
@@ -296,16 +143,6 @@ ColorSpaceNode.getEncodingComponents = function ( encoding ) {
|
|
|
296
143
|
return [ 'Linear' ];
|
|
297
144
|
case sRGBEncoding:
|
|
298
145
|
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
146
|
|
|
310
147
|
}
|
|
311
148
|
|
|
@@ -2,14 +2,12 @@ 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
11
|
RGBFormat,
|
|
14
12
|
RawShaderMaterial,
|
|
15
13
|
Vector2,
|
|
@@ -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, RGBFormat );
|
|
36
|
+
const occlusionMap = new FramebufferTexture( 16, 16, RGBFormat );
|
|
48
37
|
|
|
49
38
|
// material
|
|
50
39
|
|