super-three 0.162.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.
Files changed (122) hide show
  1. package/build/three.cjs +407 -1014
  2. package/build/three.module.js +406 -1013
  3. package/build/three.module.min.js +1 -1
  4. package/examples/jsm/controls/TransformControls.js +3 -3
  5. package/examples/jsm/exporters/GLTFExporter.js +21 -4
  6. package/examples/jsm/exporters/USDZExporter.js +15 -0
  7. package/examples/jsm/geometries/TextGeometry.js +10 -2
  8. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  9. package/examples/jsm/libs/fflate.module.js +694 -496
  10. package/examples/jsm/lines/LineMaterial.js +0 -2
  11. package/examples/jsm/loaders/3MFLoader.js +2 -0
  12. package/examples/jsm/loaders/EXRLoader.js +89 -19
  13. package/examples/jsm/loaders/FBXLoader.js +1 -1
  14. package/examples/jsm/loaders/GLTFLoader.js +6 -0
  15. package/examples/jsm/loaders/KTX2Loader.js +2 -6
  16. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  17. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  18. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  19. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  20. package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
  21. package/examples/jsm/nodes/Nodes.js +6 -1
  22. package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
  23. package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
  24. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +1 -1
  25. package/examples/jsm/nodes/accessors/MorphNode.js +13 -3
  26. package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
  27. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  28. package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
  29. package/examples/jsm/nodes/accessors/TextureNode.js +30 -7
  30. package/examples/jsm/nodes/core/Node.js +55 -4
  31. package/examples/jsm/nodes/core/NodeBuilder.js +21 -16
  32. package/examples/jsm/nodes/core/NodeFrame.js +10 -10
  33. package/examples/jsm/nodes/core/NodeUtils.js +2 -2
  34. package/examples/jsm/nodes/core/UniformNode.js +20 -0
  35. package/examples/jsm/nodes/display/PassNode.js +17 -1
  36. package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
  37. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
  38. package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
  39. package/examples/jsm/nodes/fog/FogNode.js +13 -3
  40. package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
  41. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  42. package/examples/jsm/nodes/lighting/EnvironmentNode.js +12 -69
  43. package/examples/jsm/nodes/materials/NodeMaterial.js +33 -11
  44. package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
  45. package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
  46. package/examples/jsm/nodes/shadernode/ShaderNode.js +1 -1
  47. package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
  48. package/examples/jsm/objects/QuadMesh.js +7 -23
  49. package/examples/jsm/physics/RapierPhysics.js +4 -4
  50. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  51. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  52. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  53. package/examples/jsm/postprocessing/SSAOPass.js +0 -3
  54. package/examples/jsm/renderers/common/Animation.js +3 -0
  55. package/examples/jsm/renderers/common/Background.js +5 -5
  56. package/examples/jsm/renderers/common/Info.js +11 -19
  57. package/examples/jsm/renderers/common/PostProcessing.js +12 -4
  58. package/examples/jsm/renderers/common/RenderContext.js +1 -1
  59. package/examples/jsm/renderers/common/RenderObject.js +4 -4
  60. package/examples/jsm/renderers/common/RenderObjects.js +1 -1
  61. package/examples/jsm/renderers/common/Renderer.js +25 -8
  62. package/examples/jsm/renderers/common/extras/PMREMGenerator.js +777 -0
  63. package/examples/jsm/renderers/common/nodes/Nodes.js +5 -18
  64. package/examples/jsm/renderers/webgl/WebGLBackend.js +148 -24
  65. package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +141 -0
  66. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +3 -3
  67. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +1 -1
  68. package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
  69. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +43 -0
  70. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -2
  71. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -2
  72. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -2
  73. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +54 -25
  74. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +5 -3
  75. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +25 -0
  76. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
  77. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +92 -18
  78. package/examples/jsm/utils/GPUStatsPanel.js +10 -45
  79. package/examples/jsm/utils/TextureUtils.js +1 -1
  80. package/package.json +1 -1
  81. package/src/Three.js +0 -1
  82. package/src/animation/AnimationClip.js +1 -1
  83. package/src/constants.js +3 -3
  84. package/src/core/Object3D.js +10 -7
  85. package/src/extras/PMREMGenerator.js +9 -0
  86. package/src/loaders/ObjectLoader.js +2 -0
  87. package/src/materials/ShaderMaterial.js +0 -4
  88. package/src/math/Spherical.js +4 -5
  89. package/src/objects/BatchedMesh.js +4 -3
  90. package/src/objects/InstancedMesh.js +10 -0
  91. package/src/renderers/WebGLRenderer.js +55 -114
  92. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  93. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  94. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  95. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  96. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
  97. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  98. package/src/renderers/shaders/ShaderLib.js +1 -1
  99. package/src/renderers/shaders/UniformsUtils.js +10 -1
  100. package/src/renderers/webgl/WebGLAttributes.js +6 -33
  101. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  102. package/src/renderers/webgl/WebGLBufferRenderer.js +3 -25
  103. package/src/renderers/webgl/WebGLCapabilities.js +2 -12
  104. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  105. package/src/renderers/webgl/WebGLExtensions.js +4 -19
  106. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +3 -25
  107. package/src/renderers/webgl/WebGLLights.js +6 -32
  108. package/src/renderers/webgl/WebGLMaterials.js +2 -3
  109. package/src/renderers/webgl/WebGLMorphtargets.js +79 -217
  110. package/src/renderers/webgl/WebGLProgram.js +18 -47
  111. package/src/renderers/webgl/WebGLPrograms.js +20 -32
  112. package/src/renderers/webgl/WebGLRenderStates.js +8 -6
  113. package/src/renderers/webgl/WebGLState.js +15 -59
  114. package/src/renderers/webgl/WebGLTextures.js +75 -237
  115. package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
  116. package/src/renderers/webgl/WebGLUtils.js +6 -57
  117. package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
  118. package/src/renderers/webxr/WebXRManager.js +2 -2
  119. package/src/scenes/Scene.js +7 -1
  120. package/src/textures/Texture.js +11 -1
  121. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  122. package/src/renderers/WebGL1Renderer.js +0 -7
