super-three 0.161.0 → 0.163.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.cjs +822 -1332
- package/build/three.module.js +820 -1328
- package/build/three.module.min.js +1 -1
- package/examples/jsm/controls/DragControls.js +91 -30
- package/examples/jsm/controls/OrbitControls.js +32 -6
- package/examples/jsm/controls/TransformControls.js +9 -9
- package/examples/jsm/exporters/GLTFExporter.js +30 -3
- package/examples/jsm/exporters/USDZExporter.js +15 -0
- package/examples/jsm/geometries/TextGeometry.js +10 -2
- package/examples/jsm/interactive/HTMLMesh.js +7 -9
- package/examples/jsm/interactive/InteractiveGroup.js +15 -25
- package/examples/jsm/libs/fflate.module.js +694 -496
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +32 -14
- package/examples/jsm/lines/LineMaterial.js +0 -2
- package/examples/jsm/loaders/3DMLoader.js +13 -21
- package/examples/jsm/loaders/3MFLoader.js +2 -0
- package/examples/jsm/loaders/EXRLoader.js +89 -19
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +6 -0
- package/examples/jsm/loaders/KTX2Loader.js +2 -6
- package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
- package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
- package/examples/jsm/loaders/LUTImageLoader.js +0 -14
- package/examples/jsm/loaders/RGBMLoader.js +16 -0
- package/examples/jsm/loaders/VOXLoader.js +9 -2
- package/examples/jsm/loaders/VRMLLoader.js +6 -2
- package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -0
- package/examples/jsm/nodes/Nodes.js +15 -8
- package/examples/jsm/nodes/accessors/AccessorsUtils.js +10 -0
- package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
- package/examples/jsm/nodes/accessors/ClippingNode.js +144 -0
- package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
- package/examples/jsm/nodes/accessors/MaterialNode.js +2 -2
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -12
- package/examples/jsm/nodes/accessors/MorphNode.js +20 -10
- package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
- package/examples/jsm/nodes/accessors/ReferenceNode.js +87 -29
- package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +31 -10
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +18 -0
- package/examples/jsm/nodes/accessors/TangentNode.js +8 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +30 -7
- package/examples/jsm/nodes/accessors/UniformsNode.js +140 -0
- package/examples/jsm/nodes/code/CodeNode.js +6 -0
- package/examples/jsm/nodes/core/AssignNode.js +68 -12
- package/examples/jsm/nodes/core/Node.js +67 -6
- package/examples/jsm/nodes/core/NodeBuilder.js +23 -24
- package/examples/jsm/nodes/core/NodeFrame.js +8 -8
- package/examples/jsm/nodes/core/NodeUtils.js +2 -2
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +20 -0
- package/examples/jsm/nodes/display/BlendModeNode.js +30 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -5
- package/examples/jsm/nodes/display/PassNode.js +17 -1
- package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
- package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
- package/examples/jsm/nodes/fog/FogNode.js +13 -3
- package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +12 -69
- package/examples/jsm/nodes/materials/NodeMaterial.js +70 -17
- package/examples/jsm/nodes/math/CondNode.js +42 -7
- package/examples/jsm/nodes/math/MathNode.js +20 -0
- package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
- package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
- package/examples/jsm/nodes/shadernode/ShaderNode.js +1 -1
- package/examples/jsm/nodes/utils/ArrayElementNode.js +0 -6
- package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +2 -0
- package/examples/jsm/nodes/utils/StorageArrayElementNode.js +91 -0
- package/examples/jsm/objects/QuadMesh.js +7 -23
- package/examples/jsm/physics/RapierPhysics.js +4 -4
- package/examples/jsm/postprocessing/GlitchPass.js +0 -3
- package/examples/jsm/postprocessing/LUTPass.js +5 -71
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +0 -1
- package/examples/jsm/postprocessing/SSAOPass.js +0 -3
- package/examples/jsm/renderers/common/Animation.js +3 -0
- package/examples/jsm/renderers/common/Background.js +3 -3
- package/examples/jsm/renderers/common/ClippingContext.js +165 -0
- package/examples/jsm/renderers/common/Info.js +11 -19
- package/examples/jsm/renderers/common/PostProcessing.js +12 -4
- package/examples/jsm/renderers/common/RenderContext.js +3 -1
- package/examples/jsm/renderers/common/RenderContexts.js +2 -13
- package/examples/jsm/renderers/common/RenderObject.js +46 -3
- package/examples/jsm/renderers/common/RenderObjects.js +2 -0
- package/examples/jsm/renderers/common/Renderer.js +113 -39
- package/examples/jsm/renderers/common/StorageBufferAttribute.js +2 -2
- package/examples/jsm/renderers/common/StorageInstancedBufferAttribute.js +17 -0
- package/examples/jsm/renderers/common/Textures.js +3 -13
- package/examples/jsm/renderers/common/UniformsGroup.js +6 -4
- package/examples/jsm/renderers/common/extras/PMREMGenerator.js +777 -0
- package/examples/jsm/renderers/common/nodes/NodeStorageBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/NodeUniformBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +6 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +174 -30
- package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +141 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +136 -11
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +8 -2
- package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +90 -0
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -2
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +67 -37
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +20 -43
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +32 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +94 -20
- package/examples/jsm/shaders/OutputShader.js +4 -0
- package/examples/jsm/utils/GPUStatsPanel.js +10 -45
- package/examples/jsm/utils/SkeletonUtils.js +14 -3
- package/examples/jsm/utils/TextureUtils.js +1 -1
- package/examples/jsm/webxr/VRButton.js +13 -5
- package/examples/jsm/webxr/XRButton.js +0 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +8 -0
- package/package.json +4 -3
- package/src/Three.Legacy.js +20 -0
- package/src/Three.js +0 -2
- package/src/animation/AnimationClip.js +1 -1
- package/src/constants.js +4 -7
- package/src/core/BufferAttribute.js +0 -11
- package/src/core/BufferGeometry.js +23 -29
- package/src/core/Object3D.js +21 -7
- package/src/core/Raycaster.js +18 -4
- package/src/core/RenderTarget.js +44 -21
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/curves/EllipseCurve.js +2 -2
- package/src/helpers/SpotLightHelper.js +18 -1
- package/src/loaders/DataTextureLoader.js +0 -4
- package/src/loaders/MaterialLoader.js +1 -0
- package/src/loaders/ObjectLoader.js +4 -1
- package/src/materials/Material.js +2 -1
- package/src/materials/MeshBasicMaterial.js +3 -0
- package/src/materials/MeshLambertMaterial.js +3 -0
- package/src/materials/MeshPhongMaterial.js +3 -0
- package/src/materials/MeshStandardMaterial.js +3 -0
- package/src/materials/ShaderMaterial.js +0 -4
- package/src/math/Quaternion.js +13 -12
- package/src/math/Spherical.js +4 -5
- package/src/math/Vector3.js +7 -7
- package/src/objects/BatchedMesh.js +4 -3
- package/src/objects/InstancedMesh.js +63 -0
- package/src/objects/Mesh.js +0 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -10
- package/src/renderers/WebGLRenderer.js +70 -136
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +23 -0
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +3 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +10 -1
- package/src/renderers/webgl/WebGLAttributes.js +6 -33
- package/src/renderers/webgl/WebGLBackground.js +18 -0
- package/src/renderers/webgl/WebGLBindingStates.js +14 -51
- package/src/renderers/webgl/WebGLBufferRenderer.js +3 -25
- package/src/renderers/webgl/WebGLCapabilities.js +2 -12
- package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
- package/src/renderers/webgl/WebGLExtensions.js +4 -19
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +3 -25
- package/src/renderers/webgl/WebGLLights.js +6 -32
- package/src/renderers/webgl/WebGLMaterials.js +26 -4
- package/src/renderers/webgl/WebGLMorphtargets.js +79 -210
- package/src/renderers/webgl/WebGLProgram.js +30 -48
- package/src/renderers/webgl/WebGLPrograms.js +5 -14
- package/src/renderers/webgl/WebGLRenderStates.js +8 -6
- package/src/renderers/webgl/WebGLState.js +21 -75
- package/src/renderers/webgl/WebGLTextures.js +143 -275
- package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
- package/src/renderers/webgl/WebGLUtils.js +6 -57
- package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
- package/src/renderers/webxr/WebXRManager.js +2 -2
- package/src/scenes/Scene.js +14 -0
- package/src/textures/Texture.js +6 -24
- package/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
- package/src/renderers/WebGL1Renderer.js +0 -7
- package/src/renderers/WebGLMultipleRenderTargets.js +0 -82
|
@@ -2,6 +2,7 @@ import { MultiplyOperation, TangentSpaceNormalMap } from '../constants.js';
|
|
|
2
2
|
import { Material } from './Material.js';
|
|
3
3
|
import { Vector2 } from '../math/Vector2.js';
|
|
4
4
|
import { Color } from '../math/Color.js';
|
|
5
|
+
import { Euler } from '../math/Euler.js';
|
|
5
6
|
|
|
6
7
|
class MeshPhongMaterial extends Material {
|
|
7
8
|
|
|
@@ -45,6 +46,7 @@ class MeshPhongMaterial extends Material {
|
|
|
45
46
|
this.alphaMap = null;
|
|
46
47
|
|
|
47
48
|
this.envMap = null;
|
|
49
|
+
this.envMapRotation = new Euler();
|
|
48
50
|
this.combine = MultiplyOperation;
|
|
49
51
|
this.reflectivity = 1;
|
|
50
52
|
this.refractionRatio = 0.98;
|
|
@@ -98,6 +100,7 @@ class MeshPhongMaterial extends Material {
|
|
|
98
100
|
this.alphaMap = source.alphaMap;
|
|
99
101
|
|
|
100
102
|
this.envMap = source.envMap;
|
|
103
|
+
this.envMapRotation.copy( source.envMapRotation );
|
|
101
104
|
this.combine = source.combine;
|
|
102
105
|
this.reflectivity = source.reflectivity;
|
|
103
106
|
this.refractionRatio = source.refractionRatio;
|
|
@@ -2,6 +2,7 @@ import { TangentSpaceNormalMap } from '../constants.js';
|
|
|
2
2
|
import { Material } from './Material.js';
|
|
3
3
|
import { Vector2 } from '../math/Vector2.js';
|
|
4
4
|
import { Color } from '../math/Color.js';
|
|
5
|
+
import { Euler } from '../math/Euler.js';
|
|
5
6
|
|
|
6
7
|
class MeshStandardMaterial extends Material {
|
|
7
8
|
|
|
@@ -49,6 +50,7 @@ class MeshStandardMaterial extends Material {
|
|
|
49
50
|
this.alphaMap = null;
|
|
50
51
|
|
|
51
52
|
this.envMap = null;
|
|
53
|
+
this.envMapRotation = new Euler();
|
|
52
54
|
this.envMapIntensity = 1.0;
|
|
53
55
|
|
|
54
56
|
this.wireframe = false;
|
|
@@ -104,6 +106,7 @@ class MeshStandardMaterial extends Material {
|
|
|
104
106
|
this.alphaMap = source.alphaMap;
|
|
105
107
|
|
|
106
108
|
this.envMap = source.envMap;
|
|
109
|
+
this.envMapRotation.copy( source.envMapRotation );
|
|
107
110
|
this.envMapIntensity = source.envMapIntensity;
|
|
108
111
|
|
|
109
112
|
this.wireframe = source.wireframe;
|
|
@@ -33,10 +33,6 @@ class ShaderMaterial extends Material {
|
|
|
33
33
|
this.forceSinglePass = true;
|
|
34
34
|
|
|
35
35
|
this.extensions = {
|
|
36
|
-
derivatives: false, // set to use derivatives
|
|
37
|
-
fragDepth: false, // set to use fragment depth values
|
|
38
|
-
drawBuffers: false, // set to use draw buffers
|
|
39
|
-
shaderTextureLOD: false, // set to use shader texture LOD
|
|
40
36
|
clipCullDistance: false, // set to use vertex shader clipping
|
|
41
37
|
multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
|
|
42
38
|
};
|
package/src/math/Quaternion.js
CHANGED
|
@@ -591,23 +591,24 @@ class Quaternion {
|
|
|
591
591
|
|
|
592
592
|
random() {
|
|
593
593
|
|
|
594
|
-
//
|
|
595
|
-
// Note, this source uses w, x, y, z ordering,
|
|
596
|
-
// so we swap the order below.
|
|
594
|
+
// sets this quaternion to a uniform random unit quaternnion
|
|
597
595
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
596
|
+
// Ken Shoemake
|
|
597
|
+
// Uniform random rotations
|
|
598
|
+
// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.
|
|
601
599
|
|
|
602
|
-
const
|
|
600
|
+
const theta1 = 2 * Math.PI * Math.random();
|
|
601
|
+
const theta2 = 2 * Math.PI * Math.random();
|
|
603
602
|
|
|
604
|
-
const
|
|
603
|
+
const x0 = Math.random();
|
|
604
|
+
const r1 = Math.sqrt( 1 - x0 );
|
|
605
|
+
const r2 = Math.sqrt( x0 );
|
|
605
606
|
|
|
606
607
|
return this.set(
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
608
|
+
r1 * Math.sin( theta1 ),
|
|
609
|
+
r1 * Math.cos( theta1 ),
|
|
610
|
+
r2 * Math.sin( theta2 ),
|
|
611
|
+
r2 * Math.cos( theta2 ),
|
|
611
612
|
);
|
|
612
613
|
|
|
613
614
|
}
|
package/src/math/Spherical.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
+
import * as MathUtils from './MathUtils.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
+
* phi (the polar angle) is measured from the positive y-axis. The positive y-axis is up.
|
|
7
|
+
* theta (the azimuthal angle) is measured from the positive z-axis.
|
|
6
8
|
*/
|
|
7
|
-
|
|
8
|
-
import * as MathUtils from './MathUtils.js';
|
|
9
|
-
|
|
10
9
|
class Spherical {
|
|
11
10
|
|
|
12
11
|
constructor( radius = 1, phi = 0, theta = 0 ) {
|
package/src/math/Vector3.js
CHANGED
|
@@ -694,15 +694,15 @@ class Vector3 {
|
|
|
694
694
|
|
|
695
695
|
randomDirection() {
|
|
696
696
|
|
|
697
|
-
//
|
|
697
|
+
// https://mathworld.wolfram.com/SpherePointPicking.html
|
|
698
698
|
|
|
699
|
-
const
|
|
700
|
-
const
|
|
701
|
-
const
|
|
699
|
+
const theta = Math.random() * Math.PI * 2;
|
|
700
|
+
const u = Math.random() * 2 - 1;
|
|
701
|
+
const c = Math.sqrt( 1 - u * u );
|
|
702
702
|
|
|
703
|
-
this.x =
|
|
704
|
-
this.y =
|
|
705
|
-
this.z =
|
|
703
|
+
this.x = c * Math.cos( theta );
|
|
704
|
+
this.y = u;
|
|
705
|
+
this.z = c * Math.sin( theta );
|
|
706
706
|
|
|
707
707
|
return this;
|
|
708
708
|
|
|
@@ -195,8 +195,7 @@ class BatchedMesh extends Mesh {
|
|
|
195
195
|
const { array, itemSize, normalized } = srcAttribute;
|
|
196
196
|
|
|
197
197
|
const dstArray = new array.constructor( maxVertexCount * itemSize );
|
|
198
|
-
const dstAttribute = new
|
|
199
|
-
dstAttribute.setUsage( srcAttribute.usage );
|
|
198
|
+
const dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );
|
|
200
199
|
|
|
201
200
|
geometry.setAttribute( attributeName, dstAttribute );
|
|
202
201
|
|
|
@@ -223,7 +222,7 @@ class BatchedMesh extends Mesh {
|
|
|
223
222
|
|
|
224
223
|
}
|
|
225
224
|
|
|
226
|
-
// Make sure the geometry is compatible with the existing combined geometry
|
|
225
|
+
// Make sure the geometry is compatible with the existing combined geometry attributes
|
|
227
226
|
_validateGeometry( geometry ) {
|
|
228
227
|
|
|
229
228
|
// check that the geometry doesn't have a version of our reserved id attribute
|
|
@@ -514,6 +513,7 @@ class BatchedMesh extends Mesh {
|
|
|
514
513
|
}
|
|
515
514
|
|
|
516
515
|
dstAttribute.needsUpdate = true;
|
|
516
|
+
dstAttribute.addUpdateRange( vertexStart * itemSize, vertexCount * itemSize );
|
|
517
517
|
|
|
518
518
|
}
|
|
519
519
|
|
|
@@ -537,6 +537,7 @@ class BatchedMesh extends Mesh {
|
|
|
537
537
|
}
|
|
538
538
|
|
|
539
539
|
dstIndex.needsUpdate = true;
|
|
540
|
+
dstIndex.addUpdateRange( indexStart, reservedRange.indexCount );
|
|
540
541
|
|
|
541
542
|
}
|
|
542
543
|
|
|
@@ -3,6 +3,8 @@ import { Mesh } from './Mesh.js';
|
|
|
3
3
|
import { Box3 } from '../math/Box3.js';
|
|
4
4
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
5
5
|
import { Sphere } from '../math/Sphere.js';
|
|
6
|
+
import { DataTexture } from '../textures/DataTexture.js';
|
|
7
|
+
import { FloatType, RedFormat } from '../constants.js';
|
|
6
8
|
|
|
7
9
|
const _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();
|
|
8
10
|
const _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();
|
|
@@ -24,6 +26,7 @@ class InstancedMesh extends Mesh {
|
|
|
24
26
|
|
|
25
27
|
this.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );
|
|
26
28
|
this.instanceColor = null;
|
|
29
|
+
this.morphTexture = null;
|
|
27
30
|
|
|
28
31
|
this.count = count;
|
|
29
32
|
|
|
@@ -106,6 +109,7 @@ class InstancedMesh extends Mesh {
|
|
|
106
109
|
|
|
107
110
|
this.instanceMatrix.copy( source.instanceMatrix );
|
|
108
111
|
|
|
112
|
+
if ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();
|
|
109
113
|
if ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();
|
|
110
114
|
|
|
111
115
|
this.count = source.count;
|
|
@@ -129,6 +133,24 @@ class InstancedMesh extends Mesh {
|
|
|
129
133
|
|
|
130
134
|
}
|
|
131
135
|
|
|
136
|
+
getMorphAt( index, object ) {
|
|
137
|
+
|
|
138
|
+
const objectInfluences = object.morphTargetInfluences;
|
|
139
|
+
|
|
140
|
+
const array = this.morphTexture.source.data.data;
|
|
141
|
+
|
|
142
|
+
const len = objectInfluences.length + 1; // All influences + the baseInfluenceSum
|
|
143
|
+
|
|
144
|
+
const dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning
|
|
145
|
+
|
|
146
|
+
for ( let i = 0; i < objectInfluences.length; i ++ ) {
|
|
147
|
+
|
|
148
|
+
objectInfluences[ i ] = array[ dataIndex + i ];
|
|
149
|
+
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
}
|
|
153
|
+
|
|
132
154
|
raycast( raycaster, intersects ) {
|
|
133
155
|
|
|
134
156
|
const matrixWorld = this.matrixWorld;
|
|
@@ -199,6 +221,38 @@ class InstancedMesh extends Mesh {
|
|
|
199
221
|
|
|
200
222
|
}
|
|
201
223
|
|
|
224
|
+
setMorphAt( index, object ) {
|
|
225
|
+
|
|
226
|
+
const objectInfluences = object.morphTargetInfluences;
|
|
227
|
+
|
|
228
|
+
const len = objectInfluences.length + 1; // morphBaseInfluence + all influences
|
|
229
|
+
|
|
230
|
+
if ( this.morphTexture === null ) {
|
|
231
|
+
|
|
232
|
+
this.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );
|
|
233
|
+
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const array = this.morphTexture.source.data.data;
|
|
237
|
+
|
|
238
|
+
let morphInfluencesSum = 0;
|
|
239
|
+
|
|
240
|
+
for ( let i = 0; i < objectInfluences.length; i ++ ) {
|
|
241
|
+
|
|
242
|
+
morphInfluencesSum += objectInfluences[ i ];
|
|
243
|
+
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
const morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;
|
|
247
|
+
|
|
248
|
+
const dataIndex = len * index;
|
|
249
|
+
|
|
250
|
+
array[ dataIndex ] = morphBaseInfluence;
|
|
251
|
+
|
|
252
|
+
array.set( objectInfluences, dataIndex + 1 );
|
|
253
|
+
|
|
254
|
+
}
|
|
255
|
+
|
|
202
256
|
updateMorphTargets() {
|
|
203
257
|
|
|
204
258
|
}
|
|
@@ -207,6 +261,15 @@ class InstancedMesh extends Mesh {
|
|
|
207
261
|
|
|
208
262
|
this.dispatchEvent( { type: 'dispose' } );
|
|
209
263
|
|
|
264
|
+
if ( this.morphTexture !== null ) {
|
|
265
|
+
|
|
266
|
+
this.morphTexture.dispose();
|
|
267
|
+
this.morphTexture = null;
|
|
268
|
+
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
return this;
|
|
272
|
+
|
|
210
273
|
}
|
|
211
274
|
|
|
212
275
|
}
|
package/src/objects/Mesh.js
CHANGED
|
@@ -388,7 +388,6 @@ function checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, n
|
|
|
388
388
|
_uvC.fromBufferAttribute( uv1, c );
|
|
389
389
|
|
|
390
390
|
intersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );
|
|
391
|
-
intersection.uv2 = intersection.uv1; // @deprecated, r152
|
|
392
391
|
|
|
393
392
|
}
|
|
394
393
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BackSide, LinearFilter, LinearMipmapLinearFilter, NoBlending
|
|
1
|
+
import { BackSide, LinearFilter, LinearMipmapLinearFilter, NoBlending } from '../constants.js';
|
|
2
2
|
import { Mesh } from '../objects/Mesh.js';
|
|
3
3
|
import { BoxGeometry } from '../geometries/BoxGeometry.js';
|
|
4
4
|
import { ShaderMaterial } from '../materials/ShaderMaterial.js';
|
|
@@ -6,7 +6,6 @@ import { cloneUniforms } from './shaders/UniformsUtils.js';
|
|
|
6
6
|
import { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
7
7
|
import { CubeCamera } from '../cameras/CubeCamera.js';
|
|
8
8
|
import { CubeTexture } from '../textures/CubeTexture.js';
|
|
9
|
-
import { warnOnce } from '../utils.js';
|
|
10
9
|
|
|
11
10
|
class WebGLCubeRenderTarget extends WebGLRenderTarget {
|
|
12
11
|
|
|
@@ -19,14 +18,6 @@ class WebGLCubeRenderTarget extends WebGLRenderTarget {
|
|
|
19
18
|
const image = { width: size, height: size, depth: 1 };
|
|
20
19
|
const images = [ image, image, image, image, image, image ];
|
|
21
20
|
|
|
22
|
-
if ( options.encoding !== undefined ) {
|
|
23
|
-
|
|
24
|
-
// @deprecated, r152
|
|
25
|
-
warnOnce( 'THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.' );
|
|
26
|
-
options.colorSpace = options.encoding === sRGBEncoding ? SRGBColorSpace : NoColorSpace;
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
21
|
this.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );
|
|
31
22
|
|
|
32
23
|
// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)
|