super-three 0.156.0 → 0.157.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +753 -277
- package/build/three.js +753 -277
- package/build/three.min.js +2 -2
- package/build/three.module.js +750 -276
- package/build/three.module.min.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +17 -0
- package/examples/jsm/controls/DragControls.js +3 -2
- package/examples/jsm/csm/CSMShader.js +25 -21
- package/examples/jsm/exporters/EXRExporter.js +102 -24
- package/examples/jsm/exporters/GLTFExporter.js +1 -1
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +8726 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8737 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lights/LightProbeGenerator.js +37 -3
- package/examples/jsm/lines/LineMaterial.js +90 -156
- package/examples/jsm/loaders/3DMLoader.js +378 -104
- package/examples/jsm/loaders/GLTFLoader.js +1 -1
- package/examples/jsm/loaders/LDrawLoader.js +22 -16
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/USDZLoader.js +215 -12
- package/examples/jsm/materials/MeshGouraudMaterial.js +22 -18
- package/examples/jsm/nodes/Nodes.js +5 -1
- package/examples/jsm/nodes/accessors/BitangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +2 -2
- package/examples/jsm/nodes/accessors/BufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/CameraNode.js +1 -1
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +2 -2
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +6 -5
- package/examples/jsm/nodes/accessors/InstanceNode.js +2 -2
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +7 -9
- package/examples/jsm/nodes/accessors/MaterialNode.js +34 -46
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +9 -9
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +5 -4
- package/examples/jsm/nodes/accessors/MorphNode.js +4 -4
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PointUVNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReferenceNode.js +13 -7
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +2 -2
- package/examples/jsm/nodes/accessors/SkinningNode.js +2 -2
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/TextureBicubicNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +12 -6
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +1 -1
- package/examples/jsm/nodes/accessors/UVNode.js +1 -1
- package/examples/jsm/nodes/accessors/UserDataNode.js +2 -2
- package/examples/jsm/nodes/code/CodeNode.js +1 -1
- package/examples/jsm/nodes/code/ExpressionNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionCallNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionNode.js +18 -7
- package/examples/jsm/nodes/code/ScriptableNode.js +2 -2
- package/examples/jsm/nodes/code/ScriptableValueNode.js +2 -2
- package/examples/jsm/nodes/core/ArrayUniformNode.js +1 -1
- package/examples/jsm/nodes/core/AttributeNode.js +1 -1
- package/examples/jsm/nodes/core/BypassNode.js +1 -1
- package/examples/jsm/nodes/core/CacheNode.js +1 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/ContextNode.js +2 -2
- package/examples/jsm/nodes/core/IndexNode.js +1 -1
- package/examples/jsm/nodes/core/InputNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +28 -13
- package/examples/jsm/nodes/core/NodeBuilder.js +3 -17
- package/examples/jsm/nodes/core/NodeFrame.js +37 -14
- package/examples/jsm/nodes/core/OutputStructNode.js +8 -4
- package/examples/jsm/nodes/core/PropertyNode.js +3 -3
- package/examples/jsm/nodes/core/StackNode.js +1 -1
- package/examples/jsm/nodes/core/StructTypeNode.js +1 -1
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +3 -1
- package/examples/jsm/nodes/core/VarNode.js +1 -1
- package/examples/jsm/nodes/core/VaryingNode.js +1 -1
- package/examples/jsm/nodes/core/constants.js +1 -1
- package/examples/jsm/nodes/display/BlendModeNode.js +2 -2
- package/examples/jsm/nodes/display/BumpMapNode.js +2 -2
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -2
- package/examples/jsm/nodes/display/ColorSpaceNode.js +2 -2
- package/examples/jsm/nodes/display/FrontFacingNode.js +1 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
- package/examples/jsm/nodes/display/PosterizeNode.js +2 -2
- package/examples/jsm/nodes/display/ToneMappingNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportTextureNode.js +1 -1
- package/examples/jsm/nodes/fog/FogExp2Node.js +2 -2
- package/examples/jsm/nodes/fog/FogNode.js +2 -2
- package/examples/jsm/nodes/fog/FogRangeNode.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AONode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +2 -2
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/IESSpotLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightingContextNode.js +3 -3
- package/examples/jsm/nodes/lighting/LightingNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +4 -4
- package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/SpotLightNode.js +4 -4
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +449 -0
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/Materials.js +1 -0
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/NodeMaterial.js +27 -26
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
- package/examples/jsm/nodes/math/CondNode.js +1 -1
- package/examples/jsm/nodes/math/HashNode.js +8 -9
- package/examples/jsm/nodes/math/MathNode.js +2 -2
- package/examples/jsm/nodes/math/OperatorNode.js +1 -1
- package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +81 -28
- package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
- package/examples/jsm/nodes/utils/ConvertNode.js +1 -1
- package/examples/jsm/nodes/utils/DiscardNode.js +1 -1
- package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -2
- package/examples/jsm/nodes/utils/JoinNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +11 -11
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -2
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/PackingNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/RotateUVNode.js +2 -2
- package/examples/jsm/nodes/utils/SetNode.js +62 -0
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +2 -2
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +2 -2
- package/examples/jsm/objects/Sky.js +1 -3
- package/examples/jsm/postprocessing/OutputPass.js +3 -2
- package/examples/jsm/renderers/common/Background.js +2 -2
- package/examples/jsm/renderers/common/Bindings.js +3 -5
- package/examples/jsm/renderers/common/Pipelines.js +7 -7
- package/examples/jsm/renderers/common/RenderContext.js +3 -0
- package/examples/jsm/renderers/common/RenderObject.js +40 -16
- package/examples/jsm/renderers/common/RenderObjects.js +8 -14
- package/examples/jsm/renderers/common/Renderer.js +40 -13
- package/examples/jsm/renderers/common/SampledTexture.js +4 -2
- package/examples/jsm/renderers/common/StorageTexture.js +19 -0
- package/examples/jsm/renderers/common/Textures.js +14 -9
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +35 -0
- package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +20 -10
- package/examples/jsm/renderers/common/nodes/NodeSampler.js +0 -6
- package/examples/jsm/renderers/common/nodes/Nodes.js +51 -24
- package/examples/jsm/renderers/webgl/WebGLBackend.js +100 -5
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +92 -6
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +3 -3
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +14 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +5 -5
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +6 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +5 -5
- package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +197 -167
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +4 -4
- package/examples/jsm/shaders/OutputShader.js +2 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +6 -6
- package/examples/jsm/utils/BufferGeometryUtils.js +6 -4
- package/package.json +1 -1
- package/src/Three.js +0 -2
- package/src/animation/AnimationUtils.js +3 -20
- package/src/animation/KeyframeTrack.js +8 -8
- package/src/cameras/Camera.js +1 -5
- package/src/cameras/CubeCamera.js +14 -8
- package/src/constants.js +7 -1
- package/src/core/RenderTarget.js +16 -7
- package/src/extras/core/CurvePath.js +4 -1
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/loaders/ObjectLoader.js +6 -0
- package/src/materials/Material.js +8 -8
- package/src/math/Color.js +1 -5
- package/src/math/ColorManagement.js +82 -60
- package/src/objects/Sprite.js +2 -2
- package/src/renderers/WebGLMultiviewRenderTarget.js +35 -0
- package/src/renderers/WebGLRenderer.js +78 -22
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +35 -2
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -9
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +19 -15
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -6
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +16 -16
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +2 -2
- package/src/renderers/webgl/WebGLBackground.js +5 -4
- package/src/renderers/webgl/WebGLLights.js +14 -3
- package/src/renderers/webgl/WebGLMultiview.js +100 -0
- package/src/renderers/webgl/WebGLProgram.js +84 -5
- package/src/renderers/webgl/WebGLPrograms.js +11 -2
- package/src/renderers/webgl/WebGLTextures.js +214 -26
- package/src/renderers/webgl/WebGLUtils.js +21 -23
- package/src/renderers/webxr/WebXRManager.js +36 -12
- package/src/scenes/Fog.js +1 -0
- package/src/scenes/FogExp2.js +1 -0
- package/src/textures/Source.js +2 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
- package/src/lights/AmbientLightProbe.js +0 -21
- package/src/lights/HemisphereLightProbe.js +0 -30
package/src/Three.js
CHANGED
|
@@ -61,10 +61,8 @@ export { SpotLight } from './lights/SpotLight.js';
|
|
|
61
61
|
export { PointLight } from './lights/PointLight.js';
|
|
62
62
|
export { RectAreaLight } from './lights/RectAreaLight.js';
|
|
63
63
|
export { HemisphereLight } from './lights/HemisphereLight.js';
|
|
64
|
-
export { HemisphereLightProbe } from './lights/HemisphereLightProbe.js';
|
|
65
64
|
export { DirectionalLight } from './lights/DirectionalLight.js';
|
|
66
65
|
export { AmbientLight } from './lights/AmbientLight.js';
|
|
67
|
-
export { AmbientLightProbe } from './lights/AmbientLightProbe.js';
|
|
68
66
|
export { Light } from './lights/Light.js';
|
|
69
67
|
export { LightProbe } from './lights/LightProbe.js';
|
|
70
68
|
export { StereoCamera } from './cameras/StereoCamera.js';
|
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
import { Quaternion } from '../math/Quaternion.js';
|
|
2
2
|
import { AdditiveAnimationBlendMode } from '../constants.js';
|
|
3
3
|
|
|
4
|
-
// same as Array.prototype.slice, but also works on typed arrays
|
|
5
|
-
function arraySlice( array, from, to ) {
|
|
6
|
-
|
|
7
|
-
if ( isTypedArray( array ) ) {
|
|
8
|
-
|
|
9
|
-
// in ios9 array.subarray(from, undefined) will return empty array
|
|
10
|
-
// but array.subarray(from) or array.subarray(from, len) is correct
|
|
11
|
-
return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return array.slice( from, to );
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
4
|
// converts an array to a specific type
|
|
20
5
|
function convertArray( array, type, forceClone ) {
|
|
21
6
|
|
|
@@ -279,14 +264,14 @@ function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targe
|
|
|
279
264
|
// Reference frame is earlier than the first keyframe, so just use the first keyframe
|
|
280
265
|
const startIndex = referenceOffset;
|
|
281
266
|
const endIndex = referenceValueSize - referenceOffset;
|
|
282
|
-
referenceValue =
|
|
267
|
+
referenceValue = referenceTrack.values.slice( startIndex, endIndex );
|
|
283
268
|
|
|
284
269
|
} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {
|
|
285
270
|
|
|
286
271
|
// Reference frame is after the last keyframe, so just use the last keyframe
|
|
287
272
|
const startIndex = lastIndex * referenceValueSize + referenceOffset;
|
|
288
273
|
const endIndex = startIndex + referenceValueSize - referenceOffset;
|
|
289
|
-
referenceValue =
|
|
274
|
+
referenceValue = referenceTrack.values.slice( startIndex, endIndex );
|
|
290
275
|
|
|
291
276
|
} else {
|
|
292
277
|
|
|
@@ -295,7 +280,7 @@ function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targe
|
|
|
295
280
|
const startIndex = referenceOffset;
|
|
296
281
|
const endIndex = referenceValueSize - referenceOffset;
|
|
297
282
|
interpolant.evaluate( referenceTime );
|
|
298
|
-
referenceValue =
|
|
283
|
+
referenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );
|
|
299
284
|
|
|
300
285
|
}
|
|
301
286
|
|
|
@@ -350,7 +335,6 @@ function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targe
|
|
|
350
335
|
}
|
|
351
336
|
|
|
352
337
|
const AnimationUtils = {
|
|
353
|
-
arraySlice: arraySlice,
|
|
354
338
|
convertArray: convertArray,
|
|
355
339
|
isTypedArray: isTypedArray,
|
|
356
340
|
getKeyframeOrder: getKeyframeOrder,
|
|
@@ -361,7 +345,6 @@ const AnimationUtils = {
|
|
|
361
345
|
};
|
|
362
346
|
|
|
363
347
|
export {
|
|
364
|
-
arraySlice,
|
|
365
348
|
convertArray,
|
|
366
349
|
isTypedArray,
|
|
367
350
|
getKeyframeOrder,
|
|
@@ -239,8 +239,8 @@ class KeyframeTrack {
|
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
const stride = this.getValueSize();
|
|
242
|
-
this.times =
|
|
243
|
-
this.values =
|
|
242
|
+
this.times = times.slice( from, to );
|
|
243
|
+
this.values = this.values.slice( from * stride, to * stride );
|
|
244
244
|
|
|
245
245
|
}
|
|
246
246
|
|
|
@@ -330,8 +330,8 @@ class KeyframeTrack {
|
|
|
330
330
|
optimize() {
|
|
331
331
|
|
|
332
332
|
// times or values may be shared with other tracks, so overwriting is unsafe
|
|
333
|
-
const times =
|
|
334
|
-
values =
|
|
333
|
+
const times = this.times.slice(),
|
|
334
|
+
values = this.values.slice(),
|
|
335
335
|
stride = this.getValueSize(),
|
|
336
336
|
|
|
337
337
|
smoothInterpolation = this.getInterpolation() === InterpolateSmooth,
|
|
@@ -424,8 +424,8 @@ class KeyframeTrack {
|
|
|
424
424
|
|
|
425
425
|
if ( writeIndex !== times.length ) {
|
|
426
426
|
|
|
427
|
-
this.times =
|
|
428
|
-
this.values =
|
|
427
|
+
this.times = times.slice( 0, writeIndex );
|
|
428
|
+
this.values = values.slice( 0, writeIndex * stride );
|
|
429
429
|
|
|
430
430
|
} else {
|
|
431
431
|
|
|
@@ -440,8 +440,8 @@ class KeyframeTrack {
|
|
|
440
440
|
|
|
441
441
|
clone() {
|
|
442
442
|
|
|
443
|
-
const times =
|
|
444
|
-
const values =
|
|
443
|
+
const times = this.times.slice();
|
|
444
|
+
const values = this.values.slice();
|
|
445
445
|
|
|
446
446
|
const TypedKeyframeTrack = this.constructor;
|
|
447
447
|
const track = new TypedKeyframeTrack( this.name, times, values );
|
package/src/cameras/Camera.js
CHANGED
|
@@ -38,11 +38,7 @@ class Camera extends Object3D {
|
|
|
38
38
|
|
|
39
39
|
getWorldDirection( target ) {
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const e = this.matrixWorld.elements;
|
|
44
|
-
|
|
45
|
-
return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();
|
|
41
|
+
return super.getWorldDirection( target ).negate();
|
|
46
42
|
|
|
47
43
|
}
|
|
48
44
|
|
|
@@ -15,6 +15,7 @@ class CubeCamera extends Object3D {
|
|
|
15
15
|
|
|
16
16
|
this.renderTarget = renderTarget;
|
|
17
17
|
this.coordinateSystem = null;
|
|
18
|
+
this.activeMipmapLevel = 0;
|
|
18
19
|
|
|
19
20
|
const cameraPX = new PerspectiveCamera( fov, aspect, near, far );
|
|
20
21
|
cameraPX.layers = this.layers;
|
|
@@ -112,7 +113,7 @@ class CubeCamera extends Object3D {
|
|
|
112
113
|
|
|
113
114
|
if ( this.parent === null ) this.updateMatrixWorld();
|
|
114
115
|
|
|
115
|
-
const renderTarget = this
|
|
116
|
+
const { renderTarget, activeMipmapLevel } = this;
|
|
116
117
|
|
|
117
118
|
if ( this.coordinateSystem !== renderer.coordinateSystem ) {
|
|
118
119
|
|
|
@@ -125,6 +126,8 @@ class CubeCamera extends Object3D {
|
|
|
125
126
|
const [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;
|
|
126
127
|
|
|
127
128
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
129
|
+
const currentActiveCubeFace = renderer.getActiveCubeFace();
|
|
130
|
+
const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();
|
|
128
131
|
|
|
129
132
|
const currentXrEnabled = renderer.xr.enabled;
|
|
130
133
|
|
|
@@ -134,27 +137,30 @@ class CubeCamera extends Object3D {
|
|
|
134
137
|
|
|
135
138
|
renderTarget.texture.generateMipmaps = false;
|
|
136
139
|
|
|
137
|
-
renderer.setRenderTarget( renderTarget, 0 );
|
|
140
|
+
renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );
|
|
138
141
|
renderer.render( scene, cameraPX );
|
|
139
142
|
|
|
140
|
-
renderer.setRenderTarget( renderTarget, 1 );
|
|
143
|
+
renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );
|
|
141
144
|
renderer.render( scene, cameraNX );
|
|
142
145
|
|
|
143
|
-
renderer.setRenderTarget( renderTarget, 2 );
|
|
146
|
+
renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );
|
|
144
147
|
renderer.render( scene, cameraPY );
|
|
145
148
|
|
|
146
|
-
renderer.setRenderTarget( renderTarget, 3 );
|
|
149
|
+
renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );
|
|
147
150
|
renderer.render( scene, cameraNY );
|
|
148
151
|
|
|
149
|
-
renderer.setRenderTarget( renderTarget, 4 );
|
|
152
|
+
renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );
|
|
150
153
|
renderer.render( scene, cameraPZ );
|
|
151
154
|
|
|
155
|
+
// mipmaps are generated during the last call of render()
|
|
156
|
+
// at this point, all sides of the cube render target are defined
|
|
157
|
+
|
|
152
158
|
renderTarget.texture.generateMipmaps = generateMipmaps;
|
|
153
159
|
|
|
154
|
-
renderer.setRenderTarget( renderTarget, 5 );
|
|
160
|
+
renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
|
|
155
161
|
renderer.render( scene, cameraNZ );
|
|
156
162
|
|
|
157
|
-
renderer.setRenderTarget( currentRenderTarget );
|
|
163
|
+
renderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
|
|
158
164
|
|
|
159
165
|
renderer.xr.enabled = currentXrEnabled;
|
|
160
166
|
|
package/src/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const REVISION = '
|
|
1
|
+
export const REVISION = '157';
|
|
2
2
|
|
|
3
3
|
export const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
|
|
4
4
|
export const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
|
|
@@ -158,6 +158,12 @@ export const LinearSRGBColorSpace = 'srgb-linear';
|
|
|
158
158
|
export const DisplayP3ColorSpace = 'display-p3';
|
|
159
159
|
export const LinearDisplayP3ColorSpace = 'display-p3-linear';
|
|
160
160
|
|
|
161
|
+
export const LinearTransfer = 'linear';
|
|
162
|
+
export const SRGBTransfer = 'srgb';
|
|
163
|
+
|
|
164
|
+
export const Rec709Primaries = 'rec709';
|
|
165
|
+
export const P3Primaries = 'p3';
|
|
166
|
+
|
|
161
167
|
export const ZeroStencilOp = 0;
|
|
162
168
|
export const KeepStencilOp = 7680;
|
|
163
169
|
export const ReplaceStencilOp = 7681;
|
package/src/core/RenderTarget.js
CHANGED
|
@@ -37,20 +37,29 @@ class RenderTarget extends EventDispatcher {
|
|
|
37
37
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
options = Object.assign( {
|
|
41
|
+
generateMipmaps: false,
|
|
42
|
+
internalFormat: null,
|
|
43
|
+
minFilter: LinearFilter,
|
|
44
|
+
depthBuffer: true,
|
|
45
|
+
stencilBuffer: false,
|
|
46
|
+
depthTexture: null,
|
|
47
|
+
samples: 0
|
|
48
|
+
}, options );
|
|
49
|
+
|
|
40
50
|
this.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );
|
|
41
51
|
this.texture.isRenderTargetTexture = true;
|
|
42
52
|
|
|
43
53
|
this.texture.flipY = false;
|
|
44
|
-
this.texture.generateMipmaps = options.generateMipmaps
|
|
45
|
-
this.texture.internalFormat = options.internalFormat
|
|
46
|
-
this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;
|
|
54
|
+
this.texture.generateMipmaps = options.generateMipmaps;
|
|
55
|
+
this.texture.internalFormat = options.internalFormat;
|
|
47
56
|
|
|
48
|
-
this.depthBuffer = options.depthBuffer
|
|
49
|
-
this.stencilBuffer = options.stencilBuffer
|
|
57
|
+
this.depthBuffer = options.depthBuffer;
|
|
58
|
+
this.stencilBuffer = options.stencilBuffer;
|
|
50
59
|
|
|
51
|
-
this.depthTexture = options.depthTexture
|
|
60
|
+
this.depthTexture = options.depthTexture;
|
|
52
61
|
|
|
53
|
-
this.samples = options.samples
|
|
62
|
+
this.samples = options.samples;
|
|
54
63
|
|
|
55
64
|
}
|
|
56
65
|
|
|
@@ -33,10 +33,13 @@ class CurvePath extends Curve {
|
|
|
33
33
|
|
|
34
34
|
if ( ! startPoint.equals( endPoint ) ) {
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
const lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';
|
|
37
|
+
this.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );
|
|
37
38
|
|
|
38
39
|
}
|
|
39
40
|
|
|
41
|
+
return this;
|
|
42
|
+
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
// To get accurate point with reference to
|
|
@@ -142,7 +142,7 @@ class MaterialLoader extends Loader {
|
|
|
142
142
|
|
|
143
143
|
if ( json.rotation !== undefined ) material.rotation = json.rotation;
|
|
144
144
|
|
|
145
|
-
if ( json.linewidth !==
|
|
145
|
+
if ( json.linewidth !== undefined ) material.linewidth = json.linewidth;
|
|
146
146
|
if ( json.dashSize !== undefined ) material.dashSize = json.dashSize;
|
|
147
147
|
if ( json.gapSize !== undefined ) material.gapSize = json.gapSize;
|
|
148
148
|
if ( json.scale !== undefined ) material.scale = json.scale;
|
|
@@ -800,6 +800,12 @@ class ObjectLoader extends Loader {
|
|
|
800
800
|
|
|
801
801
|
}
|
|
802
802
|
|
|
803
|
+
if ( data.fog.name !== '' ) {
|
|
804
|
+
|
|
805
|
+
object.fog.name = data.fog.name;
|
|
806
|
+
|
|
807
|
+
}
|
|
808
|
+
|
|
803
809
|
}
|
|
804
810
|
|
|
805
811
|
if ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;
|
|
@@ -320,10 +320,10 @@ class Material extends EventDispatcher {
|
|
|
320
320
|
|
|
321
321
|
if ( this.blending !== NormalBlending ) data.blending = this.blending;
|
|
322
322
|
if ( this.side !== FrontSide ) data.side = this.side;
|
|
323
|
-
if ( this.vertexColors ) data.vertexColors = true;
|
|
323
|
+
if ( this.vertexColors === true ) data.vertexColors = true;
|
|
324
324
|
|
|
325
325
|
if ( this.opacity < 1 ) data.opacity = this.opacity;
|
|
326
|
-
if ( this.transparent === true ) data.transparent =
|
|
326
|
+
if ( this.transparent === true ) data.transparent = true;
|
|
327
327
|
|
|
328
328
|
data.depthFunc = this.depthFunc;
|
|
329
329
|
data.depthTest = this.depthTest;
|
|
@@ -354,17 +354,17 @@ class Material extends EventDispatcher {
|
|
|
354
354
|
if ( this.dithering === true ) data.dithering = true;
|
|
355
355
|
|
|
356
356
|
if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;
|
|
357
|
-
if ( this.alphaHash === true ) data.alphaHash =
|
|
358
|
-
if ( this.alphaToCoverage === true ) data.alphaToCoverage =
|
|
359
|
-
if ( this.premultipliedAlpha === true ) data.premultipliedAlpha =
|
|
360
|
-
if ( this.forceSinglePass === true ) data.forceSinglePass =
|
|
357
|
+
if ( this.alphaHash === true ) data.alphaHash = true;
|
|
358
|
+
if ( this.alphaToCoverage === true ) data.alphaToCoverage = true;
|
|
359
|
+
if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;
|
|
360
|
+
if ( this.forceSinglePass === true ) data.forceSinglePass = true;
|
|
361
361
|
|
|
362
|
-
if ( this.wireframe === true ) data.wireframe =
|
|
362
|
+
if ( this.wireframe === true ) data.wireframe = true;
|
|
363
363
|
if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;
|
|
364
364
|
if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;
|
|
365
365
|
if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;
|
|
366
366
|
|
|
367
|
-
if ( this.flatShading === true ) data.flatShading =
|
|
367
|
+
if ( this.flatShading === true ) data.flatShading = true;
|
|
368
368
|
|
|
369
369
|
if ( this.visible === false ) data.visible = false;
|
|
370
370
|
|
package/src/math/Color.js
CHANGED
|
@@ -442,11 +442,7 @@ class Color {
|
|
|
442
442
|
|
|
443
443
|
this.getHSL( _hslA );
|
|
444
444
|
|
|
445
|
-
_hslA.h
|
|
446
|
-
|
|
447
|
-
this.setHSL( _hslA.h, _hslA.s, _hslA.l );
|
|
448
|
-
|
|
449
|
-
return this;
|
|
445
|
+
return this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );
|
|
450
446
|
|
|
451
447
|
}
|
|
452
448
|
|
|
@@ -1,18 +1,6 @@
|
|
|
1
|
-
import { SRGBColorSpace, LinearSRGBColorSpace, DisplayP3ColorSpace, } from '../constants.js';
|
|
1
|
+
import { SRGBColorSpace, LinearSRGBColorSpace, DisplayP3ColorSpace, LinearDisplayP3ColorSpace, Rec709Primaries, P3Primaries, SRGBTransfer, LinearTransfer, NoColorSpace, } from '../constants.js';
|
|
2
2
|
import { Matrix3 } from './Matrix3.js';
|
|
3
3
|
|
|
4
|
-
export function SRGBToLinear( c ) {
|
|
5
|
-
|
|
6
|
-
return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export function LinearToSRGB( c ) {
|
|
11
|
-
|
|
12
|
-
return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
4
|
/**
|
|
17
5
|
* Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping
|
|
18
6
|
* or clipping. Based on W3C specifications for sRGB and Display P3,
|
|
@@ -25,50 +13,57 @@ export function LinearToSRGB( c ) {
|
|
|
25
13
|
* - http://www.russellcottrell.com/photo/matrixCalculator.htm
|
|
26
14
|
*/
|
|
27
15
|
|
|
28
|
-
const LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().
|
|
29
|
-
0.8224621, 0.
|
|
30
|
-
0.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().fromArray( [
|
|
35
|
-
1.2249401, - 0.0420569, - 0.0196376,
|
|
36
|
-
- 0.2249404, 1.0420571, - 0.0786361,
|
|
37
|
-
0.0000001, 0.0000000, 1.0982735
|
|
38
|
-
] );
|
|
39
|
-
|
|
40
|
-
function DisplayP3ToLinearSRGB( color ) {
|
|
16
|
+
const LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(
|
|
17
|
+
0.8224621, 0.177538, 0.0,
|
|
18
|
+
0.0331941, 0.9668058, 0.0,
|
|
19
|
+
0.0170827, 0.0723974, 0.9105199,
|
|
20
|
+
);
|
|
41
21
|
|
|
42
|
-
|
|
43
|
-
|
|
22
|
+
const LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(
|
|
23
|
+
1.2249401, - 0.2249404, 0.0,
|
|
24
|
+
- 0.0420569, 1.0420571, 0.0,
|
|
25
|
+
- 0.0196376, - 0.0786361, 1.0982735
|
|
26
|
+
);
|
|
44
27
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[
|
|
57
|
-
|
|
58
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Defines supported color spaces by transfer function and primaries,
|
|
30
|
+
* and provides conversions to/from the Linear-sRGB reference space.
|
|
31
|
+
*/
|
|
32
|
+
const COLOR_SPACES = {
|
|
33
|
+
[ LinearSRGBColorSpace ]: {
|
|
34
|
+
transfer: LinearTransfer,
|
|
35
|
+
primaries: Rec709Primaries,
|
|
36
|
+
toReference: ( color ) => color,
|
|
37
|
+
fromReference: ( color ) => color,
|
|
38
|
+
},
|
|
39
|
+
[ SRGBColorSpace ]: {
|
|
40
|
+
transfer: SRGBTransfer,
|
|
41
|
+
primaries: Rec709Primaries,
|
|
42
|
+
toReference: ( color ) => color.convertSRGBToLinear(),
|
|
43
|
+
fromReference: ( color ) => color.convertLinearToSRGB(),
|
|
44
|
+
},
|
|
45
|
+
[ LinearDisplayP3ColorSpace ]: {
|
|
46
|
+
transfer: LinearTransfer,
|
|
47
|
+
primaries: P3Primaries,
|
|
48
|
+
toReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),
|
|
49
|
+
fromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),
|
|
50
|
+
},
|
|
51
|
+
[ DisplayP3ColorSpace ]: {
|
|
52
|
+
transfer: SRGBTransfer,
|
|
53
|
+
primaries: P3Primaries,
|
|
54
|
+
toReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),
|
|
55
|
+
fromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),
|
|
56
|
+
},
|
|
59
57
|
};
|
|
60
58
|
|
|
61
|
-
|
|
62
|
-
const FROM_LINEAR = {
|
|
63
|
-
[ LinearSRGBColorSpace ]: ( color ) => color,
|
|
64
|
-
[ SRGBColorSpace ]: ( color ) => color.convertLinearToSRGB(),
|
|
65
|
-
[ DisplayP3ColorSpace ]: LinearSRGBToDisplayP3,
|
|
66
|
-
};
|
|
59
|
+
const SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );
|
|
67
60
|
|
|
68
61
|
export const ColorManagement = {
|
|
69
62
|
|
|
70
63
|
enabled: true,
|
|
71
64
|
|
|
65
|
+
_workingColorSpace: LinearSRGBColorSpace,
|
|
66
|
+
|
|
72
67
|
get legacyMode() {
|
|
73
68
|
|
|
74
69
|
console.warn( 'THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150.' );
|
|
@@ -87,13 +82,19 @@ export const ColorManagement = {
|
|
|
87
82
|
|
|
88
83
|
get workingColorSpace() {
|
|
89
84
|
|
|
90
|
-
return
|
|
85
|
+
return this._workingColorSpace;
|
|
91
86
|
|
|
92
87
|
},
|
|
93
88
|
|
|
94
89
|
set workingColorSpace( colorSpace ) {
|
|
95
90
|
|
|
96
|
-
|
|
91
|
+
if ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {
|
|
92
|
+
|
|
93
|
+
throw new Error( `Unsupported working color space, "${ colorSpace }".` );
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
this._workingColorSpace = colorSpace;
|
|
97
98
|
|
|
98
99
|
},
|
|
99
100
|
|
|
@@ -105,29 +106,50 @@ export const ColorManagement = {
|
|
|
105
106
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
|
-
const
|
|
109
|
-
const
|
|
109
|
+
const sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;
|
|
110
|
+
const targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
return targetFromReference( sourceToReference( color ) );
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
},
|
|
114
115
|
|
|
115
|
-
|
|
116
|
+
fromWorkingColorSpace: function ( color, targetColorSpace ) {
|
|
116
117
|
|
|
117
|
-
return
|
|
118
|
+
return this.convert( color, this._workingColorSpace, targetColorSpace );
|
|
118
119
|
|
|
119
120
|
},
|
|
120
121
|
|
|
121
|
-
|
|
122
|
+
toWorkingColorSpace: function ( color, sourceColorSpace ) {
|
|
122
123
|
|
|
123
|
-
return this.convert( color, this.
|
|
124
|
+
return this.convert( color, sourceColorSpace, this._workingColorSpace );
|
|
124
125
|
|
|
125
126
|
},
|
|
126
127
|
|
|
127
|
-
|
|
128
|
+
getPrimaries: function ( colorSpace ) {
|
|
129
|
+
|
|
130
|
+
return COLOR_SPACES[ colorSpace ].primaries;
|
|
131
|
+
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
getTransfer: function ( colorSpace ) {
|
|
128
135
|
|
|
129
|
-
|
|
136
|
+
if ( colorSpace === NoColorSpace ) return LinearTransfer;
|
|
137
|
+
|
|
138
|
+
return COLOR_SPACES[ colorSpace ].transfer;
|
|
130
139
|
|
|
131
140
|
},
|
|
132
141
|
|
|
133
142
|
};
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
export function SRGBToLinear( c ) {
|
|
146
|
+
|
|
147
|
+
return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export function LinearToSRGB( c ) {
|
|
152
|
+
|
|
153
|
+
return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
|
|
154
|
+
|
|
155
|
+
}
|
package/src/objects/Sprite.js
CHANGED
|
@@ -28,7 +28,7 @@ const _uvC = /*@__PURE__*/ new Vector2();
|
|
|
28
28
|
|
|
29
29
|
class Sprite extends Object3D {
|
|
30
30
|
|
|
31
|
-
constructor( material ) {
|
|
31
|
+
constructor( material = new SpriteMaterial() ) {
|
|
32
32
|
|
|
33
33
|
super();
|
|
34
34
|
|
|
@@ -56,7 +56,7 @@ class Sprite extends Object3D {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
this.geometry = _geometry;
|
|
59
|
-
this.material =
|
|
59
|
+
this.material = material;
|
|
60
60
|
|
|
61
61
|
this.center = new Vector2( 0.5, 0.5 );
|
|
62
62
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author fernandojsg / http://fernandojsg.com
|
|
3
|
+
* @author Takahiro https://github.com/takahirox
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
7
|
+
|
|
8
|
+
class WebGLMultiviewRenderTarget extends WebGLRenderTarget {
|
|
9
|
+
|
|
10
|
+
constructor( width, height, numViews, options = {} ) {
|
|
11
|
+
|
|
12
|
+
super( width, height, options );
|
|
13
|
+
|
|
14
|
+
this.depthBuffer = false;
|
|
15
|
+
this.stencilBuffer = false;
|
|
16
|
+
|
|
17
|
+
this.numViews = numViews;
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
copy( source ) {
|
|
22
|
+
|
|
23
|
+
super.copy( source );
|
|
24
|
+
|
|
25
|
+
this.numViews = source.numViews;
|
|
26
|
+
|
|
27
|
+
return this;
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
WebGLMultiviewRenderTarget.prototype.isWebGLMultiviewRenderTarget = true;
|
|
34
|
+
|
|
35
|
+
export { WebGLMultiviewRenderTarget };
|