super-three 0.155.0 → 0.157.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 +361 -324
- package/build/three.js +361 -324
- package/build/three.min.js +2 -2
- package/build/three.module.js +354 -323
- package/build/three.module.min.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +17 -0
- package/examples/jsm/controls/DragControls.js +3 -2
- package/examples/jsm/controls/OrbitControls.js +13 -5
- package/examples/jsm/csm/CSMShader.js +59 -21
- package/examples/jsm/exporters/EXRExporter.js +102 -24
- package/examples/jsm/exporters/GLTFExporter.js +1 -1
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +8726 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8737 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +790 -735
- package/examples/jsm/libs/utif.module.js +1644 -1558
- package/examples/jsm/lights/LightProbeGenerator.js +37 -3
- package/examples/jsm/lines/LineMaterial.js +90 -156
- package/examples/jsm/loaders/3DMLoader.js +378 -104
- package/examples/jsm/loaders/DDSLoader.js +46 -3
- package/examples/jsm/loaders/EXRLoader.js +4 -4
- package/examples/jsm/loaders/FBXLoader.js +2 -0
- package/examples/jsm/loaders/GLTFLoader.js +18 -8
- package/examples/jsm/loaders/KTX2Loader.js +126 -77
- package/examples/jsm/loaders/LDrawLoader.js +22 -16
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MMDLoader.js +10 -7
- package/examples/jsm/loaders/RGBELoader.js +48 -66
- package/examples/jsm/loaders/STLLoader.js +7 -0
- package/examples/jsm/loaders/USDZLoader.js +215 -12
- package/examples/jsm/materials/MeshGouraudMaterial.js +22 -18
- package/examples/jsm/nodes/Nodes.js +8 -1
- package/examples/jsm/nodes/accessors/BitangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +30 -4
- package/examples/jsm/nodes/accessors/BufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/CameraNode.js +1 -1
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +19 -4
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +4 -5
- package/examples/jsm/nodes/accessors/InstanceNode.js +2 -2
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +29 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +23 -13
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +12 -9
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +5 -4
- package/examples/jsm/nodes/accessors/MorphNode.js +4 -4
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/Object3DNode.js +3 -3
- package/examples/jsm/nodes/accessors/PointUVNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReferenceNode.js +13 -7
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +2 -2
- package/examples/jsm/nodes/accessors/SkinningNode.js +2 -2
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/TextureBicubicNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +18 -8
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
- package/examples/jsm/nodes/accessors/UVNode.js +1 -1
- package/examples/jsm/nodes/accessors/UserDataNode.js +2 -2
- package/examples/jsm/nodes/code/CodeNode.js +1 -1
- package/examples/jsm/nodes/code/ExpressionNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionCallNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionNode.js +18 -7
- package/examples/jsm/nodes/code/ScriptableNode.js +2 -2
- package/examples/jsm/nodes/code/ScriptableValueNode.js +2 -2
- package/examples/jsm/nodes/core/ArrayUniformNode.js +1 -1
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/BypassNode.js +1 -1
- package/examples/jsm/nodes/core/CacheNode.js +1 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/ContextNode.js +2 -2
- package/examples/jsm/nodes/core/IndexNode.js +1 -1
- package/examples/jsm/nodes/core/InputNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +45 -14
- package/examples/jsm/nodes/core/NodeBuilder.js +83 -15
- package/examples/jsm/nodes/core/NodeFrame.js +37 -14
- package/examples/jsm/nodes/core/NodeUniform.js +1 -1
- package/examples/jsm/nodes/core/OutputStructNode.js +62 -0
- package/examples/jsm/nodes/core/PropertyNode.js +3 -1
- package/examples/jsm/nodes/core/StackNode.js +5 -5
- package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +3 -1
- package/examples/jsm/nodes/core/VarNode.js +1 -1
- package/examples/jsm/nodes/core/VaryingNode.js +1 -1
- package/examples/jsm/nodes/core/constants.js +1 -1
- package/examples/jsm/nodes/display/BlendModeNode.js +2 -2
- package/examples/jsm/nodes/display/BumpMapNode.js +2 -2
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -2
- package/examples/jsm/nodes/display/ColorSpaceNode.js +2 -2
- package/examples/jsm/nodes/display/FrontFacingNode.js +1 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
- package/examples/jsm/nodes/display/PosterizeNode.js +2 -2
- package/examples/jsm/nodes/display/ToneMappingNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportNode.js +21 -7
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportTextureNode.js +1 -1
- package/examples/jsm/nodes/fog/FogExp2Node.js +2 -2
- package/examples/jsm/nodes/fog/FogNode.js +2 -2
- package/examples/jsm/nodes/fog/FogRangeNode.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AONode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +2 -2
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/IESSpotLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightingContextNode.js +3 -3
- package/examples/jsm/nodes/lighting/LightingNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +4 -4
- package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/SpotLightNode.js +4 -4
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +449 -0
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
- package/examples/jsm/nodes/materials/Materials.js +2 -0
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +2 -2
- 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 +6 -6
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/NodeMaterial.js +39 -29
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
- package/examples/jsm/nodes/math/CondNode.js +1 -1
- package/examples/jsm/nodes/math/HashNode.js +34 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -2
- package/examples/jsm/nodes/math/OperatorNode.js +1 -1
- package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +85 -28
- package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
- package/examples/jsm/nodes/utils/ConvertNode.js +1 -1
- package/examples/jsm/nodes/utils/DiscardNode.js +1 -1
- package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -2
- package/examples/jsm/nodes/utils/JoinNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +11 -11
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -2
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/PackingNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/RotateUVNode.js +2 -2
- package/examples/jsm/nodes/utils/SetNode.js +62 -0
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +2 -2
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +2 -2
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +2 -2
- package/examples/jsm/objects/Sky.js +1 -3
- package/examples/jsm/postprocessing/FilmPass.js +3 -5
- package/examples/jsm/postprocessing/OutputPass.js +3 -2
- 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/renderers/common/Backend.js +11 -8
- package/examples/jsm/renderers/common/Background.js +2 -2
- package/examples/jsm/renderers/common/Binding.js +6 -0
- package/examples/jsm/renderers/common/Bindings.js +4 -5
- package/examples/jsm/renderers/common/Pipelines.js +9 -9
- package/examples/jsm/renderers/common/RenderContext.js +3 -0
- package/examples/jsm/renderers/common/RenderContexts.js +26 -1
- package/examples/jsm/renderers/common/RenderList.js +12 -4
- package/examples/jsm/renderers/common/RenderObject.js +43 -15
- package/examples/jsm/renderers/common/RenderObjects.js +8 -14
- package/examples/jsm/renderers/common/Renderer.js +52 -16
- package/examples/jsm/renderers/common/SampledTexture.js +6 -3
- package/examples/jsm/renderers/common/Sampler.js +1 -1
- package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
- package/examples/jsm/renderers/common/StorageTexture.js +19 -0
- package/examples/jsm/renderers/common/Textures.js +166 -21
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +35 -0
- package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +21 -11
- package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -7
- package/examples/jsm/renderers/common/nodes/Nodes.js +79 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +702 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +207 -20
- 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 +212 -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 +4 -4
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +14 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +282 -43
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +93 -60
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +15 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -14
- package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +205 -284
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +6 -5
- package/examples/jsm/shaders/FilmShader.js +11 -54
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +4 -4
- package/examples/jsm/shaders/OutputShader.js +2 -2
- package/examples/jsm/shaders/SAOShader.js +0 -13
- package/examples/jsm/shaders/SSAOShader.js +33 -26
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +6 -6
- package/examples/jsm/utils/BufferGeometryUtils.js +6 -4
- package/package.json +1 -1
- package/src/Three.js +1 -2
- package/src/animation/AnimationUtils.js +3 -20
- package/src/animation/KeyframeTrack.js +8 -8
- package/src/audio/Audio.js +6 -0
- package/src/cameras/Camera.js +1 -5
- package/src/cameras/CubeCamera.js +14 -8
- package/src/constants.js +10 -1
- package/src/core/Object3D.js +1 -14
- package/src/core/RenderTarget.js +16 -7
- package/src/core/UniformsGroup.js +2 -2
- package/src/extras/core/CurvePath.js +4 -1
- package/src/loaders/DataTextureLoader.js +0 -2
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/loaders/ObjectLoader.js +6 -0
- package/src/materials/Material.js +10 -10
- package/src/math/Color.js +1 -5
- package/src/math/ColorManagement.js +82 -60
- 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/objects/Sprite.js +2 -2
- package/src/renderers/WebGLRenderer.js +42 -51
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +35 -2
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -9
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +19 -15
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -6
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +16 -16
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +2 -2
- package/src/renderers/webgl/WebGLBackground.js +9 -17
- package/src/renderers/webgl/WebGLLights.js +14 -3
- package/src/renderers/webgl/WebGLProgram.js +36 -5
- package/src/renderers/webgl/WebGLPrograms.js +9 -1
- package/src/renderers/webgl/WebGLTextures.js +19 -8
- package/src/renderers/webgl/WebGLUtils.js +25 -20
- package/src/scenes/Fog.js +1 -0
- package/src/scenes/FogExp2.js +1 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +2 -2
- package/src/utils.js +9 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
- package/src/lights/AmbientLightProbe.js +0 -21
- package/src/lights/HemisphereLightProbe.js +0 -30
- /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
|
@@ -48,7 +48,7 @@ class ColorAdjustmentNode extends TempNode {
|
|
|
48
48
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
setup() {
|
|
52
52
|
|
|
53
53
|
const { method, colorNode, adjustmentNode } = this;
|
|
54
54
|
|
|
@@ -97,4 +97,4 @@ addNodeElement( 'saturation', saturation );
|
|
|
97
97
|
addNodeElement( 'vibrance', vibrance );
|
|
98
98
|
addNodeElement( 'hue', hue );
|
|
99
99
|
|
|
100
|
-
addNodeClass( ColorAdjustmentNode );
|
|
100
|
+
addNodeClass( 'ColorAdjustmentNode', ColorAdjustmentNode );
|
|
@@ -70,7 +70,7 @@ class ColorSpaceNode extends TempNode {
|
|
|
70
70
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
setup() {
|
|
74
74
|
|
|
75
75
|
const { method, node } = this;
|
|
76
76
|
|
|
@@ -105,4 +105,4 @@ addNodeElement( 'sRGBToLinear', sRGBToLinear );
|
|
|
105
105
|
addNodeElement( 'linearToColorSpace', linearToColorSpace );
|
|
106
106
|
addNodeElement( 'colorSpaceToLinear', colorSpaceToLinear );
|
|
107
107
|
|
|
108
|
-
addNodeClass( ColorSpaceNode );
|
|
108
|
+
addNodeClass( 'ColorSpaceNode', ColorSpaceNode );
|
|
@@ -52,7 +52,7 @@ class NormalMapNode extends TempNode {
|
|
|
52
52
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
setup( builder ) {
|
|
56
56
|
|
|
57
57
|
const { normalMapType, scaleNode } = this;
|
|
58
58
|
|
|
@@ -103,4 +103,4 @@ export const normalMap = nodeProxy( NormalMapNode );
|
|
|
103
103
|
|
|
104
104
|
export const TBNViewMatrix = mat3( tangentView, bitangentView, normalView );
|
|
105
105
|
|
|
106
|
-
addNodeClass( NormalMapNode );
|
|
106
|
+
addNodeClass( 'NormalMapNode', NormalMapNode );
|
|
@@ -13,7 +13,7 @@ class PosterizeNode extends TempNode {
|
|
|
13
13
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
setup() {
|
|
17
17
|
|
|
18
18
|
const { sourceNode, stepsNode } = this;
|
|
19
19
|
|
|
@@ -29,4 +29,4 @@ export const posterize = nodeProxy( PosterizeNode );
|
|
|
29
29
|
|
|
30
30
|
addNodeElement( 'posterize', posterize );
|
|
31
31
|
|
|
32
|
-
addNodeClass( PosterizeNode );
|
|
32
|
+
addNodeClass( 'PosterizeNode', PosterizeNode );
|
|
@@ -104,7 +104,7 @@ class ToneMappingNode extends TempNode {
|
|
|
104
104
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
setup( builder ) {
|
|
108
108
|
|
|
109
109
|
const colorNode = this.colorNode || builder.context.color;
|
|
110
110
|
const toneMapping = this.toneMapping;
|
|
@@ -138,4 +138,4 @@ export default ToneMappingNode;
|
|
|
138
138
|
|
|
139
139
|
export const toneMapping = ( mapping, exposure, color ) => nodeObject( new ToneMappingNode( mapping, nodeObject( exposure ), nodeObject( color ) ) );
|
|
140
140
|
|
|
141
|
-
addNodeClass( ToneMappingNode );
|
|
141
|
+
addNodeClass( 'ToneMappingNode', ToneMappingNode );
|
|
@@ -17,7 +17,7 @@ class ViewportDepthNode extends Node {
|
|
|
17
17
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
setup( /*builder*/ ) {
|
|
21
21
|
|
|
22
22
|
const { scope } = this;
|
|
23
23
|
|
|
@@ -66,4 +66,4 @@ export default ViewportDepthNode;
|
|
|
66
66
|
export const depth = nodeImmutable( ViewportDepthNode, ViewportDepthNode.DEPTH );
|
|
67
67
|
export const depthTexture = nodeProxy( ViewportDepthNode, ViewportDepthNode.DEPTH_TEXTURE );
|
|
68
68
|
|
|
69
|
-
addNodeClass( ViewportDepthNode );
|
|
69
|
+
addNodeClass( 'ViewportDepthNode', ViewportDepthNode );
|
|
@@ -3,9 +3,9 @@ import { NodeUpdateType } from '../core/constants.js';
|
|
|
3
3
|
import { uniform } from '../core/UniformNode.js';
|
|
4
4
|
import { nodeImmutable, vec2 } from '../shadernode/ShaderNode.js';
|
|
5
5
|
|
|
6
|
-
import { Vector2 } from 'three';
|
|
6
|
+
import { Vector2, Vector4 } from 'three';
|
|
7
7
|
|
|
8
|
-
let resolution;
|
|
8
|
+
let resolution, viewportResult;
|
|
9
9
|
|
|
10
10
|
class ViewportNode extends Node {
|
|
11
11
|
|
|
@@ -21,7 +21,7 @@ class ViewportNode extends Node {
|
|
|
21
21
|
|
|
22
22
|
getNodeType() {
|
|
23
23
|
|
|
24
|
-
return this.scope === ViewportNode.COORDINATE ? 'vec4' : 'vec2';
|
|
24
|
+
return this.scope === ViewportNode.COORDINATE || this.scope === ViewportNode.VIEWPORT ? 'vec4' : 'vec2';
|
|
25
25
|
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -29,7 +29,7 @@ class ViewportNode extends Node {
|
|
|
29
29
|
|
|
30
30
|
let updateType = NodeUpdateType.NONE;
|
|
31
31
|
|
|
32
|
-
if ( this.scope === ViewportNode.RESOLUTION ) {
|
|
32
|
+
if ( this.scope === ViewportNode.RESOLUTION || this.scope === ViewportNode.VIEWPORT ) {
|
|
33
33
|
|
|
34
34
|
updateType = NodeUpdateType.FRAME;
|
|
35
35
|
|
|
@@ -43,11 +43,19 @@ class ViewportNode extends Node {
|
|
|
43
43
|
|
|
44
44
|
update( { renderer } ) {
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
if ( this.scope === ViewportNode.VIEWPORT ) {
|
|
47
|
+
|
|
48
|
+
renderer.getViewport( viewportResult );
|
|
49
|
+
|
|
50
|
+
} else {
|
|
51
|
+
|
|
52
|
+
renderer.getDrawingBufferSize( resolution );
|
|
53
|
+
|
|
54
|
+
}
|
|
47
55
|
|
|
48
56
|
}
|
|
49
57
|
|
|
50
|
-
|
|
58
|
+
setup( builder ) {
|
|
51
59
|
|
|
52
60
|
const scope = this.scope;
|
|
53
61
|
|
|
@@ -59,6 +67,10 @@ class ViewportNode extends Node {
|
|
|
59
67
|
|
|
60
68
|
output = uniform( resolution || ( resolution = new Vector2() ) );
|
|
61
69
|
|
|
70
|
+
} else if ( scope === ViewportNode.VIEWPORT ) {
|
|
71
|
+
|
|
72
|
+
output = uniform( viewportResult || ( viewportResult = new Vector4() ) );
|
|
73
|
+
|
|
62
74
|
} else {
|
|
63
75
|
|
|
64
76
|
const coordinateNode = vec2( new ViewportNode( ViewportNode.COORDINATE ) );
|
|
@@ -98,6 +110,7 @@ class ViewportNode extends Node {
|
|
|
98
110
|
|
|
99
111
|
ViewportNode.COORDINATE = 'coordinate';
|
|
100
112
|
ViewportNode.RESOLUTION = 'resolution';
|
|
113
|
+
ViewportNode.VIEWPORT = 'viewport';
|
|
101
114
|
ViewportNode.TOP_LEFT = 'topLeft';
|
|
102
115
|
ViewportNode.BOTTOM_LEFT = 'bottomLeft';
|
|
103
116
|
ViewportNode.TOP_RIGHT = 'topRight';
|
|
@@ -107,9 +120,10 @@ export default ViewportNode;
|
|
|
107
120
|
|
|
108
121
|
export const viewportCoordinate = nodeImmutable( ViewportNode, ViewportNode.COORDINATE );
|
|
109
122
|
export const viewportResolution = nodeImmutable( ViewportNode, ViewportNode.RESOLUTION );
|
|
123
|
+
export const viewport = nodeImmutable( ViewportNode, ViewportNode.VIEWPORT );
|
|
110
124
|
export const viewportTopLeft = nodeImmutable( ViewportNode, ViewportNode.TOP_LEFT );
|
|
111
125
|
export const viewportBottomLeft = nodeImmutable( ViewportNode, ViewportNode.BOTTOM_LEFT );
|
|
112
126
|
export const viewportTopRight = nodeImmutable( ViewportNode, ViewportNode.TOP_RIGHT );
|
|
113
127
|
export const viewportBottomRight = nodeImmutable( ViewportNode, ViewportNode.BOTTOM_RIGHT );
|
|
114
128
|
|
|
115
|
-
addNodeClass( ViewportNode );
|
|
129
|
+
addNodeClass( 'ViewportNode', ViewportNode );
|
|
@@ -28,4 +28,4 @@ export const viewportSharedTexture = nodeProxy( ViewportSharedTextureNode );
|
|
|
28
28
|
|
|
29
29
|
addNodeElement( 'viewportSharedTexture', viewportSharedTexture );
|
|
30
30
|
|
|
31
|
-
addNodeClass( ViewportSharedTextureNode );
|
|
31
|
+
addNodeClass( 'ViewportSharedTextureNode', ViewportSharedTextureNode );
|
|
@@ -72,4 +72,4 @@ export const viewportMipTexture = nodeProxy( ViewportTextureNode, null, null, {
|
|
|
72
72
|
addNodeElement( 'viewportTexture', viewportTexture );
|
|
73
73
|
addNodeElement( 'viewportMipTexture', viewportMipTexture );
|
|
74
74
|
|
|
75
|
-
addNodeClass( ViewportTextureNode );
|
|
75
|
+
addNodeClass( 'ViewportTextureNode', ViewportTextureNode );
|
|
@@ -15,7 +15,7 @@ class FogExp2Node extends FogNode {
|
|
|
15
15
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
setup() {
|
|
19
19
|
|
|
20
20
|
const depthNode = positionView.z.negate();
|
|
21
21
|
const densityNode = this.densityNode;
|
|
@@ -32,4 +32,4 @@ export const densityFog = nodeProxy( FogExp2Node );
|
|
|
32
32
|
|
|
33
33
|
addNodeElement( 'densityFog', densityFog );
|
|
34
34
|
|
|
35
|
-
addNodeClass( FogExp2Node );
|
|
35
|
+
addNodeClass( 'FogExp2Node', FogExp2Node );
|
|
@@ -20,7 +20,7 @@ class FogNode extends Node {
|
|
|
20
20
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
setup() {
|
|
24
24
|
|
|
25
25
|
return this.factorNode;
|
|
26
26
|
|
|
@@ -34,4 +34,4 @@ export const fog = nodeProxy( FogNode );
|
|
|
34
34
|
|
|
35
35
|
addNodeElement( 'fog', fog );
|
|
36
36
|
|
|
37
|
-
addNodeClass( FogNode );
|
|
37
|
+
addNodeClass( 'FogNode', FogNode );
|
|
@@ -17,7 +17,7 @@ class FogRangeNode extends FogNode {
|
|
|
17
17
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
setup() {
|
|
21
21
|
|
|
22
22
|
return smoothstep( this.nearNode, this.farNode, positionView.z.negate() );
|
|
23
23
|
|
|
@@ -31,4 +31,4 @@ export const rangeFog = nodeProxy( FogRangeNode );
|
|
|
31
31
|
|
|
32
32
|
addNodeElement( 'rangeFog', rangeFog );
|
|
33
33
|
|
|
34
|
-
addNodeClass( FogRangeNode );
|
|
34
|
+
addNodeClass( 'FogRangeNode', FogRangeNode );
|
|
@@ -36,7 +36,7 @@ class RangeNode extends Node {
|
|
|
36
36
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
setup( builder ) {
|
|
40
40
|
|
|
41
41
|
const object = builder.object;
|
|
42
42
|
|
|
@@ -101,4 +101,4 @@ export default RangeNode;
|
|
|
101
101
|
|
|
102
102
|
export const range = nodeProxy( RangeNode );
|
|
103
103
|
|
|
104
|
-
addNodeClass( RangeNode );
|
|
104
|
+
addNodeClass( 'RangeNode', RangeNode );
|
|
@@ -11,7 +11,7 @@ class AONode extends LightingNode {
|
|
|
11
11
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
setup( builder ) {
|
|
15
15
|
|
|
16
16
|
const aoIntensity = 1;
|
|
17
17
|
const aoNode = this.aoNode.x.sub( 1.0 ).mul( aoIntensity ).add( 1.0 );
|
|
@@ -24,4 +24,4 @@ class AONode extends LightingNode {
|
|
|
24
24
|
|
|
25
25
|
export default AONode;
|
|
26
26
|
|
|
27
|
-
addNodeClass( AONode );
|
|
27
|
+
addNodeClass( 'AONode', AONode );
|
|
@@ -12,7 +12,7 @@ class AmbientLightNode extends AnalyticLightNode {
|
|
|
12
12
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
setup( { context } ) {
|
|
16
16
|
|
|
17
17
|
context.irradiance.addAssign( this.colorNode );
|
|
18
18
|
|
|
@@ -22,6 +22,6 @@ class AmbientLightNode extends AnalyticLightNode {
|
|
|
22
22
|
|
|
23
23
|
export default AmbientLightNode;
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
addNodeClass( 'AmbientLightNode', AmbientLightNode );
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
addLightNode( AmbientLight, AmbientLightNode );
|
|
@@ -37,7 +37,7 @@ class AnalyticLightNode extends LightingNode {
|
|
|
37
37
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
setupShadow( builder ) {
|
|
41
41
|
|
|
42
42
|
let shadowNode = this.shadowNode;
|
|
43
43
|
|
|
@@ -136,9 +136,9 @@ class AnalyticLightNode extends LightingNode {
|
|
|
136
136
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
setup( builder ) {
|
|
140
140
|
|
|
141
|
-
if ( this.light.castShadow ) this.
|
|
141
|
+
if ( this.light.castShadow ) this.setupShadow( builder );
|
|
142
142
|
|
|
143
143
|
}
|
|
144
144
|
|
|
@@ -181,4 +181,4 @@ class AnalyticLightNode extends LightingNode {
|
|
|
181
181
|
|
|
182
182
|
export default AnalyticLightNode;
|
|
183
183
|
|
|
184
|
-
addNodeClass( AnalyticLightNode );
|
|
184
|
+
addNodeClass( 'AnalyticLightNode', AnalyticLightNode );
|
|
@@ -13,9 +13,9 @@ class DirectionalLightNode extends AnalyticLightNode {
|
|
|
13
13
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
setup( builder ) {
|
|
17
17
|
|
|
18
|
-
super.
|
|
18
|
+
super.setup( builder );
|
|
19
19
|
|
|
20
20
|
const lightingModel = builder.context.lightingModel;
|
|
21
21
|
|
|
@@ -35,6 +35,6 @@ class DirectionalLightNode extends AnalyticLightNode {
|
|
|
35
35
|
|
|
36
36
|
export default DirectionalLightNode;
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
addNodeClass( 'DirectionalLightNode', DirectionalLightNode );
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
addLightNode( DirectionalLight, DirectionalLightNode );
|
|
@@ -24,7 +24,7 @@ class EnvironmentNode extends LightingNode {
|
|
|
24
24
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
setup( builder ) {
|
|
28
28
|
|
|
29
29
|
let envNode = this.envNode;
|
|
30
30
|
const properties = builder.getNodeProperties( this );
|
|
@@ -188,4 +188,4 @@ const createIrradianceContext = ( normalWorldNode ) => {
|
|
|
188
188
|
|
|
189
189
|
export default EnvironmentNode;
|
|
190
190
|
|
|
191
|
-
addNodeClass( EnvironmentNode );
|
|
191
|
+
addNodeClass( 'EnvironmentNode', EnvironmentNode );
|
|
@@ -33,7 +33,7 @@ class HemisphereLightNode extends AnalyticLightNode {
|
|
|
33
33
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
setup( builder ) {
|
|
37
37
|
|
|
38
38
|
const { colorNode, groundColorNode, lightDirectionNode } = this;
|
|
39
39
|
|
|
@@ -50,6 +50,6 @@ class HemisphereLightNode extends AnalyticLightNode {
|
|
|
50
50
|
|
|
51
51
|
export default HemisphereLightNode;
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
addNodeClass( 'HemisphereLightNode', HemisphereLightNode );
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
addLightNode( HemisphereLight, HemisphereLightNode );
|
|
@@ -34,6 +34,6 @@ class IESSpotLightNode extends SpotLightNode {
|
|
|
34
34
|
|
|
35
35
|
export default IESSpotLightNode;
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
addNodeClass( 'IESSpotLightNode', IESSpotLightNode );
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
addLightNode( IESSpotLight, IESSpotLightNode );
|
|
@@ -14,7 +14,7 @@ class LightNode extends Node {
|
|
|
14
14
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
setup() {
|
|
18
18
|
|
|
19
19
|
const { scope, light } = this;
|
|
20
20
|
|
|
@@ -54,4 +54,4 @@ export default LightNode;
|
|
|
54
54
|
|
|
55
55
|
export const lightTargetDirection = nodeProxy( LightNode, LightNode.TARGET_DIRECTION );
|
|
56
56
|
|
|
57
|
-
addNodeClass( LightNode );
|
|
57
|
+
addNodeClass( 'LightNode', LightNode );
|
|
@@ -22,7 +22,7 @@ class LightingContextNode extends ContextNode {
|
|
|
22
22
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
setup( builder ) {
|
|
26
26
|
|
|
27
27
|
const { lightingModel, backdropNode, backdropAlphaNode } = this;
|
|
28
28
|
|
|
@@ -76,7 +76,7 @@ class LightingContextNode extends ContextNode {
|
|
|
76
76
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
return super.
|
|
79
|
+
return super.setup( builder );
|
|
80
80
|
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -99,4 +99,4 @@ export const lightingContext = nodeProxy( LightingContextNode );
|
|
|
99
99
|
|
|
100
100
|
addNodeElement( 'lightingContext', lightingContext );
|
|
101
101
|
|
|
102
|
-
addNodeClass( LightingContextNode );
|
|
102
|
+
addNodeClass( 'LightingContextNode', LightingContextNode );
|
|
@@ -28,7 +28,7 @@ class LightsNode extends Node {
|
|
|
28
28
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
setup( builder ) {
|
|
32
32
|
|
|
33
33
|
const lightNodes = this.lightNodes;
|
|
34
34
|
|
|
@@ -119,9 +119,9 @@ export const lightsWithoutWrap = nodeProxy( LightsNode );
|
|
|
119
119
|
|
|
120
120
|
export function addLightNode( lightClass, lightNodeClass ) {
|
|
121
121
|
|
|
122
|
-
if ( LightNodes.has( lightClass ) ) throw new Error( `Redefinition of light node ${ lightNodeClass.
|
|
123
|
-
if ( typeof lightClass !== 'function'
|
|
124
|
-
if ( typeof lightNodeClass !== 'function' || ! lightNodeClass.
|
|
122
|
+
if ( LightNodes.has( lightClass ) ) throw new Error( `Redefinition of light node ${ lightNodeClass.type }` );
|
|
123
|
+
if ( typeof lightClass !== 'function' ) throw new Error( `Light ${ lightClass.name } is not a class` );
|
|
124
|
+
if ( typeof lightNodeClass !== 'function' || ! lightNodeClass.type ) throw new Error( `Light node ${ lightNodeClass.type } is not a class` );
|
|
125
125
|
|
|
126
126
|
LightNodes.set( lightClass, lightNodeClass );
|
|
127
127
|
|
|
@@ -30,7 +30,7 @@ class PointLightNode extends AnalyticLightNode {
|
|
|
30
30
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
setup( builder ) {
|
|
34
34
|
|
|
35
35
|
const { colorNode, cutoffDistanceNode, decayExponentNode, light } = this;
|
|
36
36
|
|
|
@@ -63,6 +63,6 @@ class PointLightNode extends AnalyticLightNode {
|
|
|
63
63
|
|
|
64
64
|
export default PointLightNode;
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
addNodeClass( 'PointLightNode', PointLightNode );
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
addLightNode( PointLight, PointLightNode );
|
|
@@ -46,9 +46,9 @@ class SpotLightNode extends AnalyticLightNode {
|
|
|
46
46
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
setup( builder ) {
|
|
50
50
|
|
|
51
|
-
super.
|
|
51
|
+
super.setup( builder );
|
|
52
52
|
|
|
53
53
|
const lightingModel = builder.context.lightingModel;
|
|
54
54
|
|
|
@@ -84,6 +84,6 @@ class SpotLightNode extends AnalyticLightNode {
|
|
|
84
84
|
|
|
85
85
|
export default SpotLightNode;
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
addNodeClass( 'SpotLightNode', SpotLightNode );
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
addLightNode( SpotLight, SpotLightNode );
|