@galacean/engine 1.2.0-beta.0 → 1.2.0-beta.2
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/browser.js +258 -290
- package/dist/browser.min.js +1 -1
- package/dist/main.js +1 -1
- package/dist/miniprogram.js +1 -1
- package/dist/module.js +1 -1
- package/package.json +5 -5
package/dist/browser.js
CHANGED
|
@@ -5599,7 +5599,7 @@
|
|
|
5599
5599
|
if (Utils.isBase64Url(relativeUrl)) {
|
|
5600
5600
|
return relativeUrl;
|
|
5601
5601
|
}
|
|
5602
|
-
return relativeUrl ?
|
|
5602
|
+
return relativeUrl ? new URL(relativeUrl, baseUrl).href : baseUrl;
|
|
5603
5603
|
};
|
|
5604
5604
|
/**
|
|
5605
5605
|
* @internal
|
|
@@ -5742,14 +5742,6 @@
|
|
|
5742
5742
|
});
|
|
5743
5743
|
return result;
|
|
5744
5744
|
};
|
|
5745
|
-
Utils._formatRelativePath = function _formatRelativePath(path) {
|
|
5746
|
-
// For example input is "a/b", "/a/b", "./a/b", "./a/./b", "./a/../a/b", output is "a/b"
|
|
5747
|
-
return path.split("/").filter(Boolean).reduce(function(acc, cur) {
|
|
5748
|
-
if (cur === "..") acc.pop();
|
|
5749
|
-
else if (cur !== ".") acc.push(cur);
|
|
5750
|
-
return acc;
|
|
5751
|
-
}, []).join("/");
|
|
5752
|
-
};
|
|
5753
5745
|
Utils._insertionSort = function _insertionSort(a, from, to, compareFunc) {
|
|
5754
5746
|
for(var i = from + 1; i < to; i++){
|
|
5755
5747
|
var j = void 0;
|
|
@@ -6630,6 +6622,7 @@
|
|
|
6630
6622
|
GLCapabilityType["colorBufferHalfFloat"] = "EXT_color_buffer_half_float";
|
|
6631
6623
|
GLCapabilityType["textureFilterAnisotropic"] = "EXT_texture_filter_anisotropic";
|
|
6632
6624
|
GLCapabilityType["blendMinMax"] = "EXT_blend_minmax";
|
|
6625
|
+
GLCapabilityType["fragDepth"] = "EXT_frag_depth";
|
|
6633
6626
|
GLCapabilityType["astc"] = "WEBGL_compressed_texture_astc";
|
|
6634
6627
|
GLCapabilityType["astc_webkit"] = "WEBKIT_WEBGL_compressed_texture_astc";
|
|
6635
6628
|
GLCapabilityType["etc"] = "WEBGL_compressed_texture_etc";
|
|
@@ -8300,23 +8293,34 @@
|
|
|
8300
8293
|
* @param shader - code
|
|
8301
8294
|
* @param isFrag - Whether it is a fragment shader.
|
|
8302
8295
|
* */ ShaderFactory.convertTo300 = function convertTo300(shader, isFrag) {
|
|
8303
|
-
/** replace attribute and in */ shader = shader.replace(/\battribute\b/g, "in");
|
|
8304
8296
|
shader = shader.replace(/\bvarying\b/g, isFrag ? "in" : "out");
|
|
8305
|
-
|
|
8306
|
-
shader = shader.replace(/\
|
|
8297
|
+
shader = shader.replace(/\btexture(2D|Cube)\b/g, "texture");
|
|
8298
|
+
shader = shader.replace(/\btexture2DProj\b/g, "textureProj");
|
|
8307
8299
|
if (isFrag) {
|
|
8308
|
-
|
|
8309
|
-
|
|
8310
|
-
|
|
8311
|
-
|
|
8312
|
-
|
|
8313
|
-
|
|
8314
|
-
|
|
8315
|
-
|
|
8300
|
+
shader = shader.replace(/\btexture(2D|Cube)LodEXT\b/g, "textureLod");
|
|
8301
|
+
shader = shader.replace(/\btexture(2D|Cube)GradEXT\b/g, "textureGrad");
|
|
8302
|
+
shader = shader.replace(/\btexture2DProjLodEXT\b/g, "textureProjLod");
|
|
8303
|
+
shader = shader.replace(/\btexture2DProjGradEXT\b/g, "textureProjGrad");
|
|
8304
|
+
shader = shader.replace(/\bgl_FragDepthEXT\b/g, "gl_FragDepth");
|
|
8305
|
+
if (!ShaderFactory._has300Output(shader)) {
|
|
8306
|
+
var isMRT = /\bgl_FragData\[.+?\]/g.test(shader);
|
|
8307
|
+
if (isMRT) {
|
|
8308
|
+
shader = shader.replace(/\bgl_FragColor\b/g, "gl_FragData[0]");
|
|
8309
|
+
var result = shader.match(/\bgl_FragData\[.+?\]/g);
|
|
8310
|
+
shader = this._replaceMRTShader(shader, result);
|
|
8311
|
+
} else {
|
|
8312
|
+
shader = shader.replace(/void\s+?main\s*\(/g, "out vec4 glFragColor;\nvoid main(");
|
|
8313
|
+
shader = shader.replace(/\bgl_FragColor\b/g, "glFragColor");
|
|
8314
|
+
}
|
|
8316
8315
|
}
|
|
8316
|
+
} else {
|
|
8317
|
+
shader = shader.replace(/\battribute\b/g, "in");
|
|
8317
8318
|
}
|
|
8318
8319
|
return shader;
|
|
8319
8320
|
};
|
|
8321
|
+
ShaderFactory._has300Output = function _has300Output(fragmentShader) {
|
|
8322
|
+
return ShaderFactory._has300OutInFragReg.test(fragmentShader);
|
|
8323
|
+
};
|
|
8320
8324
|
ShaderFactory._replaceMRTShader = function _replaceMRTShader(shader, result) {
|
|
8321
8325
|
var declaration = "";
|
|
8322
8326
|
var mrtIndexSet = new Set();
|
|
@@ -8338,11 +8342,16 @@
|
|
|
8338
8342
|
/** @internal */ ShaderFactory._shaderExtension = [
|
|
8339
8343
|
"GL_EXT_shader_texture_lod",
|
|
8340
8344
|
"GL_OES_standard_derivatives",
|
|
8341
|
-
"GL_EXT_draw_buffers"
|
|
8345
|
+
"GL_EXT_draw_buffers",
|
|
8346
|
+
"GL_EXT_frag_depth"
|
|
8342
8347
|
].map(function(e) {
|
|
8343
8348
|
return "#extension " + e + " : enable\n";
|
|
8344
8349
|
}).join("");
|
|
8345
8350
|
})();
|
|
8351
|
+
(function() {
|
|
8352
|
+
ShaderFactory._has300OutInFragReg = /\bout\s+(?:\w+\s+)?(?:vec4)\s+(?:\w+)\s*;/ // [layout(location = 0)] out [highp] vec4 [color];
|
|
8353
|
+
;
|
|
8354
|
+
})();
|
|
8346
8355
|
/**
|
|
8347
8356
|
* Shader tag key.
|
|
8348
8357
|
*/ var ShaderTagKey = /*#__PURE__*/ function() {
|
|
@@ -8626,6 +8635,10 @@
|
|
|
8626
8635
|
this.materialUniformBlock = new ShaderUniformBlock();
|
|
8627
8636
|
this.otherUniformBlock = new ShaderUniformBlock();
|
|
8628
8637
|
/** @internal */ this._uploadRenderCount = -1;
|
|
8638
|
+
/** @internal */ this._uploadSceneId = -1;
|
|
8639
|
+
/** @internal */ this._uploadCameraId = -1;
|
|
8640
|
+
/** @internal */ this._uploadRendererId = -1;
|
|
8641
|
+
/** @internal */ this._uploadMaterialId = -1;
|
|
8629
8642
|
this.attributeLocation = Object.create(null);
|
|
8630
8643
|
this._activeTextureUint = 0;
|
|
8631
8644
|
this._engine = engine;
|
|
@@ -11760,6 +11773,7 @@
|
|
|
11760
11773
|
this._isContentLost = false;
|
|
11761
11774
|
};
|
|
11762
11775
|
_proto._onDestroy = function _onDestroy() {
|
|
11776
|
+
GraphicsResource1.prototype._onDestroy.call(this);
|
|
11763
11777
|
this._platformPrimitive.destroy();
|
|
11764
11778
|
this._vertexElementMap = null;
|
|
11765
11779
|
};
|
|
@@ -16244,10 +16258,8 @@
|
|
|
16244
16258
|
var vertexStride = this.createVertexElements(vertexElements);
|
|
16245
16259
|
// vertices
|
|
16246
16260
|
var vertexBuffer = this._vertexBuffers[index] = new Buffer(engine, exports.BufferBindFlag.VertexBuffer, MAX_VERTEX_COUNT * vertexStride, exports.BufferUsage.Dynamic);
|
|
16247
|
-
vertexBuffer.isGCIgnored = true;
|
|
16248
16261
|
// indices
|
|
16249
16262
|
var indiceBuffer = this._indiceBuffers[index] = new Buffer(engine, exports.BufferBindFlag.IndexBuffer, MAX_VERTEX_COUNT * 6, exports.BufferUsage.Dynamic);
|
|
16250
|
-
indiceBuffer.isGCIgnored = true;
|
|
16251
16263
|
mesh.setVertexBufferBinding(vertexBuffer, vertexStride);
|
|
16252
16264
|
mesh.setIndexBufferBinding(indiceBuffer, exports.IndexFormat.UInt16);
|
|
16253
16265
|
mesh.setVertexElements(vertexElements);
|
|
@@ -19871,6 +19883,7 @@
|
|
|
19871
19883
|
1
|
|
19872
19884
|
]); // left-top
|
|
19873
19885
|
var blitMaterial = new Material(engine, Shader.find("blit"));
|
|
19886
|
+
blitMaterial._addReferCount(1);
|
|
19874
19887
|
blitMaterial.renderState.depthState.enabled = false;
|
|
19875
19888
|
blitMaterial.renderState.depthState.writeEnabled = false;
|
|
19876
19889
|
this.blitMesh = this._createBlitMesh(engine, vertices);
|
|
@@ -20566,6 +20579,9 @@
|
|
|
20566
20579
|
projectionParams.set(flipProjection ? -1 : 1, virtualCamera.nearClipPlane, virtualCamera.farClipPlane, 0);
|
|
20567
20580
|
shaderData.setVector4(RenderContext._cameraProjectionProperty, projectionParams);
|
|
20568
20581
|
};
|
|
20582
|
+
_proto.garbageCollection = function garbageCollection() {
|
|
20583
|
+
this.camera = null;
|
|
20584
|
+
};
|
|
20569
20585
|
return RenderContext;
|
|
20570
20586
|
}();
|
|
20571
20587
|
(function() {
|
|
@@ -24646,66 +24662,84 @@
|
|
|
24646
24662
|
})(ParticleInstanceVertexAttribute || (ParticleInstanceVertexAttribute = {}));
|
|
24647
24663
|
/**
|
|
24648
24664
|
* @internal
|
|
24649
|
-
*/ var ParticleBufferUtils =
|
|
24650
|
-
|
|
24651
|
-
|
|
24652
|
-
|
|
24653
|
-
|
|
24654
|
-
|
|
24655
|
-
|
|
24656
|
-
|
|
24657
|
-
|
|
24658
|
-
|
|
24659
|
-
|
|
24660
|
-
|
|
24661
|
-
|
|
24662
|
-
|
|
24663
|
-
|
|
24664
|
-
|
|
24665
|
-
|
|
24666
|
-
|
|
24667
|
-
|
|
24668
|
-
|
|
24669
|
-
|
|
24670
|
-
|
|
24671
|
-
|
|
24672
|
-
|
|
24673
|
-
|
|
24674
|
-
|
|
24675
|
-
|
|
24676
|
-
|
|
24677
|
-
|
|
24678
|
-
|
|
24679
|
-
|
|
24680
|
-
|
|
24681
|
-
|
|
24682
|
-
|
|
24683
|
-
|
|
24684
|
-
|
|
24685
|
-
|
|
24686
|
-
|
|
24687
|
-
|
|
24688
|
-
|
|
24689
|
-
|
|
24690
|
-
|
|
24691
|
-
|
|
24692
|
-
|
|
24693
|
-
|
|
24694
|
-
|
|
24695
|
-
|
|
24696
|
-
|
|
24697
|
-
|
|
24698
|
-
|
|
24699
|
-
|
|
24700
|
-
|
|
24701
|
-
|
|
24702
|
-
|
|
24703
|
-
|
|
24704
|
-
|
|
24705
|
-
|
|
24706
|
-
|
|
24707
|
-
|
|
24708
|
-
|
|
24665
|
+
*/ var ParticleBufferUtils = function ParticleBufferUtils(engine) {
|
|
24666
|
+
this.billboardVertexElement = new VertexElement(ParticleBillboardVertexAttribute.cornerTextureCoordinate, 0, exports.VertexElementFormat.Vector4, 0);
|
|
24667
|
+
this.instanceVertexElements = [
|
|
24668
|
+
new VertexElement(ParticleInstanceVertexAttribute.ShapePositionStartLifeTime, 0, exports.VertexElementFormat.Vector4, 1, 1),
|
|
24669
|
+
new VertexElement(ParticleInstanceVertexAttribute.DirectionTime, 16, exports.VertexElementFormat.Vector4, 1, 1),
|
|
24670
|
+
new VertexElement(ParticleInstanceVertexAttribute.StartColor, 32, exports.VertexElementFormat.Vector4, 1, 1),
|
|
24671
|
+
new VertexElement(ParticleInstanceVertexAttribute.StartSize, 48, exports.VertexElementFormat.Vector3, 1, 1),
|
|
24672
|
+
new VertexElement(ParticleInstanceVertexAttribute.StartRotation0, 60, exports.VertexElementFormat.Vector3, 1, 1),
|
|
24673
|
+
new VertexElement(ParticleInstanceVertexAttribute.StartSpeed, 72, exports.VertexElementFormat.Float, 1, 1),
|
|
24674
|
+
new VertexElement(ParticleInstanceVertexAttribute.Random0, 76, exports.VertexElementFormat.Vector4, 1, 1),
|
|
24675
|
+
new VertexElement(ParticleInstanceVertexAttribute.Random1, 92, exports.VertexElementFormat.Vector4, 1, 1),
|
|
24676
|
+
new VertexElement(ParticleInstanceVertexAttribute.SimulationWorldPosition, 108, exports.VertexElementFormat.Vector3, 1, 1),
|
|
24677
|
+
new VertexElement(ParticleInstanceVertexAttribute.SimulationWorldRotation, 120, exports.VertexElementFormat.Vector4, 1, 1),
|
|
24678
|
+
new VertexElement(ParticleInstanceVertexAttribute.SimulationUV, 136, exports.VertexElementFormat.Vector4, 1, 1)
|
|
24679
|
+
];
|
|
24680
|
+
this.instanceVertexStride = 152;
|
|
24681
|
+
this.instanceVertexFloatStride = this.instanceVertexStride / 4;
|
|
24682
|
+
this.startLifeTimeOffset = 3;
|
|
24683
|
+
this.timeOffset = 7;
|
|
24684
|
+
this.simulationUVOffset = 34;
|
|
24685
|
+
this.billboardIndexCount = 6;
|
|
24686
|
+
var stride = 16;
|
|
24687
|
+
var billboardGeometryBuffer = new Buffer(engine, exports.BufferBindFlag.VertexBuffer, stride * 4, exports.BufferUsage.Static, false);
|
|
24688
|
+
billboardGeometryBuffer.isGCIgnored = true;
|
|
24689
|
+
this.billboardVertexBufferBinding = new VertexBufferBinding(billboardGeometryBuffer, stride);
|
|
24690
|
+
var indexBuffer = new Buffer(engine, exports.BufferBindFlag.IndexBuffer, this.billboardIndexCount, exports.BufferUsage.Static, false);
|
|
24691
|
+
indexBuffer.isGCIgnored = true;
|
|
24692
|
+
this.billboardIndexBufferBinding = new IndexBufferBinding(indexBuffer, exports.IndexFormat.UInt8);
|
|
24693
|
+
var billboardGeometryData = new Float32Array([
|
|
24694
|
+
-0.5,
|
|
24695
|
+
-0.5,
|
|
24696
|
+
0,
|
|
24697
|
+
1,
|
|
24698
|
+
0.5,
|
|
24699
|
+
-0.5,
|
|
24700
|
+
1,
|
|
24701
|
+
1,
|
|
24702
|
+
0.5,
|
|
24703
|
+
0.5,
|
|
24704
|
+
1,
|
|
24705
|
+
0,
|
|
24706
|
+
-0.5,
|
|
24707
|
+
0.5,
|
|
24708
|
+
0,
|
|
24709
|
+
0
|
|
24710
|
+
]);
|
|
24711
|
+
var indexData = new Uint8Array([
|
|
24712
|
+
0,
|
|
24713
|
+
2,
|
|
24714
|
+
3,
|
|
24715
|
+
0,
|
|
24716
|
+
1,
|
|
24717
|
+
2
|
|
24718
|
+
]);
|
|
24719
|
+
billboardGeometryBuffer.setData(billboardGeometryData);
|
|
24720
|
+
indexBuffer.setData(indexData);
|
|
24721
|
+
// Register content restorer
|
|
24722
|
+
engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
|
|
24723
|
+
var _class = function _class() {
|
|
24724
|
+
return ContentRestorer.call(this, billboardGeometryBuffer);
|
|
24725
|
+
};
|
|
24726
|
+
_inherits$2(_class, ContentRestorer);
|
|
24727
|
+
var _proto = _class.prototype;
|
|
24728
|
+
_proto.restoreContent = function restoreContent() {
|
|
24729
|
+
billboardGeometryBuffer.setData(billboardGeometryData);
|
|
24730
|
+
};
|
|
24731
|
+
return _class;
|
|
24732
|
+
}(ContentRestorer))());
|
|
24733
|
+
engine.resourceManager.addContentRestorer(new /*#__PURE__*/ (function(ContentRestorer) {
|
|
24734
|
+
var _class = function _class() {
|
|
24735
|
+
return ContentRestorer.call(this, indexBuffer);
|
|
24736
|
+
};
|
|
24737
|
+
_inherits$2(_class, ContentRestorer);
|
|
24738
|
+
var _proto = _class.prototype;
|
|
24739
|
+
_proto.restoreContent = function restoreContent() {};
|
|
24740
|
+
return _class;
|
|
24741
|
+
}(ContentRestorer))());
|
|
24742
|
+
};
|
|
24709
24743
|
var blitFs = "#define GLSLIFY 1\nuniform mediump sampler2D renderer_BlitTexture;\n#ifdef HAS_TEX_LOD\nuniform float renderer_BlitMipLevel;\n#endif\nvarying vec2 v_uv;void main(){\n#ifdef HAS_TEX_LOD\ngl_FragColor=texture2DLodEXT(renderer_BlitTexture,v_uv,renderer_BlitMipLevel);\n#else\ngl_FragColor=texture2D(renderer_BlitTexture,v_uv);\n#endif\n}"; // eslint-disable-line
|
|
24710
24744
|
var blitVs = "#define GLSLIFY 1\nattribute vec4 POSITION_UV;varying vec2 v_uv;void main(){gl_Position=vec4(POSITION_UV.xy,0.0,1.0);v_uv=POSITION_UV.zw;}"; // eslint-disable-line
|
|
24711
24745
|
var skyProceduralFs = "#define GLSLIFY 1\n#include <common>\nconst float MIE_G=-0.990;const float MIE_G2=0.9801;const float SKY_GROUND_THRESHOLD=0.02;uniform float material_SunSize;uniform float material_SunSizeConvergence;uniform vec4 scene_SunlightColor;uniform vec3 scene_SunlightDirection;varying vec3 v_GroundColor;varying vec3 v_SkyColor;\n#ifdef MATERIAL_SUN_HIGH_QUALITY\nvarying vec3 v_Vertex;\n#elif defined(MATERIAL_SUN_SIMPLE)\nvarying vec3 v_RayDir;\n#else\nvarying float v_SkyGroundFactor;\n#endif\n#if defined(MATERIAL_SUN_HIGH_QUALITY)||defined(MATERIAL_SUN_SIMPLE)\nvarying vec3 v_SunColor;\n#endif\n#if defined(ENGINE_IS_COLORSPACE_GAMMA)\n#define LINEAR_2_OUTPUT(color) sqrt(color)\n#endif\nfloat getMiePhase(float eyeCos,float eyeCos2){float temp=1.0+MIE_G2-2.0*MIE_G*eyeCos;temp=pow(temp,pow(material_SunSize,0.65)*10.0);temp=max(temp,1.0e-4);temp=1.5*((1.0-MIE_G2)/(2.0+MIE_G2))*(1.0+eyeCos2)/temp;return temp;}float calcSunAttenuation(vec3 lightPos,vec3 ray){\n#ifdef MATERIAL_SUN_HIGH_QUALITY\nfloat focusedEyeCos=pow(clamp(dot(lightPos,ray),0.0,1.0),material_SunSizeConvergence);return getMiePhase(-focusedEyeCos,focusedEyeCos*focusedEyeCos);\n#else\nvec3 delta=lightPos-ray;float dist=length(delta);float spot=1.0-smoothstep(0.0,material_SunSize,dist);return spot*spot;\n#endif\n}void main(){vec3 col=vec3(0.0,0.0,0.0);\n#ifdef MATERIAL_SUN_HIGH_QUALITY\nvec3 ray=normalize(v_Vertex);float y=ray.y/SKY_GROUND_THRESHOLD;\n#elif defined(MATERIAL_SUN_SIMPLE)\nvec3 ray=v_RayDir;float y=ray.y/SKY_GROUND_THRESHOLD;\n#else\nfloat y=v_SkyGroundFactor;\n#endif\ncol=mix(v_SkyColor,v_GroundColor,clamp(y,0.0,1.0));\n#if defined(MATERIAL_SUN_HIGH_QUALITY)||defined(MATERIAL_SUN_SIMPLE)\nif(y<0.0)col+=v_SunColor*calcSunAttenuation(-scene_SunlightDirection,-ray);\n#endif\n#ifdef ENGINE_IS_COLORSPACE_GAMMA\ncol=LINEAR_2_OUTPUT(col);\n#endif\ngl_FragColor=vec4(col,1.0);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\ngl_FragColor=linearToGamma(gl_FragColor);\n#endif\n}"; // eslint-disable-line
|
|
@@ -25378,7 +25412,6 @@
|
|
|
25378
25412
|
resourceManager._restoreGraphicResources();
|
|
25379
25413
|
console.log("Graphic resource restored.");
|
|
25380
25414
|
// Restore resources content
|
|
25381
|
-
this._particleBufferUtils.setBufferData();
|
|
25382
25415
|
resourceManager._restoreResourcesContent().then(function() {
|
|
25383
25416
|
console.log("Graphic resource content restored.\n\n" + "Device restored.");
|
|
25384
25417
|
_this.dispatch("devicerestored", _this);
|
|
@@ -25393,6 +25426,7 @@
|
|
|
25393
25426
|
this._spriteRenderDataPool.garbageCollection();
|
|
25394
25427
|
this._spriteMaskRenderDataPool.garbageCollection();
|
|
25395
25428
|
this._textRenderDataPool.garbageCollection();
|
|
25429
|
+
this._renderContext.garbageCollection();
|
|
25396
25430
|
};
|
|
25397
25431
|
_create_class$2(Engine, [
|
|
25398
25432
|
{
|
|
@@ -25745,7 +25779,6 @@
|
|
|
25745
25779
|
};
|
|
25746
25780
|
_proto._createPlane = function _createPlane(engine) {
|
|
25747
25781
|
var mesh = new ModelMesh(engine);
|
|
25748
|
-
mesh.isGCIgnored = true;
|
|
25749
25782
|
var indices = new Uint8Array([
|
|
25750
25783
|
1,
|
|
25751
25784
|
2,
|
|
@@ -27712,22 +27745,6 @@
|
|
|
27712
27745
|
maskManager.postRender(renderer);
|
|
27713
27746
|
}
|
|
27714
27747
|
};
|
|
27715
|
-
_proto.destroy = function destroy() {
|
|
27716
|
-
this._batchedQueue = null;
|
|
27717
|
-
var _this = this, meshes = _this._meshes, vertexBuffers = _this._vertexBuffers, indiceBuffers = _this._indiceBuffers;
|
|
27718
|
-
for(var i = 0, n = meshes.length; i < n; ++i){
|
|
27719
|
-
meshes[i].destroy();
|
|
27720
|
-
}
|
|
27721
|
-
this._meshes = null;
|
|
27722
|
-
for(var i1 = 0, n1 = vertexBuffers.length; i1 < n1; ++i1){
|
|
27723
|
-
vertexBuffers[i1].destroy();
|
|
27724
|
-
}
|
|
27725
|
-
this._vertexBuffers = null;
|
|
27726
|
-
for(var i2 = 0, n2 = indiceBuffers.length; i2 < n2; ++i2){
|
|
27727
|
-
indiceBuffers[i2].destroy();
|
|
27728
|
-
}
|
|
27729
|
-
this._indiceBuffers = null;
|
|
27730
|
-
};
|
|
27731
27748
|
return SpriteBatcher;
|
|
27732
27749
|
}(Basic2DBatcher);
|
|
27733
27750
|
(function() {
|
|
@@ -27752,11 +27769,10 @@
|
|
|
27752
27769
|
if (elements.length === 0) {
|
|
27753
27770
|
return;
|
|
27754
27771
|
}
|
|
27755
|
-
var engine = camera.engine,
|
|
27772
|
+
var engine = camera.engine, cameraId = camera.instanceId, cameraData = camera.shaderData;
|
|
27773
|
+
var _camera_scene = camera.scene, sceneData = _camera_scene.shaderData, sceneId = _camera_scene.instanceId;
|
|
27756
27774
|
var renderCount = engine._renderCount;
|
|
27757
27775
|
var rhi = engine._hardwareRenderer;
|
|
27758
|
-
var sceneData = scene.shaderData;
|
|
27759
|
-
var cameraData = camera.shaderData;
|
|
27760
27776
|
var pipelineStageKey = RenderContext.pipelineStageKey;
|
|
27761
27777
|
var renderQueueType = this._renderQueueType;
|
|
27762
27778
|
for(var i = 0, n = elements.length; i < n; i++){
|
|
@@ -27768,9 +27784,8 @@
|
|
|
27768
27784
|
var primitive = data.primitive;
|
|
27769
27785
|
var renderer = data.component;
|
|
27770
27786
|
var material = data.material;
|
|
27771
|
-
var rendererData = renderer.shaderData;
|
|
27772
|
-
var materialData = material.shaderData;
|
|
27773
|
-
var renderStates = material.renderStates;
|
|
27787
|
+
var rendererData = renderer.shaderData, rendererId = renderer.instanceId;
|
|
27788
|
+
var materialData = material.shaderData, materialId = material.instanceId, renderStates = material.renderStates;
|
|
27774
27789
|
// union render global macro and material self macro.
|
|
27775
27790
|
ShaderMacroCollection.unionCollection(renderer._globalShaderMacro, materialData._macroCollection, compileMacros);
|
|
27776
27791
|
for(var j = 0, m = shaderPasses.length; j < m; j++){
|
|
@@ -27796,33 +27811,33 @@
|
|
|
27796
27811
|
program.uploadAll(program.materialUniformBlock, materialData);
|
|
27797
27812
|
// UnGroup textures should upload default value, texture uint maybe change by logic of texture bind.
|
|
27798
27813
|
program.uploadUnGroupTextures();
|
|
27799
|
-
program.
|
|
27800
|
-
program.
|
|
27801
|
-
program.
|
|
27802
|
-
program.
|
|
27814
|
+
program._uploadSceneId = sceneId;
|
|
27815
|
+
program._uploadCameraId = cameraId;
|
|
27816
|
+
program._uploadRendererId = rendererId;
|
|
27817
|
+
program._uploadMaterialId = materialId;
|
|
27803
27818
|
program._uploadRenderCount = renderCount;
|
|
27804
27819
|
} else {
|
|
27805
|
-
if (program.
|
|
27820
|
+
if (program._uploadSceneId !== sceneId) {
|
|
27806
27821
|
program.uploadAll(program.sceneUniformBlock, sceneData);
|
|
27807
|
-
program.
|
|
27822
|
+
program._uploadSceneId = sceneId;
|
|
27808
27823
|
} else if (switchProgram) {
|
|
27809
27824
|
program.uploadTextures(program.sceneUniformBlock, sceneData);
|
|
27810
27825
|
}
|
|
27811
|
-
if (program.
|
|
27826
|
+
if (program._uploadCameraId !== cameraId) {
|
|
27812
27827
|
program.uploadAll(program.cameraUniformBlock, cameraData);
|
|
27813
|
-
program.
|
|
27828
|
+
program._uploadCameraId = cameraId;
|
|
27814
27829
|
} else if (switchProgram) {
|
|
27815
27830
|
program.uploadTextures(program.cameraUniformBlock, cameraData);
|
|
27816
27831
|
}
|
|
27817
|
-
if (program.
|
|
27832
|
+
if (program._uploadRendererId !== rendererId) {
|
|
27818
27833
|
program.uploadAll(program.rendererUniformBlock, rendererData);
|
|
27819
|
-
program.
|
|
27834
|
+
program._uploadRendererId = rendererId;
|
|
27820
27835
|
} else if (switchProgram) {
|
|
27821
27836
|
program.uploadTextures(program.rendererUniformBlock, rendererData);
|
|
27822
27837
|
}
|
|
27823
|
-
if (program.
|
|
27838
|
+
if (program._uploadMaterialId !== materialId) {
|
|
27824
27839
|
program.uploadAll(program.materialUniformBlock, materialData);
|
|
27825
|
-
program.
|
|
27840
|
+
program._uploadMaterialId = materialId;
|
|
27826
27841
|
} else if (switchProgram) {
|
|
27827
27842
|
program.uploadTextures(program.materialUniformBlock, materialData);
|
|
27828
27843
|
}
|
|
@@ -36604,7 +36619,7 @@
|
|
|
36604
36619
|
var cap = this.capabilityList;
|
|
36605
36620
|
var isWebGL2 = this.rhi.isWebGL2;
|
|
36606
36621
|
var requireExtension = this.rhi.requireExtension.bind(this.rhi);
|
|
36607
|
-
var shaderVertexID = exports.GLCapabilityType.shaderVertexID, standardDerivatives = exports.GLCapabilityType.standardDerivatives, shaderTextureLod = exports.GLCapabilityType.shaderTextureLod, elementIndexUint = exports.GLCapabilityType.elementIndexUint, depthTexture = exports.GLCapabilityType.depthTexture, vertexArrayObject = exports.GLCapabilityType.vertexArrayObject, instancedArrays = exports.GLCapabilityType.instancedArrays, multipleSample = exports.GLCapabilityType.multipleSample, drawBuffers = exports.GLCapabilityType.drawBuffers, blendMinMax = exports.GLCapabilityType.blendMinMax, astc = exports.GLCapabilityType.astc, astc_webkit = exports.GLCapabilityType.astc_webkit, etc = exports.GLCapabilityType.etc, etc_webkit = exports.GLCapabilityType.etc_webkit, etc1 = exports.GLCapabilityType.etc1, etc1_webkit = exports.GLCapabilityType.etc1_webkit, pvrtc = exports.GLCapabilityType.pvrtc, pvrtc_webkit = exports.GLCapabilityType.pvrtc_webkit, s3tc = exports.GLCapabilityType.s3tc, s3tc_webkit = exports.GLCapabilityType.s3tc_webkit, bptc = exports.GLCapabilityType.bptc, textureFloat = exports.GLCapabilityType.textureFloat, textureHalfFloat = exports.GLCapabilityType.textureHalfFloat, textureFloatLinear = exports.GLCapabilityType.textureFloatLinear, textureHalfFloatLinear = exports.GLCapabilityType.textureHalfFloatLinear, WEBGL_colorBufferFloat = exports.GLCapabilityType.WEBGL_colorBufferFloat, colorBufferFloat = exports.GLCapabilityType.colorBufferFloat, colorBufferHalfFloat = exports.GLCapabilityType.colorBufferHalfFloat, textureFilterAnisotropic = exports.GLCapabilityType.textureFilterAnisotropic;
|
|
36622
|
+
var shaderVertexID = exports.GLCapabilityType.shaderVertexID, standardDerivatives = exports.GLCapabilityType.standardDerivatives, shaderTextureLod = exports.GLCapabilityType.shaderTextureLod, elementIndexUint = exports.GLCapabilityType.elementIndexUint, depthTexture = exports.GLCapabilityType.depthTexture, vertexArrayObject = exports.GLCapabilityType.vertexArrayObject, instancedArrays = exports.GLCapabilityType.instancedArrays, multipleSample = exports.GLCapabilityType.multipleSample, drawBuffers = exports.GLCapabilityType.drawBuffers, blendMinMax = exports.GLCapabilityType.blendMinMax, astc = exports.GLCapabilityType.astc, astc_webkit = exports.GLCapabilityType.astc_webkit, etc = exports.GLCapabilityType.etc, etc_webkit = exports.GLCapabilityType.etc_webkit, etc1 = exports.GLCapabilityType.etc1, etc1_webkit = exports.GLCapabilityType.etc1_webkit, pvrtc = exports.GLCapabilityType.pvrtc, pvrtc_webkit = exports.GLCapabilityType.pvrtc_webkit, s3tc = exports.GLCapabilityType.s3tc, s3tc_webkit = exports.GLCapabilityType.s3tc_webkit, bptc = exports.GLCapabilityType.bptc, textureFloat = exports.GLCapabilityType.textureFloat, textureHalfFloat = exports.GLCapabilityType.textureHalfFloat, textureFloatLinear = exports.GLCapabilityType.textureFloatLinear, textureHalfFloatLinear = exports.GLCapabilityType.textureHalfFloatLinear, WEBGL_colorBufferFloat = exports.GLCapabilityType.WEBGL_colorBufferFloat, colorBufferFloat = exports.GLCapabilityType.colorBufferFloat, colorBufferHalfFloat = exports.GLCapabilityType.colorBufferHalfFloat, textureFilterAnisotropic = exports.GLCapabilityType.textureFilterAnisotropic, fragDepth = exports.GLCapabilityType.fragDepth;
|
|
36608
36623
|
cap.set(shaderVertexID, isWebGL2);
|
|
36609
36624
|
cap.set(standardDerivatives, isWebGL2 || !!requireExtension(standardDerivatives));
|
|
36610
36625
|
cap.set(shaderTextureLod, isWebGL2 || !!requireExtension(shaderTextureLod));
|
|
@@ -36622,6 +36637,7 @@
|
|
|
36622
36637
|
cap.set(colorBufferFloat, isWebGL2 && !!requireExtension(colorBufferFloat) || !!requireExtension(WEBGL_colorBufferFloat));
|
|
36623
36638
|
cap.set(colorBufferHalfFloat, isWebGL2 && !!requireExtension(colorBufferFloat) || !!requireExtension(colorBufferHalfFloat));
|
|
36624
36639
|
cap.set(textureFilterAnisotropic, !!requireExtension(textureFilterAnisotropic));
|
|
36640
|
+
cap.set(fragDepth, isWebGL2 || !!requireExtension(fragDepth));
|
|
36625
36641
|
cap.set(astc, !!(requireExtension(astc) || requireExtension(astc_webkit)));
|
|
36626
36642
|
cap.set(etc, !!(requireExtension(etc) || requireExtension(etc_webkit)));
|
|
36627
36643
|
cap.set(etc1, !!(requireExtension(etc1) || requireExtension(etc1_webkit)));
|
|
@@ -39315,10 +39331,11 @@
|
|
|
39315
39331
|
entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : entity.isActive;
|
|
39316
39332
|
var _entityConfig_name;
|
|
39317
39333
|
entity.name = (_entityConfig_name = entityConfig.name) != null ? _entityConfig_name : entity.name;
|
|
39318
|
-
var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
|
|
39334
|
+
var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale, layer = entityConfig.layer;
|
|
39319
39335
|
if (position) entity.transform.position.copyFrom(position);
|
|
39320
39336
|
if (rotation) entity.transform.rotation.copyFrom(rotation);
|
|
39321
39337
|
if (scale) entity.transform.scale.copyFrom(scale);
|
|
39338
|
+
if (layer) entity.layer = layer;
|
|
39322
39339
|
return entity;
|
|
39323
39340
|
};
|
|
39324
39341
|
_proto._traverseAddEntityToMap = function _traverseAddEntityToMap(entity, context, path) {
|
|
@@ -40472,114 +40489,68 @@
|
|
|
40472
40489
|
};
|
|
40473
40490
|
GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
|
|
40474
40491
|
var componentType = accessor.componentType;
|
|
40475
|
-
var
|
|
40476
|
-
var
|
|
40477
|
-
var
|
|
40478
|
-
|
|
40479
|
-
|
|
40480
|
-
|
|
40481
|
-
|
|
40482
|
-
var
|
|
40483
|
-
var
|
|
40484
|
-
|
|
40485
|
-
|
|
40486
|
-
|
|
40487
|
-
|
|
40488
|
-
|
|
40489
|
-
|
|
40490
|
-
|
|
40491
|
-
|
|
40492
|
-
|
|
40493
|
-
|
|
40494
|
-
|
|
40495
|
-
|
|
40496
|
-
|
|
40497
|
-
|
|
40498
|
-
|
|
40499
|
-
|
|
40500
|
-
|
|
40501
|
-
|
|
40502
|
-
|
|
40492
|
+
var TypedArray = GLTFUtils.getComponentType(componentType);
|
|
40493
|
+
var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
|
|
40494
|
+
var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
|
|
40495
|
+
var elementStride = dataElementSize * dataElementBytes;
|
|
40496
|
+
var accessorCount = accessor.count;
|
|
40497
|
+
var promise;
|
|
40498
|
+
if (accessor.bufferView !== undefined) {
|
|
40499
|
+
var bufferViewIndex = accessor.bufferView;
|
|
40500
|
+
var bufferView = bufferViews[bufferViewIndex];
|
|
40501
|
+
promise = context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
|
|
40502
|
+
var bufferIndex = bufferView.buffer;
|
|
40503
|
+
var _bufferViewData_byteOffset;
|
|
40504
|
+
var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
|
|
40505
|
+
var _accessor_byteOffset;
|
|
40506
|
+
var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
|
|
40507
|
+
var bufferStride = bufferView.byteStride;
|
|
40508
|
+
var bufferInfo;
|
|
40509
|
+
// According to the glTF official documentation only byteStride not undefined is allowed
|
|
40510
|
+
if (bufferStride !== undefined && bufferStride !== elementStride) {
|
|
40511
|
+
var bufferSlice = Math.floor(byteOffset / bufferStride);
|
|
40512
|
+
var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
|
|
40513
|
+
var accessorBufferCache = context.accessorBufferCache;
|
|
40514
|
+
bufferInfo = accessorBufferCache[bufferCacheKey];
|
|
40515
|
+
if (!bufferInfo) {
|
|
40516
|
+
var offset = bufferByteOffset + bufferSlice * bufferStride;
|
|
40517
|
+
var count = accessorCount * (bufferStride / dataElementBytes);
|
|
40518
|
+
var data = new TypedArray(bufferViewData.buffer, offset, count);
|
|
40519
|
+
accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
|
|
40520
|
+
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
|
|
40521
|
+
}
|
|
40522
|
+
} else {
|
|
40523
|
+
var offset1 = bufferByteOffset + byteOffset;
|
|
40524
|
+
var count1 = accessorCount * dataElementSize;
|
|
40525
|
+
var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
|
|
40526
|
+
bufferInfo = new BufferInfo(data1, false, elementStride);
|
|
40527
|
+
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
|
|
40503
40528
|
}
|
|
40504
|
-
|
|
40505
|
-
|
|
40506
|
-
|
|
40507
|
-
|
|
40508
|
-
|
|
40509
|
-
|
|
40510
|
-
|
|
40511
|
-
|
|
40512
|
-
|
|
40513
|
-
|
|
40514
|
-
|
|
40515
|
-
|
|
40516
|
-
|
|
40517
|
-
});
|
|
40529
|
+
return bufferInfo;
|
|
40530
|
+
});
|
|
40531
|
+
} else {
|
|
40532
|
+
var count = accessorCount * dataElementSize;
|
|
40533
|
+
var data = new TypedArray(count);
|
|
40534
|
+
var bufferInfo = new BufferInfo(data, false, elementStride);
|
|
40535
|
+
bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
|
|
40536
|
+
promise = Promise.resolve(bufferInfo);
|
|
40537
|
+
}
|
|
40538
|
+
return accessor.sparse ? promise.then(function(bufferInfo) {
|
|
40539
|
+
return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
|
|
40540
|
+
return bufferInfo;
|
|
40541
|
+
});
|
|
40542
|
+
}) : promise;
|
|
40518
40543
|
};
|
|
40519
|
-
GLTFUtils.bufferToVector3Array = function bufferToVector3Array(
|
|
40520
|
-
var
|
|
40521
|
-
var
|
|
40522
|
-
var
|
|
40523
|
-
var
|
|
40544
|
+
GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
|
|
40545
|
+
var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
|
|
40546
|
+
var stride = buffer.length / count;
|
|
40547
|
+
var vertices = new Array(count);
|
|
40548
|
+
var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
|
|
40524
40549
|
for(var i = 0; i < count; i++){
|
|
40525
|
-
var index =
|
|
40526
|
-
|
|
40550
|
+
var index = baseOffset + i * stride;
|
|
40551
|
+
vertices[i] = new Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
|
|
40527
40552
|
}
|
|
40528
|
-
return
|
|
40529
|
-
};
|
|
40530
|
-
/**
|
|
40531
|
-
* @deprecated
|
|
40532
|
-
* Get accessor data.
|
|
40533
|
-
*/ GLTFUtils.getAccessorData = function getAccessorData(glTF, accessor, buffers) {
|
|
40534
|
-
var bufferViews = glTF.bufferViews;
|
|
40535
|
-
var _accessor_bufferView;
|
|
40536
|
-
var bufferView = bufferViews[(_accessor_bufferView = accessor.bufferView) != null ? _accessor_bufferView : 0];
|
|
40537
|
-
var arrayBuffer = buffers[bufferView.buffer];
|
|
40538
|
-
var accessorByteOffset = accessor.hasOwnProperty("byteOffset") ? accessor.byteOffset : 0;
|
|
40539
|
-
var bufferViewByteOffset = bufferView.hasOwnProperty("byteOffset") ? bufferView.byteOffset : 0;
|
|
40540
|
-
var byteOffset = accessorByteOffset + bufferViewByteOffset;
|
|
40541
|
-
var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
|
|
40542
|
-
var length = accessorTypeSize * accessor.count;
|
|
40543
|
-
var _bufferView_byteStride;
|
|
40544
|
-
var byteStride = (_bufferView_byteStride = bufferView.byteStride) != null ? _bufferView_byteStride : 0;
|
|
40545
|
-
var arrayType = GLTFUtils.getComponentType(accessor.componentType);
|
|
40546
|
-
var uint8Array;
|
|
40547
|
-
if (byteStride) {
|
|
40548
|
-
var accessorByteSize = accessorTypeSize * arrayType.BYTES_PER_ELEMENT;
|
|
40549
|
-
uint8Array = new Uint8Array(accessor.count * accessorByteSize);
|
|
40550
|
-
var originalBufferView = new Uint8Array(arrayBuffer, bufferViewByteOffset, bufferView.byteLength);
|
|
40551
|
-
for(var i = 0; i < accessor.count; i++){
|
|
40552
|
-
for(var j = 0; j < accessorByteSize; j++){
|
|
40553
|
-
uint8Array[i * accessorByteSize + j] = originalBufferView[i * byteStride + accessorByteOffset + j];
|
|
40554
|
-
}
|
|
40555
|
-
}
|
|
40556
|
-
} else {
|
|
40557
|
-
uint8Array = new Uint8Array(arrayBuffer.slice(byteOffset, byteOffset + length * arrayType.BYTES_PER_ELEMENT));
|
|
40558
|
-
}
|
|
40559
|
-
var typedArray = new arrayType(uint8Array.buffer);
|
|
40560
|
-
if (accessor.sparse) {
|
|
40561
|
-
var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
|
|
40562
|
-
var indicesBufferView = bufferViews[indices.bufferView];
|
|
40563
|
-
var valuesBufferView = bufferViews[values.bufferView];
|
|
40564
|
-
var indicesArrayBuffer = buffers[indicesBufferView.buffer];
|
|
40565
|
-
var valuesArrayBuffer = buffers[valuesBufferView.buffer];
|
|
40566
|
-
var _indices_byteOffset, _indicesBufferView_byteOffset;
|
|
40567
|
-
var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
|
|
40568
|
-
var indicesByteLength = indicesBufferView.byteLength;
|
|
40569
|
-
var _values_byteOffset, _valuesBufferView_byteOffset;
|
|
40570
|
-
var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
|
|
40571
|
-
var valuesByteLength = valuesBufferView.byteLength;
|
|
40572
|
-
var indicesType = GLTFUtils.getComponentType(indices.componentType);
|
|
40573
|
-
var indicesArray = new indicesType(indicesArrayBuffer, indicesByteOffset, indicesByteLength / indicesType.BYTES_PER_ELEMENT);
|
|
40574
|
-
var valuesArray = new arrayType(valuesArrayBuffer, valuesByteOffset, valuesByteLength / arrayType.BYTES_PER_ELEMENT);
|
|
40575
|
-
for(var i1 = 0; i1 < count; i1++){
|
|
40576
|
-
var replaceIndex = indicesArray[i1];
|
|
40577
|
-
for(var j1 = 0; j1 < accessorTypeSize; j1++){
|
|
40578
|
-
typedArray[replaceIndex * accessorTypeSize + j1] = valuesArray[i1 * accessorTypeSize + j1];
|
|
40579
|
-
}
|
|
40580
|
-
}
|
|
40581
|
-
}
|
|
40582
|
-
return typedArray;
|
|
40553
|
+
return vertices;
|
|
40583
40554
|
};
|
|
40584
40555
|
GLTFUtils.getBufferViewData = function getBufferViewData(bufferView, buffers) {
|
|
40585
40556
|
var _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset;
|
|
@@ -41883,16 +41854,16 @@
|
|
|
41883
41854
|
var frame = restoreInfo.blendShape.frames[0];
|
|
41884
41855
|
var position = restoreInfo.position;
|
|
41885
41856
|
var positionData = _this._getBufferData(buffers, position.buffer);
|
|
41886
|
-
frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.
|
|
41857
|
+
frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.byteOffset, position.count, position.normalized, position.componentType);
|
|
41887
41858
|
if (restoreInfo.normal) {
|
|
41888
41859
|
var normal = restoreInfo.normal;
|
|
41889
41860
|
var normalData = _this._getBufferData(buffers, normal.buffer);
|
|
41890
|
-
frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.
|
|
41861
|
+
frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.byteOffset, normal.count, normal.normalized, normal.componentType);
|
|
41891
41862
|
}
|
|
41892
41863
|
if (restoreInfo.tangent) {
|
|
41893
41864
|
var tangent = restoreInfo.tangent;
|
|
41894
41865
|
var tangentData = _this._getBufferData(buffers, tangent.buffer);
|
|
41895
|
-
frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.
|
|
41866
|
+
frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.byteOffset, tangent.count, tangent.normalized, tangent.componentType);
|
|
41896
41867
|
}
|
|
41897
41868
|
}
|
|
41898
41869
|
mesh.uploadData(true);
|
|
@@ -41904,8 +41875,13 @@
|
|
|
41904
41875
|
};
|
|
41905
41876
|
_proto._getBufferData = function _getBufferData(buffers, restoreInfo) {
|
|
41906
41877
|
var main = restoreInfo.main;
|
|
41907
|
-
var
|
|
41908
|
-
|
|
41878
|
+
var data;
|
|
41879
|
+
if (main) {
|
|
41880
|
+
var buffer = buffers[main.bufferIndex];
|
|
41881
|
+
data = new main.TypedArray(buffer, main.byteOffset, main.length);
|
|
41882
|
+
} else {
|
|
41883
|
+
data = new main.TypedArray(main.length);
|
|
41884
|
+
}
|
|
41909
41885
|
var sparseCount = restoreInfo.sparseCount;
|
|
41910
41886
|
if (sparseCount) {
|
|
41911
41887
|
var sparseIndex = restoreInfo.sparseIndices;
|
|
@@ -41978,11 +41954,12 @@
|
|
|
41978
41954
|
};
|
|
41979
41955
|
/**
|
|
41980
41956
|
* @internal
|
|
41981
|
-
*/ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer,
|
|
41957
|
+
*/ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, byteOffset, count, normalized, componentType) {
|
|
41982
41958
|
this.buffer = buffer;
|
|
41983
|
-
this.stride = stride;
|
|
41984
41959
|
this.byteOffset = byteOffset;
|
|
41985
41960
|
this.count = count;
|
|
41961
|
+
this.normalized = normalized;
|
|
41962
|
+
this.componentType = componentType;
|
|
41986
41963
|
};
|
|
41987
41964
|
/**
|
|
41988
41965
|
* Base class of glTF extension parser.
|
|
@@ -42599,23 +42576,7 @@
|
|
|
42599
42576
|
var meshRestoreInfo = new ModelMeshRestoreInfo();
|
|
42600
42577
|
meshRestoreInfo.mesh = mesh1;
|
|
42601
42578
|
context.contentRestorer.meshes.push(meshRestoreInfo);
|
|
42602
|
-
exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF,
|
|
42603
|
-
return null;
|
|
42604
|
-
}, function(attributeName, shapeIndex) {
|
|
42605
|
-
var shapeAccessorIdx = gltfPrimitive.targets[shapeIndex];
|
|
42606
|
-
var attributeAccessorIdx = shapeAccessorIdx[attributeName];
|
|
42607
|
-
if (attributeAccessorIdx) {
|
|
42608
|
-
var accessor = glTF.accessors[attributeAccessorIdx];
|
|
42609
|
-
return GLTFUtils.getAccessorBuffer(context, context.glTF.bufferViews, accessor);
|
|
42610
|
-
} else {
|
|
42611
|
-
return null;
|
|
42612
|
-
}
|
|
42613
|
-
}, function() {
|
|
42614
|
-
var indexAccessor = glTF.accessors[gltfPrimitive.indices];
|
|
42615
|
-
return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
|
|
42616
|
-
return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
|
|
42617
|
-
});
|
|
42618
|
-
}, context.params.keepMeshData).then(resolve);
|
|
42579
|
+
exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve);
|
|
42619
42580
|
}
|
|
42620
42581
|
});
|
|
42621
42582
|
};
|
|
@@ -42628,7 +42589,7 @@
|
|
|
42628
42589
|
};
|
|
42629
42590
|
/**
|
|
42630
42591
|
* @internal
|
|
42631
|
-
*/ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf,
|
|
42592
|
+
*/ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, keepMeshData) {
|
|
42632
42593
|
var _loop = function _loop(attribute) {
|
|
42633
42594
|
var accessor = accessors[attributes[attribute]];
|
|
42634
42595
|
var promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then(function(accessorBuffer) {
|
|
@@ -42723,61 +42684,68 @@
|
|
|
42723
42684
|
}
|
|
42724
42685
|
// BlendShapes
|
|
42725
42686
|
if (targets) {
|
|
42726
|
-
promises.push(exports.GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh,
|
|
42687
|
+
promises.push(exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets));
|
|
42727
42688
|
}
|
|
42728
42689
|
return Promise.all(promises).then(function() {
|
|
42729
42690
|
mesh.uploadData(!keepMeshData);
|
|
42730
|
-
return
|
|
42691
|
+
return mesh;
|
|
42731
42692
|
});
|
|
42732
42693
|
});
|
|
42733
42694
|
};
|
|
42695
|
+
GLTFMeshParser1._getBlendShapeData = function _getBlendShapeData(context, glTF, accessor) {
|
|
42696
|
+
return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then(function(bufferInfo) {
|
|
42697
|
+
var buffer = bufferInfo.data;
|
|
42698
|
+
var _accessor_byteOffset;
|
|
42699
|
+
var byteOffset = bufferInfo.interleaved ? ((_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0) % bufferInfo.stride : 0;
|
|
42700
|
+
var count = accessor.count, normalized = accessor.normalized, componentType = accessor.componentType;
|
|
42701
|
+
var vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);
|
|
42702
|
+
var restoreInfo = new BlendShapeDataRestoreInfo(bufferInfo.restoreInfo, byteOffset, count, normalized, componentType);
|
|
42703
|
+
return {
|
|
42704
|
+
vertices: vertices,
|
|
42705
|
+
restoreInfo: restoreInfo
|
|
42706
|
+
};
|
|
42707
|
+
});
|
|
42708
|
+
};
|
|
42734
42709
|
/**
|
|
42735
42710
|
* @internal
|
|
42736
|
-
*/ GLTFMeshParser1._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh,
|
|
42737
|
-
var _loop = function _loop(i
|
|
42711
|
+
*/ GLTFMeshParser1._createBlendShape = function _createBlendShape(context, mesh, meshRestoreInfo, glTFMesh, gltfPrimitive, glTFTargets) {
|
|
42712
|
+
var _this = this, _loop = function _loop(i) {
|
|
42713
|
+
var blendShapeData = {};
|
|
42714
|
+
blendShapeCollection[i] = blendShapeData;
|
|
42738
42715
|
var name = blendShapeNames ? blendShapeNames[i] : "blendShape" + i;
|
|
42716
|
+
var targets = gltfPrimitive.targets[i];
|
|
42717
|
+
var normalTarget = targets["NORMAL"];
|
|
42718
|
+
var tangentTarget = targets["TANGENT"];
|
|
42719
|
+
var hasNormal = normalTarget !== undefined;
|
|
42720
|
+
var hasTangent = tangentTarget !== undefined;
|
|
42739
42721
|
var promise = Promise.all([
|
|
42740
|
-
|
|
42741
|
-
|
|
42742
|
-
|
|
42743
|
-
]).then(function(
|
|
42744
|
-
var
|
|
42745
|
-
var
|
|
42746
|
-
var tanBufferInfo = infos[2];
|
|
42747
|
-
var target = glTFTargets[i];
|
|
42748
|
-
var posAccessor;
|
|
42749
|
-
var norAccessor;
|
|
42750
|
-
var tanAccessor;
|
|
42751
|
-
var positions = null;
|
|
42752
|
-
if (posBufferInfo) {
|
|
42753
|
-
posAccessor = accessors[target["POSITION"]];
|
|
42754
|
-
var _posAccessor_byteOffset;
|
|
42755
|
-
positions = GLTFUtils.bufferToVector3Array(posBufferInfo.data, posBufferInfo.stride, (_posAccessor_byteOffset = posAccessor.byteOffset) != null ? _posAccessor_byteOffset : 0, posAccessor.count);
|
|
42756
|
-
}
|
|
42757
|
-
var normals = null;
|
|
42758
|
-
if (norBufferInfo) {
|
|
42759
|
-
norAccessor = accessors[target["NORMAL"]];
|
|
42760
|
-
var _norAccessor_byteOffset;
|
|
42761
|
-
normals = GLTFUtils.bufferToVector3Array(norBufferInfo.data, norBufferInfo.stride, (_norAccessor_byteOffset = norAccessor.byteOffset) != null ? _norAccessor_byteOffset : 0, norAccessor.count);
|
|
42762
|
-
}
|
|
42763
|
-
var tangents = null;
|
|
42764
|
-
if (tanBufferInfo) {
|
|
42765
|
-
tanAccessor = accessors[target["NORMAL"]];
|
|
42766
|
-
var _tanAccessor_byteOffset;
|
|
42767
|
-
tangents = GLTFUtils.bufferToVector3Array(tanBufferInfo.data, tanBufferInfo.stride, (_tanAccessor_byteOffset = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset : 0, tanAccessor.count);
|
|
42768
|
-
}
|
|
42722
|
+
_this._getBlendShapeData(context, glTF, accessors[targets["POSITION"]]),
|
|
42723
|
+
hasNormal ? _this._getBlendShapeData(context, glTF, accessors[normalTarget]) : null,
|
|
42724
|
+
hasTangent ? _this._getBlendShapeData(context, glTF, accessors[tangentTarget]) : null
|
|
42725
|
+
]).then(function(vertices) {
|
|
42726
|
+
var _tangentData;
|
|
42727
|
+
var positionData = vertices[0], normalData = vertices[1], tangentData = vertices[2];
|
|
42769
42728
|
var blendShape = new BlendShape(name);
|
|
42770
|
-
blendShape.addFrame(1.0,
|
|
42771
|
-
|
|
42772
|
-
|
|
42773
|
-
meshRestoreInfo.blendShapes.push(new BlendShapeRestoreInfo(blendShape, new BlendShapeDataRestoreInfo(posBufferInfo.restoreInfo, posBufferInfo.stride, (_posAccessor_byteOffset1 = posAccessor.byteOffset) != null ? _posAccessor_byteOffset1 : 0, posAccessor.count), norBufferInfo ? new BlendShapeDataRestoreInfo(norBufferInfo.restoreInfo, norBufferInfo.stride, (_norAccessor_byteOffset1 = norAccessor.byteOffset) != null ? _norAccessor_byteOffset1 : 0, norAccessor.count) : null, tanBufferInfo ? new BlendShapeDataRestoreInfo(tanBufferInfo.restoreInfo, tanBufferInfo.stride, (_tanAccessor_byteOffset1 = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset1 : 0, tanAccessor.count) : null));
|
|
42729
|
+
blendShape.addFrame(1.0, positionData.vertices, hasNormal ? normalData.vertices : null, hasTangent ? tangentData.vertices : null);
|
|
42730
|
+
blendShapeData.blendShape = blendShape;
|
|
42731
|
+
blendShapeData.restoreInfo = new BlendShapeRestoreInfo(blendShape, positionData.restoreInfo, hasNormal ? normalData.restoreInfo : null, hasTangent ? (_tangentData = tangentData) == null ? void 0 : _tangentData.restoreInfo : null);
|
|
42774
42732
|
});
|
|
42775
42733
|
promises.push(promise);
|
|
42776
42734
|
};
|
|
42735
|
+
var glTF = context.glTF;
|
|
42736
|
+
var accessors = glTF.accessors;
|
|
42777
42737
|
var blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;
|
|
42778
42738
|
var promises = new Array();
|
|
42779
|
-
|
|
42780
|
-
|
|
42739
|
+
var blendShapeCount = glTFTargets.length;
|
|
42740
|
+
var blendShapeCollection = new Array(blendShapeCount);
|
|
42741
|
+
for(var i = 0; i < blendShapeCount; i++)_loop(i);
|
|
42742
|
+
return Promise.all(promises).then(function() {
|
|
42743
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(blendShapeCollection), _step; !(_step = _iterator()).done;){
|
|
42744
|
+
var blendShape = _step.value;
|
|
42745
|
+
mesh.addBlendShape(blendShape.blendShape);
|
|
42746
|
+
meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);
|
|
42747
|
+
}
|
|
42748
|
+
});
|
|
42781
42749
|
};
|
|
42782
42750
|
return GLTFMeshParser1;
|
|
42783
42751
|
}(GLTFParser), function() {
|
|
@@ -44989,7 +44957,7 @@
|
|
|
44989
44957
|
], KHR_materials_anisotropy);
|
|
44990
44958
|
|
|
44991
44959
|
//@ts-ignore
|
|
44992
|
-
var version = "1.2.0-beta.
|
|
44960
|
+
var version = "1.2.0-beta.2";
|
|
44993
44961
|
console.log("Galacean engine version: " + version);
|
|
44994
44962
|
for(var key in CoreObjects){
|
|
44995
44963
|
Loader.registerClass(key, CoreObjects[key]);
|