super-three 0.163.0 → 0.164.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 (114) hide show
  1. package/build/three.cjs +473 -245
  2. package/build/three.module.js +473 -245
  3. package/build/three.module.min.js +2 -2
  4. package/examples/jsm/animation/CCDIKSolver.js +4 -2
  5. package/examples/jsm/exporters/GLTFExporter.js +45 -1
  6. package/examples/jsm/exporters/USDZExporter.js +7 -1
  7. package/examples/jsm/libs/draco/README.md +2 -2
  8. package/examples/jsm/loaders/EXRLoader.js +283 -99
  9. package/examples/jsm/loaders/GLTFLoader.js +53 -0
  10. package/examples/jsm/loaders/KTX2Loader.js +3 -6
  11. package/examples/jsm/loaders/VRMLLoader.js +1 -1
  12. package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
  13. package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
  14. package/examples/jsm/math/Octree.js +26 -20
  15. package/examples/jsm/nodes/Nodes.js +4 -3
  16. package/examples/jsm/nodes/accessors/AccessorsUtils.js +16 -1
  17. package/examples/jsm/nodes/accessors/ClippingNode.js +3 -2
  18. package/examples/jsm/nodes/accessors/MaterialNode.js +107 -3
  19. package/examples/jsm/nodes/accessors/StorageBufferNode.js +9 -0
  20. package/examples/jsm/nodes/accessors/TextureNode.js +21 -3
  21. package/examples/jsm/nodes/accessors/TextureSizeNode.js +1 -1
  22. package/examples/jsm/nodes/code/FunctionNode.js +0 -8
  23. package/examples/jsm/nodes/core/Node.js +8 -0
  24. package/examples/jsm/nodes/core/NodeBuilder.js +5 -9
  25. package/examples/jsm/nodes/core/OutputStructNode.js +2 -1
  26. package/examples/jsm/nodes/core/PropertyNode.js +10 -0
  27. package/examples/jsm/nodes/display/BumpMapNode.js +7 -26
  28. package/examples/jsm/nodes/display/FrontFacingNode.js +13 -0
  29. package/examples/jsm/nodes/display/ViewportDepthNode.js +1 -1
  30. package/examples/jsm/nodes/display/ViewportNode.js +4 -2
  31. package/examples/jsm/nodes/display/ViewportTextureNode.js +4 -1
  32. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +26 -7
  33. package/examples/jsm/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  34. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -3
  35. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  36. package/examples/jsm/nodes/functions/PhongLightingModel.js +1 -1
  37. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +164 -10
  38. package/examples/jsm/nodes/functions/ShadowMaskModel.js +31 -0
  39. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +18 -4
  40. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -1
  41. package/examples/jsm/nodes/lighting/EnvironmentNode.js +11 -2
  42. package/examples/jsm/nodes/lighting/IrradianceNode.js +24 -0
  43. package/examples/jsm/nodes/lighting/LightsNode.js +11 -1
  44. package/examples/jsm/nodes/lighting/PointLightNode.js +2 -1
  45. package/examples/jsm/nodes/lighting/SpotLightNode.js +2 -1
  46. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +10 -6
  47. package/examples/jsm/nodes/materials/Materials.js +1 -0
  48. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -2
  49. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +2 -2
  50. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +76 -5
  51. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +11 -4
  52. package/examples/jsm/nodes/materials/NodeMaterial.js +31 -41
  53. package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +34 -0
  54. package/examples/jsm/nodes/pmrem/PMREMUtils.js +1 -1
  55. package/examples/jsm/nodes/shadernode/ShaderNode.js +2 -8
  56. package/examples/jsm/physics/JoltPhysics.js +281 -0
  57. package/examples/jsm/postprocessing/RenderTransitionPass.js +193 -0
  58. package/examples/jsm/renderers/common/Background.js +3 -3
  59. package/examples/jsm/renderers/common/ClippingContext.js +1 -1
  60. package/examples/jsm/renderers/common/RenderList.js +1 -1
  61. package/examples/jsm/renderers/common/RenderObject.js +43 -1
  62. package/examples/jsm/renderers/common/Renderer.js +129 -14
  63. package/examples/jsm/renderers/common/Textures.js +1 -1
  64. package/examples/jsm/renderers/common/extras/PMREMGenerator.js +13 -17
  65. package/examples/jsm/renderers/common/nodes/Nodes.js +31 -47
  66. package/examples/jsm/renderers/webgl/WebGLBackend.js +7 -21
  67. package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +5 -1
  68. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +6 -0
  69. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +21 -7
  70. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -21
  71. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +33 -45
  72. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +16 -1
  73. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +4 -1
  74. package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
  75. package/examples/jsm/transpiler/ShaderToyDecoder.js +1 -1
  76. package/examples/jsm/utils/SceneUtils.js +60 -1
  77. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  78. package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
  79. package/package.json +1 -1
  80. package/src/constants.js +1 -1
  81. package/src/core/RenderTarget.js +8 -0
  82. package/src/extras/PMREMGenerator.js +12 -11
  83. package/src/loaders/FileLoader.js +1 -1
  84. package/src/loaders/MaterialLoader.js +1 -0
  85. package/src/materials/Material.js +2 -0
  86. package/src/materials/MeshPhysicalMaterial.js +20 -0
  87. package/src/objects/BatchedMesh.js +23 -0
  88. package/src/objects/Line.js +66 -43
  89. package/src/renderers/WebGLRenderer.js +92 -61
  90. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  91. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
  92. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +17 -9
  93. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  94. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  95. package/src/renderers/shaders/ShaderChunk.js +0 -2
  96. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
  97. package/src/renderers/shaders/ShaderLib.js +1 -0
  98. package/src/renderers/webgl/WebGLBackground.js +18 -3
  99. package/src/renderers/webgl/WebGLBufferRenderer.js +36 -0
  100. package/src/renderers/webgl/WebGLCapabilities.js +33 -1
  101. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +36 -0
  102. package/src/renderers/webgl/WebGLMaterials.js +6 -0
  103. package/src/renderers/webgl/WebGLProgram.js +3 -5
  104. package/src/renderers/webgl/WebGLPrograms.js +5 -0
  105. package/src/renderers/webgl/WebGLRenderStates.js +6 -2
  106. package/src/renderers/webgl/WebGLShadowMap.js +25 -25
  107. package/src/renderers/webgl/WebGLTextures.js +68 -60
  108. package/src/renderers/webgl/WebGLUtils.js +3 -21
  109. package/src/renderers/webxr/WebXRManager.js +2 -4
  110. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -318
  111. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
  112. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -792
  113. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
  114. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
