@plastic-software/three 0.183.4 → 0.184.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 +773 -286
- package/build/three.core.js +372 -110
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +426 -180
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +7 -1
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2979 -1281
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2942 -1281
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +11 -0
- package/examples/jsm/animation/CCDIKSolver.js +5 -1
- package/examples/jsm/controls/ArcballControls.js +4 -1
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +58 -54
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/TrackballControls.js +2 -2
- package/examples/jsm/controls/TransformControls.js +34 -2
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/exporters/GLTFExporter.js +21 -5
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +169 -114
- package/examples/jsm/inspector/RendererInspector.js +2 -2
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +34 -2
- package/examples/jsm/inspector/tabs/Performance.js +2 -2
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +105 -3
- package/examples/jsm/inspector/ui/Graph.js +2 -2
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +273 -176
- package/examples/jsm/inspector/ui/Style.js +64 -10
- package/examples/jsm/inspector/ui/Tab.js +39 -7
- package/examples/jsm/inspector/ui/Values.js +39 -2
- package/examples/jsm/inspector/ui/utils.js +13 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +8 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lines/LineMaterial.js +1 -1
- package/examples/jsm/loaders/EXRLoader.js +682 -43
- package/examples/jsm/loaders/FBXLoader.js +233 -33
- package/examples/jsm/loaders/GLTFLoader.js +24 -7
- package/examples/jsm/loaders/HDRLoader.js +1 -1
- package/examples/jsm/loaders/KTX2Loader.js +8 -2
- package/examples/jsm/loaders/LDrawLoader.js +39 -47
- package/examples/jsm/loaders/SVGLoader.js +1 -1
- package/examples/jsm/loaders/VTKLoader.js +5 -1
- package/examples/jsm/loaders/collada/ColladaComposer.js +101 -7
- package/examples/jsm/loaders/collada/ColladaParser.js +19 -4
- package/examples/jsm/loaders/usd/USDAParser.js +6 -0
- package/examples/jsm/loaders/usd/USDCParser.js +26 -0
- package/examples/jsm/loaders/usd/USDComposer.js +656 -103
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/Sky.js +14 -2
- package/examples/jsm/objects/SkyMesh.js +23 -6
- package/examples/jsm/renderers/Projector.js +18 -38
- package/examples/jsm/renderers/SVGRenderer.js +6 -25
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +10 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +11 -0
- package/examples/jsm/tsl/display/BilateralBlurNode.js +10 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/GTAONode.js +2 -1
- package/examples/jsm/tsl/display/GaussianBlurNode.js +10 -0
- package/examples/jsm/tsl/display/GodraysNode.js +2 -11
- package/examples/jsm/tsl/display/OutlineNode.js +66 -16
- package/examples/jsm/tsl/display/SSGINode.js +0 -4
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +48 -7
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +13 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +4 -4
- package/src/Three.Core.js +1 -0
- package/src/Three.TSL.js +6 -0
- package/src/Three.WebGPU.Nodes.js +3 -0
- package/src/Three.WebGPU.js +6 -0
- package/src/animation/AnimationAction.js +11 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/constants.js +1 -1
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/Clock.js +1 -1
- package/src/core/Object3D.js +1 -5
- package/src/core/RenderTarget.js +1 -0
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +1 -2
- package/src/loaders/ImageBitmapLoader.js +4 -6
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/loaders/ObjectLoader.js +25 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +27 -0
- package/src/materials/nodes/NodeMaterial.js +0 -27
- package/src/materials/nodes/manager/NodeMaterialObserver.js +188 -89
- package/src/math/Line3.js +3 -0
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +13 -9
- package/src/math/Matrix4.js +13 -9
- package/src/math/Plane.js +4 -3
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +12 -8
- package/src/math/Vector4.js +13 -9
- package/src/nodes/Nodes.js +0 -1
- package/src/nodes/TSL.js +1 -1
- package/src/nodes/accessors/BufferAttributeNode.js +9 -3
- package/src/nodes/accessors/CubeTextureNode.js +7 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +4 -4
- package/src/nodes/accessors/SceneProperties.js +2 -8
- package/src/nodes/accessors/StorageBufferNode.js +10 -4
- package/src/nodes/accessors/StorageTextureNode.js +4 -9
- package/src/nodes/accessors/TextureNode.js +10 -2
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/core/ArrayNode.js +1 -1
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/Node.js +83 -12
- package/src/nodes/core/NodeBuilder.js +117 -16
- package/src/nodes/core/NodeUtils.js +1 -1
- package/src/nodes/core/OutputStructNode.js +1 -1
- package/src/nodes/core/ParameterNode.js +1 -1
- package/src/nodes/core/StackNode.js +1 -1
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +1 -1
- package/src/nodes/core/SubBuildNode.js +1 -1
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/VarNode.js +1 -1
- package/src/nodes/core/VaryingNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +2 -2
- package/src/nodes/display/PassNode.js +27 -7
- package/src/nodes/display/RenderOutputNode.js +4 -4
- package/src/nodes/display/ScreenNode.js +1 -1
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +18 -7
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +69 -44
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +6 -27
- package/src/nodes/lighting/ShadowNode.js +24 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +1 -1
- package/src/nodes/math/MathNode.js +73 -1
- package/src/nodes/math/OperatorNode.js +1 -1
- package/src/nodes/math/PackFloatNode.js +1 -1
- package/src/nodes/math/UnpackFloatNode.js +1 -1
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +21 -3
- package/src/nodes/utils/ArrayElementNode.js +1 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +1 -1
- package/src/nodes/utils/EventNode.js +30 -0
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- package/src/nodes/utils/JoinNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +1 -1
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/objects/BatchedMesh.js +17 -2
- package/src/objects/InstancedMesh.js +19 -3
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +147 -48
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +0 -8
- package/src/renderers/common/Background.js +2 -2
- package/src/renderers/common/BindGroup.js +1 -8
- package/src/renderers/common/Bindings.js +2 -2
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/Info.js +333 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Pipelines.js +36 -3
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +5 -2
- package/src/renderers/common/RenderObject.js +2 -2
- package/src/renderers/common/RenderObjects.js +3 -3
- package/src/renderers/common/RenderPipeline.js +35 -6
- package/src/renderers/common/Renderer.js +232 -53
- package/src/renderers/common/Textures.js +72 -3
- package/src/renderers/common/UniformsGroup.js +1 -1
- package/src/renderers/common/XRManager.js +34 -27
- package/src/renderers/common/extras/PMREMGenerator.js +23 -15
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeManager.js +230 -99
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -3
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib.js +0 -1
- package/src/renderers/shaders/UniformsLib.js +7 -2
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +13 -13
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +6 -0
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLMaterials.js +12 -13
- package/src/renderers/webgl/WebGLOutput.js +4 -1
- package/src/renderers/webgl/WebGLProgram.js +4 -0
- package/src/renderers/webgl/WebGLPrograms.js +19 -3
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLState.js +43 -0
- package/src/renderers/webgl/WebGLTextures.js +129 -26
- package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +106 -65
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +29 -51
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +42 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +63 -50
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +160 -146
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +55 -33
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +103 -17
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -0
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +91 -17
- package/src/renderers/webgpu/utils/WebGPUUtils.js +18 -2
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +13 -2
- package/src/utils.js +23 -1
- package/src/nodes/utils/RemapNode.js +0 -125
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
NoToneMapping,
|
|
9
9
|
LinearMipmapLinearFilter,
|
|
10
10
|
SRGBColorSpace,
|
|
11
|
-
LinearSRGBColorSpace,
|
|
12
11
|
RGBAIntegerFormat,
|
|
13
12
|
RGIntegerFormat,
|
|
14
13
|
RedIntegerFormat,
|
|
@@ -52,7 +51,7 @@ import { WebGLUtils } from './webgl/WebGLUtils.js';
|
|
|
52
51
|
import { WebXRManager } from './webxr/WebXRManager.js';
|
|
53
52
|
import { WebGLMaterials } from './webgl/WebGLMaterials.js';
|
|
54
53
|
import { WebGLUniformsGroups } from './webgl/WebGLUniformsGroups.js';
|
|
55
|
-
import { createCanvasElement, probeAsync,
|
|
54
|
+
import { createCanvasElement, probeAsync, error, warn, log } from '../utils.js';
|
|
56
55
|
import { ColorManagement } from '../math/ColorManagement.js';
|
|
57
56
|
import { getDFGLUT } from './shaders/DFGLUTData.js';
|
|
58
57
|
|
|
@@ -131,6 +130,7 @@ class WebGLRenderer {
|
|
|
131
130
|
|
|
132
131
|
const uintClearColor = new Uint32Array( 4 );
|
|
133
132
|
const intClearColor = new Int32Array( 4 );
|
|
133
|
+
const objectPosition = new Vector3();
|
|
134
134
|
|
|
135
135
|
let currentRenderList = null;
|
|
136
136
|
let currentRenderState = null;
|
|
@@ -293,6 +293,7 @@ class WebGLRenderer {
|
|
|
293
293
|
const _this = this;
|
|
294
294
|
|
|
295
295
|
let _isContextLost = false;
|
|
296
|
+
let _nodesHandler = null;
|
|
296
297
|
|
|
297
298
|
// internal state cache
|
|
298
299
|
|
|
@@ -727,7 +728,7 @@ class WebGLRenderer {
|
|
|
727
728
|
|
|
728
729
|
if ( _outputBufferType === UnsignedByteType ) {
|
|
729
730
|
|
|
730
|
-
|
|
731
|
+
error( 'THREE.WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.' );
|
|
731
732
|
return;
|
|
732
733
|
|
|
733
734
|
}
|
|
@@ -738,7 +739,7 @@ class WebGLRenderer {
|
|
|
738
739
|
|
|
739
740
|
if ( effects[ i ].isOutputPass === true ) {
|
|
740
741
|
|
|
741
|
-
|
|
742
|
+
warn( 'THREE.WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.' );
|
|
742
743
|
break;
|
|
743
744
|
|
|
744
745
|
}
|
|
@@ -998,6 +999,7 @@ class WebGLRenderer {
|
|
|
998
999
|
if ( depth ) {
|
|
999
1000
|
|
|
1000
1001
|
bits |= _gl.DEPTH_BUFFER_BIT;
|
|
1002
|
+
this.state.buffers.depth.setMask( true );
|
|
1001
1003
|
|
|
1002
1004
|
}
|
|
1003
1005
|
|
|
@@ -1043,6 +1045,20 @@ class WebGLRenderer {
|
|
|
1043
1045
|
|
|
1044
1046
|
};
|
|
1045
1047
|
|
|
1048
|
+
/**
|
|
1049
|
+
* Sets a compatibility node builder for rendering node materials with WebGLRenderer.
|
|
1050
|
+
* This enables using TSL (Three.js Shading Language) node materials to prepare
|
|
1051
|
+
* for migration to WebGPURenderer.
|
|
1052
|
+
*
|
|
1053
|
+
* @param {WebGLNodesHandler} nodesHandler - The node builder instance.
|
|
1054
|
+
*/
|
|
1055
|
+
this.setNodesHandler = function ( nodesHandler ) {
|
|
1056
|
+
|
|
1057
|
+
nodesHandler.setRenderer( this );
|
|
1058
|
+
_nodesHandler = nodesHandler;
|
|
1059
|
+
|
|
1060
|
+
};
|
|
1061
|
+
|
|
1046
1062
|
/**
|
|
1047
1063
|
* Frees the GPU-related resources allocated by this instance. Call this
|
|
1048
1064
|
* method whenever this instance is no longer used in your app.
|
|
@@ -1278,33 +1294,23 @@ class WebGLRenderer {
|
|
|
1278
1294
|
|
|
1279
1295
|
if ( object.isBatchedMesh ) {
|
|
1280
1296
|
|
|
1281
|
-
if (
|
|
1282
|
-
|
|
1283
|
-
// @deprecated, r174
|
|
1284
|
-
warnOnce( 'WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
|
|
1285
|
-
renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );
|
|
1286
|
-
|
|
1287
|
-
} else {
|
|
1288
|
-
|
|
1289
|
-
if ( ! extensions.get( 'WEBGL_multi_draw' ) ) {
|
|
1297
|
+
if ( ! extensions.get( 'WEBGL_multi_draw' ) ) {
|
|
1290
1298
|
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1299
|
+
const starts = object._multiDrawStarts;
|
|
1300
|
+
const counts = object._multiDrawCounts;
|
|
1301
|
+
const drawCount = object._multiDrawCount;
|
|
1302
|
+
const bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;
|
|
1303
|
+
const uniforms = properties.get( material ).currentProgram.getUniforms();
|
|
1304
|
+
for ( let i = 0; i < drawCount; i ++ ) {
|
|
1297
1305
|
|
|
1298
|
-
|
|
1299
|
-
|
|
1306
|
+
uniforms.setValue( _gl, '_gl_DrawID', i );
|
|
1307
|
+
renderer.render( starts[ i ] / bytesPerElement, counts[ i ] );
|
|
1300
1308
|
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
} else {
|
|
1309
|
+
}
|
|
1304
1310
|
|
|
1305
|
-
|
|
1311
|
+
} else {
|
|
1306
1312
|
|
|
1307
|
-
|
|
1313
|
+
renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
|
|
1308
1314
|
|
|
1309
1315
|
}
|
|
1310
1316
|
|
|
@@ -1603,6 +1609,13 @@ class WebGLRenderer {
|
|
|
1603
1609
|
|
|
1604
1610
|
if ( _isContextLost === true ) return;
|
|
1605
1611
|
|
|
1612
|
+
// update node builder if available
|
|
1613
|
+
if ( _nodesHandler !== null ) {
|
|
1614
|
+
|
|
1615
|
+
_nodesHandler.renderStart( scene, camera );
|
|
1616
|
+
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1606
1619
|
// use internal render target for HalfFloatType color buffer (only when tone mapping is enabled)
|
|
1607
1620
|
|
|
1608
1621
|
const isXRPresenting = xr.enabled === true && xr.isPresenting === true;
|
|
@@ -1631,6 +1644,7 @@ class WebGLRenderer {
|
|
|
1631
1644
|
currentRenderState = renderStates.get( scene, renderStateStack.length );
|
|
1632
1645
|
currentRenderState.init( camera );
|
|
1633
1646
|
|
|
1647
|
+
currentRenderState.state.textureUnits = textures.getTextureUnits();
|
|
1634
1648
|
renderStateStack.push( currentRenderState );
|
|
1635
1649
|
|
|
1636
1650
|
_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
|
|
@@ -1776,6 +1790,8 @@ class WebGLRenderer {
|
|
|
1776
1790
|
|
|
1777
1791
|
currentRenderState = renderStateStack[ renderStateStack.length - 1 ];
|
|
1778
1792
|
|
|
1793
|
+
textures.setTextureUnits( currentRenderState.state.textureUnits );
|
|
1794
|
+
|
|
1779
1795
|
if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );
|
|
1780
1796
|
|
|
1781
1797
|
} else {
|
|
@@ -1796,6 +1812,12 @@ class WebGLRenderer {
|
|
|
1796
1812
|
|
|
1797
1813
|
}
|
|
1798
1814
|
|
|
1815
|
+
if ( _nodesHandler !== null ) {
|
|
1816
|
+
|
|
1817
|
+
_nodesHandler.renderEnd();
|
|
1818
|
+
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1799
1821
|
};
|
|
1800
1822
|
|
|
1801
1823
|
function projectObject( object, camera, groupOrder, sortObjects ) {
|
|
@@ -1814,6 +1836,10 @@ class WebGLRenderer {
|
|
|
1814
1836
|
|
|
1815
1837
|
if ( object.autoUpdate === true ) object.update( camera );
|
|
1816
1838
|
|
|
1839
|
+
} else if ( object.isLightProbeGrid ) {
|
|
1840
|
+
|
|
1841
|
+
currentRenderState.pushLightProbeGrid( object );
|
|
1842
|
+
|
|
1817
1843
|
} else if ( object.isLight ) {
|
|
1818
1844
|
|
|
1819
1845
|
currentRenderState.pushLight( object );
|
|
@@ -2129,7 +2155,7 @@ class WebGLRenderer {
|
|
|
2129
2155
|
|
|
2130
2156
|
const lightsStateVersion = lights.state.version;
|
|
2131
2157
|
|
|
2132
|
-
const parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );
|
|
2158
|
+
const parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object, currentRenderState.state.lightProbeGridArray );
|
|
2133
2159
|
const programCacheKey = programCache.getProgramCacheKey( parameters );
|
|
2134
2160
|
|
|
2135
2161
|
let programs = materialProperties.programs;
|
|
@@ -2172,6 +2198,13 @@ class WebGLRenderer {
|
|
|
2172
2198
|
|
|
2173
2199
|
parameters.uniforms = programCache.getUniforms( material );
|
|
2174
2200
|
|
|
2201
|
+
// Use node builder for node materials if available
|
|
2202
|
+
if ( _nodesHandler !== null && material.isNodeMaterial ) {
|
|
2203
|
+
|
|
2204
|
+
_nodesHandler.build( material, object, parameters );
|
|
2205
|
+
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2175
2208
|
material.onBeforeCompile( parameters, _this );
|
|
2176
2209
|
|
|
2177
2210
|
program = programCache.acquireProgram( parameters, programCacheKey );
|
|
@@ -2221,6 +2254,8 @@ class WebGLRenderer {
|
|
|
2221
2254
|
|
|
2222
2255
|
}
|
|
2223
2256
|
|
|
2257
|
+
materialProperties.lightProbeGrid = currentRenderState.state.lightProbeGridArray.length > 0;
|
|
2258
|
+
|
|
2224
2259
|
materialProperties.currentProgram = program;
|
|
2225
2260
|
materialProperties.uniformsList = null;
|
|
2226
2261
|
|
|
@@ -2264,6 +2299,30 @@ class WebGLRenderer {
|
|
|
2264
2299
|
|
|
2265
2300
|
}
|
|
2266
2301
|
|
|
2302
|
+
function findLightProbeGrid( volumes, object ) {
|
|
2303
|
+
|
|
2304
|
+
if ( volumes.length === 0 ) return null;
|
|
2305
|
+
|
|
2306
|
+
if ( volumes.length === 1 ) {
|
|
2307
|
+
|
|
2308
|
+
return volumes[ 0 ].texture !== null ? volumes[ 0 ] : null;
|
|
2309
|
+
|
|
2310
|
+
}
|
|
2311
|
+
|
|
2312
|
+
objectPosition.setFromMatrixPosition( object.matrixWorld );
|
|
2313
|
+
|
|
2314
|
+
for ( let i = 0, l = volumes.length; i < l; i ++ ) {
|
|
2315
|
+
|
|
2316
|
+
const v = volumes[ i ];
|
|
2317
|
+
|
|
2318
|
+
if ( v.texture !== null && v.boundingBox.containsPoint( objectPosition ) ) return v;
|
|
2319
|
+
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
return null;
|
|
2323
|
+
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2267
2326
|
function setProgram( camera, scene, geometry, material, object ) {
|
|
2268
2327
|
|
|
2269
2328
|
if ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...
|
|
@@ -2272,7 +2331,7 @@ class WebGLRenderer {
|
|
|
2272
2331
|
|
|
2273
2332
|
const fog = scene.fog;
|
|
2274
2333
|
const environment = ( material.isMeshStandardMaterial || material.isMeshLambertMaterial || material.isMeshPhongMaterial ) ? scene.environment : null;
|
|
2275
|
-
const colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace :
|
|
2334
|
+
const colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : ColorManagement.workingColorSpace );
|
|
2276
2335
|
const usePMREM = material.isMeshStandardMaterial || ( material.isMeshLambertMaterial && ! material.envMap ) || ( material.isMeshPhongMaterial && ! material.envMap );
|
|
2277
2336
|
const envMap = environments.get( material.envMap || environment, usePMREM );
|
|
2278
2337
|
const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
|
|
@@ -2428,6 +2487,10 @@ class WebGLRenderer {
|
|
|
2428
2487
|
|
|
2429
2488
|
needsProgramChange = true;
|
|
2430
2489
|
|
|
2490
|
+
} else if ( !! materialProperties.lightProbeGrid !== ( currentRenderState.state.lightProbeGridArray.length > 0 ) ) {
|
|
2491
|
+
|
|
2492
|
+
needsProgramChange = true;
|
|
2493
|
+
|
|
2431
2494
|
}
|
|
2432
2495
|
|
|
2433
2496
|
} else {
|
|
@@ -2445,6 +2508,14 @@ class WebGLRenderer {
|
|
|
2445
2508
|
|
|
2446
2509
|
program = getProgram( material, scene, object );
|
|
2447
2510
|
|
|
2511
|
+
// notify the node builder that the program has changed so uniforms and update nodes can
|
|
2512
|
+
// be cached and triggered.
|
|
2513
|
+
if ( _nodesHandler && material.isNodeMaterial ) {
|
|
2514
|
+
|
|
2515
|
+
_nodesHandler.onUpdateProgram( material, program, materialProperties );
|
|
2516
|
+
|
|
2517
|
+
}
|
|
2518
|
+
|
|
2448
2519
|
}
|
|
2449
2520
|
|
|
2450
2521
|
let refreshProgram = false;
|
|
@@ -2470,6 +2541,19 @@ class WebGLRenderer {
|
|
|
2470
2541
|
|
|
2471
2542
|
}
|
|
2472
2543
|
|
|
2544
|
+
if ( materialProperties.needsLights ) {
|
|
2545
|
+
|
|
2546
|
+
const objectVolume = findLightProbeGrid( currentRenderState.state.lightProbeGridArray, object );
|
|
2547
|
+
|
|
2548
|
+
if ( materialProperties.lightProbeGrid !== objectVolume ) {
|
|
2549
|
+
|
|
2550
|
+
materialProperties.lightProbeGrid = objectVolume;
|
|
2551
|
+
refreshMaterial = true;
|
|
2552
|
+
|
|
2553
|
+
}
|
|
2554
|
+
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2473
2557
|
if ( refreshProgram || _currentCamera !== camera ) {
|
|
2474
2558
|
|
|
2475
2559
|
// common camera uniforms
|
|
@@ -2657,6 +2741,19 @@ class WebGLRenderer {
|
|
|
2657
2741
|
|
|
2658
2742
|
materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );
|
|
2659
2743
|
|
|
2744
|
+
// light probe volume
|
|
2745
|
+
|
|
2746
|
+
if ( materialProperties.needsLights && materialProperties.lightProbeGrid ) {
|
|
2747
|
+
|
|
2748
|
+
const volume = materialProperties.lightProbeGrid;
|
|
2749
|
+
|
|
2750
|
+
m_uniforms.probesSH.value = volume.texture;
|
|
2751
|
+
m_uniforms.probesMin.value.copy( volume.boundingBox.min );
|
|
2752
|
+
m_uniforms.probesMax.value.copy( volume.boundingBox.max );
|
|
2753
|
+
m_uniforms.probesResolution.value.copy( volume.resolution );
|
|
2754
|
+
|
|
2755
|
+
}
|
|
2756
|
+
|
|
2660
2757
|
WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );
|
|
2661
2758
|
|
|
2662
2759
|
}
|
|
@@ -2682,7 +2779,7 @@ class WebGLRenderer {
|
|
|
2682
2779
|
|
|
2683
2780
|
// UBOs
|
|
2684
2781
|
|
|
2685
|
-
if ( material.
|
|
2782
|
+
if ( material.uniformsGroups !== undefined ) {
|
|
2686
2783
|
|
|
2687
2784
|
const groups = material.uniformsGroups;
|
|
2688
2785
|
|
|
@@ -3258,22 +3355,24 @@ class WebGLRenderer {
|
|
|
3258
3355
|
|
|
3259
3356
|
}
|
|
3260
3357
|
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3358
|
+
state.activeTexture( _gl.TEXTURE0 ); // see #33153
|
|
3359
|
+
|
|
3360
|
+
state.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );
|
|
3361
|
+
state.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );
|
|
3362
|
+
state.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );
|
|
3264
3363
|
|
|
3265
3364
|
// used for copying data from cpu
|
|
3266
|
-
const currentUnpackRowLen =
|
|
3267
|
-
const currentUnpackImageHeight =
|
|
3268
|
-
const currentUnpackSkipPixels =
|
|
3269
|
-
const currentUnpackSkipRows =
|
|
3270
|
-
const currentUnpackSkipImages =
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3365
|
+
const currentUnpackRowLen = state.getParameter( _gl.UNPACK_ROW_LENGTH );
|
|
3366
|
+
const currentUnpackImageHeight = state.getParameter( _gl.UNPACK_IMAGE_HEIGHT );
|
|
3367
|
+
const currentUnpackSkipPixels = state.getParameter( _gl.UNPACK_SKIP_PIXELS );
|
|
3368
|
+
const currentUnpackSkipRows = state.getParameter( _gl.UNPACK_SKIP_ROWS );
|
|
3369
|
+
const currentUnpackSkipImages = state.getParameter( _gl.UNPACK_SKIP_IMAGES );
|
|
3370
|
+
|
|
3371
|
+
state.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );
|
|
3372
|
+
state.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );
|
|
3373
|
+
state.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );
|
|
3374
|
+
state.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );
|
|
3375
|
+
state.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ );
|
|
3277
3376
|
|
|
3278
3377
|
// set up the src texture
|
|
3279
3378
|
const isSrc3D = srcTexture.isDataArrayTexture || srcTexture.isData3DTexture;
|
|
@@ -3399,11 +3498,11 @@ class WebGLRenderer {
|
|
|
3399
3498
|
}
|
|
3400
3499
|
|
|
3401
3500
|
// reset values
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3501
|
+
state.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );
|
|
3502
|
+
state.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );
|
|
3503
|
+
state.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );
|
|
3504
|
+
state.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );
|
|
3505
|
+
state.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );
|
|
3407
3506
|
|
|
3408
3507
|
// Generate mipmaps only when copying level 0
|
|
3409
3508
|
if ( dstLevel === 0 && dstTexture.generateMipmaps ) {
|
|
@@ -10,7 +10,7 @@ class Animation {
|
|
|
10
10
|
* Constructs a new animation loop management component.
|
|
11
11
|
*
|
|
12
12
|
* @param {Renderer} renderer - A reference to the main renderer.
|
|
13
|
-
* @param {
|
|
13
|
+
* @param {NodeManager} nodes - Renderer component for managing nodes related logic.
|
|
14
14
|
* @param {Info} info - Renderer component for managing metrics and monitoring data.
|
|
15
15
|
*/
|
|
16
16
|
constructor( renderer, nodes, info ) {
|
|
@@ -25,7 +25,7 @@ class Animation {
|
|
|
25
25
|
/**
|
|
26
26
|
* Renderer component for managing nodes related logic.
|
|
27
27
|
*
|
|
28
|
-
* @type {
|
|
28
|
+
* @type {NodeManager}
|
|
29
29
|
*/
|
|
30
30
|
this.nodes = nodes;
|
|
31
31
|
|
|
@@ -95,7 +95,7 @@ class Animation {
|
|
|
95
95
|
*/
|
|
96
96
|
stop() {
|
|
97
97
|
|
|
98
|
-
this._context.cancelAnimationFrame( this._requestId );
|
|
98
|
+
if ( this._context !== null ) this._context.cancelAnimationFrame( this._requestId );
|
|
99
99
|
|
|
100
100
|
this._requestId = null;
|
|
101
101
|
|
|
@@ -15,8 +15,9 @@ class Attributes extends DataMap {
|
|
|
15
15
|
* Constructs a new attribute management component.
|
|
16
16
|
*
|
|
17
17
|
* @param {Backend} backend - The renderer's backend.
|
|
18
|
+
* @param {Info} info - Renderer component for managing metrics and monitoring data.
|
|
18
19
|
*/
|
|
19
|
-
constructor( backend ) {
|
|
20
|
+
constructor( backend, info ) {
|
|
20
21
|
|
|
21
22
|
super();
|
|
22
23
|
|
|
@@ -27,6 +28,13 @@ class Attributes extends DataMap {
|
|
|
27
28
|
*/
|
|
28
29
|
this.backend = backend;
|
|
29
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Renderer component for managing metrics and monitoring data.
|
|
33
|
+
*
|
|
34
|
+
* @type {Info}
|
|
35
|
+
*/
|
|
36
|
+
this.info = info;
|
|
37
|
+
|
|
30
38
|
}
|
|
31
39
|
|
|
32
40
|
/**
|
|
@@ -43,6 +51,8 @@ class Attributes extends DataMap {
|
|
|
43
51
|
|
|
44
52
|
this.backend.destroyAttribute( attribute );
|
|
45
53
|
|
|
54
|
+
this.info.destroyAttribute( attribute );
|
|
55
|
+
|
|
46
56
|
}
|
|
47
57
|
|
|
48
58
|
return attributeData;
|
|
@@ -65,18 +75,22 @@ class Attributes extends DataMap {
|
|
|
65
75
|
if ( type === AttributeType.VERTEX ) {
|
|
66
76
|
|
|
67
77
|
this.backend.createAttribute( attribute );
|
|
78
|
+
this.info.createAttribute( attribute );
|
|
68
79
|
|
|
69
80
|
} else if ( type === AttributeType.INDEX ) {
|
|
70
81
|
|
|
71
82
|
this.backend.createIndexAttribute( attribute );
|
|
83
|
+
this.info.createIndexAttribute( attribute );
|
|
72
84
|
|
|
73
85
|
} else if ( type === AttributeType.STORAGE ) {
|
|
74
86
|
|
|
75
87
|
this.backend.createStorageAttribute( attribute );
|
|
88
|
+
this.info.createStorageAttribute( attribute );
|
|
76
89
|
|
|
77
90
|
} else if ( type === AttributeType.INDIRECT ) {
|
|
78
91
|
|
|
79
92
|
this.backend.createIndirectStorageAttribute( attribute );
|
|
93
|
+
this.info.createIndirectStorageAttribute( attribute );
|
|
80
94
|
|
|
81
95
|
}
|
|
82
96
|
|
|
@@ -604,14 +604,6 @@ class Backend {
|
|
|
604
604
|
*/
|
|
605
605
|
hasFeature( /*name*/ ) {}
|
|
606
606
|
|
|
607
|
-
/**
|
|
608
|
-
* Returns the maximum anisotropy texture filtering value.
|
|
609
|
-
*
|
|
610
|
-
* @abstract
|
|
611
|
-
* @return {number} The maximum anisotropy texture filtering value.
|
|
612
|
-
*/
|
|
613
|
-
getMaxAnisotropy() {}
|
|
614
|
-
|
|
615
607
|
/**
|
|
616
608
|
* Returns the drawing buffer size.
|
|
617
609
|
*
|
|
@@ -22,7 +22,7 @@ class Background extends DataMap {
|
|
|
22
22
|
* Constructs a new background management component.
|
|
23
23
|
*
|
|
24
24
|
* @param {Renderer} renderer - The renderer.
|
|
25
|
-
* @param {
|
|
25
|
+
* @param {NodeManager} nodes - Renderer component for managing nodes related logic.
|
|
26
26
|
*/
|
|
27
27
|
constructor( renderer, nodes ) {
|
|
28
28
|
|
|
@@ -38,7 +38,7 @@ class Background extends DataMap {
|
|
|
38
38
|
/**
|
|
39
39
|
* Renderer component for managing nodes related logic.
|
|
40
40
|
*
|
|
41
|
-
* @type {
|
|
41
|
+
* @type {NodeManager}
|
|
42
42
|
*/
|
|
43
43
|
this.nodes = nodes;
|
|
44
44
|
|
|
@@ -16,7 +16,7 @@ class BindGroup {
|
|
|
16
16
|
* @param {Array<Binding>} bindings - An array of bindings.
|
|
17
17
|
* @param {number} index - The group index.
|
|
18
18
|
*/
|
|
19
|
-
constructor( name = '', bindings = []
|
|
19
|
+
constructor( name = '', bindings = [] ) {
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* The bind group's name.
|
|
@@ -32,13 +32,6 @@ class BindGroup {
|
|
|
32
32
|
*/
|
|
33
33
|
this.bindings = bindings;
|
|
34
34
|
|
|
35
|
-
/**
|
|
36
|
-
* The group index.
|
|
37
|
-
*
|
|
38
|
-
* @type {number}
|
|
39
|
-
*/
|
|
40
|
-
this.index = index;
|
|
41
|
-
|
|
42
35
|
/**
|
|
43
36
|
* The group's ID.
|
|
44
37
|
*
|
|
@@ -13,7 +13,7 @@ class Bindings extends DataMap {
|
|
|
13
13
|
* Constructs a new bindings management component.
|
|
14
14
|
*
|
|
15
15
|
* @param {Backend} backend - The renderer's backend.
|
|
16
|
-
* @param {
|
|
16
|
+
* @param {NodeManager} nodes - Renderer component for managing nodes related logic.
|
|
17
17
|
* @param {Textures} textures - Renderer component for managing textures.
|
|
18
18
|
* @param {Attributes} attributes - Renderer component for managing attributes.
|
|
19
19
|
* @param {Pipelines} pipelines - Renderer component for managing pipelines.
|
|
@@ -54,7 +54,7 @@ class Bindings extends DataMap {
|
|
|
54
54
|
/**
|
|
55
55
|
* Renderer component for managing nodes related logic.
|
|
56
56
|
*
|
|
57
|
-
* @type {
|
|
57
|
+
* @type {NodeManager}
|
|
58
58
|
*/
|
|
59
59
|
this.nodes = nodes;
|
|
60
60
|
|
|
@@ -9,7 +9,7 @@ import Pipeline from './Pipeline.js';
|
|
|
9
9
|
class ComputePipeline extends Pipeline {
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Constructs a new
|
|
12
|
+
* Constructs a new compute pipeline.
|
|
13
13
|
*
|
|
14
14
|
* @param {string} cacheKey - The pipeline's cache key.
|
|
15
15
|
* @param {ProgrammableStage} computeProgram - The pipeline's compute shader.
|
|
@@ -109,7 +109,7 @@ class CubeRenderTarget extends RenderTarget {
|
|
|
109
109
|
renderer.setMRT( currentMRT );
|
|
110
110
|
|
|
111
111
|
texture.minFilter = currentMinFilter;
|
|
112
|
-
texture.
|
|
112
|
+
texture.generateMipmaps = currentGenerateMipmaps;
|
|
113
113
|
|
|
114
114
|
mesh.geometry.dispose();
|
|
115
115
|
mesh.material.dispose();
|