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
@@ -54,7 +54,7 @@
54
54
 
55
55
  }
56
56
 
57
- const dataArray = new Array( size * size * size * 3 );
57
+ const dataArray = new Array( size * size * size * 4 );
58
58
  let index = 0;
59
59
  let maxOutputValue = 0.0;
60
60
 
@@ -71,22 +71,29 @@
71
71
  const rLayer = Math.floor( index / ( size * size ) ) % size; // b grows first, then g, then r
72
72
 
73
73
  const pixelIndex = bLayer * size * size + gLayer * size + rLayer;
74
- dataArray[ 3 * pixelIndex + 0 ] = r;
75
- dataArray[ 3 * pixelIndex + 1 ] = g;
76
- dataArray[ 3 * pixelIndex + 2 ] = b;
74
+ dataArray[ 4 * pixelIndex + 0 ] = r;
75
+ dataArray[ 4 * pixelIndex + 1 ] = g;
76
+ dataArray[ 4 * pixelIndex + 2 ] = b;
77
+ dataArray[ 4 * pixelIndex + 3 ] = 1.0;
77
78
  index += 1;
78
79
 
79
- } // Find the apparent bit depth of the stored RGB values and scale the
80
+ } // Find the apparent bit depth of the stored RGB values and map the
80
81
  // values to [ 0, 255 ].
81
82
 
82
83
 
83
84
  const bits = Math.ceil( Math.log2( maxOutputValue ) );
84
85
  const maxBitValue = Math.pow( 2.0, bits );
85
86
 
86
- for ( let i = 0, l = dataArray.length; i < l; i ++ ) {
87
+ for ( let i = 0, l = dataArray.length; i < l; i += 4 ) {
87
88
 
88
- const val = dataArray[ i ];
89
- dataArray[ i ] = 255 * val / maxBitValue;
89
+ const r = dataArray[ i + 0 ];
90
+ const g = dataArray[ i + 1 ];
91
+ const b = dataArray[ i + 2 ];
92
+ dataArray[ i + 0 ] = 255 * r / maxBitValue; // r
93
+
94
+ dataArray[ i + 1 ] = 255 * g / maxBitValue; // g
95
+
96
+ dataArray[ i + 2 ] = 255 * b / maxBitValue; // b
90
97
 
91
98
  }
92
99
 
@@ -95,7 +102,7 @@
95
102
  texture.image.data = data;
96
103
  texture.image.width = size;
97
104
  texture.image.height = size * size;
98
- texture.format = THREE.RGBFormat;
105
+ texture.format = THREE.RGBAFormat;
99
106
  texture.type = THREE.UnsignedByteType;
100
107
  texture.magFilter = THREE.LinearFilter;
101
108
  texture.minFilter = THREE.LinearFilter;
@@ -108,7 +115,7 @@
108
115
  texture3D.image.width = size;
109
116
  texture3D.image.height = size;
110
117
  texture3D.image.depth = size;
111
- texture3D.format = THREE.RGBFormat;
118
+ texture3D.format = THREE.RGBAFormat;
112
119
  texture3D.type = THREE.UnsignedByteType;
113
120
  texture3D.magFilter = THREE.LinearFilter;
114
121
  texture3D.minFilter = THREE.LinearFilter;
@@ -62,7 +62,7 @@
62
62
  // more precision than can be captured with Uint8Array.
63
63
  const sizeToken = split[ 1 ];
64
64
  size = parseFloat( sizeToken );
65
- data = new Uint8Array( size * size * size * 3 );
65
+ data = new Uint8Array( size * size * size * 4 );
66
66
  break;
67
67
 
68
68
  case 'DOMAIN_MIN':
@@ -91,7 +91,8 @@
91
91
  data[ currIndex + 0 ] = r * 255;
92
92
  data[ currIndex + 1 ] = g * 255;
93
93
  data[ currIndex + 2 ] = b * 255;
94
- currIndex += 3;
94
+ data[ currIndex + 3 ] = 255;
95
+ currIndex += 4;
95
96
 
96
97
  }
97
98
 
@@ -101,7 +102,6 @@
101
102
  texture.image.data = data;
