super-three 0.154.1 → 0.156.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/build/three.cjs +360 -160
- package/build/three.js +360 -160
- package/build/three.min.js +1 -1
- package/build/three.module.js +355 -161
- package/build/three.module.min.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +155 -25
- package/examples/jsm/csm/CSMShader.js +35 -1
- package/examples/jsm/environments/RoomEnvironment.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +1 -0
- package/examples/jsm/interactive/SelectionHelper.js +7 -0
- package/examples/jsm/libs/tween.module.js +790 -735
- package/examples/jsm/libs/utif.module.js +1644 -1558
- package/examples/jsm/loaders/DDSLoader.js +46 -3
- package/examples/jsm/loaders/EXRLoader.js +4 -4
- package/examples/jsm/loaders/FBXLoader.js +3 -1
- package/examples/jsm/loaders/GLTFLoader.js +25 -10
- package/examples/jsm/loaders/KTX2Loader.js +128 -79
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MMDLoader.js +10 -7
- package/examples/jsm/loaders/NRRDLoader.js +3 -3
- package/examples/jsm/loaders/PLYLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +48 -66
- package/examples/jsm/loaders/STLLoader.js +7 -0
- package/examples/jsm/loaders/TGALoader.js +10 -10
- package/examples/jsm/loaders/VRMLLoader.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +0 -9
- package/examples/jsm/misc/Volume.js +4 -6
- package/examples/jsm/nodes/Nodes.js +8 -6
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +29 -3
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +20 -3
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +15 -4
- package/examples/jsm/nodes/accessors/InstanceNode.js +8 -8
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +31 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +73 -61
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +3 -0
- package/examples/jsm/nodes/accessors/Object3DNode.js +2 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +6 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +54 -9
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
- package/examples/jsm/nodes/core/AttributeNode.js +2 -2
- package/examples/jsm/nodes/core/LightingModel.js +7 -9
- package/examples/jsm/nodes/core/Node.js +28 -3
- package/examples/jsm/nodes/core/NodeBuilder.js +94 -12
- package/examples/jsm/nodes/core/NodeUniform.js +1 -1
- package/examples/jsm/nodes/core/OutputStructNode.js +58 -0
- package/examples/jsm/nodes/core/PropertyNode.js +6 -0
- package/examples/jsm/nodes/core/StackNode.js +4 -4
- package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
- package/examples/jsm/nodes/display/BumpMapNode.js +77 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportNode.js +19 -5
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -2
- package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +13 -0
- package/examples/jsm/nodes/functions/PhongLightingModel.js +53 -14
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +236 -97
- package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +13 -0
- package/examples/jsm/nodes/lighting/AONode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +58 -20
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +7 -10
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +22 -12
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightingContextNode.js +12 -9
- package/examples/jsm/nodes/lighting/PointLightNode.js +7 -10
- package/examples/jsm/nodes/lighting/SpotLightNode.js +7 -10
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
- package/examples/jsm/nodes/materials/Materials.js +2 -0
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +34 -0
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -0
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +19 -2
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/NodeMaterial.js +61 -26
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
- package/examples/jsm/nodes/math/HashNode.js +35 -0
- package/examples/jsm/nodes/shadernode/ShaderNode.js +6 -2
- package/examples/jsm/nodes/utils/SplitNode.js +1 -1
- package/examples/jsm/objects/Reflector.js +1 -9
- package/examples/jsm/objects/Refractor.js +0 -8
- package/examples/jsm/offscreen/scene.js +0 -1
- package/examples/jsm/postprocessing/FilmPass.js +3 -5
- package/examples/jsm/postprocessing/MaskPass.js +4 -1
- package/examples/jsm/postprocessing/OutputPass.js +33 -14
- package/examples/jsm/postprocessing/RenderPass.js +30 -12
- package/examples/jsm/postprocessing/SAOPass.js +23 -98
- package/examples/jsm/postprocessing/SSAOPass.js +10 -30
- package/examples/jsm/postprocessing/UnrealBloomPass.js +21 -17
- package/examples/jsm/renderers/common/Backend.js +11 -8
- package/examples/jsm/renderers/common/Background.js +22 -20
- package/examples/jsm/renderers/common/Binding.js +14 -0
- package/examples/jsm/renderers/common/Bindings.js +7 -10
- package/examples/jsm/renderers/common/Geometries.js +1 -1
- package/examples/jsm/renderers/common/Pipelines.js +96 -47
- package/examples/jsm/renderers/common/RenderContext.js +1 -0
- package/examples/jsm/renderers/common/RenderContexts.js +41 -5
- package/examples/jsm/renderers/common/RenderList.js +12 -4
- package/examples/jsm/renderers/common/RenderObject.js +26 -6
- package/examples/jsm/renderers/common/RenderObjects.js +10 -7
- package/examples/jsm/renderers/common/Renderer.js +82 -42
- package/examples/jsm/renderers/common/SampledTexture.js +2 -1
- package/examples/jsm/renderers/common/Sampler.js +1 -1
- package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
- package/examples/jsm/renderers/common/Textures.js +172 -20
- package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +2 -2
- package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -1
- package/examples/jsm/renderers/common/nodes/Nodes.js +58 -13
- package/examples/jsm/renderers/webgl/WebGLBackend.js +607 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +118 -17
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +84 -0
- package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +26 -0
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +529 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +199 -0
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +242 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +340 -0
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +320 -84
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +120 -66
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +55 -36
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +96 -5
- package/examples/jsm/renderers/webgpu/utils/WebGPUConstants.js +24 -22
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +117 -139
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +60 -142
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +7 -6
- package/examples/jsm/shaders/FilmShader.js +11 -54
- package/examples/jsm/shaders/OutputShader.js +19 -2
- package/examples/jsm/shaders/SAOShader.js +0 -13
- package/examples/jsm/shaders/SSAOShader.js +33 -26
- package/examples/jsm/utils/BufferGeometryUtils.js +13 -4
- package/examples/jsm/webxr/OculusHandPointerModel.js +2 -2
- package/package.json +2 -2
- package/src/Three.js +3 -0
- package/src/animation/PropertyBinding.js +1 -1
- package/src/audio/Audio.js +6 -0
- package/src/cameras/CubeCamera.js +1 -4
- package/src/constants.js +4 -1
- package/src/core/BufferAttribute.js +20 -0
- package/src/core/Object3D.js +2 -15
- package/src/core/RenderTarget.js +122 -0
- package/src/core/UniformsGroup.js +2 -2
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/loaders/DataTextureLoader.js +19 -2
- package/src/materials/Material.js +2 -2
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +3 -3
- package/src/math/Vector4.js +4 -4
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +0 -2
- package/src/renderers/WebGLRenderTarget.js +3 -110
- package/src/renderers/WebGLRenderer.js +83 -57
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- package/src/renderers/webgl/WebGLBackground.js +5 -14
- package/src/renderers/webgl/WebGLGeometries.js +5 -1
- package/src/renderers/webgl/WebGLMaterials.js +1 -1
- package/src/renderers/webgl/WebGLProgram.js +2 -0
- package/src/renderers/webgl/WebGLPrograms.js +19 -3
- package/src/renderers/webgl/WebGLTextures.js +101 -16
- package/src/renderers/webgl/WebGLUtils.js +27 -20
- package/src/textures/CompressedCubeTexture.js +19 -0
- package/src/textures/Texture.js +2 -2
- package/src/utils.js +9 -1
- package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +0 -30
- package/examples/jsm/renderers/common/RenderTarget.js +0 -15
- package/examples/jsm/renderers/common/nodes/NodeRender.js +0 -302
- /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
- /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import DataMap from '../DataMap.js';
|
|
2
|
+
import ChainMap from '../ChainMap.js';
|
|
2
3
|
import { NoToneMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping } from 'three';
|
|
3
|
-
import { NodeFrame, cubeTexture, texture, rangeFog, densityFog, reference, toneMapping,
|
|
4
|
+
import { NodeFrame, cubeTexture, texture, rangeFog, densityFog, reference, toneMapping, equirectUV, viewportBottomLeft, normalWorld } from '../../../nodes/Nodes.js';
|
|
4
5
|
|
|
5
6
|
class Nodes extends DataMap {
|
|
6
7
|
|
|
@@ -11,6 +12,15 @@ class Nodes extends DataMap {
|
|
|
11
12
|
this.renderer = renderer;
|
|
12
13
|
this.backend = backend;
|
|
13
14
|
this.nodeFrame = new NodeFrame();
|
|
15
|
+
this.cache = new ChainMap();
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getForRenderChainKey( renderObject ) {
|
|
20
|
+
|
|
21
|
+
const { object, material, lightsNode, context } = renderObject;
|
|
22
|
+
|
|
23
|
+
return [ object.geometry, material, lightsNode, context ];
|
|
14
24
|
|
|
15
25
|
}
|
|
16
26
|
|
|
@@ -22,13 +32,25 @@ class Nodes extends DataMap {
|
|
|
22
32
|
|
|
23
33
|
if ( nodeBuilder === undefined ) {
|
|
24
34
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
nodeBuilder
|
|
30
|
-
|
|
31
|
-
nodeBuilder
|
|
35
|
+
const { cache } = this;
|
|
36
|
+
|
|
37
|
+
const chainKey = this.getForRenderChainKey( renderObject );
|
|
38
|
+
|
|
39
|
+
nodeBuilder = cache.get( chainKey );
|
|
40
|
+
|
|
41
|
+
if ( nodeBuilder === undefined ) {
|
|
42
|
+
|
|
43
|
+
nodeBuilder = this.backend.createNodeBuilder( renderObject.object, this.renderer, renderObject.scene );
|
|
44
|
+
nodeBuilder.material = renderObject.material;
|
|
45
|
+
nodeBuilder.lightsNode = renderObject.lightsNode;
|
|
46
|
+
nodeBuilder.environmentNode = this.getEnvironmentNode( renderObject.scene );
|
|
47
|
+
nodeBuilder.fogNode = this.getFogNode( renderObject.scene );
|
|
48
|
+
nodeBuilder.toneMappingNode = this.getToneMappingNode();
|
|
49
|
+
nodeBuilder.build();
|
|
50
|
+
|
|
51
|
+
cache.set( chainKey, nodeBuilder );
|
|
52
|
+
|
|
53
|
+
}
|
|
32
54
|
|
|
33
55
|
renderObjectData.nodeBuilder = nodeBuilder;
|
|
34
56
|
|
|
@@ -38,6 +60,18 @@ class Nodes extends DataMap {
|
|
|
38
60
|
|
|
39
61
|
}
|
|
40
62
|
|
|
63
|
+
delete( object ) {
|
|
64
|
+
|
|
65
|
+
if ( object.isRenderObject ) {
|
|
66
|
+
|
|
67
|
+
this.cache.delete( this.getForRenderChainKey( object ) );
|
|
68
|
+
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return super.delete( object );
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
41
75
|
getForCompute( computeNode ) {
|
|
42
76
|
|
|
43
77
|
const computeData = this.get( computeNode );
|
|
@@ -77,6 +111,8 @@ class Nodes extends DataMap {
|
|
|
77
111
|
|
|
78
112
|
getToneMappingNode() {
|
|
79
113
|
|
|
114
|
+
if ( this.isToneMappingState === false ) return null;
|
|
115
|
+
|
|
80
116
|
return this.renderer.toneMappingNode || this.get( this.renderer ).toneMappingNode || null;
|
|
81
117
|
|
|
82
118
|
}
|
|
@@ -107,13 +143,22 @@ class Nodes extends DataMap {
|
|
|
107
143
|
|
|
108
144
|
}
|
|
109
145
|
|
|
146
|
+
get isToneMappingState() {
|
|
147
|
+
|
|
148
|
+
const renderer = this.renderer;
|
|
149
|
+
const renderTarget = renderer.getRenderTarget();
|
|
150
|
+
|
|
151
|
+
return renderTarget && renderTarget.isCubeRenderTarget ? false : true;
|
|
152
|
+
|
|
153
|
+
}
|
|
154
|
+
|
|
110
155
|
updateToneMapping() {
|
|
111
156
|
|
|
112
157
|
const renderer = this.renderer;
|
|
113
158
|
const rendererData = this.get( renderer );
|
|
114
159
|
const rendererToneMapping = renderer.toneMapping;
|
|
115
160
|
|
|
116
|
-
if ( rendererToneMapping !== NoToneMapping ) {
|
|
161
|
+
if ( this.isToneMappingState && rendererToneMapping !== NoToneMapping ) {
|
|
117
162
|
|
|
118
163
|
if ( rendererData.toneMapping !== rendererToneMapping ) {
|
|
119
164
|
|
|
@@ -149,7 +194,7 @@ class Nodes extends DataMap {
|
|
|
149
194
|
|
|
150
195
|
if ( background.isCubeTexture === true ) {
|
|
151
196
|
|
|
152
|
-
backgroundNode = cubeTexture( background,
|
|
197
|
+
backgroundNode = cubeTexture( background, normalWorld );
|
|
153
198
|
|
|
154
199
|
} else if ( background.isTexture === true ) {
|
|
155
200
|
|
|
@@ -165,7 +210,7 @@ class Nodes extends DataMap {
|
|
|
165
210
|
|
|
166
211
|
}
|
|
167
212
|
|
|
168
|
-
backgroundNode = texture( background, nodeUV );
|
|
213
|
+
backgroundNode = texture( background, nodeUV ).setUpdateMatrix( true );
|
|
169
214
|
|
|
170
215
|
} else if ( background.isColor !== true ) {
|
|
171
216
|
|
|
@@ -281,7 +326,7 @@ class Nodes extends DataMap {
|
|
|
281
326
|
updateBefore( renderObject ) {
|
|
282
327
|
|
|
283
328
|
const nodeFrame = this.getNodeFrame( renderObject );
|
|
284
|
-
const nodeBuilder =
|
|
329
|
+
const nodeBuilder = renderObject.getNodeBuilder();
|
|
285
330
|
|
|
286
331
|
for ( const node of nodeBuilder.updateBeforeNodes ) {
|
|
287
332
|
|
|
@@ -296,7 +341,7 @@ class Nodes extends DataMap {
|
|
|
296
341
|
updateForRender( renderObject ) {
|
|
297
342
|
|
|
298
343
|
const nodeFrame = this.getNodeFrame( renderObject );
|
|
299
|
-
const nodeBuilder =
|
|
344
|
+
const nodeBuilder = renderObject.getNodeBuilder();
|
|
300
345
|
|
|
301
346
|
for ( const node of nodeBuilder.updateNodes ) {
|
|
302
347
|
|