@@ -213,11 +213,12 @@ class CCDIKSolver {
213
213
  /**
214
214
  * Creates Helper
215
215
  *
216
+ * @param {number} sphereSize
216
217
  * @return {CCDIKHelper}
217
218
  */
218
- createHelper() {
219
+ createHelper( sphereSize ) {
219
220
 
220
- return new CCDIKHelper( this.mesh, this.iks );
221
+ return new CCDIKHelper( this.mesh, this.iks, sphereSize );
221
222
 
222
223
  }
223
224
 
@@ -280,6 +281,7 @@ function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv )
280
281
  *
281
282
  * @param {SkinnedMesh} mesh
282
283
  * @param {Array<Object>} iks
284
+ * @param {number} sphereSize
283
285
  */
284
286
  class CCDIKHelper extends Object3D {
285
287
 
@@ -26,6 +26,7 @@ import {
26
26
  Quaternion,
27
27
  } from 'three';
28
28
  import { decompress } from './../utils/TextureUtils.js';
29
+ import { REVISION } from '../../../src/constants.js';
29
30
 
30
31
 
31
32
  /**
@@ -111,6 +112,12 @@ class GLTFExporter {
111
112
 
112
113
  } );
113
114
 
115
+ this.register( function ( writer ) {
116
+
117
+ return new GLTFMaterialsDispersionExtension( writer );
118
+
119
+ } );
120
+
114
121
  this.register( function ( writer ) {
115
122
 
116
123
  return new GLTFMaterialsIridescenceExtension( writer );
@@ -496,7 +503,7 @@ class GLTFWriter {
496
503
  this.json = {
497
504
  asset: {
498
505
  version: '2.0',
499
- generator: 'THREE.GLTFExporter'
506
+ generator: 'THREE.GLTFExporter r' + REVISION
500
507
  }
501
508
  };
502
509
 
@@ -2633,6 +2640,9 @@ class GLTFMaterialsClearcoatExtension {
2633
2640
  index: writer.processTexture( material.clearcoatNormalMap ),
2634
2641
  texCoord: material.clearcoatNormalMap.channel
2635
2642
  };
2643
+
2644
+ if ( material.clearcoatNormalScale.x !== 1 ) clearcoatNormalMapDef.scale = material.clearcoatNormalScale.x;
2645
+
2636
2646
  writer.applyTextureTransform( clearcoatNormalMapDef, material.clearcoatNormalMap );
2637
2647
  extensionDef.clearcoatNormalTexture = clearcoatNormalMapDef;
2638
2648
 
@@ -2648,6 +2658,40 @@ class GLTFMaterialsClearcoatExtension {
2648
2658
 
2649
2659
  }
2650
2660
 
2661
+ /**
2662
+ * Materials dispersion Extension
2663
+ *
2664
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_dispersion
2665
+ */
2666
+ class GLTFMaterialsDispersionExtension {
2667
+
2668
+ constructor( writer ) {
2669
+
2670
+ this.writer = writer;
2671
+ this.name = 'KHR_materials_dispersion';
2672
+
2673
+ }
2674
+
2675
+ writeMaterial( material, materialDef ) {
2676
+
2677
+ if ( ! material.isMeshPhysicalMaterial || material.dispersion === 0 ) return;
2678
+
2679
+ const writer = this.writer;
2680
+ const extensionsUsed = writer.extensionsUsed;
2681
+
2682
+ const extensionDef = {};
2683
+
2684
+ extensionDef.dispersion = material.dispersion;
2685
+
2686
+ materialDef.extensions = materialDef.extensions || {};
2687
+ materialDef.extensions[ this.name ] = extensionDef;
2688
+
2689
+ extensionsUsed[ this.name ] = true;
2690
+
2691
+ }
2692
+
2693
+ }
2694
+
2651
2695
  /**
2652
2696
  * Iridescence Materials Extension
2653
2697
  *
@@ -12,7 +12,13 @@ import { decompress } from './../utils/TextureUtils.js';
12
12
 
13
13
  class USDZExporter {
14
14
 
15
- async parse( scene, options = {} ) {
15
+ parse( scene, onDone, onError, options ) {
16
+
17
+ this.parseAsync( scene, options ).then( onDone ).catch( onError );
18
+
19
+ }
20
+
21
+ async parseAsync( scene, options = {} ) {
16
22
 
17
23
  options = Object.assign( {
18
24
  ar: {
@@ -17,10 +17,10 @@ Each file is provided in two variations:
17
17
  * **Default:** Latest stable builds, tracking the project's [master branch](https://github.com/google/draco).
18
18
  * **glTF:** Builds targeted by the [glTF mesh compression extension](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression), tracking the [corresponding Draco branch](https://github.com/google/draco/tree/gltf_2.0_draco_extension).
19
19
 
20
- Either variation may be used with `THREE.DRACOLoader`:
20
+ Either variation may be used with `DRACOLoader`:
21
21
 
22
22
  ```js
23
- var dracoLoader = new THREE.DRACOLoader();
23
+ var dracoLoader = new DRACOLoader();
24
24
  dracoLoader.setDecoderPath('path/to/decoders/');
25
25
  dracoLoader.setDecoderConfig({type: 'js'}); // (Optional) Override detection of WASM support.
26
26
  ```