@plastic-software/three 0.178.0 → 0.180.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/README.md +1 -1
- package/build/three.cjs +950 -230
- package/build/three.core.js +754 -138
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +197 -96
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +99 -25
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +4586 -1499
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +4544 -1499
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/capabilities/WebGPU.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/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- 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/exporters/USDZExporter.js +676 -299
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/interactive/HTMLMesh.js +5 -3
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- 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 +210 -22
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- 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/MaterialXLoader.js +212 -30
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -1
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- 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/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/SkyMesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +14 -5
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +23 -20
- 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 +7 -6
- 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 +51 -41
- package/examples/jsm/tsl/display/OutlineNode.js +2 -2
- package/examples/jsm/tsl/display/SSRNode.js +180 -65
- package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +181 -172
- package/examples/jsm/tsl/display/boxBlur.js +64 -0
- package/examples/jsm/tsl/display/hashBlur.js +15 -18
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +1 -1
- 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 +2 -0
- package/src/Three.TSL.js +98 -24
- package/src/animation/AnimationClip.js +17 -2
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +11 -3
- package/src/core/BufferGeometry.js +2 -2
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/lib/earcut.js +1 -1
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/FileLoader.js +25 -2
- package/src/loaders/ImageBitmapLoader.js +23 -0
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- package/src/materials/Material.js +12 -0
- package/src/materials/MeshBasicMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/NodeMaterial.js +1 -1
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -2
- package/src/math/ColorManagement.js +7 -1
- package/src/math/Frustum.js +19 -8
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +4 -0
- package/src/nodes/TSL.js +4 -0
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- 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/Normal.js +11 -11
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +19 -4
- package/src/nodes/accessors/SceneNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +1 -1
- package/src/nodes/accessors/Texture3DNode.js +13 -0
- package/src/nodes/accessors/TextureNode.js +83 -19
- package/src/nodes/code/FunctionCallNode.js +19 -0
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/ContextNode.js +44 -1
- package/src/nodes/core/Node.js +30 -22
- package/src/nodes/core/NodeBuilder.js +71 -32
- package/src/nodes/core/NodeFrame.js +1 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +5 -3
- package/src/nodes/core/StackNode.js +71 -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 +79 -14
- package/src/nodes/core/VarNode.js +83 -15
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/PassNode.js +148 -2
- 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 +94 -4
- package/src/nodes/functions/PhysicalLightingModel.js +2 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +67 -23
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +430 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/LightsNode.js +1 -1
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +1 -1
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +19 -3
- package/src/nodes/math/MathNode.js +72 -60
- package/src/nodes/math/OperatorNode.js +26 -25
- package/src/nodes/tsl/TSLCore.js +477 -142
- package/src/nodes/utils/DebugNode.js +1 -1
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/JoinNode.js +3 -1
- package/src/nodes/utils/MemberNode.js +58 -7
- package/src/nodes/utils/RTTNode.js +10 -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 +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Sprite.js +2 -2
- package/src/renderers/WebGLRenderer.js +21 -31
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +19 -1
- package/src/renderers/common/Bindings.js +21 -18
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderObject.js +14 -2
- package/src/renderers/common/Renderer.js +55 -32
- package/src/renderers/common/SampledTexture.js +4 -72
- package/src/renderers/common/Sampler.js +91 -0
- package/src/renderers/common/Storage3DTexture.js +21 -0
- package/src/renderers/common/StorageArrayTexture.js +21 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +52 -14
- package/src/renderers/common/TimestampQueryPool.js +3 -3
- package/src/renderers/common/XRManager.js +51 -17
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +5 -5
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- 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 +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +24 -18
- package/src/renderers/webgl/WebGLPrograms.js +4 -4
- package/src/renderers/webgl/WebGLShadowMap.js +11 -1
- package/src/renderers/webgl/WebGLTextures.js +20 -7
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +207 -146
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +112 -19
- 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 +87 -44
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +169 -99
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +35 -31
- package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +10 -19
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +120 -84
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +3 -3
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +86 -11
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +12 -2
- package/src/textures/VideoTexture.js +27 -2
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
|
@@ -77,6 +77,6 @@ export default DebugNode;
|
|
|
77
77
|
* @param {?Function} [callback=null] - Optional callback function to handle the debug output.
|
|
78
78
|
* @returns {DebugNode}
|
|
79
79
|
*/
|
|
80
|
-
export const debug = ( node, callback = null ) => nodeObject( new DebugNode( nodeObject( node ), callback ) );
|
|
80
|
+
export const debug = ( node, callback = null ) => nodeObject( new DebugNode( nodeObject( node ), callback ) ).toStack();
|
|
81
81
|
|
|
82
82
|
addMethodChaining( 'debug', debug );
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { NodeUpdateType } from '../core/constants.js';
|
|
3
|
+
import { nodeObject } from '../tsl/TSLCore.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* EventNode is a node that executes a callback during specific update phases.
|
|
7
|
+
*
|
|
8
|
+
* @augments Node
|
|
9
|
+
*/
|
|
10
|
+
class EventNode extends Node {
|
|
11
|
+
|
|
12
|
+
static get type() {
|
|
13
|
+
|
|
14
|
+
return 'EventNode';
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Creates an EventNode.
|
|
20
|
+
*
|
|
21
|
+
* @param {string} eventType - The type of event
|
|
22
|
+
* @param {Function} callback - The callback to execute on update.
|
|
23
|
+
*/
|
|
24
|
+
constructor( eventType, callback ) {
|
|
25
|
+
|
|
26
|
+
super( 'void' );
|
|
27
|
+
|
|
28
|
+
this.eventType = eventType;
|
|
29
|
+
this.callback = callback;
|
|
30
|
+
|
|
31
|
+
if ( eventType === EventNode.OBJECT ) {
|
|
32
|
+
|
|
33
|
+
this.updateType = NodeUpdateType.OBJECT;
|
|
34
|
+
|
|
35
|
+
} else if ( eventType === EventNode.MATERIAL ) {
|
|
36
|
+
|
|
37
|
+
this.updateType = NodeUpdateType.RENDER;
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
update( frame ) {
|
|
44
|
+
|
|
45
|
+
this.callback( frame );
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
EventNode.OBJECT = 'object';
|
|
52
|
+
EventNode.MATERIAL = 'material';
|
|
53
|
+
|
|
54
|
+
export default EventNode;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Helper to create an EventNode and add it to the stack.
|
|
58
|
+
*
|
|
59
|
+
* @param {string} type - The event type.
|
|
60
|
+
* @param {Function} callback - The callback function.
|
|
61
|
+
* @returns {EventNode}
|
|
62
|
+
*/
|
|
63
|
+
const createEvent = ( type, callback ) => nodeObject( new EventNode( type, callback ) ).toStack();
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Creates an event that triggers a function every time an object (Mesh|Sprite) is rendered.
|
|
67
|
+
*
|
|
68
|
+
* The event will be bound to the declared TSL function `Fn()`; it must be declared within a `Fn()` or the JS function call must be inherited from one.
|
|
69
|
+
*
|
|
70
|
+
* @param {Function} callback - The callback function.
|
|
71
|
+
* @returns {EventNode}
|
|
72
|
+
*/
|
|
73
|
+
export const OnObjectUpdate = ( callback ) => createEvent( EventNode.OBJECT, callback );
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Creates an event that triggers a function when the first object that uses the material is rendered.
|
|
77
|
+
*
|
|
78
|
+
* The event will be bound to the declared TSL function `Fn()`; it must be declared within a `Fn()` or the JS function call must be inherited from one.
|
|
79
|
+
*
|
|
80
|
+
* @param {Function} callback - The callback function.
|
|
81
|
+
* @returns {EventNode}
|
|
82
|
+
*/
|
|
83
|
+
export const OnMaterialUpdate = ( callback ) => createEvent( EventNode.MATERIAL, callback );
|
|
@@ -95,7 +95,9 @@ class JoinNode extends TempNode {
|
|
|
95
95
|
|
|
96
96
|
if ( inputPrimitiveType !== primitiveType ) {
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
const targetType = builder.getTypeFromLength( inputTypeLength, primitiveType );
|
|
99
|
+
|
|
100
|
+
inputSnippet = builder.format( inputSnippet, inputType, targetType );
|
|
99
101
|
|
|
100
102
|
}
|
|
101
103
|
|
|
@@ -15,21 +15,21 @@ class MemberNode extends Node {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* Constructs
|
|
18
|
+
* Constructs a member node.
|
|
19
19
|
*
|
|
20
|
-
* @param {Node}
|
|
20
|
+
* @param {Node} structNode - The struct node.
|
|
21
21
|
* @param {string} property - The property name.
|
|
22
22
|
*/
|
|
23
|
-
constructor(
|
|
23
|
+
constructor( structNode, property ) {
|
|
24
24
|
|
|
25
25
|
super();
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* The
|
|
28
|
+
* The struct node.
|
|
29
29
|
*
|
|
30
30
|
* @type {Node}
|
|
31
31
|
*/
|
|
32
|
-
this.
|
|
32
|
+
this.structNode = structNode;
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* The property name.
|
|
@@ -49,15 +49,66 @@ class MemberNode extends Node {
|
|
|
49
49
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
hasMember( builder ) {
|
|
53
|
+
|
|
54
|
+
if ( this.structNode.isMemberNode ) {
|
|
55
|
+
|
|
56
|
+
if ( this.structNode.hasMember( builder ) === false ) {
|
|
57
|
+
|
|
58
|
+
return false;
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return this.structNode.getMemberType( builder, this.property ) !== 'void';
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
|
|
52
68
|
getNodeType( builder ) {
|
|
53
69
|
|
|
54
|
-
|
|
70
|
+
if ( this.hasMember( builder ) === false ) {
|
|
71
|
+
|
|
72
|
+
// default type if member does not exist
|
|
73
|
+
|
|
74
|
+
return 'float';
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return this.structNode.getMemberType( builder, this.property );
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
getMemberType( builder, name ) {
|
|
83
|
+
|
|
84
|
+
if ( this.hasMember( builder ) === false ) {
|
|
85
|
+
|
|
86
|
+
// default type if member does not exist
|
|
87
|
+
|
|
88
|
+
return 'float';
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const type = this.getNodeType( builder );
|
|
93
|
+
const struct = builder.getStructTypeNode( type );
|
|
94
|
+
|
|
95
|
+
return struct.getMemberType( builder, name );
|
|
55
96
|
|
|
56
97
|
}
|
|
57
98
|
|
|
58
99
|
generate( builder ) {
|
|
59
100
|
|
|
60
|
-
|
|
101
|
+
if ( this.hasMember( builder ) === false ) {
|
|
102
|
+
|
|
103
|
+
console.warn( `THREE.TSL: Member "${ this.property }" does not exist in struct.` );
|
|
104
|
+
|
|
105
|
+
const type = this.getNodeType( builder );
|
|
106
|
+
|
|
107
|
+
return builder.generateConst( type );
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const propertyName = this.structNode.build( builder );
|
|
61
112
|
|
|
62
113
|
return propertyName + '.' + this.property;
|
|
63
114
|
|
|
@@ -41,6 +41,15 @@ class RTTNode extends TextureNode {
|
|
|
41
41
|
|
|
42
42
|
super( renderTarget.texture, uv() );
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* This flag can be used for type testing.
|
|
46
|
+
*
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @readonly
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
51
|
+
this.isRTTNode = true;
|
|
52
|
+
|
|
44
53
|
/**
|
|
45
54
|
* The node to render a texture with.
|
|
46
55
|
*
|
|
@@ -262,7 +271,7 @@ export const rtt = ( node, ...params ) => nodeObject( new RTTNode( nodeObject( n
|
|
|
262
271
|
*/
|
|
263
272
|
export const convertToTexture = ( node, ...params ) => {
|
|
264
273
|
|
|
265
|
-
if ( node.isTextureNode ) return node;
|
|
274
|
+
if ( node.isSampleNode || node.isTextureNode ) return node;
|
|
266
275
|
if ( node.isPassNode ) return node.getTextureNode();
|
|
267
276
|
|
|
268
277
|
return rtt( node, ...params );
|
|
@@ -13,6 +13,7 @@ import { Vector4 } from '../../math/Vector4.js';
|
|
|
13
13
|
import { Matrix4 } from '../../math/Matrix4.js';
|
|
14
14
|
import { RenderTarget } from '../../core/RenderTarget.js';
|
|
15
15
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
16
|
+
import { warnOnce } from '../../utils.js';
|
|
16
17
|
|
|
17
18
|
const _reflectorPlane = new Plane();
|
|
18
19
|
const _normal = new Vector3();
|
|
@@ -61,10 +62,11 @@ class ReflectorNode extends TextureNode {
|
|
|
61
62
|
*
|
|
62
63
|
* @param {Object} [parameters={}] - An object holding configuration parameters.
|
|
63
64
|
* @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
|
|
64
|
-
* @param {number} [parameters.
|
|
65
|
+
* @param {number} [parameters.resolutionScale=1] - The resolution scale.
|
|
65
66
|
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
66
67
|
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
67
68
|
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
69
|
+
* @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
|
|
68
70
|
* @param {TextureNode} [parameters.defaultTexture] - The default texture node.
|
|
69
71
|
* @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
|
|
70
72
|
*/
|
|
@@ -204,10 +206,11 @@ class ReflectorBaseNode extends Node {
|
|
|
204
206
|
* @param {TextureNode} textureNode - Represents the rendered reflections as a texture node.
|
|
205
207
|
* @param {Object} [parameters={}] - An object holding configuration parameters.
|
|
206
208
|
* @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
|
|
207
|
-
* @param {number} [parameters.
|
|
209
|
+
* @param {number} [parameters.resolutionScale=1] - The resolution scale.
|
|
208
210
|
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
209
211
|
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
210
212
|
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
213
|
+
* @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
|
|
211
214
|
*/
|
|
212
215
|
constructor( textureNode, parameters = {} ) {
|
|
213
216
|
|
|
@@ -215,10 +218,11 @@ class ReflectorBaseNode extends Node {
|
|
|
215
218
|
|
|
216
219
|
const {
|
|
217
220
|
target = new Object3D(),
|
|
218
|
-
|
|
221
|
+
resolutionScale = 1,
|
|
219
222
|
generateMipmaps = false,
|
|
220
223
|
bounces = true,
|
|
221
|
-
depth = false
|
|
224
|
+
depth = false,
|
|
225
|
+
samples = 0
|
|
222
226
|
} = parameters;
|
|
223
227
|
|
|
224
228
|
/**
|
|
@@ -242,7 +246,15 @@ class ReflectorBaseNode extends Node {
|
|
|
242
246
|
* @type {number}
|
|
243
247
|
* @default {1}
|
|
244
248
|
*/
|
|
245
|
-
this.
|
|
249
|
+
this.resolutionScale = resolutionScale;
|
|
250
|
+
|
|
251
|
+
if ( parameters.resolution !== undefined ) {
|
|
252
|
+
|
|
253
|
+
warnOnce( 'THREE.ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".' ); // @deprecated r180
|
|
254
|
+
|
|
255
|
+
this.resolutionScale = parameters.resolution;
|
|
256
|
+
|
|
257
|
+
}
|
|
246
258
|
|
|
247
259
|
/**
|
|
248
260
|
* Whether mipmaps should be generated or not.
|
|
@@ -268,6 +280,14 @@ class ReflectorBaseNode extends Node {
|
|
|
268
280
|
*/
|
|
269
281
|
this.depth = depth;
|
|
270
282
|
|
|
283
|
+
/**
|
|
284
|
+
* The number of anti-aliasing samples for the render-target
|
|
285
|
+
*
|
|
286
|
+
* @type {number}
|
|
287
|
+
* @default {0}
|
|
288
|
+
*/
|
|
289
|
+
this.samples = samples;
|
|
290
|
+
|
|
271
291
|
/**
|
|
272
292
|
* The `updateBeforeType` is set to `NodeUpdateType.RENDER` when {@link ReflectorBaseNode#bounces}
|
|
273
293
|
* is `true`. Otherwise it's `NodeUpdateType.FRAME`.
|
|
@@ -321,7 +341,7 @@ class ReflectorBaseNode extends Node {
|
|
|
321
341
|
*/
|
|
322
342
|
_updateResolution( renderTarget, renderer ) {
|
|
323
343
|
|
|
324
|
-
const resolution = this.
|
|
344
|
+
const resolution = this.resolutionScale;
|
|
325
345
|
|
|
326
346
|
renderer.getDrawingBufferSize( _size );
|
|
327
347
|
|
|
@@ -388,7 +408,7 @@ class ReflectorBaseNode extends Node {
|
|
|
388
408
|
|
|
389
409
|
if ( renderTarget === undefined ) {
|
|
390
410
|
|
|
391
|
-
renderTarget = new RenderTarget( 0, 0, { type: HalfFloatType } );
|
|
411
|
+
renderTarget = new RenderTarget( 0, 0, { type: HalfFloatType, samples: this.samples } );
|
|
392
412
|
|
|
393
413
|
if ( this.generateMipmaps === true ) {
|
|
394
414
|
|
|
@@ -557,6 +577,29 @@ class ReflectorBaseNode extends Node {
|
|
|
557
577
|
|
|
558
578
|
}
|
|
559
579
|
|
|
580
|
+
/**
|
|
581
|
+
* The resolution scale.
|
|
582
|
+
*
|
|
583
|
+
* @deprecated
|
|
584
|
+
* @type {number}
|
|
585
|
+
* @default {1}
|
|
586
|
+
*/
|
|
587
|
+
get resolution() {
|
|
588
|
+
|
|
589
|
+
warnOnce( 'THREE.ReflectorNode: The "resolution" property has been renamed to "resolutionScale".' ); // @deprecated r180
|
|
590
|
+
|
|
591
|
+
return this.resolutionScale;
|
|
592
|
+
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
set resolution( value ) {
|
|
596
|
+
|
|
597
|
+
warnOnce( 'THREE.ReflectorNode: The "resolution" property has been renamed to "resolutionScale".' ); // @deprecated r180
|
|
598
|
+
|
|
599
|
+
this.resolutionScale = value;
|
|
600
|
+
|
|
601
|
+
}
|
|
602
|
+
|
|
560
603
|
}
|
|
561
604
|
|
|
562
605
|
/**
|
|
@@ -570,6 +613,7 @@ class ReflectorBaseNode extends Node {
|
|
|
570
613
|
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
571
614
|
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
572
615
|
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
616
|
+
* @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
|
|
573
617
|
* @param {TextureNode} [parameters.defaultTexture] - The default texture node.
|
|
574
618
|
* @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
|
|
575
619
|
* @returns {ReflectorNode}
|
|
@@ -26,13 +26,22 @@ class SampleNode extends Node {
|
|
|
26
26
|
* Creates an instance of SampleNode.
|
|
27
27
|
*
|
|
28
28
|
* @param {Function} callback - The function to be called when sampling. Should accept a UV node and return a value.
|
|
29
|
+
* @param {?Node<vec2>} [uvNode=null] - The UV node to be used in the texture sampling.
|
|
29
30
|
*/
|
|
30
|
-
constructor( callback ) {
|
|
31
|
+
constructor( callback, uvNode = null ) {
|
|
31
32
|
|
|
32
33
|
super();
|
|
33
34
|
|
|
34
35
|
this.callback = callback;
|
|
35
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Represents the texture coordinates.
|
|
39
|
+
*
|
|
40
|
+
* @type {?Node<vec2|vec3>}
|
|
41
|
+
* @default null
|
|
42
|
+
*/
|
|
43
|
+
this.uvNode = uvNode;
|
|
44
|
+
|
|
36
45
|
/**
|
|
37
46
|
* This flag can be used for type testing.
|
|
38
47
|
*
|
|
@@ -76,6 +85,7 @@ export default SampleNode;
|
|
|
76
85
|
*
|
|
77
86
|
* @function
|
|
78
87
|
* @param {Function} callback - The function to be called when sampling. Should accept a UV node and return a value.
|
|
88
|
+
* @param {?Node<vec2>} [uv=null] - The UV node to be used in the texture sampling.
|
|
79
89
|
* @returns {SampleNode} The created SampleNode instance wrapped as a node object.
|
|
80
90
|
*/
|
|
81
|
-
export const sample = ( callback ) => nodeObject( new SampleNode( callback ) );
|
|
91
|
+
export const sample = ( callback, uv = null ) => nodeObject( new SampleNode( callback, nodeObject( uv ) ) );
|
|
@@ -100,6 +100,17 @@ class SplitNode extends Node {
|
|
|
100
100
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Returns the scope of the node.
|
|
105
|
+
*
|
|
106
|
+
* @return {Node} The scope of the node.
|
|
107
|
+
*/
|
|
108
|
+
getScope() {
|
|
109
|
+
|
|
110
|
+
return this.node.getScope();
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
|
|
103
114
|
generate( builder, output ) {
|
|
104
115
|
|
|
105
116
|
const node = this.node;
|
package/src/nodes/utils/Timer.js
CHANGED
|
@@ -24,50 +24,3 @@ export const deltaTime = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRe
|
|
|
24
24
|
* @type {UniformNode<uint>}
|
|
25
25
|
*/
|
|
26
26
|
export const frameId = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.frameId );
|
|
27
|
-
|
|
28
|
-
// Deprecated
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* @tsl
|
|
32
|
-
* @function
|
|
33
|
-
* @deprecated since r170. Use {@link time} instead.
|
|
34
|
-
*
|
|
35
|
-
* @param {number} [timeScale=1] - The time scale.
|
|
36
|
-
* @returns {UniformNode<float>}
|
|
37
|
-
*/
|
|
38
|
-
export const timerLocal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
39
|
-
|
|
40
|
-
console.warn( 'TSL: timerLocal() is deprecated. Use "time" instead.' );
|
|
41
|
-
return time.mul( timeScale );
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* @tsl
|
|
47
|
-
* @function
|
|
48
|
-
* @deprecated since r170. Use {@link time} instead.
|
|
49
|
-
*
|
|
50
|
-
* @param {number} [timeScale=1] - The time scale.
|
|
51
|
-
* @returns {UniformNode<float>}
|
|
52
|
-
*/
|
|
53
|
-
export const timerGlobal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
54
|
-
|
|
55
|
-
console.warn( 'TSL: timerGlobal() is deprecated. Use "time" instead.' );
|
|
56
|
-
return time.mul( timeScale );
|
|
57
|
-
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @tsl
|
|
62
|
-
* @function
|
|
63
|
-
* @deprecated since r170. Use {@link deltaTime} instead.
|
|
64
|
-
*
|
|
65
|
-
* @param {number} [timeScale=1] - The time scale.
|
|
66
|
-
* @returns {UniformNode<float>}
|
|
67
|
-
*/
|
|
68
|
-
export const timerDelta = ( timeScale = 1 ) => { // @deprecated, r170
|
|
69
|
-
|
|
70
|
-
console.warn( 'TSL: timerDelta() is deprecated. Use "deltaTime" instead.' );
|
|
71
|
-
return deltaTime.mul( timeScale );
|
|
72
|
-
|
|
73
|
-
};
|
|
@@ -971,7 +971,7 @@ class BatchedMesh extends Mesh {
|
|
|
971
971
|
*
|
|
972
972
|
* @param {number} geometryId - The ID of the geometry to return the bounding box for.
|
|
973
973
|
* @param {Box3} target - The target object that is used to store the method's result.
|
|
974
|
-
* @return {Box3
|
|
974
|
+
* @return {?Box3} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.
|
|
975
975
|
*/
|
|
976
976
|
getBoundingBoxAt( geometryId, target ) {
|
|
977
977
|
|
|
@@ -1016,7 +1016,7 @@ class BatchedMesh extends Mesh {
|
|
|
1016
1016
|
*
|
|
1017
1017
|
* @param {number} geometryId - The ID of the geometry to return the bounding sphere for.
|
|
1018
1018
|
* @param {Sphere} target - The target object that is used to store the method's result.
|
|
1019
|
-
* @return {Sphere
|
|
1019
|
+
* @return {?Sphere} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.
|
|
1020
1020
|
*/
|
|
1021
1021
|
getBoundingSphereAt( geometryId, target ) {
|
|
1022
1022
|
|
|
@@ -1251,7 +1251,7 @@ class BatchedMesh extends Mesh {
|
|
|
1251
1251
|
const availableInstanceIds = this._availableInstanceIds;
|
|
1252
1252
|
const instanceInfo = this._instanceInfo;
|
|
1253
1253
|
availableInstanceIds.sort( ascIdSort );
|
|
1254
|
-
while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length ) {
|
|
1254
|
+
while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length - 1 ) {
|
|
1255
1255
|
|
|
1256
1256
|
instanceInfo.pop();
|
|
1257
1257
|
availableInstanceIds.pop();
|
|
@@ -1529,9 +1529,11 @@ class BatchedMesh extends Mesh {
|
|
|
1529
1529
|
_matrix
|
|
1530
1530
|
.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )
|
|
1531
1531
|
.multiply( this.matrixWorld );
|
|
1532
|
+
|
|
1532
1533
|
_frustum.setFromProjectionMatrix(
|
|
1533
1534
|
_matrix,
|
|
1534
|
-
|
|
1535
|
+
camera.coordinateSystem,
|
|
1536
|
+
camera.reversedDepth
|
|
1535
1537
|
);
|
|
1536
1538
|
|
|
1537
1539
|
}
|
package/src/objects/LOD.js
CHANGED
|
@@ -183,7 +183,7 @@ class LOD extends Object3D {
|
|
|
183
183
|
* the given distance.
|
|
184
184
|
*
|
|
185
185
|
* @param {number} distance - The LOD distance.
|
|
186
|
-
* @return {Object3D
|
|
186
|
+
* @return {?Object3D} The found 3D object. `null` if no 3D object has been found.
|
|
187
187
|
*/
|
|
188
188
|
getObjectForDistance( distance ) {
|
|
189
189
|
|
package/src/objects/Sprite.js
CHANGED
|
@@ -48,7 +48,7 @@ class Sprite extends Object3D {
|
|
|
48
48
|
/**
|
|
49
49
|
* Constructs a new sprite.
|
|
50
50
|
*
|
|
51
|
-
* @param {SpriteMaterial} [material] - The sprite material.
|
|
51
|
+
* @param {(SpriteMaterial|SpriteNodeMaterial)} [material] - The sprite material.
|
|
52
52
|
*/
|
|
53
53
|
constructor( material = new SpriteMaterial() ) {
|
|
54
54
|
|
|
@@ -94,7 +94,7 @@ class Sprite extends Object3D {
|
|
|
94
94
|
/**
|
|
95
95
|
* The sprite material.
|
|
96
96
|
*
|
|
97
|
-
* @type {SpriteMaterial}
|
|
97
|
+
* @type {(SpriteMaterial|SpriteNodeMaterial)}
|
|
98
98
|
*/
|
|
99
99
|
this.material = material;
|
|
100
100
|
|
|
@@ -52,7 +52,7 @@ import { WebGLUtils } from './webgl/WebGLUtils.js';
|
|
|
52
52
|
import { WebXRManager } from './webxr/WebXRManager.js';
|
|
53
53
|
import { WebGLMaterials } from './webgl/WebGLMaterials.js';
|
|
54
54
|
import { WebGLUniformsGroups } from './webgl/WebGLUniformsGroups.js';
|
|
55
|
-
import { createCanvasElement, probeAsync,
|
|
55
|
+
import { createCanvasElement, probeAsync, warnOnce } from '../utils.js';
|
|
56
56
|
import { ColorManagement } from '../math/ColorManagement.js';
|
|
57
57
|
|
|
58
58
|
/**
|
|
@@ -80,7 +80,7 @@ class WebGLRenderer {
|
|
|
80
80
|
preserveDrawingBuffer = false,
|
|
81
81
|
powerPreference = 'default',
|
|
82
82
|
failIfMajorPerformanceCaveat = false,
|
|
83
|
-
|
|
83
|
+
reversedDepthBuffer = false,
|
|
84
84
|
} = parameters;
|
|
85
85
|
|
|
86
86
|
/**
|
|
@@ -313,7 +313,6 @@ class WebGLRenderer {
|
|
|
313
313
|
|
|
314
314
|
// camera matrices cache
|
|
315
315
|
|
|
316
|
-
const _currentProjectionMatrix = new Matrix4();
|
|
317
316
|
const _projScreenMatrix = new Matrix4();
|
|
318
317
|
|
|
319
318
|
const _vector3 = new Vector3();
|
|
@@ -409,7 +408,7 @@ class WebGLRenderer {
|
|
|
409
408
|
|
|
410
409
|
state = new WebGLState( _gl, extensions );
|
|
411
410
|
|
|
412
|
-
if ( capabilities.
|
|
411
|
+
if ( capabilities.reversedDepthBuffer && reversedDepthBuffer ) {
|
|
413
412
|
|
|
414
413
|
state.buffers.depth.setReversed( true );
|
|
415
414
|
|
|
@@ -1557,7 +1556,7 @@ class WebGLRenderer {
|
|
|
1557
1556
|
renderStateStack.push( currentRenderState );
|
|
1558
1557
|
|
|
1559
1558
|
_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
|
|
1560
|
-
_frustum.setFromProjectionMatrix( _projScreenMatrix );
|
|
1559
|
+
_frustum.setFromProjectionMatrix( _projScreenMatrix, WebGLCoordinateSystem, camera.reversedDepth );
|
|
1561
1560
|
|
|
1562
1561
|
_localClippingEnabled = this.localClippingEnabled;
|
|
1563
1562
|
_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );
|
|
@@ -2388,23 +2387,17 @@ class WebGLRenderer {
|
|
|
2388
2387
|
|
|
2389
2388
|
// common camera uniforms
|
|
2390
2389
|
|
|
2391
|
-
const
|
|
2390
|
+
const reversedDepthBuffer = state.buffers.depth.getReversed();
|
|
2392
2391
|
|
|
2393
|
-
if (
|
|
2392
|
+
if ( reversedDepthBuffer && camera.reversedDepth !== true ) {
|
|
2394
2393
|
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
toNormalizedProjectionMatrix( _currentProjectionMatrix );
|
|
2398
|
-
toReversedProjectionMatrix( _currentProjectionMatrix );
|
|
2399
|
-
|
|
2400
|
-
p_uniforms.setValue( _gl, 'projectionMatrix', _currentProjectionMatrix );
|
|
2401
|
-
|
|
2402
|
-
} else {
|
|
2403
|
-
|
|
2404
|
-
p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
|
|
2394
|
+
camera._reversedDepth = true;
|
|
2395
|
+
camera.updateProjectionMatrix();
|
|
2405
2396
|
|
|
2406
2397
|
}
|
|
2407
2398
|
|
|
2399
|
+
p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
|
|
2400
|
+
|
|
2408
2401
|
p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );
|
|
2409
2402
|
|
|
2410
2403
|
const uCamPos = p_uniforms.map.cameraPosition;
|
|
@@ -2834,9 +2827,15 @@ class WebGLRenderer {
|
|
|
2834
2827
|
|
|
2835
2828
|
} else if ( isRenderTarget3D ) {
|
|
2836
2829
|
|
|
2837
|
-
const textureProperties = properties.get( renderTarget.texture );
|
|
2838
2830
|
const layer = activeCubeFace;
|
|
2839
|
-
|
|
2831
|
+
|
|
2832
|
+
for ( let i = 0; i < renderTarget.textures.length; i ++ ) {
|
|
2833
|
+
|
|
2834
|
+
const textureProperties = properties.get( renderTarget.textures[ i ] );
|
|
2835
|
+
|
|
2836
|
+
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, textureProperties.__webglTexture, activeMipmapLevel, layer );
|
|
2837
|
+
|
|
2838
|
+
}
|
|
2840
2839
|
|
|
2841
2840
|
} else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {
|
|
2842
2841
|
|
|
@@ -2988,7 +2987,7 @@ class WebGLRenderer {
|
|
|
2988
2987
|
_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
|
|
2989
2988
|
_gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );
|
|
2990
2989
|
|
|
2991
|
-
// when using MRT, select the
|
|
2990
|
+
// when using MRT, select the correct color buffer for the subsequent read command
|
|
2992
2991
|
|
|
2993
2992
|
if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
2994
2993
|
|
|
@@ -3315,15 +3314,6 @@ class WebGLRenderer {
|
|
|
3315
3314
|
|
|
3316
3315
|
};
|
|
3317
3316
|
|
|
3318
|
-
this.copyTextureToTexture3D = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) {
|
|
3319
|
-
|
|
3320
|
-
// @deprecated, r170
|
|
3321
|
-
warnOnce( 'WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.' );
|
|
3322
|
-
|
|
3323
|
-
return this.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition, level );
|
|
3324
|
-
|
|
3325
|
-
};
|
|
3326
|
-
|
|
3327
3317
|
/**
|
|
3328
3318
|
* Initializes the given WebGLRenderTarget memory. Useful for initializing a render target so data
|
|
3329
3319
|
* can be copied into it using {@link WebGLRenderer#copyTextureToTexture} before it has been
|
|
@@ -3453,7 +3443,7 @@ class WebGLRenderer {
|
|
|
3453
3443
|
* @property {boolean} [depth=true] Whether the drawing buffer has a depth buffer of at least 16 bits.
|
|
3454
3444
|
* @property {boolean} [logarithmicDepthBuffer=false] Whether to use a logarithmic depth buffer. It may be necessary to use this if dealing with huge differences in scale in a single scene.
|
|
3455
3445
|
* Note that this setting uses `gl_FragDepth` if available which disables the Early Fragment Test optimization and can cause a decrease in performance.
|
|
3456
|
-
* @property {boolean} [
|
|
3446
|
+
* @property {boolean} [reversedDepthBuffer=false] Whether to use a reverse depth buffer. Requires the `EXT_clip_control` extension.
|
|
3457
3447
|
* This is a more faster and accurate version than logarithmic depth buffer.
|
|
3458
3448
|
**/
|
|
3459
3449
|
|
|
@@ -3474,7 +3464,7 @@ class WebGLRenderer {
|
|
|
3474
3464
|
* @property {number} maxVertexTextures - The number of textures that can be used in a vertex shader.
|
|
3475
3465
|
* @property {number} maxVertexUniforms - The maximum number of uniforms that can be used in a vertex shader.
|
|
3476
3466
|
* @property {string} precision - The shader precision currently being used by the renderer.
|
|
3477
|
-
* @property {boolean}
|
|
3467
|
+
* @property {boolean} reversedDepthBuffer - `true` if `reversedDepthBuffer` was set to `true` in the constructor
|
|
3478
3468
|
* and the rendering context supports `EXT_clip_control`.
|
|
3479
3469
|
* @property {boolean} vertexTextures - `true` if vertex textures can be used.
|
|
3480
3470
|
**/
|
|
@@ -33,7 +33,7 @@ class Attributes extends DataMap {
|
|
|
33
33
|
* Deletes the data for the given attribute.
|
|
34
34
|
*
|
|
35
35
|
* @param {BufferAttribute} attribute - The attribute.
|
|
36
|
-
* @return {Object
|
|
36
|
+
* @return {?Object} The deleted attribute data.
|
|
37
37
|
*/
|
|
38
38
|
delete( attribute ) {
|
|
39
39
|
|