super-three 0.136.0 → 0.136.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 (125) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.js +1634 -1608
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +4630 -4534
  5. package/examples/js/animation/MMDPhysics.js +1 -1
  6. package/examples/js/cameras/CinematicCamera.js +2 -7
  7. package/examples/js/exporters/MMDExporter.js +1 -1
  8. package/examples/js/geometries/ConvexGeometry.js +1 -1
  9. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  10. package/examples/js/loaders/EXRLoader.js +25 -19
  11. package/examples/js/loaders/GLTFLoader.js +2 -2
  12. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -2
  13. package/examples/js/loaders/LDrawLoader.js +1131 -859
  14. package/examples/js/loaders/LUT3dlLoader.js +17 -10
  15. package/examples/js/loaders/LUTCubeLoader.js +3 -4
  16. package/examples/js/loaders/RGBELoader.js +6 -6
  17. package/examples/js/loaders/RGBMLoader.js +1 -1
  18. package/examples/js/loaders/SVGLoader.js +3 -1
  19. package/examples/js/loaders/VRMLLoader.js +9 -21
  20. package/examples/js/math/ConvexHull.js +7 -13
  21. package/examples/js/misc/Volume.js +2 -2
  22. package/examples/js/modifiers/CurveModifier.js +8 -7
  23. package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
  24. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  25. package/examples/js/objects/Reflector.js +1 -13
  26. package/examples/js/objects/ReflectorForSSRPass.js +0 -10
  27. package/examples/js/objects/Refractor.js +1 -13
  28. package/examples/js/objects/Water.js +1 -13
  29. package/examples/js/postprocessing/GlitchPass.js +4 -5
  30. package/examples/js/postprocessing/SMAAPass.js +2 -9
  31. package/examples/js/postprocessing/SSAOPass.js +9 -21
  32. package/examples/js/postprocessing/SavePass.js +1 -5
  33. package/examples/js/shaders/DigitalGlitch.js +3 -3
  34. package/examples/js/shaders/MMDToonShader.js +0 -1
  35. package/examples/js/shaders/SSAOShader.js +1 -1
  36. package/examples/jsm/animation/MMDPhysics.js +1 -1
  37. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  38. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  39. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
  40. package/examples/jsm/exporters/GLTFExporter.js +8 -24
  41. package/examples/jsm/exporters/MMDExporter.js +1 -1
  42. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  43. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  44. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  45. package/examples/jsm/loaders/EXRLoader.js +22 -19
  46. package/examples/jsm/loaders/GLTFLoader.js +1 -3
  47. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -4
  48. package/examples/jsm/loaders/LDrawLoader.js +1147 -885
  49. package/examples/jsm/loaders/LUT3dlLoader.js +17 -12
  50. package/examples/jsm/loaders/LUTCubeLoader.js +3 -5
  51. package/examples/jsm/loaders/RGBELoader.js +7 -8
  52. package/examples/jsm/loaders/RGBMLoader.js +1 -1
  53. package/examples/jsm/loaders/SVGLoader.js +6 -1
  54. package/examples/jsm/loaders/VRMLLoader.js +9 -22
  55. package/examples/jsm/math/ConvexHull.js +7 -13
  56. package/examples/jsm/misc/Volume.js +2 -2
  57. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  58. package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
  59. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  60. package/examples/jsm/node-editor/NodeEditor.js +21 -22
  61. package/examples/jsm/nodes/utils/ColorSpaceNode.js +4 -13
  62. package/examples/jsm/objects/Lensflare.js +4 -4
  63. package/examples/jsm/objects/Reflector.js +1 -16
  64. package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
  65. package/examples/jsm/objects/Refractor.js +1 -16
  66. package/examples/jsm/objects/Water.js +1 -16
  67. package/examples/jsm/postprocessing/GlitchPass.js +7 -6
  68. package/examples/jsm/postprocessing/SMAAPass.js +2 -11
  69. package/examples/jsm/postprocessing/SSAOPass.js +13 -25
  70. package/examples/jsm/postprocessing/SavePass.js +1 -3
  71. package/examples/jsm/renderers/nodes/Nodes.js +2 -0
  72. package/examples/jsm/renderers/nodes/ShaderNode.js +58 -31
  73. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +9 -46
  74. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +5 -10
  75. package/examples/jsm/renderers/nodes/math/MathNode.js +2 -1
  76. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  77. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +3 -5
  78. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +1 -2
  79. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +10 -4
  80. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  81. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  82. package/examples/jsm/shaders/SSAOShader.js +1 -1
  83. package/examples/jsm/utils/LDrawUtils.js +195 -0
  84. package/examples/jsm/webxr/VRButton.js +24 -0
  85. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  86. package/package.json +4 -1
  87. package/src/animation/AnimationMixer.js +1 -0
  88. package/src/cameras/CubeCamera.js +2 -0
  89. package/src/constants.js +3 -16
  90. package/src/extras/ImageUtils.js +63 -0
  91. package/src/extras/PMREMGenerator.js +32 -82
  92. package/src/loaders/MaterialLoader.js +1 -1
  93. package/src/materials/Material.js +4 -4
  94. package/src/math/Color.js +1 -1
  95. package/src/math/Quaternion.js +1 -1
  96. package/src/renderers/WebGLCubeRenderTarget.js +0 -2
  97. package/src/renderers/WebGLRenderer.js +1 -67
  98. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  99. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -4
  100. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  101. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  102. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  103. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +2 -2
  104. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  105. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  106. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +8 -7
  107. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
  108. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  109. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
  110. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
  111. package/src/renderers/shaders/ShaderLib.js +2 -2
  112. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  113. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  114. package/src/renderers/webgl/WebGLMorphtargets.js +12 -0
  115. package/src/renderers/webgl/WebGLProgram.js +4 -16
  116. package/src/renderers/webgl/WebGLPrograms.js +8 -47
  117. package/src/renderers/webgl/WebGLState.js +81 -0
  118. package/src/renderers/webgl/WebGLTextures.js +75 -22
  119. package/src/renderers/webgl/WebGLUtils.js +86 -28
  120. package/src/renderers/webxr/WebXRManager.js +3 -3
  121. package/src/textures/Texture.js +2 -1
  122. package/src/textures/VideoTexture.js +1 -3
  123. package/examples/js/WebGL.js +0 -90
  124. package/examples/js/utils/RoughnessMipmapper.js +0 -268
  125. package/examples/jsm/utils/RoughnessMipmapper.js +0 -288