102
103
  texture.image.width = size;
103
104
  texture.image.height = size * size;
104
- texture.format = THREE.RGBFormat;
105
105
  texture.type = THREE.UnsignedByteType;
106
106
  texture.magFilter = THREE.LinearFilter;
107
107
  texture.minFilter = THREE.LinearFilter;
@@ -114,7 +114,6 @@
114
114
  texture3D.image.width = size;
115
115
  texture3D.image.height = size;
116
116
  texture3D.image.depth = size;
117
- texture3D.format = THREE.RGBFormat;
118
117
  texture3D.type = THREE.UnsignedByteType;
119
118
  texture3D.magFilter = THREE.LinearFilter;
120
119
  texture3D.minFilter = THREE.LinearFilter;
@@ -343,6 +343,7 @@
343
343
  destArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale;
344
344
  destArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale;
345
345
  destArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale;
346
+ destArray[ destOffset + 3 ] = 1;
346
347
 
347
348
  };
348
349
 
@@ -354,6 +355,7 @@
354
355
  destArray[ destOffset + 0 ] = THREE.DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) );
355
356
  destArray[ destOffset + 1 ] = THREE.DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) );
356
357
  destArray[ destOffset + 2 ] = THREE.DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) );
358
+ destArray[ destOffset + 3 ] = THREE.DataUtils.toHalfFloat( 1 );
357
359
 
358
360
  };
359
361
 
@@ -376,31 +378,29 @@
376
378
 
377
379
  case THREE.FloatType:
378
380
  numElements = image_rgba_data.length / 4;
379
- const floatArray = new Float32Array( numElements * 3 );
381
+ const floatArray = new Float32Array( numElements * 4 );
380
382
 
381
383
  for ( let j = 0; j < numElements; j ++ ) {
382
384
 
383
- RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 3 );
385
+ RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );
384
386
 
385
387
  }
386
388
 
387
389
  data = floatArray;
388
- format = THREE.RGBFormat;
389
390
  type = THREE.FloatType;
390
391
  break;
391
392
 
392
393
  case THREE.HalfFloatType:
393
394
  numElements = image_rgba_data.length / 4;
394
- const halfArray = new Uint16Array( numElements * 3 );
395
+ const halfArray = new Uint16Array( numElements * 4 );
395
396
 
396
397
  for ( let j = 0; j < numElements; j ++ ) {
397
398
 
398
- RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 3 );
399
+ RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );
399
400
 
400
401
  }
401
402
 
402
403
  data = halfArray;
403
- format = THREE.RGBFormat;
404
404
  type = THREE.HalfFloatType;
405
405
  break;
406
406
 
@@ -393,7 +393,7 @@
393
393
 
394
394
  var mgck = [ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a ];
395
395
 
396
- for ( var i = 0; i < 8; i ++ ) if ( data[ i ] != mgck[ i ] ) throw 'The input is not a PNG file!';
396
+ for ( var i = 0; i < 8; i ++ ) if ( data[ i ] != mgck[ i ] ) throw new Error( 'The input is not a PNG file!' );
397
397
 
