globe.gl 2.28.4 → 2.28.6
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/dist/globe.gl.js +742 -371
- package/dist/globe.gl.js.map +1 -1
- package/dist/globe.gl.min.js +5 -5
- package/dist/globe.gl.mjs +1 -1
- package/package.json +11 -11
package/dist/globe.gl.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Version 2.28.
|
|
1
|
+
// Version 2.28.6 globe.gl - https://github.com/vasturiano/globe.gl
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(factory) :
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
* Copyright 2010-2023 Three.js Authors
|
|
143
143
|
* SPDX-License-Identifier: MIT
|
|
144
144
|
*/
|
|
145
|
-
const REVISION = '
|
|
145
|
+
const REVISION = '154';
|
|
146
146
|
|
|
147
147
|
const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
|
|
148
148
|
const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
|
|
@@ -283,11 +283,23 @@
|
|
|
283
283
|
const KeepStencilOp = 7680;
|
|
284
284
|
const AlwaysStencilFunc = 519;
|
|
285
285
|
|
|
286
|
+
const NeverCompare = 512;
|
|
287
|
+
const LessCompare = 513;
|
|
288
|
+
const EqualCompare = 514;
|
|
289
|
+
const LessEqualCompare = 515;
|
|
290
|
+
const GreaterCompare = 516;
|
|
291
|
+
const NotEqualCompare = 517;
|
|
292
|
+
const GreaterEqualCompare = 518;
|
|
293
|
+
const AlwaysCompare = 519;
|
|
294
|
+
|
|
286
295
|
const StaticDrawUsage = 35044;
|
|
287
296
|
const GLSL3 = '300 es';
|
|
288
297
|
|
|
289
298
|
const _SRGBAFormat = 1035; // fallback for WebGL 1
|
|
290
299
|
|
|
300
|
+
const WebGLCoordinateSystem = 2000;
|
|
301
|
+
const WebGPUCoordinateSystem = 2001;
|
|
302
|
+
|
|
291
303
|
/**
|
|
292
304
|
* https://github.com/mrdoob/eventdispatcher.js/
|
|
293
305
|
*/
|
|
@@ -610,6 +622,10 @@
|
|
|
610
622
|
|
|
611
623
|
return value;
|
|
612
624
|
|
|
625
|
+
case Uint32Array:
|
|
626
|
+
|
|
627
|
+
return value / 4294967295.0;
|
|
628
|
+
|
|
613
629
|
case Uint16Array:
|
|
614
630
|
|
|
615
631
|
return value / 65535.0;
|
|
@@ -618,6 +634,10 @@
|
|
|
618
634
|
|
|
619
635
|
return value / 255.0;
|
|
620
636
|
|
|
637
|
+
case Int32Array:
|
|
638
|
+
|
|
639
|
+
return Math.max( value / 2147483647.0, - 1.0 );
|
|
640
|
+
|
|
621
641
|
case Int16Array:
|
|
622
642
|
|
|
623
643
|
return Math.max( value / 32767.0, - 1.0 );
|
|
@@ -642,6 +662,10 @@
|
|
|
642
662
|
|
|
643
663
|
return value;
|
|
644
664
|
|
|
665
|
+
case Uint32Array:
|
|
666
|
+
|
|
667
|
+
return Math.round( value * 4294967295.0 );
|
|
668
|
+
|
|
645
669
|
case Uint16Array:
|
|
646
670
|
|
|
647
671
|
return Math.round( value * 65535.0 );
|
|
@@ -650,6 +674,10 @@
|
|
|
650
674
|
|
|
651
675
|
return Math.round( value * 255.0 );
|
|
652
676
|
|
|
677
|
+
case Int32Array:
|
|
678
|
+
|
|
679
|
+
return Math.round( value * 2147483647.0 );
|
|
680
|
+
|
|
653
681
|
case Int16Array:
|
|
654
682
|
|
|
655
683
|
return Math.round( value * 32767.0 );
|
|
@@ -1172,7 +1200,7 @@
|
|
|
1172
1200
|
|
|
1173
1201
|
class Matrix3 {
|
|
1174
1202
|
|
|
1175
|
-
constructor() {
|
|
1203
|
+
constructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {
|
|
1176
1204
|
|
|
1177
1205
|
Matrix3.prototype.isMatrix3 = true;
|
|
1178
1206
|
|
|
@@ -1184,6 +1212,12 @@
|
|
|
1184
1212
|
|
|
1185
1213
|
];
|
|
1186
1214
|
|
|
1215
|
+
if ( n11 !== undefined ) {
|
|
1216
|
+
|
|
1217
|
+
this.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );
|
|
1218
|
+
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1187
1221
|
}
|
|
1188
1222
|
|
|
1189
1223
|
set( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {
|
|
@@ -1433,13 +1467,27 @@
|
|
|
1433
1467
|
|
|
1434
1468
|
makeTranslation( x, y ) {
|
|
1435
1469
|
|
|
1436
|
-
|
|
1470
|
+
if ( x.isVector2 ) {
|
|
1437
1471
|
|
|
1438
|
-
|
|
1439
|
-
0, 1, y,
|
|
1440
|
-
0, 0, 1
|
|
1472
|
+
this.set(
|
|
1441
1473
|
|
|
1442
|
-
|
|
1474
|
+
1, 0, x.x,
|
|
1475
|
+
0, 1, x.y,
|
|
1476
|
+
0, 0, 1
|
|
1477
|
+
|
|
1478
|
+
);
|
|
1479
|
+
|
|
1480
|
+
} else {
|
|
1481
|
+
|
|
1482
|
+
this.set(
|
|
1483
|
+
|
|
1484
|
+
1, 0, x,
|
|
1485
|
+
0, 1, y,
|
|
1486
|
+
0, 0, 1
|
|
1487
|
+
|
|
1488
|
+
);
|
|
1489
|
+
|
|
1490
|
+
}
|
|
1443
1491
|
|
|
1444
1492
|
return this;
|
|
1445
1493
|
|
|
@@ -1825,12 +1873,16 @@
|
|
|
1825
1873
|
|
|
1826
1874
|
}
|
|
1827
1875
|
|
|
1876
|
+
let sourceId = 0;
|
|
1877
|
+
|
|
1828
1878
|
class Source {
|
|
1829
1879
|
|
|
1830
1880
|
constructor( data = null ) {
|
|
1831
1881
|
|
|
1832
1882
|
this.isSource = true;
|
|
1833
1883
|
|
|
1884
|
+
Object.defineProperty( this, 'id', { value: sourceId ++ } );
|
|
1885
|
+
|
|
1834
1886
|
this.uuid = generateUUID();
|
|
1835
1887
|
|
|
1836
1888
|
this.data = data;
|
|
@@ -2094,7 +2146,7 @@
|
|
|
2094
2146
|
const output = {
|
|
2095
2147
|
|
|
2096
2148
|
metadata: {
|
|
2097
|
-
version: 4.
|
|
2149
|
+
version: 4.6,
|
|
2098
2150
|
type: 'Texture',
|
|
2099
2151
|
generator: 'Texture.toJSON'
|
|
2100
2152
|
},
|
|
@@ -5718,7 +5770,7 @@
|
|
|
5718
5770
|
|
|
5719
5771
|
class Matrix4 {
|
|
5720
5772
|
|
|
5721
|
-
constructor() {
|
|
5773
|
+
constructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {
|
|
5722
5774
|
|
|
5723
5775
|
Matrix4.prototype.isMatrix4 = true;
|
|
5724
5776
|
|
|
@@ -5731,6 +5783,12 @@
|
|
|
5731
5783
|
|
|
5732
5784
|
];
|
|
5733
5785
|
|
|
5786
|
+
if ( n11 !== undefined ) {
|
|
5787
|
+
|
|
5788
|
+
this.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );
|
|
5789
|
+
|
|
5790
|
+
}
|
|
5791
|
+
|
|
5734
5792
|
}
|
|
5735
5793
|
|
|
5736
5794
|
set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {
|
|
@@ -6270,14 +6328,29 @@
|
|
|
6270
6328
|
|
|
6271
6329
|
makeTranslation( x, y, z ) {
|
|
6272
6330
|
|
|
6273
|
-
|
|
6331
|
+
if ( x.isVector3 ) {
|
|
6274
6332
|
|
|
6275
|
-
|
|
6276
|
-
0, 1, 0, y,
|
|
6277
|
-
0, 0, 1, z,
|
|
6278
|
-
0, 0, 0, 1
|
|
6333
|
+
this.set(
|
|
6279
6334
|
|
|
6280
|
-
|
|
6335
|
+
1, 0, 0, x.x,
|
|
6336
|
+
0, 1, 0, x.y,
|
|
6337
|
+
0, 0, 1, x.z,
|
|
6338
|
+
0, 0, 0, 1
|
|
6339
|
+
|
|
6340
|
+
);
|
|
6341
|
+
|
|
6342
|
+
} else {
|
|
6343
|
+
|
|
6344
|
+
this.set(
|
|
6345
|
+
|
|
6346
|
+
1, 0, 0, x,
|
|
6347
|
+
0, 1, 0, y,
|
|
6348
|
+
0, 0, 1, z,
|
|
6349
|
+
0, 0, 0, 1
|
|
6350
|
+
|
|
6351
|
+
);
|
|
6352
|
+
|
|
6353
|
+
}
|
|
6281
6354
|
|
|
6282
6355
|
return this;
|
|
6283
6356
|
|
|
@@ -6468,7 +6541,7 @@
|
|
|
6468
6541
|
|
|
6469
6542
|
}
|
|
6470
6543
|
|
|
6471
|
-
makePerspective( left, right, top, bottom, near, far ) {
|
|
6544
|
+
makePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {
|
|
6472
6545
|
|
|
6473
6546
|
const te = this.elements;
|
|
6474
6547
|
const x = 2 * near / ( right - left );
|
|
@@ -6476,19 +6549,35 @@
|
|
|
6476
6549
|
|
|
6477
6550
|
const a = ( right + left ) / ( right - left );
|
|
6478
6551
|
const b = ( top + bottom ) / ( top - bottom );
|
|
6479
|
-
const c = - ( far + near ) / ( far - near );
|
|
6480
|
-
const d = - 2 * far * near / ( far - near );
|
|
6481
6552
|
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
|
|
6553
|
+
let c, d;
|
|
6554
|
+
|
|
6555
|
+
if ( coordinateSystem === WebGLCoordinateSystem ) {
|
|
6556
|
+
|
|
6557
|
+
c = - ( far + near ) / ( far - near );
|
|
6558
|
+
d = ( - 2 * far * near ) / ( far - near );
|
|
6559
|
+
|
|
6560
|
+
} else if ( coordinateSystem === WebGPUCoordinateSystem ) {
|
|
6561
|
+
|
|
6562
|
+
c = - far / ( far - near );
|
|
6563
|
+
d = ( - far * near ) / ( far - near );
|
|
6564
|
+
|
|
6565
|
+
} else {
|
|
6566
|
+
|
|
6567
|
+
throw new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );
|
|
6568
|
+
|
|
6569
|
+
}
|
|
6570
|
+
|
|
6571
|
+
te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0;
|
|
6572
|
+
te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0;
|
|
6573
|
+
te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d;
|
|
6485
6574
|
te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0;
|
|
6486
6575
|
|
|
6487
6576
|
return this;
|
|
6488
6577
|
|
|
6489
6578
|
}
|
|
6490
6579
|
|
|
6491
|
-
makeOrthographic( left, right, top, bottom, near, far ) {
|
|
6580
|
+
makeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {
|
|
6492
6581
|
|
|
6493
6582
|
const te = this.elements;
|
|
6494
6583
|
const w = 1.0 / ( right - left );
|
|
@@ -6497,12 +6586,29 @@
|
|
|
6497
6586
|
|
|
6498
6587
|
const x = ( right + left ) * w;
|
|
6499
6588
|
const y = ( top + bottom ) * h;
|
|
6500
|
-
const z = ( far + near ) * p;
|
|
6501
6589
|
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6590
|
+
let z, zInv;
|
|
6591
|
+
|
|
6592
|
+
if ( coordinateSystem === WebGLCoordinateSystem ) {
|
|
6593
|
+
|
|
6594
|
+
z = ( far + near ) * p;
|
|
6595
|
+
zInv = - 2 * p;
|
|
6596
|
+
|
|
6597
|
+
} else if ( coordinateSystem === WebGPUCoordinateSystem ) {
|
|
6598
|
+
|
|
6599
|
+
z = near * p;
|
|
6600
|
+
zInv = - 1 * p;
|
|
6601
|
+
|
|
6602
|
+
} else {
|
|
6603
|
+
|
|
6604
|
+
throw new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );
|
|
6605
|
+
|
|
6606
|
+
}
|
|
6607
|
+
|
|
6608
|
+
te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x;
|
|
6609
|
+
te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y;
|
|
6610
|
+
te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = zInv; te[ 14 ] = - z;
|
|
6611
|
+
te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1;
|
|
6506
6612
|
|
|
6507
6613
|
return this;
|
|
6508
6614
|
|
|
@@ -7627,7 +7733,7 @@
|
|
|
7627
7733
|
};
|
|
7628
7734
|
|
|
7629
7735
|
output.metadata = {
|
|
7630
|
-
version: 4.
|
|
7736
|
+
version: 4.6,
|
|
7631
7737
|
type: 'Object',
|
|
7632
7738
|
generator: 'Object3D.toJSON'
|
|
7633
7739
|
};
|
|
@@ -8253,6 +8359,7 @@
|
|
|
8253
8359
|
|
|
8254
8360
|
this.opacity = 1;
|
|
8255
8361
|
this.transparent = false;
|
|
8362
|
+
this.alphaHash = false;
|
|
8256
8363
|
|
|
8257
8364
|
this.blendSrc = SrcAlphaFactor;
|
|
8258
8365
|
this.blendDst = OneMinusSrcAlphaFactor;
|
|
@@ -8393,7 +8500,7 @@
|
|
|
8393
8500
|
|
|
8394
8501
|
const data = {
|
|
8395
8502
|
metadata: {
|
|
8396
|
-
version: 4.
|
|
8503
|
+
version: 4.6,
|
|
8397
8504
|
type: 'Material',
|
|
8398
8505
|
generator: 'Material.toJSON'
|
|
8399
8506
|
}
|
|
@@ -8458,6 +8565,15 @@
|
|
|
8458
8565
|
|
|
8459
8566
|
}
|
|
8460
8567
|
|
|
8568
|
+
if ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;
|
|
8569
|
+
if ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;
|
|
8570
|
+
|
|
8571
|
+
if ( this.anisotropyMap && this.anisotropyMap.isTexture ) {
|
|
8572
|
+
|
|
8573
|
+
data.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;
|
|
8574
|
+
|
|
8575
|
+
}
|
|
8576
|
+
|
|
8461
8577
|
if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;
|
|
8462
8578
|
if ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;
|
|
8463
8579
|
if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;
|
|
@@ -8572,6 +8688,7 @@
|
|
|
8572
8688
|
if ( this.dithering === true ) data.dithering = true;
|
|
8573
8689
|
|
|
8574
8690
|
if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;
|
|
8691
|
+
if ( this.alphaHash === true ) data.alphaHash = this.alphaHash;
|
|
8575
8692
|
if ( this.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;
|
|
8576
8693
|
if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;
|
|
8577
8694
|
if ( this.forceSinglePass === true ) data.forceSinglePass = this.forceSinglePass;
|
|
@@ -8693,6 +8810,7 @@
|
|
|
8693
8810
|
this.dithering = source.dithering;
|
|
8694
8811
|
|
|
8695
8812
|
this.alphaTest = source.alphaTest;
|
|
8813
|
+
this.alphaHash = source.alphaHash;
|
|
8696
8814
|
this.alphaToCoverage = source.alphaToCoverage;
|
|
8697
8815
|
this.premultipliedAlpha = source.premultipliedAlpha;
|
|
8698
8816
|
this.forceSinglePass = source.forceSinglePass;
|
|
@@ -8770,30 +8888,35 @@
|
|
|
8770
8888
|
this.g = 1;
|
|
8771
8889
|
this.b = 1;
|
|
8772
8890
|
|
|
8891
|
+
return this.set( r, g, b );
|
|
8892
|
+
|
|
8893
|
+
}
|
|
8894
|
+
|
|
8895
|
+
set( r, g, b ) {
|
|
8896
|
+
|
|
8773
8897
|
if ( g === undefined && b === undefined ) {
|
|
8774
8898
|
|
|
8775
8899
|
// r is THREE.Color, hex or string
|
|
8776
|
-
return this.set( r );
|
|
8777
8900
|
|
|
8778
|
-
|
|
8901
|
+
const value = r;
|
|
8779
8902
|
|
|
8780
|
-
|
|
8903
|
+
if ( value && value.isColor ) {
|
|
8781
8904
|
|
|
8782
|
-
|
|
8905
|
+
this.copy( value );
|
|
8783
8906
|
|
|
8784
|
-
|
|
8907
|
+
} else if ( typeof value === 'number' ) {
|
|
8785
8908
|
|
|
8786
|
-
|
|
8909
|
+
this.setHex( value );
|
|
8787
8910
|
|
|
8788
|
-
|
|
8911
|
+
} else if ( typeof value === 'string' ) {
|
|
8789
8912
|
|
|
8790
|
-
|
|
8913
|
+
this.setStyle( value );
|
|
8791
8914
|
|
|
8792
|
-
|
|
8915
|
+
}
|
|
8793
8916
|
|
|
8794
|
-
} else
|
|
8917
|
+
} else {
|
|
8795
8918
|
|
|
8796
|
-
this.
|
|
8919
|
+
this.setRGB( r, g, b );
|
|
8797
8920
|
|
|
8798
8921
|
}
|
|
8799
8922
|
|
|
@@ -9438,6 +9561,7 @@
|
|
|
9438
9561
|
|
|
9439
9562
|
this.usage = StaticDrawUsage;
|
|
9440
9563
|
this.updateRange = { offset: 0, count: - 1 };
|
|
9564
|
+
this.gpuType = FloatType;
|
|
9441
9565
|
|
|
9442
9566
|
this.version = 0;
|
|
9443
9567
|
|
|
@@ -9468,6 +9592,7 @@
|
|
|
9468
9592
|
this.normalized = source.normalized;
|
|
9469
9593
|
|
|
9470
9594
|
this.usage = source.usage;
|
|
9595
|
+
this.gpuType = source.gpuType;
|
|
9471
9596
|
|
|
9472
9597
|
return this;
|
|
9473
9598
|
|
|
@@ -9754,30 +9879,6 @@
|
|
|
9754
9879
|
|
|
9755
9880
|
}
|
|
9756
9881
|
|
|
9757
|
-
copyColorsArray() { // @deprecated, r144
|
|
9758
|
-
|
|
9759
|
-
console.error( 'THREE.BufferAttribute: copyColorsArray() was removed in r144.' );
|
|
9760
|
-
|
|
9761
|
-
}
|
|
9762
|
-
|
|
9763
|
-
copyVector2sArray() { // @deprecated, r144
|
|
9764
|
-
|
|
9765
|
-
console.error( 'THREE.BufferAttribute: copyVector2sArray() was removed in r144.' );
|
|
9766
|
-
|
|
9767
|
-
}
|
|
9768
|
-
|
|
9769
|
-
copyVector3sArray() { // @deprecated, r144
|
|
9770
|
-
|
|
9771
|
-
console.error( 'THREE.BufferAttribute: copyVector3sArray() was removed in r144.' );
|
|
9772
|
-
|
|
9773
|
-
}
|
|
9774
|
-
|
|
9775
|
-
copyVector4sArray() { // @deprecated, r144
|
|
9776
|
-
|
|
9777
|
-
console.error( 'THREE.BufferAttribute: copyVector4sArray() was removed in r144.' );
|
|
9778
|
-
|
|
9779
|
-
}
|
|
9780
|
-
|
|
9781
9882
|
}
|
|
9782
9883
|
|
|
9783
9884
|
class Uint16BufferAttribute extends BufferAttribute {
|
|
@@ -10527,13 +10628,6 @@
|
|
|
10527
10628
|
|
|
10528
10629
|
}
|
|
10529
10630
|
|
|
10530
|
-
merge() { // @deprecated, r144
|
|
10531
|
-
|
|
10532
|
-
console.error( 'THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeGeometries() instead.' );
|
|
10533
|
-
return this;
|
|
10534
|
-
|
|
10535
|
-
}
|
|
10536
|
-
|
|
10537
10631
|
normalizeNormals() {
|
|
10538
10632
|
|
|
10539
10633
|
const normals = this.attributes.normal;
|
|
@@ -10656,7 +10750,7 @@
|
|
|
10656
10750
|
|
|
10657
10751
|
const data = {
|
|
10658
10752
|
metadata: {
|
|
10659
|
-
version: 4.
|
|
10753
|
+
version: 4.6,
|
|
10660
10754
|
type: 'BufferGeometry',
|
|
10661
10755
|
generator: 'BufferGeometry.toJSON'
|
|
10662
10756
|
}
|
|
@@ -10884,9 +10978,9 @@
|
|
|
10884
10978
|
|
|
10885
10979
|
}
|
|
10886
10980
|
|
|
10887
|
-
const _inverseMatrix$
|
|
10888
|
-
const _ray$
|
|
10889
|
-
const _sphere$
|
|
10981
|
+
const _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();
|
|
10982
|
+
const _ray$3 = /*@__PURE__*/ new Ray();
|
|
10983
|
+
const _sphere$5 = /*@__PURE__*/ new Sphere();
|
|
10890
10984
|
const _sphereHitAt = /*@__PURE__*/ new Vector3();
|
|
10891
10985
|
|
|
10892
10986
|
const _vA$1 = /*@__PURE__*/ new Vector3();
|
|
@@ -11030,41 +11124,45 @@
|
|
|
11030
11124
|
|
|
11031
11125
|
if ( material === undefined ) return;
|
|
11032
11126
|
|
|
11033
|
-
//
|
|
11127
|
+
// test with bounding sphere in world space
|
|
11034
11128
|
|
|
11035
11129
|
if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
|
|
11036
11130
|
|
|
11037
|
-
_sphere$
|
|
11038
|
-
_sphere$
|
|
11131
|
+
_sphere$5.copy( geometry.boundingSphere );
|
|
11132
|
+
_sphere$5.applyMatrix4( matrixWorld );
|
|
11039
11133
|
|
|
11040
|
-
|
|
11134
|
+
// check distance from ray origin to bounding sphere
|
|
11041
11135
|
|
|
11042
|
-
|
|
11136
|
+
_ray$3.copy( raycaster.ray ).recast( raycaster.near );
|
|
11043
11137
|
|
|
11044
|
-
|
|
11138
|
+
if ( _sphere$5.containsPoint( _ray$3.origin ) === false ) {
|
|
11045
11139
|
|
|
11046
|
-
if ( _ray$
|
|
11140
|
+
if ( _ray$3.intersectSphere( _sphere$5, _sphereHitAt ) === null ) return;
|
|
11141
|
+
|
|
11142
|
+
if ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;
|
|
11047
11143
|
|
|
11048
11144
|
}
|
|
11049
11145
|
|
|
11050
|
-
//
|
|
11146
|
+
// convert ray to local space of mesh
|
|
11051
11147
|
|
|
11052
|
-
_inverseMatrix$
|
|
11053
|
-
_ray$
|
|
11148
|
+
_inverseMatrix$3.copy( matrixWorld ).invert();
|
|
11149
|
+
_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );
|
|
11054
11150
|
|
|
11055
|
-
//
|
|
11151
|
+
// test with bounding box in local space
|
|
11056
11152
|
|
|
11057
11153
|
if ( geometry.boundingBox !== null ) {
|
|
11058
11154
|
|
|
11059
|
-
if ( _ray$
|
|
11155
|
+
if ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;
|
|
11060
11156
|
|
|
11061
11157
|
}
|
|
11062
11158
|
|
|
11063
|
-
|
|
11159
|
+
// test for intersections with geometry
|
|
11160
|
+
|
|
11161
|
+
this._computeIntersections( raycaster, intersects, _ray$3 );
|
|
11064
11162
|
|
|
11065
11163
|
}
|
|
11066
11164
|
|
|
11067
|
-
_computeIntersections( raycaster, intersects ) {
|
|
11165
|
+
_computeIntersections( raycaster, intersects, rayLocalSpace ) {
|
|
11068
11166
|
|
|
11069
11167
|
let intersection;
|
|
11070
11168
|
|
|
@@ -11099,7 +11197,7 @@
|
|
|
11099
11197
|
const b = index.getX( j + 1 );
|
|
11100
11198
|
const c = index.getX( j + 2 );
|
|
11101
11199
|
|
|
11102
|
-
intersection = checkGeometryIntersection( this, groupMaterial, raycaster,
|
|
11200
|
+
intersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );
|
|
11103
11201
|
|
|
11104
11202
|
if ( intersection ) {
|
|
11105
11203
|
|
|
@@ -11124,7 +11222,7 @@
|
|
|
11124
11222
|
const b = index.getX( i + 1 );
|
|
11125
11223
|
const c = index.getX( i + 2 );
|
|
11126
11224
|
|
|
11127
|
-
intersection = checkGeometryIntersection( this, material, raycaster,
|
|
11225
|
+
intersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );
|
|
11128
11226
|
|
|
11129
11227
|
if ( intersection ) {
|
|
11130
11228
|
|
|
@@ -11157,7 +11255,7 @@
|
|
|
11157
11255
|
const b = j + 1;
|
|
11158
11256
|
const c = j + 2;
|
|
11159
11257
|
|
|
11160
|
-
intersection = checkGeometryIntersection( this, groupMaterial, raycaster,
|
|
11258
|
+
intersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );
|
|
11161
11259
|
|
|
11162
11260
|
if ( intersection ) {
|
|
11163
11261
|
|
|
@@ -11182,7 +11280,7 @@
|
|
|
11182
11280
|
const b = i + 1;
|
|
11183
11281
|
const c = i + 2;
|
|
11184
11282
|
|
|
11185
|
-
intersection = checkGeometryIntersection( this, material, raycaster,
|
|
11283
|
+
intersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );
|
|
11186
11284
|
|
|
11187
11285
|
if ( intersection ) {
|
|
11188
11286
|
|
|
@@ -11259,7 +11357,7 @@
|
|
|
11259
11357
|
_uvC$1.fromBufferAttribute( uv1, c );
|
|
11260
11358
|
|
|
11261
11359
|
intersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );
|
|
11262
|
-
intersection.uv2 = intersection.uv1; //
|
|
11360
|
+
intersection.uv2 = intersection.uv1; // @deprecated, r152
|
|
11263
11361
|
|
|
11264
11362
|
}
|
|
11265
11363
|
|
|
@@ -11772,6 +11870,8 @@
|
|
|
11772
11870
|
this.projectionMatrix = new Matrix4();
|
|
11773
11871
|
this.projectionMatrixInverse = new Matrix4();
|
|
11774
11872
|
|
|
11873
|
+
this.coordinateSystem = WebGLCoordinateSystem;
|
|
11874
|
+
|
|
11775
11875
|
}
|
|
11776
11876
|
|
|
11777
11877
|
copy( source, recursive ) {
|
|
@@ -11783,6 +11883,8 @@
|
|
|
11783
11883
|
this.projectionMatrix.copy( source.projectionMatrix );
|
|
11784
11884
|
this.projectionMatrixInverse.copy( source.projectionMatrixInverse );
|
|
11785
11885
|
|
|
11886
|
+
this.coordinateSystem = source.coordinateSystem;
|
|
11887
|
+
|
|
11786
11888
|
return this;
|
|
11787
11889
|
|
|
11788
11890
|
}
|
|
@@ -12020,7 +12122,7 @@
|
|
|
12020
12122
|
const skew = this.filmOffset;
|
|
12021
12123
|
if ( skew !== 0 ) left += near * skew / this.getFilmWidth();
|
|
12022
12124
|
|
|
12023
|
-
this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );
|
|
12125
|
+
this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );
|
|
12024
12126
|
|
|
12025
12127
|
this.projectionMatrixInverse.copy( this.projectionMatrix ).invert();
|
|
12026
12128
|
|
|
@@ -12062,51 +12164,114 @@
|
|
|
12062
12164
|
this.type = 'CubeCamera';
|
|
12063
12165
|
|
|
12064
12166
|
this.renderTarget = renderTarget;
|
|
12167
|
+
this.coordinateSystem = null;
|
|
12065
12168
|
|
|
12066
12169
|
const cameraPX = new PerspectiveCamera( fov, aspect, near, far );
|
|
12067
12170
|
cameraPX.layers = this.layers;
|
|
12068
|
-
cameraPX.up.set( 0, 1, 0 );
|
|
12069
|
-
cameraPX.lookAt( 1, 0, 0 );
|
|
12070
12171
|
this.add( cameraPX );
|
|
12071
12172
|
|
|
12072
12173
|
const cameraNX = new PerspectiveCamera( fov, aspect, near, far );
|
|
12073
12174
|
cameraNX.layers = this.layers;
|
|
12074
|
-
cameraNX.up.set( 0, 1, 0 );
|
|
12075
|
-
cameraNX.lookAt( - 1, 0, 0 );
|
|
12076
12175
|
this.add( cameraNX );
|
|
12077
12176
|
|
|
12078
12177
|
const cameraPY = new PerspectiveCamera( fov, aspect, near, far );
|
|
12079
12178
|
cameraPY.layers = this.layers;
|
|
12080
|
-
cameraPY.up.set( 0, 0, - 1 );
|
|
12081
|
-
cameraPY.lookAt( 0, 1, 0 );
|
|
12082
12179
|
this.add( cameraPY );
|
|
12083
12180
|
|
|
12084
12181
|
const cameraNY = new PerspectiveCamera( fov, aspect, near, far );
|
|
12085
12182
|
cameraNY.layers = this.layers;
|
|
12086
|
-
cameraNY.up.set( 0, 0, 1 );
|
|
12087
|
-
cameraNY.lookAt( 0, - 1, 0 );
|
|
12088
12183
|
this.add( cameraNY );
|
|
12089
12184
|
|
|
12090
12185
|
const cameraPZ = new PerspectiveCamera( fov, aspect, near, far );
|
|
12091
12186
|
cameraPZ.layers = this.layers;
|
|
12092
|
-
cameraPZ.up.set( 0, 1, 0 );
|
|
12093
|
-
cameraPZ.lookAt( 0, 0, 1 );
|
|
12094
12187
|
this.add( cameraPZ );
|
|
12095
12188
|
|
|
12096
12189
|
const cameraNZ = new PerspectiveCamera( fov, aspect, near, far );
|
|
12097
12190
|
cameraNZ.layers = this.layers;
|
|
12098
|
-
cameraNZ.up.set( 0, 1, 0 );
|
|
12099
|
-
cameraNZ.lookAt( 0, 0, - 1 );
|
|
12100
12191
|
this.add( cameraNZ );
|
|
12101
12192
|
|
|
12102
12193
|
}
|
|
12103
12194
|
|
|
12195
|
+
updateCoordinateSystem() {
|
|
12196
|
+
|
|
12197
|
+
const coordinateSystem = this.coordinateSystem;
|
|
12198
|
+
|
|
12199
|
+
const cameras = this.children.concat();
|
|
12200
|
+
|
|
12201
|
+
const [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;
|
|
12202
|
+
|
|
12203
|
+
for ( const camera of cameras ) this.remove( camera );
|
|
12204
|
+
|
|
12205
|
+
if ( coordinateSystem === WebGLCoordinateSystem ) {
|
|
12206
|
+
|
|
12207
|
+
cameraPX.up.set( 0, 1, 0 );
|
|
12208
|
+
cameraPX.lookAt( 1, 0, 0 );
|
|
12209
|
+
|
|
12210
|
+
cameraNX.up.set( 0, 1, 0 );
|
|
12211
|
+
cameraNX.lookAt( - 1, 0, 0 );
|
|
12212
|
+
|
|
12213
|
+
cameraPY.up.set( 0, 0, - 1 );
|
|
12214
|
+
cameraPY.lookAt( 0, 1, 0 );
|
|
12215
|
+
|
|
12216
|
+
cameraNY.up.set( 0, 0, 1 );
|
|
12217
|
+
cameraNY.lookAt( 0, - 1, 0 );
|
|
12218
|
+
|
|
12219
|
+
cameraPZ.up.set( 0, 1, 0 );
|
|
12220
|
+
cameraPZ.lookAt( 0, 0, 1 );
|
|
12221
|
+
|
|
12222
|
+
cameraNZ.up.set( 0, 1, 0 );
|
|
12223
|
+
cameraNZ.lookAt( 0, 0, - 1 );
|
|
12224
|
+
|
|
12225
|
+
} else if ( coordinateSystem === WebGPUCoordinateSystem ) {
|
|
12226
|
+
|
|
12227
|
+
cameraPX.up.set( 0, - 1, 0 );
|
|
12228
|
+
cameraPX.lookAt( - 1, 0, 0 );
|
|
12229
|
+
|
|
12230
|
+
cameraNX.up.set( 0, - 1, 0 );
|
|
12231
|
+
cameraNX.lookAt( 1, 0, 0 );
|
|
12232
|
+
|
|
12233
|
+
cameraPY.up.set( 0, 0, 1 );
|
|
12234
|
+
cameraPY.lookAt( 0, 1, 0 );
|
|
12235
|
+
|
|
12236
|
+
cameraNY.up.set( 0, 0, - 1 );
|
|
12237
|
+
cameraNY.lookAt( 0, - 1, 0 );
|
|
12238
|
+
|
|
12239
|
+
cameraPZ.up.set( 0, - 1, 0 );
|
|
12240
|
+
cameraPZ.lookAt( 0, 0, 1 );
|
|
12241
|
+
|
|
12242
|
+
cameraNZ.up.set( 0, - 1, 0 );
|
|
12243
|
+
cameraNZ.lookAt( 0, 0, - 1 );
|
|
12244
|
+
|
|
12245
|
+
} else {
|
|
12246
|
+
|
|
12247
|
+
throw new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );
|
|
12248
|
+
|
|
12249
|
+
}
|
|
12250
|
+
|
|
12251
|
+
for ( const camera of cameras ) {
|
|
12252
|
+
|
|
12253
|
+
this.add( camera );
|
|
12254
|
+
|
|
12255
|
+
camera.updateMatrixWorld();
|
|
12256
|
+
|
|
12257
|
+
}
|
|
12258
|
+
|
|
12259
|
+
}
|
|
12260
|
+
|
|
12104
12261
|
update( renderer, scene ) {
|
|
12105
12262
|
|
|
12106
12263
|
if ( this.parent === null ) this.updateMatrixWorld();
|
|
12107
12264
|
|
|
12108
12265
|
const renderTarget = this.renderTarget;
|
|
12109
12266
|
|
|
12267
|
+
if ( this.coordinateSystem !== renderer.coordinateSystem ) {
|
|
12268
|
+
|
|
12269
|
+
this.coordinateSystem = renderer.coordinateSystem;
|
|
12270
|
+
|
|
12271
|
+
this.updateCoordinateSystem();
|
|
12272
|
+
|
|
12273
|
+
}
|
|
12274
|
+
|
|
12110
12275
|
const [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;
|
|
12111
12276
|
|
|
12112
12277
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
@@ -12526,7 +12691,7 @@
|
|
|
12526
12691
|
|
|
12527
12692
|
}
|
|
12528
12693
|
|
|
12529
|
-
const _sphere$
|
|
12694
|
+
const _sphere$4 = /*@__PURE__*/ new Sphere();
|
|
12530
12695
|
const _vector$6 = /*@__PURE__*/ new Vector3();
|
|
12531
12696
|
|
|
12532
12697
|
class Frustum {
|
|
@@ -12566,7 +12731,7 @@
|
|
|
12566
12731
|
|
|
12567
12732
|
}
|
|
12568
12733
|
|
|
12569
|
-
setFromProjectionMatrix( m ) {
|
|
12734
|
+
setFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {
|
|
12570
12735
|
|
|
12571
12736
|
const planes = this.planes;
|
|
12572
12737
|
const me = m.elements;
|
|
@@ -12580,7 +12745,20 @@
|
|
|
12580
12745
|
planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();
|
|
12581
12746
|
planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();
|
|
12582
12747
|
planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();
|
|
12583
|
-
|
|
12748
|
+
|
|
12749
|
+
if ( coordinateSystem === WebGLCoordinateSystem ) {
|
|
12750
|
+
|
|
12751
|
+
planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();
|
|
12752
|
+
|
|
12753
|
+
} else if ( coordinateSystem === WebGPUCoordinateSystem ) {
|
|
12754
|
+
|
|
12755
|
+
planes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();
|
|
12756
|
+
|
|
12757
|
+
} else {
|
|
12758
|
+
|
|
12759
|
+
throw new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );
|
|
12760
|
+
|
|
12761
|
+
}
|
|
12584
12762
|
|
|
12585
12763
|
return this;
|
|
12586
12764
|
|
|
@@ -12592,7 +12770,7 @@
|
|
|
12592
12770
|
|
|
12593
12771
|
if ( object.boundingSphere === null ) object.computeBoundingSphere();
|
|
12594
12772
|
|
|
12595
|
-
_sphere$
|
|
12773
|
+
_sphere$4.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );
|
|
12596
12774
|
|
|
12597
12775
|
} else {
|
|
12598
12776
|
|
|
@@ -12600,21 +12778,21 @@
|
|
|
12600
12778
|
|
|
12601
12779
|
if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
|
|
12602
12780
|
|
|
12603
|
-
_sphere$
|
|
12781
|
+
_sphere$4.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );
|
|
12604
12782
|
|
|
12605
12783
|
}
|
|
12606
12784
|
|
|
12607
|
-
return this.intersectsSphere( _sphere$
|
|
12785
|
+
return this.intersectsSphere( _sphere$4 );
|
|
12608
12786
|
|
|
12609
12787
|
}
|
|
12610
12788
|
|
|
12611
12789
|
intersectsSprite( sprite ) {
|
|
12612
12790
|
|
|
12613
|
-
_sphere$
|
|
12614
|
-
_sphere$
|
|
12615
|
-
_sphere$
|
|
12791
|
+
_sphere$4.center.set( 0, 0, 0 );
|
|
12792
|
+
_sphere$4.radius = 0.7071067811865476;
|
|
12793
|
+
_sphere$4.applyMatrix4( sprite.matrixWorld );
|
|
12616
12794
|
|
|
12617
|
-
return this.intersectsSphere( _sphere$
|
|
12795
|
+
return this.intersectsSphere( _sphere$4 );
|
|
12618
12796
|
|
|
12619
12797
|
}
|
|
12620
12798
|
|
|
@@ -13031,6 +13209,10 @@
|
|
|
13031
13209
|
|
|
13032
13210
|
}
|
|
13033
13211
|
|
|
13212
|
+
var alphahash_fragment = "#ifdef USE_ALPHAHASH\n\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif";
|
|
13213
|
+
|
|
13214
|
+
var alphahash_pars_fragment = "#ifdef USE_ALPHAHASH\n\tconst float ALPHA_HASH_SCALE = 0.05;\n\tfloat hash2D( vec2 value ) {\n\t\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n\t}\n\tfloat hash3D( vec3 value ) {\n\t\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\n\t}\n\tfloat getAlphaHashThreshold( vec3 position ) {\n\t\tfloat maxDeriv = max(\n\t\t\tlength( dFdx( position.xyz ) ),\n\t\t\tlength( dFdy( position.xyz ) )\n\t\t);\n\t\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n\t\tvec2 pixScales = vec2(\n\t\t\texp2( floor( log2( pixScale ) ) ),\n\t\t\texp2( ceil( log2( pixScale ) ) )\n\t\t);\n\t\tvec2 alpha = vec2(\n\t\t\thash3D( floor( pixScales.x * position.xyz ) ),\n\t\t\thash3D( floor( pixScales.y * position.xyz ) )\n\t\t);\n\t\tfloat lerpFactor = fract( log2( pixScale ) );\n\t\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n\t\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\n\t\tvec3 cases = vec3(\n\t\t\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\n\t\t\t( x - 0.5 * a ) / ( 1.0 - a ),\n\t\t\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n\t\t);\n\t\tfloat threshold = ( x < ( 1.0 - a ) )\n\t\t\t? ( ( x < a ) ? cases.x : cases.y )\n\t\t\t: cases.z;\n\t\treturn clamp( threshold , 1.0e-6, 1.0 );\n\t}\n#endif";
|
|
13215
|
+
|
|
13034
13216
|
var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif";
|
|
13035
13217
|
|
|
13036
13218
|
var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif";
|
|
@@ -13043,7 +13225,7 @@
|
|
|
13043
13225
|
|
|
13044
13226
|
var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif";
|
|
13045
13227
|
|
|
13046
|
-
var begin_vertex = "vec3 transformed = vec3( position )
|
|
13228
|
+
var begin_vertex = "vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n\tvPosition = vec3( position );\n#endif";
|
|
13047
13229
|
|
|
13048
13230
|
var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif";
|
|
13049
13231
|
|
|
@@ -13069,7 +13251,7 @@
|
|
|
13069
13251
|
|
|
13070
13252
|
var color_vertex = "#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif";
|
|
13071
13253
|
|
|
13072
|
-
var common = "#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated";
|
|
13254
|
+
var common = "#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated";
|
|
13073
13255
|
|
|
13074
13256
|
var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif";
|
|
13075
13257
|
|
|
@@ -13083,9 +13265,9 @@
|
|
|
13083
13265
|
|
|
13084
13266
|
var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif";
|
|
13085
13267
|
|
|
13086
|
-
var
|
|
13268
|
+
var colorspace_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );";
|
|
13087
13269
|
|
|
13088
|
-
var
|
|
13270
|
+
var colorspace_pars_fragment = "vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}";
|
|
13089
13271
|
|
|
13090
13272
|
var envmap_fragment = "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif";
|
|
13091
13273
|
|
|
@@ -13117,7 +13299,7 @@
|
|
|
13117
13299
|
|
|
13118
13300
|
var lights_pars_begin = "uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( LEGACY_LIGHTS )\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#else\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif";
|
|
13119
13301
|
|
|
13120
|
-
var envmap_physical_pars_fragment = "#
|
|
13302
|
+
var envmap_physical_pars_fragment = "#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif";
|
|
13121
13303
|
|
|
13122
13304
|
var lights_toon_fragment = "ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;";
|
|
13123
13305
|
|
|
@@ -13127,13 +13309,13 @@
|
|
|
13127
13309
|
|
|
13128
13310
|
var lights_phong_pars_fragment = "varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong";
|
|
13129
13311
|
|
|
13130
|
-
var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif";
|
|
13312
|
+
var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tanisotropyV /= material.anisotropy;\n\tmaterial.anisotropy = saturate( material.anisotropy );\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x - tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x + tbn[ 0 ] * anisotropyV.y;\n#endif";
|
|
13131
13313
|
|
|
13132
|
-
var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}";
|
|
13314
|
+
var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}";
|
|
13133
13315
|
|
|
13134
13316
|
var lights_fragment_begin = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif";
|
|
13135
13317
|
|
|
13136
|
-
var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif";
|
|
13318
|
+
var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometry.viewDir, geometry.normal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif";
|
|
13137
13319
|
|
|
13138
13320
|
var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif";
|
|
13139
13321
|
|
|
@@ -13165,7 +13347,7 @@
|
|
|
13165
13347
|
|
|
13166
13348
|
var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif";
|
|
13167
13349
|
|
|
13168
|
-
var normal_fragment_begin = "float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#
|
|
13350
|
+
var normal_fragment_begin = "float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 geometryNormal = normal;";
|
|
13169
13351
|
|
|
13170
13352
|
var normal_fragment_maps = "#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif";
|
|
13171
13353
|
|
|
@@ -13175,7 +13357,7 @@
|
|
|
13175
13357
|
|
|
13176
13358
|
var normal_vertex = "#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif";
|
|
13177
13359
|
|
|
13178
|
-
var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif";
|
|
13360
|
+
var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif";
|
|
13179
13361
|
|
|
13180
13362
|
var clearcoat_normal_fragment_begin = "#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif";
|
|
13181
13363
|
|
|
@@ -13185,7 +13367,7 @@
|
|
|
13185
13367
|
|
|
13186
13368
|
var iridescence_pars_fragment = "#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif";
|
|
13187
13369
|
|
|
13188
|
-
var
|
|
13370
|
+
var opaque_fragment = "#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );";
|
|
13189
13371
|
|
|
13190
13372
|
var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\n}";
|
|
13191
13373
|
|
|
@@ -13223,59 +13405,59 @@
|
|
|
13223
13405
|
|
|
13224
13406
|
var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif";
|
|
13225
13407
|
|
|
13226
|
-
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 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}\nvec3 CustomToneMapping( vec3 color ) { return color; }";
|
|
13408
|
+
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}\nvec3 CustomToneMapping( vec3 color ) { return color; }";
|
|
13227
13409
|
|
|
13228
|
-
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
|
|
13410
|
+
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";
|
|
13229
13411
|
|
|
13230
|
-
var transmission_pars_fragment = "#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3
|
|
13412
|
+
var transmission_pars_fragment = "#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif";
|
|
13231
13413
|
|
|
13232
|
-
var uv_pars_fragment = "#
|
|
13414
|
+
var uv_pars_fragment = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif";
|
|
13233
13415
|
|
|
13234
|
-
var uv_pars_vertex = "#
|
|
13416
|
+
var uv_pars_vertex = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif";
|
|
13235
13417
|
|
|
13236
|
-
var uv_vertex = "#
|
|
13418
|
+
var uv_vertex = "#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif";
|
|
13237
13419
|
|
|
13238
13420
|
var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif";
|
|
13239
13421
|
|
|
13240
13422
|
const vertex$h = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}";
|
|
13241
13423
|
|
|
13242
|
-
const fragment$h = "uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <
|
|
13424
|
+
const fragment$h = "uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}";
|
|
13243
13425
|
|
|
13244
13426
|
const vertex$g = "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}";
|
|
13245
13427
|
|
|
13246
|
-
const fragment$g = "#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <
|
|
13428
|
+
const fragment$g = "#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}";
|
|
13247
13429
|
|
|
13248
13430
|
const vertex$f = "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}";
|
|
13249
13431
|
|
|
13250
|
-
const fragment$f = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <
|
|
13432
|
+
const fragment$f = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}";
|
|
13251
13433
|
|
|
13252
13434
|
const vertex$e = "#include <common>\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 <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}";
|
|
13253
13435
|
|
|
13254
|
-
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 <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\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 <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}";
|
|
13436
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\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}";
|
|
13255
13437
|
|
|
13256
13438
|
const vertex$d = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\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 <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}";
|
|
13257
13439
|
|
|
13258
|
-
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 <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}";
|
|
13440
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\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}";
|
|
13259
13441
|
|
|
13260
13442
|
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}";
|
|
13261
13443
|
|
|
13262
|
-
const fragment$c = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include <tonemapping_fragment>\n\t#include <
|
|
13444
|
+
const fragment$c = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}";
|
|
13263
13445
|
|
|
13264
13446
|
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}";
|
|
13265
13447
|
|
|
13266
|
-
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\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <
|
|
13448
|
+
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\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13267
13449
|
|
|
13268
13450
|
const vertex$a = "#include <common>\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#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}";
|
|
13269
13451
|
|
|
13270
|
-
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 <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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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 <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 <
|
|
13452
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13271
13453
|
|
|
13272
13454
|
const vertex$9 = "#define LAMBERT\nvarying vec3 vViewPosition;\n#include <common>\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 <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}";
|
|
13273
13455
|
|
|
13274
|
-
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 <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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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 <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 <
|
|
13456
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13275
13457
|
|
|
13276
13458
|
const vertex$8 = "#define MATCAP\nvarying vec3 vViewPosition;\n#include <common>\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 <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}";
|
|
13277
13459
|
|
|
13278
|
-
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 <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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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 <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 <
|
|
13460
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13279
13461
|
|
|
13280
13462
|
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 <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 <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}";
|
|
13281
13463
|
|
|
@@ -13283,29 +13465,31 @@
|
|
|
13283
13465
|
|
|
13284
13466
|
const vertex$6 = "#define PHONG\nvarying vec3 vViewPosition;\n#include <common>\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 <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}";
|
|
13285
13467
|
|
|
13286
|
-
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 <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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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 <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 <
|
|
13468
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13287
13469
|
|
|
13288
13470
|
const vertex$5 = "#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\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 <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}";
|
|
13289
13471
|
|
|
13290
|
-
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\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 <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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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 <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 + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include <
|
|
13472
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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 + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * 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}";
|
|
13291
13473
|
|
|
13292
13474
|
const vertex$4 = "#define TOON\nvarying vec3 vViewPosition;\n#include <common>\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 <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}";
|
|
13293
13475
|
|
|
13294
|
-
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 <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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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 <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 <
|
|
13476
|
+
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\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13295
13477
|
|
|
13296
13478
|
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}";
|
|
13297
13479
|
|
|
13298
|
-
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 <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\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <
|
|
13480
|
+
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\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13299
13481
|
|
|
13300
13482
|
const vertex$2 = "#include <common>\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 <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}";
|
|
13301
13483
|
|
|
13302
|
-
const fragment$2 = "uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <logdepthbuf_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\t#include <logdepthbuf_fragment>\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <
|
|
13484
|
+
const fragment$2 = "uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <logdepthbuf_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\t#include <logdepthbuf_fragment>\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}";
|
|
13303
13485
|
|
|
13304
13486
|
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}";
|
|
13305
13487
|
|
|
13306
|
-
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 <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\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <
|
|
13488
|
+
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\tvec4 diffuseColor = vec4( diffuse, opacity );\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}";
|
|
13307
13489
|
|
|
13308
13490
|
const ShaderChunk = {
|
|
13491
|
+
alphahash_fragment: alphahash_fragment,
|
|
13492
|
+
alphahash_pars_fragment: alphahash_pars_fragment,
|
|
13309
13493
|
alphamap_fragment: alphamap_fragment,
|
|
13310
13494
|
alphamap_pars_fragment: alphamap_pars_fragment,
|
|
13311
13495
|
alphatest_fragment: alphatest_fragment,
|
|
@@ -13332,8 +13516,8 @@
|
|
|
13332
13516
|
displacementmap_vertex: displacementmap_vertex,
|
|
13333
13517
|
emissivemap_fragment: emissivemap_fragment,
|
|
13334
13518
|
emissivemap_pars_fragment: emissivemap_pars_fragment,
|
|
13335
|
-
|
|
13336
|
-
|
|
13519
|
+
colorspace_fragment: colorspace_fragment,
|
|
13520
|
+
colorspace_pars_fragment: colorspace_pars_fragment,
|
|
13337
13521
|
envmap_fragment: envmap_fragment,
|
|
13338
13522
|
envmap_common_pars_fragment: envmap_common_pars_fragment,
|
|
13339
13523
|
envmap_pars_fragment: envmap_pars_fragment,
|
|
@@ -13383,7 +13567,7 @@
|
|
|
13383
13567
|
clearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,
|
|
13384
13568
|
clearcoat_pars_fragment: clearcoat_pars_fragment,
|
|
13385
13569
|
iridescence_pars_fragment: iridescence_pars_fragment,
|
|
13386
|
-
|
|
13570
|
+
opaque_fragment: opaque_fragment,
|
|
13387
13571
|
packing: packing,
|
|
13388
13572
|
premultiplied_alpha_fragment: premultiplied_alpha_fragment,
|
|
13389
13573
|
project_vertex: project_vertex,
|
|
@@ -13649,6 +13833,7 @@
|
|
|
13649
13833
|
scale: { value: 1.0 },
|
|
13650
13834
|
map: { value: null },
|
|
13651
13835
|
alphaMap: { value: null },
|
|
13836
|
+
alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
13652
13837
|
alphaTest: { value: 0 },
|
|
13653
13838
|
uvTransform: { value: /*@__PURE__*/ new Matrix3() }
|
|
13654
13839
|
|
|
@@ -13663,6 +13848,7 @@
|
|
|
13663
13848
|
map: { value: null },
|
|
13664
13849
|
mapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
13665
13850
|
alphaMap: { value: null },
|
|
13851
|
+
alphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
13666
13852
|
alphaTest: { value: 0 }
|
|
13667
13853
|
|
|
13668
13854
|
}
|
|
@@ -14006,7 +14192,10 @@
|
|
|
14006
14192
|
specularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
14007
14193
|
specularIntensity: { value: 1 },
|
|
14008
14194
|
specularIntensityMap: { value: null },
|
|
14009
|
-
specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() }
|
|
14195
|
+
specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
14196
|
+
anisotropyVector: { value: /*@__PURE__*/ new Vector2() },
|
|
14197
|
+
anisotropyMap: { value: null },
|
|
14198
|
+
anisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },
|
|
14010
14199
|
}
|
|
14011
14200
|
] ),
|
|
14012
14201
|
|
|
@@ -14568,9 +14757,9 @@
|
|
|
14568
14757
|
|
|
14569
14758
|
}
|
|
14570
14759
|
|
|
14571
|
-
function vertexAttribPointer( index, size, type, normalized, stride, offset ) {
|
|
14760
|
+
function vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {
|
|
14572
14761
|
|
|
14573
|
-
if (
|
|
14762
|
+
if ( integer === true ) {
|
|
14574
14763
|
|
|
14575
14764
|
gl.vertexAttribIPointer( index, size, type, stride, offset );
|
|
14576
14765
|
|
|
@@ -14628,6 +14817,10 @@
|
|
|
14628
14817
|
const type = attribute.type;
|
|
14629
14818
|
const bytesPerElement = attribute.bytesPerElement;
|
|
14630
14819
|
|
|
14820
|
+
// check for integer attributes (WebGL 2 only)
|
|
14821
|
+
|
|
14822
|
+
const integer = ( capabilities.isWebGL2 === true && ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType ) );
|
|
14823
|
+
|
|
14631
14824
|
if ( geometryAttribute.isInterleavedBufferAttribute ) {
|
|
14632
14825
|
|
|
14633
14826
|
const data = geometryAttribute.data;
|
|
@@ -14668,7 +14861,8 @@
|
|
|
14668
14861
|
type,
|
|
14669
14862
|
normalized,
|
|
14670
14863
|
stride * bytesPerElement,
|
|
14671
|
-
( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement
|
|
14864
|
+
( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,
|
|
14865
|
+
integer
|
|
14672
14866
|
);
|
|
14673
14867
|
|
|
14674
14868
|
}
|
|
@@ -14709,7 +14903,8 @@
|
|
|
14709
14903
|
type,
|
|
14710
14904
|
normalized,
|
|
14711
14905
|
size * bytesPerElement,
|
|
14712
|
-
( size / programAttribute.locationSize ) * i * bytesPerElement
|
|
14906
|
+
( size / programAttribute.locationSize ) * i * bytesPerElement,
|
|
14907
|
+
integer
|
|
14713
14908
|
);
|
|
14714
14909
|
|
|
14715
14910
|
}
|
|
@@ -15417,7 +15612,7 @@
|
|
|
15417
15612
|
|
|
15418
15613
|
}
|
|
15419
15614
|
|
|
15420
|
-
this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );
|
|
15615
|
+
this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );
|
|
15421
15616
|
|
|
15422
15617
|
this.projectionMatrixInverse.copy( this.projectionMatrix ).invert();
|
|
15423
15618
|
|
|
@@ -16558,6 +16753,18 @@
|
|
|
16558
16753
|
|
|
16559
16754
|
}
|
|
16560
16755
|
|
|
16756
|
+
for ( const name in geometry.morphAttributes ) {
|
|
16757
|
+
|
|
16758
|
+
const array = geometry.morphAttributes[ name ];
|
|
16759
|
+
|
|
16760
|
+
for ( let i = 0, l = array.length; i < l; i ++ ) {
|
|
16761
|
+
|
|
16762
|
+
attributes.remove( array[ i ] );
|
|
16763
|
+
|
|
16764
|
+
}
|
|
16765
|
+
|
|
16766
|
+
}
|
|
16767
|
+
|
|
16561
16768
|
geometry.removeEventListener( 'dispose', onGeometryDispose );
|
|
16562
16769
|
|
|
16563
16770
|
delete geometries[ geometry.id ];
|
|
@@ -16847,7 +17054,6 @@
|
|
|
16847
17054
|
|
|
16848
17055
|
function reset() {
|
|
16849
17056
|
|
|
16850
|
-
render.frame ++;
|
|
16851
17057
|
render.calls = 0;
|
|
16852
17058
|
render.triangles = 0;
|
|
16853
17059
|
render.points = 0;
|
|
@@ -17188,11 +17394,31 @@
|
|
|
17188
17394
|
|
|
17189
17395
|
}
|
|
17190
17396
|
|
|
17191
|
-
|
|
17397
|
+
if ( updateMap.get( object ) !== frame ) {
|
|
17398
|
+
|
|
17399
|
+
attributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );
|
|
17400
|
+
|
|
17401
|
+
if ( object.instanceColor !== null ) {
|
|
17402
|
+
|
|
17403
|
+
attributes.update( object.instanceColor, gl.ARRAY_BUFFER );
|
|
17404
|
+
|
|
17405
|
+
}
|
|
17406
|
+
|
|
17407
|
+
updateMap.set( object, frame );
|
|
17408
|
+
|
|
17409
|
+
}
|
|
17410
|
+
|
|
17411
|
+
}
|
|
17412
|
+
|
|
17413
|
+
if ( object.isSkinnedMesh ) {
|
|
17192
17414
|
|
|
17193
|
-
|
|
17415
|
+
const skeleton = object.skeleton;
|
|
17194
17416
|
|
|
17195
|
-
|
|
17417
|
+
if ( updateMap.get( skeleton ) !== frame ) {
|
|
17418
|
+
|
|
17419
|
+
skeleton.update();
|
|
17420
|
+
|
|
17421
|
+
updateMap.set( skeleton, frame );
|
|
17196
17422
|
|
|
17197
17423
|
}
|
|
17198
17424
|
|
|
@@ -17272,6 +17498,7 @@
|
|
|
17272
17498
|
*
|
|
17273
17499
|
*/
|
|
17274
17500
|
|
|
17501
|
+
|
|
17275
17502
|
const emptyTexture = /*@__PURE__*/ new Texture();
|
|
17276
17503
|
const emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();
|
|
17277
17504
|
const empty3dTexture = /*@__PURE__*/ new Data3DTexture();
|
|
@@ -18588,13 +18815,30 @@
|
|
|
18588
18815
|
|
|
18589
18816
|
}
|
|
18590
18817
|
|
|
18818
|
+
const shaderChunkMap = new Map( [
|
|
18819
|
+
[ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154
|
|
18820
|
+
[ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154
|
|
18821
|
+
[ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154
|
|
18822
|
+
] );
|
|
18823
|
+
|
|
18591
18824
|
function includeReplacer( match, include ) {
|
|
18592
18825
|
|
|
18593
|
-
|
|
18826
|
+
let string = ShaderChunk[ include ];
|
|
18594
18827
|
|
|
18595
18828
|
if ( string === undefined ) {
|
|
18596
18829
|
|
|
18597
|
-
|
|
18830
|
+
const newInclude = shaderChunkMap.get( include );
|
|
18831
|
+
|
|
18832
|
+
if ( newInclude !== undefined ) {
|
|
18833
|
+
|
|
18834
|
+
string = ShaderChunk[ newInclude ];
|
|
18835
|
+
console.warn( 'THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude );
|
|
18836
|
+
|
|
18837
|
+
} else {
|
|
18838
|
+
|
|
18839
|
+
throw new Error( 'Can not resolve #include <' + include + '>' );
|
|
18840
|
+
|
|
18841
|
+
}
|
|
18598
18842
|
|
|
18599
18843
|
}
|
|
18600
18844
|
|
|
@@ -18795,6 +19039,9 @@
|
|
|
18795
19039
|
|
|
18796
19040
|
prefixVertex = [
|
|
18797
19041
|
|
|
19042
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
19043
|
+
'#define SHADER_NAME ' + parameters.shaderName,
|
|
19044
|
+
|
|
18798
19045
|
customDefines
|
|
18799
19046
|
|
|
18800
19047
|
].filter( filterEmptyLine ).join( '\n' );
|
|
@@ -18808,6 +19055,10 @@
|
|
|
18808
19055
|
prefixFragment = [
|
|
18809
19056
|
|
|
18810
19057
|
customExtensions,
|
|
19058
|
+
|
|
19059
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
19060
|
+
'#define SHADER_NAME ' + parameters.shaderName,
|
|
19061
|
+
|
|
18811
19062
|
customDefines
|
|
18812
19063
|
|
|
18813
19064
|
].filter( filterEmptyLine ).join( '\n' );
|
|
@@ -18824,6 +19075,7 @@
|
|
|
18824
19075
|
|
|
18825
19076
|
generatePrecision( parameters ),
|
|
18826
19077
|
|
|
19078
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
18827
19079
|
'#define SHADER_NAME ' + parameters.shaderName,
|
|
18828
19080
|
|
|
18829
19081
|
customDefines,
|
|
@@ -18846,6 +19098,8 @@
|
|
|
18846
19098
|
parameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',
|
|
18847
19099
|
parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
|
|
18848
19100
|
|
|
19101
|
+
parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',
|
|
19102
|
+
|
|
18849
19103
|
parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
|
|
18850
19104
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
18851
19105
|
parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
|
|
@@ -18860,6 +19114,7 @@
|
|
|
18860
19114
|
parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',
|
|
18861
19115
|
parameters.metalnessMap ? '#define USE_METALNESSMAP' : '',
|
|
18862
19116
|
parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
|
|
19117
|
+
parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
|
|
18863
19118
|
|
|
18864
19119
|
parameters.transmission ? '#define USE_TRANSMISSION' : '',
|
|
18865
19120
|
parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
|
|
@@ -18882,6 +19137,8 @@
|
|
|
18882
19137
|
parameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',
|
|
18883
19138
|
parameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',
|
|
18884
19139
|
|
|
19140
|
+
parameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',
|
|
19141
|
+
|
|
18885
19142
|
parameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',
|
|
18886
19143
|
parameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',
|
|
18887
19144
|
parameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',
|
|
@@ -18901,7 +19158,7 @@
|
|
|
18901
19158
|
|
|
18902
19159
|
//
|
|
18903
19160
|
|
|
18904
|
-
parameters.vertexTangents ? '#define USE_TANGENT' : '',
|
|
19161
|
+
parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
|
|
18905
19162
|
parameters.vertexColors ? '#define USE_COLOR' : '',
|
|
18906
19163
|
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
|
|
18907
19164
|
parameters.vertexUv1s ? '#define USE_UV1' : '',
|
|
@@ -18928,6 +19185,8 @@
|
|
|
18928
19185
|
|
|
18929
19186
|
parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',
|
|
18930
19187
|
|
|
19188
|
+
parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
|
|
19189
|
+
|
|
18931
19190
|
parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
|
|
18932
19191
|
( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
|
|
18933
19192
|
|
|
@@ -19031,6 +19290,7 @@
|
|
|
19031
19290
|
|
|
19032
19291
|
generatePrecision( parameters ),
|
|
19033
19292
|
|
|
19293
|
+
'#define SHADER_TYPE ' + parameters.shaderType,
|
|
19034
19294
|
'#define SHADER_NAME ' + parameters.shaderName,
|
|
19035
19295
|
|
|
19036
19296
|
customDefines,
|
|
@@ -19055,6 +19315,9 @@
|
|
|
19055
19315
|
parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
|
|
19056
19316
|
parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
|
|
19057
19317
|
|
|
19318
|
+
parameters.anisotropy ? '#define USE_ANISOTROPY' : '',
|
|
19319
|
+
parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',
|
|
19320
|
+
|
|
19058
19321
|
parameters.clearcoat ? '#define USE_CLEARCOAT' : '',
|
|
19059
19322
|
parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
|
|
19060
19323
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
@@ -19073,6 +19336,7 @@
|
|
|
19073
19336
|
|
|
19074
19337
|
parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
|
|
19075
19338
|
parameters.alphaTest ? '#define USE_ALPHATEST' : '',
|
|
19339
|
+
parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
|
|
19076
19340
|
|
|
19077
19341
|
parameters.sheen ? '#define USE_SHEEN' : '',
|
|
19078
19342
|
parameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',
|
|
@@ -19082,7 +19346,7 @@
|
|
|
19082
19346
|
parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
|
|
19083
19347
|
parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
|
|
19084
19348
|
|
|
19085
|
-
parameters.vertexTangents ? '#define USE_TANGENT' : '',
|
|
19349
|
+
parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
|
|
19086
19350
|
parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
|
|
19087
19351
|
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
|
|
19088
19352
|
parameters.vertexUv1s ? '#define USE_UV1' : '',
|
|
@@ -19119,7 +19383,7 @@
|
|
|
19119
19383
|
parameters.dithering ? '#define DITHERING' : '',
|
|
19120
19384
|
parameters.opaque ? '#define OPAQUE' : '',
|
|
19121
19385
|
|
|
19122
|
-
ShaderChunk[ '
|
|
19386
|
+
ShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below
|
|
19123
19387
|
getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),
|
|
19124
19388
|
|
|
19125
19389
|
parameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',
|
|
@@ -19326,6 +19590,7 @@
|
|
|
19326
19590
|
|
|
19327
19591
|
//
|
|
19328
19592
|
|
|
19593
|
+
this.type = parameters.shaderType;
|
|
19329
19594
|
this.name = parameters.shaderName;
|
|
19330
19595
|
this.id = programIdCount ++;
|
|
19331
19596
|
this.cacheKey = cacheKey;
|
|
@@ -19493,11 +19758,9 @@
|
|
|
19493
19758
|
|
|
19494
19759
|
function getChannel( value ) {
|
|
19495
19760
|
|
|
19496
|
-
if ( value ===
|
|
19497
|
-
if ( value === 2 ) return 'uv2';
|
|
19498
|
-
if ( value === 3 ) return 'uv3';
|
|
19761
|
+
if ( value === 0 ) return 'uv';
|
|
19499
19762
|
|
|
19500
|
-
return
|
|
19763
|
+
return `uv${ value }`;
|
|
19501
19764
|
|
|
19502
19765
|
}
|
|
19503
19766
|
|
|
@@ -19579,11 +19842,14 @@
|
|
|
19579
19842
|
const HAS_METALNESSMAP = !! material.metalnessMap;
|
|
19580
19843
|
const HAS_ROUGHNESSMAP = !! material.roughnessMap;
|
|
19581
19844
|
|
|
19845
|
+
const HAS_ANISOTROPY = material.anisotropy > 0;
|
|
19582
19846
|
const HAS_CLEARCOAT = material.clearcoat > 0;
|
|
19583
19847
|
const HAS_IRIDESCENCE = material.iridescence > 0;
|
|
19584
19848
|
const HAS_SHEEN = material.sheen > 0;
|
|
19585
19849
|
const HAS_TRANSMISSION = material.transmission > 0;
|
|
19586
19850
|
|
|
19851
|
+
const HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;
|
|
19852
|
+
|
|
19587
19853
|
const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;
|
|
19588
19854
|
const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;
|
|
19589
19855
|
const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;
|
|
@@ -19607,6 +19873,8 @@
|
|
|
19607
19873
|
|
|
19608
19874
|
const HAS_ALPHATEST = material.alphaTest > 0;
|
|
19609
19875
|
|
|
19876
|
+
const HAS_ALPHAHASH = !! material.alphaHash;
|
|
19877
|
+
|
|
19610
19878
|
const HAS_EXTENSIONS = !! material.extensions;
|
|
19611
19879
|
|
|
19612
19880
|
const HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;
|
|
@@ -19618,7 +19886,8 @@
|
|
|
19618
19886
|
isWebGL2: IS_WEBGL2,
|
|
19619
19887
|
|
|
19620
19888
|
shaderID: shaderID,
|
|
19621
|
-
|
|
19889
|
+
shaderType: material.type,
|
|
19890
|
+
shaderName: material.name,
|
|
19622
19891
|
|
|
19623
19892
|
vertexShader: vertexShader,
|
|
19624
19893
|
fragmentShader: fragmentShader,
|
|
@@ -19656,6 +19925,9 @@
|
|
|
19656
19925
|
metalnessMap: HAS_METALNESSMAP,
|
|
19657
19926
|
roughnessMap: HAS_ROUGHNESSMAP,
|
|
19658
19927
|
|
|
19928
|
+
anisotropy: HAS_ANISOTROPY,
|
|
19929
|
+
anisotropyMap: HAS_ANISOTROPYMAP,
|
|
19930
|
+
|
|
19659
19931
|
clearcoat: HAS_CLEARCOAT,
|
|
19660
19932
|
clearcoatMap: HAS_CLEARCOATMAP,
|
|
19661
19933
|
clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,
|
|
@@ -19683,6 +19955,7 @@
|
|
|
19683
19955
|
|
|
19684
19956
|
alphaMap: HAS_ALPHAMAP,
|
|
19685
19957
|
alphaTest: HAS_ALPHATEST,
|
|
19958
|
+
alphaHash: HAS_ALPHAHASH,
|
|
19686
19959
|
|
|
19687
19960
|
combine: material.combine,
|
|
19688
19961
|
|
|
@@ -19699,6 +19972,8 @@
|
|
|
19699
19972
|
metalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),
|
|
19700
19973
|
roughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),
|
|
19701
19974
|
|
|
19975
|
+
anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),
|
|
19976
|
+
|
|
19702
19977
|
clearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),
|
|
19703
19978
|
clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),
|
|
19704
19979
|
clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),
|
|
@@ -19720,7 +19995,7 @@
|
|
|
19720
19995
|
|
|
19721
19996
|
//
|
|
19722
19997
|
|
|
19723
|
-
vertexTangents:
|
|
19998
|
+
vertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),
|
|
19724
19999
|
vertexColors: material.vertexColors,
|
|
19725
20000
|
vertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,
|
|
19726
20001
|
vertexUv1s: HAS_ATTRIBUTE_UV1,
|
|
@@ -19852,6 +20127,7 @@
|
|
|
19852
20127
|
array.push( parameters.emissiveMapUv );
|
|
19853
20128
|
array.push( parameters.metalnessMapUv );
|
|
19854
20129
|
array.push( parameters.roughnessMapUv );
|
|
20130
|
+
array.push( parameters.anisotropyMapUv );
|
|
19855
20131
|
array.push( parameters.clearcoatMapUv );
|
|
19856
20132
|
array.push( parameters.clearcoatNormalMapUv );
|
|
19857
20133
|
array.push( parameters.clearcoatRoughnessMapUv );
|
|
@@ -19925,6 +20201,8 @@
|
|
|
19925
20201
|
_programLayers.enable( 15 );
|
|
19926
20202
|
if ( parameters.vertexTangents )
|
|
19927
20203
|
_programLayers.enable( 16 );
|
|
20204
|
+
if ( parameters.anisotropy )
|
|
20205
|
+
_programLayers.enable( 17 );
|
|
19928
20206
|
|
|
19929
20207
|
array.push( _programLayers.mask );
|
|
19930
20208
|
_programLayers.disableAll();
|
|
@@ -23305,6 +23583,17 @@
|
|
|
23305
23583
|
[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR
|
|
23306
23584
|
};
|
|
23307
23585
|
|
|
23586
|
+
const compareToGL = {
|
|
23587
|
+
[ NeverCompare ]: _gl.NEVER,
|
|
23588
|
+
[ AlwaysCompare ]: _gl.ALWAYS,
|
|
23589
|
+
[ LessCompare ]: _gl.LESS,
|
|
23590
|
+
[ LessEqualCompare ]: _gl.LEQUAL,
|
|
23591
|
+
[ EqualCompare ]: _gl.EQUAL,
|
|
23592
|
+
[ GreaterEqualCompare ]: _gl.GEQUAL,
|
|
23593
|
+
[ GreaterCompare ]: _gl.GREATER,
|
|
23594
|
+
[ NotEqualCompare ]: _gl.NOTEQUAL
|
|
23595
|
+
};
|
|
23596
|
+
|
|
23308
23597
|
function setTextureParameters( textureType, texture, supportsMips ) {
|
|
23309
23598
|
|
|
23310
23599
|
if ( supportsMips ) {
|
|
@@ -23349,6 +23638,13 @@
|
|
|
23349
23638
|
|
|
23350
23639
|
}
|
|
23351
23640
|
|
|
23641
|
+
if ( texture.compareFunction ) {
|
|
23642
|
+
|
|
23643
|
+
_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );
|
|
23644
|
+
_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );
|
|
23645
|
+
|
|
23646
|
+
}
|
|
23647
|
+
|
|
23352
23648
|
if ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {
|
|
23353
23649
|
|
|
23354
23650
|
const extension = extensions.get( 'EXT_texture_filter_anisotropic' );
|
|
@@ -25442,9 +25738,31 @@
|
|
|
25442
25738
|
this.flipY = false;
|
|
25443
25739
|
this.generateMipmaps = false;
|
|
25444
25740
|
|
|
25741
|
+
this.compareFunction = null;
|
|
25742
|
+
|
|
25445
25743
|
}
|
|
25446
25744
|
|
|
25447
25745
|
|
|
25746
|
+
copy( source ) {
|
|
25747
|
+
|
|
25748
|
+
super.copy( source );
|
|
25749
|
+
|
|
25750
|
+
this.compareFunction = source.compareFunction;
|
|
25751
|
+
|
|
25752
|
+
return this;
|
|
25753
|
+
|
|
25754
|
+
}
|
|
25755
|
+
|
|
25756
|
+
toJSON( meta ) {
|
|
25757
|
+
|
|
25758
|
+
const data = super.toJSON( meta );
|
|
25759
|
+
|
|
25760
|
+
if ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;
|
|
25761
|
+
|
|
25762
|
+
return data;
|
|
25763
|
+
|
|
25764
|
+
}
|
|
25765
|
+
|
|
25448
25766
|
}
|
|
25449
25767
|
|
|
25450
25768
|
class WebXRManager extends EventDispatcher {
|
|
@@ -25477,9 +25795,6 @@
|
|
|
25477
25795
|
const controllers = [];
|
|
25478
25796
|
const controllerInputSources = [];
|
|
25479
25797
|
|
|
25480
|
-
const planes = new Set();
|
|
25481
|
-
const planesLastChangedTimes = new Map();
|
|
25482
|
-
|
|
25483
25798
|
//
|
|
25484
25799
|
|
|
25485
25800
|
const cameraL = new PerspectiveCamera();
|
|
@@ -25492,9 +25807,9 @@
|
|
|
25492
25807
|
|
|
25493
25808
|
const cameras = [ cameraL, cameraR ];
|
|
25494
25809
|
|
|
25495
|
-
const
|
|
25496
|
-
|
|
25497
|
-
|
|
25810
|
+
const cameraXR = new ArrayCamera();
|
|
25811
|
+
cameraXR.layers.enable( 1 );
|
|
25812
|
+
cameraXR.layers.enable( 2 );
|
|
25498
25813
|
|
|
25499
25814
|
let _currentDepthNear = null;
|
|
25500
25815
|
let _currentDepthFar = null;
|
|
@@ -25946,27 +26261,27 @@
|
|
|
25946
26261
|
|
|
25947
26262
|
if ( session === null ) return;
|
|
25948
26263
|
|
|
25949
|
-
|
|
25950
|
-
|
|
26264
|
+
cameraXR.near = cameraR.near = cameraL.near = camera.near;
|
|
26265
|
+
cameraXR.far = cameraR.far = cameraL.far = camera.far;
|
|
25951
26266
|
|
|
25952
|
-
if ( _currentDepthNear !==
|
|
26267
|
+
if ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {
|
|
25953
26268
|
|
|
25954
26269
|
// Note that the new renderState won't apply until the next frame. See #18320
|
|
25955
26270
|
|
|
25956
26271
|
session.updateRenderState( {
|
|
25957
|
-
depthNear:
|
|
25958
|
-
depthFar:
|
|
26272
|
+
depthNear: cameraXR.near,
|
|
26273
|
+
depthFar: cameraXR.far
|
|
25959
26274
|
} );
|
|
25960
26275
|
|
|
25961
|
-
_currentDepthNear =
|
|
25962
|
-
_currentDepthFar =
|
|
26276
|
+
_currentDepthNear = cameraXR.near;
|
|
26277
|
+
_currentDepthFar = cameraXR.far;
|
|
25963
26278
|
|
|
25964
26279
|
}
|
|
25965
26280
|
|
|
25966
26281
|
const parent = camera.parent;
|
|
25967
|
-
const cameras =
|
|
26282
|
+
const cameras = cameraXR.cameras;
|
|
25968
26283
|
|
|
25969
|
-
updateCamera(
|
|
26284
|
+
updateCamera( cameraXR, parent );
|
|
25970
26285
|
|
|
25971
26286
|
for ( let i = 0; i < cameras.length; i ++ ) {
|
|
25972
26287
|
|
|
@@ -25978,33 +26293,33 @@
|
|
|
25978
26293
|
|
|
25979
26294
|
if ( cameras.length === 2 ) {
|
|
25980
26295
|
|
|
25981
|
-
setProjectionFromUnion(
|
|
26296
|
+
setProjectionFromUnion( cameraXR, cameraL, cameraR );
|
|
25982
26297
|
|
|
25983
26298
|
} else {
|
|
25984
26299
|
|
|
25985
26300
|
// assume single camera setup (AR)
|
|
25986
26301
|
|
|
25987
|
-
|
|
26302
|
+
cameraXR.projectionMatrix.copy( cameraL.projectionMatrix );
|
|
25988
26303
|
|
|
25989
26304
|
}
|
|
25990
26305
|
|
|
25991
26306
|
// update user camera and its children
|
|
25992
26307
|
|
|
25993
|
-
updateUserCamera( camera,
|
|
26308
|
+
updateUserCamera( camera, cameraXR, parent );
|
|
25994
26309
|
|
|
25995
26310
|
};
|
|
25996
26311
|
|
|
25997
|
-
function updateUserCamera( camera,
|
|
26312
|
+
function updateUserCamera( camera, cameraXR, parent ) {
|
|
25998
26313
|
|
|
25999
26314
|
if ( parent === null ) {
|
|
26000
26315
|
|
|
26001
|
-
camera.matrix.copy(
|
|
26316
|
+
camera.matrix.copy( cameraXR.matrixWorld );
|
|
26002
26317
|
|
|
26003
26318
|
} else {
|
|
26004
26319
|
|
|
26005
26320
|
camera.matrix.copy( parent.matrixWorld );
|
|
26006
26321
|
camera.matrix.invert();
|
|
26007
|
-
camera.matrix.multiply(
|
|
26322
|
+
camera.matrix.multiply( cameraXR.matrixWorld );
|
|
26008
26323
|
|
|
26009
26324
|
}
|
|
26010
26325
|
|
|
@@ -26019,8 +26334,8 @@
|
|
|
26019
26334
|
|
|
26020
26335
|
}
|
|
26021
26336
|
|
|
26022
|
-
camera.projectionMatrix.copy(
|
|
26023
|
-
camera.projectionMatrixInverse.copy(
|
|
26337
|
+
camera.projectionMatrix.copy( cameraXR.projectionMatrix );
|
|
26338
|
+
camera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );
|
|
26024
26339
|
|
|
26025
26340
|
if ( camera.isPerspectiveCamera ) {
|
|
26026
26341
|
|
|
@@ -26033,7 +26348,7 @@
|
|
|
26033
26348
|
|
|
26034
26349
|
this.getCamera = function () {
|
|
26035
26350
|
|
|
26036
|
-
return
|
|
26351
|
+
return cameraXR;
|
|
26037
26352
|
|
|
26038
26353
|
};
|
|
26039
26354
|
|
|
@@ -26070,12 +26385,6 @@
|
|
|
26070
26385
|
|
|
26071
26386
|
};
|
|
26072
26387
|
|
|
26073
|
-
this.getPlanes = function () {
|
|
26074
|
-
|
|
26075
|
-
return planes;
|
|
26076
|
-
|
|
26077
|
-
};
|
|
26078
|
-
|
|
26079
26388
|
// Animation Loop
|
|
26080
26389
|
|
|
26081
26390
|
let onAnimationFrameCallback = null;
|
|
@@ -26096,14 +26405,14 @@
|
|
|
26096
26405
|
|
|
26097
26406
|
}
|
|
26098
26407
|
|
|
26099
|
-
let
|
|
26408
|
+
let cameraXRNeedsUpdate = false;
|
|
26100
26409
|
|
|
26101
|
-
// check if it's necessary to rebuild
|
|
26410
|
+
// check if it's necessary to rebuild cameraXR's camera list
|
|
26102
26411
|
|
|
26103
|
-
if ( views.length !==
|
|
26412
|
+
if ( views.length !== cameraXR.cameras.length ) {
|
|
26104
26413
|
|
|
26105
|
-
|
|
26106
|
-
|
|
26414
|
+
cameraXR.cameras.length = 0;
|
|
26415
|
+
cameraXRNeedsUpdate = true;
|
|
26107
26416
|
|
|
26108
26417
|
}
|
|
26109
26418
|
|
|
@@ -26155,14 +26464,14 @@
|
|
|
26155
26464
|
|
|
26156
26465
|
if ( i === 0 ) {
|
|
26157
26466
|
|
|
26158
|
-
|
|
26159
|
-
|
|
26467
|
+
cameraXR.matrix.copy( camera.matrix );
|
|
26468
|
+
cameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );
|
|
26160
26469
|
|
|
26161
26470
|
}
|
|
26162
26471
|
|
|
26163
|
-
if (
|
|
26472
|
+
if ( cameraXRNeedsUpdate === true ) {
|
|
26164
26473
|
|
|
26165
|
-
|
|
26474
|
+
cameraXR.cameras.push( camera );
|
|
26166
26475
|
|
|
26167
26476
|
}
|
|
26168
26477
|
|
|
@@ -26189,60 +26498,7 @@
|
|
|
26189
26498
|
|
|
26190
26499
|
if ( frame.detectedPlanes ) {
|
|
26191
26500
|
|
|
26192
|
-
scope.dispatchEvent( { type: 'planesdetected', data: frame
|
|
26193
|
-
|
|
26194
|
-
let planesToRemove = null;
|
|
26195
|
-
|
|
26196
|
-
for ( const plane of planes ) {
|
|
26197
|
-
|
|
26198
|
-
if ( ! frame.detectedPlanes.has( plane ) ) {
|
|
26199
|
-
|
|
26200
|
-
if ( planesToRemove === null ) {
|
|
26201
|
-
|
|
26202
|
-
planesToRemove = [];
|
|
26203
|
-
|
|
26204
|
-
}
|
|
26205
|
-
|
|
26206
|
-
planesToRemove.push( plane );
|
|
26207
|
-
|
|
26208
|
-
}
|
|
26209
|
-
|
|
26210
|
-
}
|
|
26211
|
-
|
|
26212
|
-
if ( planesToRemove !== null ) {
|
|
26213
|
-
|
|
26214
|
-
for ( const plane of planesToRemove ) {
|
|
26215
|
-
|
|
26216
|
-
planes.delete( plane );
|
|
26217
|
-
planesLastChangedTimes.delete( plane );
|
|
26218
|
-
scope.dispatchEvent( { type: 'planeremoved', data: plane } );
|
|
26219
|
-
|
|
26220
|
-
}
|
|
26221
|
-
|
|
26222
|
-
}
|
|
26223
|
-
|
|
26224
|
-
for ( const plane of frame.detectedPlanes ) {
|
|
26225
|
-
|
|
26226
|
-
if ( ! planes.has( plane ) ) {
|
|
26227
|
-
|
|
26228
|
-
planes.add( plane );
|
|
26229
|
-
planesLastChangedTimes.set( plane, frame.lastChangedTime );
|
|
26230
|
-
scope.dispatchEvent( { type: 'planeadded', data: plane } );
|
|
26231
|
-
|
|
26232
|
-
} else {
|
|
26233
|
-
|
|
26234
|
-
const lastKnownTime = planesLastChangedTimes.get( plane );
|
|
26235
|
-
|
|
26236
|
-
if ( plane.lastChangedTime > lastKnownTime ) {
|
|
26237
|
-
|
|
26238
|
-
planesLastChangedTimes.set( plane, plane.lastChangedTime );
|
|
26239
|
-
scope.dispatchEvent( { type: 'planechanged', data: plane } );
|
|
26240
|
-
|
|
26241
|
-
}
|
|
26242
|
-
|
|
26243
|
-
}
|
|
26244
|
-
|
|
26245
|
-
}
|
|
26501
|
+
scope.dispatchEvent( { type: 'planesdetected', data: frame } );
|
|
26246
26502
|
|
|
26247
26503
|
}
|
|
26248
26504
|
|
|
@@ -26554,6 +26810,8 @@
|
|
|
26554
26810
|
|
|
26555
26811
|
uniforms.alphaMap.value = material.alphaMap;
|
|
26556
26812
|
|
|
26813
|
+
refreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );
|
|
26814
|
+
|
|
26557
26815
|
}
|
|
26558
26816
|
|
|
26559
26817
|
if ( material.alphaTest > 0 ) {
|
|
@@ -26582,6 +26840,8 @@
|
|
|
26582
26840
|
|
|
26583
26841
|
uniforms.alphaMap.value = material.alphaMap;
|
|
26584
26842
|
|
|
26843
|
+
refreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );
|
|
26844
|
+
|
|
26585
26845
|
}
|
|
26586
26846
|
|
|
26587
26847
|
if ( material.alphaTest > 0 ) {
|
|
@@ -26763,6 +27023,20 @@
|
|
|
26763
27023
|
|
|
26764
27024
|
}
|
|
26765
27025
|
|
|
27026
|
+
if ( material.anisotropy > 0 ) {
|
|
27027
|
+
|
|
27028
|
+
uniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );
|
|
27029
|
+
|
|
27030
|
+
if ( material.anisotropyMap ) {
|
|
27031
|
+
|
|
27032
|
+
uniforms.anisotropyMap.value = material.anisotropyMap;
|
|
27033
|
+
|
|
27034
|
+
refreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );
|
|
27035
|
+
|
|
27036
|
+
}
|
|
27037
|
+
|
|
27038
|
+
}
|
|
27039
|
+
|
|
26766
27040
|
uniforms.specularIntensity.value = material.specularIntensity;
|
|
26767
27041
|
uniforms.specularColor.value.copy( material.specularColor );
|
|
26768
27042
|
|
|
@@ -27261,6 +27535,9 @@
|
|
|
27261
27535
|
|
|
27262
27536
|
}
|
|
27263
27537
|
|
|
27538
|
+
const uintClearColor = new Uint32Array( 4 );
|
|
27539
|
+
const intClearColor = new Int32Array( 4 );
|
|
27540
|
+
|
|
27264
27541
|
let currentRenderList = null;
|
|
27265
27542
|
let currentRenderState = null;
|
|
27266
27543
|
|
|
@@ -27337,6 +27614,9 @@
|
|
|
27337
27614
|
const _currentScissor = new Vector4();
|
|
27338
27615
|
let _currentScissorTest = null;
|
|
27339
27616
|
|
|
27617
|
+
const _currentClearColor = new Color$1( 0x000000 );
|
|
27618
|
+
let _currentClearAlpha = 0;
|
|
27619
|
+
|
|
27340
27620
|
//
|
|
27341
27621
|
|
|
27342
27622
|
let _width = canvas.width;
|
|
@@ -27367,6 +27647,7 @@
|
|
|
27367
27647
|
|
|
27368
27648
|
const _projScreenMatrix = new Matrix4();
|
|
27369
27649
|
|
|
27650
|
+
const _vector2 = new Vector2();
|
|
27370
27651
|
const _vector3 = new Vector3();
|
|
27371
27652
|
|
|
27372
27653
|
const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
|
|
@@ -27444,6 +27725,12 @@
|
|
|
27444
27725
|
|
|
27445
27726
|
}
|
|
27446
27727
|
|
|
27728
|
+
if ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153
|
|
27729
|
+
|
|
27730
|
+
console.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );
|
|
27731
|
+
|
|
27732
|
+
}
|
|
27733
|
+
|
|
27447
27734
|
// Some experimental-webgl implementations do not have getShaderPrecisionFormat
|
|
27448
27735
|
|
|
27449
27736
|
if ( _gl.getShaderPrecisionFormat === undefined ) {
|
|
@@ -27725,7 +28012,63 @@
|
|
|
27725
28012
|
|
|
27726
28013
|
let bits = 0;
|
|
27727
28014
|
|
|
27728
|
-
if ( color )
|
|
28015
|
+
if ( color ) {
|
|
28016
|
+
|
|
28017
|
+
// check if we're trying to clear an integer target
|
|
28018
|
+
let isIntegerFormat = false;
|
|
28019
|
+
if ( _currentRenderTarget !== null ) {
|
|
28020
|
+
|
|
28021
|
+
const targetFormat = _currentRenderTarget.texture.format;
|
|
28022
|
+
isIntegerFormat = targetFormat === RGBAIntegerFormat ||
|
|
28023
|
+
targetFormat === RGIntegerFormat ||
|
|
28024
|
+
targetFormat === RedIntegerFormat;
|
|
28025
|
+
|
|
28026
|
+
}
|
|
28027
|
+
|
|
28028
|
+
// use the appropriate clear functions to clear the target if it's a signed
|
|
28029
|
+
// or unsigned integer target
|
|
28030
|
+
if ( isIntegerFormat ) {
|
|
28031
|
+
|
|
28032
|
+
const targetType = _currentRenderTarget.texture.type;
|
|
28033
|
+
const isUnsignedType = targetType === UnsignedByteType ||
|
|
28034
|
+
targetType === UnsignedIntType ||
|
|
28035
|
+
targetType === UnsignedShortType ||
|
|
28036
|
+
targetType === UnsignedInt248Type ||
|
|
28037
|
+
targetType === UnsignedShort4444Type ||
|
|
28038
|
+
targetType === UnsignedShort5551Type;
|
|
28039
|
+
|
|
28040
|
+
const clearColor = background.getClearColor();
|
|
28041
|
+
const a = background.getClearAlpha();
|
|
28042
|
+
const r = clearColor.r;
|
|
28043
|
+
const g = clearColor.g;
|
|
28044
|
+
const b = clearColor.b;
|
|
28045
|
+
|
|
28046
|
+
if ( isUnsignedType ) {
|
|
28047
|
+
|
|
28048
|
+
uintClearColor[ 0 ] = r;
|
|
28049
|
+
uintClearColor[ 1 ] = g;
|
|
28050
|
+
uintClearColor[ 2 ] = b;
|
|
28051
|
+
uintClearColor[ 3 ] = a;
|
|
28052
|
+
_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );
|
|
28053
|
+
|
|
28054
|
+
} else {
|
|
28055
|
+
|
|
28056
|
+
intClearColor[ 0 ] = r;
|
|
28057
|
+
intClearColor[ 1 ] = g;
|
|
28058
|
+
intClearColor[ 2 ] = b;
|
|
28059
|
+
intClearColor[ 3 ] = a;
|
|
28060
|
+
_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );
|
|
28061
|
+
|
|
28062
|
+
}
|
|
28063
|
+
|
|
28064
|
+
} else {
|
|
28065
|
+
|
|
28066
|
+
bits |= _gl.COLOR_BUFFER_BIT;
|
|
28067
|
+
|
|
28068
|
+
}
|
|
28069
|
+
|
|
28070
|
+
}
|
|
28071
|
+
|
|
27729
28072
|
if ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;
|
|
27730
28073
|
if ( stencil ) bits |= _gl.STENCIL_BUFFER_BIT;
|
|
27731
28074
|
|
|
@@ -28184,6 +28527,8 @@
|
|
|
28184
28527
|
|
|
28185
28528
|
//
|
|
28186
28529
|
|
|
28530
|
+
this.info.render.frame ++;
|
|
28531
|
+
|
|
28187
28532
|
if ( _clippingEnabled === true ) clipping.beginShadows();
|
|
28188
28533
|
|
|
28189
28534
|
const shadowsArray = currentRenderState.state.shadowsArray;
|
|
@@ -28196,6 +28541,7 @@
|
|
|
28196
28541
|
|
|
28197
28542
|
if ( this.info.autoReset === true ) this.info.reset();
|
|
28198
28543
|
|
|
28544
|
+
|
|
28199
28545
|
//
|
|
28200
28546
|
|
|
28201
28547
|
background.render( currentRenderList, scene );
|
|
@@ -28324,28 +28670,24 @@
|
|
|
28324
28670
|
|
|
28325
28671
|
if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {
|
|
28326
28672
|
|
|
28327
|
-
|
|
28328
|
-
|
|
28329
|
-
// update skeleton only once in a frame
|
|
28330
|
-
|
|
28331
|
-
if ( object.skeleton.frame !== info.render.frame ) {
|
|
28673
|
+
const geometry = objects.update( object );
|
|
28674
|
+
const material = object.material;
|
|
28332
28675
|
|
|
28333
|
-
|
|
28334
|
-
object.skeleton.frame = info.render.frame;
|
|
28676
|
+
if ( sortObjects ) {
|
|
28335
28677
|
|
|
28336
|
-
|
|
28678
|
+
if ( object.boundingSphere !== undefined ) {
|
|
28337
28679
|
|
|
28338
|
-
|
|
28680
|
+
if ( object.boundingSphere === null ) object.computeBoundingSphere();
|
|
28681
|
+
_vector3.copy( object.boundingSphere.center );
|
|
28339
28682
|
|
|
28340
|
-
|
|
28341
|
-
const material = object.material;
|
|
28683
|
+
} else {
|
|
28342
28684
|
|
|
28343
|
-
|
|
28685
|
+
if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
|
|
28686
|
+
_vector3.copy( geometry.boundingSphere.center );
|
|
28344
28687
|
|
|
28345
|
-
|
|
28688
|
+
}
|
|
28346
28689
|
|
|
28347
28690
|
_vector3
|
|
28348
|
-
.copy( geometry.boundingSphere.center )
|
|
28349
28691
|
.applyMatrix4( object.matrixWorld )
|
|
28350
28692
|
.applyMatrix4( _projScreenMatrix );
|
|
28351
28693
|
|
|
@@ -28420,15 +28762,15 @@
|
|
|
28420
28762
|
|
|
28421
28763
|
function renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {
|
|
28422
28764
|
|
|
28423
|
-
|
|
28765
|
+
const isWebGL2 = capabilities.isWebGL2;
|
|
28424
28766
|
|
|
28425
|
-
|
|
28767
|
+
if ( _transmissionRenderTarget === null ) {
|
|
28426
28768
|
|
|
28427
|
-
_transmissionRenderTarget = new WebGLRenderTarget(
|
|
28769
|
+
_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {
|
|
28428
28770
|
generateMipmaps: true,
|
|
28429
28771
|
type: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,
|
|
28430
28772
|
minFilter: LinearMipmapLinearFilter,
|
|
28431
|
-
samples: ( isWebGL2
|
|
28773
|
+
samples: ( isWebGL2 ) ? 4 : 0
|
|
28432
28774
|
} );
|
|
28433
28775
|
|
|
28434
28776
|
// debug
|
|
@@ -28443,10 +28785,27 @@
|
|
|
28443
28785
|
|
|
28444
28786
|
}
|
|
28445
28787
|
|
|
28788
|
+
_this.getDrawingBufferSize( _vector2 );
|
|
28789
|
+
|
|
28790
|
+
if ( isWebGL2 ) {
|
|
28791
|
+
|
|
28792
|
+
_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );
|
|
28793
|
+
|
|
28794
|
+
} else {
|
|
28795
|
+
|
|
28796
|
+
_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );
|
|
28797
|
+
|
|
28798
|
+
}
|
|
28799
|
+
|
|
28446
28800
|
//
|
|
28447
28801
|
|
|
28448
28802
|
const currentRenderTarget = _this.getRenderTarget();
|
|
28449
28803
|
_this.setRenderTarget( _transmissionRenderTarget );
|
|
28804
|
+
|
|
28805
|
+
_this.getClearColor( _currentClearColor );
|
|
28806
|
+
_currentClearAlpha = _this.getClearAlpha();
|
|
28807
|
+
if ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );
|
|
28808
|
+
|
|
28450
28809
|
_this.clear();
|
|
28451
28810
|
|
|
28452
28811
|
// Turn off the features which can affect the frag color for opaque objects pass.
|
|
@@ -28497,6 +28856,8 @@
|
|
|
28497
28856
|
|
|
28498
28857
|
_this.setRenderTarget( currentRenderTarget );
|
|
28499
28858
|
|
|
28859
|
+
_this.setClearColor( _currentClearColor, _currentClearAlpha );
|
|
28860
|
+
|
|
28500
28861
|
_this.toneMapping = currentToneMapping;
|
|
28501
28862
|
|
|
28502
28863
|
}
|
|
@@ -28700,7 +29061,7 @@
|
|
|
28700
29061
|
const colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );
|
|
28701
29062
|
const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );
|
|
28702
29063
|
const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
|
|
28703
|
-
const vertexTangents = !!
|
|
29064
|
+
const vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );
|
|
28704
29065
|
const morphTargets = !! geometry.morphAttributes.position;
|
|
28705
29066
|
const morphNormals = !! geometry.morphAttributes.normal;
|
|
28706
29067
|
const morphColors = !! geometry.morphAttributes.color;
|
|
@@ -29474,6 +29835,12 @@
|
|
|
29474
29835
|
|
|
29475
29836
|
}
|
|
29476
29837
|
|
|
29838
|
+
get coordinateSystem() {
|
|
29839
|
+
|
|
29840
|
+
return WebGLCoordinateSystem;
|
|
29841
|
+
|
|
29842
|
+
}
|
|
29843
|
+
|
|
29477
29844
|
get physicallyCorrectLights() { // @deprecated, r150
|
|
29478
29845
|
|
|
29479
29846
|
console.warn( 'THREE.WebGLRenderer: the property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead.' );
|
|
@@ -29566,20 +29933,6 @@
|
|
|
29566
29933
|
|
|
29567
29934
|
}
|
|
29568
29935
|
|
|
29569
|
-
get autoUpdate() { // @deprecated, r144
|
|
29570
|
-
|
|
29571
|
-
console.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );
|
|
29572
|
-
return this.matrixWorldAutoUpdate;
|
|
29573
|
-
|
|
29574
|
-
}
|
|
29575
|
-
|
|
29576
|
-
set autoUpdate( value ) { // @deprecated, r144
|
|
29577
|
-
|
|
29578
|
-
console.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );
|
|
29579
|
-
this.matrixWorldAutoUpdate = value;
|
|
29580
|
-
|
|
29581
|
-
}
|
|
29582
|
-
|
|
29583
29936
|
}
|
|
29584
29937
|
|
|
29585
29938
|
class InterleavedBuffer {
|
|
@@ -30777,7 +31130,7 @@
|
|
|
30777
31130
|
|
|
30778
31131
|
const data = {
|
|
30779
31132
|
metadata: {
|
|
30780
|
-
version: 4.
|
|
31133
|
+
version: 4.6,
|
|
30781
31134
|
type: 'Curve',
|
|
30782
31135
|
generator: 'Curve.toJSON'
|
|
30783
31136
|
}
|
|
@@ -33661,6 +34014,7 @@
|
|
|
33661
34014
|
* }
|
|
33662
34015
|
*/
|
|
33663
34016
|
|
|
34017
|
+
|
|
33664
34018
|
class ExtrudeGeometry extends BufferGeometry {
|
|
33665
34019
|
|
|
33666
34020
|
constructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {
|
|
@@ -35383,6 +35737,8 @@
|
|
|
35383
35737
|
|
|
35384
35738
|
}
|
|
35385
35739
|
|
|
35740
|
+
Loader.DEFAULT_MATERIAL_NAME = '__DEFAULT';
|
|
35741
|
+
|
|
35386
35742
|
class ImageLoader extends Loader {
|
|
35387
35743
|
|
|
35388
35744
|
constructor( manager ) {
|
|
@@ -36029,6 +36385,7 @@
|
|
|
36029
36385
|
* The azimuthal angle (theta) is measured from the positive z-axis.
|
|
36030
36386
|
*/
|
|
36031
36387
|
|
|
36388
|
+
|
|
36032
36389
|
class Spherical {
|
|
36033
36390
|
|
|
36034
36391
|
constructor( radius = 1, phi = 0, theta = 0 ) {
|
|
@@ -38246,18 +38603,6 @@
|
|
|
38246
38603
|
};
|
|
38247
38604
|
return Tween;
|
|
38248
38605
|
}());
|
|
38249
|
-
|
|
38250
|
-
var VERSION = '20.0.3';
|
|
38251
|
-
|
|
38252
|
-
/**
|
|
38253
|
-
* Tween.js - Licensed under the MIT license
|
|
38254
|
-
* https://github.com/tweenjs/tween.js
|
|
38255
|
-
* ----------------------------------------------
|
|
38256
|
-
*
|
|
38257
|
-
* See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.
|
|
38258
|
-
* Thank you all, you're awesome!
|
|
38259
|
-
*/
|
|
38260
|
-
var nextId = Sequence.nextId;
|
|
38261
38606
|
/**
|
|
38262
38607
|
* Controlling groups of tweens
|
|
38263
38608
|
*
|
|
@@ -38269,26 +38614,11 @@
|
|
|
38269
38614
|
// Modules and CommonJS, without build hacks, and so as not to break the
|
|
38270
38615
|
// existing API.
|
|
38271
38616
|
// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881
|
|
38272
|
-
|
|
38273
|
-
|
|
38274
|
-
|
|
38275
|
-
|
|
38617
|
+
TWEEN.getAll.bind(TWEEN);
|
|
38618
|
+
TWEEN.removeAll.bind(TWEEN);
|
|
38619
|
+
TWEEN.add.bind(TWEEN);
|
|
38620
|
+
TWEEN.remove.bind(TWEEN);
|
|
38276
38621
|
var update = TWEEN.update.bind(TWEEN);
|
|
38277
|
-
var exports$1 = {
|
|
38278
|
-
Easing: Easing,
|
|
38279
|
-
Group: Group,
|
|
38280
|
-
Interpolation: Interpolation,
|
|
38281
|
-
now: now,
|
|
38282
|
-
Sequence: Sequence,
|
|
38283
|
-
nextId: nextId,
|
|
38284
|
-
Tween: Tween,
|
|
38285
|
-
VERSION: VERSION,
|
|
38286
|
-
getAll: getAll,
|
|
38287
|
-
removeAll: removeAll,
|
|
38288
|
-
add: add,
|
|
38289
|
-
remove: remove,
|
|
38290
|
-
update: update,
|
|
38291
|
-
};
|
|
38292
38622
|
|
|
38293
38623
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
38294
38624
|
|
|
@@ -42082,6 +42412,7 @@
|
|
|
42082
42412
|
let TypedArray;
|
|
42083
42413
|
let itemSize;
|
|
42084
42414
|
let normalized;
|
|
42415
|
+
let gpuType = - 1;
|
|
42085
42416
|
let arrayLength = 0;
|
|
42086
42417
|
|
|
42087
42418
|
for ( let i = 0; i < attributes.length; ++ i ) {
|
|
@@ -42119,6 +42450,14 @@
|
|
|
42119
42450
|
|
|
42120
42451
|
}
|
|
42121
42452
|
|
|
42453
|
+
if ( gpuType === - 1 ) gpuType = attribute.gpuType;
|
|
42454
|
+
if ( gpuType !== attribute.gpuType ) {
|
|
42455
|
+
|
|
42456
|
+
console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes.' );
|
|
42457
|
+
return null;
|
|
42458
|
+
|
|
42459
|
+
}
|
|
42460
|
+
|
|
42122
42461
|
arrayLength += attribute.array.length;
|
|
42123
42462
|
|
|
42124
42463
|
}
|
|
@@ -42134,7 +42473,14 @@
|
|
|
42134
42473
|
|
|
42135
42474
|
}
|
|
42136
42475
|
|
|
42137
|
-
|
|
42476
|
+
const result = new BufferAttribute( array, itemSize, normalized );
|
|
42477
|
+
if ( gpuType !== undefined ) {
|
|
42478
|
+
|
|
42479
|
+
result.gpuType = gpuType;
|
|
42480
|
+
|
|
42481
|
+
}
|
|
42482
|
+
|
|
42483
|
+
return result;
|
|
42138
42484
|
|
|
42139
42485
|
}
|
|
42140
42486
|
|
|
@@ -43130,7 +43476,7 @@
|
|
|
43130
43476
|
});
|
|
43131
43477
|
|
|
43132
43478
|
var index$1 = (function (p) {
|
|
43133
|
-
return p
|
|
43479
|
+
return typeof p === 'function' ? p // fn
|
|
43134
43480
|
: typeof p === 'string' ? function (obj) {
|
|
43135
43481
|
return obj[p];
|
|
43136
43482
|
} // property name
|
|
@@ -46221,8 +46567,6 @@
|
|
|
46221
46567
|
const detright = (ax - cx) * (by - cy);
|
|
46222
46568
|
const det = detleft - detright;
|
|
46223
46569
|
|
|
46224
|
-
if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;
|
|
46225
|
-
|
|
46226
46570
|
const detsum = Math.abs(detleft + detright);
|
|
46227
46571
|
if (Math.abs(det) >= ccwerrboundA * detsum) return det;
|
|
46228
46572
|
|
|
@@ -64563,6 +64907,7 @@
|
|
|
64563
64907
|
* }
|
|
64564
64908
|
*/
|
|
64565
64909
|
|
|
64910
|
+
|
|
64566
64911
|
class TextGeometry extends ExtrudeGeometry {
|
|
64567
64912
|
|
|
64568
64913
|
constructor( text, parameters = {} ) {
|
|
@@ -65505,7 +65850,7 @@
|
|
|
65505
65850
|
applyUpdate(targetD);
|
|
65506
65851
|
} else {
|
|
65507
65852
|
// animate
|
|
65508
|
-
new
|
|
65853
|
+
new Tween(currentTargetD).to(targetD, state.pointsTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyUpdate).start();
|
|
65509
65854
|
}
|
|
65510
65855
|
}
|
|
65511
65856
|
if (!state.pointsMerge) {
|
|
@@ -65773,7 +66118,7 @@
|
|
|
65773
66118
|
applyUpdate(targetD);
|
|
65774
66119
|
} else {
|
|
65775
66120
|
// animate
|
|
65776
|
-
new
|
|
66121
|
+
new Tween(currentTargetD).to(targetD, state.arcsTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyUpdate).start();
|
|
65777
66122
|
}
|
|
65778
66123
|
}
|
|
65779
66124
|
}
|
|
@@ -66109,7 +66454,7 @@
|
|
|
66109
66454
|
applyUpdate(targetD);
|
|
66110
66455
|
} else {
|
|
66111
66456
|
// animate
|
|
66112
|
-
new
|
|
66457
|
+
new Tween(currentTargetD).to(targetD, state.hexTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyUpdate).start();
|
|
66113
66458
|
}
|
|
66114
66459
|
}
|
|
66115
66460
|
if (!state.hexBinMerge) {
|
|
@@ -66333,7 +66678,7 @@
|
|
|
66333
66678
|
applyUpdate(targetD);
|
|
66334
66679
|
} else {
|
|
66335
66680
|
// animate
|
|
66336
|
-
new
|
|
66681
|
+
new Tween(currentTargetD).to(targetD, state.polygonsTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyUpdate).start();
|
|
66337
66682
|
}
|
|
66338
66683
|
}
|
|
66339
66684
|
}
|
|
@@ -66514,7 +66859,7 @@
|
|
|
66514
66859
|
applyUpdate(targetD);
|
|
66515
66860
|
} else {
|
|
66516
66861
|
// animate
|
|
66517
|
-
new
|
|
66862
|
+
new Tween(currentTargetD).to(targetD, state.hexPolygonsTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyUpdate).start();
|
|
66518
66863
|
}
|
|
66519
66864
|
}
|
|
66520
66865
|
}
|
|
@@ -66848,7 +67193,7 @@
|
|
|
66848
67193
|
applyUpdate(targetD);
|
|
66849
67194
|
} else {
|
|
66850
67195
|
// animate
|
|
66851
|
-
new
|
|
67196
|
+
new Tween(currentTargetD).to(targetD, state.pathTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyUpdate).start();
|
|
66852
67197
|
}
|
|
66853
67198
|
}
|
|
66854
67199
|
}
|
|
@@ -67086,7 +67431,7 @@
|
|
|
67086
67431
|
applyPosition(targetD);
|
|
67087
67432
|
} else {
|
|
67088
67433
|
// animate
|
|
67089
|
-
new
|
|
67434
|
+
new Tween(currentTargetD).to(targetD, state.tilesTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyPosition).start();
|
|
67090
67435
|
}
|
|
67091
67436
|
}
|
|
67092
67437
|
}
|
|
@@ -67102,6 +67447,7 @@
|
|
|
67102
67447
|
var THREE$5 = _objectSpread2(_objectSpread2({}, window.THREE ? window.THREE // Prefer consumption from global THREE, if exists
|
|
67103
67448
|
: {
|
|
67104
67449
|
CircleGeometry: CircleGeometry,
|
|
67450
|
+
DoubleSide: DoubleSide,
|
|
67105
67451
|
Group: Group$1,
|
|
67106
67452
|
Mesh: Mesh,
|
|
67107
67453
|
MeshLambertMaterial: MeshLambertMaterial,
|
|
@@ -67198,6 +67544,7 @@
|
|
|
67198
67544
|
threeDigest(state.labelsData, state.scene, {
|
|
67199
67545
|
createObj: function createObj() {
|
|
67200
67546
|
var material = new THREE$5.MeshLambertMaterial();
|
|
67547
|
+
material.side = DoubleSide;
|
|
67201
67548
|
var obj = new THREE$5.Group(); // container
|
|
67202
67549
|
|
|
67203
67550
|
obj.add(new THREE$5.Mesh(circleGeometry, material)); // dot
|
|
@@ -67292,7 +67639,7 @@
|
|
|
67292
67639
|
applyPosition(targetD);
|
|
67293
67640
|
} else {
|
|
67294
67641
|
// animate
|
|
67295
|
-
new
|
|
67642
|
+
new Tween(currentTargetD).to(targetD, state.labelsTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyPosition).start();
|
|
67296
67643
|
}
|
|
67297
67644
|
}
|
|
67298
67645
|
}
|
|
@@ -67467,7 +67814,7 @@
|
|
|
67467
67814
|
obj.add(circleObj);
|
|
67468
67815
|
} else {
|
|
67469
67816
|
var transitionTime = Math.abs(maxRadius / propagationSpeed) * 1000;
|
|
67470
|
-
new
|
|
67817
|
+
new Tween({
|
|
67471
67818
|
t: 0
|
|
67472
67819
|
}).to({
|
|
67473
67820
|
t: 1
|
|
@@ -67603,7 +67950,7 @@
|
|
|
67603
67950
|
applyUpdate(targetD);
|
|
67604
67951
|
} else {
|
|
67605
67952
|
// animate
|
|
67606
|
-
new
|
|
67953
|
+
new Tween(obj.__currentTargetD).to(targetD, state.pointsTransitionDuration).easing(Easing.Quadratic.InOut).onUpdate(applyUpdate).start();
|
|
67607
67954
|
}
|
|
67608
67955
|
}
|
|
67609
67956
|
});
|
|
@@ -67893,7 +68240,7 @@
|
|
|
67893
68240
|
},
|
|
67894
68241
|
_animationCycle: function _animationCycle(state) {
|
|
67895
68242
|
state.animationFrameRequestId = requestAnimationFrame(this._animationCycle);
|
|
67896
|
-
|
|
68243
|
+
update(); // run tween updates
|
|
67897
68244
|
},
|
|
67898
68245
|
|
|
67899
68246
|
_destructor: function _destructor(state) {
|
|
@@ -67953,20 +68300,20 @@
|
|
|
67953
68300
|
if (animateIn) {
|
|
67954
68301
|
// Animate build-in just once
|
|
67955
68302
|
state.scene.scale.set(1e-6, 1e-6, 1e-6);
|
|
67956
|
-
new
|
|
68303
|
+
new Tween({
|
|
67957
68304
|
k: 1e-6
|
|
67958
68305
|
}).to({
|
|
67959
68306
|
k: 1
|
|
67960
|
-
}, 600).easing(
|
|
68307
|
+
}, 600).easing(Easing.Quadratic.Out).onUpdate(function (_ref16) {
|
|
67961
68308
|
var k = _ref16.k;
|
|
67962
68309
|
return state.scene.scale.set(k, k, k);
|
|
67963
68310
|
}).start();
|
|
67964
68311
|
var rotAxis = new THREE$g.Vector3(0, 1, 0);
|
|
67965
|
-
new
|
|
68312
|
+
new Tween({
|
|
67966
68313
|
rot: Math.PI * 2
|
|
67967
68314
|
}).to({
|
|
67968
68315
|
rot: 0
|
|
67969
|
-
}, 1200).easing(
|
|
68316
|
+
}, 1200).easing(Easing.Quintic.Out).onUpdate(function (_ref17) {
|
|
67970
68317
|
var rot = _ref17.rot;
|
|
67971
68318
|
return state.scene.setRotationFromAxisAngle(rotAxis, rot);
|
|
67972
68319
|
}).start();
|
|
@@ -68991,6 +69338,7 @@
|
|
|
68991
69338
|
|
|
68992
69339
|
const lastPosition = new Vector3();
|
|
68993
69340
|
const lastQuaternion = new Quaternion();
|
|
69341
|
+
const lastTargetPosition = new Vector3();
|
|
68994
69342
|
|
|
68995
69343
|
const twoPI = 2 * Math.PI;
|
|
68996
69344
|
|
|
@@ -69104,12 +69452,15 @@
|
|
|
69104
69452
|
|
|
69105
69453
|
if ( zoomChanged ||
|
|
69106
69454
|
lastPosition.distanceToSquared( scope.object.position ) > EPS ||
|
|
69107
|
-
8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS
|
|
69455
|
+
8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ||
|
|
69456
|
+
lastTargetPosition.distanceToSquared( scope.target ) > 0 ) {
|
|
69108
69457
|
|
|
69109
69458
|
scope.dispatchEvent( _changeEvent$1 );
|
|
69110
69459
|
|
|
69111
69460
|
lastPosition.copy( scope.object.position );
|
|
69112
69461
|
lastQuaternion.copy( scope.object.quaternion );
|
|
69462
|
+
lastTargetPosition.copy( scope.target );
|
|
69463
|
+
|
|
69113
69464
|
zoomChanged = false;
|
|
69114
69465
|
|
|
69115
69466
|
return true;
|
|
@@ -70098,6 +70449,9 @@
|
|
|
70098
70449
|
|
|
70099
70450
|
// API
|
|
70100
70451
|
|
|
70452
|
+
// Set to false to disable this control
|
|
70453
|
+
this.enabled = true;
|
|
70454
|
+
|
|
70101
70455
|
this.movementSpeed = 1.0;
|
|
70102
70456
|
this.rollSpeed = 0.005;
|
|
70103
70457
|
|
|
@@ -70125,7 +70479,7 @@
|
|
|
70125
70479
|
|
|
70126
70480
|
this.keydown = function ( event ) {
|
|
70127
70481
|
|
|
70128
|
-
if ( event.altKey ) {
|
|
70482
|
+
if ( event.altKey || this.enabled === false ) {
|
|
70129
70483
|
|
|
70130
70484
|
return;
|
|
70131
70485
|
|
|
@@ -70163,6 +70517,8 @@
|
|
|
70163
70517
|
|
|
70164
70518
|
this.keyup = function ( event ) {
|
|
70165
70519
|
|
|
70520
|
+
if ( this.enabled === false ) return;
|
|
70521
|
+
|
|
70166
70522
|
switch ( event.code ) {
|
|
70167
70523
|
|
|
70168
70524
|
case 'ShiftLeft':
|
|
@@ -70195,6 +70551,8 @@
|
|
|
70195
70551
|
|
|
70196
70552
|
this.pointerdown = function ( event ) {
|
|
70197
70553
|
|
|
70554
|
+
if ( this.enabled === false ) return;
|
|
70555
|
+
|
|
70198
70556
|
if ( this.dragToLook ) {
|
|
70199
70557
|
|
|
70200
70558
|
this.status ++;
|
|
@@ -70216,6 +70574,8 @@
|
|
|
70216
70574
|
|
|
70217
70575
|
this.pointermove = function ( event ) {
|
|
70218
70576
|
|
|
70577
|
+
if ( this.enabled === false ) return;
|
|
70578
|
+
|
|
70219
70579
|
if ( ! this.dragToLook || this.status > 0 ) {
|
|
70220
70580
|
|
|
70221
70581
|
const container = this.getContainerDimensions();
|
|
@@ -70233,6 +70593,8 @@
|
|
|
70233
70593
|
|
|
70234
70594
|
this.pointerup = function ( event ) {
|
|
70235
70595
|
|
|
70596
|
+
if ( this.enabled === false ) return;
|
|
70597
|
+
|
|
70236
70598
|
if ( this.dragToLook ) {
|
|
70237
70599
|
|
|
70238
70600
|
this.status --;
|
|
@@ -70256,8 +70618,18 @@
|
|
|
70256
70618
|
|
|
70257
70619
|
};
|
|
70258
70620
|
|
|
70621
|
+
this.contextMenu = function ( event ) {
|
|
70622
|
+
|
|
70623
|
+
if ( this.enabled === false ) return;
|
|
70624
|
+
|
|
70625
|
+
event.preventDefault();
|
|
70626
|
+
|
|
70627
|
+
};
|
|
70628
|
+
|
|
70259
70629
|
this.update = function ( delta ) {
|
|
70260
70630
|
|
|
70631
|
+
if ( this.enabled === false ) return;
|
|
70632
|
+
|
|
70261
70633
|
const moveMult = delta * scope.movementSpeed;
|
|
70262
70634
|
const rotMult = delta * scope.rollSpeed;
|
|
70263
70635
|
|
|
@@ -70325,7 +70697,7 @@
|
|
|
70325
70697
|
|
|
70326
70698
|
this.dispose = function () {
|
|
70327
70699
|
|
|
70328
|
-
this.domElement.removeEventListener( 'contextmenu',
|
|
70700
|
+
this.domElement.removeEventListener( 'contextmenu', _contextmenu );
|
|
70329
70701
|
this.domElement.removeEventListener( 'pointerdown', _pointerdown );
|
|
70330
70702
|
this.domElement.removeEventListener( 'pointermove', _pointermove );
|
|
70331
70703
|
this.domElement.removeEventListener( 'pointerup', _pointerup );
|
|
@@ -70335,13 +70707,14 @@
|
|
|
70335
70707
|
|
|
70336
70708
|
};
|
|
70337
70709
|
|
|
70710
|
+
const _contextmenu = this.contextMenu.bind( this );
|
|
70338
70711
|
const _pointermove = this.pointermove.bind( this );
|
|
70339
70712
|
const _pointerdown = this.pointerdown.bind( this );
|
|
70340
70713
|
const _pointerup = this.pointerup.bind( this );
|
|
70341
70714
|
const _keydown = this.keydown.bind( this );
|
|
70342
70715
|
const _keyup = this.keyup.bind( this );
|
|
70343
70716
|
|
|
70344
|
-
this.domElement.addEventListener( 'contextmenu',
|
|
70717
|
+
this.domElement.addEventListener( 'contextmenu', _contextmenu );
|
|
70345
70718
|
this.domElement.addEventListener( 'pointerdown', _pointerdown );
|
|
70346
70719
|
this.domElement.addEventListener( 'pointermove', _pointermove );
|
|
70347
70720
|
this.domElement.addEventListener( 'pointerup', _pointerup );
|
|
@@ -70356,18 +70729,14 @@
|
|
|
70356
70729
|
|
|
70357
70730
|
}
|
|
70358
70731
|
|
|
70359
|
-
function contextmenu( event ) {
|
|
70360
|
-
|
|
70361
|
-
event.preventDefault();
|
|
70362
|
-
|
|
70363
|
-
}
|
|
70364
|
-
|
|
70365
70732
|
/**
|
|
70366
70733
|
* Full-screen textured quad shader
|
|
70367
70734
|
*/
|
|
70368
70735
|
|
|
70369
70736
|
const CopyShader = {
|
|
70370
70737
|
|
|
70738
|
+
name: 'CopyShader',
|
|
70739
|
+
|
|
70371
70740
|
uniforms: {
|
|
70372
70741
|
|
|
70373
70742
|
'tDiffuse': { value: null },
|
|
@@ -70396,8 +70765,8 @@
|
|
|
70396
70765
|
|
|
70397
70766
|
void main() {
|
|
70398
70767
|
|
|
70399
|
-
|
|
70400
|
-
gl_FragColor
|
|
70768
|
+
vec4 texel = texture2D( tDiffuse, vUv );
|
|
70769
|
+
gl_FragColor = opacity * texel;
|
|
70401
70770
|
|
|
70402
70771
|
|
|
70403
70772
|
}`
|
|
@@ -70500,6 +70869,7 @@
|
|
|
70500
70869
|
|
|
70501
70870
|
this.material = new ShaderMaterial( {
|
|
70502
70871
|
|
|
70872
|
+
name: ( shader.name !== undefined ) ? shader.name : 'unspecified',
|
|
70503
70873
|
defines: Object.assign( {}, shader.defines ),
|
|
70504
70874
|
uniforms: this.uniforms,
|
|
70505
70875
|
vertexShader: shader.vertexShader,
|
|
@@ -70661,7 +71031,7 @@
|
|
|
70661
71031
|
this._width = size.width;
|
|
70662
71032
|
this._height = size.height;
|
|
70663
71033
|
|
|
70664
|
-
renderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio );
|
|
71034
|
+
renderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, { type: HalfFloatType } );
|
|
70665
71035
|
renderTarget.texture.name = 'EffectComposer.rt1';
|
|
70666
71036
|
|
|
70667
71037
|
} else {
|
|
@@ -70683,6 +71053,7 @@
|
|
|
70683
71053
|
this.passes = [];
|
|
70684
71054
|
|
|
70685
71055
|
this.copyPass = new ShaderPass( CopyShader );
|
|
71056
|
+
this.copyPass.material.blending = NoBlending;
|
|
70686
71057
|
|
|
70687
71058
|
this.clock = new Clock();
|
|
70688
71059
|
|
|
@@ -71718,7 +72089,7 @@
|
|
|
71718
72089
|
}
|
|
71719
72090
|
}
|
|
71720
72091
|
|
|
71721
|
-
var css_248z = ".scene-nav-info {\n bottom: 5px;\n width: 100%;\n text-align: center;\n color: slategrey;\n opacity: 0.7;\n font-size: 10px;\n}\n\n.scene-tooltip {\n top: 0;\n color: lavender;\n font-size: 15px;\n}\n\n.scene-nav-info, .scene-tooltip {\n position: absolute;\n font-family: sans-serif;\n pointer-events: none;\n}\n\n.scene-container canvas:focus {\n outline: none;\n}";
|
|
72092
|
+
var css_248z = ".scene-nav-info {\n bottom: 5px;\n width: 100%;\n text-align: center;\n color: slategrey;\n opacity: 0.7;\n font-size: 10px;\n}\n\n.scene-tooltip {\n top: 0;\n color: lavender;\n font-size: 15px;\n}\n\n.scene-nav-info, .scene-tooltip {\n position: absolute;\n font-family: sans-serif;\n pointer-events: none;\n user-select: none;\n}\n\n.scene-container canvas:focus {\n outline: none;\n}";
|
|
71722
72093
|
styleInject(css_248z);
|
|
71723
72094
|
|
|
71724
72095
|
function _iterableToArrayLimit(arr, i) {
|
|
@@ -71940,7 +72311,7 @@
|
|
|
71940
72311
|
state.hoverObj = topObject;
|
|
71941
72312
|
}
|
|
71942
72313
|
}
|
|
71943
|
-
|
|
72314
|
+
update(); // update camera animation tweens
|
|
71944
72315
|
}
|
|
71945
72316
|
|
|
71946
72317
|
return this;
|
|
@@ -71972,10 +72343,10 @@
|
|
|
71972
72343
|
} else {
|
|
71973
72344
|
var camPos = Object.assign({}, camera.position);
|
|
71974
72345
|
var camLookAt = getLookAt();
|
|
71975
|
-
new
|
|
72346
|
+
new Tween(camPos).to(finalPos, transitionDuration).easing(Easing.Quadratic.Out).onUpdate(setCameraPos).start();
|
|
71976
72347
|
|
|
71977
72348
|
// Face direction in 1/3rd of time
|
|
71978
|
-
new
|
|
72349
|
+
new Tween(camLookAt).to(finalLookAt, transitionDuration / 3).easing(Easing.Quadratic.Out).onUpdate(setLookAt).start();
|
|
71979
72350
|
}
|
|
71980
72351
|
return this;
|
|
71981
72352
|
}
|
|
@@ -72601,7 +72972,7 @@
|
|
|
72601
72972
|
// Avoid rotating more than 180deg longitude
|
|
72602
72973
|
while (curGeoCoords.lng - finalGeoCoords.lng > 180) curGeoCoords.lng -= 360;
|
|
72603
72974
|
while (curGeoCoords.lng - finalGeoCoords.lng < -180) curGeoCoords.lng += 360;
|
|
72604
|
-
new
|
|
72975
|
+
new Tween(curGeoCoords).to(finalGeoCoords, transitionDuration).easing(Easing.Cubic.InOut).onUpdate(setCameraPos).start();
|
|
72605
72976
|
}
|
|
72606
72977
|
return this;
|
|
72607
72978
|
}
|