super-three 0.158.0 → 0.160.1

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.
Files changed (191) hide show
  1. package/build/three.cjs +1720 -380
  2. package/build/three.js +1720 -380
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +1719 -381
  5. package/build/three.module.min.js +1 -1
  6. package/examples/jsm/Addons.js +2 -1
  7. package/examples/jsm/controls/OrbitControls.js +50 -40
  8. package/examples/jsm/csm/CSMShader.js +52 -47
  9. package/examples/jsm/exporters/GLTFExporter.js +79 -1
  10. package/examples/jsm/exporters/USDZExporter.js +27 -19
  11. package/examples/jsm/helpers/TextureHelper.js +237 -0
  12. package/examples/jsm/interactive/HTMLMesh.js +9 -2
  13. package/examples/jsm/lines/LineMaterial.js +16 -33
  14. package/examples/jsm/loaders/ColladaLoader.js +0 -6
  15. package/examples/jsm/loaders/DRACOLoader.js +4 -3
  16. package/examples/jsm/loaders/FBXLoader.js +294 -124
  17. package/examples/jsm/loaders/GLTFLoader.js +71 -3
  18. package/examples/jsm/loaders/MaterialXLoader.js +73 -54
  19. package/examples/jsm/loaders/NRRDLoader.js +0 -13
  20. package/examples/jsm/loaders/SVGLoader.js +4 -4
  21. package/examples/jsm/loaders/USDZLoader.js +3 -17
  22. package/examples/jsm/math/Octree.js +15 -4
  23. package/examples/jsm/misc/Timer.js +119 -0
  24. package/examples/jsm/misc/TubePainter.js +3 -6
  25. package/examples/jsm/modifiers/CurveModifier.js +20 -2
  26. package/examples/jsm/nodes/Nodes.js +11 -7
  27. package/examples/jsm/nodes/accessors/CameraNode.js +18 -2
  28. package/examples/jsm/nodes/accessors/CubeTextureNode.js +5 -73
  29. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +11 -2
  30. package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
  31. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -3
  32. package/examples/jsm/nodes/accessors/MorphNode.js +191 -16
  33. package/examples/jsm/nodes/accessors/ReferenceNode.js +25 -1
  34. package/examples/jsm/nodes/accessors/TextureNode.js +122 -36
  35. package/examples/jsm/nodes/code/CodeNode.js +3 -3
  36. package/examples/jsm/nodes/core/AttributeNode.js +7 -1
  37. package/examples/jsm/nodes/core/CacheNode.js +4 -1
  38. package/examples/jsm/nodes/core/ConstNode.js +1 -1
  39. package/examples/jsm/nodes/core/Node.js +6 -3
  40. package/examples/jsm/nodes/core/NodeBuilder.js +84 -27
  41. package/examples/jsm/nodes/core/NodeFrame.js +10 -8
  42. package/examples/jsm/nodes/core/NodeUniform.js +12 -0
  43. package/examples/jsm/nodes/core/NodeUtils.js +3 -7
  44. package/examples/jsm/nodes/core/OutputStructNode.js +3 -3
  45. package/examples/jsm/nodes/core/PropertyNode.js +17 -2
  46. package/examples/jsm/nodes/core/StructTypeNode.js +4 -4
  47. package/examples/jsm/nodes/core/UniformGroup.js +13 -0
  48. package/examples/jsm/nodes/core/UniformGroupNode.js +36 -0
  49. package/examples/jsm/nodes/core/UniformNode.js +17 -0
  50. package/examples/jsm/nodes/core/VarNode.js +2 -0
  51. package/examples/jsm/nodes/core/VaryingNode.js +1 -7
  52. package/examples/jsm/nodes/display/BumpMapNode.js +1 -1
  53. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +6 -10
  54. package/examples/jsm/nodes/display/GaussianBlurNode.js +170 -0
  55. package/examples/jsm/nodes/display/PassNode.js +182 -0
  56. package/examples/jsm/nodes/display/ViewportDepthNode.js +31 -3
  57. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +2 -2
  58. package/examples/jsm/nodes/display/ViewportNode.js +5 -8
  59. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +1 -1
  60. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +52 -17
  61. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -12
  62. package/examples/jsm/nodes/lighting/LightsNode.js +34 -32
  63. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +1 -1
  64. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +12 -12
  65. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -0
  66. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +1 -1
  67. package/examples/jsm/nodes/materials/NodeMaterial.js +66 -41
  68. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -10
  69. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
  70. package/examples/jsm/nodes/materialx/MaterialXNodes.js +10 -10
  71. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +128 -54
  72. package/examples/jsm/nodes/materialx/lib/mx_noise.js +1430 -618
  73. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +24 -14
  74. package/examples/jsm/nodes/math/MathNode.js +2 -0
  75. package/examples/jsm/nodes/math/OperatorNode.js +19 -6
  76. package/examples/jsm/nodes/shadernode/ShaderNode.js +32 -3
  77. package/examples/jsm/nodes/utils/FunctionOverloadingNode.js +95 -0
  78. package/examples/jsm/nodes/utils/RemapNode.js +2 -2
  79. package/examples/jsm/nodes/utils/SplitNode.js +8 -2
  80. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +3 -3
  81. package/examples/jsm/objects/QuadMesh.js +60 -0
  82. package/examples/jsm/postprocessing/GTAOPass.js +572 -0
  83. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  84. package/examples/jsm/renderers/common/Animation.js +10 -21
  85. package/examples/jsm/renderers/common/Backend.js +19 -3
  86. package/examples/jsm/renderers/common/Background.js +20 -22
  87. package/examples/jsm/renderers/common/Bindings.js +30 -21
  88. package/examples/jsm/renderers/common/ChainMap.js +3 -3
  89. package/examples/jsm/renderers/common/Color4.js +37 -0
  90. package/examples/jsm/renderers/common/Geometries.js +4 -4
  91. package/examples/jsm/renderers/common/Info.js +12 -2
  92. package/examples/jsm/renderers/common/Pipelines.js +3 -51
  93. package/examples/jsm/renderers/common/PostProcessing.js +25 -0
  94. package/examples/jsm/renderers/common/RenderContext.js +1 -1
  95. package/examples/jsm/renderers/common/RenderContexts.js +1 -1
  96. package/examples/jsm/renderers/common/RenderObject.js +13 -1
  97. package/examples/jsm/renderers/common/RenderObjects.js +4 -2
  98. package/examples/jsm/renderers/common/Renderer.js +137 -37
  99. package/examples/jsm/renderers/common/StorageTexture.js +1 -0
  100. package/examples/jsm/renderers/common/Textures.js +4 -1
  101. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +10 -2
  102. package/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +44 -0
  103. package/examples/jsm/renderers/common/nodes/Nodes.js +74 -7
  104. package/examples/jsm/renderers/webgl/WebGLBackend.js +91 -33
  105. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +100 -31
  106. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +57 -5
  107. package/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +36 -0
  108. package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +11 -1
  109. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +71 -2
  110. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +42 -0
  111. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
  112. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +33 -3
  113. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +4 -14
  114. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +186 -137
  115. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +1 -1
  116. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +209 -90
  117. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +15 -10
  118. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +11 -3
  119. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +2 -3
  120. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +88 -6
  121. package/examples/jsm/shaders/FXAAShader.js +133 -133
  122. package/examples/jsm/shaders/GTAOShader.js +424 -0
  123. package/examples/jsm/shaders/OutputShader.js +4 -0
  124. package/examples/jsm/shaders/PoissonDenoiseShader.js +226 -0
  125. package/examples/jsm/shaders/SAOShader.js +2 -3
  126. package/examples/jsm/shaders/SSAOShader.js +2 -3
  127. package/examples/jsm/transpiler/AST.js +40 -1
  128. package/examples/jsm/transpiler/GLSLDecoder.js +50 -8
  129. package/examples/jsm/transpiler/ShaderToyDecoder.js +4 -4
  130. package/examples/jsm/transpiler/TSLEncoder.js +124 -20
  131. package/examples/jsm/utils/SortUtils.js +158 -0
  132. package/examples/jsm/utils/TextureUtils.js +33 -21
  133. package/examples/jsm/webxr/ARButton.js +14 -0
  134. package/examples/jsm/webxr/VRButton.js +23 -8
  135. package/examples/jsm/webxr/XRButton.js +25 -11
  136. package/package.json +5 -6
  137. package/src/Three.js +1 -0
  138. package/src/constants.js +2 -1
  139. package/src/core/BufferAttribute.js +21 -2
  140. package/src/core/InterleavedBuffer.js +21 -1
  141. package/src/core/Object3D.js +60 -12
  142. package/src/core/UniformsGroup.js +7 -1
  143. package/src/extras/curves/LineCurve3.js +4 -0
  144. package/src/loaders/AudioLoader.js +1 -1
  145. package/src/loaders/BufferGeometryLoader.js +0 -7
  146. package/src/loaders/ImageBitmapLoader.js +25 -1
  147. package/src/loaders/ObjectLoader.js +49 -0
  148. package/src/materials/ShaderMaterial.js +2 -1
  149. package/src/math/ColorManagement.js +0 -16
  150. package/src/math/Quaternion.js +5 -4
  151. package/src/math/Sphere.js +2 -0
  152. package/src/math/Triangle.js +17 -5
  153. package/src/objects/BatchedMesh.js +1020 -0
  154. package/src/objects/Skeleton.js +1 -3
  155. package/src/renderers/WebGL3DRenderTarget.js +2 -2
  156. package/src/renderers/WebGLArrayRenderTarget.js +2 -2
  157. package/src/renderers/WebGLRenderer.js +24 -19
  158. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +19 -0
  159. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  160. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -5
  161. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +31 -4
  162. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +9 -4
  163. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +6 -0
  164. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +9 -17
  165. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +84 -0
  166. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +6 -0
  167. package/src/renderers/shaders/ShaderChunk.js +4 -0
  168. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  169. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  170. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +2 -0
  171. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -0
  172. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +3 -0
  173. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +2 -0
  174. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -0
  175. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +2 -0
  176. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +2 -0
  177. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +3 -0
  178. package/src/renderers/webgl/WebGLAttributes.js +39 -5
  179. package/src/renderers/webgl/WebGLBufferRenderer.js +31 -0
  180. package/src/renderers/webgl/WebGLCubeMaps.js +1 -1
  181. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  182. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +31 -0
  183. package/src/renderers/webgl/WebGLLights.js +11 -2
  184. package/src/renderers/webgl/WebGLProgram.js +20 -1
  185. package/src/renderers/webgl/WebGLPrograms.js +5 -0
  186. package/src/renderers/webgl/WebGLShadowMap.js +35 -0
  187. package/src/renderers/webgl/WebGLTextures.js +7 -11
  188. package/src/renderers/webgl/WebGLUniforms.js +11 -1
  189. package/src/renderers/webgl/WebGLUniformsGroups.js +72 -93
  190. package/src/renderers/webxr/WebXRManager.js +16 -0
  191. package/examples/jsm/objects/BatchedMesh.js +0 -586
