super-three 0.161.0 → 0.163.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 +822 -1332
- package/build/three.module.js +820 -1328
- package/build/three.module.min.js +1 -1
- package/examples/jsm/controls/DragControls.js +91 -30
- package/examples/jsm/controls/OrbitControls.js +32 -6
- package/examples/jsm/controls/TransformControls.js +9 -9
- package/examples/jsm/exporters/GLTFExporter.js +30 -3
- package/examples/jsm/exporters/USDZExporter.js +15 -0
- package/examples/jsm/geometries/TextGeometry.js +10 -2
- package/examples/jsm/interactive/HTMLMesh.js +7 -9
- package/examples/jsm/interactive/InteractiveGroup.js +15 -25
- package/examples/jsm/libs/fflate.module.js +694 -496
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +32 -14
- package/examples/jsm/lines/LineMaterial.js +0 -2
- package/examples/jsm/loaders/3DMLoader.js +13 -21
- package/examples/jsm/loaders/3MFLoader.js +2 -0
- package/examples/jsm/loaders/EXRLoader.js +89 -19
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +6 -0
- package/examples/jsm/loaders/KTX2Loader.js +2 -6
- 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/VOXLoader.js +9 -2
- package/examples/jsm/loaders/VRMLLoader.js +6 -2
- package/examples/jsm/misc/GPUComputationRenderer.js +0 -6
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -0
- package/examples/jsm/nodes/Nodes.js +15 -8
- package/examples/jsm/nodes/accessors/AccessorsUtils.js +10 -0
- package/examples/jsm/nodes/accessors/BatchNode.js +78 -0
- package/examples/jsm/nodes/accessors/ClippingNode.js +144 -0
- package/examples/jsm/nodes/accessors/InstanceNode.js +25 -2
- package/examples/jsm/nodes/accessors/MaterialNode.js +2 -2
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -12
- package/examples/jsm/nodes/accessors/MorphNode.js +20 -10
- package/examples/jsm/nodes/accessors/NormalNode.js +12 -2
- package/examples/jsm/nodes/accessors/ReferenceNode.js +87 -29
- package/examples/jsm/nodes/accessors/RendererReferenceNode.js +29 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +31 -10
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +18 -0
- package/examples/jsm/nodes/accessors/TangentNode.js +8 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +30 -7
- package/examples/jsm/nodes/accessors/UniformsNode.js +140 -0
- package/examples/jsm/nodes/code/CodeNode.js +6 -0
- package/examples/jsm/nodes/core/AssignNode.js +68 -12
- package/examples/jsm/nodes/core/Node.js +67 -6
- package/examples/jsm/nodes/core/NodeBuilder.js +23 -24
- package/examples/jsm/nodes/core/NodeFrame.js +8 -8
- package/examples/jsm/nodes/core/NodeUtils.js +2 -2
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +20 -0
- package/examples/jsm/nodes/display/BlendModeNode.js +30 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -5
- package/examples/jsm/nodes/display/PassNode.js +17 -1
- package/examples/jsm/nodes/display/ToneMappingNode.js +8 -4
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +6 -0
- 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/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +12 -69
- package/examples/jsm/nodes/materials/NodeMaterial.js +70 -17
- package/examples/jsm/nodes/math/CondNode.js +42 -7
- package/examples/jsm/nodes/math/MathNode.js +20 -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 +1 -1
- package/examples/jsm/nodes/utils/ArrayElementNode.js +0 -6
- package/examples/jsm/nodes/utils/EquirectUVNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +2 -0
- package/examples/jsm/nodes/utils/StorageArrayElementNode.js +91 -0
- package/examples/jsm/objects/QuadMesh.js +7 -23
- 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/OutputPass.js +2 -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 +3 -3
- package/examples/jsm/renderers/common/ClippingContext.js +165 -0
- 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 +3 -1
- package/examples/jsm/renderers/common/RenderContexts.js +2 -13
- package/examples/jsm/renderers/common/RenderObject.js +46 -3
- package/examples/jsm/renderers/common/RenderObjects.js +2 -0
- package/examples/jsm/renderers/common/Renderer.js +113 -39
- package/examples/jsm/renderers/common/StorageBufferAttribute.js +2 -2
- package/examples/jsm/renderers/common/StorageInstancedBufferAttribute.js +17 -0
- package/examples/jsm/renderers/common/Textures.js +3 -13
- package/examples/jsm/renderers/common/UniformsGroup.js +6 -4
- package/examples/jsm/renderers/common/extras/PMREMGenerator.js +777 -0
- package/examples/jsm/renderers/common/nodes/NodeStorageBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/NodeUniformBuffer.js +23 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +6 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +174 -30
- package/examples/jsm/renderers/webgl/WebGLBufferRenderer.js +141 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +136 -11
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +8 -2
- package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +1 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +90 -0
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -2
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +67 -37
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +20 -43
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +32 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -4
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +94 -20
- package/examples/jsm/shaders/OutputShader.js +4 -0
- package/examples/jsm/utils/GPUStatsPanel.js +10 -45
- package/examples/jsm/utils/SkeletonUtils.js +14 -3
- package/examples/jsm/utils/TextureUtils.js +1 -1
- package/examples/jsm/webxr/VRButton.js +13 -5
- package/examples/jsm/webxr/XRButton.js +0 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +8 -0
- package/package.json +4 -3
- package/src/Three.Legacy.js +20 -0
- package/src/Three.js +0 -2
- package/src/animation/AnimationClip.js +1 -1
- package/src/constants.js +4 -7
- package/src/core/BufferAttribute.js +0 -11
- package/src/core/BufferGeometry.js +23 -29
- package/src/core/Object3D.js +21 -7
- package/src/core/Raycaster.js +18 -4
- package/src/core/RenderTarget.js +44 -21
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/curves/EllipseCurve.js +2 -2
- package/src/helpers/SpotLightHelper.js +18 -1
- package/src/loaders/DataTextureLoader.js +0 -4
- package/src/loaders/MaterialLoader.js +1 -0
- package/src/loaders/ObjectLoader.js +4 -1
- package/src/materials/Material.js +2 -1
- package/src/materials/MeshBasicMaterial.js +3 -0
- package/src/materials/MeshLambertMaterial.js +3 -0
- package/src/materials/MeshPhongMaterial.js +3 -0
- package/src/materials/MeshStandardMaterial.js +3 -0
- package/src/materials/ShaderMaterial.js +0 -4
- package/src/math/Quaternion.js +13 -12
- package/src/math/Spherical.js +4 -5
- package/src/math/Vector3.js +7 -7
- package/src/objects/BatchedMesh.js +4 -3
- package/src/objects/InstancedMesh.js +63 -0
- package/src/objects/Mesh.js +0 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -10
- package/src/renderers/WebGLRenderer.js +70 -136
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- 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/map_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +32 -22
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +23 -0
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +3 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +10 -1
- package/src/renderers/webgl/WebGLAttributes.js +6 -33
- package/src/renderers/webgl/WebGLBackground.js +18 -0
- package/src/renderers/webgl/WebGLBindingStates.js +14 -51
- package/src/renderers/webgl/WebGLBufferRenderer.js +3 -25
- package/src/renderers/webgl/WebGLCapabilities.js +2 -12
- package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
- package/src/renderers/webgl/WebGLExtensions.js +4 -19
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +3 -25
- package/src/renderers/webgl/WebGLLights.js +6 -32
- package/src/renderers/webgl/WebGLMaterials.js +26 -4
- package/src/renderers/webgl/WebGLMorphtargets.js +79 -210
- package/src/renderers/webgl/WebGLProgram.js +30 -48
- package/src/renderers/webgl/WebGLPrograms.js +5 -14
- package/src/renderers/webgl/WebGLRenderStates.js +8 -6
- package/src/renderers/webgl/WebGLState.js +21 -75
- package/src/renderers/webgl/WebGLTextures.js +143 -275
- package/src/renderers/webgl/WebGLUniformsGroups.js +1 -1
- package/src/renderers/webgl/WebGLUtils.js +6 -57
- package/src/renderers/webxr/WebXRDepthSensing.js +2 -3
- package/src/renderers/webxr/WebXRManager.js +2 -2
- package/src/scenes/Scene.js +14 -0
- package/src/textures/Texture.js +6 -24
- package/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
- package/src/renderers/WebGL1Renderer.js +0 -7
- package/src/renderers/WebGLMultipleRenderTargets.js +0 -82
|
@@ -11,8 +11,6 @@ import {
|
|
|
11
11
|
LinearMipmapLinearFilter,
|
|
12
12
|
SRGBColorSpace,
|
|
13
13
|
LinearSRGBColorSpace,
|
|
14
|
-
sRGBEncoding,
|
|
15
|
-
LinearEncoding,
|
|
16
14
|
RGBAIntegerFormat,
|
|
17
15
|
RGIntegerFormat,
|
|
18
16
|
RedIntegerFormat,
|
|
@@ -31,7 +29,6 @@ import { Matrix4 } from '../math/Matrix4.js';
|
|
|
31
29
|
import { Vector2 } from '../math/Vector2.js';
|
|
32
30
|
import { Vector3 } from '../math/Vector3.js';
|
|
33
31
|
import { Vector4 } from '../math/Vector4.js';
|
|
34
|
-
import { floorPowerOfTwo } from '../math/MathUtils.js';
|
|
35
32
|
import { WebGLAnimation } from './webgl/WebGLAnimation.js';
|
|
36
33
|
import { WebGLAttributes } from './webgl/WebGLAttributes.js';
|
|
37
34
|
import { WebGLBackground } from './webgl/WebGLBackground.js';
|
|
@@ -73,7 +70,7 @@ class WebGLRenderer {
|
|
|
73
70
|
canvas = createCanvasElement(),
|
|
74
71
|
context = null,
|
|
75
72
|
depth = true,
|
|
76
|
-
stencil =
|
|
73
|
+
stencil = false,
|
|
77
74
|
alpha = false,
|
|
78
75
|
antialias = false,
|
|
79
76
|
premultipliedAlpha = true,
|
|
@@ -89,6 +86,12 @@ class WebGLRenderer {
|
|
|
89
86
|
|
|
90
87
|
if ( context !== null ) {
|
|
91
88
|
|
|
89
|
+
if ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {
|
|
90
|
+
|
|
91
|
+
throw new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
92
95
|
_alpha = context.getContextAttributes().alpha;
|
|
93
96
|
|
|
94
97
|
} else {
|
|
@@ -201,10 +204,6 @@ class WebGLRenderer {
|
|
|
201
204
|
let _clippingEnabled = false;
|
|
202
205
|
let _localClippingEnabled = false;
|
|
203
206
|
|
|
204
|
-
// transmission
|
|
205
|
-
|
|
206
|
-
let _transmissionRenderTarget = null;
|
|
207
|
-
|
|
208
207
|
// camera matrices cache
|
|
209
208
|
|
|
210
209
|
const _projScreenMatrix = new Matrix4();
|
|
@@ -224,15 +223,10 @@ class WebGLRenderer {
|
|
|
224
223
|
|
|
225
224
|
let _gl = context;
|
|
226
225
|
|
|
227
|
-
function getContext(
|
|
228
|
-
|
|
229
|
-
for ( let i = 0; i < contextNames.length; i ++ ) {
|
|
226
|
+
function getContext( contextName, contextAttributes ) {
|
|
230
227
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
if ( context !== null ) return context;
|
|
234
|
-
|
|
235
|
-
}
|
|
228
|
+
const context = canvas.getContext( contextName, contextAttributes );
|
|
229
|
+
if ( context !== null ) return context;
|
|
236
230
|
|
|
237
231
|
return null;
|
|
238
232
|
|
|
@@ -261,19 +255,13 @@ class WebGLRenderer {
|
|
|
261
255
|
|
|
262
256
|
if ( _gl === null ) {
|
|
263
257
|
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
if ( _this.isWebGL1Renderer === true ) {
|
|
258
|
+
const contextName = 'webgl2';
|
|
267
259
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
_gl = getContext( contextNames, contextAttributes );
|
|
260
|
+
_gl = getContext( contextName, contextAttributes );
|
|
273
261
|
|
|
274
262
|
if ( _gl === null ) {
|
|
275
263
|
|
|
276
|
-
if ( getContext(
|
|
264
|
+
if ( getContext( contextName ) ) {
|
|
277
265
|
|
|
278
266
|
throw new Error( 'Error creating WebGL context with your selected attributes.' );
|
|
279
267
|
|
|
@@ -287,24 +275,6 @@ class WebGLRenderer {
|
|
|
287
275
|
|
|
288
276
|
}
|
|
289
277
|
|
|
290
|
-
if ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153
|
|
291
|
-
|
|
292
|
-
console.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Some experimental-webgl implementations do not have getShaderPrecisionFormat
|
|
297
|
-
|
|
298
|
-
if ( _gl.getShaderPrecisionFormat === undefined ) {
|
|
299
|
-
|
|
300
|
-
_gl.getShaderPrecisionFormat = function () {
|
|
301
|
-
|
|
302
|
-
return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };
|
|
303
|
-
|
|
304
|
-
};
|
|
305
|
-
|
|
306
|
-
}
|
|
307
|
-
|
|
308
278
|
} catch ( error ) {
|
|
309
279
|
|
|
310
280
|
console.error( 'THREE.WebGLRenderer: ' + error.message );
|
|
@@ -324,22 +294,21 @@ class WebGLRenderer {
|
|
|
324
294
|
function initGLContext() {
|
|
325
295
|
|
|
326
296
|
extensions = new WebGLExtensions( _gl );
|
|
297
|
+
extensions.init();
|
|
327
298
|
|
|
328
299
|
capabilities = new WebGLCapabilities( _gl, extensions, parameters );
|
|
329
300
|
|
|
330
|
-
|
|
301
|
+
utils = new WebGLUtils( _gl, extensions );
|
|
331
302
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
state = new WebGLState( _gl, extensions, capabilities );
|
|
303
|
+
state = new WebGLState( _gl );
|
|
335
304
|
|
|
336
305
|
info = new WebGLInfo( _gl );
|
|
337
306
|
properties = new WebGLProperties();
|
|
338
307
|
textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );
|
|
339
308
|
cubemaps = new WebGLCubeMaps( _this );
|
|
340
309
|
cubeuvmaps = new WebGLCubeUVMaps( _this );
|
|
341
|
-
attributes = new WebGLAttributes( _gl
|
|
342
|
-
bindingStates = new WebGLBindingStates( _gl,
|
|
310
|
+
attributes = new WebGLAttributes( _gl );
|
|
311
|
+
bindingStates = new WebGLBindingStates( _gl, attributes );
|
|
343
312
|
geometries = new WebGLGeometries( _gl, attributes, info, bindingStates );
|
|
344
313
|
objects = new WebGLObjects( _gl, geometries, attributes, info );
|
|
345
314
|
morphtargets = new WebGLMorphtargets( _gl, capabilities, textures );
|
|
@@ -347,14 +316,14 @@ class WebGLRenderer {
|
|
|
347
316
|
programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
|
|
348
317
|
materials = new WebGLMaterials( _this, properties );
|
|
349
318
|
renderLists = new WebGLRenderLists();
|
|
350
|
-
renderStates = new WebGLRenderStates( extensions
|
|
319
|
+
renderStates = new WebGLRenderStates( extensions );
|
|
351
320
|
background = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );
|
|
352
321
|
multiview = new WebGLMultiview( _this, extensions, _gl );
|
|
353
322
|
shadowMap = new WebGLShadowMap( _this, objects, capabilities );
|
|
354
323
|
uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
|
|
355
324
|
|
|
356
|
-
bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info
|
|
357
|
-
indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info
|
|
325
|
+
bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );
|
|
326
|
+
indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );
|
|
358
327
|
|
|
359
328
|
info.programs = programCache.programs;
|
|
360
329
|
|
|
@@ -496,7 +465,7 @@ class WebGLRenderer {
|
|
|
496
465
|
|
|
497
466
|
}
|
|
498
467
|
|
|
499
|
-
state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).
|
|
468
|
+
state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );
|
|
500
469
|
|
|
501
470
|
};
|
|
502
471
|
|
|
@@ -518,7 +487,7 @@ class WebGLRenderer {
|
|
|
518
487
|
|
|
519
488
|
}
|
|
520
489
|
|
|
521
|
-
state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).
|
|
490
|
+
state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );
|
|
522
491
|
|
|
523
492
|
};
|
|
524
493
|
|
|
@@ -686,13 +655,6 @@ class WebGLRenderer {
|
|
|
686
655
|
xr.removeEventListener( 'sessionstart', onXRSessionStart );
|
|
687
656
|
xr.removeEventListener( 'sessionend', onXRSessionEnd );
|
|
688
657
|
|
|
689
|
-
if ( _transmissionRenderTarget ) {
|
|
690
|
-
|
|
691
|
-
_transmissionRenderTarget.dispose();
|
|
692
|
-
_transmissionRenderTarget = null;
|
|
693
|
-
|
|
694
|
-
}
|
|
695
|
-
|
|
696
658
|
animation.stop();
|
|
697
659
|
|
|
698
660
|
};
|
|
@@ -1461,17 +1423,19 @@ class WebGLRenderer {
|
|
|
1461
1423
|
|
|
1462
1424
|
}
|
|
1463
1425
|
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
if ( _transmissionRenderTarget === null ) {
|
|
1426
|
+
if ( currentRenderState.state.transmissionRenderTarget === null ) {
|
|
1467
1427
|
|
|
1468
|
-
|
|
1428
|
+
currentRenderState.state.transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {
|
|
1469
1429
|
generateMipmaps: true,
|
|
1470
|
-
type: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,
|
|
1430
|
+
type: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,
|
|
1471
1431
|
minFilter: LinearMipmapLinearFilter,
|
|
1472
|
-
samples:
|
|
1432
|
+
samples: 4,
|
|
1433
|
+
stencilBuffer: stencil
|
|
1473
1434
|
} );
|
|
1474
1435
|
|
|
1436
|
+
const renderTargetProperties = properties.get( currentRenderState.state.transmissionRenderTarget );
|
|
1437
|
+
renderTargetProperties.__isTransmissionRenderTarget = true;
|
|
1438
|
+
|
|
1475
1439
|
// debug
|
|
1476
1440
|
|
|
1477
1441
|
/*
|
|
@@ -1484,22 +1448,15 @@ class WebGLRenderer {
|
|
|
1484
1448
|
|
|
1485
1449
|
}
|
|
1486
1450
|
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
if ( isWebGL2 ) {
|
|
1490
|
-
|
|
1491
|
-
_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );
|
|
1492
|
-
|
|
1493
|
-
} else {
|
|
1494
|
-
|
|
1495
|
-
_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );
|
|
1451
|
+
const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget;
|
|
1496
1452
|
|
|
1497
|
-
|
|
1453
|
+
_this.getDrawingBufferSize( _vector2 );
|
|
1454
|
+
transmissionRenderTarget.setSize( _vector2.x, _vector2.y );
|
|
1498
1455
|
|
|
1499
1456
|
//
|
|
1500
1457
|
|
|
1501
1458
|
const currentRenderTarget = _this.getRenderTarget();
|
|
1502
|
-
_this.setRenderTarget(
|
|
1459
|
+
_this.setRenderTarget( transmissionRenderTarget );
|
|
1503
1460
|
|
|
1504
1461
|
_this.getClearColor( _currentClearColor );
|
|
1505
1462
|
_currentClearAlpha = _this.getClearAlpha();
|
|
@@ -1514,8 +1471,8 @@ class WebGLRenderer {
|
|
|
1514
1471
|
|
|
1515
1472
|
renderObjects( opaqueObjects, scene, camera );
|
|
1516
1473
|
|
|
1517
|
-
textures.updateMultisampleRenderTarget(
|
|
1518
|
-
textures.updateRenderTargetMipmap(
|
|
1474
|
+
textures.updateMultisampleRenderTarget( transmissionRenderTarget );
|
|
1475
|
+
textures.updateRenderTargetMipmap( transmissionRenderTarget );
|
|
1519
1476
|
|
|
1520
1477
|
let renderTargetNeedsUpdate = false;
|
|
1521
1478
|
|
|
@@ -1548,8 +1505,8 @@ class WebGLRenderer {
|
|
|
1548
1505
|
|
|
1549
1506
|
if ( renderTargetNeedsUpdate === true ) {
|
|
1550
1507
|
|
|
1551
|
-
textures.updateMultisampleRenderTarget(
|
|
1552
|
-
textures.updateRenderTargetMipmap(
|
|
1508
|
+
textures.updateMultisampleRenderTarget( transmissionRenderTarget );
|
|
1509
|
+
textures.updateRenderTargetMipmap( transmissionRenderTarget );
|
|
1553
1510
|
|
|
1554
1511
|
}
|
|
1555
1512
|
|
|
@@ -1636,6 +1593,7 @@ class WebGLRenderer {
|
|
|
1636
1593
|
materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
1637
1594
|
materialProperties.fog = scene.fog;
|
|
1638
1595
|
materialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );
|
|
1596
|
+
materialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;
|
|
1639
1597
|
|
|
1640
1598
|
if ( programs === undefined ) {
|
|
1641
1599
|
|
|
@@ -1748,6 +1706,7 @@ class WebGLRenderer {
|
|
|
1748
1706
|
materialProperties.batching = parameters.batching;
|
|
1749
1707
|
materialProperties.instancing = parameters.instancing;
|
|
1750
1708
|
materialProperties.instancingColor = parameters.instancingColor;
|
|
1709
|
+
materialProperties.instancingMorph = parameters.instancingMorph;
|
|
1751
1710
|
materialProperties.skinning = parameters.skinning;
|
|
1752
1711
|
materialProperties.morphTargets = parameters.morphTargets;
|
|
1753
1712
|
materialProperties.morphNormals = parameters.morphNormals;
|
|
@@ -1861,6 +1820,14 @@ class WebGLRenderer {
|
|
|
1861
1820
|
|
|
1862
1821
|
needsProgramChange = true;
|
|
1863
1822
|
|
|
1823
|
+
} else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {
|
|
1824
|
+
|
|
1825
|
+
needsProgramChange = true;
|
|
1826
|
+
|
|
1827
|
+
} else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {
|
|
1828
|
+
|
|
1829
|
+
needsProgramChange = true;
|
|
1830
|
+
|
|
1864
1831
|
} else if ( materialProperties.envMap !== envMap ) {
|
|
1865
1832
|
|
|
1866
1833
|
needsProgramChange = true;
|
|
@@ -1899,7 +1866,7 @@ class WebGLRenderer {
|
|
|
1899
1866
|
|
|
1900
1867
|
needsProgramChange = true;
|
|
1901
1868
|
|
|
1902
|
-
} else if (
|
|
1869
|
+
} else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {
|
|
1903
1870
|
|
|
1904
1871
|
needsProgramChange = true;
|
|
1905
1872
|
|
|
@@ -2021,17 +1988,9 @@ class WebGLRenderer {
|
|
|
2021
1988
|
|
|
2022
1989
|
if ( skeleton ) {
|
|
2023
1990
|
|
|
2024
|
-
if (
|
|
1991
|
+
if ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();
|
|
2025
1992
|
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
|
|
2029
|
-
|
|
2030
|
-
} else {
|
|
2031
|
-
|
|
2032
|
-
console.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );
|
|
2033
|
-
|
|
2034
|
-
}
|
|
1993
|
+
p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
|
|
2035
1994
|
|
|
2036
1995
|
}
|
|
2037
1996
|
|
|
@@ -2046,7 +2005,7 @@ class WebGLRenderer {
|
|
|
2046
2005
|
|
|
2047
2006
|
const morphAttributes = geometry.morphAttributes;
|
|
2048
2007
|
|
|
2049
|
-
if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined
|
|
2008
|
+
if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {
|
|
2050
2009
|
|
|
2051
2010
|
morphtargets.update( object, geometry, program );
|
|
2052
2011
|
|
|
@@ -2069,6 +2028,12 @@ class WebGLRenderer {
|
|
|
2069
2028
|
|
|
2070
2029
|
}
|
|
2071
2030
|
|
|
2031
|
+
if ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {
|
|
2032
|
+
|
|
2033
|
+
m_uniforms.envMapIntensity.value = scene.environmentIntensity;
|
|
2034
|
+
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2072
2037
|
if ( refreshMaterial ) {
|
|
2073
2038
|
|
|
2074
2039
|
p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );
|
|
@@ -2096,7 +2061,7 @@ class WebGLRenderer {
|
|
|
2096
2061
|
|
|
2097
2062
|
}
|
|
2098
2063
|
|
|
2099
|
-
materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height,
|
|
2064
|
+
materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget );
|
|
2100
2065
|
|
|
2101
2066
|
WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );
|
|
2102
2067
|
|
|
@@ -2138,18 +2103,10 @@ class WebGLRenderer {
|
|
|
2138
2103
|
|
|
2139
2104
|
for ( let i = 0, l = groups.length; i < l; i ++ ) {
|
|
2140
2105
|
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
const group = groups[ i ];
|
|
2106
|
+
const group = groups[ i ];
|
|
2144
2107
|
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
} else {
|
|
2149
|
-
|
|
2150
|
-
console.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );
|
|
2151
|
-
|
|
2152
|
-
}
|
|
2108
|
+
uniformsGroups.update( group, program );
|
|
2109
|
+
uniformsGroups.bind( group, program );
|
|
2153
2110
|
|
|
2154
2111
|
}
|
|
2155
2112
|
|
|
@@ -2318,7 +2275,7 @@ class WebGLRenderer {
|
|
|
2318
2275
|
|
|
2319
2276
|
isCube = true;
|
|
2320
2277
|
|
|
2321
|
-
} else if ( (
|
|
2278
|
+
} else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
|
|
2322
2279
|
|
|
2323
2280
|
framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
|
|
2324
2281
|
|
|
@@ -2350,7 +2307,7 @@ class WebGLRenderer {
|
|
|
2350
2307
|
|
|
2351
2308
|
const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
|
|
2352
2309
|
|
|
2353
|
-
if ( framebufferBound &&
|
|
2310
|
+
if ( framebufferBound && useDefaultFramebuffer ) {
|
|
2354
2311
|
|
|
2355
2312
|
state.drawBuffers( renderTarget, framebuffer );
|
|
2356
2313
|
|
|
@@ -2411,11 +2368,10 @@ class WebGLRenderer {
|
|
|
2411
2368
|
|
|
2412
2369
|
}
|
|
2413
2370
|
|
|
2414
|
-
const halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) ||
|
|
2371
|
+
const halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) );
|
|
2415
2372
|
|
|
2416
2373
|
if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)
|
|
2417
|
-
|
|
2418
|
-
! halfFloatSupportedByExt ) {
|
|
2374
|
+
textureType !== FloatType && ! halfFloatSupportedByExt ) {
|
|
2419
2375
|
|
|
2420
2376
|
console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );
|
|
2421
2377
|
return;
|
|
@@ -2499,15 +2455,8 @@ class WebGLRenderer {
|
|
|
2499
2455
|
|
|
2500
2456
|
this.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {
|
|
2501
2457
|
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );
|
|
2505
|
-
return;
|
|
2506
|
-
|
|
2507
|
-
}
|
|
2508
|
-
|
|
2509
|
-
const width = sourceBox.max.x - sourceBox.min.x + 1;
|
|
2510
|
-
const height = sourceBox.max.y - sourceBox.min.y + 1;
|
|
2458
|
+
const width = Math.round( sourceBox.max.x - sourceBox.min.x );
|
|
2459
|
+
const height = Math.round( sourceBox.max.y - sourceBox.min.y );
|
|
2511
2460
|
const depth = sourceBox.max.z - sourceBox.min.z + 1;
|
|
2512
2461
|
const glFormat = utils.convert( dstTexture.format );
|
|
2513
2462
|
const glType = utils.convert( dstTexture.type );
|
|
@@ -2554,9 +2503,8 @@ class WebGLRenderer {
|
|
|
2554
2503
|
|
|
2555
2504
|
} else {
|
|
2556
2505
|
|
|
2557
|
-
if (
|
|
2506
|
+
if ( dstTexture.isCompressedArrayTexture ) {
|
|
2558
2507
|
|
|
2559
|
-
console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );
|
|
2560
2508
|
_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );
|
|
2561
2509
|
|
|
2562
2510
|
} else {
|
|
@@ -2645,20 +2593,6 @@ class WebGLRenderer {
|
|
|
2645
2593
|
|
|
2646
2594
|
}
|
|
2647
2595
|
|
|
2648
|
-
get outputEncoding() { // @deprecated, r152
|
|
2649
|
-
|
|
2650
|
-
console.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );
|
|
2651
|
-
return this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;
|
|
2652
|
-
|
|
2653
|
-
}
|
|
2654
|
-
|
|
2655
|
-
set outputEncoding( encoding ) { // @deprecated, r152
|
|
2656
|
-
|
|
2657
|
-
console.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );
|
|
2658
|
-
this.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
2659
|
-
|
|
2660
|
-
}
|
|
2661
|
-
|
|
2662
2596
|
get useLegacyLights() { // @deprecated, r155
|
|
2663
2597
|
|
|
2664
2598
|
console.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );
|
|
@@ -36,7 +36,7 @@ export default /* glsl */`
|
|
|
36
36
|
|
|
37
37
|
#ifdef ENVMAP_TYPE_CUBE
|
|
38
38
|
|
|
39
|
-
vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
|
|
39
|
+
vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
|
|
40
40
|
|
|
41
41
|
#else
|
|
42
42
|
|
|
@@ -7,7 +7,7 @@ export default /* glsl */`
|
|
|
7
7
|
|
|
8
8
|
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
|
9
9
|
|
|
10
|
-
vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );
|
|
10
|
+
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );
|
|
11
11
|
|
|
12
12
|
return PI * envMapColor.rgb * envMapIntensity;
|
|
13
13
|
|
|
@@ -30,7 +30,7 @@ export default /* glsl */`
|
|
|
30
30
|
|
|
31
31
|
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
|
|
32
32
|
|
|
33
|
-
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
|
|
33
|
+
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );
|
|
34
34
|
|
|
35
35
|
return envMapColor.rgb * envMapIntensity;
|
|
36
36
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
|
-
#if defined( USE_LOGDEPTHBUF )
|
|
2
|
+
#if defined( USE_LOGDEPTHBUF )
|
|
3
3
|
|
|
4
4
|
// Doing a strict comparison with == 1.0 can cause noise artifacts
|
|
5
5
|
// on some platforms. See issue #17623.
|
|
6
|
-
|
|
6
|
+
gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
|
|
7
7
|
|
|
8
8
|
#endif
|
|
9
9
|
`;
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
#ifdef USE_LOGDEPTHBUF
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
varying float vFragDepth;
|
|
7
|
-
varying float vIsPerspective;
|
|
8
|
-
|
|
9
|
-
#else
|
|
10
|
-
|
|
11
|
-
uniform float logDepthBufFC;
|
|
12
|
-
|
|
13
|
-
#endif
|
|
4
|
+
varying float vFragDepth;
|
|
5
|
+
varying float vIsPerspective;
|
|
14
6
|
|
|
15
7
|
#endif
|
|
16
8
|
`;
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
#ifdef USE_LOGDEPTHBUF
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
vFragDepth = 1.0 + gl_Position.w;
|
|
7
|
-
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
|
8
|
-
|
|
9
|
-
#else
|
|
10
|
-
|
|
11
|
-
if ( isPerspectiveMatrix( projectionMatrix ) ) {
|
|
12
|
-
|
|
13
|
-
gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;
|
|
14
|
-
|
|
15
|
-
gl_Position.z *= gl_Position.w;
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
#endif
|
|
4
|
+
vFragDepth = 1.0 + gl_Position.w;
|
|
5
|
+
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
|
20
6
|
|
|
21
7
|
#endif
|
|
22
8
|
`;
|
|
@@ -5,7 +5,7 @@ export default /* glsl */`
|
|
|
5
5
|
|
|
6
6
|
#ifdef DECODE_VIDEO_TEXTURE
|
|
7
7
|
|
|
8
|
-
// use inline sRGB decode until browsers properly support
|
|
8
|
+
// use inline sRGB decode until browsers properly support SRGB8_ALPHA8 with video textures (#26516)
|
|
9
9
|
|
|
10
10
|
sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );
|
|
11
11
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default /* glsl */`
|
|
2
|
+
#ifdef USE_INSTANCING_MORPH
|
|
3
|
+
|
|
4
|
+
float morphTargetInfluences[MORPHTARGETS_COUNT];
|
|
5
|
+
|
|
6
|
+
float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;
|
|
7
|
+
|
|
8
|
+
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
|
|
9
|
+
|
|
10
|
+
morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
#endif
|
|
14
|
+
`;
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
#ifdef USE_MORPHTARGETS
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
#ifndef USE_INSTANCING_MORPH
|
|
5
|
+
|
|
6
|
+
uniform float morphTargetBaseInfluence;
|
|
7
|
+
|
|
8
|
+
#endif
|
|
5
9
|
|
|
6
10
|
#ifdef MORPHTARGETS_TEXTURE
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
#ifndef USE_INSTANCING_MORPH
|
|
13
|
+
|
|
14
|
+
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
|
|
15
|
+
|
|
16
|
+
#endif
|
|
17
|
+
|
|
9
18
|
uniform sampler2DArray morphTargetsTexture;
|
|
10
19
|
uniform ivec2 morphTargetsTextureSize;
|
|
11
20
|
|