微信小程序编译
All checks were successful
Plugin Library CI / publish (00.BuildOriginality) (push) Successful in 13s
Plugin Library CI / publish (00.StaryEvo) (push) Successful in 17s
Plugin Library CI / publish (00.StaryEvoTools) (push) Successful in 35s
Plugin Library CI / publish (01.HybridCLR) (push) Successful in 15s
Plugin Library CI / publish (02.InformationSave) (push) Successful in 3s
Plugin Library CI / publish (03.YooAsset) (push) Successful in 33s
Plugin Library CI / publish (04.AudioCore) (push) Successful in 3s
Plugin Library CI / publish (05.TableTextConversion) (push) Successful in 5s
Plugin Library CI / publish (06.UIFarme) (push) Successful in 15s
Plugin Library CI / publish (07.RKTools) (push) Successful in 2s
Plugin Library CI / publish (08.UniTask) (push) Successful in 3s
Plugin Library CI / publish (09.CodeChecker) (push) Successful in 16s
Plugin Library CI / publish (10.StoryEditor) (push) Successful in 3s
Plugin Library CI / publish (10.XNode) (push) Successful in 3s
Plugin Library CI / publish (11.PointCloudTools) (push) Successful in 2s
Plugin Library CI / publish (12.WeixinMinigame) (push) Successful in 2m32s
All checks were successful
Plugin Library CI / publish (00.BuildOriginality) (push) Successful in 13s
Plugin Library CI / publish (00.StaryEvo) (push) Successful in 17s
Plugin Library CI / publish (00.StaryEvoTools) (push) Successful in 35s
Plugin Library CI / publish (01.HybridCLR) (push) Successful in 15s
Plugin Library CI / publish (02.InformationSave) (push) Successful in 3s
Plugin Library CI / publish (03.YooAsset) (push) Successful in 33s
Plugin Library CI / publish (04.AudioCore) (push) Successful in 3s
Plugin Library CI / publish (05.TableTextConversion) (push) Successful in 5s
Plugin Library CI / publish (06.UIFarme) (push) Successful in 15s
Plugin Library CI / publish (07.RKTools) (push) Successful in 2s
Plugin Library CI / publish (08.UniTask) (push) Successful in 3s
Plugin Library CI / publish (09.CodeChecker) (push) Successful in 16s
Plugin Library CI / publish (10.StoryEditor) (push) Successful in 3s
Plugin Library CI / publish (10.XNode) (push) Successful in 3s
Plugin Library CI / publish (11.PointCloudTools) (push) Successful in 2s
Plugin Library CI / publish (12.WeixinMinigame) (push) Successful in 2m32s
This commit is contained in:
@@ -0,0 +1,324 @@
|
||||
mergeInto(LibraryManager.library, {
|
||||
|
||||
glCompressedTexImage2D: function(target, level, internalFormat, width, height, border, imageSize, data) {
|
||||
|
||||
var lastTid = window._lastTextureId;
|
||||
var isMiniProgram = typeof wx !== 'undefined';
|
||||
|
||||
function getMatchId() {
|
||||
var webgl1c = internalFormat == 36196;
|
||||
if (isMiniProgram && GameGlobal.USED_TEXTURE_COMPRESSION && webgl1c) {
|
||||
var length = HEAPU8.subarray(data, data + 1)[0];
|
||||
var d = HEAPU8.subarray(data + 1, data + 1 + length);
|
||||
var res = [];
|
||||
d.forEach(function(v) {
|
||||
res.push(String.fromCharCode(v));
|
||||
});
|
||||
var matchId = res.join('');
|
||||
var start0 = res.length - 8;
|
||||
var start1 = res.length - 5;
|
||||
if (res[start0] == '_') {
|
||||
start0++;
|
||||
var header = ['a', 's', 't', 'c'];
|
||||
for (var i = 0; i < header.length; i++) {
|
||||
if (res[start0 + i] != header[i]) {
|
||||
return [matchId, '8x8', false];
|
||||
}
|
||||
}
|
||||
start0--;
|
||||
var astcBlockSize = matchId.substring(start0 + 5);
|
||||
return [matchId.substr(0, start0), astcBlockSize, false];
|
||||
} else if (res[start1] == '_') {
|
||||
start1++;
|
||||
var size = res[start1++];
|
||||
if (size != '4' && size != '5' && size != '6' && size != '8') {
|
||||
return [matchId, '8x8', false];
|
||||
}
|
||||
var astcBlockSize = size + 'x' + size;
|
||||
var limit = res[start1];
|
||||
var limitType = false;
|
||||
if (limit != '#') {
|
||||
limitType = true;
|
||||
}
|
||||
start1 -= 2;
|
||||
return [matchId.substr(0, start1), astcBlockSize, limitType];
|
||||
} else {
|
||||
return [matchId, '8x8', false];
|
||||
}
|
||||
}
|
||||
return [-1, '8x8', false];
|
||||
}
|
||||
|
||||
var matchIdInfo = getMatchId();
|
||||
var matchId = matchIdInfo[0];
|
||||
var astcBlockSize = matchIdInfo[1];
|
||||
var limitType = matchIdInfo[2];
|
||||
|
||||
function compressedImage2D(rawData) {
|
||||
var format = 0;
|
||||
var dataOffset = 16;
|
||||
var compressFormat = limitType ? GameGlobal.NoneLimitSupportedTexture : GameGlobal.TextureCompressedFormat;
|
||||
switch (compressFormat) {
|
||||
case "astc":
|
||||
var astcList = GLctx.getExtension("WEBGL_compressed_texture_astc");
|
||||
if (astcBlockSize == '4x4') {
|
||||
format = astcList.COMPRESSED_RGBA_ASTC_4x4_KHR;
|
||||
break;
|
||||
}
|
||||
if (astcBlockSize == '5x5') {
|
||||
format = astcList.COMPRESSED_RGBA_ASTC_5x5_KHR;
|
||||
break;
|
||||
}
|
||||
if (astcBlockSize == '6x6') {
|
||||
format = 0x93B4;
|
||||
break;
|
||||
}
|
||||
format = astcList.COMPRESSED_RGBA_ASTC_8x8_KHR;
|
||||
break;
|
||||
case "etc2":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_etc").COMPRESSED_RGBA8_ETC2_EAC;
|
||||
break;
|
||||
case "dds":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_s3tc").COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
dataOffset = 128;
|
||||
break;
|
||||
case "pvr":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_pvrtc").COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
||||
var PVR_HEADER_METADATA = 12;
|
||||
var PVR_HEADER_LENGTH = 13; // The header length in 32 bit ints.
|
||||
var header = new Int32Array(rawData, 0, PVR_HEADER_LENGTH);
|
||||
dataOffset = header[PVR_HEADER_METADATA] + 52;
|
||||
break;
|
||||
case "etc1":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_etc1").COMPRESSED_RGB_ETC1_WEBGL;
|
||||
break
|
||||
}
|
||||
GLctx["compressedTexImage2D"](target, level, format, width, height, border, new Uint8Array(rawData, dataOffset))
|
||||
}
|
||||
|
||||
function texImage2D(image) {
|
||||
GLctx.texImage2D(GLctx.TEXTURE_2D, 0, GLctx.RGBA, GLctx.RGBA, GLctx.UNSIGNED_BYTE, image)
|
||||
}
|
||||
|
||||
function renderTexture(id) {
|
||||
if (!GL.textures[lastTid]) {
|
||||
return;
|
||||
}
|
||||
var PotList = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096];
|
||||
var _data = GameGlobal.DownloadedTextures[id].data;
|
||||
var tid = lastTid;
|
||||
if (!GL.textures[tid]) {
|
||||
return;
|
||||
}
|
||||
GLctx.bindTexture(GLctx.TEXTURE_2D, GL.textures[tid]);
|
||||
|
||||
if (limitType && !GameGlobal.NoneLimitSupportedTexture) {
|
||||
texImage2D(_data);
|
||||
} else if (!GameGlobal.TextureCompressedFormat) {
|
||||
texImage2D(_data);
|
||||
} else if (GameGlobal.TextureCompressedFormat == "pvr" && (width !== height || PotList.indexOf(height) == -1)) {
|
||||
texImage2D(_data);
|
||||
} else if (GameGlobal.TextureCompressedFormat == 'dds' && (height % 4 !== 0 || width % 4 !== 0)) {
|
||||
texImage2D(_data);
|
||||
} else {
|
||||
compressedImage2D(_data);
|
||||
}
|
||||
GLctx.bindTexture(GLctx.TEXTURE_2D, window._lastBoundTexture ? GL.textures[window._lastBoundTexture] : null);
|
||||
|
||||
}
|
||||
|
||||
function renderTransparent() {
|
||||
GLctx.texImage2D(GLctx.TEXTURE_2D, 0, GLctx.RGBA, 1, 1, 0, GLctx.RGBA, GLctx.UNSIGNED_SHORT_4_4_4_4, new Uint16Array([0, 0]))
|
||||
}
|
||||
|
||||
if (matchId != -1) {
|
||||
if (GameGlobal.DownloadedTextures[matchId] && GameGlobal.DownloadedTextures[matchId].data) {
|
||||
renderTexture(matchId)
|
||||
} else {
|
||||
renderTransparent();
|
||||
window.WXWASMSDK.WXDownloadTexture(matchId, width, height, (function() {
|
||||
renderTexture(matchId)
|
||||
}), limitType)
|
||||
}
|
||||
return
|
||||
}
|
||||
if (GL.currentContext.supportsWebGL2EntryPoints) {
|
||||
GLctx["compressedTexImage2D"](target, level, internalFormat, width, height, border, HEAPU8, data, imageSize);
|
||||
return
|
||||
}
|
||||
GLctx["compressedTexImage2D"](target, level, internalFormat, width, height, border, data ? HEAPU8.subarray(data, data + imageSize) : null)
|
||||
},
|
||||
glCompressedTexSubImage2D: function(target, level, xoffset, yoffset, width, height, format, imageSize, data) {
|
||||
var lastTid = window._lastTextureId;
|
||||
var isMiniProgram = typeof wx !== 'undefined';
|
||||
|
||||
function getMatchId() {
|
||||
var webgl1c = format == 36196;
|
||||
if (isMiniProgram && GameGlobal.USED_TEXTURE_COMPRESSION && webgl1c) {
|
||||
var length = HEAPU8.subarray(data, data + 1)[0];
|
||||
var d = HEAPU8.subarray(data + 1, data + 1 + length);
|
||||
var res = [];
|
||||
d.forEach(function(v) {
|
||||
res.push(String.fromCharCode(v));
|
||||
});
|
||||
var matchId = res.join('');
|
||||
var start0 = res.length - 8;
|
||||
var start1 = res.length - 5;
|
||||
if (res[start0] == '_') {
|
||||
start0++;
|
||||
var header = ['a', 's', 't', 'c'];
|
||||
for (var i = 0; i < header.length; i++) {
|
||||
if (res[start0 + i] != header[i]) {
|
||||
return [matchId, '8x8', false];
|
||||
}
|
||||
}
|
||||
start0--;
|
||||
var astcBlockSize = matchId.substring(start0 + 5);
|
||||
return [matchId.substr(0, start0), astcBlockSize, false];
|
||||
} else if (res[start1] == '_') {
|
||||
start1++;
|
||||
var size = res[start1++];
|
||||
if (size != '4' && size != '5' && size != '6' && size != '8') {
|
||||
return [matchId, '8x8', false];
|
||||
}
|
||||
var astcBlockSize = size + 'x' + size;
|
||||
var limit = res[start1];
|
||||
var limitType = false;
|
||||
if (limit != '#') {
|
||||
limitType = true;
|
||||
}
|
||||
start1 -= 2;
|
||||
return [matchId.substr(0, start1), astcBlockSize, limitType];
|
||||
} else {
|
||||
return [matchId, '8x8', false];
|
||||
}
|
||||
}
|
||||
return [-1, '8x8', false];
|
||||
}
|
||||
|
||||
var matchIdInfo = getMatchId();
|
||||
var matchId = matchIdInfo[0];
|
||||
var astcBlockSize = matchIdInfo[1];
|
||||
var limitType = matchIdInfo[2];
|
||||
|
||||
function compressedImage2D(rawData) {
|
||||
var format = 0;
|
||||
var dataOffset = 16;
|
||||
var compressFormat = limitType ? GameGlobal.NoneLimitSupportedTexture : GameGlobal.TextureCompressedFormat;
|
||||
switch (compressFormat) {
|
||||
case "astc":
|
||||
var astcList = GLctx.getExtension("WEBGL_compressed_texture_astc");
|
||||
if (astcBlockSize == '4x4') {
|
||||
format = astcList.COMPRESSED_RGBA_ASTC_4x4_KHR;
|
||||
break;
|
||||
}
|
||||
if (astcBlockSize == '5x5') {
|
||||
format = astcList.COMPRESSED_RGBA_ASTC_5x5_KHR;
|
||||
break;
|
||||
}
|
||||
if (astcBlockSize == '6x6') {
|
||||
format = 0x93B4;
|
||||
break;
|
||||
}
|
||||
format = astcList.COMPRESSED_RGBA_ASTC_8x8_KHR;
|
||||
break;
|
||||
case "etc2":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_etc").COMPRESSED_RGBA8_ETC2_EAC;
|
||||
break;
|
||||
case "dds":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_s3tc").COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
dataOffset = 128;
|
||||
break;
|
||||
case "pvr":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_pvrtc").COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
||||
var PVR_HEADER_METADATA = 12;
|
||||
var PVR_HEADER_LENGTH = 13; // The header length in 32 bit ints.
|
||||
var header = new Int32Array(rawData, 0, PVR_HEADER_LENGTH);
|
||||
dataOffset = header[PVR_HEADER_METADATA] + 52;
|
||||
break;
|
||||
case "etc1":
|
||||
format = GLctx.getExtension("WEBGL_compressed_texture_etc1").COMPRESSED_RGB_ETC1_WEBGL;
|
||||
break
|
||||
}
|
||||
GLctx["compressedTexSubImage2D"](target, level, xoffset, yoffset, width, height, format, new Uint8Array(rawData, dataOffset))
|
||||
}
|
||||
|
||||
function texImage2D(image) {
|
||||
GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, GLctx.RGBA, GLctx.UNSIGNED_BYTE, image)
|
||||
}
|
||||
|
||||
function renderTexture(id) {
|
||||
if (!GL.textures[lastTid]) {
|
||||
return;
|
||||
}
|
||||
var _data = GameGlobal.DownloadedTextures[id].data;
|
||||
var tid = lastTid;
|
||||
if (!GL.textures[tid]) {
|
||||
return;
|
||||
}
|
||||
GLctx.bindTexture(GLctx.TEXTURE_2D, GL.textures[tid]);
|
||||
|
||||
if (limitType && !GameGlobal.NoneLimitSupportedTexture) {
|
||||
texImage2D(_data);
|
||||
} else if (!GameGlobal.TextureCompressedFormat) {
|
||||
texImage2D(_data);
|
||||
} else if (GameGlobal.TextureCompressedFormat == "pvr" && (width !== height || PotList.indexOf(height) == -1)) {
|
||||
texImage2D(_data);
|
||||
} else if (GameGlobal.TextureCompressedFormat == 'dds' && (height % 4 !== 0 || width % 4 !== 0)) {
|
||||
texImage2D(_data);
|
||||
} else {
|
||||
compressedImage2D(_data);
|
||||
}
|
||||
|
||||
|
||||
GLctx.bindTexture(GLctx.TEXTURE_2D, window._lastBoundTexture ? GL.textures[window._lastBoundTexture] : null);
|
||||
|
||||
}
|
||||
|
||||
var p = window._lastTexStorage2DParams;
|
||||
if (matchId != -1) {
|
||||
var f = GLctx.RGBA8;
|
||||
switch (GameGlobal.TextureCompressedFormat) {
|
||||
case "astc":
|
||||
var astcList = GLctx.getExtension("WEBGL_compressed_texture_astc");
|
||||
if (astcBlockSize == '4x4') {
|
||||
f = astcList.COMPRESSED_RGBA_ASTC_4x4_KHR;
|
||||
break;
|
||||
}
|
||||
if (astcBlockSize == '5x5') {
|
||||
f = astcList.COMPRESSED_RGBA_ASTC_5x5_KHR;
|
||||
break;
|
||||
}
|
||||
if (astcBlockSize == '6x6') {
|
||||
f = 0x93B4;
|
||||
break;
|
||||
}
|
||||
f = astcList.COMPRESSED_RGBA_ASTC_8x8_KHR;
|
||||
break;
|
||||
case "etc2":
|
||||
f = GLctx.getExtension("WEBGL_compressed_texture_etc").COMPRESSED_RGBA8_ETC2_EAC;
|
||||
break;
|
||||
case "dds":
|
||||
f = GLctx.getExtension("WEBGL_compressed_texture_s3tc").COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
break;
|
||||
case "pvr":
|
||||
f = GLctx.getExtension("WEBGL_compressed_texture_pvrtc").COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
||||
break;
|
||||
}
|
||||
GLctx["texStorage2D"](p[0], p[1], f, width, height);
|
||||
if (GameGlobal.DownloadedTextures[matchId] && GameGlobal.DownloadedTextures[matchId].data) {
|
||||
renderTexture(matchId)
|
||||
} else {
|
||||
window.WXWASMSDK.WXDownloadTexture(matchId, width, height, (function() {
|
||||
renderTexture(matchId)
|
||||
}), limitType)
|
||||
}
|
||||
return
|
||||
}
|
||||
if (GL.currentContext.supportsWebGL2EntryPoints) {
|
||||
GLctx["compressedTexSubImage2D"](target, level, xoffset, yoffset, width, height, format, HEAPU8, data, imageSize);
|
||||
return
|
||||
}
|
||||
GLctx["compressedTexSubImage2D"](target, level, xoffset, yoffset, width, height, format, data ? HEAPU8.subarray(data, data + imageSize) : null)
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user