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.
- package/LICENSE +1 -1
- package/build/three.js +1634 -1608
- package/build/three.min.js +1 -1
- package/build/three.module.js +4630 -4534
- package/examples/js/animation/MMDPhysics.js +1 -1
- package/examples/js/cameras/CinematicCamera.js +2 -7
- package/examples/js/exporters/MMDExporter.js +1 -1
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/loaders/BasisTextureLoader.js +1 -0
- package/examples/js/loaders/EXRLoader.js +25 -19
- package/examples/js/loaders/GLTFLoader.js +2 -2
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -2
- package/examples/js/loaders/LDrawLoader.js +1131 -859
- package/examples/js/loaders/LUT3dlLoader.js +17 -10
- package/examples/js/loaders/LUTCubeLoader.js +3 -4
- package/examples/js/loaders/RGBELoader.js +6 -6
- package/examples/js/loaders/RGBMLoader.js +1 -1
- package/examples/js/loaders/SVGLoader.js +3 -1
- package/examples/js/loaders/VRMLLoader.js +9 -21
- package/examples/js/math/ConvexHull.js +7 -13
- package/examples/js/misc/Volume.js +2 -2
- package/examples/js/modifiers/CurveModifier.js +8 -7
- package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/Reflector.js +1 -13
- package/examples/js/objects/ReflectorForSSRPass.js +0 -10
- package/examples/js/objects/Refractor.js +1 -13
- package/examples/js/objects/Water.js +1 -13
- package/examples/js/postprocessing/GlitchPass.js +4 -5
- package/examples/js/postprocessing/SMAAPass.js +2 -9
- package/examples/js/postprocessing/SSAOPass.js +9 -21
- package/examples/js/postprocessing/SavePass.js +1 -5
- package/examples/js/shaders/DigitalGlitch.js +3 -3
- package/examples/js/shaders/MMDToonShader.js +0 -1
- package/examples/js/shaders/SSAOShader.js +1 -1
- package/examples/jsm/animation/MMDPhysics.js +1 -1
- package/examples/jsm/cameras/CinematicCamera.js +2 -5
- package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
- package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +8 -24
- package/examples/jsm/exporters/MMDExporter.js +1 -1
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/libs/lil-gui.module.min.js +2 -2
- package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
- package/examples/jsm/loaders/EXRLoader.js +22 -19
- package/examples/jsm/loaders/GLTFLoader.js +1 -3
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -4
- package/examples/jsm/loaders/LDrawLoader.js +1147 -885
- package/examples/jsm/loaders/LUT3dlLoader.js +17 -12
- package/examples/jsm/loaders/LUTCubeLoader.js +3 -5
- package/examples/jsm/loaders/RGBELoader.js +7 -8
- package/examples/jsm/loaders/RGBMLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +6 -1
- package/examples/jsm/loaders/VRMLLoader.js +9 -22
- package/examples/jsm/math/ConvexHull.js +7 -13
- package/examples/jsm/misc/Volume.js +2 -2
- package/examples/jsm/modifiers/CurveModifier.js +9 -8
- package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +21 -22
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +4 -13
- package/examples/jsm/objects/Lensflare.js +4 -4
- package/examples/jsm/objects/Reflector.js +1 -16
- package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
- package/examples/jsm/objects/Refractor.js +1 -16
- package/examples/jsm/objects/Water.js +1 -16
- package/examples/jsm/postprocessing/GlitchPass.js +7 -6
- package/examples/jsm/postprocessing/SMAAPass.js +2 -11
- package/examples/jsm/postprocessing/SSAOPass.js +13 -25
- package/examples/jsm/postprocessing/SavePass.js +1 -3
- package/examples/jsm/renderers/nodes/Nodes.js +2 -0
- package/examples/jsm/renderers/nodes/ShaderNode.js +58 -31
- package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +9 -46
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +5 -10
- package/examples/jsm/renderers/nodes/math/MathNode.js +2 -1
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +3 -5
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +1 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +10 -4
- package/examples/jsm/shaders/DigitalGlitch.js +3 -3
- package/examples/jsm/shaders/MMDToonShader.js +0 -1
- package/examples/jsm/shaders/SSAOShader.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +195 -0
- package/examples/jsm/webxr/VRButton.js +24 -0
- package/examples/jsm/webxr/XREstimatedLight.js +2 -0
- package/package.json +4 -1
- package/src/animation/AnimationMixer.js +1 -0
- package/src/cameras/CubeCamera.js +2 -0
- package/src/constants.js +3 -16
- package/src/extras/ImageUtils.js +63 -0
- package/src/extras/PMREMGenerator.js +32 -82
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/materials/Material.js +4 -4
- package/src/math/Color.js +1 -1
- package/src/math/Quaternion.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +0 -2
- package/src/renderers/WebGLRenderer.js +1 -67
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
- package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +8 -7
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib.js +2 -2
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
- package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
- package/src/renderers/webgl/WebGLMorphtargets.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +4 -16
- package/src/renderers/webgl/WebGLPrograms.js +8 -47
- package/src/renderers/webgl/WebGLState.js +81 -0
- package/src/renderers/webgl/WebGLTextures.js +75 -22
- package/src/renderers/webgl/WebGLUtils.js +86 -28
- package/src/renderers/webxr/WebXRManager.js +3 -3
- package/src/textures/Texture.js +2 -1
- package/src/textures/VideoTexture.js +1 -3
- package/examples/js/WebGL.js +0 -90
- package/examples/js/utils/RoughnessMipmapper.js +0 -268
- 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 *
|
|
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[
|
|
75
|
-
dataArray[
|
|
76
|
-
dataArray[
|
|
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
|
|
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
|
|
89
|
-
|
|
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.
|
|
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.
|
|
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 *
|
|
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
|
|
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 *
|
|
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 *
|
|
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 *
|
|
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 *
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
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
|
|
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
|
-
|
|
47
|
+
// The algorithm needs at least four points.
|
|
48
|
+
if ( points.length >= 4 ) {
|
|
48
49
|
|
|
49
|
-
|
|
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
|
-
|
|
56
|
+
}
|
|
62
57
|
|
|
63
|
-
this.
|
|
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
|
|
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 *
|
|
16
|
-
const dataTexture = new THREE.DataTexture( dataArray, TEXTURE_WIDTH, TEXTURE_HEIGHT * numberOfCurves, THREE.
|
|
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 =
|
|
65
|
+
const i = CHANNELS * TEXTURE_WIDTH * o; // Row Offset
|
|
66
66
|
|
|
67
|
-
data[ index *
|
|
68
|
-
data[ index *
|
|
69
|
-
data[ index *
|
|
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
|
/**
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
27
|
-
|
|
28
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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+=
|
|
111
|
-
p.y+=
|
|
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 ).
|
|
158
|
+
vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );
|
|
159
159
|
|
|
160
160
|
// compute matrix used to reorient a kernel vector
|
|
161
161
|
|
|
@@ -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
|
-
|
|
129
|
-
this.postprocessing.
|
|
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
|
|