398
398
  while ( offset < data.length ) {
399
399
 
@@ -560,7 +560,9 @@
560
560
 
561
561
  for ( let j = 0; j < selectorList.length; j ++ ) {
562
562
 
563
- stylesheets[ selectorList[ j ] ] = Object.assign( stylesheets[ selectorList[ j ] ] || {}, stylesheet.style );
563
+ // Remove empty rules
564
+ const definitions = Object.fromEntries( Object.entries( stylesheet.style ).filter( ( [ _, v ] ) => v !== '' ) );
565
+ stylesheets[ selectorList[ j ] ] = Object.assign( stylesheets[ selectorList[ j ] ] || {}, definitions );
564
566
 
565
567
  }
566
568
 
@@ -1166,6 +1166,7 @@
1166
1166
  color.r = value;
1167
1167
  color.g = value;
1168
1168
  color.b = value;
1169
+ color.a = 1;
1169
1170
  break;
1170
1171
 
1171
1172
  case TEXTURE_TYPE.INTENSITY_ALPHA:
@@ -1182,6 +1183,7 @@
1182
1183
  color.r = parseInt( '0x' + hex.substring( 2, 4 ) );
1183
1184
  color.g = parseInt( '0x' + hex.substring( 4, 6 ) );
1184
1185
  color.b = parseInt( '0x' + hex.substring( 6, 8 ) );
1186
+ color.a = 1;
1185
1187
  break;
1186
1188
 
1187
1189
  case TEXTURE_TYPE.RGBA:
@@ -1247,10 +1249,8 @@
1247
1249
  const width = fieldValues[ 0 ];
1248
1250
  const height = fieldValues[ 1 ];
1249
1251
  const num_components = fieldValues[ 2 ];
1250
- const useAlpha = num_components === 2 || num_components === 4;
1251
1252
  const textureType = getTextureType( num_components );
1252
- const size = ( useAlpha === true ? 4 : 3 ) * ( width * height );
1253
- const data = new Uint8Array( size );
1253
+ const data = new Uint8Array( 4 * width * height );
1254
1254
  const color = {
1255
1255
  r: 0,
1256
1256
  g: 0,
@@ -1261,27 +1261,15 @@
1261
1261
  for ( let j = 3, k = 0, jl = fieldValues.length; j < jl; j ++, k ++ ) {
1262
1262
 
1263
1263
  parseHexColor( fieldValues[ j ], textureType, color );
1264
-
1265
- if ( useAlpha === true ) {
1266
-
1267
- const stride = k * 4;
1268
- data[ stride + 0 ] = color.r;
1269
- data[ stride + 1 ] = color.g;
1270
- data[ stride + 2 ] = color.b;
1271
- data[ stride + 3 ] = color.a;
1272
-
1273
- } else {
1274
-
1275
- const stride = k * 3;
1276
- data[ stride + 0 ] = color.r;
1277
- data[ stride + 1 ] = color.g;
1278
- data[ stride + 2 ] = color.b;
1279
-
1280
- }
1264
+ const stride = k * 4;
1265
+ data[ stride + 0 ] = color.r;
1266
+ data[ stride + 1 ] = color.g;
1267
+ data[ stride + 2 ] = color.b;
1268
+ data[ stride + 3 ] = color.a;
1281
1269
 
1282
1270
  }
1283
1271
 
1284
- texture = new THREE.DataTexture( data, width, height, useAlpha === true ? THREE.RGBAFormat : THREE.RGBFormat );
1272
+ texture = new THREE.DataTexture( data, width, height );
1285
1273
  texture.needsUpdate = true;
1286
1274
  texture.__type = textureType; // needed for material modifications
1287
1275
 
@@ -44,27 +44,21 @@
44
44
 
45
45
  setFromPoints( points ) {
46
46
 
47
- if ( Array.isArray( points ) !== true ) {
47
+ // The algorithm needs at least four points.
48
+ if ( points.length >= 4 ) {
48
49
 
49
- console.error( 'THREE.ConvexHull: Points parameter is not an array.' );
50
+ this.makeEmpty();
50
51
 
51
- }
52
-
53
- if ( points.length < 4 ) {
54
-
55
- console.error( 'THREE.ConvexHull: The algorithm needs at least four points.' );
52
+ for ( let i = 0, l = points.length; i < l; i ++ ) {
56
53
 
57
- }
58
-
59
- this.makeEmpty();
54
+ this.vertices.push( new VertexNode( points[ i ] ) );
60
55
 
61
- for ( let i = 0, l = points.length; i < l; i ++ ) {
56
+ }
62
57
 
63
- this.vertices.push( new VertexNode( points[ i ] ) );
58
+ this.compute();
64
59
 
65
60
  }
66
61
 
67
- this.compute();
68
62
  return this;
69
63
 
70
64
  }
@@ -104,7 +104,7 @@
104
104
  case 'unsigned long long int':
105
105
  case 'uint64':
106
106
  case 'uint64_t':
107
- throw 'Error in Volume constructor : this type is not supported in JavaScript';
107
+ throw new Error( 'Error in Volume constructor : this type is not supported in JavaScript' );
108
108
  break;
109
109
 
110
110
  case 'Float32':
@@ -126,7 +126,7 @@
126
126
 
127
127
  if ( this.data.length !== this.xLength * this.yLength * this.zLength ) {
128
128
 
129
- throw 'Error in Volume constructor, lengths are not matching arrayBuffer size';
129
+ throw new Error( 'Error in Volume constructor, lengths are not matching arrayBuffer size' );
130
130
 
131
131
  }
132
132
 
@@ -1,7 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  // Original src: https://github.com/zz85/threejs-path-flow
4
- const BITS = 3;
4
+ const CHANNELS = 4;
5
5
  const TEXTURE_WIDTH = 1024;
6
6
  const TEXTURE_HEIGHT = 4;
7
7
  /**
@@ -12,8 +12,8 @@
12
12
 
13
13
  function initSplineTexture( numberOfCurves = 1 ) {
14
14
 
15
- const dataArray = new Float32Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * BITS );
16
- const dataTexture = new THREE.DataTexture( dataArray, TEXTURE_WIDTH, TEXTURE_HEIGHT * numberOfCurves, THREE.RGBFormat, THREE.FloatType );
15
+ const dataArray = new Float32Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * CHANNELS );
16
+ const dataTexture = new THREE.DataTexture( dataArray, TEXTURE_WIDTH, TEXTURE_HEIGHT * numberOfCurves, THREE.RGBAFormat, THREE.FloatType );
17
17
  dataTexture.wrapS = THREE.RepeatWrapping;
18
18
  dataTexture.wrapY = THREE.RepeatWrapping;
19
19
  dataTexture.magFilter = THREE.NearestFilter;
@@ -62,11 +62,12 @@
62
62
  const {
63
63
  data
64
64
  } = image;
65
- const i = BITS * TEXTURE_WIDTH * o; // Row Offset
65
+ const i = CHANNELS * TEXTURE_WIDTH * o; // Row Offset
66
66
 
67
- data[ index * BITS + i + 0 ] = x;
68
- data[ index * BITS + i + 1 ] = y;
69
- data[ index * BITS + i + 2 ] = z;
67
+ data[ index * CHANNELS + i + 0 ] = x;
68
+ data[ index * CHANNELS + i + 1 ] = y;
69
+ data[ index * CHANNELS + i + 2 ] = z;
70
+ data[ index * CHANNELS + i + 3 ] = 1;
70
71
 
71
72
  }
72
73
  /**
@@ -168,7 +168,7 @@
168
168
 
169
169
  if ( THREE.BufferGeometryUtils === undefined ) {
170
170
 
171
- throw 'THREE.EdgeSplitModifier relies on THREE.BufferGeometryUtils';
171
+ throw new Error( 'THREE.EdgeSplitModifier relies on THREE.BufferGeometryUtils' );
172
172
 
173
173
  }
174
174
 
@@ -17,7 +17,7 @@
17
17
 
18
18
  if ( THREE.BufferGeometryUtils === undefined ) {
19
19
 
20
- throw 'THREE.SimplifyModifier relies on THREE.BufferGeometryUtils';
20
+ throw new Error( 'THREE.SimplifyModifier relies on THREE.BufferGeometryUtils' );
21
21
 
22
22
  }
23
23
 
@@ -25,19 +25,7 @@
25
25
  const q = new THREE.Vector4();
26
26
  const textureMatrix = new THREE.Matrix4();
27
27
  const virtualCamera = new THREE.PerspectiveCamera();
28
- const parameters = {
29
- minFilter: THREE.LinearFilter,
30
- magFilter: THREE.LinearFilter,
31
- format: THREE.RGBFormat
32
- };
33
- const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
34
-
35
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
36
-
37
- renderTarget.texture.generateMipmaps = false;
38
-
39
- }
40
-
28
+ const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight );
41
29
  const material = new THREE.ShaderMaterial( {
42
30
  uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
43
31
  fragmentShader: shader.fragmentShader,
@@ -79,19 +79,9 @@
79
79
  }
80
80
 
81
81
  const parameters = {
82
- minFilter: THREE.LinearFilter,
83
- magFilter: THREE.LinearFilter,
84
- format: THREE.RGBFormat,
85
82
  depthTexture: useDepthTexture ? depthTexture : null
86
83
  };
87
84
  const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
88
-
89
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
90
-
91
- renderTarget.texture.generateMipmaps = false;
92
-
93
- }
94
-
95
85
  const material = new THREE.ShaderMaterial( {
96
86
  transparent: useDepthTexture,
97
87
  defines: Object.assign( {}, ReflectorForSSRPass.ReflectorShader.defines, {
@@ -20,19 +20,7 @@
20
20
  const refractorPlane = new THREE.Plane();
21
21
  const textureMatrix = new THREE.Matrix4(); // render target
22
22
 
23
- const parameters = {
24
- minFilter: THREE.LinearFilter,
25
- magFilter: THREE.LinearFilter,
26
- format: THREE.RGBFormat
27
- };
28
- const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
29
-
30
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
31
-
32
- renderTarget.texture.generateMipmaps = false;
33
-
34
- } // material
35
-
23
+ const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight ); // material
36
24
 
37
25
  this.material = new THREE.ShaderMaterial( {
38
26
  uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
@@ -39,19 +39,7 @@
39
39
  const q = new THREE.Vector4();
40
40
  const textureMatrix = new THREE.Matrix4();
41
41
  const mirrorCamera = new THREE.PerspectiveCamera();
42
- const parameters = {
43
- minFilter: THREE.LinearFilter,
44
- magFilter: THREE.LinearFilter,
45
- format: THREE.RGBFormat
46
- };
47
- const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
48
-
49
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
50
-
51
- renderTarget.texture.generateMipmaps = false;
52
-
53
- }
54
-
42
+ const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight );
55
43
  const mirrorShader = {
56
44
  uniforms: THREE.UniformsUtils.merge( [ THREE.UniformsLib[ 'fog' ], THREE.UniformsLib[ 'lights' ], {
57
45
  'normalSampler': {
@@ -25,6 +25,7 @@
25
25
  /*, deltaTime, maskActive */
26
26
  ) {
27
27
 
28
+ if ( renderer.capabilities.isWebGL2 === false ) this.uniforms[ 'tDisp' ].value.format = THREE.LuminanceFormat;
28
29
  this.uniforms[ 'tDiffuse' ].value = readBuffer.texture;
29
30
  this.uniforms[ 'seed' ].value = Math.random(); //default seeding
30
31
 
@@ -81,19 +82,17 @@
81
82
 
82
83
  generateHeightmap( dt_size ) {
83
84
 
84
- const data_arr = new Float32Array( dt_size * dt_size * 3 );
85
+ const data_arr = new Float32Array( dt_size * dt_size );
85
86
  const length = dt_size * dt_size;
86
87
 
87
88
  for ( let i = 0; i < length; i ++ ) {
88
89
 
89
90
  const val = THREE.MathUtils.randFloat( 0, 1 );
90
- data_arr[ i * 3 + 0 ] = val;
91
- data_arr[ i * 3 + 1 ] = val;
92
- data_arr[ i * 3 + 2 ] = val;
91
+ data_arr[ i ] = val;
93
92
 
94
93
  }
95
94
 
96
- const texture = new THREE.DataTexture( data_arr, dt_size, dt_size, THREE.RGBFormat, THREE.FloatType );
95
+ const texture = new THREE.DataTexture( data_arr, dt_size, dt_size, THREE.RedFormat, THREE.FloatType );
97
96
  texture.needsUpdate = true;
98
97
  return texture;
99
98
 
@@ -7,17 +7,11 @@
7
7
  super(); // render targets
8
8
 
9
9
  this.edgesRT = new THREE.WebGLRenderTarget( width, height, {
10
- depthBuffer: false,
11
- generateMipmaps: false,
12
- minFilter: THREE.LinearFilter,
13
- format: THREE.RGBFormat
10
+ depthBuffer: false
14
11
  } );
15
12
  this.edgesRT.texture.name = 'SMAAPass.edges';
16
13
  this.weightsRT = new THREE.WebGLRenderTarget( width, height, {
17
- depthBuffer: false,
18
- generateMipmaps: false,
19
- minFilter: THREE.LinearFilter,
20
- format: THREE.RGBAFormat
14
+ depthBuffer: false
21
15
  } );
22
16
  this.weightsRT.texture.name = 'SMAAPass.weights'; // textures
23
17
 
@@ -35,7 +29,6 @@
35
29
  this.areaTexture = new THREE.Texture();
36
30
  this.areaTexture.name = 'SMAAPass.area';
37
31
  this.areaTexture.image = areaTextureImage;
38
- this.areaTexture.format = THREE.RGBFormat;
39
32
  this.areaTexture.minFilter = THREE.LinearFilter;
40
33
  this.areaTexture.generateMipmaps = false;
41
34
  this.areaTexture.flipY = false;
@@ -23,25 +23,17 @@
23
23
  this.generateRandomKernelRotations(); // beauty render target
24
24
 
25
25
  const depthTexture = new THREE.DepthTexture();
26
- depthTexture.type = THREE.UnsignedShortType;
27
- this.beautyRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height, {
28
- minFilter: THREE.LinearFilter,
29
- magFilter: THREE.LinearFilter,
30
- format: THREE.RGBAFormat
31
- } ); // normal render target with depth buffer
26
+ depthTexture.format = THREE.DepthStencilFormat;
27
+ depthTexture.type = THREE.UnsignedInt248Type;
28
+ this.beautyRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height ); // normal render target with depth buffer
32
29
 
33
30
  this.normalRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height, {
34
31
  minFilter: THREE.NearestFilter,
35
32
  magFilter: THREE.NearestFilter,
36
- format: THREE.RGBAFormat,
37
33
  depthTexture: depthTexture
38
34
  } ); // ssao render target
39
35
 
40
- this.ssaoRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height, {
41
- minFilter: THREE.LinearFilter,
42
- magFilter: THREE.LinearFilter,
43
- format: THREE.RGBAFormat
44
- } );
36
+ this.ssaoRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height );
45
37
  this.blurRenderTarget = this.ssaoRenderTarget.clone(); // ssao material