@@ -1,7 +1,7 @@
1
- import { vec4, MeshBasicNodeMaterial } from '../../nodes/Nodes.js';
1
+ import { vec4, NodeMaterial } from '../../nodes/Nodes.js';
2
2
  import QuadMesh from '../../objects/QuadMesh.js';
3
3
 
4
- const quadMesh = new QuadMesh( new MeshBasicNodeMaterial() );
4
+ const quadMesh = new QuadMesh( new NodeMaterial() );
5
5
 
6
6
  class PostProcessing {
7
7
 
@@ -12,11 +12,19 @@ class PostProcessing {
12
12
 
13
13
  }
14
14
 
15
- async render() {
15
+ render() {
16
16
 
17
17
  quadMesh.material.fragmentNode = this.outputNode;
18
18
 
19
- await quadMesh.render( this.renderer );
19
+ quadMesh.render( this.renderer );
20
+
21
+ }
22
+
23
+ renderAsync() {
24
+
25
+ quadMesh.material.fragmentNode = this.outputNode;
26
+
27
+ return quadMesh.renderAsync( this.renderer );
20
28
 
21
29
  }
22
30
 
@@ -16,7 +16,7 @@ class RenderContext {
16
16
  this.clearDepth = true;
17
17
  this.clearDepthValue = 1;
18
18
 
19
- this.stencil = true;
19
+ this.stencil = false;
20
20
  this.clearStencil = true;
21
21
  this.clearStencilValue = 1;
22
22
 
@@ -1,4 +1,4 @@
1
- import ClippingContext from "./ClippingContext.js";
1
+ import ClippingContext from './ClippingContext.js';
2
2
 
3
3
  let id = 0;
4
4
 
@@ -75,7 +75,7 @@ export default class RenderObject {
75
75
 
76
76
  }
77
77
 
78
- clippingNeedsUpdate () {
78
+ get clippingNeedsUpdate() {
79
79
 
80
80
  if ( this.clippingContext.version === this.clippingContextVersion ) return false;
81
81
 
@@ -155,7 +155,7 @@ export default class RenderObject {
155
155
 
156
156
  for ( const property in material ) {
157
157
 
158
- if ( /^(is[A-Z])|^(visible|version|uuid|name|opacity|userData)$/.test( property ) ) continue;
158
+ if ( /^(is[A-Z]|_)|^(visible|version|uuid|name|opacity|userData)$/.test( property ) ) continue;
159
159
 
160
160
  let value = material[ property ];
161
161
 
@@ -192,7 +192,7 @@ export default class RenderObject {
192
192
 
193
193
  get needsUpdate() {
194
194
 
195
- return this.initialNodesCacheKey !== this.getNodesCacheKey();
195
+ return this.initialNodesCacheKey !== this.getNodesCacheKey() || this.clippingNeedsUpdate;
196
196
 
197
197
  }
198
198
 
@@ -33,7 +33,7 @@ class RenderObjects {
33
33
 
34
34
  renderObject.updateClipping( renderContext.clippingContext );
35
35
 
36
- if ( renderObject.version !== material.version || renderObject.needsUpdate || renderObject.clippingNeedsUpdate() ) {
36
+ if ( renderObject.version !== material.version || renderObject.needsUpdate ) {
37
37
 
38
38
  if ( renderObject.initialCacheKey !== renderObject.getCacheKey() ) {
39
39
 
@@ -57,7 +57,7 @@ class Renderer {
57
57
  this.sortObjects = true;
58
58
 
59
59
  this.depth = true;
60
- this.stencil = true;
60
+ this.stencil = false;
61
61
 
62
62
  this.clippingPlanes = [];
63
63
 
@@ -312,7 +312,7 @@ class Renderer {
312
312
 
313
313
  if ( this._initialized === false ) await this.init();
314
314
 
315
- const renderContext = this._renderContext( scene, camera );
315
+ const renderContext = this._renderScene( scene, camera );
316
316
 
317
317
  await this.backend.resolveTimestampAsync( renderContext, 'render' );
318
318
 
@@ -322,16 +322,17 @@ class Renderer {
322
322
 
323
323
  if ( this._initialized === false ) {
324
324
 
325
- console.error( 'THREE.Renderer: .render() called before the backend is initialized. Try using .renderAsync() instead.' );
326
- return;
325
+ console.warn( 'THREE.Renderer: .render() called before the backend is initialized. Try using .renderAsync() instead.' );
326
+
327
+ return this.renderAsync( scene, camera );
327
328
 
328
329
  }
329
330
 
330
- this._renderContext( scene, camera );
331
+ this._renderScene( scene, camera );
331
332
 
332
333
  }
333
334
 
334
- _renderContext( scene, camera ) {
335
+ _renderScene( scene, camera ) {
335
336
 
336
337
  // preserve render tree
337
338
 
@@ -378,7 +379,6 @@ class Renderer {
378
379
 
379
380
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
380
381
 
381
- if ( this.info.autoReset === true ) this.info.reset();
382
382
 
383
383
  //
384
384
 
@@ -761,6 +761,14 @@ class Renderer {
761
761
 
762
762
  clear( color = true, depth = true, stencil = true ) {
763
763
 
764
+ if ( this._initialized === false ) {
765
+
766
+ console.warn( 'THREE.Renderer: .clear() called before the backend is initialized. Try using .clearAsync() instead.' );
767
+
768
+ return this.clearAsync( color, depth, stencil );
769
+
770
+ }
771
+
764
772
  let renderTargetData = null;
765
773
  const renderTarget = this._renderTarget;
766
774
 
@@ -897,7 +905,6 @@ class Renderer {
897
905
  nodeFrame.renderId = this.info.calls;
898
906
 
899
907
  //
900
- if ( this.info.autoReset === true ) this.info.resetCompute();
901
908
 
902
909
  const backend = this.backend;
903
910
  const pipelines = this._pipelines;
@@ -979,6 +986,16 @@ class Renderer {
979
986
 
980
987
  }
981
988
 
989
+ copyTextureToTexture( position, srcTexture, dstTexture, level = 0 ) {
990
+
991
+ this._textures.updateTexture( srcTexture );
992
+ this._textures.updateTexture( dstTexture );
993
+
994
+ this.backend.copyTextureToTexture( position, srcTexture, dstTexture, level );
995
+
996
+ }
997
+
998
+
982
999
  readRenderTargetPixelsAsync( renderTarget, x, y, width, height ) {
983
1000
 
984
1001
  return this.backend.copyTextureToBuffer( renderTarget.texture, x, y, width, height );