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
|
@@ -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
|
-
|
|
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 *
|
|
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[
|
|
92
|
-
dataArray[
|
|
93
|
-
dataArray[
|
|
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
|
|
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
|
|
105
|
-
|
|
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 =
|
|
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 =
|
|
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 *
|
|
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
|
|
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 *
|
|
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 *
|
|
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 *
|
|
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 *
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
1362
|
+
const stride = k * 4;
|
|
1364
1363
|
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
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
|
|
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
|
-
|
|
49
|
+
// The algorithm needs at least four points.
|
|
50
50
|
|
|
51
|
-
|
|
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
|
-
|
|
57
|
+
this.vertices.push( new VertexNode( points[ i ] ) );
|
|
62
58
|
|
|
63
|
-
|
|
59
|
+
}
|
|
64
60
|
|
|
65
|
-
this.
|
|
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
|
|
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
|
-
|
|
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 *
|
|
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
|
-
|
|
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 =
|
|
84
|
-
data[ index *
|
|
85
|
-
data[ index *
|
|
86
|
-
data[ index *
|
|
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
|
|
|
@@ -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(
|
|
60
|
+
fromDecoding() {
|
|
61
61
|
|
|
62
|
-
|
|
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,
|
|
36
|
-
const occlusionMap = new FramebufferTexture( 16, 16,
|
|
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
|
|
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
|
|
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
|
|
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
|
|