super-three 0.141.0 → 0.144.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/README.md +8 -8
- package/build/three.cjs +1558 -1034
- package/build/three.js +1558 -1034
- package/build/three.min.js +1 -1
- package/build/three.module.js +2012 -1243
- package/examples/js/animation/MMDPhysics.js +1 -16
- package/examples/js/controls/ArcballControls.js +16 -3
- package/examples/js/controls/FirstPersonControls.js +0 -7
- package/examples/js/controls/FlyControls.js +0 -8
- package/examples/js/controls/OrbitControls.js +0 -4
- package/examples/js/controls/PointerLockControls.js +0 -8
- package/examples/js/controls/TrackballControls.js +0 -2
- package/examples/js/controls/TransformControls.js +20 -16
- package/examples/js/effects/AnaglyphEffect.js +2 -2
- package/examples/js/effects/OutlineEffect.js +4 -24
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/js/effects/PeppersGhostEffect.js +2 -2
- package/examples/js/effects/StereoEffect.js +2 -2
- package/examples/js/environments/RoomEnvironment.js +22 -0
- package/examples/js/exporters/ColladaExporter.js +4 -13
- package/examples/js/exporters/DRACOExporter.js +0 -12
- package/examples/js/exporters/GLTFExporter.js +28 -29
- package/examples/js/exporters/OBJExporter.js +2 -23
- package/examples/js/exporters/PLYExporter.js +12 -24
- package/examples/js/exporters/STLExporter.js +0 -7
- package/examples/js/exporters/USDZExporter.js +6 -0
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/ParametricGeometry.js +1 -8
- package/examples/js/interactive/SelectionHelper.js +2 -0
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- package/examples/js/loaders/ColladaLoader.js +1 -0
- package/examples/js/loaders/DRACOLoader.js +2 -25
- package/examples/js/loaders/EXRLoader.js +2 -13
- package/examples/js/loaders/FBXLoader.js +10 -3
- package/examples/js/loaders/FontLoader.js +3 -16
- package/examples/js/loaders/GLTFLoader.js +52 -36
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
- package/examples/js/loaders/LDrawLoader.js +139 -74
- package/examples/js/loaders/OBJLoader.js +7 -13
- package/examples/js/loaders/PCDLoader.js +59 -14
- package/examples/js/loaders/PLYLoader.js +3 -3
- package/examples/js/loaders/SVGLoader.js +4 -3
- package/examples/js/loaders/TIFFLoader.js +31 -0
- package/examples/js/loaders/VRMLLoader.js +33 -24
- package/examples/js/loaders/VTKLoader.js +1 -1
- package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
- package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
- package/examples/js/materials/MeshGouraudMaterial.js +385 -0
- package/examples/js/math/ColorConverter.js +0 -50
- package/examples/js/misc/GPUComputationRenderer.js +23 -0
- package/examples/js/misc/Volume.js +198 -190
- package/examples/js/misc/VolumeSlice.js +90 -88
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/GroundProjectedEnv.js +193 -0
- package/examples/js/objects/Reflector.js +9 -2
- package/examples/js/objects/ReflectorForSSRPass.js +3 -4
- package/examples/js/objects/Refractor.js +10 -4
- package/examples/js/objects/ShadowMesh.js +5 -1
- package/examples/js/postprocessing/OutlinePass.js +5 -3
- package/examples/js/renderers/CSS2DRenderer.js +2 -2
- package/examples/js/renderers/CSS3DRenderer.js +2 -2
- package/examples/js/renderers/Projector.js +2 -23
- package/examples/js/shaders/LuminosityShader.js +1 -1
- package/examples/js/shaders/MMDToonShader.js +6 -2
- package/examples/js/shaders/ToneMapShader.js +1 -1
- package/examples/js/utils/BufferGeometryUtils.js +1 -1
- package/examples/js/utils/GeometryUtils.js +2 -18
- package/examples/js/utils/PackedPhongMaterial.js +1 -1
- package/examples/js/utils/SceneUtils.js +0 -16
- package/examples/jsm/animation/MMDPhysics.js +3 -22
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +0 -7
- package/examples/jsm/controls/FlyControls.js +0 -7
- package/examples/jsm/controls/OrbitControls.js +0 -5
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +0 -3
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -31
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +14 -3
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/interactive/HTMLMesh.js +9 -9
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +10 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +52 -36
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +192 -30
- package/examples/jsm/loaders/LDrawLoader.js +135 -74
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +59 -13
- package/examples/jsm/loaders/PLYLoader.js +3 -3
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +4 -3
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +393 -0
- package/examples/jsm/loaders/VRMLLoader.js +23 -25
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +43 -13
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
- package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +14 -12
- package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
- package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
- package/examples/jsm/nodes/materials/Materials.js +13 -25
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -12
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
- package/examples/jsm/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- package/examples/jsm/postprocessing/OutlinePass.js +5 -3
- package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -2
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +1 -21
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/package.json +18 -14
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +3 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +24 -5
- package/src/cameras/CubeCamera.js +0 -7
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +56 -7
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +2 -1
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +1 -0
- package/src/helpers/HemisphereLightHelper.js +1 -0
- package/src/helpers/PlaneHelper.js +6 -9
- package/src/helpers/PolarGridHelper.js +18 -14
- package/src/helpers/SpotLightHelper.js +1 -0
- package/src/lights/SpotLight.js +2 -0
- package/src/loaders/FileLoader.js +12 -1
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +4 -41
- package/src/materials/Material.js +1 -33
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +3 -13
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +1 -7
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- package/src/renderers/WebGLRenderer.js +84 -8
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib.js +31 -31
- package/src/renderers/shaders/UniformsLib.js +12 -11
- package/src/renderers/shaders/UniformsUtils.js +14 -0
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLLights.js +37 -13
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +10 -15
- package/src/renderers/webgl/WebGLState.js +47 -0
- package/src/renderers/webgl/WebGLUniforms.js +4 -4
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +2 -0
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +45 -37
- package/src/renderers/webxr/WebXRManager.js +58 -33
- package/src/scenes/Scene.js +16 -3
- package/src/textures/Source.js +1 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -9,103 +9,103 @@
|
|
|
9
9
|
* @see Volume
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
class VolumeSlice {
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @member {Volume} volume The associated volume
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
this.volume = volume;
|
|
20
|
-
/**
|
|
21
|
-
* @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
index = index || 0;
|
|
25
|
-
Object.defineProperty( this, 'index', {
|
|
26
|
-
get: function () {
|
|
14
|
+
constructor( volume, index, axis ) {
|
|
27
15
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
index = value;
|
|
34
|
-
slice.geometryNeedsUpdate = true;
|
|
35
|
-
return index;
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
} );
|
|
39
|
-
/**
|
|
40
|
-
* @member {String} axis The normal axis
|
|
41
|
-
*/
|
|
16
|
+
const slice = this;
|
|
17
|
+
/**
|
|
18
|
+
* @member {Volume} volume The associated volume
|
|
19
|
+
*/
|
|
42
20
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
21
|
+
this.volume = volume;
|
|
22
|
+
/**
|
|
23
|
+
* @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
|
|
24
|
+
*/
|
|
47
25
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
26
|
+
index = index || 0;
|
|
27
|
+
Object.defineProperty( this, 'index', {
|
|
28
|
+
get: function () {
|
|
51
29
|
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
|
|
55
|
-
*/
|
|
30
|
+
return index;
|
|
56
31
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*/
|
|
32
|
+
},
|
|
33
|
+
set: function ( value ) {
|
|
60
34
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
canvasMap.minFilter = THREE.LinearFilter;
|
|
65
|
-
canvasMap.wrapS = canvasMap.wrapT = THREE.ClampToEdgeWrapping;
|
|
66
|
-
const material = new THREE.MeshBasicMaterial( {
|
|
67
|
-
map: canvasMap,
|
|
68
|
-
side: THREE.DoubleSide,
|
|
69
|
-
transparent: true
|
|
70
|
-
} );
|
|
71
|
-
/**
|
|
72
|
-
* @member {Mesh} mesh The mesh ready to get used in the scene
|
|
73
|
-
*/
|
|
35
|
+
index = value;
|
|
36
|
+
slice.geometryNeedsUpdate = true;
|
|
37
|
+
return index;
|
|
74
38
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
39
|
+
}
|
|
40
|
+
} );
|
|
41
|
+
/**
|
|
42
|
+
* @member {String} axis The normal axis
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
this.axis = axis || 'z';
|
|
46
|
+
/**
|
|
47
|
+
* @member {HTMLCanvasElement} canvas The final canvas used for the texture
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @member {CanvasRenderingContext2D} ctx Context of the canvas
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
this.canvas = document.createElement( 'canvas' );
|
|
55
|
+
/**
|
|
56
|
+
* @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
this.canvasBuffer = document.createElement( 'canvas' );
|
|
64
|
+
this.updateGeometry();
|
|
65
|
+
const canvasMap = new THREE.Texture( this.canvas );
|
|
66
|
+
canvasMap.minFilter = THREE.LinearFilter;
|
|
67
|
+
canvasMap.wrapS = canvasMap.wrapT = THREE.ClampToEdgeWrapping;
|
|
68
|
+
const material = new THREE.MeshBasicMaterial( {
|
|
69
|
+
map: canvasMap,
|
|
70
|
+
side: THREE.DoubleSide,
|
|
71
|
+
transparent: true
|
|
72
|
+
} );
|
|
73
|
+
/**
|
|
74
|
+
* @member {Mesh} mesh The mesh ready to get used in the scene
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
this.mesh = new THREE.Mesh( this.geometry, material );
|
|
78
|
+
this.mesh.matrixAutoUpdate = false;
|
|
79
|
+
/**
|
|
80
|
+
* @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
this.geometryNeedsUpdate = true;
|
|
84
|
+
this.repaint();
|
|
85
|
+
/**
|
|
86
|
+
* @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @member {Function} sliceAccess Function that allow the slice to access right data
|
|
95
|
+
* @see Volume.extractPerpendicularPlane
|
|
96
|
+
* @param {Number} i The first coordinate
|
|
97
|
+
* @param {Number} j The second coordinate
|
|
98
|
+
* @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
|
|
99
|
+
*/
|
|
103
100
|
|
|
101
|
+
}
|
|
104
102
|
/**
|
|
105
103
|
* @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true
|
|
106
104
|
* @memberof VolumeSlice
|
|
107
105
|
*/
|
|
108
|
-
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
repaint() {
|
|
109
109
|
|
|
110
110
|
if ( this.geometryNeedsUpdate ) {
|
|
111
111
|
|
|
@@ -179,14 +179,15 @@
|
|
|
179
179
|
this.ctx.drawImage( canvas, 0, 0, iLength, jLength, 0, 0, this.canvas.width, this.canvas.height );
|
|
180
180
|
this.mesh.material.map.needsUpdate = true;
|
|
181
181
|
|
|
182
|
-
}
|
|
183
|
-
|
|
182
|
+
}
|
|
184
183
|
/**
|
|
185
184
|
* @member {Function} Refresh the geometry according to axis and index
|
|
186
185
|
* @see Volume.extractPerpendicularPlane
|
|
187
186
|
* @memberof VolumeSlice
|
|
188
187
|
*/
|
|
189
|
-
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
updateGeometry() {
|
|
190
191
|
|
|
191
192
|
const extracted = this.volume.extractPerpendicularPlane( this.axis, this.index );
|
|
192
193
|
this.sliceAccess = extracted.sliceAccess;
|
|
@@ -215,7 +216,8 @@
|
|
|
215
216
|
this.geometryNeedsUpdate = false;
|
|
216
217
|
|
|
217
218
|
}
|
|
218
|
-
|
|
219
|
+
|
|
220
|
+
}
|
|
219
221
|
|
|
220
222
|
THREE.VolumeSlice = VolumeSlice;
|
|
221
223
|
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
( function () {
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Ground projected env map adapted from @react-three/drei.
|
|
5
|
+
* https://github.com/pmndrs/drei/blob/master/src/core/Environment.tsx
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
class GroundProjectedEnv extends THREE.Mesh {
|
|
9
|
+
|
|
10
|
+
constructor( texture, options ) {
|
|
11
|
+
|
|
12
|
+
const isCubeMap = texture.isCubeTexture;
|
|
13
|
+
const w = ( isCubeMap ? texture.image[ 0 ]?.width : texture.image.width ) ?? 1024;
|
|
14
|
+
const cubeSize = w / 4;
|
|
15
|
+
|
|
16
|
+
const _lodMax = Math.floor( Math.log2( cubeSize ) );
|
|
17
|
+
|
|
18
|
+
const _cubeSize = Math.pow( 2, _lodMax );
|
|
19
|
+
|
|
20
|
+
const width = 3 * Math.max( _cubeSize, 16 * 7 );
|
|
21
|
+
const height = 4 * _cubeSize;
|
|
22
|
+
const defines = [ isCubeMap ? '#define ENVMAP_TYPE_CUBE' : '', `#define CUBEUV_TEXEL_WIDTH ${1.0 / width}`, `#define CUBEUV_TEXEL_HEIGHT ${1.0 / height}`, `#define CUBEUV_MAX_MIP ${_lodMax}.0` ];
|
|
23
|
+
const vertexShader =
|
|
24
|
+
/* glsl */
|
|
25
|
+
`
|
|
26
|
+
varying vec3 vWorldPosition;
|
|
27
|
+
|
|
28
|
+
void main()
|
|
29
|
+
{
|
|
30
|
+
|
|
31
|
+
vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );
|
|
32
|
+
vWorldPosition = worldPosition.xyz;
|
|
33
|
+
|
|
34
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
const fragmentShader = defines.join( '\n' ) +
|
|
39
|
+
/* glsl */
|
|
40
|
+
`
|
|
41
|
+
#define ENVMAP_TYPE_CUBE_UV
|
|
42
|
+
|
|
43
|
+
varying vec3 vWorldPosition;
|
|
44
|
+
|
|
45
|
+
uniform float radius;
|
|
46
|
+
uniform float height;
|
|
47
|
+
uniform float angle;
|
|
48
|
+
|
|
49
|
+
#ifdef ENVMAP_TYPE_CUBE
|
|
50
|
+
|
|
51
|
+
uniform samplerCube map;
|
|
52
|
+
|
|
53
|
+
#else
|
|
54
|
+
|
|
55
|
+
uniform sampler2D map;
|
|
56
|
+
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
// From: https://www.shadertoy.com/view/4tsBD7
|
|
60
|
+
float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r )
|
|
61
|
+
{
|
|
62
|
+
|
|
63
|
+
float d = dot ( rd, n );
|
|
64
|
+
|
|
65
|
+
if( d > 0.0 ) { return 1e6; }
|
|
66
|
+
|
|
67
|
+
vec3 o = ro - c;
|
|
68
|
+
float t = - dot( n, o ) / d;
|
|
69
|
+
vec3 q = o + rd * t;
|
|
70
|
+
|
|
71
|
+
return ( dot( q, q ) < r * r ) ? t : 1e6;
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm
|
|
76
|
+
float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra )
|
|
77
|
+
{
|
|
78
|
+
|
|
79
|
+
vec3 oc = ro - ce;
|
|
80
|
+
float b = dot( oc, rd );
|
|
81
|
+
float c = dot( oc, oc ) - ra * ra;
|
|
82
|
+
float h = b * b - c;
|
|
83
|
+
|
|
84
|
+
if( h < 0.0 ) { return -1.0; }
|
|
85
|
+
|
|
86
|
+
h = sqrt( h );
|
|
87
|
+
|
|
88
|
+
return - b + h;
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
vec3 project()
|
|
93
|
+
{
|
|
94
|
+
|
|
95
|
+
vec3 p = normalize( vWorldPosition );
|
|
96
|
+
vec3 camPos = cameraPosition;
|
|
97
|
+
camPos.y -= height;
|
|
98
|
+
|
|
99
|
+
float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );
|
|
100
|
+
if( intersection > 0.0 ) {
|
|
101
|
+
|
|
102
|
+
vec3 h = vec3( 0.0, - height, 0.0 );
|
|
103
|
+
float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );
|
|
104
|
+
p = ( camPos + min( intersection, intersection2 ) * p ) / radius;
|
|
105
|
+
|
|
106
|
+
} else {
|
|
107
|
+
|
|
108
|
+
p = vec3( 0.0, 1.0, 0.0 );
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return p;
|
|
113
|
+
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
#include <common>
|
|
117
|
+
#include <cube_uv_reflection_fragment>
|
|
118
|
+
|
|
119
|
+
void main()
|
|
120
|
+
{
|
|
121
|
+
|
|
122
|
+
vec3 projectedWorldPosition = project();
|
|
123
|
+
|
|
124
|
+
#ifdef ENVMAP_TYPE_CUBE
|
|
125
|
+
|
|
126
|
+
vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;
|
|
127
|
+
|
|
128
|
+
#else
|
|
129
|
+
|
|
130
|
+
vec3 direction = normalize( projectedWorldPosition );
|
|
131
|
+
vec2 uv = equirectUv( direction );
|
|
132
|
+
vec3 outcolor = texture2D( map, uv ).rgb;
|
|
133
|
+
|
|
134
|
+
#endif
|
|
135
|
+
|
|
136
|
+
gl_FragColor = vec4( outcolor, 1.0 );
|
|
137
|
+
|
|
138
|
+
#include <tonemapping_fragment>
|
|
139
|
+
#include <encodings_fragment>
|
|
140
|
+
|
|
141
|
+
}
|
|
142
|
+
`;
|
|
143
|
+
const uniforms = {
|
|
144
|
+
map: {
|
|
145
|
+
value: texture
|
|
146
|
+
},
|
|
147
|
+
height: {
|
|
148
|
+
value: options?.height || 15
|
|
149
|
+
},
|
|
150
|
+
radius: {
|
|
151
|
+
value: options?.radius || 100
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const geometry = new THREE.IcosahedronGeometry( 1, 16 );
|
|
155
|
+
const material = new THREE.ShaderMaterial( {
|
|
156
|
+
uniforms,
|
|
157
|
+
fragmentShader,
|
|
158
|
+
vertexShader,
|
|
159
|
+
side: THREE.DoubleSide
|
|
160
|
+
} );
|
|
161
|
+
super( geometry, material );
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
set radius( radius ) {
|
|
166
|
+
|
|
167
|
+
this.material.uniforms.radius.value = radius;
|
|
168
|
+
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
get radius() {
|
|
172
|
+
|
|
173
|
+
return this.material.uniforms.radius.value;
|
|
174
|
+
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
set height( height ) {
|
|
178
|
+
|
|
179
|
+
this.material.uniforms.height.value = height;
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
get height() {
|
|
184
|
+
|
|
185
|
+
return this.material.uniforms.height.value;
|
|
186
|
+
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
THREE.GroundProjectedEnv = GroundProjectedEnv;
|
|
192
|
+
|
|
193
|
+
} )();
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
const textureMatrix = new THREE.Matrix4();
|
|
30
30
|
const virtualCamera = this.camera;
|
|
31
31
|
const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, {
|
|
32
|
-
samples: multisample
|
|
32
|
+
samples: multisample,
|
|
33
|
+
type: THREE.HalfFloatType
|
|
33
34
|
} );
|
|
34
35
|
const material = new THREE.ShaderMaterial( {
|
|
35
36
|
uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
|
|
@@ -92,15 +93,18 @@
|
|
|
92
93
|
projectionMatrix.elements[ 10 ] = clipPlane.z + 1.0 - clipBias;
|
|
93
94
|
projectionMatrix.elements[ 14 ] = clipPlane.w; // Render
|
|
94
95
|
|
|
95
|
-
renderTarget.texture.encoding = renderer.outputEncoding;
|
|
96
96
|
scope.visible = false;
|
|
97
97
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
98
98
|
const currentXrEnabled = renderer.xr.enabled;
|
|
99
99
|
const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
|
|
100
|
+
const currentOutputEncoding = renderer.outputEncoding;
|
|
101
|
+
const currentToneMapping = renderer.toneMapping;
|
|
100
102
|
renderer.xr.enabled = false; // Avoid camera modification
|
|
101
103
|
|
|
102
104
|
renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows
|
|
103
105
|
|
|
106
|
+
renderer.outputEncoding = THREE.LinearEncoding;
|
|
107
|
+
renderer.toneMapping = THREE.NoToneMapping;
|
|
104
108
|
renderer.setRenderTarget( renderTarget );
|
|
105
109
|
renderer.state.buffers.depth.setMask( true ); // make sure the depth buffer is writable so it can be properly cleared, see #18897
|
|
106
110
|
|
|
@@ -108,6 +112,8 @@
|
|
|
108
112
|
renderer.render( scene, virtualCamera );
|
|
109
113
|
renderer.xr.enabled = currentXrEnabled;
|
|
110
114
|
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
|
|
115
|
+
renderer.outputEncoding = currentOutputEncoding;
|
|
116
|
+
renderer.toneMapping = currentToneMapping;
|
|
111
117
|
renderer.setRenderTarget( currentRenderTarget ); // Restore viewport
|
|
112
118
|
|
|
113
119
|
const viewport = camera.viewport;
|
|
@@ -197,6 +203,7 @@
|
|
|
197
203
|
vec4 base = texture2DProj( tDiffuse, vUv );
|
|
198
204
|
gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
|
|
199
205
|
|
|
206
|
+
#include <tonemapping_fragment>
|
|
200
207
|
#include <encodings_fragment>
|
|
201
208
|
|
|
202
209
|
}`
|
|
@@ -80,7 +80,8 @@
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
const parameters = {
|
|
83
|
-
depthTexture: useDepthTexture ? depthTexture : null
|
|
83
|
+
depthTexture: useDepthTexture ? depthTexture : null,
|
|
84
|
+
type: THREE.HalfFloatType
|
|
84
85
|
};
|
|
85
86
|
const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
|
|
86
87
|
const material = new THREE.ShaderMaterial( {
|
|
@@ -151,9 +152,7 @@
|
|
|
151
152
|
textureMatrix.set( 0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0 );
|
|
152
153
|
textureMatrix.multiply( virtualCamera.projectionMatrix );
|
|
153
154
|
textureMatrix.multiply( virtualCamera.matrixWorldInverse );
|
|
154
|
-
textureMatrix.multiply( scope.matrixWorld ); //
|
|
155
|
-
|
|
156
|
-
renderTarget.texture.encoding = renderer.outputEncoding; // scope.visible = false;
|
|
155
|
+
textureMatrix.multiply( scope.matrixWorld ); // scope.visible = false;
|
|
157
156
|
|
|
158
157
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
159
158
|
const currentXrEnabled = renderer.xr.enabled;
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
const textureMatrix = new THREE.Matrix4(); // render target
|
|
25
25
|
|
|
26
26
|
const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, {
|
|
27
|
-
samples: multisample
|
|
27
|
+
samples: multisample,
|
|
28
|
+
type: THREE.HalfFloatType
|
|
28
29
|
} ); // material
|
|
29
30
|
|
|
30
31
|
this.material = new THREE.ShaderMaterial( {
|
|
@@ -136,15 +137,21 @@
|
|
|
136
137
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
137
138
|
const currentXrEnabled = renderer.xr.enabled;
|
|
138
139
|
const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
|
|
140
|
+
const currentOutputEncoding = renderer.outputEncoding;
|
|
141
|
+
const currentToneMapping = renderer.toneMapping;
|
|
139
142
|
renderer.xr.enabled = false; // avoid camera modification
|
|
140
143
|
|
|
141
144
|
renderer.shadowMap.autoUpdate = false; // avoid re-computing shadows
|
|
142
145
|
|
|
146
|
+
renderer.outputEncoding = THREE.LinearEncoding;
|
|
147
|
+
renderer.toneMapping = THREE.NoToneMapping;
|
|
143
148
|
renderer.setRenderTarget( renderTarget );
|
|
144
149
|
if ( renderer.autoClear === false ) renderer.clear();
|
|
145
150
|
renderer.render( scene, virtualCamera );
|
|
146
151
|
renderer.xr.enabled = currentXrEnabled;
|
|
147
152
|
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
|
|
153
|
+
renderer.outputEncoding = currentOutputEncoding;
|
|
154
|
+
renderer.toneMapping = currentToneMapping;
|
|
148
155
|
renderer.setRenderTarget( currentRenderTarget ); // restore viewport
|
|
149
156
|
|
|
150
157
|
const viewport = camera.viewport;
|
|
@@ -162,9 +169,7 @@
|
|
|
162
169
|
|
|
163
170
|
this.onBeforeRender = function ( renderer, scene, camera ) {
|
|
164
171
|
|
|
165
|
-
//
|
|
166
|
-
renderTarget.texture.encoding = renderer.outputEncoding; // ensure refractors are rendered only once per frame
|
|
167
|
-
|
|
172
|
+
// ensure refractors are rendered only once per frame
|
|
168
173
|
if ( camera.userData.refractor === true ) return; // avoid rendering when the refractor is viewed from behind
|
|
169
174
|
|
|
170
175
|
if ( ! visible( camera ) === true ) return; // update
|
|
@@ -245,6 +250,7 @@
|
|
|
245
250
|
vec4 base = texture2DProj( tDiffuse, vUv );
|
|
246
251
|
gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
|
|
247
252
|
|
|
253
|
+
#include <tonemapping_fragment>
|
|
248
254
|
#include <encodings_fragment>
|
|
249
255
|
|
|
250
256
|
}`
|
|
@@ -14,7 +14,11 @@
|
|
|
14
14
|
color: 0x000000,
|
|
15
15
|
transparent: true,
|
|
16
16
|
opacity: 0.6,
|
|
17
|
-
depthWrite: false
|
|
17
|
+
depthWrite: false,
|
|
18
|
+
stencilWrite: true,
|
|
19
|
+
stencilFunc: THREE.EqualStencilFunc,
|
|
20
|
+
stencilRef: 0,
|
|
21
|
+
stencilZPass: THREE.IncrementStencilOp
|
|
18
22
|
} );
|
|
19
23
|
super( mesh.geometry, shadowMaterial );
|
|
20
24
|
this.isShadowMesh = true;
|
|
@@ -384,9 +384,9 @@
|
|
|
384
384
|
#include <morphtarget_vertex>
|
|
385
385
|
#include <skinning_vertex>
|
|
386
386
|
#include <project_vertex>
|
|
387
|
+
#include <worldpos_vertex>
|
|
387
388
|
|
|
388
389
|
vPosition = mvPosition;
|
|
389
|
-
vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );
|
|
390
390
|
projTexCoord = textureMatrix * worldPosition;
|
|
391
391
|
|
|
392
392
|
}`,
|
|
@@ -497,12 +497,14 @@
|
|
|
497
497
|
|
|
498
498
|
void main() {
|
|
499
499
|
vec2 invSize = 1.0 / texSize;
|
|
500
|
-
float
|
|
500
|
+
float sigma = kernelRadius/2.0;
|
|
501
|
+
float weightSum = gaussianPdf(0.0, sigma);
|
|
501
502
|
vec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;
|
|
502
503
|
vec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);
|
|
503
504
|
vec2 uvOffset = delta;
|
|
504
505
|
for( int i = 1; i <= MAX_RADIUS; i ++ ) {
|
|
505
|
-
float
|
|
506
|
+
float x = kernelRadius * float(i) / float(MAX_RADIUS);
|
|
507
|
+
float w = gaussianPdf(x, sigma);
|
|
506
508
|
vec4 sample1 = texture2D( colorTexture, vUv + uvOffset);
|
|
507
509
|
vec4 sample2 = texture2D( colorTexture, vUv - uvOffset);
|
|
508
510
|
diffuseSum += ((sample1 + sample2) * w);
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
|
|
76
76
|
this.render = function ( scene, camera ) {
|
|
77
77
|
|
|
78
|
-
if ( scene.
|
|
79
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
78
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
79
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
80
80
|
|
|
81
81
|
_viewMatrix.copy( camera.matrixWorldInverse );
|
|
82
82
|
|
|
@@ -117,8 +117,8 @@
|
|
|
117
117
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
if ( scene.
|
|
121
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
120
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
121
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
122
122
|
let tx, ty;
|
|
123
123
|
|
|
124
124
|
if ( camera.isOrthographicCamera ) {
|
|
@@ -135,27 +135,6 @@
|
|
|
135
135
|
_spritePool = []; //
|
|
136
136
|
|
|
137
137
|
|
|
138
|
-
this.projectVector = function ( vector, camera ) {
|
|
139
|
-
|
|
140
|
-
console.warn( 'THREE.Projector: .projectVector() is now vector.project().' );
|
|
141
|
-
vector.project( camera );
|
|
142
|
-
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
this.unprojectVector = function ( vector, camera ) {
|
|
146
|
-
|
|
147
|
-
console.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );
|
|
148
|
-
vector.unproject( camera );
|
|
149
|
-
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
this.pickingRay = function () {
|
|
153
|
-
|
|
154
|
-
console.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );
|
|
155
|
-
|
|
156
|
-
}; //
|
|
157
|
-
|
|
158
|
-
|
|
159
138
|
function RenderList() {
|
|
160
139
|
|
|
161
140
|
const normals = [];
|
|
@@ -399,8 +378,8 @@
|
|
|
399
378
|
_lineCount = 0;
|
|
400
379
|
_spriteCount = 0;
|
|
401
380
|
_renderData.elements.length = 0;
|
|
402
|
-
if ( scene.
|
|
403
|
-
if ( camera.parent === null ) camera.updateMatrixWorld();
|
|
381
|
+
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
382
|
+
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
404
383
|
|
|
405
384
|
_viewMatrix.copy( camera.matrixWorldInverse );
|
|
406
385
|
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
* (Replace lights_phong_pars_fragment with lights_mmd_toon_pars_fragment)
|
|
15
15
|
* * Add mmd_toon_matcap_fragment.
|
|
16
16
|
*/
|
|
17
|
-
const lights_mmd_toon_pars_fragment =
|
|
17
|
+
const lights_mmd_toon_pars_fragment =
|
|
18
|
+
/* glsl */
|
|
19
|
+
`
|
|
18
20
|
varying vec3 vViewPosition;
|
|
19
21
|
|
|
20
22
|
struct BlinnPhongMaterial {
|
|
@@ -47,7 +49,9 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in Geometric
|
|
|
47
49
|
|
|
48
50
|
#define Material_LightProbeLOD( material ) (0)
|
|
49
51
|
`;
|
|
50
|
-
const mmd_toon_matcap_fragment =
|
|
52
|
+
const mmd_toon_matcap_fragment =
|
|
53
|
+
/* glsl */
|
|
54
|
+
`
|
|
51
55
|
#ifdef USE_MATCAP
|
|
52
56
|
|
|
53
57
|
vec3 viewDir = normalize( vViewPosition );
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
#endif
|
|
65
65
|
|
|
66
66
|
// Calculate the luminance of the current pixel
|
|
67
|
-
float fLumPixel =
|
|
67
|
+
float fLumPixel = luminance( vColor );
|
|
68
68
|
|
|
69
69
|
// Apply the modified operator (Eq. 4)
|
|
70
70
|
float fLumScaled = (fLumPixel * middleGrey) / max( minLuminance, fLumAvg );
|