46
38
 
47
39
  if ( THREE.SSAOShader === undefined ) {
@@ -131,7 +123,8 @@
131
123
  /*, readBuffer, deltaTime, maskActive */
132
124
  ) {
133
125
 
134
- // render beauty
126
+ if ( renderer.capabilities.isWebGL2 === false ) this.noiseTexture.format = THREE.LuminanceFormat; // render beauty
127
+
135
128
  renderer.setRenderTarget( this.beautyRenderTarget );
136
129
  renderer.clear();
137
130
  renderer.render( this.scene, this.camera ); // render normals and depth (honor only meshes, points and lines do not contribute to SSAO)
@@ -297,23 +290,18 @@
297
290
 
298
291
  const simplex = new THREE.SimplexNoise();
299
292
  const size = width * height;
300
- const data = new Float32Array( size * 4 );
293
+ const data = new Float32Array( size );
301
294
 
302
295
  for ( let i = 0; i < size; i ++ ) {
303
296
 
304
- const stride = i * 4;
305
297
  const x = Math.random() * 2 - 1;
306
298
  const y = Math.random() * 2 - 1;
307
299
  const z = 0;
308
- const noise = simplex.noise3d( x, y, z );
309
- data[ stride ] = noise;
310
- data[ stride + 1 ] = noise;
311
- data[ stride + 2 ] = noise;
312
- data[ stride + 3 ] = 1;
300
+ data[ i ] = simplex.noise3d( x, y, z );
313
301
 
314
302
  }
315
303
 
316
- this.noiseTexture = new THREE.DataTexture( data, width, height, THREE.RGBAFormat, THREE.FloatType );
304
+ this.noiseTexture = new THREE.DataTexture( data, width, height, THREE.RedFormat, THREE.FloatType );
317
305
  this.noiseTexture.wrapS = THREE.RepeatWrapping;
318
306
  this.noiseTexture.wrapT = THREE.RepeatWrapping;
319
307
  this.noiseTexture.needsUpdate = true;
@@ -18,11 +18,7 @@
18
18
 
19
19
  if ( this.renderTarget === undefined ) {
20
20
 
21
- this.renderTarget = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, {
22
- minFilter: THREE.LinearFilter,
23
- magFilter: THREE.LinearFilter,
24
- format: THREE.RGBFormat
25
- } );
21
+ this.renderTarget = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight );
26
22
  this.renderTarget.texture.name = 'SavePass.rt';
