@predy-js/render-interface 0.1.61-beta.2 → 0.1.61-beta.22
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/index.js +231 -136
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +231 -137
- package/dist/index.mjs.map +1 -1
- package/dist/src/render/MarsGeometry.d.ts +4 -3
- package/dist/src/render/MarsMaterial.d.ts +2 -3
- package/dist/src/render/MarsMaterialDataBlock.d.ts +12 -3
- package/dist/src/render/MarsRenderer.d.ts +3 -0
- package/dist/src/webgl/GLGPUBuffer.d.ts +2 -4
- package/dist/src/webgl/GLGPURenderer.d.ts +2 -0
- package/dist/src/webgl/GLGeometry.d.ts +6 -2
- package/dist/src/webgl/GLProgram.d.ts +2 -0
- package/dist/statistic.js +1 -1
- package/dist/types/GPUBuffer.d.ts +14 -14
- package/dist/types/Geometry.d.ts +9 -4
- package/dist/types/Material.d.ts +27 -24
- package/dist/types/RenderFrame.d.ts +3 -5
- package/dist/types/RenderPass.d.ts +2 -2
- package/dist/types/Renderer.d.ts +21 -12
- package/dist/types/ShaderLibrary.d.ts +4 -4
- package/dist/types/native/DataBlockInternal.d.ts +3 -0
- package/dist/types/native/GPUBufferInternal.d.ts +1 -1
- package/dist/types/native/ImageBitmapInternal.d.ts +0 -2
- package/dist/types/native/MaterialInternal.d.ts +0 -9
- package/dist/types/native/RenderFrameInternal.d.ts +3 -7
- package/dist/types/native/RendererInternal.d.ts +10 -0
- package/dist/types/native/TextureInternal.d.ts +1 -0
- package/package.json +1 -1
- package/types/GPUBuffer.ts +16 -19
- package/types/Geometry.ts +11 -4
- package/types/Material.ts +37 -31
- package/types/RenderFrame.ts +3 -5
- package/types/RenderPass.ts +2 -2
- package/types/Renderer.ts +24 -13
- package/types/ShaderLibrary.ts +4 -4
- package/types/native/DataBlockInternal.ts +5 -0
- package/types/native/GPUBufferInternal.ts +1 -2
- package/types/native/ImageBitmapInternal.ts +0 -2
- package/types/native/MaterialInternal.ts +0 -11
- package/types/native/RenderFrameInternal.ts +3 -7
- package/types/native/RendererInternal.ts +13 -0
- package/types/native/TextureInternal.ts +1 -0
package/dist/index.mjs
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* Name: @predy-js/render-interface
|
3
3
|
* Description: undefined
|
4
4
|
* Author: undefined
|
5
|
-
* Version: v0.1.61-beta.
|
5
|
+
* Version: v0.1.61-beta.22
|
6
6
|
*/
|
7
7
|
|
8
8
|
/******************************************************************************
|
@@ -149,7 +149,9 @@ var TextureSourceType;
|
|
149
149
|
TextureSourceType[TextureSourceType["mipmaps"] = 7] = "mipmaps";
|
150
150
|
})(TextureSourceType || (TextureSourceType = {}));
|
151
151
|
|
152
|
-
var
|
152
|
+
var GPUBufferOptionsMemoryShared = 1 << 1;
|
153
|
+
|
154
|
+
var _a$6, _b$3;
|
153
155
|
// @ts-expect-error safe to assign
|
154
156
|
var constants = {};
|
155
157
|
{
|
@@ -188,11 +190,11 @@ function getBytesPerElementByGLType(type) {
|
|
188
190
|
var _a;
|
189
191
|
return ((_a = map[type]) === null || _a === void 0 ? void 0 : _a.BYTES_PER_ELEMENT) || 0;
|
190
192
|
}
|
191
|
-
var MatAttrLocPairMap = (_b$
|
192
|
-
_b$
|
193
|
-
_b$
|
194
|
-
_b$
|
195
|
-
_b$
|
193
|
+
var MatAttrLocPairMap = (_b$3 = {},
|
194
|
+
_b$3[constants.FLOAT_MAT2] = [2, 2],
|
195
|
+
_b$3[constants.FLOAT_MAT3] = [3, 3],
|
196
|
+
_b$3[constants.FLOAT_MAT4] = [4, 4],
|
197
|
+
_b$3);
|
196
198
|
function getMatAttrLocPair(type) {
|
197
199
|
return MatAttrLocPairMap[type] || [1, 1];
|
198
200
|
}
|
@@ -466,7 +468,7 @@ function renderMeshes(renderer, state) {
|
|
466
468
|
else if (!mesh.hide) {
|
467
469
|
delegate.willRenderMesh && delegate.willRenderMesh(mesh, state);
|
468
470
|
renderMesh(renderer, mesh, state);
|
469
|
-
delegate.
|
471
|
+
delegate.didRenderMesh && delegate.didRenderMesh(mesh, state);
|
470
472
|
}
|
471
473
|
}
|
472
474
|
for (var i = 0; i < sortedMeshes.length; i++) {
|
@@ -674,19 +676,17 @@ var GPUCapabilityEmpty = /** @class */ (function () {
|
|
674
676
|
var GLGPUBuffer = /** @class */ (function () {
|
675
677
|
function GLGPUBuffer(options, renderer) {
|
676
678
|
this._isDestroyed = false;
|
677
|
-
this.target = options.target || constants.ARRAY_BUFFER;
|
678
|
-
this.type = options.type || constants.FLOAT;
|
679
679
|
this.renderer = renderer;
|
680
680
|
this.glBuffer = renderer.createGLBuffer(this, options.name);
|
681
681
|
this.usage = options.usage || constants.STATIC_DRAW;
|
682
|
-
this.bytesPerElement = getBytesPerElementByGLType(this.type);
|
683
682
|
this._byteLength = 0;
|
684
683
|
this.name = options.name || '';
|
684
|
+
this.target = options.target || constants.ARRAY_BUFFER;
|
685
685
|
if (options.data) {
|
686
686
|
this.bufferData(options.data);
|
687
687
|
}
|
688
|
-
else if (options.
|
689
|
-
this.bufferData(
|
688
|
+
else if (options.byteLength) {
|
689
|
+
this.bufferData(options.byteLength);
|
690
690
|
}
|
691
691
|
}
|
692
692
|
Object.defineProperty(GLGPUBuffer.prototype, "byteLength", {
|
@@ -703,13 +703,6 @@ var GLGPUBuffer = /** @class */ (function () {
|
|
703
703
|
enumerable: false,
|
704
704
|
configurable: true
|
705
705
|
});
|
706
|
-
Object.defineProperty(GLGPUBuffer.prototype, "elementCount", {
|
707
|
-
get: function () {
|
708
|
-
return (this.byteLength / this.bytesPerElement);
|
709
|
-
},
|
710
|
-
enumerable: false,
|
711
|
-
configurable: true
|
712
|
-
});
|
713
706
|
Object.defineProperty(GLGPUBuffer.prototype, "level", {
|
714
707
|
get: function () {
|
715
708
|
var _a;
|
@@ -747,6 +740,7 @@ var GLGPUBuffer = /** @class */ (function () {
|
|
747
740
|
gl.bufferSubData(target, 0, typedArray);
|
748
741
|
}
|
749
742
|
}
|
743
|
+
gl.bindBuffer(target, null);
|
750
744
|
}
|
751
745
|
else {
|
752
746
|
this._byteLength = 0;
|
@@ -756,7 +750,7 @@ var GLGPUBuffer = /** @class */ (function () {
|
|
756
750
|
if (this.renderer) {
|
757
751
|
var gl = this.renderer.gl;
|
758
752
|
var target = this.target;
|
759
|
-
var byteOffset = elementOffset *
|
753
|
+
var byteOffset = elementOffset * typedArray.BYTES_PER_ELEMENT;
|
760
754
|
gl.bindBuffer(target, this.glBuffer);
|
761
755
|
var byteLength = byteOffset + typedArray.byteLength;
|
762
756
|
if (byteLength > this._byteLength) {
|
@@ -764,6 +758,7 @@ var GLGPUBuffer = /** @class */ (function () {
|
|
764
758
|
gl.bufferData(target, byteLength, this.usage);
|
765
759
|
}
|
766
760
|
gl.bufferSubData(target, byteOffset, typedArray);
|
761
|
+
gl.bindBuffer(target, null);
|
767
762
|
}
|
768
763
|
else {
|
769
764
|
this._byteLength = 0;
|
@@ -780,13 +775,19 @@ var GLGPUBuffer = /** @class */ (function () {
|
|
780
775
|
var _a;
|
781
776
|
if (this.level === 2) {
|
782
777
|
var gl = (_a = this.renderer) === null || _a === void 0 ? void 0 : _a.gl;
|
778
|
+
var target = this.target;
|
783
779
|
if (gl) {
|
784
|
-
gl.
|
780
|
+
gl.bindBuffer(target, this.glBuffer);
|
781
|
+
gl.getBufferSubData(target, elementOffset * typedArray.BYTES_PER_ELEMENT, typedArray);
|
782
|
+
gl.bindBuffer(target, null);
|
785
783
|
return true;
|
786
784
|
}
|
787
785
|
}
|
788
786
|
return false;
|
789
787
|
};
|
788
|
+
GLGPUBuffer.prototype.getElementCount = function (bytePerElement) {
|
789
|
+
return this._byteLength / bytePerElement;
|
790
|
+
};
|
790
791
|
GLGPUBuffer.prototype.assignRenderer = function (renderer) {
|
791
792
|
if (!this.renderer) {
|
792
793
|
// @ts-expect-error safe to assign
|
@@ -1448,7 +1449,7 @@ function assignTextureLoc(gl, info, value, renderer, index) {
|
|
1448
1449
|
}
|
1449
1450
|
}
|
1450
1451
|
|
1451
|
-
var _a$4, _b$
|
1452
|
+
var _a$4, _b$2;
|
1452
1453
|
var BlockUniformInfoOffset = 1;
|
1453
1454
|
var BlockUniformInfoByteLength = 8;
|
1454
1455
|
var BlockUniformInfoType = 0;
|
@@ -1590,43 +1591,42 @@ var MemorySetter = (_a$4 = {},
|
|
1590
1591
|
_a$4[constants.BOOL_VEC3] = setUInt8Array,
|
1591
1592
|
_a$4[constants.BOOL_VEC4] = setUInt8Array,
|
1592
1593
|
_a$4);
|
1593
|
-
var ItemPerValueMap = (_b$
|
1594
|
-
_b$
|
1595
|
-
_b$
|
1596
|
-
_b$
|
1597
|
-
_b$
|
1598
|
-
_b$
|
1599
|
-
_b$
|
1600
|
-
_b$
|
1601
|
-
_b$
|
1602
|
-
_b$
|
1603
|
-
_b$
|
1604
|
-
_b$
|
1605
|
-
_b$
|
1606
|
-
_b$
|
1607
|
-
_b$
|
1608
|
-
_b$
|
1609
|
-
_b$
|
1610
|
-
_b$
|
1611
|
-
_b$
|
1612
|
-
_b$
|
1613
|
-
_b$
|
1614
|
-
_b$
|
1615
|
-
_b$
|
1616
|
-
_b$
|
1617
|
-
_b$
|
1618
|
-
_b$
|
1619
|
-
_b$
|
1620
|
-
_b$
|
1621
|
-
_b$
|
1594
|
+
var ItemPerValueMap = (_b$2 = {},
|
1595
|
+
_b$2[constants.FLOAT] = 1,
|
1596
|
+
_b$2[constants.INT] = 1,
|
1597
|
+
_b$2[constants.UNSIGNED_INT] = 1,
|
1598
|
+
_b$2[constants.SHORT] = 1,
|
1599
|
+
_b$2[constants.BOOL] = 1,
|
1600
|
+
_b$2[constants.UNSIGNED_SHORT] = 1,
|
1601
|
+
_b$2[constants.FLOAT_VEC2] = 2,
|
1602
|
+
_b$2[constants.FLOAT_VEC3] = 3,
|
1603
|
+
_b$2[constants.FLOAT_VEC4] = 4,
|
1604
|
+
_b$2[constants.FLOAT_MAT2] = 4,
|
1605
|
+
_b$2[constants.FLOAT_MAT3] = 9,
|
1606
|
+
_b$2[constants.FLOAT_MAT4] = 16,
|
1607
|
+
_b$2[constants.FLOAT_MAT2x3] = 6,
|
1608
|
+
_b$2[constants.FLOAT_MAT2x4] = 8,
|
1609
|
+
_b$2[constants.FLOAT_MAT4x3] = 12,
|
1610
|
+
_b$2[constants.FLOAT_MAT4x2] = 8,
|
1611
|
+
_b$2[constants.FLOAT_MAT3x4] = 12,
|
1612
|
+
_b$2[constants.FLOAT_MAT3x2] = 6,
|
1613
|
+
_b$2[constants.INT_VEC2] = 2,
|
1614
|
+
_b$2[constants.INT_VEC3] = 3,
|
1615
|
+
_b$2[constants.INT_VEC4] = 4,
|
1616
|
+
_b$2[constants.UNSIGNED_INT_VEC2] = 2,
|
1617
|
+
_b$2[constants.UNSIGNED_INT_VEC3] = 3,
|
1618
|
+
_b$2[constants.UNSIGNED_INT_VEC4] = 4,
|
1619
|
+
_b$2[constants.BOOL_VEC2] = 2,
|
1620
|
+
_b$2[constants.BOOL_VEC3] = 3,
|
1621
|
+
_b$2[constants.BOOL_VEC4] = 4,
|
1622
|
+
_b$2);
|
1622
1623
|
var fullRange = [0, 0];
|
1623
1624
|
var UniformBlockBuffer = /** @class */ (function () {
|
1624
1625
|
function UniformBlockBuffer(renderer, info) {
|
1625
1626
|
this.buffer = new GLGPUBuffer({
|
1626
1627
|
target: constants.UNIFORM_BUFFER,
|
1627
1628
|
name: info.name,
|
1628
|
-
|
1629
|
-
elementCount: info.size,
|
1629
|
+
byteLength: info.size,
|
1630
1630
|
}, renderer);
|
1631
1631
|
this.dirtyFlags = {};
|
1632
1632
|
this.info = info;
|
@@ -1790,65 +1790,77 @@ var GLProgram = /** @class */ (function () {
|
|
1790
1790
|
renderer.state.useProgram(this.glHandle);
|
1791
1791
|
}
|
1792
1792
|
};
|
1793
|
+
GLProgram.prototype.getSemanticValue = function (state, semanticName) {
|
1794
|
+
var renderPassSemantics = state.currentPass.semantics;
|
1795
|
+
var renderFrameSemantics = state.currentFrame.semantics;
|
1796
|
+
if (renderPassSemantics.hasSemanticValue(semanticName)) {
|
1797
|
+
return renderPassSemantics.getSemanticValue(semanticName, state);
|
1798
|
+
}
|
1799
|
+
else if (renderFrameSemantics.hasSemanticValue(semanticName)) {
|
1800
|
+
return renderFrameSemantics.getSemanticValue(semanticName, state);
|
1801
|
+
}
|
1802
|
+
};
|
1793
1803
|
GLProgram.prototype.setupUniforms = function (state) {
|
1794
1804
|
var _this = this;
|
1795
1805
|
this.bind();
|
1796
|
-
var frame = state.currentFrame;
|
1797
1806
|
var material = state.currentMesh.material;
|
1798
1807
|
var gl = this.renderer.gl;
|
1799
1808
|
var blocks = material._dataBlocks;
|
1800
1809
|
var shared = this.shared;
|
1801
|
-
var uniformSemantics = material.uniformSemantics;
|
1802
|
-
var renderPassSemantics = state.currentPass.semantics;
|
1803
|
-
var renderFrameSemantics = frame.semantics;
|
1804
|
-
// semantic {uModel:'MODEL'}
|
1805
1810
|
temArr.clear();
|
1806
1811
|
forEach(this.uniformBlockMap, function (uboInfo, name) {
|
1807
1812
|
if (uboInfo) {
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1813
|
+
var block_1 = material.getDataBlockByName(uboInfo.name);
|
1814
|
+
if (block_1) {
|
1815
|
+
forEach(block_1.uniformSemantics, function (semanticName, uniformName) {
|
1816
|
+
if (uniformName in uboInfo.uniforms && !block_1.hasUniformValue(uniformName)) {
|
1817
|
+
var val = _this.getSemanticValue(state, semanticName);
|
1818
|
+
if (val || val === 0) {
|
1819
|
+
block_1.setUniformValue(uniformName, val, true);
|
1820
|
+
}
|
1821
|
+
}
|
1822
|
+
});
|
1823
|
+
var uboBuffer = block_1.createUboBuffer(uboInfo);
|
1811
1824
|
if (uboBuffer) {
|
1812
|
-
|
1813
|
-
temArr.add(
|
1825
|
+
block_1.setUboBuffer(uboBuffer);
|
1826
|
+
temArr.add(block_1);
|
1814
1827
|
return uboBuffer.bind(gl, _this.glHandle, uboInfo.index);
|
1815
1828
|
}
|
1816
1829
|
}
|
1817
1830
|
}
|
1818
1831
|
});
|
1819
1832
|
forEach(this.uniformInfoMap, function (info, name) {
|
1820
|
-
var val
|
1833
|
+
var val;
|
1821
1834
|
for (var i = 0; i < blocks.length; i++) {
|
1822
1835
|
var block = blocks[i];
|
1823
|
-
|
1836
|
+
var semanticName = block.uniformSemantics[name];
|
1837
|
+
if (info.isTexture) {
|
1838
|
+
if (block.hasUniformValue(name)) {
|
1839
|
+
val = block.getUniformTexture(name);
|
1840
|
+
}
|
1841
|
+
else if (semanticName) {
|
1842
|
+
val = _this.getSemanticValue(state, semanticName);
|
1843
|
+
}
|
1844
|
+
}
|
1845
|
+
else if (temArr.has(block)) {
|
1824
1846
|
continue;
|
1825
1847
|
}
|
1826
|
-
if (block.hasUniformValue(name)) {
|
1848
|
+
else if (block.hasUniformValue(name)) {
|
1827
1849
|
if (!shared && !block._uniformFlags[name] && info.textureIndex === -1) {
|
1828
1850
|
//not dirty, don't assign
|
1829
1851
|
return;
|
1830
1852
|
}
|
1831
1853
|
val = block.getUniformValue(name);
|
1832
|
-
hasUniformValue = true;
|
1833
|
-
break;
|
1834
1854
|
}
|
1835
|
-
|
1836
|
-
|
1837
|
-
|
1838
|
-
if (
|
1839
|
-
|
1840
|
-
|
1841
|
-
|
1842
|
-
|
1843
|
-
val = renderFrameSemantics.getSemanticValue(semanticName, state);
|
1844
|
-
}
|
1855
|
+
else if (semanticName) {
|
1856
|
+
val = _this.getSemanticValue(state, semanticName);
|
1857
|
+
}
|
1858
|
+
if (val !== undefined && val !== null) {
|
1859
|
+
_this.setGLUniformValue(name, val, info, gl);
|
1860
|
+
}
|
1861
|
+
else if (!info.isTexture) {
|
1862
|
+
consoleWarn("mesh ".concat(state.currentMesh.name, " uniform ").concat(name, " value unset"));
|
1845
1863
|
}
|
1846
|
-
}
|
1847
|
-
if (val !== undefined && val !== null) {
|
1848
|
-
_this.setGLUniformValue(name, val, info, gl);
|
1849
|
-
}
|
1850
|
-
else if (!info.isTexture) {
|
1851
|
-
consoleWarn("mesh ".concat(state.currentMesh.name, " uniform ").concat(name, " value unset"));
|
1852
1864
|
}
|
1853
1865
|
});
|
1854
1866
|
};
|
@@ -2418,7 +2430,7 @@ function registerCompressedTexture(gl) {
|
|
2418
2430
|
return 0;
|
2419
2431
|
}
|
2420
2432
|
|
2421
|
-
var _a$2, _b;
|
2433
|
+
var _a$2, _b$1;
|
2422
2434
|
var flipCanvas;
|
2423
2435
|
var imageBitMapAvailable$1 = typeof ImageBitmap === 'function' && typeof createImageBitmap == 'function';
|
2424
2436
|
var GLTexture = /** @class */ (function () {
|
@@ -2749,14 +2761,14 @@ var FORMAT_HALF_FLOAT = (_a$2 = {},
|
|
2749
2761
|
_a$2[constants.LUMINANCE_ALPHA] = 33327,
|
2750
2762
|
_a$2[constants.LUMINANCE] = 33325,
|
2751
2763
|
_a$2);
|
2752
|
-
var FORMAT_FLOAT = (_b = {},
|
2753
|
-
_b[constants.RGBA] = 34836,
|
2754
|
-
_b[constants.RGB] = 34837,
|
2755
|
-
_b[constants.ALPHA] = 33326,
|
2756
|
-
_b[constants.RED] = 33326,
|
2757
|
-
_b[constants.LUMINANCE_ALPHA] = 33328,
|
2758
|
-
_b[constants.LUMINANCE] = 33326,
|
2759
|
-
_b);
|
2764
|
+
var FORMAT_FLOAT = (_b$1 = {},
|
2765
|
+
_b$1[constants.RGBA] = 34836,
|
2766
|
+
_b$1[constants.RGB] = 34837,
|
2767
|
+
_b$1[constants.ALPHA] = 33326,
|
2768
|
+
_b$1[constants.RED] = 33326,
|
2769
|
+
_b$1[constants.LUMINANCE_ALPHA] = 33328,
|
2770
|
+
_b$1[constants.LUMINANCE] = 33326,
|
2771
|
+
_b$1);
|
2760
2772
|
|
2761
2773
|
var GL_LOST_EVENT = 'webglcontextlost';
|
2762
2774
|
var GLGPURenderer = /** @class */ (function () {
|
@@ -2802,6 +2814,12 @@ var GLGPURenderer = /** @class */ (function () {
|
|
2802
2814
|
gl.canvas.addEventListener(GL_LOST_EVENT, this.onContextLose);
|
2803
2815
|
}
|
2804
2816
|
}
|
2817
|
+
GLGPURenderer.prototype.requestAnimationFrame = function (cb) {
|
2818
|
+
return window.requestAnimationFrame(cb);
|
2819
|
+
};
|
2820
|
+
GLGPURenderer.prototype.cancelAnimationFrame = function (id) {
|
2821
|
+
return window.cancelAnimationFrame(id);
|
2822
|
+
};
|
2805
2823
|
Object.defineProperty(GLGPURenderer.prototype, "isDestroyed", {
|
2806
2824
|
get: function () {
|
2807
2825
|
return this._isDestroyed;
|
@@ -4452,24 +4470,29 @@ var GLMaterial = /** @class */ (function () {
|
|
4452
4470
|
}());
|
4453
4471
|
|
4454
4472
|
function isUniformStruct(value) {
|
4455
|
-
return (isObj(value)) && (value.length === undefined)
|
4473
|
+
return (isObj(value)) && (value.length === undefined);
|
4456
4474
|
}
|
4457
4475
|
function isUniformStructArray(value) {
|
4458
4476
|
return (value) && (value.length !== undefined) && isUniformStruct(value[0]);
|
4459
4477
|
}
|
4460
4478
|
var MarsMaterialDataBlock = /** @class */ (function () {
|
4461
4479
|
function MarsMaterialDataBlock(props, renderer) {
|
4480
|
+
var _this = this;
|
4462
4481
|
this._isDestroyed = false;
|
4463
4482
|
this._isDestroyed = false;
|
4464
4483
|
this.name = props.name || 'defDataBlock';
|
4465
4484
|
this._uniformValues = {};
|
4466
4485
|
this._uniformFlags = {};
|
4467
4486
|
this.uboBufferMap = {};
|
4487
|
+
this._uniformTextures = {};
|
4468
4488
|
this._uniformValueRanges = {};
|
4469
4489
|
this._keepUboData = !!props.keepUboData;
|
4490
|
+
this.uniformSemantics = props.uniformSemantics || {};
|
4491
|
+
this._uniformPrivate = {};
|
4470
4492
|
if (props.uniformValues) {
|
4471
4493
|
this.setUniformValues(props.uniformValues);
|
4472
4494
|
}
|
4495
|
+
forEach(props.uniformTextures, function (tex, name) { return _this.setUniformTexture(name, tex); });
|
4473
4496
|
if (renderer) {
|
4474
4497
|
this.assignRenderer(renderer);
|
4475
4498
|
}
|
@@ -4507,6 +4530,20 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4507
4530
|
enumerable: false,
|
4508
4531
|
configurable: true
|
4509
4532
|
});
|
4533
|
+
MarsMaterialDataBlock.prototype.setUniformTexture = function (uniformName, texture) {
|
4534
|
+
if (texture) {
|
4535
|
+
this._uniformTextures[uniformName] = texture;
|
4536
|
+
this._assignUniformValueRenderer(texture, this.renderer);
|
4537
|
+
this._uniformPrivate[uniformName] = true;
|
4538
|
+
}
|
4539
|
+
else {
|
4540
|
+
delete this._uniformTextures[uniformName];
|
4541
|
+
delete this._uniformPrivate[uniformName];
|
4542
|
+
}
|
4543
|
+
};
|
4544
|
+
MarsMaterialDataBlock.prototype.getUniformTexture = function (uniformName) {
|
4545
|
+
return this._uniformTextures[uniformName];
|
4546
|
+
};
|
4510
4547
|
MarsMaterialDataBlock.prototype.assignRenderer = function (renderer) {
|
4511
4548
|
var _this = this;
|
4512
4549
|
if (this.renderer && renderer !== this.renderer) {
|
@@ -4515,7 +4552,7 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4515
4552
|
if (renderer && !this.renderer) {
|
4516
4553
|
// @ts-expect-error safe to assign
|
4517
4554
|
this.renderer = renderer;
|
4518
|
-
forEach(this.
|
4555
|
+
forEach(this._uniformTextures, function (value) {
|
4519
4556
|
_this._assignUniformValueRenderer(value, renderer);
|
4520
4557
|
});
|
4521
4558
|
}
|
@@ -4544,11 +4581,11 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4544
4581
|
this._uniformFlags[name] = true;
|
4545
4582
|
};
|
4546
4583
|
MarsMaterialDataBlock.prototype.hasUniformValue = function (name) {
|
4547
|
-
return
|
4584
|
+
return !!this._uniformPrivate[name];
|
4548
4585
|
};
|
4549
4586
|
MarsMaterialDataBlock.prototype.destroy = function (options) {
|
4550
4587
|
if ((options === null || options === void 0 ? void 0 : options.textures) !== DestroyOptions.keep) {
|
4551
|
-
forEach(this.
|
4588
|
+
forEach(this._uniformTextures, function (uniform) {
|
4552
4589
|
if (uniform instanceof MarsTexture) {
|
4553
4590
|
uniform.destroy();
|
4554
4591
|
}
|
@@ -4561,10 +4598,13 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4561
4598
|
});
|
4562
4599
|
// @ts-expect-error safe to assign
|
4563
4600
|
this.uboBufferMap = {};
|
4601
|
+
this._uniformPrivate = {};
|
4564
4602
|
// @ts-expect-error safe to assign
|
4565
4603
|
this._uniformFlags = {};
|
4566
4604
|
// @ts-expect-error safe to assign
|
4567
4605
|
this._uniformValues = {};
|
4606
|
+
// @ts-expect-error safe to assign
|
4607
|
+
this._uniformTextures = {};
|
4568
4608
|
this.assignRenderer = throwDestroyedError;
|
4569
4609
|
this._isDestroyed = true;
|
4570
4610
|
};
|
@@ -4574,20 +4614,39 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4574
4614
|
MarsMaterialDataBlock.prototype.getUniformValues = function () {
|
4575
4615
|
return this._uniformValues;
|
4576
4616
|
};
|
4577
|
-
MarsMaterialDataBlock.prototype.setUniformValue = function (name, value) {
|
4617
|
+
MarsMaterialDataBlock.prototype.setUniformValue = function (name, value, isSemantic) {
|
4578
4618
|
var _this = this;
|
4579
4619
|
if (value === undefined) {
|
4620
|
+
var originValue = this._uniformValues[name];
|
4621
|
+
if (isUniformStruct(originValue)) {
|
4622
|
+
forEach(originValue, function (data, key) {
|
4623
|
+
var nameInStruct = name + '.' + key;
|
4624
|
+
delete _this._uniformPrivate[nameInStruct];
|
4625
|
+
});
|
4626
|
+
}
|
4627
|
+
else if (isUniformStructArray(originValue)) {
|
4628
|
+
originValue.forEach(function (valueData, i) {
|
4629
|
+
forEach(valueData, function (valueInStruct, key) {
|
4630
|
+
var nameInStruct = name + '[' + i + ']' + '.' + key;
|
4631
|
+
delete _this._uniformPrivate[nameInStruct];
|
4632
|
+
});
|
4633
|
+
});
|
4634
|
+
}
|
4580
4635
|
delete this._uniformValues[name];
|
4581
4636
|
this._uniformFlags[name] = false;
|
4637
|
+
delete this._uniformPrivate[name];
|
4638
|
+
}
|
4639
|
+
else if (value instanceof MarsTexture) {
|
4640
|
+
throw Error('setUniformValue not accept texture:' + name);
|
4582
4641
|
}
|
4583
4642
|
else {
|
4643
|
+
this._uniformPrivate[name] = !isSemantic;
|
4584
4644
|
if (isUniformStruct(value)) {
|
4585
4645
|
forEach(value, function (data, key) {
|
4586
4646
|
var nameInStruct = name + '.' + key;
|
4587
|
-
|
4588
|
-
_this._uniformValues[nameInStruct] = valueInStruct;
|
4647
|
+
_this._uniformValues[nameInStruct] = data;
|
4589
4648
|
_this._uniformFlags[nameInStruct] = true;
|
4590
|
-
_this.
|
4649
|
+
_this._uniformPrivate[nameInStruct] = true;
|
4591
4650
|
});
|
4592
4651
|
// 只是用来保存结构体对象
|
4593
4652
|
this._uniformValues[name] = value;
|
@@ -4599,7 +4658,7 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4599
4658
|
var nameInStruct = name + '[' + i + ']' + '.' + key;
|
4600
4659
|
_this._uniformValues[nameInStruct] = valueInStruct;
|
4601
4660
|
_this._uniformFlags[nameInStruct] = true;
|
4602
|
-
_this.
|
4661
|
+
_this._uniformPrivate[nameInStruct] = true;
|
4603
4662
|
});
|
4604
4663
|
});
|
4605
4664
|
// 只是用来保存结构体对象
|
@@ -4609,7 +4668,6 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4609
4668
|
else {
|
4610
4669
|
this._uniformValues[name] = value;
|
4611
4670
|
this._uniformFlags[name] = true;
|
4612
|
-
this._assignUniformValueRenderer(value, this.renderer);
|
4613
4671
|
}
|
4614
4672
|
}
|
4615
4673
|
return true;
|
@@ -4620,10 +4678,21 @@ var MarsMaterialDataBlock = /** @class */ (function () {
|
|
4620
4678
|
_this.setUniformValue(key, val);
|
4621
4679
|
});
|
4622
4680
|
};
|
4681
|
+
MarsMaterialDataBlock.prototype.setUniformSemantic = function (name, semantic) {
|
4682
|
+
if (semantic) {
|
4683
|
+
this.uniformSemantics[name] = semantic;
|
4684
|
+
}
|
4685
|
+
else {
|
4686
|
+
delete this.uniformSemantics[name];
|
4687
|
+
}
|
4688
|
+
};
|
4623
4689
|
MarsMaterialDataBlock.prototype.clone = function (name) {
|
4624
4690
|
return new MarsMaterialDataBlock({
|
4625
4691
|
name: name,
|
4626
4692
|
uniformValues: this._uniformValues,
|
4693
|
+
uniformTextures: this._uniformTextures,
|
4694
|
+
uniformSemantics: this.uniformSemantics,
|
4695
|
+
keepUboData: this._keepUboData,
|
4627
4696
|
}, this.renderer);
|
4628
4697
|
};
|
4629
4698
|
return MarsMaterialDataBlock;
|
@@ -4638,13 +4707,10 @@ var MarsMaterial = /** @class */ (function () {
|
|
4638
4707
|
this.renderType = 0 /* MaterialRenderType.normal */;
|
4639
4708
|
this.states = this.createMaterialStates(options.states);
|
4640
4709
|
this.options = options;
|
4710
|
+
this._dbMap = {};
|
4641
4711
|
if (!this._dataBlocks.length) {
|
4642
|
-
this._dataBlocks[0] = new MarsMaterialDataBlock({ name: '' });
|
4643
|
-
}
|
4644
|
-
if (options.uniformValues) {
|
4645
|
-
this.defaultDataBlock.setUniformValues(options.uniformValues);
|
4712
|
+
this._dataBlocks[0] = new MarsMaterialDataBlock({ name: 'main' });
|
4646
4713
|
}
|
4647
|
-
this.uniformSemantics = Object.assign({}, options.uniformSemantics);
|
4648
4714
|
}
|
4649
4715
|
Object.defineProperty(MarsMaterial.prototype, "isDestroyed", {
|
4650
4716
|
get: function () {
|
@@ -4655,7 +4721,7 @@ var MarsMaterial = /** @class */ (function () {
|
|
4655
4721
|
});
|
4656
4722
|
Object.defineProperty(MarsMaterial.prototype, "dataBlocks", {
|
4657
4723
|
get: function () {
|
4658
|
-
return this._dataBlocks
|
4724
|
+
return this._dataBlocks;
|
4659
4725
|
},
|
4660
4726
|
enumerable: false,
|
4661
4727
|
configurable: true
|
@@ -4727,6 +4793,9 @@ var MarsMaterial = /** @class */ (function () {
|
|
4727
4793
|
return Object.freeze(ret);
|
4728
4794
|
};
|
4729
4795
|
MarsMaterial.prototype.addDataBlock = function (b) {
|
4796
|
+
if (this.getDataBlockByName(b.name)) {
|
4797
|
+
throw Error('dataBlock with same name:' + b.name);
|
4798
|
+
}
|
4730
4799
|
if (arrAdd(this._dataBlocks, b)) {
|
4731
4800
|
b.invalidAllFlags();
|
4732
4801
|
var r = this.renderer;
|
@@ -4735,16 +4804,19 @@ var MarsMaterial = /** @class */ (function () {
|
|
4735
4804
|
}
|
4736
4805
|
}
|
4737
4806
|
};
|
4807
|
+
MarsMaterial.prototype.getDataBlockByName = function (name) {
|
4808
|
+
var cache = this._dbMap[name];
|
4809
|
+
if (!cache) {
|
4810
|
+
var db = this._dataBlocks.find(function (db) { return db.name === name; });
|
4811
|
+
if (db) {
|
4812
|
+
return this._dbMap[name] = db;
|
4813
|
+
}
|
4814
|
+
}
|
4815
|
+
return cache;
|
4816
|
+
};
|
4738
4817
|
MarsMaterial.prototype.removeDataBlock = function (b) {
|
4739
4818
|
arrRemove(this._dataBlocks, b);
|
4740
|
-
|
4741
|
-
MarsMaterial.prototype.setUniformSemantic = function (uniformName, semantic) {
|
4742
|
-
if (semantic === undefined) {
|
4743
|
-
delete this.uniformSemantics[uniformName];
|
4744
|
-
}
|
4745
|
-
else {
|
4746
|
-
this.uniformSemantics[uniformName] = semantic;
|
4747
|
-
}
|
4819
|
+
delete this._dbMap[b.name];
|
4748
4820
|
};
|
4749
4821
|
MarsMaterial.prototype.assignRenderer = function (renderer) {
|
4750
4822
|
if (!this.materialInternal) {
|
@@ -4818,12 +4890,15 @@ var GLVertexArrayObject = /** @class */ (function () {
|
|
4818
4890
|
return GLVertexArrayObject;
|
4819
4891
|
}());
|
4820
4892
|
|
4821
|
-
var _a$1;
|
4893
|
+
var _a$1, _b;
|
4822
4894
|
var INDEX_TYPE_MAP = (_a$1 = {},
|
4823
|
-
_a$1[Uint8Array.BYTES_PER_ELEMENT] = constants.UNSIGNED_BYTE,
|
4824
4895
|
_a$1[Uint16Array.BYTES_PER_ELEMENT] = constants.UNSIGNED_SHORT,
|
4825
4896
|
_a$1[Uint32Array.BYTES_PER_ELEMENT] = constants.UNSIGNED_INT,
|
4826
4897
|
_a$1);
|
4898
|
+
var TYPE_BYTE_MAP = (_b = {},
|
4899
|
+
_b[constants.UNSIGNED_SHORT] = Uint16Array.BYTES_PER_ELEMENT,
|
4900
|
+
_b[constants.UNSIGNED_INT] = Uint32Array.BYTES_PER_ELEMENT,
|
4901
|
+
_b);
|
4827
4902
|
/**
|
4828
4903
|
* GLGeometry对象,保存GLGPUBuffer对象。
|
4829
4904
|
*
|
@@ -4849,7 +4924,8 @@ var GLGeometry = /** @class */ (function () {
|
|
4849
4924
|
buffers[name] = new GLGPUBuffer(opt, renderer);
|
4850
4925
|
});
|
4851
4926
|
if (option.index && option.index.data) {
|
4852
|
-
|
4927
|
+
var ret = this.createIndexBuffer(option.index.data, renderer);
|
4928
|
+
this.setIndexBuffer(ret[0], ret[1]);
|
4853
4929
|
}
|
4854
4930
|
}
|
4855
4931
|
this._buffersMap = buffers;
|
@@ -4871,18 +4947,18 @@ var GLGeometry = /** @class */ (function () {
|
|
4871
4947
|
(_a = this.vaoMap[name]) === null || _a === void 0 ? void 0 : _a.destroy();
|
4872
4948
|
this.vaoMap[name] = undefined;
|
4873
4949
|
};
|
4874
|
-
GLGeometry.prototype.setIndexBuffer = function (buffer) {
|
4950
|
+
GLGeometry.prototype.setIndexBuffer = function (buffer, indexBufferType) {
|
4875
4951
|
this._indexBuffer = buffer;
|
4952
|
+
this.indexBufferType = indexBufferType;
|
4876
4953
|
};
|
4877
4954
|
GLGeometry.prototype.createIndexBuffer = function (data, renderer) {
|
4878
4955
|
var type = INDEX_TYPE_MAP[data.BYTES_PER_ELEMENT];
|
4879
4956
|
var indexOption = {
|
4880
4957
|
data: data,
|
4881
4958
|
target: constants.ELEMENT_ARRAY_BUFFER,
|
4882
|
-
type: type,
|
4883
4959
|
name: "".concat(this.name, "##index"),
|
4884
4960
|
};
|
4885
|
-
return new GLGPUBuffer(indexOption, renderer);
|
4961
|
+
return [new GLGPUBuffer(indexOption, renderer), type];
|
4886
4962
|
};
|
4887
4963
|
GLGeometry.prototype.getGPUBuffer = function (name) {
|
4888
4964
|
return this._buffersMap[name];
|
@@ -4924,10 +5000,10 @@ var GLGeometry = /** @class */ (function () {
|
|
4924
5000
|
if (gl && gpu) {
|
4925
5001
|
var drawCount = this.drawCount;
|
4926
5002
|
if (index) {
|
4927
|
-
var type =
|
5003
|
+
var type = this.indexBufferType;
|
4928
5004
|
//bind by vao
|
4929
5005
|
//this._indexBuffer?.bind();
|
4930
|
-
var dc = isNaN(drawCount) ? index.
|
5006
|
+
var dc = isNaN(drawCount) ? index.getElementCount(TYPE_BYTE_MAP[type]) : drawCount;
|
4931
5007
|
if (dc > 0) {
|
4932
5008
|
if (useInstancedDraw) {
|
4933
5009
|
gpu.drawElementsInstanced(gl, this.mode, dc, type, this.drawStart || 0, state.currentMesh.instanceCount);
|
@@ -5023,7 +5099,6 @@ var MarsGeometry = /** @class */ (function () {
|
|
5023
5099
|
buffers[name] = {
|
5024
5100
|
data: data,
|
5025
5101
|
usage: usage,
|
5026
|
-
target: constants.ARRAY_BUFFER,
|
5027
5102
|
name: name,
|
5028
5103
|
};
|
5029
5104
|
var gltype = attributeData2GLType(data);
|
@@ -5063,6 +5138,9 @@ var MarsGeometry = /** @class */ (function () {
|
|
5063
5138
|
});
|
5064
5139
|
// 顶点索引
|
5065
5140
|
this._index = (_a = option.index) === null || _a === void 0 ? void 0 : _a.data;
|
5141
|
+
if (this._index instanceof Uint8Array) {
|
5142
|
+
throw Error('Uint8 Index not support');
|
5143
|
+
}
|
5066
5144
|
dirtyFlags['index'] = {
|
5067
5145
|
dirty: true,
|
5068
5146
|
discard: true,
|
@@ -5177,8 +5255,6 @@ var MarsGeometry = /** @class */ (function () {
|
|
5177
5255
|
var option = {
|
5178
5256
|
data: data,
|
5179
5257
|
usage: gpuBufferOption.usage,
|
5180
|
-
target: gpuBufferOption.target,
|
5181
|
-
elementCount: data.length,
|
5182
5258
|
};
|
5183
5259
|
buffers[gpuBufferName] = option;
|
5184
5260
|
this._dirtyFlags[gpuBufferName].discard = true;
|
@@ -5278,19 +5354,21 @@ var MarsGeometry = /** @class */ (function () {
|
|
5278
5354
|
return this._attributesName;
|
5279
5355
|
};
|
5280
5356
|
MarsGeometry.prototype.assignRenderer = function (renderer) {
|
5281
|
-
var _a;
|
5282
5357
|
if (!this.internal) {
|
5283
5358
|
// 索引缓冲区参数
|
5284
5359
|
var indexBufferOption = undefined;
|
5285
5360
|
if (this._index) {
|
5286
|
-
var type = INDEX_TYPE_MAP[(_a = this._index) === null || _a === void 0 ? void 0 : _a.BYTES_PER_ELEMENT];
|
5287
5361
|
var data = this._index;
|
5288
5362
|
indexBufferOption = {
|
5289
|
-
target: constants.ELEMENT_ARRAY_BUFFER,
|
5290
|
-
type: type,
|
5291
5363
|
data: data,
|
5292
5364
|
usage: constants.STATIC_DRAW,
|
5293
5365
|
};
|
5366
|
+
if (data instanceof Uint16Array) {
|
5367
|
+
this.indexDataType = constants.SHORT;
|
5368
|
+
}
|
5369
|
+
else if (data instanceof Uint32Array) {
|
5370
|
+
this.indexDataType = constants.INT;
|
5371
|
+
}
|
5294
5372
|
}
|
5295
5373
|
// 顶点属性参数
|
5296
5374
|
var options = {
|
@@ -5301,6 +5379,7 @@ var MarsGeometry = /** @class */ (function () {
|
|
5301
5379
|
buffers: this._buffers,
|
5302
5380
|
mode: this.mode,
|
5303
5381
|
index: indexBufferOption,
|
5382
|
+
indexDataType: this.indexDataType,
|
5304
5383
|
name: this.name,
|
5305
5384
|
};
|
5306
5385
|
//@ts-expect-error safe to set
|
@@ -5515,7 +5594,7 @@ var MarsExtWrap = /** @class */ (function () {
|
|
5515
5594
|
fb.viewport[3] = target.height || source.height;
|
5516
5595
|
renderer.internal.resetColorAttachments(fb, [target.internal]);
|
5517
5596
|
var mesh = rp.meshes[0];
|
5518
|
-
mesh.material.defaultDataBlock.
|
5597
|
+
mesh.material.defaultDataBlock.setUniformTexture('uTex', source);
|
5519
5598
|
RenderFrameInternal.renderRenderPass(renderer, rp, { currentFrame: {} });
|
5520
5599
|
}
|
5521
5600
|
}
|
@@ -5660,6 +5739,20 @@ var MarsRenderer = /** @class */ (function () {
|
|
5660
5739
|
}
|
5661
5740
|
}
|
5662
5741
|
};
|
5742
|
+
MarsRenderer.prototype.cancelAnimationFrame = function (id) {
|
5743
|
+
return window.cancelAnimationFrame(id);
|
5744
|
+
};
|
5745
|
+
MarsRenderer.prototype.getErrors = function () {
|
5746
|
+
var gl = this.internal.gl;
|
5747
|
+
var err = gl.getError();
|
5748
|
+
if (err) {
|
5749
|
+
return ['webgl error:' + err];
|
5750
|
+
}
|
5751
|
+
return [];
|
5752
|
+
};
|
5753
|
+
MarsRenderer.prototype.requestAnimationFrame = function (cb) {
|
5754
|
+
return window.requestAnimationFrame(cb);
|
5755
|
+
};
|
5663
5756
|
return MarsRenderer;
|
5664
5757
|
}());
|
5665
5758
|
|
@@ -5695,7 +5788,8 @@ var MarsSharedGeometry = /** @class */ (function (_super) {
|
|
5695
5788
|
glgeo.drawStart = this.drawStart;
|
5696
5789
|
glgeo.mode = this.mode;
|
5697
5790
|
if (this._index) {
|
5698
|
-
|
5791
|
+
var ret = glgeo.createIndexBuffer(this._index, renderer.internal);
|
5792
|
+
glgeo.setIndexBuffer(ret[0], ret[1]);
|
5699
5793
|
}
|
5700
5794
|
//@ts-expect-error safe to assign
|
5701
5795
|
this.internal = glgeo;
|
@@ -5726,7 +5820,7 @@ var MarsSharedGeometry = /** @class */ (function (_super) {
|
|
5726
5820
|
return MarsSharedGeometry;
|
5727
5821
|
}(MarsGeometry));
|
5728
5822
|
|
5729
|
-
consoleLog('version: ' + "0.1.61-beta.
|
5823
|
+
consoleLog('version: ' + "0.1.61-beta.22");
|
5730
5824
|
|
5731
|
-
export { DestroyOptions, MarsGeometry as Geometry, MarsInstancedMesh as InstancedMesh, MarsTextureFactory, MarsMaterial as Material, MarsMaterialDataBlock as MaterialDataBlock, MarsMesh as Mesh, MarsRenderFrame as RenderFrame, MarsRenderPass as RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassMeshOrder, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, MarsRenderer as Renderer, ShaderCompileResultStatus, ShaderLibraryEmpty, MarsSharedGeometry as SharedGeometry, MarsTexture as Texture, TextureLoadAction, TextureSourceType, TextureStoreAction, constants, getDefaultGPUCapability, getDefaultTextureFactory, setDefaultTextureFactory };
|
5825
|
+
export { DestroyOptions, GPUBufferOptionsMemoryShared, MarsGeometry as Geometry, MarsInstancedMesh as InstancedMesh, MarsTextureFactory, MarsMaterial as Material, MarsMaterialDataBlock as MaterialDataBlock, MarsMesh as Mesh, MarsRenderFrame as RenderFrame, MarsRenderPass as RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassMeshOrder, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, MarsRenderer as Renderer, ShaderCompileResultStatus, ShaderLibraryEmpty, MarsSharedGeometry as SharedGeometry, MarsTexture as Texture, TextureLoadAction, TextureSourceType, TextureStoreAction, constants, getDefaultGPUCapability, getDefaultTextureFactory, setDefaultTextureFactory };
|
5732
5826
|
//# sourceMappingURL=index.mjs.map
|