super-three 0.168.0 → 0.169.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/build/three.cjs +384 -700
- package/build/three.module.js +384 -700
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +24644 -22406
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +79941 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +0 -6
- package/examples/jsm/controls/TrackballControls.js +32 -12
- package/examples/jsm/controls/TransformControls.js +97 -62
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/KTX2Exporter.js +21 -13
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +9 -7
- package/examples/jsm/geometries/DecalGeometry.js +4 -1
- package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +1 -1
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lights/LightProbeGenerator.js +24 -10
- package/examples/jsm/loaders/ColladaLoader.js +9 -6
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +30 -20
- package/examples/jsm/loaders/GLTFLoader.js +5 -10
- package/examples/jsm/loaders/KTX2Loader.js +10 -7
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +29 -10
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +5 -4
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +8 -5
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/VRMLLoader.js +10 -10
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/misc/Timer.js +1 -1
- package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
- package/examples/jsm/objects/LensflareMesh.js +322 -0
- package/examples/jsm/objects/SkyMesh.js +1 -2
- package/examples/jsm/objects/Water2Mesh.js +2 -3
- package/examples/jsm/objects/WaterMesh.js +1 -2
- package/examples/jsm/physics/JoltPhysics.js +1 -1
- package/examples/jsm/physics/RapierPhysics.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
- package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/TextureUtils.js +1 -0
- package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/package.json +2 -2
- package/src/Three.WebGPU.Nodes.js +200 -0
- package/src/Three.WebGPU.js +2 -1
- package/src/audio/Audio.js +2 -2
- package/src/constants.js +1 -1
- package/src/core/BufferAttribute.js +0 -9
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +0 -9
- package/src/extras/Controls.js +1 -1
- package/src/geometries/CylinderGeometry.js +11 -4
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +24 -4
- package/src/loaders/nodes/NodeMaterialLoader.js +21 -17
- package/src/loaders/nodes/NodeObjectLoader.js +19 -0
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +19 -34
- package/src/materials/nodes/Line2NodeMaterial.js +26 -26
- package/src/materials/nodes/LineBasicNodeMaterial.js +7 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshLambertNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshPhongNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +6 -3
- package/src/materials/nodes/MeshSSSNodeMaterial.js +6 -3
- package/src/materials/nodes/MeshStandardNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshToonNodeMaterial.js +7 -3
- package/src/materials/nodes/NodeMaterial.js +20 -45
- package/src/materials/nodes/NodeMaterials.js +2 -0
- package/src/materials/nodes/PointsNodeMaterial.js +7 -3
- package/src/materials/nodes/ShadowNodeMaterial.js +7 -3
- package/src/materials/nodes/SpriteNodeMaterial.js +39 -6
- package/src/materials/nodes/VolumeNodeMaterial.js +13 -9
- package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
- package/src/math/Triangle.js +24 -0
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +96 -93
- package/src/nodes/accessors/BatchNode.js +7 -3
- package/src/nodes/accessors/BufferAttributeNode.js +6 -3
- package/src/nodes/accessors/BufferNode.js +6 -3
- package/src/nodes/accessors/Camera.js +10 -16
- package/src/nodes/accessors/ClippingNode.js +7 -3
- package/src/nodes/accessors/CubeTextureNode.js +6 -3
- package/src/nodes/accessors/InstanceNode.js +11 -11
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +6 -3
- package/src/nodes/accessors/Lights.js +51 -0
- package/src/nodes/accessors/MaterialNode.js +8 -4
- package/src/nodes/accessors/MaterialReferenceNode.js +6 -3
- package/src/nodes/accessors/ModelNode.js +42 -7
- package/src/nodes/accessors/ModelViewProjectionNode.js +9 -5
- package/src/nodes/accessors/MorphNode.js +7 -3
- package/src/nodes/accessors/Normal.js +32 -6
- package/src/nodes/accessors/Object3DNode.js +11 -27
- package/src/nodes/accessors/PointUVNode.js +7 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +32 -4
- package/src/nodes/accessors/ReferenceNode.js +40 -3
- package/src/nodes/accessors/RendererReferenceNode.js +9 -3
- package/src/nodes/accessors/SceneNode.js +7 -3
- package/src/nodes/accessors/SkinningNode.js +7 -3
- package/src/nodes/accessors/StorageBufferNode.js +21 -3
- package/src/nodes/accessors/StorageTextureNode.js +7 -4
- package/src/nodes/accessors/Texture3DNode.js +7 -4
- package/src/nodes/accessors/TextureNode.js +19 -8
- package/src/nodes/accessors/TextureSizeNode.js +8 -5
- package/src/nodes/accessors/UniformArrayNode.js +12 -9
- package/src/nodes/accessors/UserDataNode.js +9 -6
- package/src/nodes/accessors/VelocityNode.js +74 -23
- package/src/nodes/accessors/VertexColorNode.js +6 -3
- package/src/nodes/code/CodeNode.js +7 -3
- package/src/nodes/code/ExpressionNode.js +8 -4
- package/src/nodes/code/FunctionCallNode.js +6 -3
- package/src/nodes/code/FunctionNode.js +6 -3
- package/src/nodes/code/ScriptableNode.js +11 -6
- package/src/nodes/code/ScriptableValueNode.js +7 -3
- package/src/nodes/core/AssignNode.js +9 -6
- package/src/nodes/core/AttributeNode.js +7 -3
- package/src/nodes/core/BypassNode.js +8 -4
- package/src/nodes/core/CacheNode.js +8 -4
- package/src/nodes/core/ConstNode.js +6 -3
- package/src/nodes/core/ContextNode.js +7 -3
- package/src/nodes/core/IndexNode.js +25 -3
- package/src/nodes/core/InputNode.js +7 -3
- package/src/nodes/core/MRTNode.js +6 -3
- package/src/nodes/core/Node.js +10 -51
- package/src/nodes/core/NodeBuilder.js +71 -5
- package/src/nodes/core/NodeUtils.js +48 -6
- package/src/nodes/core/OutputStructNode.js +8 -4
- package/src/nodes/core/ParameterNode.js +6 -3
- package/src/nodes/core/PropertyNode.js +7 -3
- package/src/nodes/core/StackNode.js +7 -3
- package/src/nodes/core/StructTypeNode.js +7 -3
- package/src/nodes/core/TempNode.js +8 -4
- package/src/nodes/core/UniformGroupNode.js +10 -6
- package/src/nodes/core/UniformNode.js +6 -3
- package/src/nodes/core/VarNode.js +8 -4
- package/src/nodes/core/VaryingNode.js +7 -3
- package/src/nodes/display/AfterImageNode.js +6 -0
- package/src/nodes/display/AnaglyphPassNode.js +6 -0
- package/src/nodes/display/AnamorphicNode.js +6 -0
- package/src/nodes/display/BloomNode.js +6 -0
- package/src/nodes/display/BumpMapNode.js +6 -0
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +43 -14
- package/src/nodes/display/DenoiseNode.js +6 -3
- package/src/nodes/display/DepthOfFieldNode.js +6 -3
- package/src/nodes/display/DotScreenNode.js +8 -5
- package/src/nodes/display/FXAANode.js +6 -3
- package/src/nodes/display/FilmNode.js +6 -3
- package/src/nodes/display/FrontFacingNode.js +7 -3
- package/src/nodes/display/GTAONode.js +6 -3
- package/src/nodes/display/GaussianBlurNode.js +6 -3
- package/src/nodes/display/Lut3DNode.js +6 -3
- package/src/nodes/display/NormalMapNode.js +8 -6
- package/src/nodes/display/ParallaxBarrierPassNode.js +8 -5
- package/src/nodes/display/PassNode.js +18 -7
- package/src/nodes/display/PixelationPassNode.js +12 -5
- package/src/nodes/display/PosterizeNode.js +6 -3
- package/src/nodes/display/RGBShiftNode.js +6 -3
- package/src/nodes/display/RenderOutputNode.js +12 -8
- package/src/nodes/display/SSAAPassNode.js +6 -3
- package/src/nodes/display/ScreenNode.js +181 -0
- package/src/nodes/display/SobelOperatorNode.js +6 -3
- package/src/nodes/display/StereoCompositePassNode.js +6 -3
- package/src/nodes/display/StereoPassNode.js +6 -3
- package/src/nodes/display/ToneMappingFunctions.js +12 -12
- package/src/nodes/display/ToneMappingNode.js +8 -7
- package/src/nodes/display/ToonOutlinePassNode.js +111 -0
- package/src/nodes/display/TransitionNode.js +6 -3
- package/src/nodes/display/ViewportDepthNode.js +7 -3
- package/src/nodes/display/ViewportDepthTextureNode.js +8 -5
- package/src/nodes/display/ViewportSharedTextureNode.js +8 -5
- package/src/nodes/display/ViewportTextureNode.js +8 -5
- package/src/nodes/fog/FogExp2Node.js +6 -3
- package/src/nodes/fog/FogNode.js +7 -3
- package/src/nodes/fog/FogRangeNode.js +6 -3
- package/src/nodes/functions/PhysicalLightingModel.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +7 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
- package/src/nodes/gpgpu/BarrierNode.js +40 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
- package/src/nodes/gpgpu/ComputeNode.js +8 -4
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
- package/src/nodes/lighting/AONode.js +6 -3
- package/src/nodes/lighting/AmbientLightNode.js +6 -3
- package/src/nodes/lighting/AnalyticLightNode.js +198 -30
- package/src/nodes/lighting/BasicEnvironmentNode.js +6 -3
- package/src/nodes/lighting/BasicLightMapNode.js +6 -3
- package/src/nodes/lighting/DirectionalLightNode.js +7 -4
- package/src/nodes/lighting/EnvironmentNode.js +6 -3
- package/src/nodes/lighting/HemisphereLightNode.js +10 -6
- package/src/nodes/lighting/IESSpotLightNode.js +6 -3
- package/src/nodes/lighting/IrradianceNode.js +6 -3
- package/src/nodes/lighting/LightProbeNode.js +8 -31
- package/src/nodes/lighting/LightingContextNode.js +6 -3
- package/src/nodes/lighting/LightingNode.js +7 -3
- package/src/nodes/lighting/LightsNode.js +24 -5
- package/src/nodes/lighting/PointLightNode.js +11 -7
- package/src/nodes/lighting/RectAreaLightNode.js +11 -7
- package/src/nodes/lighting/SpotLightNode.js +13 -10
- package/src/nodes/math/ConditionalNode.js +23 -6
- package/src/nodes/math/MathNode.js +6 -3
- package/src/nodes/math/OperatorNode.js +6 -3
- package/src/nodes/pmrem/PMREMNode.js +6 -3
- package/src/nodes/utils/ArrayElementNode.js +8 -4
- package/src/nodes/utils/ConvertNode.js +7 -3
- package/src/nodes/utils/CubeMapNode.js +6 -3
- package/src/nodes/utils/EquirectUVNode.js +6 -3
- package/src/nodes/utils/FlipNode.js +7 -4
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -3
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +7 -3
- package/src/nodes/utils/MatcapUVNode.js +6 -3
- package/src/nodes/utils/MaxMipLevelNode.js +6 -3
- package/src/nodes/utils/OscNode.js +7 -3
- package/src/nodes/utils/RTTNode.js +6 -3
- package/src/nodes/utils/ReflectorNode.js +8 -5
- package/src/nodes/utils/RemapNode.js +7 -3
- package/src/nodes/utils/RotateNode.js +6 -3
- package/src/nodes/utils/SetNode.js +7 -4
- package/src/nodes/utils/SplitNode.js +7 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +7 -3
- package/src/nodes/utils/StorageArrayElementNode.js +9 -8
- package/src/nodes/utils/TimerNode.js +6 -3
- package/src/nodes/utils/TriplanarTexturesNode.js +7 -3
- package/src/nodes/utils/ViewportUtils.js +2 -2
- package/src/objects/BatchedMesh.js +76 -10
- package/src/objects/LOD.js +21 -0
- package/src/objects/Line.js +1 -0
- package/src/objects/Mesh.js +7 -23
- package/src/objects/Points.js +2 -0
- package/src/renderers/WebGLRenderer.js +65 -50
- package/src/renderers/common/BundleGroup.js +26 -0
- package/src/renderers/common/ClippingContext.js +4 -3
- package/src/renderers/common/RenderContext.js +4 -5
- package/src/renderers/common/RenderObject.js +116 -5
- package/src/renderers/common/RenderObjects.js +8 -1
- package/src/renderers/common/Renderer.js +57 -49
- package/src/renderers/common/extras/PMREMGenerator.js +7 -9
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +33 -14
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLCapabilities.js +9 -0
- package/src/renderers/webgl/WebGLProgram.js +2 -0
- package/src/renderers/webgl/WebGLPrograms.js +21 -17
- package/src/renderers/webgl/WebGLState.js +21 -0
- package/src/renderers/webgl/WebGLTextures.js +22 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +50 -45
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +6 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +1 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +61 -16
- package/src/renderers/webgpu/WebGPUBackend.js +33 -25
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
- package/src/renderers/webgpu/WebGPURenderer.js +5 -2
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
- package/src/renderers/{common → webgpu}/nodes/StandardNodeLibrary.js +11 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +91 -11
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +6 -16
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +7 -5
- package/src/renderers/webgpu/utils/WebGPUUtils.js +1 -1
- package/src/utils.js +33 -1
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/display/ViewportNode.js +0 -138
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/renderers/common/StandardRenderer.js +0 -18
- package/src/renderers/webvr/WebVRManager.js +0 -495
- package/src/renderers/webvr/WebVRUtils.js +0 -66
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
3
|
import { uniform } from '../core/UniformNode.js';
|
|
4
4
|
import { nodeObject } from '../tsl/TSLCore.js';
|
|
@@ -6,6 +6,12 @@ import ArrayElementNode from '../utils/ArrayElementNode.js';
|
|
|
6
6
|
|
|
7
7
|
class ReferenceElementNode extends ArrayElementNode {
|
|
8
8
|
|
|
9
|
+
static get type() {
|
|
10
|
+
|
|
11
|
+
return 'ReferenceElementNode';
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
9
15
|
constructor( referenceNode, indexNode ) {
|
|
10
16
|
|
|
11
17
|
super( referenceNode, indexNode );
|
|
@@ -36,6 +42,12 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
36
42
|
|
|
37
43
|
class ReferenceBaseNode extends Node {
|
|
38
44
|
|
|
45
|
+
static get type() {
|
|
46
|
+
|
|
47
|
+
return 'ReferenceBaseNode';
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
39
51
|
constructor( property, uniformType, object = null, count = null ) {
|
|
40
52
|
|
|
41
53
|
super();
|
|
@@ -48,11 +60,20 @@ class ReferenceBaseNode extends Node {
|
|
|
48
60
|
this.properties = property.split( '.' );
|
|
49
61
|
this.reference = object;
|
|
50
62
|
this.node = null;
|
|
63
|
+
this.group = null;
|
|
51
64
|
|
|
52
65
|
this.updateType = NodeUpdateType.OBJECT;
|
|
53
66
|
|
|
54
67
|
}
|
|
55
68
|
|
|
69
|
+
setGroup( group ) {
|
|
70
|
+
|
|
71
|
+
this.group = group;
|
|
72
|
+
|
|
73
|
+
return this;
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
56
77
|
element( indexNode ) {
|
|
57
78
|
|
|
58
79
|
return nodeObject( new ReferenceElementNode( this, nodeObject( indexNode ) ) );
|
|
@@ -61,7 +82,15 @@ class ReferenceBaseNode extends Node {
|
|
|
61
82
|
|
|
62
83
|
setNodeType( uniformType ) {
|
|
63
84
|
|
|
64
|
-
|
|
85
|
+
const node = uniform( null, uniformType ).getSelf();
|
|
86
|
+
|
|
87
|
+
if ( this.group !== null ) {
|
|
88
|
+
|
|
89
|
+
node.setGroup( this.group );
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
this.node = node;
|
|
65
94
|
|
|
66
95
|
}
|
|
67
96
|
|
|
@@ -69,6 +98,7 @@ class ReferenceBaseNode extends Node {
|
|
|
69
98
|
|
|
70
99
|
if ( this.node === null ) {
|
|
71
100
|
|
|
101
|
+
this.updateReference( builder );
|
|
72
102
|
this.updateValue();
|
|
73
103
|
|
|
74
104
|
}
|
|
@@ -137,7 +167,5 @@ class ReferenceBaseNode extends Node {
|
|
|
137
167
|
|
|
138
168
|
export default ReferenceBaseNode;
|
|
139
169
|
|
|
140
|
-
ReferenceBaseNode.type = /*@__PURE__*/ registerNode( 'ReferenceBase', ReferenceBaseNode );
|
|
141
|
-
|
|
142
170
|
export const reference = ( name, type, object ) => nodeObject( new ReferenceBaseNode( name, type, object ) );
|
|
143
171
|
export const referenceBuffer = ( name, type, count, object ) => nodeObject( new ReferenceBaseNode( name, type, object, count ) );
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
3
|
import { uniform } from '../core/UniformNode.js';
|
|
4
4
|
import { texture } from './TextureNode.js';
|
|
@@ -10,6 +10,12 @@ import ArrayElementNode from '../utils/ArrayElementNode.js';
|
|
|
10
10
|
|
|
11
11
|
class ReferenceElementNode extends ArrayElementNode {
|
|
12
12
|
|
|
13
|
+
static get type() {
|
|
14
|
+
|
|
15
|
+
return 'ReferenceElementNode';
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
constructor( referenceNode, indexNode ) {
|
|
14
20
|
|
|
15
21
|
super( referenceNode, indexNode );
|
|
@@ -41,6 +47,12 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
41
47
|
// TODO: Extends this from ReferenceBaseNode
|
|
42
48
|
class ReferenceNode extends Node {
|
|
43
49
|
|
|
50
|
+
static get type() {
|
|
51
|
+
|
|
52
|
+
return 'ReferenceNode';
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
|
|
44
56
|
constructor( property, uniformType, object = null, count = null ) {
|
|
45
57
|
|
|
46
58
|
super();
|
|
@@ -53,6 +65,8 @@ class ReferenceNode extends Node {
|
|
|
53
65
|
this.properties = property.split( '.' );
|
|
54
66
|
this.reference = object;
|
|
55
67
|
this.node = null;
|
|
68
|
+
this.group = null;
|
|
69
|
+
this.name = null;
|
|
56
70
|
|
|
57
71
|
this.updateType = NodeUpdateType.OBJECT;
|
|
58
72
|
|
|
@@ -64,6 +78,22 @@ class ReferenceNode extends Node {
|
|
|
64
78
|
|
|
65
79
|
}
|
|
66
80
|
|
|
81
|
+
setGroup( group ) {
|
|
82
|
+
|
|
83
|
+
this.group = group;
|
|
84
|
+
|
|
85
|
+
return this;
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
label( name ) {
|
|
90
|
+
|
|
91
|
+
this.name = name;
|
|
92
|
+
|
|
93
|
+
return this;
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
67
97
|
setNodeType( uniformType ) {
|
|
68
98
|
|
|
69
99
|
let node = null;
|
|
@@ -90,6 +120,14 @@ class ReferenceNode extends Node {
|
|
|
90
120
|
|
|
91
121
|
}
|
|
92
122
|
|
|
123
|
+
if ( this.group !== null ) {
|
|
124
|
+
|
|
125
|
+
node.setGroup( this.group );
|
|
126
|
+
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if ( this.name !== null ) node.label( this.name );
|
|
130
|
+
|
|
93
131
|
this.node = node.getSelf();
|
|
94
132
|
|
|
95
133
|
}
|
|
@@ -98,6 +136,7 @@ class ReferenceNode extends Node {
|
|
|
98
136
|
|
|
99
137
|
if ( this.node === null ) {
|
|
100
138
|
|
|
139
|
+
this.updateReference( builder );
|
|
101
140
|
this.updateValue();
|
|
102
141
|
|
|
103
142
|
}
|
|
@@ -166,7 +205,5 @@ class ReferenceNode extends Node {
|
|
|
166
205
|
|
|
167
206
|
export default ReferenceNode;
|
|
168
207
|
|
|
169
|
-
ReferenceNode.type = /*@__PURE__*/ registerNode( 'Reference', ReferenceNode );
|
|
170
|
-
|
|
171
208
|
export const reference = ( name, type, object ) => nodeObject( new ReferenceNode( name, type, object ) );
|
|
172
209
|
export const referenceBuffer = ( name, type, count, object ) => nodeObject( new ReferenceNode( name, type, object, count ) );
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import ReferenceBaseNode from './ReferenceBaseNode.js';
|
|
3
2
|
import { nodeObject } from '../tsl/TSLCore.js';
|
|
3
|
+
import { renderGroup } from '../core/UniformGroupNode.js';
|
|
4
4
|
|
|
5
5
|
class RendererReferenceNode extends ReferenceBaseNode {
|
|
6
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'RendererReferenceNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
constructor( property, inputType, renderer = null ) {
|
|
8
14
|
|
|
9
15
|
super( property, inputType, renderer );
|
|
10
16
|
|
|
11
17
|
this.renderer = renderer;
|
|
12
18
|
|
|
19
|
+
this.setGroup( renderGroup );
|
|
20
|
+
|
|
13
21
|
}
|
|
14
22
|
|
|
15
23
|
updateReference( state ) {
|
|
@@ -24,6 +32,4 @@ class RendererReferenceNode extends ReferenceBaseNode {
|
|
|
24
32
|
|
|
25
33
|
export default RendererReferenceNode;
|
|
26
34
|
|
|
27
|
-
RendererReferenceNode.type = /*@__PURE__*/ registerNode( 'RendererReference', RendererReferenceNode );
|
|
28
|
-
|
|
29
35
|
export const rendererReference = ( name, type, renderer ) => nodeObject( new RendererReferenceNode( name, type, renderer ) );
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeImmutable } from '../tsl/TSLBase.js';
|
|
3
3
|
import { reference } from './ReferenceNode.js';
|
|
4
4
|
|
|
5
5
|
class SceneNode extends Node {
|
|
6
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'SceneNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
constructor( scope = SceneNode.BACKGROUND_BLURRINESS, scene = null ) {
|
|
8
14
|
|
|
9
15
|
super();
|
|
@@ -45,7 +51,5 @@ SceneNode.BACKGROUND_INTENSITY = 'backgroundIntensity';
|
|
|
45
51
|
|
|
46
52
|
export default SceneNode;
|
|
47
53
|
|
|
48
|
-
SceneNode.type = /*@__PURE__*/ registerNode( 'Scene', SceneNode );
|
|
49
|
-
|
|
50
54
|
export const backgroundBlurriness = /*@__PURE__*/ nodeImmutable( SceneNode, SceneNode.BACKGROUND_BLURRINESS );
|
|
51
55
|
export const backgroundIntensity = /*@__PURE__*/ nodeImmutable( SceneNode, SceneNode.BACKGROUND_INTENSITY );
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
3
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
4
4
|
import { attribute } from '../core/AttributeNode.js';
|
|
@@ -14,6 +14,12 @@ const _frameId = new WeakMap();
|
|
|
14
14
|
|
|
15
15
|
class SkinningNode extends Node {
|
|
16
16
|
|
|
17
|
+
static get type() {
|
|
18
|
+
|
|
19
|
+
return 'SkinningNode';
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
constructor( skinnedMesh, useReference = false ) {
|
|
18
24
|
|
|
19
25
|
super( 'void' );
|
|
@@ -181,7 +187,5 @@ class SkinningNode extends Node {
|
|
|
181
187
|
|
|
182
188
|
export default SkinningNode;
|
|
183
189
|
|
|
184
|
-
SkinningNode.type = /*@__PURE__*/ registerNode( 'Skinning', SkinningNode );
|
|
185
|
-
|
|
186
190
|
export const skinning = ( skinnedMesh ) => nodeObject( new SkinningNode( skinnedMesh ) );
|
|
187
191
|
export const skinningReference = ( skinnedMesh ) => nodeObject( new SkinningNode( skinnedMesh, true ) );
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import BufferNode from './BufferNode.js';
|
|
3
2
|
import { bufferAttribute } from './BufferAttributeNode.js';
|
|
4
3
|
import { nodeObject, varying } from '../tsl/TSLBase.js';
|
|
@@ -7,6 +6,12 @@ import { GPUBufferBindingType } from '../../renderers/webgpu/utils/WebGPUConstan
|
|
|
7
6
|
|
|
8
7
|
class StorageBufferNode extends BufferNode {
|
|
9
8
|
|
|
9
|
+
static get type() {
|
|
10
|
+
|
|
11
|
+
return 'StorageBufferNode';
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
10
15
|
constructor( value, bufferType, bufferCount = 0 ) {
|
|
11
16
|
|
|
12
17
|
super( value, bufferType, bufferCount );
|
|
@@ -14,6 +19,7 @@ class StorageBufferNode extends BufferNode {
|
|
|
14
19
|
this.isStorageBufferNode = true;
|
|
15
20
|
|
|
16
21
|
this.access = GPUBufferBindingType.Storage;
|
|
22
|
+
this.isAtomic = false;
|
|
17
23
|
|
|
18
24
|
this.bufferObject = false;
|
|
19
25
|
this.bufferCount = bufferCount;
|
|
@@ -92,6 +98,20 @@ class StorageBufferNode extends BufferNode {
|
|
|
92
98
|
|
|
93
99
|
}
|
|
94
100
|
|
|
101
|
+
setAtomic( value ) {
|
|
102
|
+
|
|
103
|
+
this.isAtomic = value;
|
|
104
|
+
|
|
105
|
+
return this;
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
toAtomic() {
|
|
110
|
+
|
|
111
|
+
return this.setAtomic( true );
|
|
112
|
+
|
|
113
|
+
}
|
|
114
|
+
|
|
95
115
|
generate( builder ) {
|
|
96
116
|
|
|
97
117
|
if ( builder.isAvailable( 'storageBuffer' ) ) {
|
|
@@ -122,8 +142,6 @@ class StorageBufferNode extends BufferNode {
|
|
|
122
142
|
|
|
123
143
|
export default StorageBufferNode;
|
|
124
144
|
|
|
125
|
-
StorageBufferNode.type = /*@__PURE__*/ registerNode( 'StorageBuffer', StorageBufferNode );
|
|
126
|
-
|
|
127
145
|
// Read-Write Storage
|
|
128
146
|
export const storage = ( value, type, count ) => nodeObject( new StorageBufferNode( value, type, count ) );
|
|
129
147
|
export const storageObject = ( value, type, count ) => nodeObject( new StorageBufferNode( value, type, count ).setBufferObject( true ) );
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TextureNode from './TextureNode.js';
|
|
3
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
4
3
|
import { GPUStorageTextureAccess } from '../../renderers/webgpu/utils/WebGPUConstants.js';
|
|
5
4
|
|
|
6
5
|
class StorageTextureNode extends TextureNode {
|
|
7
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'StorageTextureNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
constructor( value, uvNode, storeNode = null ) {
|
|
9
14
|
|
|
10
15
|
super( value, uvNode );
|
|
@@ -81,7 +86,7 @@ class StorageTextureNode extends TextureNode {
|
|
|
81
86
|
|
|
82
87
|
const snippet = builder.generateTextureStore( builder, textureProperty, uvSnippet, storeSnippet );
|
|
83
88
|
|
|
84
|
-
builder.addLineFlowCode( snippet );
|
|
89
|
+
builder.addLineFlowCode( snippet, this );
|
|
85
90
|
|
|
86
91
|
}
|
|
87
92
|
|
|
@@ -89,8 +94,6 @@ class StorageTextureNode extends TextureNode {
|
|
|
89
94
|
|
|
90
95
|
export default StorageTextureNode;
|
|
91
96
|
|
|
92
|
-
StorageTextureNode.type = /*@__PURE__*/ registerNode( 'StorageTexture', StorageTextureNode );
|
|
93
|
-
|
|
94
97
|
export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode );
|
|
95
98
|
|
|
96
99
|
export const textureStore = ( value, uvNode, storeNode ) => {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TextureNode from './TextureNode.js';
|
|
3
2
|
import { nodeProxy, vec3, Fn, If } from '../tsl/TSLBase.js';
|
|
4
3
|
|
|
@@ -6,7 +5,7 @@ const normal = Fn( ( { texture, uv } ) => {
|
|
|
6
5
|
|
|
7
6
|
const epsilon = 0.0001;
|
|
8
7
|
|
|
9
|
-
const ret = vec3().
|
|
8
|
+
const ret = vec3().toVar();
|
|
10
9
|
|
|
11
10
|
If( uv.x.lessThan( epsilon ), () => {
|
|
12
11
|
|
|
@@ -51,6 +50,12 @@ const normal = Fn( ( { texture, uv } ) => {
|
|
|
51
50
|
|
|
52
51
|
class Texture3DNode extends TextureNode {
|
|
53
52
|
|
|
53
|
+
static get type() {
|
|
54
|
+
|
|
55
|
+
return 'Texture3DNode';
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
|
|
54
59
|
constructor( value, uvNode = null, levelNode = null ) {
|
|
55
60
|
|
|
56
61
|
super( value, uvNode, levelNode );
|
|
@@ -95,6 +100,4 @@ class Texture3DNode extends TextureNode {
|
|
|
95
100
|
|
|
96
101
|
export default Texture3DNode;
|
|
97
102
|
|
|
98
|
-
Texture3DNode.type = /*@__PURE__*/ registerNode( 'Texture3D', Texture3DNode );
|
|
99
|
-
|
|
100
103
|
export const texture3D = /*@__PURE__*/ nodeProxy( Texture3DNode );
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import UniformNode, { uniform } from '../core/UniformNode.js';
|
|
3
2
|
import { uv } from './UV.js';
|
|
4
3
|
import { textureSize } from './TextureSizeNode.js';
|
|
5
|
-
import {
|
|
4
|
+
import { colorSpaceToWorking } from '../display/ColorSpaceNode.js';
|
|
6
5
|
import { expression } from '../code/ExpressionNode.js';
|
|
7
6
|
import { maxMipLevel } from '../utils/MaxMipLevelNode.js';
|
|
8
|
-
import { nodeProxy, vec3, nodeObject } from '../tsl/TSLBase.js';
|
|
7
|
+
import { nodeProxy, vec3, nodeObject, int } from '../tsl/TSLBase.js';
|
|
9
8
|
import { NodeUpdateType } from '../core/constants.js';
|
|
10
9
|
|
|
11
10
|
import { IntType, UnsignedIntType } from '../../constants.js';
|
|
12
11
|
|
|
13
12
|
class TextureNode extends UniformNode {
|
|
14
13
|
|
|
14
|
+
static get type() {
|
|
15
|
+
|
|
16
|
+
return 'TextureNode';
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
15
20
|
constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
|
|
16
21
|
|
|
17
22
|
super( value );
|
|
@@ -123,7 +128,15 @@ class TextureNode extends UniformNode {
|
|
|
123
128
|
|
|
124
129
|
if ( builder.isFlipY() && ( texture.isRenderTargetTexture === true || texture.isFramebufferTexture === true || texture.isDepthTexture === true ) ) {
|
|
125
130
|
|
|
126
|
-
|
|
131
|
+
if ( this.sampler ) {
|
|
132
|
+
|
|
133
|
+
uvNode = uvNode.flipY();
|
|
134
|
+
|
|
135
|
+
} else {
|
|
136
|
+
|
|
137
|
+
uvNode = uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) );
|
|
138
|
+
|
|
139
|
+
}
|
|
127
140
|
|
|
128
141
|
}
|
|
129
142
|
|
|
@@ -264,7 +277,7 @@ class TextureNode extends UniformNode {
|
|
|
264
277
|
|
|
265
278
|
const snippet = this.generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet );
|
|
266
279
|
|
|
267
|
-
builder.addLineFlowCode( `${propertyName} = ${snippet}
|
|
280
|
+
builder.addLineFlowCode( `${propertyName} = ${snippet}`, this );
|
|
268
281
|
|
|
269
282
|
nodeData.snippet = snippet;
|
|
270
283
|
nodeData.propertyName = propertyName;
|
|
@@ -276,7 +289,7 @@ class TextureNode extends UniformNode {
|
|
|
276
289
|
|
|
277
290
|
if ( builder.needsToWorkingColorSpace( texture ) ) {
|
|
278
291
|
|
|
279
|
-
snippet =
|
|
292
|
+
snippet = colorSpaceToWorking( expression( snippet, nodeType ), texture.colorSpace ).setup( builder ).build( builder, nodeType );
|
|
280
293
|
|
|
281
294
|
}
|
|
282
295
|
|
|
@@ -430,8 +443,6 @@ class TextureNode extends UniformNode {
|
|
|
430
443
|
|
|
431
444
|
export default TextureNode;
|
|
432
445
|
|
|
433
|
-
TextureNode.type = /*@__PURE__*/ registerNode( 'Texture', TextureNode );
|
|
434
|
-
|
|
435
446
|
export const texture = /*@__PURE__*/ nodeProxy( TextureNode );
|
|
436
447
|
export const textureLoad = ( ...params ) => texture( ...params ).setSampler( false );
|
|
437
448
|
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import Node from '../core/Node.js';
|
|
3
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
4
3
|
|
|
5
4
|
class TextureSizeNode extends Node {
|
|
6
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'TextureSizeNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
constructor( textureNode, levelNode = null ) {
|
|
8
13
|
|
|
9
14
|
super( 'uvec2' );
|
|
@@ -18,9 +23,9 @@ class TextureSizeNode extends Node {
|
|
|
18
23
|
generate( builder, output ) {
|
|
19
24
|
|
|
20
25
|
const textureProperty = this.textureNode.build( builder, 'property' );
|
|
21
|
-
const
|
|
26
|
+
const level = this.levelNode === null ? '0' : this.levelNode.build( builder, 'int' );
|
|
22
27
|
|
|
23
|
-
return builder.format( `${ builder.getMethod( 'textureDimensions' ) }( ${ textureProperty }, ${
|
|
28
|
+
return builder.format( `${ builder.getMethod( 'textureDimensions' ) }( ${ textureProperty }, ${ level } )`, this.getNodeType( builder ), output );
|
|
24
29
|
|
|
25
30
|
}
|
|
26
31
|
|
|
@@ -28,6 +33,4 @@ class TextureSizeNode extends Node {
|
|
|
28
33
|
|
|
29
34
|
export default TextureSizeNode;
|
|
30
35
|
|
|
31
|
-
TextureSizeNode.type = /*@__PURE__*/ registerNode( 'TextureSize', TextureSizeNode );
|
|
32
|
-
|
|
33
36
|
export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode );
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
4
3
|
import { getValueType } from '../core/NodeUtils.js';
|
|
@@ -7,17 +6,17 @@ import BufferNode from './BufferNode.js';
|
|
|
7
6
|
|
|
8
7
|
class UniformArrayElementNode extends ArrayElementNode {
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
super( arrayBuffer, indexNode );
|
|
9
|
+
static get type() {
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
return 'UniformArrayElementNode';
|
|
15
12
|
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
constructor( arrayBuffer, indexNode ) {
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
super( arrayBuffer, indexNode );
|
|
18
|
+
|
|
19
|
+
this.isArrayBufferElementNode = true;
|
|
21
20
|
|
|
22
21
|
}
|
|
23
22
|
|
|
@@ -34,6 +33,12 @@ class UniformArrayElementNode extends ArrayElementNode {
|
|
|
34
33
|
|
|
35
34
|
class UniformArrayNode extends BufferNode {
|
|
36
35
|
|
|
36
|
+
static get type() {
|
|
37
|
+
|
|
38
|
+
return 'UniformArrayNode';
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
37
42
|
constructor( value, elementType = null ) {
|
|
38
43
|
|
|
39
44
|
super( null, 'vec4' );
|
|
@@ -141,8 +146,6 @@ class UniformArrayNode extends BufferNode {
|
|
|
141
146
|
|
|
142
147
|
export default UniformArrayNode;
|
|
143
148
|
|
|
144
|
-
UniformArrayNode.type = /*@__PURE__*/ registerNode( 'UniformArray', UniformArrayNode );
|
|
145
|
-
|
|
146
149
|
export const uniformArray = ( values, nodeType ) => nodeObject( new UniformArrayNode( values, nodeType ) );
|
|
147
150
|
|
|
148
151
|
//
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import ReferenceNode from './ReferenceNode.js';
|
|
3
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
4
3
|
|
|
5
4
|
class UserDataNode extends ReferenceNode {
|
|
6
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'UserDataNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
constructor( property, inputType, userData = null ) {
|
|
8
13
|
|
|
9
14
|
super( property, inputType, userData );
|
|
@@ -12,11 +17,11 @@ class UserDataNode extends ReferenceNode {
|
|
|
12
17
|
|
|
13
18
|
}
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
updateReference( state ) {
|
|
16
21
|
|
|
17
|
-
this.reference = this.userData !== null ? this.userData :
|
|
22
|
+
this.reference = this.userData !== null ? this.userData : state.object.userData;
|
|
18
23
|
|
|
19
|
-
|
|
24
|
+
return this.reference;
|
|
20
25
|
|
|
21
26
|
}
|
|
22
27
|
|
|
@@ -24,6 +29,4 @@ class UserDataNode extends ReferenceNode {
|
|
|
24
29
|
|
|
25
30
|
export default UserDataNode;
|
|
26
31
|
|
|
27
|
-
UserDataNode.type = /*@__PURE__*/ registerNode( 'UserData', UserDataNode );
|
|
28
|
-
|
|
29
32
|
export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );
|