@plastic-software/three 0.179.0 → 0.180.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 +167 -107
- package/build/three.core.js +112 -20
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +56 -90
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +30 -5
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2896 -1048
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2896 -1048
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +7 -7
- package/examples/jsm/controls/DragControls.js +6 -56
- package/examples/jsm/controls/FirstPersonControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +0 -8
- package/examples/jsm/exporters/GLTFExporter.js +30 -22
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +1 -1
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/GLTFLoader.js +9 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +112 -32
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -1
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +2 -2
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
- package/examples/jsm/transpiler/TSLEncoder.js +2 -10
- package/examples/jsm/transpiler/WGSLEncoder.js +24 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +27 -4
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +439 -90
- package/examples/jsm/tsl/display/GTAONode.js +8 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +47 -35
- package/examples/jsm/tsl/display/OutlineNode.js +2 -2
- package/examples/jsm/tsl/display/SSRNode.js +180 -65
- package/examples/jsm/tsl/display/TRAANode.js +1 -1
- package/examples/jsm/tsl/display/boxBlur.js +64 -0
- package/examples/jsm/tsl/display/hashBlur.js +15 -18
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/package.json +1 -1
- package/src/Three.Core.js +1 -0
- package/src/Three.TSL.js +29 -4
- package/src/animation/AnimationClip.js +17 -2
- package/src/constants.js +11 -3
- package/src/core/BufferGeometry.js +2 -2
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/lib/earcut.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/materials/Material.js +12 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +1 -1
- package/src/math/ColorManagement.js +7 -1
- package/src/nodes/Nodes.js +3 -0
- package/src/nodes/TSL.js +3 -0
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +133 -7
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +2 -2
- package/src/nodes/accessors/InstanceNode.js +3 -1
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/Texture3DNode.js +13 -0
- package/src/nodes/accessors/TextureNode.js +71 -19
- package/src/nodes/code/FunctionCallNode.js +19 -0
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/AssignNode.js +4 -3
- package/src/nodes/core/ContextNode.js +24 -0
- package/src/nodes/core/Node.js +16 -20
- package/src/nodes/core/NodeBuilder.js +48 -14
- package/src/nodes/core/NodeFrame.js +1 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +1 -2
- package/src/nodes/core/StackNode.js +29 -4
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformNode.js +16 -9
- package/src/nodes/core/VarNode.js +0 -21
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/PassNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +42 -13
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +42 -12
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +430 -0
- package/src/nodes/lighting/LightsNode.js +1 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +18 -2
- package/src/nodes/math/MathNode.js +3 -15
- package/src/nodes/math/OperatorNode.js +4 -3
- package/src/nodes/tsl/TSLCore.js +432 -152
- package/src/nodes/utils/JoinNode.js +3 -1
- package/src/nodes/utils/MemberNode.js +58 -7
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +51 -7
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/objects/BatchedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Sprite.js +2 -2
- package/src/renderers/WebGLRenderer.js +1 -10
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +19 -1
- package/src/renderers/common/Bindings.js +2 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderObject.js +14 -2
- package/src/renderers/common/Renderer.js +39 -19
- package/src/renderers/common/SampledTexture.js +1 -1
- package/src/renderers/common/Sampler.js +25 -13
- package/src/renderers/common/Textures.js +34 -12
- package/src/renderers/common/TimestampQueryPool.js +3 -3
- package/src/renderers/common/XRManager.js +35 -19
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +5 -5
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -15
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
- package/src/renderers/webgl/WebGLProgram.js +4 -4
- package/src/renderers/webgl/WebGLShadowMap.js +1 -1
- package/src/renderers/webgl/WebGLTextures.js +1 -0
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +186 -135
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +110 -17
- package/src/renderers/webgl-fallback/utils/WebGLState.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +52 -3
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +9 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +35 -31
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +124 -34
- package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +9 -18
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +114 -25
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +39 -24
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/Source.js +1 -1
- package/src/textures/VideoTexture.js +0 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
|
@@ -6,7 +6,7 @@ import { Fn, nodeImmutable, vec2 } from '../tsl/TSLBase.js';
|
|
|
6
6
|
import { Vector2 } from '../../math/Vector2.js';
|
|
7
7
|
import { Vector4 } from '../../math/Vector4.js';
|
|
8
8
|
|
|
9
|
-
let
|
|
9
|
+
let _screenSizeVec, _viewportVec;
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* This node provides a collection of screen related metrics.
|
|
@@ -26,7 +26,7 @@ class ScreenNode extends Node {
|
|
|
26
26
|
/**
|
|
27
27
|
* Constructs a new screen node.
|
|
28
28
|
*
|
|
29
|
-
* @param {('coordinate'|'viewport'|'size'|'uv')} scope - The node's scope.
|
|
29
|
+
* @param {('coordinate'|'viewport'|'size'|'uv'|'dpr')} scope - The node's scope.
|
|
30
30
|
*/
|
|
31
31
|
constructor( scope ) {
|
|
32
32
|
|
|
@@ -39,11 +39,20 @@ class ScreenNode extends Node {
|
|
|
39
39
|
* - `ScreenNode.VIEWPORT`: The current viewport defined as a four-dimensional vector.
|
|
40
40
|
* - `ScreenNode.SIZE`: The dimensions of the current bound framebuffer.
|
|
41
41
|
* - `ScreenNode.UV`: Normalized coordinates.
|
|
42
|
+
* - `ScreenNode.DPR`: Device pixel ratio.
|
|
42
43
|
*
|
|
43
|
-
* @type {('coordinate'|'viewport'|'size'|'uv')}
|
|
44
|
+
* @type {('coordinate'|'viewport'|'size'|'uv'|'dpr')}
|
|
44
45
|
*/
|
|
45
46
|
this.scope = scope;
|
|
46
47
|
|
|
48
|
+
/**
|
|
49
|
+
* This output node.
|
|
50
|
+
*
|
|
51
|
+
* @type {?Node}
|
|
52
|
+
* @default null
|
|
53
|
+
*/
|
|
54
|
+
this._output = null;
|
|
55
|
+
|
|
47
56
|
/**
|
|
48
57
|
* This flag can be used for type testing.
|
|
49
58
|
*
|
|
@@ -58,10 +67,11 @@ class ScreenNode extends Node {
|
|
|
58
67
|
/**
|
|
59
68
|
* This method is overwritten since the node type depends on the selected scope.
|
|
60
69
|
*
|
|
61
|
-
* @return {('vec2'|'vec4')} The node type.
|
|
70
|
+
* @return {('float'|'vec2'|'vec4')} The node type.
|
|
62
71
|
*/
|
|
63
72
|
getNodeType() {
|
|
64
73
|
|
|
74
|
+
if ( this.scope === ScreenNode.DPR ) return 'float';
|
|
65
75
|
if ( this.scope === ScreenNode.VIEWPORT ) return 'vec4';
|
|
66
76
|
else return 'vec2';
|
|
67
77
|
|
|
@@ -76,7 +86,7 @@ class ScreenNode extends Node {
|
|
|
76
86
|
|
|
77
87
|
let updateType = NodeUpdateType.NONE;
|
|
78
88
|
|
|
79
|
-
if ( this.scope === ScreenNode.SIZE || this.scope === ScreenNode.VIEWPORT ) {
|
|
89
|
+
if ( this.scope === ScreenNode.SIZE || this.scope === ScreenNode.VIEWPORT || this.scope === ScreenNode.DPR ) {
|
|
80
90
|
|
|
81
91
|
updateType = NodeUpdateType.RENDER;
|
|
82
92
|
|
|
@@ -102,26 +112,30 @@ class ScreenNode extends Node {
|
|
|
102
112
|
|
|
103
113
|
if ( renderTarget !== null ) {
|
|
104
114
|
|
|
105
|
-
|
|
115
|
+
_viewportVec.copy( renderTarget.viewport );
|
|
106
116
|
|
|
107
117
|
} else {
|
|
108
118
|
|
|
109
|
-
renderer.getViewport(
|
|
119
|
+
renderer.getViewport( _viewportVec );
|
|
110
120
|
|
|
111
|
-
|
|
121
|
+
_viewportVec.multiplyScalar( renderer.getPixelRatio() );
|
|
112
122
|
|
|
113
123
|
}
|
|
114
124
|
|
|
125
|
+
} else if ( this.scope === ScreenNode.DPR ) {
|
|
126
|
+
|
|
127
|
+
this._output.value = renderer.getPixelRatio();
|
|
128
|
+
|
|
115
129
|
} else {
|
|
116
130
|
|
|
117
131
|
if ( renderTarget !== null ) {
|
|
118
132
|
|
|
119
|
-
|
|
120
|
-
|
|
133
|
+
_screenSizeVec.width = renderTarget.width;
|
|
134
|
+
_screenSizeVec.height = renderTarget.height;
|
|
121
135
|
|
|
122
136
|
} else {
|
|
123
137
|
|
|
124
|
-
renderer.getDrawingBufferSize(
|
|
138
|
+
renderer.getDrawingBufferSize( _screenSizeVec );
|
|
125
139
|
|
|
126
140
|
}
|
|
127
141
|
|
|
@@ -137,11 +151,15 @@ class ScreenNode extends Node {
|
|
|
137
151
|
|
|
138
152
|
if ( scope === ScreenNode.SIZE ) {
|
|
139
153
|
|
|
140
|
-
output = uniform(
|
|
154
|
+
output = uniform( _screenSizeVec || ( _screenSizeVec = new Vector2() ) );
|
|
141
155
|
|
|
142
156
|
} else if ( scope === ScreenNode.VIEWPORT ) {
|
|
143
157
|
|
|
144
|
-
output = uniform(
|
|
158
|
+
output = uniform( _viewportVec || ( _viewportVec = new Vector4() ) );
|
|
159
|
+
|
|
160
|
+
} else if ( scope === ScreenNode.DPR ) {
|
|
161
|
+
|
|
162
|
+
output = uniform( 1 );
|
|
145
163
|
|
|
146
164
|
} else {
|
|
147
165
|
|
|
@@ -149,6 +167,8 @@ class ScreenNode extends Node {
|
|
|
149
167
|
|
|
150
168
|
}
|
|
151
169
|
|
|
170
|
+
this._output = output;
|
|
171
|
+
|
|
152
172
|
return output;
|
|
153
173
|
|
|
154
174
|
}
|
|
@@ -183,11 +203,20 @@ ScreenNode.COORDINATE = 'coordinate';
|
|
|
183
203
|
ScreenNode.VIEWPORT = 'viewport';
|
|
184
204
|
ScreenNode.SIZE = 'size';
|
|
185
205
|
ScreenNode.UV = 'uv';
|
|
206
|
+
ScreenNode.DPR = 'dpr';
|
|
186
207
|
|
|
187
208
|
export default ScreenNode;
|
|
188
209
|
|
|
189
210
|
// Screen
|
|
190
211
|
|
|
212
|
+
/**
|
|
213
|
+
* TSL object that represents the current DPR.
|
|
214
|
+
*
|
|
215
|
+
* @tsl
|
|
216
|
+
* @type {ScreenNode<float>}
|
|
217
|
+
*/
|
|
218
|
+
export const screenDPR = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.DPR );
|
|
219
|
+
|
|
191
220
|
/**
|
|
192
221
|
* TSL object that represents normalized screen coordinates, unitless in `[0, 1]`.
|
|
193
222
|
*
|
|
@@ -4,7 +4,7 @@ import { screenUV } from './ScreenNode.js';
|
|
|
4
4
|
|
|
5
5
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
6
6
|
|
|
7
|
-
let
|
|
7
|
+
let _sharedDepthbuffer = null;
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Represents the depth of the current viewport as a texture. This module
|
|
@@ -29,13 +29,25 @@ class ViewportDepthTextureNode extends ViewportTextureNode {
|
|
|
29
29
|
*/
|
|
30
30
|
constructor( uvNode = screenUV, levelNode = null ) {
|
|
31
31
|
|
|
32
|
-
if (
|
|
32
|
+
if ( _sharedDepthbuffer === null ) {
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
_sharedDepthbuffer = new DepthTexture();
|
|
35
35
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
super( uvNode, levelNode,
|
|
38
|
+
super( uvNode, levelNode, _sharedDepthbuffer );
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Overwritten so the method always returns the unique shared
|
|
44
|
+
* depth texture.
|
|
45
|
+
*
|
|
46
|
+
* @return {DepthTexture} The shared depth texture.
|
|
47
|
+
*/
|
|
48
|
+
getTextureForReference() {
|
|
49
|
+
|
|
50
|
+
return _sharedDepthbuffer;
|
|
39
51
|
|
|
40
52
|
}
|
|
41
53
|
|
|
@@ -39,6 +39,18 @@ class ViewportSharedTextureNode extends ViewportTextureNode {
|
|
|
39
39
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Overwritten so the method always returns the unique shared
|
|
44
|
+
* framebuffer texture.
|
|
45
|
+
*
|
|
46
|
+
* @return {FramebufferTexture} The shared framebuffer texture.
|
|
47
|
+
*/
|
|
48
|
+
getTextureForReference() {
|
|
49
|
+
|
|
50
|
+
return _sharedFramebuffer;
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
42
54
|
updateReference() {
|
|
43
55
|
|
|
44
56
|
return this;
|
|
@@ -80,13 +80,13 @@ class ViewportTextureNode extends TextureNode {
|
|
|
80
80
|
this.isOutputTextureNode = true;
|
|
81
81
|
|
|
82
82
|
/**
|
|
83
|
-
* The `updateBeforeType` is set to `NodeUpdateType.
|
|
84
|
-
* scene once per
|
|
83
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders the
|
|
84
|
+
* scene once per frame in its {@link ViewportTextureNode#updateBefore} method.
|
|
85
85
|
*
|
|
86
86
|
* @type {string}
|
|
87
87
|
* @default 'frame'
|
|
88
88
|
*/
|
|
89
|
-
this.updateBeforeType = NodeUpdateType.
|
|
89
|
+
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* The framebuffer texture for the current renderer context.
|
|
@@ -94,13 +94,35 @@ class ViewportTextureNode extends TextureNode {
|
|
|
94
94
|
* @type {WeakMap<RenderTarget, FramebufferTexture>}
|
|
95
95
|
* @private
|
|
96
96
|
*/
|
|
97
|
-
this.
|
|
97
|
+
this._cacheTextures = new WeakMap();
|
|
98
98
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
/**
|
|
102
|
+
* This methods returns a texture for the given render target reference.
|
|
103
|
+
*
|
|
104
|
+
* To avoid rendering errors, `ViewportTextureNode` must use unique framebuffer textures
|
|
105
|
+
* for different render contexts.
|
|
106
|
+
*
|
|
107
|
+
* @param {?RenderTarget} [reference=null] - The render target reference.
|
|
108
|
+
* @return {Texture} The framebuffer texture.
|
|
109
|
+
*/
|
|
110
|
+
getTextureForReference( reference = null ) {
|
|
111
|
+
|
|
112
|
+
let defaultFramebuffer;
|
|
113
|
+
let cacheTextures;
|
|
114
|
+
|
|
115
|
+
if ( this.referenceNode ) {
|
|
116
|
+
|
|
117
|
+
defaultFramebuffer = this.referenceNode.defaultFramebuffer;
|
|
118
|
+
cacheTextures = this.referenceNode._cacheTextures;
|
|
119
|
+
|
|
120
|
+
} else {
|
|
102
121
|
|
|
103
|
-
|
|
122
|
+
defaultFramebuffer = this.defaultFramebuffer;
|
|
123
|
+
cacheTextures = this._cacheTextures;
|
|
124
|
+
|
|
125
|
+
}
|
|
104
126
|
|
|
105
127
|
if ( reference === null ) {
|
|
106
128
|
|
|
@@ -108,15 +130,25 @@ class ViewportTextureNode extends TextureNode {
|
|
|
108
130
|
|
|
109
131
|
}
|
|
110
132
|
|
|
111
|
-
if (
|
|
133
|
+
if ( cacheTextures.has( reference ) === false ) {
|
|
112
134
|
|
|
113
135
|
const framebufferTexture = defaultFramebuffer.clone();
|
|
114
136
|
|
|
115
|
-
|
|
137
|
+
cacheTextures.set( reference, framebufferTexture );
|
|
116
138
|
|
|
117
139
|
}
|
|
118
140
|
|
|
119
|
-
return
|
|
141
|
+
return cacheTextures.get( reference );
|
|
142
|
+
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
updateReference( frame ) {
|
|
146
|
+
|
|
147
|
+
const renderTarget = frame.renderer.getRenderTarget();
|
|
148
|
+
|
|
149
|
+
this.value = this.getTextureForReference( renderTarget );
|
|
150
|
+
|
|
151
|
+
return this.value;
|
|
120
152
|
|
|
121
153
|
}
|
|
122
154
|
|
|
@@ -137,7 +169,7 @@ class ViewportTextureNode extends TextureNode {
|
|
|
137
169
|
|
|
138
170
|
//
|
|
139
171
|
|
|
140
|
-
const framebufferTexture = this.
|
|
172
|
+
const framebufferTexture = this.getTextureForReference( renderTarget );
|
|
141
173
|
|
|
142
174
|
if ( framebufferTexture.image.width !== _size.width || framebufferTexture.image.height !== _size.height ) {
|
|
143
175
|
|
|
@@ -156,8 +188,6 @@ class ViewportTextureNode extends TextureNode {
|
|
|
156
188
|
|
|
157
189
|
framebufferTexture.generateMipmaps = currentGenerateMipmaps;
|
|
158
190
|
|
|
159
|
-
this.value = framebufferTexture;
|
|
160
|
-
|
|
161
191
|
}
|
|
162
192
|
|
|
163
193
|
clone() {
|