super-three 0.162.0 → 0.164.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 +847 -1226
- package/build/three.module.js +846 -1225
- package/build/three.module.min.js +2 -2
- package/examples/jsm/animation/CCDIKSolver.js +4 -2
- package/examples/jsm/controls/TransformControls.js +3 -3
- package/examples/jsm/exporters/GLTFExporter.js +66 -5
- package/examples/jsm/exporters/USDZExporter.js +22 -1
- package/examples/jsm/geometries/TextGeometry.js +10 -2
- package/examples/jsm/interactive/HTMLMesh.js +7 -9
- package/examples/jsm/libs/draco/README.md +2 -2
- package/examples/jsm/libs/fflate.module.js +694 -496
- package/examples/jsm/lines/LineMaterial.js +0 -2
- package/examples/jsm/loaders/3MFLoader.js +2 -0
- package/examples/jsm/loaders/EXRLoader.js +351 -97
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +59 -0
- package/examples/jsm/loaders/KTX2Loader.js +3 -10
- package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
- package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
- package/examples/jsm/loaders/LUTImageLoader.js +0 -14
- package/examples/jsm/loaders/RGBMLoader.js +16 -0
- package/examples/jsm/loaders/VRMLLoader.js +1 -1
- package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
- package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
- package/examples/jsm/math/Octree.js +26 -20
- package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
- package/examples/jsm/nodes/Nodes.js +10 -4
- package/examples/jsm/nodes/accessors/AccessorsUtils.js +16 -1
- package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
- package/examples/jsm/nodes/accessors/ClippingNode.js +3 -2
- package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
- package/examples/jsm/nodes/accessors/MaterialNode.js +107 -3
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/MorphNode.js +13 -3
- package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +9 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +51 -10
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionNode.js +0 -8
- package/examples/jsm/nodes/core/Node.js +63 -4
- package/examples/jsm/nodes/core/NodeBuilder.js +26 -25
- package/examples/jsm/nodes/core/NodeFrame.js +10 -10
- package/examples/jsm/nodes/core/NodeUtils.js +2 -2
- package/examples/jsm/nodes/core/OutputStructNode.js +2 -1
- package/examples/jsm/nodes/core/PropertyNode.js +10 -0
- package/examples/jsm/nodes/core/UniformNode.js +20 -0
- package/examples/jsm/nodes/display/BumpMapNode.js +7 -26
- package/examples/jsm/nodes/display/FrontFacingNode.js +13 -0
- package/examples/jsm/nodes/display/PassNode.js +17 -1
- package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
- package/examples/jsm/nodes/display/ViewportDepthNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportNode.js +4 -2
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
- package/examples/jsm/nodes/display/ViewportTextureNode.js +4 -1
- package/examples/jsm/nodes/fog/FogExp2Node.js +4 -5
- package/examples/jsm/nodes/fog/FogNode.js +13 -3
- package/examples/jsm/nodes/fog/FogRangeNode.js +4 -3
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +26 -7
- package/examples/jsm/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -3
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
- package/examples/jsm/nodes/functions/PhongLightingModel.js +1 -1
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +164 -10
- package/examples/jsm/nodes/functions/ShadowMaskModel.js +31 -0
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +19 -5
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +22 -70
- package/examples/jsm/nodes/lighting/IrradianceNode.js +24 -0
- package/examples/jsm/nodes/lighting/LightsNode.js +11 -1
- package/examples/jsm/nodes/lighting/PointLightNode.js +2 -1
- package/examples/jsm/nodes/lighting/SpotLightNode.js +2 -1
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +10 -6
- package/examples/jsm/nodes/materials/Materials.js +1 -0
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -2
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +76 -5
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +11 -4
- package/examples/jsm/nodes/materials/NodeMaterial.js +55 -43
- package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +34 -0
- package/examples/jsm/nodes/pmrem/PMREMNode.js +193 -0
- package/examples/jsm/nodes/pmrem/PMREMUtils.js +288 -0
- package/examples/jsm/nodes/shadernode/ShaderNode.js +3 -9
- package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
- package/examples/jsm/objects/QuadMesh.js +7 -23
- package/examples/jsm/physics/JoltPhysics.js +281 -0
- package/examples/jsm/physics/RapierPhysics.js +4 -4
- package/examples/jsm/postprocessing/GlitchPass.js +0 -3
- package/examples/jsm/postprocessing/LUTPass.js +5 -71
- package/examples/jsm/postprocessing/RenderTransitionPass.js +193 -0
- package/examples/jsm/postprocessing/SAOPass.js +0 -1
- package/examples/jsm/postprocessing/SSAOPass.js +0 -3
- package/examples/jsm/renderers/common/Animation.js +3 -0
- package/examples/jsm/renderers/common/Background.js +8 -8
- package/examples/jsm/renderers/common/ClippingContext.js +1 -1
- package/examples/jsm/renderers/common/Info.js +11 -19
- package/examples/jsm/renderers/common/PostProcessing.js +12 -4
- package/examples/jsm/renderers/common/RenderContext.js +1 -1
- package/examples/jsm/renderers/common/RenderList.js +1 -1
- package/examples/jsm/renderers/common/RenderObject.js +47 -5
- package/examples/jsm/renderers/common/RenderObjects.js +1 -1
- package/examples/jsm/renderers/common/Renderer.js +153 -21
- package/examples/jsm/renderers/common/Textures.js +1 -1
- package/examples/jsm/renderers/common/extras/PMREMGenerator.js +773 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +34 -63
- package/examples/jsm/renderers/webgl/WebGLBackend.js +146 -36
- package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +145 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +9 -3
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +1 -1
- package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +64 -7
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +6 -23
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +77 -60
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +21 -4
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +29 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +92 -18
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +1 -1
- package/examples/jsm/utils/GPUStatsPanel.js +10 -45
- package/examples/jsm/utils/SceneUtils.js +60 -1
- package/examples/jsm/utils/TextureUtils.js +1 -1
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
- package/package.json +1 -1
- package/src/Three.js +0 -1
- package/src/animation/AnimationClip.js +1 -1
- package/src/constants.js +3 -3
- package/src/core/Object3D.js +10 -7
- package/src/core/RenderTarget.js +8 -0
- package/src/extras/PMREMGenerator.js +21 -11
- package/src/loaders/FileLoader.js +1 -1
- package/src/loaders/MaterialLoader.js +1 -0
- package/src/loaders/ObjectLoader.js +2 -0
- package/src/materials/Material.js +2 -0
- package/src/materials/MeshPhysicalMaterial.js +20 -0
- package/src/materials/ShaderMaterial.js +0 -4
- package/src/math/Spherical.js +4 -5
- package/src/objects/BatchedMesh.js +27 -3
- package/src/objects/InstancedMesh.js +10 -0
- package/src/objects/Line.js +66 -43
- package/src/renderers/WebGLRenderer.js +130 -158
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +17 -9
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
- package/src/renderers/shaders/ShaderLib.js +2 -1
- package/src/renderers/shaders/UniformsUtils.js +10 -1
- package/src/renderers/webgl/WebGLAttributes.js +6 -33
- package/src/renderers/webgl/WebGLBackground.js +18 -3
- package/src/renderers/webgl/WebGLBindingStates.js +14 -51
- package/src/renderers/webgl/WebGLBufferRenderer.js +35 -21
- package/src/renderers/webgl/WebGLCapabilities.js +35 -13
- package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
- package/src/renderers/webgl/WebGLExtensions.js +4 -19
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +35 -21
- package/src/renderers/webgl/WebGLLights.js +6 -32
- package/src/renderers/webgl/WebGLMaterials.js +8 -3
- package/src/renderers/webgl/WebGLMorphtargets.js +79 -217
- package/src/renderers/webgl/WebGLProgram.js +21 -52
- package/src/renderers/webgl/WebGLPrograms.js +24 -31
- package/src/renderers/webgl/WebGLRenderStates.js +13 -7
- package/src/renderers/webgl/WebGLShadowMap.js +25 -25
- package/src/renderers/webgl/WebGLState.js +15 -59
- package/src/renderers/webgl/WebGLTextures.js +138 -292
- package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
- package/src/renderers/webgl/WebGLUtils.js +9 -78
- package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
- package/src/renderers/webxr/WebXRManager.js +4 -6
- package/src/scenes/Scene.js +7 -1
- package/src/textures/Texture.js +11 -1
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -320
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -794
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
- package/src/renderers/WebGL1Renderer.js +0 -7
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
|
@@ -12,7 +12,9 @@ import Background from './Background.js';
|
|
|
12
12
|
import Nodes from './nodes/Nodes.js';
|
|
13
13
|
import Color4 from './Color4.js';
|
|
14
14
|
import ClippingContext from './ClippingContext.js';
|
|
15
|
-
import { Scene, Frustum, Matrix4, Vector2, Vector3, Vector4, DoubleSide, BackSide, FrontSide, SRGBColorSpace, NoToneMapping } from 'three';
|
|
15
|
+
import { Scene, Frustum, Matrix4, Vector2, Vector3, Vector4, DoubleSide, BackSide, FrontSide, SRGBColorSpace, NoColorSpace, NoToneMapping, LinearFilter, LinearSRGBColorSpace, RenderTarget, HalfFloatType, RGBAFormat } from 'three';
|
|
16
|
+
import { NodeMaterial } from '../../nodes/Nodes.js';
|
|
17
|
+
import QuadMesh from '../../objects/QuadMesh.js';
|
|
16
18
|
|
|
17
19
|
const _scene = new Scene();
|
|
18
20
|
const _drawingBufferSize = new Vector2();
|
|
@@ -20,6 +22,7 @@ const _screen = new Vector4();
|
|
|
20
22
|
const _frustum = new Frustum();
|
|
21
23
|
const _projScreenMatrix = new Matrix4();
|
|
22
24
|
const _vector3 = new Vector3();
|
|
25
|
+
const _quad = new QuadMesh( new NodeMaterial() );
|
|
23
26
|
|
|
24
27
|
class Renderer {
|
|
25
28
|
|
|
@@ -57,12 +60,16 @@ class Renderer {
|
|
|
57
60
|
this.sortObjects = true;
|
|
58
61
|
|
|
59
62
|
this.depth = true;
|
|
60
|
-
this.stencil =
|
|
63
|
+
this.stencil = false;
|
|
61
64
|
|
|
62
65
|
this.clippingPlanes = [];
|
|
63
66
|
|
|
64
67
|
this.info = new Info();
|
|
65
68
|
|
|
69
|
+
// nodes
|
|
70
|
+
|
|
71
|
+
this.toneMappingNode = null;
|
|
72
|
+
|
|
66
73
|
// internals
|
|
67
74
|
|
|
68
75
|
this._pixelRatio = 1;
|
|
@@ -90,6 +97,7 @@ class Renderer {
|
|
|
90
97
|
this._opaqueSort = null;
|
|
91
98
|
this._transparentSort = null;
|
|
92
99
|
|
|
100
|
+
this._frameBufferTarget = null;
|
|
93
101
|
|
|
94
102
|
const alphaClear = this.alpha === true ? 0 : 1;
|
|
95
103
|
|
|
@@ -312,7 +320,7 @@ class Renderer {
|
|
|
312
320
|
|
|
313
321
|
if ( this._initialized === false ) await this.init();
|
|
314
322
|
|
|
315
|
-
const renderContext = this.
|
|
323
|
+
const renderContext = this._renderScene( scene, camera );
|
|
316
324
|
|
|
317
325
|
await this.backend.resolveTimestampAsync( renderContext, 'render' );
|
|
318
326
|
|
|
@@ -322,16 +330,66 @@ class Renderer {
|
|
|
322
330
|
|
|
323
331
|
if ( this._initialized === false ) {
|
|
324
332
|
|
|
325
|
-
console.
|
|
326
|
-
|
|
333
|
+
console.warn( 'THREE.Renderer: .render() called before the backend is initialized. Try using .renderAsync() instead.' );
|
|
334
|
+
|
|
335
|
+
return this.renderAsync( scene, camera );
|
|
336
|
+
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
this._renderScene( scene, camera );
|
|
340
|
+
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
_getFrameBufferTarget() {
|
|
344
|
+
|
|
345
|
+
const { currentColorSpace } = this;
|
|
346
|
+
|
|
347
|
+
const useToneMapping = this._renderTarget === null && ( this.toneMapping !== NoToneMapping || this.toneMappingNode !== null );
|
|
348
|
+
const useColorSpace = currentColorSpace !== LinearSRGBColorSpace && currentColorSpace !== NoColorSpace;
|
|
349
|
+
|
|
350
|
+
if ( useToneMapping === false && useColorSpace === false ) return null;
|
|
351
|
+
|
|
352
|
+
const { width, height } = this.getDrawingBufferSize( _drawingBufferSize );
|
|
353
|
+
const { depth, stencil } = this;
|
|
354
|
+
|
|
355
|
+
let frameBufferTarget = this._frameBufferTarget;
|
|
356
|
+
|
|
357
|
+
if ( frameBufferTarget === null ) {
|
|
358
|
+
|
|
359
|
+
frameBufferTarget = new RenderTarget( width, height, {
|
|
360
|
+
depthBuffer: depth,
|
|
361
|
+
stencilBuffer: stencil,
|
|
362
|
+
type: HalfFloatType, // FloatType
|
|
363
|
+
format: RGBAFormat,
|
|
364
|
+
colorSpace: LinearSRGBColorSpace,
|
|
365
|
+
generateMipmaps: false,
|
|
366
|
+
minFilter: LinearFilter,
|
|
367
|
+
magFilter: LinearFilter,
|
|
368
|
+
samples: this.backend.parameters.antialias ? 4 : 0
|
|
369
|
+
} );
|
|
370
|
+
|
|
371
|
+
frameBufferTarget.isPostProcessingRenderTarget = true;
|
|
372
|
+
|
|
373
|
+
this._frameBufferTarget = frameBufferTarget;
|
|
327
374
|
|
|
328
375
|
}
|
|
329
376
|
|
|
330
|
-
|
|
377
|
+
frameBufferTarget.depthBuffer = depth;
|
|
378
|
+
frameBufferTarget.stencilBuffer = stencil;
|
|
379
|
+
frameBufferTarget.setSize( width, height );
|
|
380
|
+
frameBufferTarget.viewport.copy( this._viewport );
|
|
381
|
+
frameBufferTarget.scissor.copy( this._scissor );
|
|
382
|
+
frameBufferTarget.viewport.multiplyScalar( this._pixelRatio );
|
|
383
|
+
frameBufferTarget.scissor.multiplyScalar( this._pixelRatio );
|
|
384
|
+
frameBufferTarget.scissorTest = this._scissorTest;
|
|
385
|
+
|
|
386
|
+
return frameBufferTarget;
|
|
331
387
|
|
|
332
388
|
}
|
|
333
389
|
|
|
334
|
-
|
|
390
|
+
_renderScene( scene, camera, useFrameBufferTarget = true ) {
|
|
391
|
+
|
|
392
|
+
const frameBufferTarget = useFrameBufferTarget ? this._getFrameBufferTarget() : null;
|
|
335
393
|
|
|
336
394
|
// preserve render tree
|
|
337
395
|
|
|
@@ -345,11 +403,31 @@ class Renderer {
|
|
|
345
403
|
|
|
346
404
|
const sceneRef = ( scene.isScene === true ) ? scene : _scene;
|
|
347
405
|
|
|
348
|
-
const
|
|
349
|
-
|
|
406
|
+
const outputRenderTarget = this._renderTarget;
|
|
407
|
+
|
|
350
408
|
const activeCubeFace = this._activeCubeFace;
|
|
351
409
|
const activeMipmapLevel = this._activeMipmapLevel;
|
|
352
410
|
|
|
411
|
+
//
|
|
412
|
+
|
|
413
|
+
let renderTarget;
|
|
414
|
+
|
|
415
|
+
if ( frameBufferTarget !== null ) {
|
|
416
|
+
|
|
417
|
+
renderTarget = frameBufferTarget;
|
|
418
|
+
|
|
419
|
+
this.setRenderTarget( renderTarget );
|
|
420
|
+
|
|
421
|
+
} else {
|
|
422
|
+
|
|
423
|
+
renderTarget = outputRenderTarget;
|
|
424
|
+
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
//
|
|
428
|
+
|
|
429
|
+
const renderContext = this._renderContexts.get( scene, camera, renderTarget );
|
|
430
|
+
|
|
353
431
|
this._currentRenderContext = renderContext;
|
|
354
432
|
this._currentRenderObjectFunction = this._renderObjectFunction || this.renderObject;
|
|
355
433
|
|
|
@@ -378,7 +456,6 @@ class Renderer {
|
|
|
378
456
|
|
|
379
457
|
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
380
458
|
|
|
381
|
-
if ( this.info.autoReset === true ) this.info.reset();
|
|
382
459
|
|
|
383
460
|
//
|
|
384
461
|
|
|
@@ -505,6 +582,18 @@ class Renderer {
|
|
|
505
582
|
|
|
506
583
|
//
|
|
507
584
|
|
|
585
|
+
if ( frameBufferTarget !== null ) {
|
|
586
|
+
|
|
587
|
+
this.setRenderTarget( outputRenderTarget, activeCubeFace, activeMipmapLevel );
|
|
588
|
+
|
|
589
|
+
_quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
|
|
590
|
+
|
|
591
|
+
this._renderScene( _quad, _quad.camera, false );
|
|
592
|
+
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
//
|
|
596
|
+
|
|
508
597
|
sceneRef.onAfterRender( this, scene, camera, renderTarget );
|
|
509
598
|
|
|
510
599
|
//
|
|
@@ -761,8 +850,17 @@ class Renderer {
|
|
|
761
850
|
|
|
762
851
|
clear( color = true, depth = true, stencil = true ) {
|
|
763
852
|
|
|
853
|
+
if ( this._initialized === false ) {
|
|
854
|
+
|
|
855
|
+
console.warn( 'THREE.Renderer: .clear() called before the backend is initialized. Try using .clearAsync() instead.' );
|
|
856
|
+
|
|
857
|
+
return this.clearAsync( color, depth, stencil );
|
|
858
|
+
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
const renderTarget = this._renderTarget || this._getFrameBufferTarget();
|
|
862
|
+
|
|
764
863
|
let renderTargetData = null;
|
|
765
|
-
const renderTarget = this._renderTarget;
|
|
766
864
|
|
|
767
865
|
if ( renderTarget !== null ) {
|
|
768
866
|
|
|
@@ -897,7 +995,6 @@ class Renderer {
|
|
|
897
995
|
nodeFrame.renderId = this.info.calls;
|
|
898
996
|
|
|
899
997
|
//
|
|
900
|
-
if ( this.info.autoReset === true ) this.info.resetCompute();
|
|
901
998
|
|
|
902
999
|
const backend = this.backend;
|
|
903
1000
|
const pipelines = this._pipelines;
|
|
@@ -957,14 +1054,24 @@ class Renderer {
|
|
|
957
1054
|
|
|
958
1055
|
}
|
|
959
1056
|
|
|
960
|
-
hasFeatureAsync( name ) {
|
|
1057
|
+
async hasFeatureAsync( name ) {
|
|
961
1058
|
|
|
962
|
-
|
|
1059
|
+
if ( this._initialized === false ) await this.init();
|
|
1060
|
+
|
|
1061
|
+
return this.backend.hasFeature( name );
|
|
963
1062
|
|
|
964
1063
|
}
|
|
965
1064
|
|
|
966
1065
|
hasFeature( name ) {
|
|
967
1066
|
|
|
1067
|
+
if ( this._initialized === false ) {
|
|
1068
|
+
|
|
1069
|
+
console.warn( 'THREE.Renderer: .hasFeature() called before the backend is initialized. Try using .hasFeatureAsync() instead.' );
|
|
1070
|
+
|
|
1071
|
+
return false;
|
|
1072
|
+
|
|
1073
|
+
}
|
|
1074
|
+
|
|
968
1075
|
return this.backend.hasFeature( name );
|
|
969
1076
|
|
|
970
1077
|
}
|
|
@@ -979,9 +1086,19 @@ class Renderer {
|
|
|
979
1086
|
|
|
980
1087
|
}
|
|
981
1088
|
|
|
982
|
-
|
|
1089
|
+
copyTextureToTexture( position, srcTexture, dstTexture, level = 0 ) {
|
|
1090
|
+
|
|
1091
|
+
this._textures.updateTexture( srcTexture );
|
|
1092
|
+
this._textures.updateTexture( dstTexture );
|
|
1093
|
+
|
|
1094
|
+
this.backend.copyTextureToTexture( position, srcTexture, dstTexture, level );
|
|
1095
|
+
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
readRenderTargetPixelsAsync( renderTarget, x, y, width, height, index = 0 ) {
|
|
983
1100
|
|
|
984
|
-
return this.backend.copyTextureToBuffer( renderTarget.
|
|
1101
|
+
return this.backend.copyTextureToBuffer( renderTarget.textures[ index ], x, y, width, height );
|
|
985
1102
|
|
|
986
1103
|
}
|
|
987
1104
|
|
|
@@ -1141,6 +1258,7 @@ class Renderer {
|
|
|
1141
1258
|
|
|
1142
1259
|
let overridePositionNode;
|
|
1143
1260
|
let overrideFragmentNode;
|
|
1261
|
+
let overrideDepthNode;
|
|
1144
1262
|
|
|
1145
1263
|
//
|
|
1146
1264
|
|
|
@@ -1157,7 +1275,6 @@ class Renderer {
|
|
|
1157
1275
|
if ( material.positionNode && material.positionNode.isNode ) {
|
|
1158
1276
|
|
|
1159
1277
|
overridePositionNode = overrideMaterial.positionNode;
|
|
1160
|
-
|
|
1161
1278
|
overrideMaterial.positionNode = material.positionNode;
|
|
1162
1279
|
|
|
1163
1280
|
}
|
|
@@ -1166,6 +1283,14 @@ class Renderer {
|
|
|
1166
1283
|
|
|
1167
1284
|
overrideMaterial.side = material.shadowSide === null ? material.side : material.shadowSide;
|
|
1168
1285
|
|
|
1286
|
+
if ( material.depthNode && material.depthNode.isNode ) {
|
|
1287
|
+
|
|
1288
|
+
overrideDepthNode = overrideMaterial.depthNode;
|
|
1289
|
+
overrideMaterial.depthNode = material.depthNode;
|
|
1290
|
+
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
|
|
1169
1294
|
if ( material.shadowNode && material.shadowNode.isNode ) {
|
|
1170
1295
|
|
|
1171
1296
|
overrideFragmentNode = overrideMaterial.fragmentNode;
|
|
@@ -1210,16 +1335,16 @@ class Renderer {
|
|
|
1210
1335
|
if ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {
|
|
1211
1336
|
|
|
1212
1337
|
material.side = BackSide;
|
|
1213
|
-
this._handleObjectFunction( object, material, scene, camera, lightsNode, 'backSide' ); // create backSide pass id
|
|
1338
|
+
this._handleObjectFunction( object, material, scene, camera, lightsNode, group, 'backSide' ); // create backSide pass id
|
|
1214
1339
|
|
|
1215
1340
|
material.side = FrontSide;
|
|
1216
|
-
this._handleObjectFunction( object, material, scene, camera, lightsNode ); // use default pass id
|
|
1341
|
+
this._handleObjectFunction( object, material, scene, camera, lightsNode, group ); // use default pass id
|
|
1217
1342
|
|
|
1218
1343
|
material.side = DoubleSide;
|
|
1219
1344
|
|
|
1220
1345
|
} else {
|
|
1221
1346
|
|
|
1222
|
-
this._handleObjectFunction( object, material, scene, camera, lightsNode );
|
|
1347
|
+
this._handleObjectFunction( object, material, scene, camera, lightsNode, group );
|
|
1223
1348
|
|
|
1224
1349
|
}
|
|
1225
1350
|
|
|
@@ -1231,6 +1356,12 @@ class Renderer {
|
|
|
1231
1356
|
|
|
1232
1357
|
}
|
|
1233
1358
|
|
|
1359
|
+
if ( overrideDepthNode !== undefined ) {
|
|
1360
|
+
|
|
1361
|
+
scene.overrideMaterial.depthNode = overrideDepthNode;
|
|
1362
|
+
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1234
1365
|
if ( overrideFragmentNode !== undefined ) {
|
|
1235
1366
|
|
|
1236
1367
|
scene.overrideMaterial.fragmentNode = overrideFragmentNode;
|
|
@@ -1243,9 +1374,10 @@ class Renderer {
|
|
|
1243
1374
|
|
|
1244
1375
|
}
|
|
1245
1376
|
|
|
1246
|
-
_renderObjectDirect( object, material, scene, camera, lightsNode, passId ) {
|
|
1377
|
+
_renderObjectDirect( object, material, scene, camera, lightsNode, group, passId ) {
|
|
1247
1378
|
|
|
1248
1379
|
const renderObject = this._objects.get( object, material, scene, camera, lightsNode, this._currentRenderContext, passId );
|
|
1380
|
+
renderObject.drawRange = group || object.geometry.drawRange;
|
|
1249
1381
|
|
|
1250
1382
|
//
|
|
1251
1383
|
|
|
@@ -38,7 +38,7 @@ class Textures extends DataMap {
|
|
|
38
38
|
|
|
39
39
|
depthTexture = new DepthTexture();
|
|
40
40
|
depthTexture.format = renderTarget.stencilBuffer ? DepthStencilFormat : DepthFormat;
|
|
41
|
-
depthTexture.type = renderTarget.stencilBuffer ? UnsignedInt248Type : UnsignedIntType;
|
|
41
|
+
depthTexture.type = renderTarget.stencilBuffer ? UnsignedInt248Type : UnsignedIntType; // FloatType
|
|
42
42
|
depthTexture.image.width = mipWidth;
|
|
43
43
|
depthTexture.image.height = mipHeight;
|
|
44
44
|
|