super-three 0.168.0 → 0.169.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 +369 -131
- package/build/three.module.js +369 -131
- 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 +64 -41
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeObject, nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
4
|
const sortLights = ( lights ) => {
|
|
@@ -23,8 +23,16 @@ const getLightNodeById = ( id, lightNodes ) => {
|
|
|
23
23
|
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
+
const _lightsNodeRef = /*@__PURE__*/ new WeakMap();
|
|
27
|
+
|
|
26
28
|
class LightsNode extends Node {
|
|
27
29
|
|
|
30
|
+
static get type() {
|
|
31
|
+
|
|
32
|
+
return 'LightsNode';
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
|
|
28
36
|
constructor( lights = [] ) {
|
|
29
37
|
|
|
30
38
|
super( 'vec3' );
|
|
@@ -106,14 +114,27 @@ class LightsNode extends Node {
|
|
|
106
114
|
|
|
107
115
|
const lightNodeClass = nodeLibrary.getLightNodeClass( light.constructor );
|
|
108
116
|
|
|
109
|
-
if ( lightNodeClass ===
|
|
117
|
+
if ( lightNodeClass === null ) {
|
|
110
118
|
|
|
111
119
|
console.warn( `LightsNode.setupNodeLights: Light node not found for ${ light.constructor.name }` );
|
|
112
120
|
continue;
|
|
113
121
|
|
|
114
122
|
}
|
|
115
123
|
|
|
116
|
-
|
|
124
|
+
let lightNode = null;
|
|
125
|
+
|
|
126
|
+
if ( ! _lightsNodeRef.has( light ) ) {
|
|
127
|
+
|
|
128
|
+
lightNode = new lightNodeClass( light );
|
|
129
|
+
_lightsNodeRef.set( light, lightNode );
|
|
130
|
+
|
|
131
|
+
} else {
|
|
132
|
+
|
|
133
|
+
lightNode = _lightsNodeRef.get( light );
|
|
134
|
+
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
lightNodes.push( lightNode );
|
|
117
138
|
|
|
118
139
|
}
|
|
119
140
|
|
|
@@ -226,6 +247,4 @@ class LightsNode extends Node {
|
|
|
226
247
|
|
|
227
248
|
export default LightsNode;
|
|
228
249
|
|
|
229
|
-
LightsNode.type = /*@__PURE__*/ registerNode( 'Lights', LightsNode );
|
|
230
|
-
|
|
231
250
|
export const lights = /*@__PURE__*/ nodeProxy( LightsNode );
|
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import AnalyticLightNode from './AnalyticLightNode.js';
|
|
3
2
|
import { getDistanceAttenuation } from './LightUtils.js';
|
|
4
3
|
import { uniform } from '../core/UniformNode.js';
|
|
5
|
-
import {
|
|
4
|
+
import { lightViewPosition } from '../accessors/Lights.js';
|
|
6
5
|
import { positionView } from '../accessors/Position.js';
|
|
6
|
+
import { renderGroup } from '../TSL.js';
|
|
7
7
|
|
|
8
8
|
class PointLightNode extends AnalyticLightNode {
|
|
9
9
|
|
|
10
|
+
static get type() {
|
|
11
|
+
|
|
12
|
+
return 'PointLightNode';
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
10
16
|
constructor( light = null ) {
|
|
11
17
|
|
|
12
18
|
super( light );
|
|
13
19
|
|
|
14
|
-
this.cutoffDistanceNode = uniform( 0 );
|
|
15
|
-
this.decayExponentNode = uniform( 0 );
|
|
20
|
+
this.cutoffDistanceNode = uniform( 0 ).setGroup( renderGroup );
|
|
21
|
+
this.decayExponentNode = uniform( 0 ).setGroup( renderGroup );
|
|
16
22
|
|
|
17
23
|
}
|
|
18
24
|
|
|
@@ -33,7 +39,7 @@ class PointLightNode extends AnalyticLightNode {
|
|
|
33
39
|
|
|
34
40
|
const lightingModel = builder.context.lightingModel;
|
|
35
41
|
|
|
36
|
-
const lVector =
|
|
42
|
+
const lVector = lightViewPosition( light ).sub( positionView ); // @TODO: Add it into LightNode
|
|
37
43
|
|
|
38
44
|
const lightDirection = lVector.normalize();
|
|
39
45
|
const lightDistance = lVector.length();
|
|
@@ -59,5 +65,3 @@ class PointLightNode extends AnalyticLightNode {
|
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
export default PointLightNode;
|
|
62
|
-
|
|
63
|
-
PointLightNode.type = /*@__PURE__*/ registerNode( 'PointLight', PointLightNode );
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import AnalyticLightNode from './AnalyticLightNode.js';
|
|
3
2
|
import { texture } from '../accessors/TextureNode.js';
|
|
4
3
|
import { uniform } from '../core/UniformNode.js';
|
|
5
|
-
import {
|
|
4
|
+
import { lightViewPosition } from '../accessors/Lights.js';
|
|
5
|
+
import { renderGroup } from '../core/UniformGroupNode.js';
|
|
6
6
|
|
|
7
7
|
import { Matrix4 } from '../../math/Matrix4.js';
|
|
8
8
|
import { Vector3 } from '../../math/Vector3.js';
|
|
@@ -14,12 +14,18 @@ let ltcLib = null;
|
|
|
14
14
|
|
|
15
15
|
class RectAreaLightNode extends AnalyticLightNode {
|
|
16
16
|
|
|
17
|
+
static get type() {
|
|
18
|
+
|
|
19
|
+
return 'RectAreaLightNode';
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
constructor( light = null ) {
|
|
18
24
|
|
|
19
25
|
super( light );
|
|
20
26
|
|
|
21
|
-
this.halfHeight = uniform( new Vector3() );
|
|
22
|
-
this.halfWidth = uniform( new Vector3() );
|
|
27
|
+
this.halfHeight = uniform( new Vector3() ).setGroup( renderGroup );
|
|
28
|
+
this.halfWidth = uniform( new Vector3() ).setGroup( renderGroup );
|
|
23
29
|
|
|
24
30
|
}
|
|
25
31
|
|
|
@@ -65,7 +71,7 @@ class RectAreaLightNode extends AnalyticLightNode {
|
|
|
65
71
|
const { colorNode, light } = this;
|
|
66
72
|
const lightingModel = builder.context.lightingModel;
|
|
67
73
|
|
|
68
|
-
const lightPosition =
|
|
74
|
+
const lightPosition = lightViewPosition( light );
|
|
69
75
|
const reflectedLight = builder.context.reflectedLight;
|
|
70
76
|
|
|
71
77
|
lightingModel.directRectArea( {
|
|
@@ -89,5 +95,3 @@ class RectAreaLightNode extends AnalyticLightNode {
|
|
|
89
95
|
}
|
|
90
96
|
|
|
91
97
|
export default RectAreaLightNode;
|
|
92
|
-
|
|
93
|
-
RectAreaLightNode.type = /*@__PURE__*/ registerNode( 'RectAreaLight', RectAreaLightNode );
|
|
@@ -1,23 +1,28 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import AnalyticLightNode from './AnalyticLightNode.js';
|
|
3
|
-
import { lightTargetDirection } from './LightNode.js';
|
|
4
2
|
import { getDistanceAttenuation } from './LightUtils.js';
|
|
5
3
|
import { uniform } from '../core/UniformNode.js';
|
|
6
4
|
import { smoothstep } from '../math/MathNode.js';
|
|
7
|
-
import { objectViewPosition } from '../accessors/Object3DNode.js';
|
|
8
5
|
import { positionView } from '../accessors/Position.js';
|
|
6
|
+
import { renderGroup } from '../core/UniformGroupNode.js';
|
|
7
|
+
import { lightViewPosition, lightTargetDirection } from '../accessors/Lights.js';
|
|
9
8
|
|
|
10
9
|
class SpotLightNode extends AnalyticLightNode {
|
|
11
10
|
|
|
11
|
+
static get type() {
|
|
12
|
+
|
|
13
|
+
return 'SpotLightNode';
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
constructor( light = null ) {
|
|
13
18
|
|
|
14
19
|
super( light );
|
|
15
20
|
|
|
16
|
-
this.coneCosNode = uniform( 0 );
|
|
17
|
-
this.penumbraCosNode = uniform( 0 );
|
|
21
|
+
this.coneCosNode = uniform( 0 ).setGroup( renderGroup );
|
|
22
|
+
this.penumbraCosNode = uniform( 0 ).setGroup( renderGroup );
|
|
18
23
|
|
|
19
|
-
this.cutoffDistanceNode = uniform( 0 );
|
|
20
|
-
this.decayExponentNode = uniform( 0 );
|
|
24
|
+
this.cutoffDistanceNode = uniform( 0 ).setGroup( renderGroup );
|
|
25
|
+
this.decayExponentNode = uniform( 0 ).setGroup( renderGroup );
|
|
21
26
|
|
|
22
27
|
}
|
|
23
28
|
|
|
@@ -51,7 +56,7 @@ class SpotLightNode extends AnalyticLightNode {
|
|
|
51
56
|
|
|
52
57
|
const { colorNode, cutoffDistanceNode, decayExponentNode, light } = this;
|
|
53
58
|
|
|
54
|
-
const lVector =
|
|
59
|
+
const lVector = lightViewPosition( light ).sub( positionView ); // @TODO: Add it into LightNode
|
|
55
60
|
|
|
56
61
|
const lightDirection = lVector.normalize();
|
|
57
62
|
const angleCos = lightDirection.dot( lightTargetDirection( light ) );
|
|
@@ -80,5 +85,3 @@ class SpotLightNode extends AnalyticLightNode {
|
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
export default SpotLightNode;
|
|
83
|
-
|
|
84
|
-
SpotLightNode.type = /*@__PURE__*/ registerNode( 'SpotLight', SpotLightNode );
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { property } from '../core/PropertyNode.js';
|
|
3
3
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
4
4
|
|
|
5
5
|
class ConditionalNode extends Node {
|
|
6
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'ConditionalNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
constructor( condNode, ifNode, elseNode = null ) {
|
|
8
14
|
|
|
9
15
|
super();
|
|
@@ -37,10 +43,23 @@ class ConditionalNode extends Node {
|
|
|
37
43
|
|
|
38
44
|
setup( builder ) {
|
|
39
45
|
|
|
46
|
+
const condNode = this.condNode.cache();
|
|
47
|
+
const ifNode = this.ifNode.cache();
|
|
48
|
+
const elseNode = this.elseNode ? this.elseNode.cache() : null;
|
|
49
|
+
|
|
50
|
+
//
|
|
51
|
+
|
|
52
|
+
const currentNodeBlock = builder.context.nodeBlock;
|
|
53
|
+
|
|
54
|
+
builder.getDataFromNode( ifNode ).parentNodeBlock = currentNodeBlock;
|
|
55
|
+
if ( elseNode !== null ) builder.getDataFromNode( elseNode ).parentNodeBlock = currentNodeBlock;
|
|
56
|
+
|
|
57
|
+
//
|
|
58
|
+
|
|
40
59
|
const properties = builder.getNodeProperties( this );
|
|
41
|
-
properties.condNode =
|
|
42
|
-
properties.ifNode =
|
|
43
|
-
properties.elseNode =
|
|
60
|
+
properties.condNode = condNode;
|
|
61
|
+
properties.ifNode = ifNode.context( { nodeBlock: ifNode } );
|
|
62
|
+
properties.elseNode = elseNode ? elseNode.context( { nodeBlock: elseNode } ) : null;
|
|
44
63
|
|
|
45
64
|
}
|
|
46
65
|
|
|
@@ -121,8 +140,6 @@ class ConditionalNode extends Node {
|
|
|
121
140
|
|
|
122
141
|
export default ConditionalNode;
|
|
123
142
|
|
|
124
|
-
ConditionalNode.type = /*@__PURE__*/ registerNode( 'Conditional', ConditionalNode );
|
|
125
|
-
|
|
126
143
|
export const select = /*@__PURE__*/ nodeProxy( ConditionalNode );
|
|
127
144
|
|
|
128
145
|
addMethodChaining( 'select', select );
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { sub, mul, div } from './OperatorNode.js';
|
|
4
3
|
import { addMethodChaining, nodeObject, nodeProxy, float, vec2, vec3, vec4, Fn } from '../tsl/TSLCore.js';
|
|
5
4
|
|
|
6
5
|
class MathNode extends TempNode {
|
|
7
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'MathNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
constructor( method, aNode, bNode = null, cNode = null ) {
|
|
9
14
|
|
|
10
15
|
super();
|
|
@@ -264,8 +269,6 @@ MathNode.FACEFORWARD = 'faceforward';
|
|
|
264
269
|
|
|
265
270
|
export default MathNode;
|
|
266
271
|
|
|
267
|
-
MathNode.type = /*@__PURE__*/ registerNode( 'Math', MathNode );
|
|
268
|
-
|
|
269
272
|
export const EPSILON = /*@__PURE__*/ float( 1e-6 );
|
|
270
273
|
export const INFINITY = /*@__PURE__*/ float( 1e6 );
|
|
271
274
|
export const PI = /*@__PURE__*/ float( Math.PI );
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
4
3
|
|
|
5
4
|
class OperatorNode extends TempNode {
|
|
6
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'OperatorNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
constructor( op, aNode, bNode, ...params ) {
|
|
8
13
|
|
|
9
14
|
super();
|
|
@@ -259,8 +264,6 @@ class OperatorNode extends TempNode {
|
|
|
259
264
|
|
|
260
265
|
export default OperatorNode;
|
|
261
266
|
|
|
262
|
-
OperatorNode.type = /*@__PURE__*/ registerNode( 'Operator', OperatorNode );
|
|
263
|
-
|
|
264
267
|
export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' );
|
|
265
268
|
export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' );
|
|
266
269
|
export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' );
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { texture } from '../accessors/TextureNode.js';
|
|
4
3
|
import { textureCubeUV } from './PMREMUtils.js';
|
|
@@ -74,6 +73,12 @@ function _getPMREMFromTexture( texture ) {
|
|
|
74
73
|
|
|
75
74
|
class PMREMNode extends TempNode {
|
|
76
75
|
|
|
76
|
+
static get type() {
|
|
77
|
+
|
|
78
|
+
return 'PMREMNode';
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
77
82
|
constructor( value, uvNode = null, levelNode = null ) {
|
|
78
83
|
|
|
79
84
|
super( 'vec3' );
|
|
@@ -206,8 +211,6 @@ class PMREMNode extends TempNode {
|
|
|
206
211
|
|
|
207
212
|
export default PMREMNode;
|
|
208
213
|
|
|
209
|
-
PMREMNode.type = /*@__PURE__*/ registerNode( 'PMREM', PMREMNode );
|
|
210
|
-
|
|
211
214
|
function isCubeMapReady( image ) {
|
|
212
215
|
|
|
213
216
|
if ( image === null || image === undefined ) return false;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
|
|
3
|
-
class ArrayElementNode extends Node {
|
|
3
|
+
class ArrayElementNode extends Node {
|
|
4
|
+
|
|
5
|
+
static get type() {
|
|
6
|
+
|
|
7
|
+
return 'ArrayElementNode';
|
|
8
|
+
|
|
9
|
+
} // @TODO: If extending from TempNode it breaks webgpu_compute
|
|
4
10
|
|
|
5
11
|
constructor( node, indexNode ) {
|
|
6
12
|
|
|
@@ -31,5 +37,3 @@ class ArrayElementNode extends Node { // @TODO: If extending from TempNode it br
|
|
|
31
37
|
}
|
|
32
38
|
|
|
33
39
|
export default ArrayElementNode;
|
|
34
|
-
|
|
35
|
-
ArrayElementNode.type = /*@__PURE__*/ registerNode( 'ArrayElement', ArrayElementNode );
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
|
|
3
3
|
class ConvertNode extends Node {
|
|
4
4
|
|
|
5
|
+
static get type() {
|
|
6
|
+
|
|
7
|
+
return 'ConvertNode';
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
5
11
|
constructor( node, convertTo ) {
|
|
6
12
|
|
|
7
13
|
super();
|
|
@@ -61,5 +67,3 @@ class ConvertNode extends Node {
|
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
export default ConvertNode;
|
|
64
|
-
|
|
65
|
-
ConvertNode.type = /*@__PURE__*/ registerNode( 'Convert', ConvertNode );
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
4
3
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
@@ -11,6 +10,12 @@ const _cache = new WeakMap();
|
|
|
11
10
|
|
|
12
11
|
class CubeMapNode extends TempNode {
|
|
13
12
|
|
|
13
|
+
static get type() {
|
|
14
|
+
|
|
15
|
+
return 'CubeMapNode';
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
14
19
|
constructor( envNode ) {
|
|
15
20
|
|
|
16
21
|
super( 'vec3' );
|
|
@@ -112,8 +117,6 @@ class CubeMapNode extends TempNode {
|
|
|
112
117
|
|
|
113
118
|
export default CubeMapNode;
|
|
114
119
|
|
|
115
|
-
CubeMapNode.type = /*@__PURE__*/ registerNode( 'CubeMap', CubeMapNode );
|
|
116
|
-
|
|
117
120
|
function isEquirectangularMapReady( image ) {
|
|
118
121
|
|
|
119
122
|
if ( image === null || image === undefined ) return false;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { positionWorldDirection } from '../accessors/Position.js';
|
|
4
3
|
import { nodeProxy, vec2 } from '../tsl/TSLBase.js';
|
|
5
4
|
|
|
6
5
|
class EquirectUVNode extends TempNode {
|
|
7
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'EquirectUVNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
constructor( dirNode = positionWorldDirection ) {
|
|
9
14
|
|
|
10
15
|
super( 'vec2' );
|
|
@@ -28,6 +33,4 @@ class EquirectUVNode extends TempNode {
|
|
|
28
33
|
|
|
29
34
|
export default EquirectUVNode;
|
|
30
35
|
|
|
31
|
-
EquirectUVNode.type = /*@__PURE__*/ registerNode( 'EquirectUV', EquirectUVNode );
|
|
32
|
-
|
|
33
36
|
export const equirectUV = /*@__PURE__*/ nodeProxy( EquirectUVNode );
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { vectorComponents } from '../core/constants.js';
|
|
4
3
|
|
|
5
4
|
class FlipNode extends TempNode {
|
|
6
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'FlipNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
constructor( sourceNode, components ) {
|
|
8
13
|
|
|
9
14
|
super();
|
|
@@ -29,7 +34,7 @@ class FlipNode extends TempNode {
|
|
|
29
34
|
const sourceCache = builder.getVarFromNode( this );
|
|
30
35
|
const sourceProperty = builder.getPropertyName( sourceCache );
|
|
31
36
|
|
|
32
|
-
builder.addLineFlowCode( sourceProperty + ' = ' + sourceSnippet );
|
|
37
|
+
builder.addLineFlowCode( sourceProperty + ' = ' + sourceSnippet, this );
|
|
33
38
|
|
|
34
39
|
const length = builder.getTypeLength( sourceType );
|
|
35
40
|
const snippetValues = [];
|
|
@@ -61,5 +66,3 @@ class FlipNode extends TempNode {
|
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
export default FlipNode;
|
|
64
|
-
|
|
65
|
-
FlipNode.type = /*@__PURE__*/ registerNode( 'Flip', FlipNode );
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
4
|
class FunctionOverloadingNode extends Node {
|
|
5
5
|
|
|
6
|
+
static get type() {
|
|
7
|
+
|
|
8
|
+
return 'FunctionOverloadingNode';
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
6
12
|
constructor( functionNodes = [], ...parametersNodes ) {
|
|
7
13
|
|
|
8
14
|
super();
|
|
@@ -90,8 +96,6 @@ class FunctionOverloadingNode extends Node {
|
|
|
90
96
|
|
|
91
97
|
export default FunctionOverloadingNode;
|
|
92
98
|
|
|
93
|
-
FunctionOverloadingNode.type = /*@__PURE__*/ registerNode( 'FunctionOverloading', FunctionOverloadingNode );
|
|
94
|
-
|
|
95
99
|
const overloadingBaseFn = /*@__PURE__*/ nodeProxy( FunctionOverloadingNode );
|
|
96
100
|
|
|
97
101
|
export const overloadingFn = ( functionNodes ) => ( ...params ) => overloadingBaseFn( functionNodes, ...params );
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
|
|
4
3
|
class JoinNode extends TempNode {
|
|
5
4
|
|
|
5
|
+
static get type() {
|
|
6
|
+
|
|
7
|
+
return 'JoinNode';
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
6
11
|
constructor( nodes = [], nodeType = null ) {
|
|
7
12
|
|
|
8
13
|
super( nodeType );
|
|
@@ -57,5 +62,3 @@ class JoinNode extends TempNode {
|
|
|
57
62
|
}
|
|
58
63
|
|
|
59
64
|
export default JoinNode;
|
|
60
|
-
|
|
61
|
-
JoinNode.type = /*@__PURE__*/ registerNode( 'Join', JoinNode );
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { expression } from '../code/ExpressionNode.js';
|
|
3
3
|
import { nodeObject, nodeArray } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
5
|
class LoopNode extends Node {
|
|
6
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'LoopNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
constructor( params = [] ) {
|
|
8
14
|
|
|
9
15
|
super();
|
|
@@ -191,8 +197,6 @@ class LoopNode extends Node {
|
|
|
191
197
|
|
|
192
198
|
export default LoopNode;
|
|
193
199
|
|
|
194
|
-
LoopNode.type = /*@__PURE__*/ registerNode( 'Loop', LoopNode );
|
|
195
|
-
|
|
196
200
|
export const Loop = ( ...params ) => nodeObject( new LoopNode( nodeArray( params, 'int' ) ) ).append();
|
|
197
201
|
export const Continue = () => expression( 'continue' ).append();
|
|
198
202
|
export const Break = () => expression( 'break' ).append();
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { transformedNormalView } from '../accessors/Normal.js';
|
|
4
3
|
import { positionViewDirection } from '../accessors/Position.js';
|
|
@@ -6,6 +5,12 @@ import { nodeImmutable, vec2, vec3 } from '../tsl/TSLBase.js';
|
|
|
6
5
|
|
|
7
6
|
class MatcapUVNode extends TempNode {
|
|
8
7
|
|
|
8
|
+
static get type() {
|
|
9
|
+
|
|
10
|
+
return 'MatcapUVNode';
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
|
|
9
14
|
constructor() {
|
|
10
15
|
|
|
11
16
|
super( 'vec2' );
|
|
@@ -25,6 +30,4 @@ class MatcapUVNode extends TempNode {
|
|
|
25
30
|
|
|
26
31
|
export default MatcapUVNode;
|
|
27
32
|
|
|
28
|
-
MatcapUVNode.type = /*@__PURE__*/ registerNode( 'MatcapUV', MatcapUVNode );
|
|
29
|
-
|
|
30
33
|
export const matcapUV = /*@__PURE__*/ nodeImmutable( MatcapUVNode );
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import UniformNode from '../core/UniformNode.js';
|
|
3
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
4
3
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
5
4
|
|
|
6
5
|
class MaxMipLevelNode extends UniformNode {
|
|
7
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'MaxMipLevelNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
constructor( textureNode ) {
|
|
9
14
|
|
|
10
15
|
super( 0 );
|
|
@@ -47,6 +52,4 @@ class MaxMipLevelNode extends UniformNode {
|
|
|
47
52
|
|
|
48
53
|
export default MaxMipLevelNode;
|
|
49
54
|
|
|
50
|
-
MaxMipLevelNode.type = /*@__PURE__*/ registerNode( 'MaxMipLevel', MaxMipLevelNode );
|
|
51
|
-
|
|
52
55
|
export const maxMipLevel = /*@__PURE__*/ nodeProxy( MaxMipLevelNode );
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { timerLocal } from './TimerNode.js';
|
|
3
3
|
import { nodeObject, nodeProxy } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
5
|
class OscNode extends Node {
|
|
6
6
|
|
|
7
|
+
static get type() {
|
|
8
|
+
|
|
9
|
+
return 'OscNode';
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
constructor( method = OscNode.SINE, timeNode = timerLocal() ) {
|
|
8
14
|
|
|
9
15
|
super();
|
|
@@ -73,8 +79,6 @@ OscNode.SAWTOOTH = 'sawtooth';
|
|
|
73
79
|
|
|
74
80
|
export default OscNode;
|
|
75
81
|
|
|
76
|
-
OscNode.type = /*@__PURE__*/ registerNode( 'Osc', OscNode );
|
|
77
|
-
|
|
78
82
|
export const oscSine = /*@__PURE__*/ nodeProxy( OscNode, OscNode.SINE );
|
|
79
83
|
export const oscSquare = /*@__PURE__*/ nodeProxy( OscNode, OscNode.SQUARE );
|
|
80
84
|
export const oscTriangle = /*@__PURE__*/ nodeProxy( OscNode, OscNode.TRIANGLE );
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import { nodeObject } from '../tsl/TSLCore.js';
|
|
3
2
|
import TextureNode from '../accessors/TextureNode.js';
|
|
4
3
|
import { NodeUpdateType } from '../core/constants.js';
|
|
@@ -14,6 +13,12 @@ const _size = /*@__PURE__*/ new Vector2();
|
|
|
14
13
|
|
|
15
14
|
class RTTNode extends TextureNode {
|
|
16
15
|
|
|
16
|
+
static get type() {
|
|
17
|
+
|
|
18
|
+
return 'RTTNode';
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
17
22
|
constructor( node, width = null, height = null, options = { type: HalfFloatType } ) {
|
|
18
23
|
|
|
19
24
|
const renderTarget = new RenderTarget( width, height, options );
|
|
@@ -124,7 +129,5 @@ class RTTNode extends TextureNode {
|
|
|
124
129
|
|
|
125
130
|
export default RTTNode;
|
|
126
131
|
|
|
127
|
-
RTTNode.type = /*@__PURE__*/ registerNode( 'RTT', RTTNode );
|
|
128
|
-
|
|
129
132
|
export const rtt = ( node, ...params ) => nodeObject( new RTTNode( nodeObject( node ), ...params ) );
|
|
130
133
|
export const convertToTexture = ( node, ...params ) => node.isTextureNode ? node : rtt( node, ...params );
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { registerNode } from '../core/Node.js';
|
|
2
1
|
import TextureNode from '../accessors/TextureNode.js';
|
|
3
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
4
3
|
import { NodeUpdateType } from '../core/constants.js';
|
|
5
|
-
import {
|
|
4
|
+
import { screenUV } from '../display/ScreenNode.js';
|
|
6
5
|
|
|
7
6
|
import { HalfFloatType, LinearMipMapLinearFilter } from '../../constants.js';
|
|
8
7
|
import { Plane } from '../../math/Plane.js';
|
|
@@ -28,12 +27,18 @@ const _q = new Vector4();
|
|
|
28
27
|
const _size = new Vector2();
|
|
29
28
|
|
|
30
29
|
const _defaultRT = new RenderTarget();
|
|
31
|
-
const _defaultUV =
|
|
30
|
+
const _defaultUV = screenUV.flipX();
|
|
32
31
|
|
|
33
32
|
let _inReflector = false;
|
|
34
33
|
|
|
35
34
|
class ReflectorNode extends TextureNode {
|
|
36
35
|
|
|
36
|
+
static get type() {
|
|
37
|
+
|
|
38
|
+
return 'ReflectorNode';
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
37
42
|
constructor( parameters = {} ) {
|
|
38
43
|
|
|
39
44
|
super( _defaultRT.texture, _defaultUV );
|
|
@@ -236,5 +241,3 @@ class ReflectorNode extends TextureNode {
|
|
|
236
241
|
export const reflector = ( parameters ) => nodeObject( new ReflectorNode( parameters ) );
|
|
237
242
|
|
|
238
243
|
export default ReflectorNode;
|
|
239
|
-
|
|
240
|
-
ReflectorNode.type = /*@__PURE__*/ registerNode( 'Reflector', ReflectorNode );
|