@@ -1,288 +0,0 @@
1
- /**
2
- * This class generates custom mipmaps for a roughness map by encoding the lost variation in the
3
- * normal map mip levels as increased roughness in the corresponding roughness mip levels. This
4
- * helps with rendering accuracy for MeshStandardMaterial, and also helps with anti-aliasing when
5
- * using PMREM. If the normal map is larger than the roughness map, the roughness map will be
6
- * enlarged to match the dimensions of the normal map.
7
- */
8
-
9
- import {
10
- MathUtils,
11
- Mesh,
12
- NoBlending,
13
- OrthographicCamera,
14
- PlaneGeometry,
15
- RawShaderMaterial,
16
- Vector2,
17
- WebGLRenderTarget,
18
- FramebufferTexture
19
- } from 'three';
20
-
21
- const _mipmapMaterial = _getMipmapMaterial();
22
-
23
- const _mesh = new Mesh( new PlaneGeometry( 2, 2 ), _mipmapMaterial );
24
-
25
- const _flatCamera = new OrthographicCamera( 0, 1, 0, 1, 0, 1 );
26
-
27
- let _tempTarget = null;
28
-
29
- let _renderer = null;
30
-
31
- class RoughnessMipmapper {
32
-
33
- constructor( renderer ) {
34
-
35
- _renderer = renderer;
36
-
37
- _renderer.compile( _mesh, _flatCamera );
38
-
39
- }
40
-
41
- generateMipmaps( material ) {
42
-
43
- if ( 'roughnessMap' in material === false ) return;
44
-
45
- const { roughnessMap, normalMap } = material;
46
-
47
- if ( roughnessMap === null || normalMap === null || ! roughnessMap.generateMipmaps || material.userData.roughnessUpdated ) return;
48
-
49
- material.userData.roughnessUpdated = true;
50
-
51
- let width = Math.max( roughnessMap.image.width, normalMap.image.width );
52
- let height = Math.max( roughnessMap.image.height, normalMap.image.height );
53
-
54
- if ( ! MathUtils.isPowerOfTwo( width ) || ! MathUtils.isPowerOfTwo( height ) ) return;
55
-
56
- const oldTarget = _renderer.getRenderTarget();
57
-
58
- const autoClear = _renderer.autoClear;
59
-
60
- _renderer.autoClear = false;
61
-
62
- if ( _tempTarget === null || _tempTarget.width !== width || _tempTarget.height !== height ) {
63
-
64
- if ( _tempTarget !== null ) _tempTarget.dispose();
65
-
66
- _tempTarget = new WebGLRenderTarget( width, height, { depthBuffer: false } );
67
-
68
- _tempTarget.scissorTest = true;
69
-
70
- }
71
-
72
- const newRoughnessTexture = new FramebufferTexture( width, height, roughnessMap.format );
73
- newRoughnessTexture.wrapS = roughnessMap.wrapS;
74
- newRoughnessTexture.wrapT = roughnessMap.wrapT;
75
- newRoughnessTexture.minFilter = roughnessMap.minFilter;
76
- newRoughnessTexture.magFilter = roughnessMap.magFilter;
77
-
78
- material.roughnessMap = newRoughnessTexture;
79
-
80
- if ( material.metalnessMap == roughnessMap ) material.metalnessMap = material.roughnessMap;
81
-
82
- if ( material.aoMap == roughnessMap ) material.aoMap = material.roughnessMap;
83
-
84
- // Copy UV transform parameters
85
-
86
- material.roughnessMap.offset.copy( roughnessMap.offset );
87
- material.roughnessMap.repeat.copy( roughnessMap.repeat );
88
- material.roughnessMap.center.copy( roughnessMap.center );
89
- material.roughnessMap.rotation = roughnessMap.rotation;
90
- material.roughnessMap.image = roughnessMap.image; // required for USDZExporter, see #22741
91
-
92
- material.roughnessMap.matrixAutoUpdate = roughnessMap.matrixAutoUpdate;
93
- material.roughnessMap.matrix.copy( roughnessMap.matrix );
94
-
95
- _mipmapMaterial.uniforms.roughnessMap.value = roughnessMap;
96
-
97
- _mipmapMaterial.uniforms.normalMap.value = normalMap;
98
-
99
- const position = new Vector2( 0, 0 );
100
-
101
- const texelSize = _mipmapMaterial.uniforms.texelSize.value;
102
-
103
- for ( let mip = 0; width >= 1 && height >= 1; ++ mip, width /= 2, height /= 2 ) {
104
-
105
- // Rendering to a mip level is not allowed in webGL1. Instead we must set
106
- // up a secondary texture to write the result to, then copy it back to the
107
- // proper mipmap level.
108
-
109
- texelSize.set( 1.0 / width, 1.0 / height );
110
-
111
- if ( mip == 0 ) texelSize.set( 0.0, 0.0 );
112
-
113
- _tempTarget.viewport.set( position.x, position.y, width, height );
114
-
115
- _tempTarget.scissor.set( position.x, position.y, width, height );
116
-
117
- _renderer.setRenderTarget( _tempTarget );
118
-
119
- _renderer.render( _mesh, _flatCamera );
120
-
121
- _renderer.copyFramebufferToTexture( position, material.roughnessMap, mip );
122
-
123
- _mipmapMaterial.uniforms.roughnessMap.value = material.roughnessMap;
124
-
125
- }
126
-
127
- roughnessMap.dispose();
128
-
129
- _renderer.setRenderTarget( oldTarget );
130
-
131
- _renderer.autoClear = autoClear;
132
-
133
- }
134
-
135
- dispose() {
136
-
137
- _mipmapMaterial.dispose();
138
-
139
- _mesh.geometry.dispose();
140
-
141
- if ( _tempTarget != null ) _tempTarget.dispose();
142
-
143
- }
144
-
145
- }
146
-
147
- function _getMipmapMaterial() {
148
-
149
- const shaderMaterial = new RawShaderMaterial( {
150
-
151
- uniforms: {
152
- roughnessMap: { value: null },
153
- normalMap: { value: null },
154
- texelSize: { value: new Vector2( 1, 1 ) }
155
- },
156
-
157
- vertexShader: /* glsl */`
158
- precision mediump float;
159
- precision mediump int;
160
-
161
- attribute vec3 position;
162
- attribute vec2 uv;
163
-
164
- varying vec2 vUv;
165
-
166
- void main() {
167
-
168
- vUv = uv;
169
-
170
- gl_Position = vec4( position, 1.0 );
171
-
172
- }
173
- `,
174
-
175
- fragmentShader: /* glsl */`
176
- precision mediump float;
177
- precision mediump int;
178
-
179
- varying vec2 vUv;
180
-
181
- uniform sampler2D roughnessMap;
182
- uniform sampler2D normalMap;
183
- uniform vec2 texelSize;
184
-
185
- #define ENVMAP_TYPE_CUBE_UV
186
-
187
- vec4 envMapTexelToLinear( vec4 a ) { return a; }
188
-
189
- #include <cube_uv_reflection_fragment>
190
-
191
- float roughnessToVariance( float roughness ) {
192
-
193
- float variance = 0.0;
194
-
195
- if ( roughness >= r1 ) {
196
-
197
- variance = ( r0 - roughness ) * ( v1 - v0 ) / ( r0 - r1 ) + v0;
198
-
199
- } else if ( roughness >= r4 ) {
200
-
201
- variance = ( r1 - roughness ) * ( v4 - v1 ) / ( r1 - r4 ) + v1;
202
-
203
- } else if ( roughness >= r5 ) {
204
-
205
- variance = ( r4 - roughness ) * ( v5 - v4 ) / ( r4 - r5 ) + v4;
206
-
207
- } else {
208
-
209
- float roughness2 = roughness * roughness;
210
-
211
- variance = 1.79 * roughness2 * roughness2;
212
-
213
- }
214
-
215
- return variance;
216
-
217
- }
218
-
219
- float varianceToRoughness( float variance ) {
220
-
221
- float roughness = 0.0;
222
-
223
- if ( variance >= v1 ) {
224
-
225
- roughness = ( v0 - variance ) * ( r1 - r0 ) / ( v0 - v1 ) + r0;
226
-
227
- } else if ( variance >= v4 ) {
228
-
229
- roughness = ( v1 - variance ) * ( r4 - r1 ) / ( v1 - v4 ) + r1;
230
-
231
- } else if ( variance >= v5 ) {
232
-
233
- roughness = ( v4 - variance ) * ( r5 - r4 ) / ( v4 - v5 ) + r4;
234
-
235
- } else {
236
-
237
- roughness = pow( 0.559 * variance, 0.25 ); // 0.559 = 1.0 / 1.79
238
-
239
- }
240
-
241
- return roughness;
242
-
243
- }
244
-
245
- void main() {
246
-
247
- gl_FragColor = texture2D( roughnessMap, vUv, - 1.0 );
248
-
249
- if ( texelSize.x == 0.0 ) return;
250
-
251
- float roughness = gl_FragColor.g;
252
-
253
- float variance = roughnessToVariance( roughness );
254
-
255
- vec3 avgNormal;
256
-
257
- for ( float x = - 1.0; x < 2.0; x += 2.0 ) {
258
-
259
- for ( float y = - 1.0; y < 2.0; y += 2.0 ) {
260
-
261
- vec2 uv = vUv + vec2( x, y ) * 0.25 * texelSize;
262
-
263
- avgNormal += normalize( texture2D( normalMap, uv, - 1.0 ).xyz - 0.5 );
264
-
265
- }
266
-
267
- }
268
-
269
- variance += 1.0 - 0.25 * length( avgNormal );
270
-
271
- gl_FragColor.g = varianceToRoughness( variance );
272
-
273
- }
274
- `,
275
-
276
- blending: NoBlending,
277
- depthTest: false,
278
- depthWrite: false
279
-
280
- } );
281
-
282
- shaderMaterial.type = 'RoughnessMipmapper';
283
-
284
- return shaderMaterial;
285
-
286
- }
287
-
288
- export { RoughnessMipmapper };