super-three 0.160.1 → 0.161.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/LICENSE +1 -1
- package/build/three.cjs +379 -108
- package/build/three.module.js +380 -108
- package/build/three.module.min.js +1 -1
- package/examples/jsm/Addons.js +5 -1
- package/examples/jsm/capabilities/WebGPU.js +13 -9
- package/examples/jsm/controls/OrbitControls.js +102 -13
- package/examples/jsm/curves/NURBSUtils.js +59 -4
- package/examples/jsm/curves/NURBSVolume.js +62 -0
- package/examples/jsm/exporters/USDZExporter.js +8 -7
- package/examples/jsm/helpers/TextureHelper.js +3 -3
- package/examples/jsm/loaders/3DMLoader.js +44 -43
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +20 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +78 -46
- package/examples/jsm/loaders/LUTCubeLoader.js +81 -67
- package/examples/jsm/loaders/LUTImageLoader.js +3 -2
- package/examples/jsm/loaders/MaterialXLoader.js +115 -16
- package/examples/jsm/loaders/SVGLoader.js +4 -3
- package/examples/jsm/loaders/VRMLLoader.js +1 -1
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +144 -0
- package/examples/jsm/misc/Timer.js +13 -4
- package/examples/jsm/nodes/Nodes.js +16 -5
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +5 -3
- package/examples/jsm/nodes/accessors/CameraNode.js +9 -4
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +12 -1
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +27 -0
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +56 -3
- package/examples/jsm/nodes/accessors/VertexColorNode.js +70 -0
- package/examples/jsm/nodes/core/AttributeNode.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +23 -18
- package/examples/jsm/nodes/core/NodeFrame.js +16 -8
- package/examples/jsm/nodes/core/constants.js +1 -0
- package/examples/jsm/nodes/display/AfterImageNode.js +148 -0
- package/examples/jsm/nodes/display/AnamorphicNode.js +148 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +3 -0
- package/examples/jsm/nodes/display/GaussianBlurNode.js +33 -13
- package/examples/jsm/nodes/display/PassNode.js +3 -2
- package/examples/jsm/nodes/display/ToneMappingNode.js +46 -3
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -4
- package/examples/jsm/nodes/display/ViewportNode.js +0 -2
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +4 -4
- package/examples/jsm/nodes/fog/FogNode.js +2 -1
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +13 -5
- package/examples/jsm/nodes/lighting/LightingContextNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +1 -1
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +18 -30
- package/examples/jsm/nodes/materials/Materials.js +1 -0
- package/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +84 -0
- package/examples/jsm/nodes/materials/NodeMaterial.js +6 -4
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +1 -7
- package/examples/jsm/nodes/math/MathNode.js +12 -2
- package/examples/jsm/nodes/math/MathUtils.js +15 -0
- package/examples/jsm/nodes/math/OperatorNode.js +13 -5
- package/examples/jsm/nodes/math/TriNoise3D.js +71 -0
- package/examples/jsm/nodes/shadernode/ShaderNode.js +10 -1
- package/examples/jsm/nodes/utils/ArrayElementNode.js +6 -0
- package/examples/jsm/nodes/utils/JoinNode.js +2 -2
- package/examples/jsm/nodes/utils/LoopNode.js +3 -3
- package/examples/jsm/nodes/utils/ReflectorNode.js +227 -0
- package/examples/jsm/nodes/utils/RotateNode.js +68 -0
- package/examples/jsm/nodes/utils/RotateUVNode.js +1 -9
- package/examples/jsm/nodes/utils/SplitNode.js +4 -4
- package/examples/jsm/objects/GroundedSkybox.js +50 -0
- package/examples/jsm/objects/QuadMesh.js +8 -2
- package/examples/jsm/objects/Water2.js +8 -8
- package/examples/jsm/postprocessing/GTAOPass.js +11 -1
- package/examples/jsm/renderers/common/Backend.js +14 -0
- package/examples/jsm/renderers/common/Bindings.js +1 -1
- package/examples/jsm/renderers/common/DataMap.js +1 -1
- package/examples/jsm/renderers/common/Info.js +25 -1
- package/examples/jsm/renderers/common/Pipelines.js +8 -8
- package/examples/jsm/renderers/common/PostProcessing.js +2 -2
- package/examples/jsm/renderers/common/ProgrammableStage.js +3 -1
- package/examples/jsm/renderers/common/RenderObject.js +2 -0
- package/examples/jsm/renderers/common/Renderer.js +238 -22
- package/examples/jsm/renderers/common/StorageBufferAttribute.js +17 -0
- package/examples/jsm/renderers/common/Textures.js +25 -5
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +2 -1
- package/examples/jsm/renderers/common/nodes/Nodes.js +4 -2
- package/examples/jsm/renderers/webgl/WebGLBackend.js +631 -270
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +37 -30
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +89 -8
- package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +11 -0
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +197 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +377 -11
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +2 -2
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +1 -21
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +289 -102
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +7 -2
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +56 -39
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -4
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +85 -12
- package/examples/jsm/transpiler/AST.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +1 -1
- package/examples/jsm/transpiler/TSLEncoder.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +23 -27
- package/examples/jsm/utils/SortUtils.js +2 -0
- package/examples/jsm/webxr/ARButton.js +12 -2
- package/examples/jsm/webxr/VRButton.js +12 -2
- package/examples/jsm/webxr/XRButton.js +12 -2
- package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +3 -1
- package/package.json +2 -2
- package/src/audio/Audio.js +1 -3
- package/src/cameras/PerspectiveCamera.js +35 -0
- package/src/constants.js +1 -2
- package/src/core/BufferAttribute.js +2 -1
- package/src/core/InterleavedBuffer.js +2 -1
- package/src/core/InterleavedBufferAttribute.js +20 -0
- package/src/materials/ShaderMaterial.js +2 -1
- package/src/math/Triangle.js +0 -30
- package/src/objects/BatchedMesh.js +6 -7
- package/src/objects/SkinnedMesh.js +0 -8
- package/src/renderers/WebGLRenderer.js +5 -1
- package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +9 -0
- package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +56 -11
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +15 -7
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +1 -1
- package/src/renderers/webgl/WebGLAttributes.js +2 -2
- package/src/renderers/webgl/WebGLCubeMaps.js +1 -1
- package/src/renderers/webgl/WebGLProgram.js +30 -3
- package/src/renderers/webgl/WebGLPrograms.js +19 -11
- package/src/renderers/webgl/WebGLTextures.js +90 -16
- package/src/renderers/webxr/WebXRDepthSensing.js +105 -0
- package/src/renderers/webxr/WebXRManager.js +46 -0
- package/src/textures/Source.js +1 -0
- package/build/three.js +0 -54519
- package/build/three.min.js +0 -7
- package/examples/jsm/objects/GroundProjectedSkybox.js +0 -172
package/build/three.cjs
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
|
-
const REVISION = '
|
|
8
|
+
const REVISION = '161';
|
|
9
9
|
|
|
10
10
|
const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
|
|
11
11
|
const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
|
|
@@ -20,7 +20,6 @@ const VSMShadowMap = 3;
|
|
|
20
20
|
const FrontSide = 0;
|
|
21
21
|
const BackSide = 1;
|
|
22
22
|
const DoubleSide = 2;
|
|
23
|
-
const TwoPassDoubleSide = 2; // r149
|
|
24
23
|
const NoBlending = 0;
|
|
25
24
|
const NormalBlending = 1;
|
|
26
25
|
const AdditiveBlending = 2;
|
|
@@ -1841,6 +1840,7 @@ class Source {
|
|
|
1841
1840
|
this.uuid = generateUUID();
|
|
1842
1841
|
|
|
1843
1842
|
this.data = data;
|
|
1843
|
+
this.dataReady = true;
|
|
1844
1844
|
|
|
1845
1845
|
this.version = 0;
|
|
1846
1846
|
|
|
@@ -8158,7 +8158,7 @@ Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;
|
|
|
8158
8158
|
const _v0$1 = /*@__PURE__*/ new Vector3();
|
|
8159
8159
|
const _v1$3 = /*@__PURE__*/ new Vector3();
|
|
8160
8160
|
const _v2$2 = /*@__PURE__*/ new Vector3();
|
|
8161
|
-
const _v3$
|
|
8161
|
+
const _v3$2 = /*@__PURE__*/ new Vector3();
|
|
8162
8162
|
|
|
8163
8163
|
const _vab = /*@__PURE__*/ new Vector3();
|
|
8164
8164
|
const _vac = /*@__PURE__*/ new Vector3();
|
|
@@ -8167,8 +8167,6 @@ const _vap = /*@__PURE__*/ new Vector3();
|
|
|
8167
8167
|
const _vbp = /*@__PURE__*/ new Vector3();
|
|
8168
8168
|
const _vcp = /*@__PURE__*/ new Vector3();
|
|
8169
8169
|
|
|
8170
|
-
let warnedGetUV = false;
|
|
8171
|
-
|
|
8172
8170
|
class Triangle {
|
|
8173
8171
|
|
|
8174
8172
|
constructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {
|
|
@@ -8232,33 +8230,19 @@ class Triangle {
|
|
|
8232
8230
|
static containsPoint( point, a, b, c ) {
|
|
8233
8231
|
|
|
8234
8232
|
// if the triangle is degenerate then we can't contain a point
|
|
8235
|
-
if ( this.getBarycoord( point, a, b, c, _v3$
|
|
8233
|
+
if ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {
|
|
8236
8234
|
|
|
8237
8235
|
return false;
|
|
8238
8236
|
|
|
8239
8237
|
}
|
|
8240
8238
|
|
|
8241
|
-
return ( _v3$
|
|
8242
|
-
|
|
8243
|
-
}
|
|
8244
|
-
|
|
8245
|
-
static getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { // @deprecated, r151
|
|
8246
|
-
|
|
8247
|
-
if ( warnedGetUV === false ) {
|
|
8248
|
-
|
|
8249
|
-
console.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );
|
|
8250
|
-
|
|
8251
|
-
warnedGetUV = true;
|
|
8252
|
-
|
|
8253
|
-
}
|
|
8254
|
-
|
|
8255
|
-
return this.getInterpolation( point, p1, p2, p3, uv1, uv2, uv3, target );
|
|
8239
|
+
return ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );
|
|
8256
8240
|
|
|
8257
8241
|
}
|
|
8258
8242
|
|
|
8259
8243
|
static getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {
|
|
8260
8244
|
|
|
8261
|
-
if ( this.getBarycoord( point, p1, p2, p3, _v3$
|
|
8245
|
+
if ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {
|
|
8262
8246
|
|
|
8263
8247
|
target.x = 0;
|
|
8264
8248
|
target.y = 0;
|
|
@@ -8269,9 +8253,9 @@ class Triangle {
|
|
|
8269
8253
|
}
|
|
8270
8254
|
|
|
8271
8255
|
target.setScalar( 0 );
|
|
8272
|
-
target.addScaledVector( v1, _v3$
|
|
8273
|
-
target.addScaledVector( v2, _v3$
|
|
8274
|
-
target.addScaledVector( v3, _v3$
|
|
8256
|
+
target.addScaledVector( v1, _v3$2.x );
|
|
8257
|
+
target.addScaledVector( v2, _v3$2.y );
|
|
8258
|
+
target.addScaledVector( v3, _v3$2.z );
|
|
8275
8259
|
|
|
8276
8260
|
return target;
|
|
8277
8261
|
|
|
@@ -8366,20 +8350,6 @@ class Triangle {
|
|
|
8366
8350
|
|
|
8367
8351
|
}
|
|
8368
8352
|
|
|
8369
|
-
getUV( point, uv1, uv2, uv3, target ) { // @deprecated, r151
|
|
8370
|
-
|
|
8371
|
-
if ( warnedGetUV === false ) {
|
|
8372
|
-
|
|
8373
|
-
console.warn( 'THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation().' );
|
|
8374
|
-
|
|
8375
|
-
warnedGetUV = true;
|
|
8376
|
-
|
|
8377
|
-
}
|
|
8378
|
-
|
|
8379
|
-
return Triangle.getInterpolation( point, this.a, this.b, this.c, uv1, uv2, uv3, target );
|
|
8380
|
-
|
|
8381
|
-
}
|
|
8382
|
-
|
|
8383
8353
|
getInterpolation( point, v1, v2, v3, target ) {
|
|
8384
8354
|
|
|
8385
8355
|
return Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );
|
|
@@ -9913,7 +9883,7 @@ class BufferAttribute {
|
|
|
9913
9883
|
|
|
9914
9884
|
get updateRange() {
|
|
9915
9885
|
|
|
9916
|
-
|
|
9886
|
+
warnOnce( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159
|
|
9917
9887
|
return this._updateRange;
|
|
9918
9888
|
|
|
9919
9889
|
}
|
|
@@ -12296,7 +12266,8 @@ class ShaderMaterial extends Material {
|
|
|
12296
12266
|
fragDepth: false, // set to use fragment depth values
|
|
12297
12267
|
drawBuffers: false, // set to use draw buffers
|
|
12298
12268
|
shaderTextureLOD: false, // set to use shader texture LOD
|
|
12299
|
-
clipCullDistance: false // set to use vertex shader clipping
|
|
12269
|
+
clipCullDistance: false, // set to use vertex shader clipping
|
|
12270
|
+
multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
|
|
12300
12271
|
};
|
|
12301
12272
|
|
|
12302
12273
|
// When rendered geometry doesn't include these attributes but the material does,
|
|
@@ -12508,6 +12479,11 @@ class Camera extends Object3D {
|
|
|
12508
12479
|
|
|
12509
12480
|
}
|
|
12510
12481
|
|
|
12482
|
+
const _v3$1 = /*@__PURE__*/ new Vector3();
|
|
12483
|
+
const _minTarget = /*@__PURE__*/ new Vector2();
|
|
12484
|
+
const _maxTarget = /*@__PURE__*/ new Vector2();
|
|
12485
|
+
|
|
12486
|
+
|
|
12511
12487
|
class PerspectiveCamera extends Camera {
|
|
12512
12488
|
|
|
12513
12489
|
constructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {
|
|
@@ -12606,6 +12582,34 @@ class PerspectiveCamera extends Camera {
|
|
|
12606
12582
|
|
|
12607
12583
|
}
|
|
12608
12584
|
|
|
12585
|
+
/**
|
|
12586
|
+
* Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.
|
|
12587
|
+
* Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.
|
|
12588
|
+
*/
|
|
12589
|
+
getViewBounds( distance, minTarget, maxTarget ) {
|
|
12590
|
+
|
|
12591
|
+
_v3$1.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );
|
|
12592
|
+
|
|
12593
|
+
minTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );
|
|
12594
|
+
|
|
12595
|
+
_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );
|
|
12596
|
+
|
|
12597
|
+
maxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );
|
|
12598
|
+
|
|
12599
|
+
}
|
|
12600
|
+
|
|
12601
|
+
/**
|
|
12602
|
+
* Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.
|
|
12603
|
+
* Copies the result into the target Vector2, where x is width and y is height.
|
|
12604
|
+
*/
|
|
12605
|
+
getViewSize( distance, target ) {
|
|
12606
|
+
|
|
12607
|
+
this.getViewBounds( distance, _minTarget, _maxTarget );
|
|
12608
|
+
|
|
12609
|
+
return target.subVectors( _maxTarget, _minTarget );
|
|
12610
|
+
|
|
12611
|
+
}
|
|
12612
|
+
|
|
12609
12613
|
/**
|
|
12610
12614
|
* Sets an offset in a larger frustum. This is useful for multi-window or
|
|
12611
12615
|
* multi-monitor/multi-machine setups.
|
|
@@ -13598,7 +13602,7 @@ function WebGLAttributes( gl, capabilities ) {
|
|
|
13598
13602
|
function updateBuffer( buffer, attribute, bufferType ) {
|
|
13599
13603
|
|
|
13600
13604
|
const array = attribute.array;
|
|
13601
|
-
const updateRange = attribute._updateRange; // deprecated
|
|
13605
|
+
const updateRange = attribute._updateRange; // @deprecated, r159
|
|
13602
13606
|
const updateRanges = attribute.updateRanges;
|
|
13603
13607
|
|
|
13604
13608
|
gl.bindBuffer( bufferType, buffer );
|
|
@@ -13633,7 +13637,7 @@ function WebGLAttributes( gl, capabilities ) {
|
|
|
13633
13637
|
|
|
13634
13638
|
}
|
|
13635
13639
|
|
|
13636
|
-
// deprecated
|
|
13640
|
+
// @deprecated, r159
|
|
13637
13641
|
if ( updateRange.count !== - 1 ) {
|
|
13638
13642
|
|
|
13639
13643
|
if ( isWebGL2 ) {
|
|
@@ -13839,7 +13843,7 @@ var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alp
|
|
|
13839
13843
|
|
|
13840
13844
|
var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif";
|
|
13841
13845
|
|
|
13842
|
-
var alphatest_fragment = "#ifdef USE_ALPHATEST\n\tif ( diffuseColor.a < alphaTest ) discard;\n#endif";
|
|
13846
|
+
var alphatest_fragment = "#ifdef USE_ALPHATEST\n\t#ifdef ALPHA_TO_COVERAGE\n\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\n\tif ( diffuseColor.a == 0.0 ) discard;\n\t#else\n\tif ( diffuseColor.a < alphaTest ) discard;\n\t#endif\n#endif";
|
|
13843
13847
|
|
|
13844
13848
|
var alphatest_pars_fragment = "#ifdef USE_ALPHATEST\n\tuniform float alphaTest;\n#endif";
|
|
13845
13849
|
|
|
@@ -13861,7 +13865,7 @@ var iridescence_fragment = "#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 =
|
|
|
13861
13865
|
|
|
13862
13866
|
var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vBumpMapUv );\n\t\tvec2 dSTdy = dFdy( vBumpMapUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n\t\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif";
|
|
13863
13867
|
|
|
13864
|
-
var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif";
|
|
13868
|
+
var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#ifdef ALPHA_TO_COVERAGE\n\t\tfloat distanceToPlane, distanceGradient;\n\t\tfloat clipOpacity = 1.0;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\tif ( clipOpacity == 0.0 ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tfloat unionClipOpacity = 1.0;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n\t\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\n\t\t\t\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tclipOpacity *= 1.0 - unionClipOpacity;\n\t\t#endif\n\t\tdiffuseColor.a *= clipOpacity;\n\t\tif ( diffuseColor.a == 0.0 ) discard;\n\t#else\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\t\tbool clipped = true;\n\t\t\t#pragma unroll_loop_start\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\t\tplane = clippingPlanes[ i ];\n\t\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t\t}\n\t\t\t#pragma unroll_loop_end\n\t\t\tif ( clipped ) discard;\n\t\t#endif\n\t#endif\n#endif";
|
|
13865
13869
|
|
|
13866
13870
|
var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif";
|
|
13867
13871
|
|
|
@@ -14031,7 +14035,7 @@ var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D spe
|
|
|
14031
14035
|
|
|
14032
14036
|
var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif";
|
|
14033
14037
|
|
|
14034
|
-
var tonemapping_pars_fragment = "#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n\tvec3( 0.6274, 0.0691, 0.0164 ),\n\tvec3( 0.3293, 0.9195, 0.0880 ),\n\tvec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n\tvec3 x2 = x * x;\n\tvec3 x4 = x2 * x2;\n\treturn + 15.5 * x4 * x2\n\t\t- 40.14 * x4 * x\n\t\t+ 31.96 * x4\n\t\t- 6.868 * x2 * x\n\t\t+ 0.4298 * x2\n\t\t+ 0.1191 * x\n\t\t- 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n\tconst mat3 AgXInsetMatrix = mat3(\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n\t);\n\tconst mat3 AgXOutsetMatrix = mat3(\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n\t);\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n\tcolor
|
|
14038
|
+
var tonemapping_pars_fragment = "#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n\tvec3( 0.6274, 0.0691, 0.0164 ),\n\tvec3( 0.3293, 0.9195, 0.0880 ),\n\tvec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n\tvec3 x2 = x * x;\n\tvec3 x4 = x2 * x2;\n\treturn + 15.5 * x4 * x2\n\t\t- 40.14 * x4 * x\n\t\t+ 31.96 * x4\n\t\t- 6.868 * x2 * x\n\t\t+ 0.4298 * x2\n\t\t+ 0.1191 * x\n\t\t- 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n\tconst mat3 AgXInsetMatrix = mat3(\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n\t);\n\tconst mat3 AgXOutsetMatrix = mat3(\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n\t);\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\n\tcolor *= toneMappingExposure;\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n\tcolor = AgXInsetMatrix * color;\n\tcolor = max( color, 1e-10 );\tcolor = log2( color );\n\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n\tcolor = clamp( color, 0.0, 1.0 );\n\tcolor = agxDefaultContrastApprox( color );\n\tcolor = AgXOutsetMatrix * color;\n\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n\tcolor = clamp( color, 0.0, 1.0 );\n\treturn color;\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }";
|
|
14035
14039
|
|
|
14036
14040
|
var transmission_fragment = "#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif";
|
|
14037
14041
|
|
|
@@ -14059,11 +14063,11 @@ const fragment$f = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform fl
|
|
|
14059
14063
|
|
|
14060
14064
|
const vertex$e = "#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}";
|
|
14061
14065
|
|
|
14062
|
-
const fragment$e = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\
|
|
14066
|
+
const fragment$e = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}";
|
|
14063
14067
|
|
|
14064
14068
|
const vertex$d = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}";
|
|
14065
14069
|
|
|
14066
|
-
const fragment$d = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\
|
|
14070
|
+
const fragment$d = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <clipping_planes_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}";
|
|
14067
14071
|
|
|
14068
14072
|
const vertex$c = "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}";
|
|
14069
14073
|
|
|
@@ -14071,39 +14075,39 @@ const fragment$c = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\
|
|
|
14071
14075
|
|
|
14072
14076
|
const vertex$b = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}";
|
|
14073
14077
|
|
|
14074
|
-
const fragment$b = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\
|
|
14078
|
+
const fragment$b = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}";
|
|
14075
14079
|
|
|
14076
14080
|
const vertex$a = "#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinbase_vertex>\n\t\t#include <skinnormal_vertex>\n\t\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}";
|
|
14077
14081
|
|
|
14078
|
-
const fragment$a = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\
|
|
14082
|
+
const fragment$a = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}";
|
|
14079
14083
|
|
|
14080
14084
|
const vertex$9 = "#define LAMBERT\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}";
|
|
14081
14085
|
|
|
14082
|
-
const fragment$9 = "#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_lambert_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\
|
|
14086
|
+
const fragment$9 = "#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_lambert_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_lambert_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}";
|
|
14083
14087
|
|
|
14084
14088
|
const vertex$8 = "#define MATCAP\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}";
|
|
14085
14089
|
|
|
14086
|
-
const fragment$8 = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\
|
|
14090
|
+
const fragment$8 = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}";
|
|
14087
14091
|
|
|
14088
14092
|
const vertex$7 = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}";
|
|
14089
14093
|
|
|
14090
|
-
const fragment$7 = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ),
|
|
14094
|
+
const fragment$7 = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}";
|
|
14091
14095
|
|
|
14092
14096
|
const vertex$6 = "#define PHONG\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}";
|
|
14093
14097
|
|
|
14094
|
-
const fragment$6 = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\
|
|
14098
|
+
const fragment$6 = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}";
|
|
14095
14099
|
|
|
14096
14100
|
const vertex$5 = "#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}";
|
|
14097
14101
|
|
|
14098
|
-
const fragment$5 = "#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\
|
|
14102
|
+
const fragment$5 = "#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}";
|
|
14099
14103
|
|
|
14100
14104
|
const vertex$4 = "#define TOON\nvarying vec3 vViewPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}";
|
|
14101
14105
|
|
|
14102
|
-
const fragment$4 = "#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\
|
|
14106
|
+
const fragment$4 = "#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}";
|
|
14103
14107
|
|
|
14104
14108
|
const vertex$3 = "uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}";
|
|
14105
14109
|
|
|
14106
|
-
const fragment$3 = "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\
|
|
14110
|
+
const fragment$3 = "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}";
|
|
14107
14111
|
|
|
14108
14112
|
const vertex$2 = "#include <common>\n#include <batching_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <batching_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}";
|
|
14109
14113
|
|
|
@@ -14111,7 +14115,7 @@ const fragment$2 = "uniform vec3 color;\nuniform float opacity;\n#include <commo
|
|
|
14111
14115
|
|
|
14112
14116
|
const vertex$1 = "uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}";
|
|
14113
14117
|
|
|
14114
|
-
const fragment$1 = "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\
|
|
14118
|
+
const fragment$1 = "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}";
|
|
14115
14119
|
|
|
14116
14120
|
const ShaderChunk = {
|
|
14117
14121
|
alphahash_fragment: alphahash_fragment,
|
|
@@ -16099,7 +16103,7 @@ function WebGLCubeMaps( renderer ) {
|
|
|
16099
16103
|
|
|
16100
16104
|
if ( image && image.height > 0 ) {
|
|
16101
16105
|
|
|
16102
|
-
const renderTarget = new WebGLCubeRenderTarget( image.height
|
|
16106
|
+
const renderTarget = new WebGLCubeRenderTarget( image.height );
|
|
16103
16107
|
renderTarget.fromEquirectangularTexture( renderer, texture );
|
|
16104
16108
|
cubemaps.set( texture, renderTarget );
|
|
16105
16109
|
|
|
@@ -19595,7 +19599,7 @@ function getToneMappingFunction( functionName, toneMapping ) {
|
|
|
19595
19599
|
function generateExtensions( parameters ) {
|
|
19596
19600
|
|
|
19597
19601
|
const chunks = [
|
|
19598
|
-
( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',
|
|
19602
|
+
( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.alphaToCoverage || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',
|
|
19599
19603
|
( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',
|
|
19600
19604
|
( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',
|
|
19601
19605
|
( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''
|
|
@@ -19608,7 +19612,8 @@ function generateExtensions( parameters ) {
|
|
|
19608
19612
|
function generateVertexExtensions( parameters ) {
|
|
19609
19613
|
|
|
19610
19614
|
const chunks = [
|
|
19611
|
-
parameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : ''
|
|
19615
|
+
parameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',
|
|
19616
|
+
parameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',
|
|
19612
19617
|
];
|
|
19613
19618
|
|
|
19614
19619
|
return chunks.filter( filterEmptyLine ).join( '\n' );
|
|
@@ -19767,7 +19772,30 @@ function loopReplacer( match, start, end, snippet ) {
|
|
|
19767
19772
|
|
|
19768
19773
|
function generatePrecision( parameters ) {
|
|
19769
19774
|
|
|
19770
|
-
let precisionstring =
|
|
19775
|
+
let precisionstring = `precision ${parameters.precision} float;
|
|
19776
|
+
precision ${parameters.precision} int;
|
|
19777
|
+
precision ${parameters.precision} sampler2D;
|
|
19778
|
+
precision ${parameters.precision} samplerCube;
|
|
19779
|
+
`;
|
|
19780
|
+
|
|
19781
|
+
if ( parameters.isWebGL2 ) {
|
|
19782
|
+
|
|
19783
|
+
precisionstring += `precision ${parameters.precision} sampler3D;
|
|
19784
|
+
precision ${parameters.precision} sampler2DArray;
|
|
19785
|
+
precision ${parameters.precision} sampler2DShadow;
|
|
19786
|
+
precision ${parameters.precision} samplerCubeShadow;
|
|
19787
|
+
precision ${parameters.precision} sampler2DArrayShadow;
|
|
19788
|
+
precision ${parameters.precision} isampler2D;
|
|
19789
|
+
precision ${parameters.precision} isampler3D;
|
|
19790
|
+
precision ${parameters.precision} isamplerCube;
|
|
19791
|
+
precision ${parameters.precision} isampler2DArray;
|
|
19792
|
+
precision ${parameters.precision} usampler2D;
|
|
19793
|
+
precision ${parameters.precision} usampler3D;
|
|
19794
|
+
precision ${parameters.precision} usamplerCube;
|
|
19795
|
+
precision ${parameters.precision} usampler2DArray;
|
|
19796
|
+
`;
|
|
19797
|
+
|
|
19798
|
+
}
|
|
19771
19799
|
|
|
19772
19800
|
if ( parameters.precision === 'highp' ) {
|
|
19773
19801
|
|
|
@@ -20198,6 +20226,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
20198
20226
|
parameters.useFog && parameters.fog ? '#define USE_FOG' : '',
|
|
20199
20227
|
parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',
|
|
20200
20228
|
|
|
20229
|
+
parameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',
|
|
20201
20230
|
parameters.map ? '#define USE_MAP' : '',
|
|
20202
20231
|
parameters.matcap ? '#define USE_MATCAP' : '',
|
|
20203
20232
|
parameters.envMap ? '#define USE_ENVMAP' : '',
|
|
@@ -20446,6 +20475,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
20446
20475
|
console.error(
|
|
20447
20476
|
'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
|
|
20448
20477
|
'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\n\n' +
|
|
20478
|
+
'Material Name: ' + self.name + '\n' +
|
|
20479
|
+
'Material Type: ' + self.type + '\n\n' +
|
|
20449
20480
|
'Program Info Log: ' + programLog + '\n' +
|
|
20450
20481
|
vertexErrors + '\n' +
|
|
20451
20482
|
fragmentErrors
|
|
@@ -20710,6 +20741,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
20710
20741
|
|
|
20711
20742
|
const _programLayers = new Layers();
|
|
20712
20743
|
const _customShaders = new WebGLShaderCache();
|
|
20744
|
+
const _activeChannels = new Set();
|
|
20713
20745
|
const programs = [];
|
|
20714
20746
|
|
|
20715
20747
|
const IS_WEBGL2 = capabilities.isWebGL2;
|
|
@@ -20738,6 +20770,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
20738
20770
|
|
|
20739
20771
|
function getChannel( value ) {
|
|
20740
20772
|
|
|
20773
|
+
_activeChannels.add( value );
|
|
20774
|
+
|
|
20741
20775
|
if ( value === 0 ) return 'uv';
|
|
20742
20776
|
|
|
20743
20777
|
return `uv${ value }`;
|
|
@@ -20860,10 +20894,6 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
20860
20894
|
|
|
20861
20895
|
const HAS_EXTENSIONS = !! material.extensions;
|
|
20862
20896
|
|
|
20863
|
-
const HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;
|
|
20864
|
-
const HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;
|
|
20865
|
-
const HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;
|
|
20866
|
-
|
|
20867
20897
|
let toneMapping = NoToneMapping;
|
|
20868
20898
|
|
|
20869
20899
|
if ( material.toneMapped ) {
|
|
@@ -20903,6 +20933,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
20903
20933
|
supportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,
|
|
20904
20934
|
numMultiviewViews: numMultiviewViews,
|
|
20905
20935
|
outputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),
|
|
20936
|
+
alphaToCoverage: !! material.alphaToCoverage,
|
|
20906
20937
|
|
|
20907
20938
|
map: HAS_MAP,
|
|
20908
20939
|
matcap: HAS_MATCAP,
|
|
@@ -20948,7 +20979,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
20948
20979
|
|
|
20949
20980
|
gradientMap: HAS_GRADIENTMAP,
|
|
20950
20981
|
|
|
20951
|
-
opaque: material.transparent === false && material.blending === NormalBlending,
|
|
20982
|
+
opaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,
|
|
20952
20983
|
|
|
20953
20984
|
alphaMap: HAS_ALPHAMAP,
|
|
20954
20985
|
alphaTest: HAS_ALPHATEST,
|
|
@@ -20995,15 +21026,12 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
20995
21026
|
vertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),
|
|
20996
21027
|
vertexColors: material.vertexColors,
|
|
20997
21028
|
vertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,
|
|
20998
|
-
vertexUv1s: HAS_ATTRIBUTE_UV1,
|
|
20999
|
-
vertexUv2s: HAS_ATTRIBUTE_UV2,
|
|
21000
|
-
vertexUv3s: HAS_ATTRIBUTE_UV3,
|
|
21001
21029
|
|
|
21002
21030
|
pointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),
|
|
21003
21031
|
|
|
21004
21032
|
fog: !! fog,
|
|
21005
21033
|
useFog: material.fog === true,
|
|
21006
|
-
fogExp2: ( fog && fog.isFogExp2 ),
|
|
21034
|
+
fogExp2: ( !! fog && fog.isFogExp2 ),
|
|
21007
21035
|
|
|
21008
21036
|
flatShading: material.flatShading === true,
|
|
21009
21037
|
|
|
@@ -21059,7 +21087,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
21059
21087
|
extensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,
|
|
21060
21088
|
extensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,
|
|
21061
21089
|
extensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,
|
|
21062
|
-
extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance && extensions.has( 'WEBGL_clip_cull_distance' ),
|
|
21090
|
+
extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),
|
|
21091
|
+
extensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has( 'WEBGL_multi_draw' ),
|
|
21063
21092
|
|
|
21064
21093
|
rendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),
|
|
21065
21094
|
rendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),
|
|
@@ -21070,6 +21099,14 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
21070
21099
|
|
|
21071
21100
|
};
|
|
21072
21101
|
|
|
21102
|
+
// the usage of getChannel() determines the active texture channels for this shader
|
|
21103
|
+
|
|
21104
|
+
parameters.vertexUv1s = _activeChannels.has( 1 );
|
|
21105
|
+
parameters.vertexUv2s = _activeChannels.has( 2 );
|
|
21106
|
+
parameters.vertexUv3s = _activeChannels.has( 3 );
|
|
21107
|
+
|
|
21108
|
+
_activeChannels.clear();
|
|
21109
|
+
|
|
21073
21110
|
return parameters;
|
|
21074
21111
|
|
|
21075
21112
|
}
|
|
@@ -21255,8 +21292,10 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
|
|
|
21255
21292
|
_programLayers.enable( 18 );
|
|
21256
21293
|
if ( parameters.decodeVideoTexture )
|
|
21257
21294
|
_programLayers.enable( 19 );
|
|
21258
|
-
if ( parameters.
|
|
21295
|
+
if ( parameters.alphaToCoverage )
|
|
21259
21296
|
_programLayers.enable( 20 );
|
|
21297
|
+
if ( parameters.numMultiviewViews )
|
|
21298
|
+
_programLayers.enable( 21 );
|
|
21260
21299
|
|
|
21261
21300
|
array.push( _programLayers.mask );
|
|
21262
21301
|
|
|
@@ -24717,6 +24756,14 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
24717
24756
|
|
|
24718
24757
|
function setTextureParameters( textureType, texture, supportsMips ) {
|
|
24719
24758
|
|
|
24759
|
+
if ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&
|
|
24760
|
+
( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||
|
|
24761
|
+
texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {
|
|
24762
|
+
|
|
24763
|
+
console.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
|
|
24764
|
+
|
|
24765
|
+
}
|
|
24766
|
+
|
|
24720
24767
|
if ( supportsMips ) {
|
|
24721
24768
|
|
|
24722
24769
|
_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );
|
|
@@ -24947,6 +24994,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
24947
24994
|
|
|
24948
24995
|
const useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format );
|
|
24949
24996
|
const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
|
|
24997
|
+
const dataReady = source.dataReady;
|
|
24950
24998
|
const levels = getMipLevels( texture, image, supportsMips );
|
|
24951
24999
|
|
|
24952
25000
|
if ( texture.isDepthTexture ) {
|
|
@@ -25059,7 +25107,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25059
25107
|
|
|
25060
25108
|
if ( useTexStorage ) {
|
|
25061
25109
|
|
|
25062
|
-
|
|
25110
|
+
if ( dataReady ) {
|
|
25111
|
+
|
|
25112
|
+
state.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );
|
|
25113
|
+
|
|
25114
|
+
}
|
|
25063
25115
|
|
|
25064
25116
|
} else {
|
|
25065
25117
|
|
|
@@ -25081,7 +25133,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25081
25133
|
|
|
25082
25134
|
}
|
|
25083
25135
|
|
|
25084
|
-
|
|
25136
|
+
if ( dataReady ) {
|
|
25137
|
+
|
|
25138
|
+
state.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );
|
|
25139
|
+
|
|
25140
|
+
}
|
|
25085
25141
|
|
|
25086
25142
|
} else {
|
|
25087
25143
|
|
|
@@ -25111,7 +25167,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25111
25167
|
|
|
25112
25168
|
if ( useTexStorage ) {
|
|
25113
25169
|
|
|
25114
|
-
|
|
25170
|
+
if ( dataReady ) {
|
|
25171
|
+
|
|
25172
|
+
state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );
|
|
25173
|
+
|
|
25174
|
+
}
|
|
25115
25175
|
|
|
25116
25176
|
} else {
|
|
25117
25177
|
|
|
@@ -25129,7 +25189,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25129
25189
|
|
|
25130
25190
|
if ( useTexStorage ) {
|
|
25131
25191
|
|
|
25132
|
-
|
|
25192
|
+
if ( dataReady ) {
|
|
25193
|
+
|
|
25194
|
+
state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );
|
|
25195
|
+
|
|
25196
|
+
}
|
|
25133
25197
|
|
|
25134
25198
|
} else {
|
|
25135
25199
|
|
|
@@ -25159,7 +25223,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25159
25223
|
|
|
25160
25224
|
if ( useTexStorage ) {
|
|
25161
25225
|
|
|
25162
|
-
|
|
25226
|
+
if ( dataReady ) {
|
|
25227
|
+
|
|
25228
|
+
state.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );
|
|
25229
|
+
|
|
25230
|
+
}
|
|
25163
25231
|
|
|
25164
25232
|
} else {
|
|
25165
25233
|
|
|
@@ -25177,7 +25245,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25177
25245
|
|
|
25178
25246
|
if ( useTexStorage ) {
|
|
25179
25247
|
|
|
25180
|
-
|
|
25248
|
+
if ( dataReady ) {
|
|
25249
|
+
|
|
25250
|
+
state.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );
|
|
25251
|
+
|
|
25252
|
+
}
|
|
25181
25253
|
|
|
25182
25254
|
} else {
|
|
25183
25255
|
|
|
@@ -25201,7 +25273,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25201
25273
|
|
|
25202
25274
|
}
|
|
25203
25275
|
|
|
25204
|
-
|
|
25276
|
+
if ( dataReady ) {
|
|
25277
|
+
|
|
25278
|
+
state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );
|
|
25279
|
+
|
|
25280
|
+
}
|
|
25205
25281
|
|
|
25206
25282
|
} else {
|
|
25207
25283
|
|
|
@@ -25219,7 +25295,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25219
25295
|
|
|
25220
25296
|
}
|
|
25221
25297
|
|
|
25222
|
-
|
|
25298
|
+
if ( dataReady ) {
|
|
25299
|
+
|
|
25300
|
+
state.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );
|
|
25301
|
+
|
|
25302
|
+
}
|
|
25223
25303
|
|
|
25224
25304
|
} else {
|
|
25225
25305
|
|
|
@@ -25274,7 +25354,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25274
25354
|
|
|
25275
25355
|
if ( useTexStorage ) {
|
|
25276
25356
|
|
|
25277
|
-
|
|
25357
|
+
if ( dataReady ) {
|
|
25358
|
+
|
|
25359
|
+
state.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );
|
|
25360
|
+
|
|
25361
|
+
}
|
|
25278
25362
|
|
|
25279
25363
|
} else {
|
|
25280
25364
|
|
|
@@ -25296,7 +25380,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25296
25380
|
|
|
25297
25381
|
}
|
|
25298
25382
|
|
|
25299
|
-
|
|
25383
|
+
if ( dataReady ) {
|
|
25384
|
+
|
|
25385
|
+
state.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );
|
|
25386
|
+
|
|
25387
|
+
}
|
|
25300
25388
|
|
|
25301
25389
|
} else {
|
|
25302
25390
|
|
|
@@ -25378,6 +25466,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25378
25466
|
|
|
25379
25467
|
const useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );
|
|
25380
25468
|
const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
|
|
25469
|
+
const dataReady = source.dataReady;
|
|
25381
25470
|
let levels = getMipLevels( texture, image, supportsMips );
|
|
25382
25471
|
|
|
25383
25472
|
setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );
|
|
@@ -25406,7 +25495,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25406
25495
|
|
|
25407
25496
|
if ( useTexStorage ) {
|
|
25408
25497
|
|
|
25409
|
-
|
|
25498
|
+
if ( dataReady ) {
|
|
25499
|
+
|
|
25500
|
+
state.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );
|
|
25501
|
+
|
|
25502
|
+
}
|
|
25410
25503
|
|
|
25411
25504
|
} else {
|
|
25412
25505
|
|
|
@@ -25424,7 +25517,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25424
25517
|
|
|
25425
25518
|
if ( useTexStorage ) {
|
|
25426
25519
|
|
|
25427
|
-
|
|
25520
|
+
if ( dataReady ) {
|
|
25521
|
+
|
|
25522
|
+
state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );
|
|
25523
|
+
|
|
25524
|
+
}
|
|
25428
25525
|
|
|
25429
25526
|
} else {
|
|
25430
25527
|
|
|
@@ -25460,7 +25557,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25460
25557
|
|
|
25461
25558
|
if ( useTexStorage ) {
|
|
25462
25559
|
|
|
25463
|
-
|
|
25560
|
+
if ( dataReady ) {
|
|
25561
|
+
|
|
25562
|
+
state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );
|
|
25563
|
+
|
|
25564
|
+
}
|
|
25464
25565
|
|
|
25465
25566
|
} else {
|
|
25466
25567
|
|
|
@@ -25475,7 +25576,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25475
25576
|
|
|
25476
25577
|
if ( useTexStorage ) {
|
|
25477
25578
|
|
|
25478
|
-
|
|
25579
|
+
if ( dataReady ) {
|
|
25580
|
+
|
|
25581
|
+
state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );
|
|
25582
|
+
|
|
25583
|
+
}
|
|
25479
25584
|
|
|
25480
25585
|
} else {
|
|
25481
25586
|
|
|
@@ -25489,7 +25594,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25489
25594
|
|
|
25490
25595
|
if ( useTexStorage ) {
|
|
25491
25596
|
|
|
25492
|
-
|
|
25597
|
+
if ( dataReady ) {
|
|
25598
|
+
|
|
25599
|
+
state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );
|
|
25600
|
+
|
|
25601
|
+
}
|
|
25493
25602
|
|
|
25494
25603
|
} else {
|
|
25495
25604
|
|
|
@@ -25503,7 +25612,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
25503
25612
|
|
|
25504
25613
|
if ( useTexStorage ) {
|
|
25505
25614
|
|
|
25506
|
-
|
|
25615
|
+
if ( dataReady ) {
|
|
25616
|
+
|
|
25617
|
+
state.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );
|
|
25618
|
+
|
|
25619
|
+
}
|
|
25507
25620
|
|
|
25508
25621
|
} else {
|
|
25509
25622
|
|
|
@@ -27650,6 +27763,105 @@ class WebXRController {
|
|
|
27650
27763
|
|
|
27651
27764
|
}
|
|
27652
27765
|
|
|
27766
|
+
const _occlusion_vertex = `
|
|
27767
|
+
void main() {
|
|
27768
|
+
|
|
27769
|
+
gl_Position = vec4( position, 1.0 );
|
|
27770
|
+
|
|
27771
|
+
}`;
|
|
27772
|
+
|
|
27773
|
+
const _occlusion_fragment = `
|
|
27774
|
+
uniform sampler2DArray depthColor;
|
|
27775
|
+
uniform float depthWidth;
|
|
27776
|
+
uniform float depthHeight;
|
|
27777
|
+
|
|
27778
|
+
void main() {
|
|
27779
|
+
|
|
27780
|
+
vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );
|
|
27781
|
+
|
|
27782
|
+
if ( coord.x >= 1.0 ) {
|
|
27783
|
+
|
|
27784
|
+
gl_FragDepthEXT = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;
|
|
27785
|
+
|
|
27786
|
+
} else {
|
|
27787
|
+
|
|
27788
|
+
gl_FragDepthEXT = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;
|
|
27789
|
+
|
|
27790
|
+
}
|
|
27791
|
+
|
|
27792
|
+
}`;
|
|
27793
|
+
|
|
27794
|
+
class WebXRDepthSensing {
|
|
27795
|
+
|
|
27796
|
+
constructor() {
|
|
27797
|
+
|
|
27798
|
+
this.texture = null;
|
|
27799
|
+
this.mesh = null;
|
|
27800
|
+
|
|
27801
|
+
this.depthNear = 0;
|
|
27802
|
+
this.depthFar = 0;
|
|
27803
|
+
|
|
27804
|
+
}
|
|
27805
|
+
|
|
27806
|
+
init( renderer, depthData, renderState ) {
|
|
27807
|
+
|
|
27808
|
+
if ( this.texture === null ) {
|
|
27809
|
+
|
|
27810
|
+
const texture = new Texture();
|
|
27811
|
+
|
|
27812
|
+
const texProps = renderer.properties.get( texture );
|
|
27813
|
+
texProps.__webglTexture = depthData.texture;
|
|
27814
|
+
|
|
27815
|
+
if ( ( depthData.depthNear != renderState.depthNear ) || ( depthData.depthFar != renderState.depthFar ) ) {
|
|
27816
|
+
|
|
27817
|
+
this.depthNear = depthData.depthNear;
|
|
27818
|
+
this.depthFar = depthData.depthFar;
|
|
27819
|
+
|
|
27820
|
+
}
|
|
27821
|
+
|
|
27822
|
+
this.texture = texture;
|
|
27823
|
+
|
|
27824
|
+
}
|
|
27825
|
+
|
|
27826
|
+
}
|
|
27827
|
+
|
|
27828
|
+
render( renderer, cameraXR ) {
|
|
27829
|
+
|
|
27830
|
+
if ( this.texture !== null ) {
|
|
27831
|
+
|
|
27832
|
+
if ( this.mesh === null ) {
|
|
27833
|
+
|
|
27834
|
+
const viewport = cameraXR.cameras[ 0 ].viewport;
|
|
27835
|
+
const material = new ShaderMaterial( {
|
|
27836
|
+
extensions: { fragDepth: true },
|
|
27837
|
+
vertexShader: _occlusion_vertex,
|
|
27838
|
+
fragmentShader: _occlusion_fragment,
|
|
27839
|
+
uniforms: {
|
|
27840
|
+
depthColor: { value: this.texture },
|
|
27841
|
+
depthWidth: { value: viewport.z },
|
|
27842
|
+
depthHeight: { value: viewport.w }
|
|
27843
|
+
}
|
|
27844
|
+
} );
|
|
27845
|
+
|
|
27846
|
+
this.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material );
|
|
27847
|
+
|
|
27848
|
+
}
|
|
27849
|
+
|
|
27850
|
+
renderer.render( this.mesh, cameraXR );
|
|
27851
|
+
|
|
27852
|
+
}
|
|
27853
|
+
|
|
27854
|
+
}
|
|
27855
|
+
|
|
27856
|
+
reset() {
|
|
27857
|
+
|
|
27858
|
+
this.texture = null;
|
|
27859
|
+
this.mesh = null;
|
|
27860
|
+
|
|
27861
|
+
}
|
|
27862
|
+
|
|
27863
|
+
}
|
|
27864
|
+
|
|
27653
27865
|
class WebXRManager extends EventDispatcher {
|
|
27654
27866
|
|
|
27655
27867
|
constructor( renderer, gl, extensions, useMultiview ) {
|
|
@@ -27676,7 +27888,10 @@ class WebXRManager extends EventDispatcher {
|
|
|
27676
27888
|
let glProjLayer = null;
|
|
27677
27889
|
let glBaseLayer = null;
|
|
27678
27890
|
let xrFrame = null;
|
|
27891
|
+
|
|
27892
|
+
const depthSensing = new WebXRDepthSensing();
|
|
27679
27893
|
const attributes = gl.getContextAttributes();
|
|
27894
|
+
|
|
27680
27895
|
let initialRenderTarget = null;
|
|
27681
27896
|
let newRenderTarget = null;
|
|
27682
27897
|
|
|
@@ -27813,6 +28028,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
27813
28028
|
_currentDepthNear = null;
|
|
27814
28029
|
_currentDepthFar = null;
|
|
27815
28030
|
|
|
28031
|
+
depthSensing.reset();
|
|
28032
|
+
|
|
27816
28033
|
// restore framebuffer/rendering state
|
|
27817
28034
|
|
|
27818
28035
|
renderer.setRenderTarget( initialRenderTarget );
|
|
@@ -28220,6 +28437,13 @@ class WebXRManager extends EventDispatcher {
|
|
|
28220
28437
|
|
|
28221
28438
|
if ( session === null ) return;
|
|
28222
28439
|
|
|
28440
|
+
if ( depthSensing.texture !== null ) {
|
|
28441
|
+
|
|
28442
|
+
camera.near = depthSensing.depthNear;
|
|
28443
|
+
camera.far = depthSensing.depthFar;
|
|
28444
|
+
|
|
28445
|
+
}
|
|
28446
|
+
|
|
28223
28447
|
cameraXR.near = cameraR.near = cameraL.near = camera.near;
|
|
28224
28448
|
cameraXR.far = cameraR.far = cameraL.far = camera.far;
|
|
28225
28449
|
|
|
@@ -28235,6 +28459,15 @@ class WebXRManager extends EventDispatcher {
|
|
|
28235
28459
|
_currentDepthNear = cameraXR.near;
|
|
28236
28460
|
_currentDepthFar = cameraXR.far;
|
|
28237
28461
|
|
|
28462
|
+
cameraL.near = _currentDepthNear;
|
|
28463
|
+
cameraL.far = _currentDepthFar;
|
|
28464
|
+
cameraR.near = _currentDepthNear;
|
|
28465
|
+
cameraR.far = _currentDepthFar;
|
|
28466
|
+
|
|
28467
|
+
cameraL.updateProjectionMatrix();
|
|
28468
|
+
cameraR.updateProjectionMatrix();
|
|
28469
|
+
camera.updateProjectionMatrix();
|
|
28470
|
+
|
|
28238
28471
|
}
|
|
28239
28472
|
|
|
28240
28473
|
const cameras = cameraXR.cameras;
|
|
@@ -28337,6 +28570,12 @@ class WebXRManager extends EventDispatcher {
|
|
|
28337
28570
|
|
|
28338
28571
|
};
|
|
28339
28572
|
|
|
28573
|
+
this.hasDepthSensing = function () {
|
|
28574
|
+
|
|
28575
|
+
return depthSensing.texture !== null;
|
|
28576
|
+
|
|
28577
|
+
};
|
|
28578
|
+
|
|
28340
28579
|
// Animation Loop
|
|
28341
28580
|
|
|
28342
28581
|
let onAnimationFrameCallback = null;
|
|
@@ -28429,6 +28668,22 @@ class WebXRManager extends EventDispatcher {
|
|
|
28429
28668
|
|
|
28430
28669
|
}
|
|
28431
28670
|
|
|
28671
|
+
//
|
|
28672
|
+
|
|
28673
|
+
const enabledFeatures = session.enabledFeatures;
|
|
28674
|
+
|
|
28675
|
+
if ( enabledFeatures && enabledFeatures.includes( 'depth-sensing' ) ) {
|
|
28676
|
+
|
|
28677
|
+
const depthData = glBinding.getDepthInformation( views[ 0 ] );
|
|
28678
|
+
|
|
28679
|
+
if ( depthData && depthData.isValid && depthData.texture ) {
|
|
28680
|
+
|
|
28681
|
+
depthSensing.init( renderer, depthData, session.renderState );
|
|
28682
|
+
|
|
28683
|
+
}
|
|
28684
|
+
|
|
28685
|
+
}
|
|
28686
|
+
|
|
28432
28687
|
}
|
|
28433
28688
|
|
|
28434
28689
|
//
|
|
@@ -28446,6 +28701,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
28446
28701
|
|
|
28447
28702
|
}
|
|
28448
28703
|
|
|
28704
|
+
depthSensing.render( renderer, cameraXR );
|
|
28705
|
+
|
|
28449
28706
|
if ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );
|
|
28450
28707
|
|
|
28451
28708
|
if ( frame.detectedPlanes ) {
|
|
@@ -30576,7 +30833,11 @@ class WebGLRenderer {
|
|
|
30576
30833
|
|
|
30577
30834
|
//
|
|
30578
30835
|
|
|
30579
|
-
|
|
30836
|
+
if ( xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false ) {
|
|
30837
|
+
|
|
30838
|
+
background.render( currentRenderList, scene );
|
|
30839
|
+
|
|
30840
|
+
}
|
|
30580
30841
|
|
|
30581
30842
|
// render scene
|
|
30582
30843
|
|
|
@@ -32194,7 +32455,7 @@ class InterleavedBuffer {
|
|
|
32194
32455
|
|
|
32195
32456
|
get updateRange() {
|
|
32196
32457
|
|
|
32197
|
-
|
|
32458
|
+
warnOnce( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159
|
|
32198
32459
|
return this._updateRange;
|
|
32199
32460
|
|
|
32200
32461
|
}
|
|
@@ -32409,6 +32670,26 @@ class InterleavedBufferAttribute {
|
|
|
32409
32670
|
|
|
32410
32671
|
}
|
|
32411
32672
|
|
|
32673
|
+
getComponent( index, component ) {
|
|
32674
|
+
|
|
32675
|
+
let value = this.array[ index * this.data.stride + this.offset + component ];
|
|
32676
|
+
|
|
32677
|
+
if ( this.normalized ) value = denormalize( value, this.array );
|
|
32678
|
+
|
|
32679
|
+
return value;
|
|
32680
|
+
|
|
32681
|
+
}
|
|
32682
|
+
|
|
32683
|
+
setComponent( index, component, value ) {
|
|
32684
|
+
|
|
32685
|
+
if ( this.normalized ) value = normalize( value, this.array );
|
|
32686
|
+
|
|
32687
|
+
this.data.array[ index * this.data.stride + this.offset + component ] = value;
|
|
32688
|
+
|
|
32689
|
+
return this;
|
|
32690
|
+
|
|
32691
|
+
}
|
|
32692
|
+
|
|
32412
32693
|
setX( index, x ) {
|
|
32413
32694
|
|
|
32414
32695
|
if ( this.normalized ) x = normalize( x, this.array );
|
|
@@ -33324,14 +33605,6 @@ class SkinnedMesh extends Mesh {
|
|
|
33324
33605
|
|
|
33325
33606
|
}
|
|
33326
33607
|
|
|
33327
|
-
boneTransform( index, vector ) { // @deprecated, r151
|
|
33328
|
-
|
|
33329
|
-
console.warn( 'THREE.SkinnedMesh: .boneTransform() was renamed to .applyBoneTransform() in r151.' );
|
|
33330
|
-
return this.applyBoneTransform( index, vector );
|
|
33331
|
-
|
|
33332
|
-
}
|
|
33333
|
-
|
|
33334
|
-
|
|
33335
33608
|
}
|
|
33336
33609
|
|
|
33337
33610
|
class Bone extends Object3D {
|
|
@@ -34464,7 +34737,7 @@ class BatchedMesh extends Mesh {
|
|
|
34464
34737
|
const active = this._active;
|
|
34465
34738
|
if ( active[ id ] === false ) {
|
|
34466
34739
|
|
|
34467
|
-
return
|
|
34740
|
+
return null;
|
|
34468
34741
|
|
|
34469
34742
|
}
|
|
34470
34743
|
|
|
@@ -34507,7 +34780,7 @@ class BatchedMesh extends Mesh {
|
|
|
34507
34780
|
const active = this._active;
|
|
34508
34781
|
if ( active[ id ] === false ) {
|
|
34509
34782
|
|
|
34510
|
-
return
|
|
34783
|
+
return null;
|
|
34511
34784
|
|
|
34512
34785
|
}
|
|
34513
34786
|
|
|
@@ -34758,6 +35031,7 @@ class BatchedMesh extends Mesh {
|
|
|
34758
35031
|
const index = geometry.getIndex();
|
|
34759
35032
|
const bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;
|
|
34760
35033
|
|
|
35034
|
+
const active = this._active;
|
|
34761
35035
|
const visibility = this._visibility;
|
|
34762
35036
|
const multiDrawStarts = this._multiDrawStarts;
|
|
34763
35037
|
const multiDrawCounts = this._multiDrawCounts;
|
|
@@ -34772,7 +35046,7 @@ class BatchedMesh extends Mesh {
|
|
|
34772
35046
|
.multiply( this.matrixWorld );
|
|
34773
35047
|
_frustum.setFromProjectionMatrix(
|
|
34774
35048
|
_projScreenMatrix$2,
|
|
34775
|
-
renderer.
|
|
35049
|
+
renderer.coordinateSystem
|
|
34776
35050
|
);
|
|
34777
35051
|
|
|
34778
35052
|
}
|
|
@@ -34786,7 +35060,7 @@ class BatchedMesh extends Mesh {
|
|
|
34786
35060
|
|
|
34787
35061
|
for ( let i = 0, l = visibility.length; i < l; i ++ ) {
|
|
34788
35062
|
|
|
34789
|
-
if ( visibility[ i ] ) {
|
|
35063
|
+
if ( visibility[ i ] && active[ i ] ) {
|
|
34790
35064
|
|
|
34791
35065
|
// get the bounds in world space
|
|
34792
35066
|
this.getMatrixAt( i, _matrix );
|
|
@@ -34840,7 +35114,7 @@ class BatchedMesh extends Mesh {
|
|
|
34840
35114
|
|
|
34841
35115
|
for ( let i = 0, l = visibility.length; i < l; i ++ ) {
|
|
34842
35116
|
|
|
34843
|
-
if ( visibility[ i ] ) {
|
|
35117
|
+
if ( visibility[ i ] && active[ i ] ) {
|
|
34844
35118
|
|
|
34845
35119
|
// determine whether the batched geometry is within the frustum
|
|
34846
35120
|
let culled = false;
|
|
@@ -48616,9 +48890,7 @@ class Audio extends Object3D {
|
|
|
48616
48890
|
|
|
48617
48891
|
this.detune = value;
|
|
48618
48892
|
|
|
48619
|
-
if ( this.source.detune
|
|
48620
|
-
|
|
48621
|
-
if ( this.isPlaying === true ) {
|
|
48893
|
+
if ( this.isPlaying === true && this.source.detune !== undefined ) {
|
|
48622
48894
|
|
|
48623
48895
|
this.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );
|
|
48624
48896
|
|
|
@@ -54469,7 +54741,6 @@ exports.TriangleFanDrawMode = TriangleFanDrawMode;
|
|
|
54469
54741
|
exports.TriangleStripDrawMode = TriangleStripDrawMode;
|
|
54470
54742
|
exports.TrianglesDrawMode = TrianglesDrawMode;
|
|
54471
54743
|
exports.TubeGeometry = TubeGeometry;
|
|
54472
|
-
exports.TwoPassDoubleSide = TwoPassDoubleSide;
|
|
54473
54744
|
exports.UVMapping = UVMapping;
|
|
54474
54745
|
exports.Uint16BufferAttribute = Uint16BufferAttribute;
|
|
54475
54746
|
exports.Uint32BufferAttribute = Uint32BufferAttribute;
|