27
23
 
28
24
  }
@@ -90,7 +90,7 @@
90
90
  float xs = floor(gl_FragCoord.x / 0.5);
91
91
  float ys = floor(gl_FragCoord.y / 0.5);
92
92
  //based on staffantans glitch shader for unity https://github.com/staffantan/unityglitch
93
- vec4 normal = texture2D (tDisp, p*seed*seed);
93
+ float disp = texture2D(tDisp, p*seed*seed).r;
94
94
  if(p.y<distortion_x+col_s && p.y>distortion_x-col_s*seed) {
95
95
  if(seed_x>0.){
96
96
  p.y = 1. - (p.y + distortion_y);
@@ -107,8 +107,8 @@
107
107
  p.x = 1. - (p.x + distortion_x);
108
108
  }
109
109
  }
110
- p.x+=normal.x*seed_x*(seed/5.);
111
- p.y+=normal.y*seed_y*(seed/5.);
110
+ p.x+=disp*seed_x*(seed/5.);
111
+ p.y+=disp*seed_y*(seed/5.);
112
112
  //base from RGB shift shader
113
113
  vec2 offset = amount * vec2( cos(angle), sin(angle));
114
114
  vec4 cr = texture2D(tDiffuse, p + offset);
@@ -55,7 +55,6 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in Geometric
55
55
  vec3 y = cross( viewDir, x );
