super-three 0.157.1 → 0.158.0
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/README.md +6 -4
- package/build/three.cjs +1013 -790
- package/build/three.js +1013 -790
- package/build/three.min.js +1 -1
- package/build/three.module.js +1008 -791
- package/build/three.module.min.js +1 -1
- package/examples/jsm/Addons.js +290 -0
- package/examples/jsm/controls/FlyControls.js +26 -0
- package/examples/jsm/controls/OrbitControls.js +12 -1
- package/examples/jsm/controls/TransformControls.js +27 -11
- package/examples/jsm/csm/CSMShader.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +72 -2
- package/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
- package/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
- package/examples/jsm/libs/lottie_canvas.module.js +6 -1
- package/examples/jsm/libs/opentype.module.js +13 -75
- package/examples/jsm/libs/surfaceNet.js +201 -0
- package/examples/jsm/loaders/GLTFLoader.js +12 -3
- package/examples/jsm/loaders/LUTImageLoader.js +162 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +89 -93
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/Capsule.js +0 -55
- package/examples/jsm/math/Octree.js +70 -3
- package/examples/jsm/modifiers/SimplifyModifier.js +103 -11
- package/examples/jsm/modifiers/TessellateModifier.js +3 -3
- package/examples/jsm/nodes/Nodes.js +6 -6
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +3 -3
- package/examples/jsm/nodes/accessors/InstanceNode.js +3 -3
- package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +68 -31
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -2
- package/examples/jsm/nodes/accessors/MorphNode.js +5 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +13 -3
- package/examples/jsm/nodes/accessors/TextureNode.js +3 -3
- package/examples/jsm/nodes/code/FunctionNode.js +1 -1
- package/examples/jsm/nodes/core/AssignNode.js +72 -0
- package/examples/jsm/nodes/core/LightingModel.js +3 -1
- package/examples/jsm/nodes/core/Node.js +7 -12
- package/examples/jsm/nodes/core/NodeBuilder.js +126 -16
- package/examples/jsm/nodes/core/NodeUtils.js +4 -2
- package/examples/jsm/nodes/core/OutputStructNode.js +1 -1
- package/examples/jsm/nodes/core/ParameterNode.js +33 -0
- package/examples/jsm/nodes/core/PropertyNode.js +4 -10
- package/examples/jsm/nodes/core/StackNode.js +7 -17
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/VarNode.js +6 -35
- package/examples/jsm/nodes/core/VaryingNode.js +2 -0
- package/examples/jsm/nodes/display/BumpMapNode.js +35 -13
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -1
- package/examples/jsm/nodes/display/ViewportNode.js +14 -4
- package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +20 -6
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -7
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +8 -3
- package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +8 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +8 -0
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +93 -43
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +19 -5
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -6
- package/examples/jsm/nodes/lighting/LightingContextNode.js +21 -57
- package/examples/jsm/nodes/lighting/LightsNode.js +62 -4
- package/examples/jsm/nodes/lighting/PointLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/SpotLightNode.js +1 -1
- package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +70 -71
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +5 -5
- package/examples/jsm/nodes/materials/Materials.js +1 -0
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +47 -20
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/NodeMaterial.js +17 -20
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +5 -5
- package/examples/jsm/nodes/math/OperatorNode.js +5 -21
- package/examples/jsm/nodes/shadernode/ShaderNode.js +128 -9
- package/examples/jsm/nodes/utils/ArrayElementNode.js +2 -0
- package/examples/jsm/nodes/utils/DiscardNode.js +3 -2
- package/examples/jsm/nodes/utils/JoinNode.js +11 -1
- package/examples/jsm/nodes/utils/LoopNode.js +36 -24
- package/examples/jsm/nodes/utils/SplitNode.js +2 -0
- package/examples/jsm/objects/BatchedMesh.js +586 -0
- package/examples/jsm/objects/InstancedPoints.js +21 -0
- package/examples/jsm/objects/Lensflare.js +20 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -0
- package/examples/jsm/objects/Refractor.js +3 -0
- package/examples/jsm/objects/Sky.js +5 -3
- package/examples/jsm/objects/Water.js +5 -2
- package/examples/jsm/objects/Water2.js +3 -0
- package/examples/jsm/physics/AmmoPhysics.js +21 -0
- package/examples/jsm/physics/RapierPhysics.js +21 -0
- package/examples/jsm/postprocessing/BokehPass.js +3 -2
- package/examples/jsm/postprocessing/LUTPass.js +2 -1
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +14 -3
- package/examples/jsm/postprocessing/SAOPass.js +0 -1
- package/examples/jsm/postprocessing/SMAAPass.js +0 -2
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +3 -9
- package/examples/jsm/renderers/SVGRenderer.js +9 -6
- package/examples/jsm/renderers/common/Bindings.js +1 -1
- package/examples/jsm/renderers/common/RenderObject.js +8 -1
- package/examples/jsm/renderers/common/RenderObjects.js +1 -1
- package/examples/jsm/renderers/common/Textures.js +4 -36
- package/examples/jsm/renderers/common/nodes/Nodes.js +53 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +291 -50
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +88 -12
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +40 -5
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +14 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +2 -0
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +36 -4
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +2 -0
- package/examples/jsm/shaders/AfterimageShader.js +2 -0
- package/examples/jsm/shaders/BasicShader.js +2 -0
- package/examples/jsm/shaders/BlendShader.js +2 -0
- package/examples/jsm/shaders/BokehShader.js +2 -0
- package/examples/jsm/shaders/BokehShader2.js +4 -0
- package/examples/jsm/shaders/BrightnessContrastShader.js +2 -0
- package/examples/jsm/shaders/ColorCorrectionShader.js +2 -0
- package/examples/jsm/shaders/DOFMipMapShader.js +2 -0
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +5 -0
- package/examples/jsm/shaders/FXAAShader.js +2 -0
- package/examples/jsm/shaders/FilmShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +2 -0
- package/examples/jsm/shaders/FreiChenShader.js +2 -0
- package/examples/jsm/shaders/GodRaysShader.js +8 -0
- package/examples/jsm/shaders/HalftoneShader.js +2 -0
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +2 -0
- package/examples/jsm/shaders/HueSaturationShader.js +2 -0
- package/examples/jsm/shaders/KaleidoShader.js +2 -0
- package/examples/jsm/shaders/LuminosityHighPassShader.js +2 -0
- package/examples/jsm/shaders/LuminosityShader.js +2 -0
- package/examples/jsm/shaders/MMDToonShader.js +2 -0
- package/examples/jsm/shaders/MirrorShader.js +2 -0
- package/examples/jsm/shaders/NormalMapShader.js +2 -0
- package/examples/jsm/shaders/OutputShader.js +4 -5
- package/examples/jsm/shaders/SAOShader.js +5 -0
- package/examples/jsm/shaders/SMAAShader.js +6 -0
- package/examples/jsm/shaders/SSAOShader.js +6 -0
- package/examples/jsm/shaders/SSRShader.js +6 -0
- package/examples/jsm/shaders/SobelOperatorShader.js +2 -0
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +2 -0
- package/examples/jsm/shaders/TechnicolorShader.js +2 -0
- package/examples/jsm/shaders/TriangleBlurShader.js +2 -0
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -0
- package/examples/jsm/shaders/VelocityShader.js +2 -0
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +2 -0
- package/examples/jsm/shaders/WaterRefractionShader.js +2 -0
- package/examples/jsm/transpiler/AST.js +231 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +899 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
- package/examples/jsm/transpiler/TSLEncoder.js +611 -0
- package/examples/jsm/transpiler/Transpiler.js +18 -0
- package/examples/jsm/webxr/VRButton.js +1 -1
- package/examples/jsm/webxr/XRButton.js +7 -5
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +4 -1
- package/src/constants.js +7 -1
- package/src/extras/PMREMGenerator.js +7 -1
- package/src/loaders/MaterialLoader.js +10 -2
- package/src/materials/Material.js +27 -13
- package/src/math/Box3.js +35 -18
- package/src/math/Vector3.js +11 -12
- package/src/objects/SkinnedMesh.js +6 -7
- package/src/renderers/WebGLRenderer.js +142 -25
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +8 -6
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +2 -2
- package/src/renderers/webgl/WebGLProgram.js +80 -50
- package/src/renderers/webgl/WebGLPrograms.js +3 -0
- package/src/renderers/webgl/WebGLState.js +25 -4
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +0 -76
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +0 -29
|
@@ -62,7 +62,8 @@ import {
|
|
|
62
62
|
Vector2,
|
|
63
63
|
Vector3,
|
|
64
64
|
VectorKeyframeTrack,
|
|
65
|
-
SRGBColorSpace
|
|
65
|
+
SRGBColorSpace,
|
|
66
|
+
InstancedBufferAttribute
|
|
66
67
|
} from 'three';
|
|
67
68
|
import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
|
|
68
69
|
|
|
@@ -361,6 +362,9 @@ class GLTFLoader extends Loader {
|
|
|
361
362
|
for ( let i = 0; i < this.pluginCallbacks.length; i ++ ) {
|
|
362
363
|
|
|
363
364
|
const plugin = this.pluginCallbacks[ i ]( parser );
|
|
365
|
+
|
|
366
|
+
if ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' );
|
|
367
|
+
|
|
364
368
|
plugins[ plugin.name ] = plugin;
|
|
365
369
|
|
|
366
370
|
// Workaround to avoid determining as unknown extension
|
|
@@ -942,7 +946,7 @@ class GLTFMaterialsSheenExtension {
|
|
|
942
946
|
if ( extension.sheenColorFactor !== undefined ) {
|
|
943
947
|
|
|
944
948
|
const colorFactor = extension.sheenColorFactor;
|
|
945
|
-
materialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor
|
|
949
|
+
materialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace );
|
|
946
950
|
|
|
947
951
|
}
|
|
948
952
|
|
|
@@ -1679,7 +1683,12 @@ class GLTFMeshGpuInstancing {
|
|
|
1679
1683
|
// Add instance attributes to the geometry, excluding TRS.
|
|
1680
1684
|
for ( const attributeName in attributes ) {
|
|
1681
1685
|
|
|
1682
|
-
if ( attributeName
|
|
1686
|
+
if ( attributeName === '_COLOR_0' ) {
|
|
1687
|
+
|
|
1688
|
+
const attr = attributes[ attributeName ];
|
|
1689
|
+
instancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized );
|
|
1690
|
+
|
|
1691
|
+
} else if ( attributeName !== 'TRANSLATION' &&
|
|
1683
1692
|
attributeName !== 'ROTATION' &&
|
|
1684
1693
|
attributeName !== 'SCALE' ) {
|
|
1685
1694
|
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Loader,
|
|
3
|
+
TextureLoader,
|
|
4
|
+
DataTexture,
|
|
5
|
+
Data3DTexture,
|
|
6
|
+
RGBAFormat,
|
|
7
|
+
UnsignedByteType,
|
|
8
|
+
ClampToEdgeWrapping,
|
|
9
|
+
LinearFilter,
|
|
10
|
+
} from 'three';
|
|
11
|
+
|
|
12
|
+
export class LUTImageLoader extends Loader {
|
|
13
|
+
|
|
14
|
+
constructor( flipVertical = false ) {
|
|
15
|
+
//The NeutralLUT.png has green at the bottom for Unreal ang green at the top for Unity URP Color Lookup
|
|
16
|
+
//post-processing. If you're using lut image strips from a Unity pipeline then pass true to the constructor
|
|
17
|
+
|
|
18
|
+
super();
|
|
19
|
+
|
|
20
|
+
this.flip = flipVertical;
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
load( url, onLoad, onProgress, onError ) {
|
|
25
|
+
|
|
26
|
+
const loader = new TextureLoader( this.manager );
|
|
27
|
+
|
|
28
|
+
loader.setCrossOrigin( this.crossOrigin );
|
|
29
|
+
|
|
30
|
+
loader.setPath( this.path );
|
|
31
|
+
loader.load( url, texture => {
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
|
|
35
|
+
let imageData;
|
|
36
|
+
|
|
37
|
+
if ( texture.image.width < texture.image.height ) {
|
|
38
|
+
|
|
39
|
+
imageData = this.getImageData( texture );
|
|
40
|
+
|
|
41
|
+
} else {
|
|
42
|
+
|
|
43
|
+
imageData = this.horz2Vert( texture );
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
onLoad( this.parse( imageData.data, Math.min( texture.image.width, texture.image.height ) ) );
|
|
48
|
+
|
|
49
|
+
} catch ( e ) {
|
|
50
|
+
|
|
51
|
+
if ( onError ) {
|
|
52
|
+
|
|
53
|
+
onError( e );
|
|
54
|
+
|
|
55
|
+
} else {
|
|
56
|
+
|
|
57
|
+
console.error( e );
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
this.manager.itemError( url );
|
|
62
|
+
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
}, onProgress, onError );
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
getImageData( texture ) {
|
|
70
|
+
|
|
71
|
+
const width = texture.image.width;
|
|
72
|
+
const height = texture.image.height;
|
|
73
|
+
|
|
74
|
+
const canvas = document.createElement( 'canvas' );
|
|
75
|
+
canvas.width = width;
|
|
76
|
+
canvas.height = height;
|
|
77
|
+
|
|
78
|
+
const context = canvas.getContext( '2d' );
|
|
79
|
+
|
|
80
|
+
if ( this.flip === true ) {
|
|
81
|
+
|
|
82
|
+
context.scale( 1, - 1 );
|
|
83
|
+
context.translate( 0, - height );
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
context.drawImage( texture.image, 0, 0 );
|
|
88
|
+
|
|
89
|
+
return context.getImageData( 0, 0, width, height );
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
horz2Vert( texture ) {
|
|
94
|
+
|
|
95
|
+
const width = texture.image.height;
|
|
96
|
+
const height = texture.image.width;
|
|
97
|
+
|
|
98
|
+
const canvas = document.createElement( 'canvas' );
|
|
99
|
+
canvas.width = width;
|
|
100
|
+
canvas.height = height;
|
|
101
|
+
|
|
102
|
+
const context = canvas.getContext( '2d' );
|
|
103
|
+
|
|
104
|
+
if ( this.flip === true ) {
|
|
105
|
+
|
|
106
|
+
context.scale( 1, - 1 );
|
|
107
|
+
context.translate( 0, - height );
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
for ( let i = 0; i < width; i ++ ) {
|
|
112
|
+
|
|
113
|
+
const sy = i * width;
|
|
114
|
+
const dy = ( this.flip ) ? height - i * width : i * width;
|
|
115
|
+
context.drawImage( texture.image, sy, 0, width, width, 0, dy, width, width );
|
|
116
|
+
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return context.getImageData( 0, 0, width, height );
|
|
120
|
+
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
parse( dataArray, size ) {
|
|
124
|
+
|
|
125
|
+
const data = new Uint8Array( dataArray );
|
|
126
|
+
const texture = new DataTexture();
|
|
127
|
+
texture.image.data = data;
|
|
128
|
+
texture.image.width = size;
|
|
129
|
+
texture.image.height = size * size;
|
|
130
|
+
texture.format = RGBAFormat;
|
|
131
|
+
texture.type = UnsignedByteType;
|
|
132
|
+
texture.magFilter = LinearFilter;
|
|
133
|
+
texture.minFilter = LinearFilter;
|
|
134
|
+
texture.wrapS = ClampToEdgeWrapping;
|
|
135
|
+
texture.wrapT = ClampToEdgeWrapping;
|
|
136
|
+
texture.generateMipmaps = false;
|
|
137
|
+
texture.needsUpdate = true;
|
|
138
|
+
|
|
139
|
+
const texture3D = new Data3DTexture();
|
|
140
|
+
texture3D.image.data = data;
|
|
141
|
+
texture3D.image.width = size;
|
|
142
|
+
texture3D.image.height = size;
|
|
143
|
+
texture3D.image.depth = size;
|
|
144
|
+
texture3D.format = RGBAFormat;
|
|
145
|
+
texture3D.type = UnsignedByteType;
|
|
146
|
+
texture3D.magFilter = LinearFilter;
|
|
147
|
+
texture3D.minFilter = LinearFilter;
|
|
148
|
+
texture3D.wrapS = ClampToEdgeWrapping;
|
|
149
|
+
texture3D.wrapT = ClampToEdgeWrapping;
|
|
150
|
+
texture3D.wrapR = ClampToEdgeWrapping;
|
|
151
|
+
texture3D.generateMipmaps = false;
|
|
152
|
+
texture3D.needsUpdate = true;
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
size,
|
|
156
|
+
texture,
|
|
157
|
+
texture3D,
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
}
|