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,11 +1,11 @@
1
1
  // http://download.autodesk.com/us/systemdocs/help/2011/lustre/index.html?url=./files/WSc4e151a45a3b785a24c3d9a411df9298473-7ffd.htm,topicNumber=d0e9492
2
-
2
+ // https://community.foundry.com/discuss/topic/103636/format-spec-for-3dl?mode=Post&postID=895258
3
3
  import {
4
4
  Loader,
5
5
  FileLoader,
6
6
  DataTexture,
7
7
  DataTexture3D,
8
- RGBFormat,
8
+ RGBAFormat,
9
9
  UnsignedByteType,
10
10
  ClampToEdgeWrapping,
11
11
  LinearFilter,
@@ -69,7 +69,7 @@ export class LUT3dlLoader extends Loader {
69
69
 
70
70
  }
71
71
 
72
- const dataArray = new Array( size * size * size * 3 );
72
+ const dataArray = new Array( size * size * size * 4 );
73
73
  let index = 0;
74
74
  let maxOutputValue = 0.0;
75
75
  for ( let i = 1, l = lines.length; i < l; i ++ ) {
@@ -88,21 +88,26 @@ export class LUT3dlLoader extends Loader {
88
88
 
89
89
  // b grows first, then g, then r
90
90
  const pixelIndex = bLayer * size * size + gLayer * size + rLayer;
91
- dataArray[ 3 * pixelIndex + 0 ] = r;
92
- dataArray[ 3 * pixelIndex + 1 ] = g;
93
- dataArray[ 3 * pixelIndex + 2 ] = b;
91
+ dataArray[ 4 * pixelIndex + 0 ] = r;
92
+ dataArray[ 4 * pixelIndex + 1 ] = g;
93
+ dataArray[ 4 * pixelIndex + 2 ] = b;
94
+ dataArray[ 4 * pixelIndex + 3 ] = 1.0;
94
95
  index += 1;
95
96
 
96
97
  }
97
98
 
98
- // Find the apparent bit depth of the stored RGB values and scale the
99
+ // Find the apparent bit depth of the stored RGB values and map the
99
100
  // values to [ 0, 255 ].
100
101
  const bits = Math.ceil( Math.log2( maxOutputValue ) );
101
102
  const maxBitValue = Math.pow( 2.0, bits );
102
- for ( let i = 0, l = dataArray.length; i < l; i ++ ) {
103
+ for ( let i = 0, l = dataArray.length; i < l; i += 4 ) {
103
104
 
104
- const val = dataArray[ i ];
105
- dataArray[ i ] = 255 * val / maxBitValue;
105
+ const r = dataArray[ i + 0 ];
106
+ const g = dataArray[ i + 1 ];
107
+ const b = dataArray[ i + 2 ];
108
+ dataArray[ i + 0 ] = 255 * r / maxBitValue; // r
109
+ dataArray[ i + 1 ] = 255 * g / maxBitValue; // g
110
+ dataArray[ i + 2 ] = 255 * b / maxBitValue; // b
106
111
 
107
112
  }
108
113
 
@@ -111,7 +116,7 @@ export class LUT3dlLoader extends Loader {
111
116
  texture.image.data = data;
112
117
  texture.image.width = size;
113
118
  texture.image.height = size * size;
114
- texture.format = RGBFormat;
119
+ texture.format = RGBAFormat;
115
120
  texture.type = UnsignedByteType;
116
121
  texture.magFilter = LinearFilter;
117
122
  texture.minFilter = LinearFilter;
@@ -125,7 +130,7 @@ export class LUT3dlLoader extends Loader {
125
130
  texture3D.image.width = size;
126
131
  texture3D.image.height = size;
127
132
  texture3D.image.depth = size;
128
- texture3D.format = RGBFormat;
133
+ texture3D.format = RGBAFormat;
129
134
  texture3D.type = UnsignedByteType;
130
135
  texture3D.magFilter = LinearFilter;
131
136
  texture3D.minFilter = LinearFilter;
@@ -6,7 +6,6 @@ import {
6
6
  Vector3,
7
7
  DataTexture,
8
8
  DataTexture3D,
9
- RGBFormat,
10
9
  UnsignedByteType,
11
10
  ClampToEdgeWrapping,
12
11
  LinearFilter,
@@ -77,7 +76,7 @@ export class LUTCubeLoader extends Loader {
77
76
  // more precision than can be captured with Uint8Array.
78
77
  const sizeToken = split[ 1 ];
79
78
  size = parseFloat( sizeToken );
80
- data = new Uint8Array( size * size * size * 3 );
79
+ data = new Uint8Array( size * size * size * 4 );
81
80
  break;
82
81
  case 'DOMAIN_MIN':
83
82
  domainMin.x = parseFloat( split[ 1 ] );
@@ -107,7 +106,8 @@ export class LUTCubeLoader extends Loader {
107
106
  data[ currIndex + 0 ] = r * 255;
108
107
  data[ currIndex + 1 ] = g * 255;
109
108
  data[ currIndex + 2 ] = b * 255;
110
- currIndex += 3;
109
+ data[ currIndex + 3 ] = 255;
110
+ currIndex += 4;
111
111
 
112
112
  }
113
113
 
@@ -117,7 +117,6 @@ export class LUTCubeLoader extends Loader {
117
117
  texture.image.data = data;
118
118
  texture.image.width = size;
119
119
  texture.image.height = size * size;
120
- texture.format = RGBFormat;
121
120
  texture.type = UnsignedByteType;
122
121
  texture.magFilter = LinearFilter;
123
122
  texture.minFilter = LinearFilter;
@@ -131,7 +130,6 @@ export class LUTCubeLoader extends Loader {
131
130
  texture3D.image.width = size;
132
131
  texture3D.image.height = size;
133
132
  texture3D.image.depth = size;
134
- texture3D.format = RGBFormat;
135
133
  texture3D.type = UnsignedByteType;
136
134
  texture3D.magFilter = LinearFilter;
137
135
  texture3D.minFilter = LinearFilter;
@@ -4,8 +4,7 @@ import {
4
4
  FloatType,
5
5
  HalfFloatType,
6
6
  LinearEncoding,
7
- LinearFilter,
8
- RGBFormat,
7
+ LinearFilter
9
8
  } from 'three';
10
9
 
11
10
  // https://github.com/mrdoob/three.js/issues/5552
@@ -342,6 +341,7 @@ class RGBELoader extends DataTextureLoader {
342
341
  destArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale;
343
342
  destArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale;
344
343
  destArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale;
344
+ destArray[ destOffset + 3 ] = 1;
345
345
 
346
346
  };
347
347
 
@@ -354,6 +354,7 @@ class RGBELoader extends DataTextureLoader {
354
354
  destArray[ destOffset + 0 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) );
355
355
  destArray[ destOffset + 1 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) );
356
356
  destArray[ destOffset + 2 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) );
357
+ destArray[ destOffset + 3 ] = DataUtils.toHalfFloat( 1 );
357
358
 
358
359
  };
359
360
 
@@ -377,32 +378,30 @@ class RGBELoader extends DataTextureLoader {
377
378
  case FloatType:
378
379
 
379
380
  numElements = image_rgba_data.length / 4;
380
- const floatArray = new Float32Array( numElements * 3 );
381
+ const floatArray = new Float32Array( numElements * 4 );
381
382
 
382
383
  for ( let j = 0; j < numElements; j ++ ) {
383
384
 
384
- RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 3 );
385
+ RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );
385
386
 
386
387
  }
387
388
 
388
389
  data = floatArray;
389
- format = RGBFormat;
390
390
  type = FloatType;
391
391
  break;
392
392
 
393
393
  case HalfFloatType:
394
394
 
395
395
  numElements = image_rgba_data.length / 4;
396
- const halfArray = new Uint16Array( numElements * 3 );
396
+ const halfArray = new Uint16Array( numElements * 4 );
397
397
 
398
398
  for ( let j = 0; j < numElements; j ++ ) {
399
399
 
400
- RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 3 );
400
+ RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );
401
401
 
402
402
  }
403
403
 
404
404
  data = halfArray;
405
- format = RGBFormat;
406
405
  type = HalfFloatType;
407
406
  break;
408
407
 
@@ -328,7 +328,7 @@ UPNG.decode = function ( buff ) {
328
328
  var fd, foff = 0; // frames
329
329
 
330
330
  var mgck = [ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a ];
331
- for ( var i = 0; i < 8; i ++ ) if ( data[ i ] != mgck[ i ] ) throw 'The input is not a PNG file!';
331
+ for ( var i = 0; i < 8; i ++ ) if ( data[ i ] != mgck[ i ] ) throw new Error( 'The input is not a PNG file!' );
332
332
 
333
333
  while ( offset < data.length ) {
334
334
 
@@ -659,9 +659,14 @@ class SVGLoader extends Loader {
659
659
 
660
660
  for ( let j = 0; j < selectorList.length; j ++ ) {
661
661
 
662
+ // Remove empty rules
663
+ const definitions = Object.fromEntries(
664
+ Object.entries( stylesheet.style ).filter( ( [ , v ] ) => v !== '' )
665
+ );
666
+
662
667
  stylesheets[ selectorList[ j ] ] = Object.assign(
663
668
  stylesheets[ selectorList[ j ] ] || {},
664
- stylesheet.style
669
+ definitions
665
670
  );
666
671
 
667
672
  }
@@ -25,7 +25,6 @@ import {
25
25
  PointsMaterial,
26
26
  Quaternion,
27
27
  RGBAFormat,
28
- RGBFormat,
29
28
  RepeatWrapping,
30
29
  Scene,
31
30
  ShapeUtils,
@@ -1265,6 +1264,7 @@ class VRMLLoader extends Loader {
1265
1264
  color.r = value;
1266
1265
  color.g = value;
1267
1266
  color.b = value;
1267
+ color.a = 1;
1268
1268
  break;
1269
1269
 
1270
1270
  case TEXTURE_TYPE.INTENSITY_ALPHA:
@@ -1281,6 +1281,7 @@ class VRMLLoader extends Loader {
1281
1281
  color.r = parseInt( '0x' + hex.substring( 2, 4 ) );
1282
1282
  color.g = parseInt( '0x' + hex.substring( 4, 6 ) );
1283
1283
  color.b = parseInt( '0x' + hex.substring( 6, 8 ) );
1284
+ color.a = 1;
1284
1285
  break;
1285
1286
 
1286
1287
  case TEXTURE_TYPE.RGBA:
@@ -1348,11 +1349,9 @@ class VRMLLoader extends Loader {
1348
1349
  const height = fieldValues[ 1 ];
1349
1350
  const num_components = fieldValues[ 2 ];
1350
1351
 
1351
- const useAlpha = ( num_components === 2 || num_components === 4 );
1352
1352
  const textureType = getTextureType( num_components );
1353
1353
 
1354
- const size = ( ( useAlpha === true ) ? 4 : 3 ) * ( width * height );
1355
- const data = new Uint8Array( size );
1354
+ const data = new Uint8Array( 4 * width * height );
1356
1355
 
1357
1356
  const color = { r: 0, g: 0, b: 0, a: 0 };
1358
1357
 
@@ -1360,28 +1359,16 @@ class VRMLLoader extends Loader {
1360
1359
 
1361
1360
  parseHexColor( fieldValues[ j ], textureType, color );
1362
1361
 
1363
- if ( useAlpha === true ) {
1362
+ const stride = k * 4;
1364
1363
 
1365
- const stride = k * 4;
1366
-
1367
- data[ stride + 0 ] = color.r;
1368
- data[ stride + 1 ] = color.g;
1369
- data[ stride + 2 ] = color.b;
1370
- data[ stride + 3 ] = color.a;
1371
-
1372
- } else {
1373
-
1374
- const stride = k * 3;
1375
-
1376
- data[ stride + 0 ] = color.r;
1377
- data[ stride + 1 ] = color.g;
1378
- data[ stride + 2 ] = color.b;
1379
-
1380
- }
1364
+ data[ stride + 0 ] = color.r;
1365
+ data[ stride + 1 ] = color.g;
1366
+ data[ stride + 2 ] = color.b;
1367
+ data[ stride + 3 ] = color.a;
1381
1368
 
1382
1369
  }
1383
1370
 
1384
- texture = new DataTexture( data, width, height, ( useAlpha === true ) ? RGBAFormat : RGBFormat );
1371
+ texture = new DataTexture( data, width, height );
1385
1372
  texture.needsUpdate = true;
1386
1373
  texture.__type = textureType; // needed for material modifications
1387
1374
  break;
@@ -46,28 +46,22 @@ class ConvexHull {
46
46
 
47
47
  setFromPoints( points ) {
48
48
 
49
- if ( Array.isArray( points ) !== true ) {
49
+ // The algorithm needs at least four points.
50
50
 
51
- console.error( 'THREE.ConvexHull: Points parameter is not an array.' );
51
+ if ( points.length >= 4 ) {
52
52
 
53
- }
54
-
55
- if ( points.length < 4 ) {
56
-
57
- console.error( 'THREE.ConvexHull: The algorithm needs at least four points.' );
53
+ this.makeEmpty();
58
54
 
59
- }
55
+ for ( let i = 0, l = points.length; i < l; i ++ ) {
60
56
 
61
- this.makeEmpty();
57
+ this.vertices.push( new VertexNode( points[ i ] ) );
62
58
 
63
- for ( let i = 0, l = points.length; i < l; i ++ ) {
59
+ }
64
60
 
65
- this.vertices.push( new VertexNode( points[ i ] ) );
61
+ this.compute();
66
62
 
67
63
  }
68
64
 
69
- this.compute();
70
-
71
65
  return this;
72
66
 
73
67
  }
@@ -99,7 +99,7 @@ function Volume( xLength, yLength, zLength, type, arrayBuffer ) {
99
99
  case 'unsigned long long int' :
100
100
  case 'uint64' :
101
101
  case 'uint64_t' :
102
- throw 'Error in Volume constructor : this type is not supported in JavaScript';
102
+ throw new Error( 'Error in Volume constructor : this type is not supported in JavaScript' );
103
103
  break;
104
104
  case 'Float32' :
105
105
  case 'float32' :
@@ -118,7 +118,7 @@ function Volume( xLength, yLength, zLength, type, arrayBuffer ) {
118
118
 
119
119
  if ( this.data.length !== this.xLength * this.yLength * this.zLength ) {
120
120
 
121
- throw 'Error in Volume constructor, lengths are not matching arrayBuffer size';
121
+ throw new Error( 'Error in Volume constructor, lengths are not matching arrayBuffer size' );
122
122
 
123
123
  }
124
124
 
@@ -1,11 +1,11 @@
1
1
  // Original src: https://github.com/zz85/threejs-path-flow
2
- const BITS = 3;
2
+ const CHANNELS = 4;
3
3
  const TEXTURE_WIDTH = 1024;
4
4
  const TEXTURE_HEIGHT = 4;
5
5
 
6
6
  import {
7
7
  DataTexture,
8
- RGBFormat,
8
+ RGBAFormat,
9
9
  FloatType,
10
10
  RepeatWrapping,
11
11
  Mesh,
@@ -22,12 +22,12 @@ import {
22
22
  */
23
23
  export function initSplineTexture( numberOfCurves = 1 ) {
24
24
 
25
- const dataArray = new Float32Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * BITS );
25
+ const dataArray = new Float32Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * CHANNELS );
26
26
  const dataTexture = new DataTexture(
27
27
  dataArray,
28
28
  TEXTURE_WIDTH,
29
29
  TEXTURE_HEIGHT * numberOfCurves,
30
- RGBFormat,
30
+ RGBAFormat,
31
31
  FloatType
32
32
  );
33
33
 
@@ -80,10 +80,11 @@ function setTextureValue( texture, index, x, y, z, o ) {
80
80
 
81
81
  const image = texture.image;
82
82
  const { data } = image;
83
- const i = BITS * TEXTURE_WIDTH * o; // Row Offset
84
- data[ index * BITS + i + 0 ] = x;
85
- data[ index * BITS + i + 1 ] = y;
86
- data[ index * BITS + i + 2 ] = z;
83
+ const i = CHANNELS * TEXTURE_WIDTH * o; // Row Offset
84
+ data[ index * CHANNELS + i + 0 ] = x;
85
+ data[ index * CHANNELS + i + 1 ] = y;
86
+ data[ index * CHANNELS + i + 2 ] = z;
87
+ data[ index * CHANNELS + i + 3 ] = 1;
87
88
 
88
89
  }
89
90
 
@@ -183,7 +183,7 @@ class EdgeSplitModifier {
183
183
 
184
184
  if ( BufferGeometryUtils === undefined ) {
185
185
 
186
- throw 'THREE.EdgeSplitModifier relies on BufferGeometryUtils';
186
+ throw new Error( 'THREE.EdgeSplitModifier relies on BufferGeometryUtils' );
187
187
 
188
188
  }
189
189
 
@@ -21,7 +21,7 @@ class SimplifyModifier {
21
21
 
22
22
  if ( BufferGeometryUtils === undefined ) {
23
23
 
24
- throw 'THREE.SimplifyModifier relies on BufferGeometryUtils';
24
+ throw new Error( 'THREE.SimplifyModifier relies on BufferGeometryUtils' );
25
25
 
26
26
  }
27
27
 
@@ -20,31 +20,30 @@ import { NormalEditor } from './accessors/NormalEditor.js';
20
20
  import { TimerEditor } from './utils/TimerEditor.js';
21
21
  import { OscillatorEditor } from './utils/OscillatorEditor.js';
22
22
  import { CheckerEditor } from './procedural/CheckerEditor.js';
23
-
24
23
  import { EventDispatcher } from 'three';
25
24
 
26
25
  export const ClassLib = {
27
- StandardMaterialEditor,
28
- OperatorEditor,
29
- NormalizeEditor,
30
- InvertEditor,
31
- LimiterEditor,
32
- DotEditor,
33
- PowerEditor,
34
- TrigonometryEditor,
35
- FloatEditor,
36
- Vector2Editor,
37
- Vector3Editor,
38
- Vector4Editor,
39
- SliderEditor,
40
- ColorEditor,
41
- BlendEditor,
42
- UVEditor,
43
- PositionEditor,
44
- NormalEditor,
45
- TimerEditor,
46
- OscillatorEditor,
47
- CheckerEditor
26
+ 'StandardMaterialEditor': StandardMaterialEditor,
27
+ 'OperatorEditor': OperatorEditor,
28
+ 'NormalizeEditor': NormalizeEditor,
29
+ 'InvertEditor': InvertEditor,
30
+ 'LimiterEditor': LimiterEditor,
31
+ 'DotEditor': DotEditor,
32
+ 'PowerEditor': PowerEditor,
33
+ 'TrigonometryEditor': TrigonometryEditor,
34
+ 'FloatEditor': FloatEditor,
35
+ 'Vector2Editor': Vector2Editor,
36
+ 'Vector3Editor': Vector3Editor,
37
+ 'Vector4Editor': Vector4Editor,
38
+ 'SliderEditor': SliderEditor,
39
+ 'ColorEditor': ColorEditor,
40
+ 'BlendEditor': BlendEditor,
41
+ 'UVEditor': UVEditor,
42
+ 'PositionEditor': PositionEditor,
43
+ 'NormalEditor': NormalEditor,
44
+ 'TimerEditor': TimerEditor,
45
+ 'OscillatorEditor': OscillatorEditor,
46
+ 'CheckerEditor': CheckerEditor
48
47
  };
49
48
 
50
49
  export class NodeEditor extends EventDispatcher {
@@ -57,9 +57,11 @@ class ColorSpaceNode extends TempNode {
57
57
 
58
58
  }
59
59
 
60
- fromDecoding( encoding ) {
60
+ fromDecoding() {
61
61
 
62
- const components = ColorSpaceNode.getEncodingComponents( encoding );
62
+ // TODO: Remove fromDecoding()
63
+
64
+ const components = ColorSpaceNode.getEncodingComponents( LinearEncoding );
63
65
 
64
66
  this.method = components[ 0 ] + 'ToLinear';
65
67
  this.factor = components[ 1 ];
@@ -106,14 +108,6 @@ ColorSpaceNode.Nodes = ( function () {
106
108
  }`
107
109
  );
108
110
 
109
- const sRGBToLinear = new FunctionNode( /* glsl */`
110
- vec4 sRGBToLinear( in vec4 value ) {
111
-
112
- return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );
113
-
114
- }`
115
- );
116
-
117
111
  const LinearTosRGB = new FunctionNode( /* glsl */`
118
112
  vec4 LinearTosRGB( in vec4 value ) {
119
113
 
@@ -124,15 +118,12 @@ ColorSpaceNode.Nodes = ( function () {
124
118
 
125
119
  return {
126
120
  LinearToLinear: LinearToLinear,
127
- sRGBToLinear: sRGBToLinear,
128
121
  LinearTosRGB: LinearTosRGB
129
122
  };
130
123
 
131
124
  } )();
132
125
 
133
126
  ColorSpaceNode.LINEAR_TO_LINEAR = 'LinearToLinear';
134
-
135
- ColorSpaceNode.SRGB_TO_LINEAR = 'sRGBToLinear';
136
127
  ColorSpaceNode.LINEAR_TO_SRGB = 'LinearTosRGB';
137
128
 
138
129
  ColorSpaceNode.getEncodingComponents = function ( encoding ) {
@@ -8,11 +8,11 @@ import {
8
8
  InterleavedBufferAttribute,
9
9
  Mesh,
10
10
  MeshBasicMaterial,
11
- RGBFormat,
12
11
  RawShaderMaterial,
13
12
  Vector2,
14
13
  Vector3,
15
- Vector4
14
+ Vector4,
15
+ RGBAFormat
16
16
  } from 'three';
17
17
 
18
18
  class Lensflare extends Mesh {
@@ -32,8 +32,8 @@ class Lensflare extends Mesh {
32
32
 
33
33
  // textures
34
34
 
35
- const tempMap = new FramebufferTexture( 16, 16, RGBFormat );
36
- const occlusionMap = new FramebufferTexture( 16, 16, RGBFormat );
35
+ const tempMap = new FramebufferTexture( 16, 16, RGBAFormat );
36
+ const occlusionMap = new FramebufferTexture( 16, 16, RGBAFormat );
37
37
 
38
38
  // material
39
39
 
@@ -1,12 +1,9 @@
1
1
  import {
2
2
  Color,
3
- LinearFilter,
4
- MathUtils,
5
3
  Matrix4,
6
4
  Mesh,
7
5
  PerspectiveCamera,
8
6
  Plane,
9
- RGBFormat,
10
7
  ShaderMaterial,
11
8
  UniformsUtils,
12
9
  Vector3,
@@ -47,19 +44,7 @@ class Reflector extends Mesh {
47
44
  const textureMatrix = new Matrix4();
48
45
  const virtualCamera = new PerspectiveCamera();
49
46
 
50
- const parameters = {
51
- minFilter: LinearFilter,
52
- magFilter: LinearFilter,
53
- format: RGBFormat
54
- };
55
-
56
- const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
57
-
58
- if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
59
-
60
- renderTarget.texture.generateMipmaps = false;
61
-
62
- }
47
+ const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight );
63
48
 
64
49
  const material = new ShaderMaterial( {
65
50
  uniforms: UniformsUtils.clone( shader.uniforms ),
@@ -1,11 +1,8 @@
1
1
  import {
2
2
  Color,
3
- LinearFilter,
4
- MathUtils,
5
3
  Matrix4,
6
4
  Mesh,
7
5
  PerspectiveCamera,
8
- RGBFormat,
9
6
  ShaderMaterial,
10
7
  UniformsUtils,
11
8
  Vector2,
@@ -104,20 +101,11 @@ class ReflectorForSSRPass extends Mesh {
104
101
  }
105
102
 
106
103
  const parameters = {
107
- minFilter: LinearFilter,
108
- magFilter: LinearFilter,
109
- format: RGBFormat,
110
104
  depthTexture: useDepthTexture ? depthTexture : null,
111
105
  };
112
106
 
113
107
  const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
114
108
 
115
- if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
116
-
117
- renderTarget.texture.generateMipmaps = false;
118
-
119
- }
120
-
121
109
  const material = new ShaderMaterial( {
122
110
  transparent: useDepthTexture,
123
111
  defines: Object.assign( {}, ReflectorForSSRPass.ReflectorShader.defines, {
@@ -1,13 +1,10 @@
1
1
  import {
2
2
  Color,
3
- LinearFilter,
4
- MathUtils,
5
3
  Matrix4,
6
4
  Mesh,
7
5
  PerspectiveCamera,
8
6
  Plane,
9
7
  Quaternion,
10
- RGBFormat,
11
8
  ShaderMaterial,
12
9
  UniformsUtils,
13
10
  Vector3,
@@ -44,19 +41,7 @@ class Refractor extends Mesh {
44
41
 
45
42
  // render target
46
43
 
47
- const parameters = {
48
- minFilter: LinearFilter,
49
- magFilter: LinearFilter,
50
- format: RGBFormat
51
- };
52
-
53
- const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
54
-
55
- if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
56
-
57
- renderTarget.texture.generateMipmaps = false;
58
-
59
- }
44
+ const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight );
60
45
 
61
46
  // material
62
47
 
@@ -1,13 +1,10 @@
1
1
  import {
2
2
  Color,
3
3
  FrontSide,
4
- LinearFilter,
5
- MathUtils,
6
4
  Matrix4,
7
5
  Mesh,
8
6
  PerspectiveCamera,
9
7
  Plane,
10
- RGBFormat,
11
8
  ShaderMaterial,
12
9
  UniformsLib,
13
10
  UniformsUtils,
@@ -64,19 +61,7 @@ class Water extends Mesh {
64
61
 
65
62
  const mirrorCamera = new PerspectiveCamera();
66
63
 
67
- const parameters = {
68
- minFilter: LinearFilter,
69
- magFilter: LinearFilter,
70
- format: RGBFormat
71
- };
72
-
73
- const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
74
-
75
- if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
76
-
77
- renderTarget.texture.generateMipmaps = false;
78
-
79
- }
64
+ const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight );
80
65
 
81
66
  const mirrorShader = {
82
67