56
56
  vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
57
57
  vec4 matcapColor = texture2D( matcap, uv );
58
- matcapColor = matcapTexelToLinear( matcapColor );
59
58
 
60
59
  #ifdef MATCAP_BLENDING_MULTIPLY
61
60
 
@@ -155,7 +155,7 @@
155
155
  vec3 viewNormal = getViewNormal( vUv );
156
156
 
157
157
  vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );
158
- vec3 random = texture2D( tNoise, vUv * noiseScale ).xyz;
158
+ vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );
159
159
 
160
160
  // compute matrix used to reorient a kernel vector
161
161
 
@@ -894,7 +894,7 @@ class RigidBody {
894
894
  return new Ammo.btCapsuleShape( p.width, p.height );
895
895
 
896
896
  default:
897
- throw 'unknown shape type ' + p.shapeType;
897
+ throw new Error( 'unknown shape type ' + p.shapeType );
898
898
 
899
899
  }
900
900
 
@@ -1,10 +1,8 @@
1
1
  import {
2
- LinearFilter,
3
2
  Mesh,
4
3
  OrthographicCamera,
5
4
  PerspectiveCamera,
6
5
  PlaneGeometry,
7
- RGBFormat,
8
6
  Scene,
9
7
  ShaderMaterial,
10
8
  UniformsUtils,
@@ -125,9 +123,8 @@ class CinematicCamera extends PerspectiveCamera {
125
123
 
126
124
  this.postprocessing.scene.add( this.postprocessing.camera );
127
125
 
128
- const pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBFormat };
129
- this.postprocessing.rtTextureDepth = new WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
130
- this.postprocessing.rtTextureColor = new WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
126
+ this.postprocessing.rtTextureDepth = new WebGLRenderTarget( window.innerWidth, window.innerHeight );
127
+ this.postprocessing.rtTextureColor = new WebGLRenderTarget( window.innerWidth, window.innerHeight );
131
128
 
132
129
  const bokeh_shader = BokehShader;
133
130
 
@@ -1,4 +1,4 @@
1
- class WEBGL {
1
+ class WebGL {
2
2
 
3
3
  static isWebGLAvailable() {
4
4
 
@@ -88,4 +88,4 @@ class WEBGL {
88
88
 
89
89
  }
90
90
 
91
- export { WEBGL };
91
+ export default WebGL;