@cesium/engine 25.0.0 → 26.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Build/Workers/{chunk-GPIGURCG.js → chunk-3VFEWOBI.js} +7 -7
- package/Build/Workers/{chunk-BTX2NL3P.js → chunk-424RNO3D.js} +18 -18
- package/Build/Workers/{chunk-HSVQATK2.js → chunk-4MGMYHOO.js} +6 -6
- package/Build/Workers/{chunk-FIBS5S7R.js → chunk-4S7IE3LB.js} +2 -2
- package/Build/Workers/{chunk-A7ZBMVFS.js → chunk-52JDLOEM.js} +14 -14
- package/Build/Workers/{chunk-ZCCIIBZT.js → chunk-54I6Y66F.js} +6 -6
- package/Build/Workers/{chunk-J647NNZW.js → chunk-6YEE6JDR.js} +6 -6
- package/Build/Workers/{chunk-HVMG6AG4.js → chunk-7J2HKPRH.js} +9 -9
- package/Build/Workers/{chunk-K6NFIRFB.js → chunk-7WM2PX4V.js} +5 -5
- package/Build/Workers/{chunk-3LSD7OOA.js → chunk-ACXQXN46.js} +16 -16
- package/Build/Workers/{chunk-CZ23Y3RM.js → chunk-AYKR4VBR.js} +2 -2
- package/Build/Workers/{chunk-4MTRQFJP.js → chunk-C6J67V5A.js} +1 -1
- package/Build/Workers/{chunk-WTQGE7Q6.js → chunk-C6KNZ7T4.js} +17 -17
- package/Build/Workers/{chunk-AWFZHD2B.js → chunk-CFQP6LYM.js} +4 -4
- package/Build/Workers/{chunk-ST2UWDUU.js → chunk-CXOYE2WM.js} +5 -5
- package/Build/Workers/{chunk-H2A4USJR.js → chunk-CZEYZU4N.js} +10 -10
- package/Build/Workers/{chunk-DFEI5MAV.js → chunk-DBOEKL43.js} +7 -7
- package/Build/Workers/{chunk-A7A433MD.js → chunk-DDWSZVMY.js} +5 -5
- package/Build/Workers/{chunk-J7KQEKPK.js → chunk-DOBXCNC3.js} +13 -13
- package/Build/Workers/{chunk-URUCCIPS.js → chunk-E7VQ76KE.js} +6 -6
- package/Build/Workers/{chunk-ZAPOS52G.js → chunk-EBSIOBXY.js} +8 -8
- package/Build/Workers/{chunk-3VDDRF2E.js → chunk-EF2QYXGA.js} +14 -14
- package/Build/Workers/{chunk-WN6P5UDH.js → chunk-EPYXRCDB.js} +12 -12
- package/Build/Workers/{chunk-EZARA5FJ.js → chunk-F6QDY6HU.js} +13 -13
- package/Build/Workers/{chunk-GL7DNVUS.js → chunk-FRQZECAO.js} +5 -5
- package/Build/Workers/{chunk-VQKLRBIK.js → chunk-G7PXZRVF.js} +7 -7
- package/Build/Workers/{chunk-4QQXGTCE.js → chunk-INUEEEQA.js} +8 -8
- package/Build/Workers/{chunk-ITD2IN7N.js → chunk-IRBKFCEJ.js} +2 -2
- package/Build/Workers/{chunk-6SDGQI27.js → chunk-IYOUHCZB.js} +1 -1
- package/Build/Workers/{chunk-DYT5NR6P.js → chunk-J6BWOHUF.js} +3 -3
- package/Build/Workers/{chunk-4GF4MVPY.js → chunk-KFSTQKNM.js} +7 -7
- package/Build/Workers/{chunk-4XXHJI6Y.js → chunk-KKOSKAZB.js} +17 -17
- package/Build/Workers/{chunk-WC57YYBN.js → chunk-KSSWJIZW.js} +2 -2
- package/Build/Workers/{chunk-5T6QQAJW.js → chunk-M3B5JKSM.js} +1 -1
- package/Build/Workers/{chunk-QO2CGXMP.js → chunk-MPZHGZU6.js} +6 -6
- package/Build/Workers/{chunk-WUBKZFF6.js → chunk-MYP774IS.js} +9 -9
- package/Build/Workers/{chunk-WNN5D4W3.js → chunk-O3EA5HS7.js} +10 -10
- package/Build/Workers/{chunk-77RL3MBD.js → chunk-P3CK7MCY.js} +25 -4
- package/Build/Workers/{chunk-QXNQQYPV.js → chunk-Q3PY526V.js} +8 -8
- package/Build/Workers/{chunk-CKQP3DSS.js → chunk-QN67VG36.js} +6 -6
- package/Build/Workers/{chunk-ACFFCHHZ.js → chunk-QRWGUWI6.js} +11 -11
- package/Build/Workers/{chunk-LH5SF3XV.js → chunk-S4MCOY6I.js} +5 -5
- package/Build/Workers/{chunk-FVLVVOBQ.js → chunk-SMQZZOW6.js} +10 -10
- package/Build/Workers/{chunk-TA777BGS.js → chunk-TKKIREQ6.js} +1 -1
- package/Build/Workers/{chunk-AEAVLYPS.js → chunk-U3ZA64U7.js} +2 -2
- package/Build/Workers/{chunk-7LSFAEWF.js → chunk-UA25D5MX.js} +10 -10
- package/Build/Workers/{chunk-J3OFS2RD.js → chunk-UOOIQ3KX.js} +12 -12
- package/Build/Workers/{chunk-ND3NTTOF.js → chunk-V7VQKN6N.js} +6 -6
- package/Build/Workers/{chunk-I3A6DXYZ.js → chunk-VQYETPWC.js} +4 -4
- package/Build/Workers/{chunk-35H3UBIO.js → chunk-VWV2IJRB.js} +11 -11
- package/Build/Workers/{chunk-QSDY4NS7.js → chunk-XZMBNNDX.js} +9 -9
- package/Build/Workers/{chunk-TAI4HLII.js → chunk-Y57HREW5.js} +4 -4
- package/Build/Workers/{chunk-3TKLDHV3.js → chunk-Y5BF6AFU.js} +2 -2
- package/Build/Workers/{chunk-3XY3MVPG.js → chunk-YLY7NKAB.js} +4 -4
- package/Build/Workers/{chunk-BVAIWR7O.js → chunk-ZK3CF7ZD.js} +12 -12
- package/Build/Workers/{chunk-DH26SNAB.js → chunk-ZP7JMQV4.js} +1 -1
- package/Build/Workers/{chunk-3RFFPH4M.js → chunk-ZZ46LWL6.js} +1 -1
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +22 -22
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +22 -22
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/Cartesian2.js +1 -1
- package/Source/Core/Cartesian3.js +1 -1
- package/Source/Core/Cartesian4.js +1 -1
- package/Source/Core/ComponentDatatype.js +35 -0
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/MapProjection.js +1 -0
- package/Source/Core/Matrix2.js +1 -1
- package/Source/Core/Matrix3.js +1 -1
- package/Source/Core/Matrix4.js +1 -1
- package/Source/Core/Resource.js +1 -1
- package/Source/Core/ScreenSpaceEventHandler.js +51 -41
- package/Source/Core/createColorRamp.js +37 -0
- package/Source/Core/globalTypes.js +25 -0
- package/Source/Renderer/Pass.js +3 -2
- package/Source/Renderer/createUniform.js +346 -239
- package/Source/Renderer/createUniformArray.js +494 -381
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/BufferPoint.js +1 -0
- package/Source/Scene/BufferPointCollection.js +14 -1
- package/Source/Scene/BufferPolygon.js +3 -2
- package/Source/Scene/BufferPolygonCollection.js +10 -0
- package/Source/Scene/BufferPolyline.js +1 -0
- package/Source/Scene/BufferPolylineCollection.js +2 -0
- package/Source/Scene/BufferPrimitiveCollection.js +79 -28
- package/Source/Scene/CameraEventAggregator.js +30 -18
- package/Source/Scene/Cesium3DTile.js +54 -1
- package/Source/Scene/Cesium3DTileContent.js +195 -254
- package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
- package/Source/Scene/Cesium3DTileset.js +45 -5
- package/Source/Scene/Composite3DTileContent.js +254 -292
- package/Source/Scene/EdgeDisplayMode.js +50 -0
- package/Source/Scene/Empty3DTileContent.js +100 -132
- package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
- package/Source/Scene/GeoJsonPrimitive.js +874 -0
- package/Source/Scene/Geometry3DTileContent.js +151 -185
- package/Source/Scene/GltfLoader.js +109 -0
- package/Source/Scene/Implicit3DTileContent.js +179 -214
- package/Source/Scene/MVTDataProvider.js +147 -0
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +79 -311
- package/Source/Scene/Model/Model.js +34 -0
- package/Source/Scene/Model/Model3DTileContent.js +424 -458
- package/Source/Scene/Model/ModelDrawCommand.js +31 -3
- package/Source/Scene/Model/ModelUtility.js +4 -0
- package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +466 -150
- package/Source/Scene/ModelComponents.js +39 -1
- package/Source/Scene/Multiple3DTileContent.js +291 -334
- package/Source/Scene/Scene.js +26 -0
- package/Source/Scene/Tileset3DTileContent.js +113 -146
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
- package/Source/Scene/Vector3DTileContent.js +205 -234
- package/Source/Scene/VectorGltf3DTileContent.js +85 -36
- package/Source/Scene/VoxelPrimitive.js +159 -175
- package/Source/Scene/VoxelProvider.js +64 -91
- package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
- package/Source/Scene/buildVoxelCustomShader.js +199 -0
- package/Source/Scene/decodeMVT.js +634 -0
- package/Source/Scene/renderBufferPointCollection.js +110 -64
- package/Source/Scene/renderBufferPolygonCollection.js +102 -55
- package/Source/Scene/renderBufferPolylineCollection.js +365 -166
- package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
- package/Source/Shaders/BufferPointMaterialFS.js +1 -0
- package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
- package/Source/Shaders/BufferPointMaterialVS.js +20 -10
- package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
- package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
- package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
- package/index.d.ts +253 -35
- package/index.js +71 -62
- package/package.json +2 -2
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
import Cartesian2 from "../Core/Cartesian2.js";
|
|
2
4
|
import Cartesian3 from "../Core/Cartesian3.js";
|
|
3
5
|
import Cartesian4 from "../Core/Cartesian4.js";
|
|
@@ -10,8 +12,11 @@ import Matrix4 from "../Core/Matrix4.js";
|
|
|
10
12
|
import RuntimeError from "../Core/RuntimeError.js";
|
|
11
13
|
|
|
12
14
|
/**
|
|
15
|
+
* @param {WebGL2RenderingContext} gl
|
|
16
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
17
|
+
* @param {string} uniformName
|
|
18
|
+
* @param {WebGLUniformLocation[]} locations
|
|
13
19
|
* @private
|
|
14
|
-
* @constructor
|
|
15
20
|
*/
|
|
16
21
|
function createUniformArray(gl, activeUniform, uniformName, locations) {
|
|
17
22
|
switch (activeUniform.type) {
|
|
@@ -69,570 +74,678 @@ function createUniformArray(gl, activeUniform, uniformName, locations) {
|
|
|
69
74
|
|
|
70
75
|
/**
|
|
71
76
|
* @private
|
|
72
|
-
* @constructor
|
|
73
77
|
*/
|
|
74
|
-
|
|
75
|
-
const length = locations.length;
|
|
76
|
-
|
|
78
|
+
class UniformArrayFloat {
|
|
77
79
|
/**
|
|
78
|
-
* @
|
|
79
|
-
* @
|
|
80
|
+
* @param {WebGL2RenderingContext} gl
|
|
81
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
82
|
+
* @param {string} uniformName
|
|
83
|
+
* @param {WebGLUniformLocation[]} locations
|
|
80
84
|
*/
|
|
81
|
-
|
|
85
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
86
|
+
const length = locations.length;
|
|
82
87
|
|
|
83
|
-
|
|
84
|
-
|
|
88
|
+
/**
|
|
89
|
+
* @type {string}
|
|
90
|
+
* @readonly
|
|
91
|
+
*/
|
|
92
|
+
this.name = uniformName;
|
|
85
93
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
this.value = new Array(length);
|
|
95
|
+
this._value = new Float32Array(length);
|
|
96
|
+
|
|
97
|
+
this._gl = gl;
|
|
98
|
+
this._location = locations[0];
|
|
99
|
+
}
|
|
89
100
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
101
|
+
set() {
|
|
102
|
+
const value = this.value;
|
|
103
|
+
const length = value.length;
|
|
104
|
+
const arraybuffer = this._value;
|
|
105
|
+
let changed = false;
|
|
95
106
|
|
|
96
|
-
|
|
97
|
-
|
|
107
|
+
for (let i = 0; i < length; ++i) {
|
|
108
|
+
const v = value[i];
|
|
98
109
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
110
|
+
if (v !== arraybuffer[i]) {
|
|
111
|
+
arraybuffer[i] = v;
|
|
112
|
+
changed = true;
|
|
113
|
+
}
|
|
102
114
|
}
|
|
103
|
-
}
|
|
104
115
|
|
|
105
|
-
|
|
106
|
-
|
|
116
|
+
if (changed) {
|
|
117
|
+
this._gl.uniform1fv(this._location, arraybuffer);
|
|
118
|
+
}
|
|
107
119
|
}
|
|
108
|
-
}
|
|
120
|
+
}
|
|
109
121
|
|
|
110
122
|
///////////////////////////////////////////////////////////////////////////
|
|
111
123
|
|
|
112
124
|
/**
|
|
113
125
|
* @private
|
|
114
|
-
* @constructor
|
|
115
126
|
*/
|
|
116
|
-
|
|
117
|
-
const length = locations.length;
|
|
118
|
-
|
|
127
|
+
class UniformArrayFloatVec2 {
|
|
119
128
|
/**
|
|
120
|
-
* @
|
|
121
|
-
* @
|
|
129
|
+
* @param {WebGL2RenderingContext} gl
|
|
130
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
131
|
+
* @param {string} uniformName
|
|
132
|
+
* @param {WebGLUniformLocation[]} locations
|
|
122
133
|
*/
|
|
123
|
-
|
|
134
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
135
|
+
const length = locations.length;
|
|
124
136
|
|
|
125
|
-
|
|
126
|
-
|
|
137
|
+
/**
|
|
138
|
+
* @type {string}
|
|
139
|
+
* @readonly
|
|
140
|
+
*/
|
|
141
|
+
this.name = uniformName;
|
|
127
142
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
143
|
+
this.value = new Array(length);
|
|
144
|
+
this._value = new Float32Array(length * 2);
|
|
131
145
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
146
|
+
this._gl = gl;
|
|
147
|
+
this._location = locations[0];
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
set() {
|
|
151
|
+
const value = this.value;
|
|
152
|
+
const length = value.length;
|
|
153
|
+
const arraybuffer = this._value;
|
|
154
|
+
let changed = false;
|
|
155
|
+
let j = 0;
|
|
138
156
|
|
|
139
|
-
|
|
140
|
-
|
|
157
|
+
for (let i = 0; i < length; ++i) {
|
|
158
|
+
const v = value[i];
|
|
141
159
|
|
|
142
|
-
|
|
143
|
-
Cartesian2.
|
|
144
|
-
|
|
160
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
161
|
+
if (!Cartesian2.equalsArray(v, arraybuffer, j)) {
|
|
162
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
163
|
+
Cartesian2.pack(v, arraybuffer, j);
|
|
164
|
+
changed = true;
|
|
165
|
+
}
|
|
166
|
+
j += 2;
|
|
145
167
|
}
|
|
146
|
-
j += 2;
|
|
147
|
-
}
|
|
148
168
|
|
|
149
|
-
|
|
150
|
-
|
|
169
|
+
if (changed) {
|
|
170
|
+
this._gl.uniform2fv(this._location, arraybuffer);
|
|
171
|
+
}
|
|
151
172
|
}
|
|
152
|
-
}
|
|
173
|
+
}
|
|
153
174
|
|
|
154
175
|
///////////////////////////////////////////////////////////////////////////
|
|
155
176
|
|
|
156
177
|
/**
|
|
157
178
|
* @private
|
|
158
|
-
* @constructor
|
|
159
179
|
*/
|
|
160
|
-
|
|
161
|
-
const length = locations.length;
|
|
162
|
-
|
|
180
|
+
class UniformArrayFloatVec3 {
|
|
163
181
|
/**
|
|
164
|
-
* @
|
|
165
|
-
* @
|
|
182
|
+
* @param {WebGL2RenderingContext} gl
|
|
183
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
184
|
+
* @param {string} uniformName
|
|
185
|
+
* @param {WebGLUniformLocation[]} locations
|
|
166
186
|
*/
|
|
167
|
-
|
|
187
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
188
|
+
const length = locations.length;
|
|
168
189
|
|
|
169
|
-
|
|
170
|
-
|
|
190
|
+
/**
|
|
191
|
+
* @type {string}
|
|
192
|
+
* @readonly
|
|
193
|
+
*/
|
|
194
|
+
this.name = uniformName;
|
|
171
195
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
196
|
+
this.value = new Array(length);
|
|
197
|
+
this._value = new Float32Array(length * 3);
|
|
175
198
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
this._gl = gl;
|
|
200
|
+
this._location = locations[0];
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
set() {
|
|
204
|
+
const value = this.value;
|
|
205
|
+
const length = value.length;
|
|
206
|
+
const arraybuffer = this._value;
|
|
207
|
+
let changed = false;
|
|
208
|
+
let j = 0;
|
|
209
|
+
|
|
210
|
+
for (let i = 0; i < length; ++i) {
|
|
211
|
+
const v = value[i];
|
|
212
|
+
|
|
213
|
+
if (defined(v.red)) {
|
|
214
|
+
if (
|
|
215
|
+
v.red !== arraybuffer[j] ||
|
|
216
|
+
v.green !== arraybuffer[j + 1] ||
|
|
217
|
+
v.blue !== arraybuffer[j + 2]
|
|
218
|
+
) {
|
|
219
|
+
arraybuffer[j] = v.red;
|
|
220
|
+
arraybuffer[j + 1] = v.green;
|
|
221
|
+
arraybuffer[j + 2] = v.blue;
|
|
222
|
+
changed = true;
|
|
223
|
+
}
|
|
224
|
+
} else if (defined(v.x)) {
|
|
225
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
226
|
+
if (!Cartesian3.equalsArray(v, arraybuffer, j)) {
|
|
227
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
228
|
+
Cartesian3.pack(v, arraybuffer, j);
|
|
229
|
+
changed = true;
|
|
230
|
+
}
|
|
231
|
+
} else {
|
|
232
|
+
//>>includeStart('debug', pragmas.debug);
|
|
233
|
+
throw new DeveloperError("Invalid vec3 value.");
|
|
234
|
+
//>>includeEnd('debug');
|
|
201
235
|
}
|
|
202
|
-
} else {
|
|
203
|
-
//>>includeStart('debug', pragmas.debug);
|
|
204
|
-
throw new DeveloperError("Invalid vec3 value.");
|
|
205
|
-
//>>includeEnd('debug');
|
|
206
|
-
}
|
|
207
236
|
|
|
208
|
-
|
|
209
|
-
|
|
237
|
+
j += 3;
|
|
238
|
+
}
|
|
210
239
|
|
|
211
|
-
|
|
212
|
-
|
|
240
|
+
if (changed) {
|
|
241
|
+
this._gl.uniform3fv(this._location, arraybuffer);
|
|
242
|
+
}
|
|
213
243
|
}
|
|
214
|
-
}
|
|
244
|
+
}
|
|
215
245
|
|
|
216
246
|
///////////////////////////////////////////////////////////////////////////
|
|
217
247
|
|
|
218
248
|
/**
|
|
219
249
|
* @private
|
|
220
|
-
* @constructor
|
|
221
250
|
*/
|
|
222
|
-
|
|
223
|
-
const length = locations.length;
|
|
224
|
-
|
|
251
|
+
class UniformArrayFloatVec4 {
|
|
225
252
|
/**
|
|
226
|
-
* @
|
|
227
|
-
* @
|
|
253
|
+
* @param {WebGL2RenderingContext} gl
|
|
254
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
255
|
+
* @param {string} uniformName
|
|
256
|
+
* @param {WebGLUniformLocation[]} locations
|
|
228
257
|
*/
|
|
229
|
-
|
|
258
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
259
|
+
const length = locations.length;
|
|
230
260
|
|
|
231
|
-
|
|
232
|
-
|
|
261
|
+
/**
|
|
262
|
+
* @type {string}
|
|
263
|
+
* @readonly
|
|
264
|
+
*/
|
|
265
|
+
this.name = uniformName;
|
|
233
266
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
267
|
+
this.value = new Array(length);
|
|
268
|
+
this._value = new Float32Array(length * 4);
|
|
237
269
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
270
|
+
this._gl = gl;
|
|
271
|
+
this._location = locations[0];
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
set() {
|
|
275
|
+
// PERFORMANCE_IDEA: if it is a common case that only a few elements
|
|
276
|
+
// in a uniform array change, we could use heuristics to determine
|
|
277
|
+
// when it is better to call uniform4f for each element that changed
|
|
278
|
+
// vs. call uniform4fv once to set the entire array. This applies
|
|
279
|
+
// to all uniform array types, not just vec4. We might not care
|
|
280
|
+
// once we have uniform buffers since that will be the fast path.
|
|
281
|
+
|
|
282
|
+
// PERFORMANCE_IDEA: Micro-optimization (I bet it works though):
|
|
283
|
+
// As soon as changed is true, break into a separate loop that
|
|
284
|
+
// does the copy without the equals check.
|
|
285
|
+
|
|
286
|
+
const value = this.value;
|
|
287
|
+
const length = value.length;
|
|
288
|
+
const arraybuffer = this._value;
|
|
289
|
+
let changed = false;
|
|
290
|
+
let j = 0;
|
|
291
|
+
|
|
292
|
+
for (let i = 0; i < length; ++i) {
|
|
293
|
+
const v = value[i];
|
|
294
|
+
|
|
295
|
+
if (defined(v.red)) {
|
|
296
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
297
|
+
if (!Color.equalsArray(v, arraybuffer, j)) {
|
|
298
|
+
Color.pack(v, arraybuffer, j);
|
|
299
|
+
changed = true;
|
|
300
|
+
}
|
|
301
|
+
} else if (defined(v.x)) {
|
|
302
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
303
|
+
if (!Cartesian4.equalsArray(v, arraybuffer, j)) {
|
|
304
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
305
|
+
Cartesian4.pack(v, arraybuffer, j);
|
|
306
|
+
changed = true;
|
|
307
|
+
}
|
|
308
|
+
} else {
|
|
309
|
+
//>>includeStart('debug', pragmas.debug);
|
|
310
|
+
throw new DeveloperError("Invalid vec4 value.");
|
|
311
|
+
//>>includeEnd('debug');
|
|
268
312
|
}
|
|
269
|
-
} else {
|
|
270
|
-
//>>includeStart('debug', pragmas.debug);
|
|
271
|
-
throw new DeveloperError("Invalid vec4 value.");
|
|
272
|
-
//>>includeEnd('debug');
|
|
273
|
-
}
|
|
274
313
|
|
|
275
|
-
|
|
276
|
-
|
|
314
|
+
j += 4;
|
|
315
|
+
}
|
|
277
316
|
|
|
278
|
-
|
|
279
|
-
|
|
317
|
+
if (changed) {
|
|
318
|
+
this._gl.uniform4fv(this._location, arraybuffer);
|
|
319
|
+
}
|
|
280
320
|
}
|
|
281
|
-
}
|
|
321
|
+
}
|
|
282
322
|
|
|
283
323
|
///////////////////////////////////////////////////////////////////////////
|
|
284
324
|
|
|
285
325
|
/**
|
|
286
326
|
* @private
|
|
287
|
-
* @constructor
|
|
288
327
|
*/
|
|
289
|
-
|
|
290
|
-
const length = locations.length;
|
|
291
|
-
|
|
328
|
+
class UniformArraySampler {
|
|
292
329
|
/**
|
|
293
|
-
* @
|
|
294
|
-
* @
|
|
330
|
+
* @param {WebGL2RenderingContext} gl
|
|
331
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
332
|
+
* @param {string} uniformName
|
|
333
|
+
* @param {WebGLUniformLocation[]} locations
|
|
295
334
|
*/
|
|
296
|
-
|
|
335
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
336
|
+
const length = locations.length;
|
|
297
337
|
|
|
298
|
-
|
|
299
|
-
|
|
338
|
+
/**
|
|
339
|
+
* @type {string}
|
|
340
|
+
* @readonly
|
|
341
|
+
*/
|
|
342
|
+
this.name = uniformName;
|
|
300
343
|
|
|
301
|
-
|
|
302
|
-
|
|
344
|
+
this.value = new Array(length);
|
|
345
|
+
this._value = new Float32Array(length);
|
|
303
346
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
UniformArraySampler.prototype.set = function () {
|
|
308
|
-
const gl = this._gl;
|
|
309
|
-
const textureUnitIndex = gl.TEXTURE0 + this.textureUnitIndex;
|
|
347
|
+
this._gl = gl;
|
|
348
|
+
this._locations = locations;
|
|
310
349
|
|
|
311
|
-
|
|
312
|
-
const length = value.length;
|
|
313
|
-
for (let i = 0; i < length; ++i) {
|
|
314
|
-
const v = value[i];
|
|
315
|
-
gl.activeTexture(textureUnitIndex + i);
|
|
316
|
-
gl.bindTexture(v._target, v._texture);
|
|
350
|
+
this.textureUnitIndex = undefined;
|
|
317
351
|
}
|
|
318
|
-
};
|
|
319
352
|
|
|
320
|
-
|
|
321
|
-
|
|
353
|
+
set() {
|
|
354
|
+
const gl = this._gl;
|
|
355
|
+
const textureUnitIndex = gl.TEXTURE0 + this.textureUnitIndex;
|
|
322
356
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
357
|
+
const value = this.value;
|
|
358
|
+
const length = value.length;
|
|
359
|
+
for (let i = 0; i < length; ++i) {
|
|
360
|
+
const v = value[i];
|
|
361
|
+
gl.activeTexture(textureUnitIndex + i);
|
|
362
|
+
gl.bindTexture(v._target, v._texture);
|
|
363
|
+
}
|
|
328
364
|
}
|
|
329
365
|
|
|
330
|
-
|
|
331
|
-
}
|
|
366
|
+
/**
|
|
367
|
+
* @param {number} textureUnitIndex
|
|
368
|
+
* @returns {number}
|
|
369
|
+
*/
|
|
370
|
+
_setSampler(textureUnitIndex) {
|
|
371
|
+
this.textureUnitIndex = textureUnitIndex;
|
|
372
|
+
|
|
373
|
+
const locations = this._locations;
|
|
374
|
+
const length = locations.length;
|
|
375
|
+
for (let i = 0; i < length; ++i) {
|
|
376
|
+
const index = textureUnitIndex + i;
|
|
377
|
+
this._gl.uniform1i(locations[i], index);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
return textureUnitIndex + length;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
332
383
|
|
|
333
384
|
///////////////////////////////////////////////////////////////////////////
|
|
334
385
|
|
|
335
386
|
/**
|
|
336
387
|
* @private
|
|
337
|
-
* @constructor
|
|
338
388
|
*/
|
|
339
|
-
|
|
340
|
-
const length = locations.length;
|
|
341
|
-
|
|
389
|
+
class UniformArrayInt {
|
|
342
390
|
/**
|
|
343
|
-
* @
|
|
344
|
-
* @
|
|
391
|
+
* @param {WebGL2RenderingContext} gl
|
|
392
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
393
|
+
* @param {string} uniformName
|
|
394
|
+
* @param {WebGLUniformLocation[]} locations
|
|
345
395
|
*/
|
|
346
|
-
|
|
396
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
397
|
+
const length = locations.length;
|
|
347
398
|
|
|
348
|
-
|
|
349
|
-
|
|
399
|
+
/**
|
|
400
|
+
* @type {string}
|
|
401
|
+
* @readonly
|
|
402
|
+
*/
|
|
403
|
+
this.name = uniformName;
|
|
350
404
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
}
|
|
405
|
+
this.value = new Array(length);
|
|
406
|
+
this._value = new Int32Array(length);
|
|
354
407
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
const arraybuffer = this._value;
|
|
359
|
-
let changed = false;
|
|
408
|
+
this._gl = gl;
|
|
409
|
+
this._location = locations[0];
|
|
410
|
+
}
|
|
360
411
|
|
|
361
|
-
|
|
362
|
-
const
|
|
412
|
+
set() {
|
|
413
|
+
const value = this.value;
|
|
414
|
+
const length = value.length;
|
|
415
|
+
const arraybuffer = this._value;
|
|
416
|
+
let changed = false;
|
|
363
417
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
418
|
+
for (let i = 0; i < length; ++i) {
|
|
419
|
+
const v = value[i];
|
|
420
|
+
|
|
421
|
+
if (v !== arraybuffer[i]) {
|
|
422
|
+
arraybuffer[i] = v;
|
|
423
|
+
changed = true;
|
|
424
|
+
}
|
|
367
425
|
}
|
|
368
|
-
}
|
|
369
426
|
|
|
370
|
-
|
|
371
|
-
|
|
427
|
+
if (changed) {
|
|
428
|
+
this._gl.uniform1iv(this._location, arraybuffer);
|
|
429
|
+
}
|
|
372
430
|
}
|
|
373
|
-
}
|
|
431
|
+
}
|
|
374
432
|
|
|
375
433
|
///////////////////////////////////////////////////////////////////////////
|
|
376
434
|
|
|
377
435
|
/**
|
|
378
436
|
* @private
|
|
379
|
-
* @constructor
|
|
380
437
|
*/
|
|
381
|
-
|
|
382
|
-
const length = locations.length;
|
|
383
|
-
|
|
438
|
+
class UniformArrayIntVec2 {
|
|
384
439
|
/**
|
|
385
|
-
* @
|
|
386
|
-
* @
|
|
440
|
+
* @param {WebGL2RenderingContext} gl
|
|
441
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
442
|
+
* @param {string} uniformName
|
|
443
|
+
* @param {WebGLUniformLocation[]} locations
|
|
387
444
|
*/
|
|
388
|
-
|
|
445
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
446
|
+
const length = locations.length;
|
|
389
447
|
|
|
390
|
-
|
|
391
|
-
|
|
448
|
+
/**
|
|
449
|
+
* @type {string}
|
|
450
|
+
* @readonly
|
|
451
|
+
*/
|
|
452
|
+
this.name = uniformName;
|
|
392
453
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
454
|
+
this.value = new Array(length);
|
|
455
|
+
this._value = new Int32Array(length * 2);
|
|
456
|
+
|
|
457
|
+
this._gl = gl;
|
|
458
|
+
this._location = locations[0];
|
|
459
|
+
}
|
|
396
460
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
461
|
+
set() {
|
|
462
|
+
const value = this.value;
|
|
463
|
+
const length = value.length;
|
|
464
|
+
const arraybuffer = this._value;
|
|
465
|
+
let changed = false;
|
|
466
|
+
let j = 0;
|
|
403
467
|
|
|
404
|
-
|
|
405
|
-
|
|
468
|
+
for (let i = 0; i < length; ++i) {
|
|
469
|
+
const v = value[i];
|
|
406
470
|
|
|
407
|
-
|
|
408
|
-
Cartesian2.
|
|
409
|
-
|
|
471
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
472
|
+
if (!Cartesian2.equalsArray(v, arraybuffer, j)) {
|
|
473
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
474
|
+
Cartesian2.pack(v, arraybuffer, j);
|
|
475
|
+
changed = true;
|
|
476
|
+
}
|
|
477
|
+
j += 2;
|
|
410
478
|
}
|
|
411
|
-
j += 2;
|
|
412
|
-
}
|
|
413
479
|
|
|
414
|
-
|
|
415
|
-
|
|
480
|
+
if (changed) {
|
|
481
|
+
this._gl.uniform2iv(this._location, arraybuffer);
|
|
482
|
+
}
|
|
416
483
|
}
|
|
417
|
-
}
|
|
484
|
+
}
|
|
418
485
|
|
|
419
486
|
///////////////////////////////////////////////////////////////////////////
|
|
420
487
|
|
|
421
488
|
/**
|
|
422
489
|
* @private
|
|
423
|
-
* @constructor
|
|
424
490
|
*/
|
|
425
|
-
|
|
426
|
-
const length = locations.length;
|
|
427
|
-
|
|
491
|
+
class UniformArrayIntVec3 {
|
|
428
492
|
/**
|
|
429
|
-
* @
|
|
430
|
-
* @
|
|
493
|
+
* @param {WebGL2RenderingContext} gl
|
|
494
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
495
|
+
* @param {string} uniformName
|
|
496
|
+
* @param {WebGLUniformLocation[]} locations
|
|
431
497
|
*/
|
|
432
|
-
|
|
498
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
499
|
+
const length = locations.length;
|
|
433
500
|
|
|
434
|
-
|
|
435
|
-
|
|
501
|
+
/**
|
|
502
|
+
* @type {string}
|
|
503
|
+
* @readonly
|
|
504
|
+
*/
|
|
505
|
+
this.name = uniformName;
|
|
436
506
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
507
|
+
this.value = new Array(length);
|
|
508
|
+
this._value = new Int32Array(length * 3);
|
|
509
|
+
|
|
510
|
+
this._gl = gl;
|
|
511
|
+
this._location = locations[0];
|
|
512
|
+
}
|
|
440
513
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
514
|
+
set() {
|
|
515
|
+
const value = this.value;
|
|
516
|
+
const length = value.length;
|
|
517
|
+
const arraybuffer = this._value;
|
|
518
|
+
let changed = false;
|
|
519
|
+
let j = 0;
|
|
447
520
|
|
|
448
|
-
|
|
449
|
-
|
|
521
|
+
for (let i = 0; i < length; ++i) {
|
|
522
|
+
const v = value[i];
|
|
450
523
|
|
|
451
|
-
|
|
452
|
-
Cartesian3.
|
|
453
|
-
|
|
524
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
525
|
+
if (!Cartesian3.equalsArray(v, arraybuffer, j)) {
|
|
526
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
527
|
+
Cartesian3.pack(v, arraybuffer, j);
|
|
528
|
+
changed = true;
|
|
529
|
+
}
|
|
530
|
+
j += 3;
|
|
454
531
|
}
|
|
455
|
-
j += 3;
|
|
456
|
-
}
|
|
457
532
|
|
|
458
|
-
|
|
459
|
-
|
|
533
|
+
if (changed) {
|
|
534
|
+
this._gl.uniform3iv(this._location, arraybuffer);
|
|
535
|
+
}
|
|
460
536
|
}
|
|
461
|
-
}
|
|
537
|
+
}
|
|
462
538
|
|
|
463
539
|
///////////////////////////////////////////////////////////////////////////
|
|
464
540
|
|
|
465
541
|
/**
|
|
466
542
|
* @private
|
|
467
|
-
* @constructor
|
|
468
543
|
*/
|
|
469
|
-
|
|
470
|
-
const length = locations.length;
|
|
471
|
-
|
|
544
|
+
class UniformArrayIntVec4 {
|
|
472
545
|
/**
|
|
473
|
-
* @
|
|
474
|
-
* @
|
|
546
|
+
* @param {WebGL2RenderingContext} gl
|
|
547
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
548
|
+
* @param {string} uniformName
|
|
549
|
+
* @param {WebGLUniformLocation[]} locations
|
|
475
550
|
*/
|
|
476
|
-
|
|
551
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
552
|
+
const length = locations.length;
|
|
477
553
|
|
|
478
|
-
|
|
479
|
-
|
|
554
|
+
/**
|
|
555
|
+
* @type {string}
|
|
556
|
+
* @readonly
|
|
557
|
+
*/
|
|
558
|
+
this.name = uniformName;
|
|
480
559
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
560
|
+
this.value = new Array(length);
|
|
561
|
+
this._value = new Int32Array(length * 4);
|
|
562
|
+
|
|
563
|
+
this._gl = gl;
|
|
564
|
+
this._location = locations[0];
|
|
565
|
+
}
|
|
484
566
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
567
|
+
set() {
|
|
568
|
+
const value = this.value;
|
|
569
|
+
const length = value.length;
|
|
570
|
+
const arraybuffer = this._value;
|
|
571
|
+
let changed = false;
|
|
572
|
+
let j = 0;
|
|
491
573
|
|
|
492
|
-
|
|
493
|
-
|
|
574
|
+
for (let i = 0; i < length; ++i) {
|
|
575
|
+
const v = value[i];
|
|
494
576
|
|
|
495
|
-
|
|
496
|
-
Cartesian4.
|
|
497
|
-
|
|
577
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
578
|
+
if (!Cartesian4.equalsArray(v, arraybuffer, j)) {
|
|
579
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
580
|
+
Cartesian4.pack(v, arraybuffer, j);
|
|
581
|
+
changed = true;
|
|
582
|
+
}
|
|
583
|
+
j += 4;
|
|
498
584
|
}
|
|
499
|
-
j += 4;
|
|
500
|
-
}
|
|
501
585
|
|
|
502
|
-
|
|
503
|
-
|
|
586
|
+
if (changed) {
|
|
587
|
+
this._gl.uniform4iv(this._location, arraybuffer);
|
|
588
|
+
}
|
|
504
589
|
}
|
|
505
|
-
}
|
|
590
|
+
}
|
|
506
591
|
|
|
507
592
|
///////////////////////////////////////////////////////////////////////////
|
|
508
593
|
|
|
509
594
|
/**
|
|
510
595
|
* @private
|
|
511
|
-
* @constructor
|
|
512
596
|
*/
|
|
513
|
-
|
|
514
|
-
const length = locations.length;
|
|
515
|
-
|
|
597
|
+
class UniformArrayMat2 {
|
|
516
598
|
/**
|
|
517
|
-
* @
|
|
518
|
-
* @
|
|
599
|
+
* @param {WebGL2RenderingContext} gl
|
|
600
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
601
|
+
* @param {string} uniformName
|
|
602
|
+
* @param {WebGLUniformLocation[]} locations
|
|
519
603
|
*/
|
|
520
|
-
|
|
604
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
605
|
+
const length = locations.length;
|
|
521
606
|
|
|
522
|
-
|
|
523
|
-
|
|
607
|
+
/**
|
|
608
|
+
* @type {string}
|
|
609
|
+
* @readonly
|
|
610
|
+
*/
|
|
611
|
+
this.name = uniformName;
|
|
524
612
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
613
|
+
this.value = new Array(length);
|
|
614
|
+
this._value = new Float32Array(length * 4);
|
|
615
|
+
|
|
616
|
+
this._gl = gl;
|
|
617
|
+
this._location = locations[0];
|
|
618
|
+
}
|
|
528
619
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
620
|
+
set() {
|
|
621
|
+
const value = this.value;
|
|
622
|
+
const length = value.length;
|
|
623
|
+
const arraybuffer = this._value;
|
|
624
|
+
let changed = false;
|
|
625
|
+
let j = 0;
|
|
535
626
|
|
|
536
|
-
|
|
537
|
-
|
|
627
|
+
for (let i = 0; i < length; ++i) {
|
|
628
|
+
const v = value[i];
|
|
538
629
|
|
|
539
|
-
|
|
540
|
-
Matrix2.
|
|
541
|
-
|
|
630
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
631
|
+
if (!Matrix2.equalsArray(v, arraybuffer, j)) {
|
|
632
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
633
|
+
Matrix2.pack(v, arraybuffer, j);
|
|
634
|
+
changed = true;
|
|
635
|
+
}
|
|
636
|
+
j += 4;
|
|
542
637
|
}
|
|
543
|
-
j += 4;
|
|
544
|
-
}
|
|
545
638
|
|
|
546
|
-
|
|
547
|
-
|
|
639
|
+
if (changed) {
|
|
640
|
+
this._gl.uniformMatrix2fv(this._location, false, arraybuffer);
|
|
641
|
+
}
|
|
548
642
|
}
|
|
549
|
-
}
|
|
643
|
+
}
|
|
550
644
|
|
|
551
645
|
///////////////////////////////////////////////////////////////////////////
|
|
552
646
|
|
|
553
647
|
/**
|
|
554
648
|
* @private
|
|
555
|
-
* @constructor
|
|
556
649
|
*/
|
|
557
|
-
|
|
558
|
-
const length = locations.length;
|
|
559
|
-
|
|
650
|
+
class UniformArrayMat3 {
|
|
560
651
|
/**
|
|
561
|
-
* @
|
|
562
|
-
* @
|
|
652
|
+
* @param {WebGL2RenderingContext} gl
|
|
653
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
654
|
+
* @param {string} uniformName
|
|
655
|
+
* @param {WebGLUniformLocation[]} locations
|
|
563
656
|
*/
|
|
564
|
-
|
|
657
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
658
|
+
const length = locations.length;
|
|
565
659
|
|
|
566
|
-
|
|
567
|
-
|
|
660
|
+
/**
|
|
661
|
+
* @type {string}
|
|
662
|
+
* @readonly
|
|
663
|
+
*/
|
|
664
|
+
this.name = uniformName;
|
|
568
665
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
666
|
+
this.value = new Array(length);
|
|
667
|
+
this._value = new Float32Array(length * 9);
|
|
668
|
+
|
|
669
|
+
this._gl = gl;
|
|
670
|
+
this._location = locations[0];
|
|
671
|
+
}
|
|
572
672
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
673
|
+
set() {
|
|
674
|
+
const value = this.value;
|
|
675
|
+
const length = value.length;
|
|
676
|
+
const arraybuffer = this._value;
|
|
677
|
+
let changed = false;
|
|
678
|
+
let j = 0;
|
|
579
679
|
|
|
580
|
-
|
|
581
|
-
|
|
680
|
+
for (let i = 0; i < length; ++i) {
|
|
681
|
+
const v = value[i];
|
|
582
682
|
|
|
583
|
-
|
|
584
|
-
Matrix3.
|
|
585
|
-
|
|
683
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
684
|
+
if (!Matrix3.equalsArray(v, arraybuffer, j)) {
|
|
685
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
686
|
+
Matrix3.pack(v, arraybuffer, j);
|
|
687
|
+
changed = true;
|
|
688
|
+
}
|
|
689
|
+
j += 9;
|
|
586
690
|
}
|
|
587
|
-
j += 9;
|
|
588
|
-
}
|
|
589
691
|
|
|
590
|
-
|
|
591
|
-
|
|
692
|
+
if (changed) {
|
|
693
|
+
this._gl.uniformMatrix3fv(this._location, false, arraybuffer);
|
|
694
|
+
}
|
|
592
695
|
}
|
|
593
|
-
}
|
|
696
|
+
}
|
|
594
697
|
|
|
595
698
|
///////////////////////////////////////////////////////////////////////////
|
|
596
699
|
|
|
597
700
|
/**
|
|
598
701
|
* @private
|
|
599
|
-
* @constructor
|
|
600
702
|
*/
|
|
601
|
-
|
|
602
|
-
const length = locations.length;
|
|
603
|
-
|
|
703
|
+
class UniformArrayMat4 {
|
|
604
704
|
/**
|
|
605
|
-
* @
|
|
606
|
-
* @
|
|
705
|
+
* @param {WebGL2RenderingContext} gl
|
|
706
|
+
* @param {WebGLActiveInfo} activeUniform
|
|
707
|
+
* @param {string} uniformName
|
|
708
|
+
* @param {WebGLUniformLocation[]} locations
|
|
607
709
|
*/
|
|
608
|
-
|
|
710
|
+
constructor(gl, activeUniform, uniformName, locations) {
|
|
711
|
+
const length = locations.length;
|
|
609
712
|
|
|
610
|
-
|
|
611
|
-
|
|
713
|
+
/**
|
|
714
|
+
* @type {string}
|
|
715
|
+
* @readonly
|
|
716
|
+
*/
|
|
717
|
+
this.name = uniformName;
|
|
612
718
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
}
|
|
719
|
+
this.value = new Array(length);
|
|
720
|
+
this._value = new Float32Array(length * 16);
|
|
616
721
|
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
const arraybuffer = this._value;
|
|
621
|
-
let changed = false;
|
|
622
|
-
let j = 0;
|
|
722
|
+
this._gl = gl;
|
|
723
|
+
this._location = locations[0];
|
|
724
|
+
}
|
|
623
725
|
|
|
624
|
-
|
|
625
|
-
const
|
|
726
|
+
set() {
|
|
727
|
+
const value = this.value;
|
|
728
|
+
const length = value.length;
|
|
729
|
+
const arraybuffer = this._value;
|
|
730
|
+
let changed = false;
|
|
731
|
+
let j = 0;
|
|
626
732
|
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
733
|
+
for (let i = 0; i < length; ++i) {
|
|
734
|
+
const v = value[i];
|
|
735
|
+
|
|
736
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
737
|
+
if (!Matrix4.equalsArray(v, arraybuffer, j)) {
|
|
738
|
+
// @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
|
|
739
|
+
Matrix4.pack(v, arraybuffer, j);
|
|
740
|
+
changed = true;
|
|
741
|
+
}
|
|
742
|
+
j += 16;
|
|
630
743
|
}
|
|
631
|
-
j += 16;
|
|
632
|
-
}
|
|
633
744
|
|
|
634
|
-
|
|
635
|
-
|
|
745
|
+
if (changed) {
|
|
746
|
+
this._gl.uniformMatrix4fv(this._location, false, arraybuffer);
|
|
747
|
+
}
|
|
636
748
|
}
|
|
637
|
-
}
|
|
749
|
+
}
|
|
750
|
+
|
|
638
751
|
export default createUniformArray;
|