@@ -22,6 +22,7 @@ import { Color } from '../math/Color.js';
22
22
  import { Object3D } from '../core/Object3D.js';
23
23
  import { Group } from '../objects/Group.js';
24
24
  import { InstancedMesh } from '../objects/InstancedMesh.js';
25
+ import { BatchedMesh } from '../objects/BatchedMesh.js';
25
26
  import { Sprite } from '../objects/Sprite.js';
26
27
  import { Points } from '../objects/Points.js';
27
28
  import { Line } from '../objects/Line.js';
@@ -59,6 +60,8 @@ import { Loader } from './Loader.js';
59
60
  import { FileLoader } from './FileLoader.js';
60
61
  import * as Geometries from '../geometries/Geometries.js';
61
62
  import { getTypedArray } from '../utils.js';
63
+ import { Box3 } from '../math/Box3.js';
64
+ import { Sphere } from '../math/Sphere.js';
62
65
 
63
66
  class ObjectLoader extends Loader {
64
67
 
@@ -912,6 +915,52 @@ class ObjectLoader extends Loader {
912
915
 
913
916
  break;
914
917
 
918
+ case 'BatchedMesh':
919
+
920
+ geometry = getGeometry( data.geometry );
921
+ material = getMaterial( data.material );
922
+
923
+ object = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );
924
+ object.geometry = geometry;
925
+ object.perObjectFrustumCulled = data.perObjectFrustumCulled;
926
+ object.sortObjects = data.sortObjects;
927
+
928
+ object._drawRanges = data.drawRanges;
929
+ object._reservedRanges = data.reservedRanges;
930
+
931
+ object._visibility = data.visibility;
932
+ object._active = data.active;
933
+ object._bounds = data.bounds.map( bound => {
934
+
935
+ const box = new Box3();
936
+ box.min.fromArray( bound.boxMin );
937
+ box.max.fromArray( bound.boxMax );
938
+
939
+ const sphere = new Sphere();
940
+ sphere.radius = bound.sphereRadius;
941
+ sphere.center.fromArray( bound.sphereCenter );
942
+
943
+ return {
944
+ boxInitialized: bound.boxInitialized,
945
+ box: box,
946
+
947
+ sphereInitialized: bound.sphereInitialized,
948
+ sphere: sphere
949
+ };
950
+
951
+ } );
952
+
953
+ object._maxGeometryCount = data.maxGeometryCount;
954
+ object._maxVertexCount = data.maxVertexCount;
955
+ object._maxIndexCount = data.maxIndexCount;
956
+
957
+ object._geometryInitialized = data.geometryInitialized;
958
+ object._geometryCount = data.geometryCount;
959
+
960
+ object._matricesTexture = getTexture( data.matricesTexture.uuid );
961
+
962
+ break;
963
+
915
964
  case 'LOD':
916
965
 
917
966
  object = new LOD();
@@ -36,7 +36,8 @@ class ShaderMaterial extends Material {
36
36
  derivatives: false, // set to use derivatives
37
37
  fragDepth: false, // set to use fragment depth values
38
38
  drawBuffers: false, // set to use draw buffers
39
- shaderTextureLOD: false // set to use shader texture LOD
39
+ shaderTextureLOD: false, // set to use shader texture LOD
40
+ clipCullDistance: false // set to use vertex shader clipping
40
41
  };
41
42
 
42
43
  // When rendered geometry doesn't include these attributes but the material does,
@@ -64,22 +64,6 @@ export const ColorManagement = {
64
64
 
65
65
  _workingColorSpace: LinearSRGBColorSpace,
66
66
 
67
- get legacyMode() {
68
-
69
- console.warn( 'THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150.' );
70
-
71
- return ! this.enabled;
72
-
73
- },
74
-
75
- set legacyMode( legacyMode ) {
76
-
77
- console.warn( 'THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150.' );
78
-
79
- this.enabled = ! legacyMode;
80
-
81
- },
82
-
83
67
  get workingColorSpace() {
84
68
 
85
69
  return this._workingColorSpace;
@@ -198,7 +198,7 @@ class Quaternion {
198
198
 
199
199
  }
200
200
 
201
- setFromEuler( euler, update ) {
201
+ setFromEuler( euler, update = true ) {
202
202
 
203
203
  const x = euler._x, y = euler._y, z = euler._z, order = euler._order;
204
204
 
@@ -266,7 +266,7 @@ class Quaternion {
266
266
 
267
267
  }
268
268
 
269
- if ( update !== false ) this._onChangeCallback();
269
+ if ( update === true ) this._onChangeCallback();
270
270
 
271
271
  return this;
272
272
 
@@ -561,8 +561,7 @@ class Quaternion {
561
561
  this._y = s * y + t * this._y;
562
562
  this._z = s * z + t * this._z;
563
563
 
564
- this.normalize();
565
- this._onChangeCallback();
564
+ this.normalize(); // normalize calls _onChangeCallback()
566
565
 
567
566
  return this;
568
567
 
@@ -650,6 +649,8 @@ class Quaternion {
650
649
  this._z = attribute.getZ( index );
651
650
  this._w = attribute.getW( index );
652
651
 
652
+ this._onChangeCallback();
653
+
653
654
  return this;
654
655
 
655
656
  }
@@ -9,6 +9,8 @@ class Sphere {
9
9
 
10
10
  constructor( center = new Vector3(), radius = - 1 ) {
11
11
 
12
+ this.isSphere = true;
13
+
12
14
  this.center = center;
13
15
  this.radius = radius;
14
16
 
@@ -60,9 +60,8 @@ class Triangle {
60
60
  // collinear or singular triangle
61
61
  if ( denom === 0 ) {
62
62
 
63
- // arbitrary location outside of triangle?
64
- // not sure if this is the best idea, maybe should be returning undefined
65
- return target.set( - 2, - 1, - 1 );
63
+ target.set( 0, 0, 0 );
64
+ return null;
66
65
 
67
66
  }
68
67
 
@@ -77,7 +76,12 @@ class Triangle {
77
76
 
78
77
  static containsPoint( point, a, b, c ) {
79
78
 
80
- this.getBarycoord( point, a, b, c, _v3 );
79
+ // if the triangle is degenerate then we can't contain a point
80
+ if ( this.getBarycoord( point, a, b, c, _v3 ) === null ) {
81
+
82
+ return false;
83
+
84
+ }
81
85
 
82
86
  return ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );
83
87
 
@@ -99,7 +103,15 @@ class Triangle {
99
103
 
100
104
  static getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {
101
105
 
102
- this.getBarycoord( point, p1, p2, p3, _v3 );
106
+ if ( this.getBarycoord( point, p1, p2, p3, _v3 ) === null ) {
107
+
108
+ target.x = 0;
109
+ target.y = 0;
110
+ if ( 'z' in target ) target.z = 0;
111
+ if ( 'w' in target ) target.w = 0;
112
+ return null;
113
+
114
+ }
103
115
 
104
116
  target.setScalar( 0 );
105
117
  target.addScaledVector( v1, _v3.x );