@galacean/engine 1.3.0-alpha.1 → 1.3.0-alpha.3
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 +217 -61
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +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
|
@@ -7948,6 +7948,43 @@
|
|
|
7948
7948
|
StencilOperation[StencilOperation[/** Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the maximum representable unsigned value. */ "IncrementWrap"] = 6] = "IncrementWrap";
|
|
7949
7949
|
StencilOperation[StencilOperation[/** Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable unsigned value when decrementing a stencil buffer value of 0. */ "DecrementWrap"] = 7] = "DecrementWrap";
|
|
7950
7950
|
})(exports.StencilOperation || (exports.StencilOperation = {}));
|
|
7951
|
+
exports.ShaderPlatformTarget = void 0;
|
|
7952
|
+
(function(ShaderPlatformTarget) {
|
|
7953
|
+
ShaderPlatformTarget[ShaderPlatformTarget["GLES100"] = 0] = "GLES100";
|
|
7954
|
+
ShaderPlatformTarget[ShaderPlatformTarget["GLES300"] = 1] = "GLES300";
|
|
7955
|
+
})(exports.ShaderPlatformTarget || (exports.ShaderPlatformTarget = {}));
|
|
7956
|
+
function _array_like_to_array$1(arr, len) {
|
|
7957
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
7958
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
7959
|
+
return arr2;
|
|
7960
|
+
}
|
|
7961
|
+
function _unsupported_iterable_to_array$1(o, minLen) {
|
|
7962
|
+
if (!o) return;
|
|
7963
|
+
if (typeof o === "string") return _array_like_to_array$1(o, minLen);
|
|
7964
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
7965
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
7966
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
7967
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
|
|
7968
|
+
}
|
|
7969
|
+
function _create_for_of_iterator_helper_loose$1(o, allowArrayLike) {
|
|
7970
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
7971
|
+
if (it) return (it = it.call(o)).next.bind(it);
|
|
7972
|
+
// Fallback for engines without symbol support
|
|
7973
|
+
if (Array.isArray(o) || (it = _unsupported_iterable_to_array$1(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
7974
|
+
if (it) o = it;
|
|
7975
|
+
var i = 0;
|
|
7976
|
+
return function() {
|
|
7977
|
+
if (i >= o.length) return {
|
|
7978
|
+
done: true
|
|
7979
|
+
};
|
|
7980
|
+
return {
|
|
7981
|
+
done: false,
|
|
7982
|
+
value: o[i++]
|
|
7983
|
+
};
|
|
7984
|
+
};
|
|
7985
|
+
}
|
|
7986
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
7987
|
+
}
|
|
7951
7988
|
/**
|
|
7952
7989
|
* Shader macro。
|
|
7953
7990
|
*/ var ShaderMacro = /*#__PURE__*/ function() {
|
|
@@ -7977,14 +8014,14 @@
|
|
|
7977
8014
|
maskMap.length++;
|
|
7978
8015
|
maskMap[index] = new Array(32);
|
|
7979
8016
|
}
|
|
7980
|
-
maskMap[index][bit] =
|
|
8017
|
+
maskMap[index][bit] = macro;
|
|
7981
8018
|
ShaderMacro._macroCounter++;
|
|
7982
8019
|
}
|
|
7983
8020
|
return macro;
|
|
7984
8021
|
};
|
|
7985
8022
|
/**
|
|
7986
8023
|
* @internal
|
|
7987
|
-
*/ ShaderMacro.
|
|
8024
|
+
*/ ShaderMacro._getMacrosElements = function _getMacrosElements(macros, out) {
|
|
7988
8025
|
var maskMap = ShaderMacro._macroMaskMap;
|
|
7989
8026
|
var mask = macros._mask;
|
|
7990
8027
|
out.length = 0;
|
|
@@ -8165,14 +8202,6 @@
|
|
|
8165
8202
|
};
|
|
8166
8203
|
return ShaderMacroCollection;
|
|
8167
8204
|
}();
|
|
8168
|
-
/**
|
|
8169
|
-
* Pipeline stage.
|
|
8170
|
-
*/ exports.PipelineStage = void 0;
|
|
8171
|
-
(function(PipelineStage) {
|
|
8172
|
-
PipelineStage[/** DepthOnly stage. */ "DepthOnly"] = "DepthOnly";
|
|
8173
|
-
PipelineStage[/** Shadow caster stage. */ "ShadowCaster"] = "ShadowCaster";
|
|
8174
|
-
PipelineStage[/** Forward shading stage. */ "Forward"] = "Forward";
|
|
8175
|
-
})(exports.PipelineStage || (exports.PipelineStage = {}));
|
|
8176
8205
|
function _extends$2() {
|
|
8177
8206
|
_extends$2 = Object.assign || function assign(target) {
|
|
8178
8207
|
for(var i = 1; i < arguments.length; i++){
|
|
@@ -8183,8 +8212,16 @@
|
|
|
8183
8212
|
};
|
|
8184
8213
|
return _extends$2.apply(this, arguments);
|
|
8185
8214
|
}
|
|
8215
|
+
/**
|
|
8216
|
+
* Pipeline stage.
|
|
8217
|
+
*/ exports.PipelineStage = void 0;
|
|
8218
|
+
(function(PipelineStage) {
|
|
8219
|
+
PipelineStage[/** DepthOnly stage. */ "DepthOnly"] = "DepthOnly";
|
|
8220
|
+
PipelineStage[/** Shadow caster stage. */ "ShadowCaster"] = "ShadowCaster";
|
|
8221
|
+
PipelineStage[/** Forward shading stage. */ "Forward"] = "Forward";
|
|
8222
|
+
})(exports.PipelineStage || (exports.PipelineStage = {}));
|
|
8186
8223
|
var camera_declare = "#define GLSLIFY 1\nuniform vec3 camera_Position;uniform vec3 camera_Forward;uniform vec4 camera_ProjectionParams;"; // eslint-disable-line
|
|
8187
|
-
var common = "#define GLSLIFY 1\n#define PI 3.14159265359\n#define RECIPROCAL_PI 0.31830988618\n#define EPSILON 1e-6\n#define LOG2 1.442695\n#define saturate( a ) clamp( a, 0.0, 1.0 )\nfloat pow2(float x){return x*x;}vec4 RGBMToLinear(vec4 value,float maxRange){return vec4(value.rgb*value.a*maxRange,1.0);}vec4 gammaToLinear(vec4 srgbIn){return vec4(pow(srgbIn.rgb,vec3(2.2)),srgbIn.a);}vec4 linearToGamma(vec4 linearIn){return vec4(pow(linearIn.rgb,vec3(1.0/2.2)),linearIn.a);}uniform vec4 camera_DepthBufferParams;float remapDepthBufferLinear01(float z){return 1.0/(camera_DepthBufferParams.x*z+camera_DepthBufferParams.y);}\n#ifdef GRAPHICS_API_WEBGL2\n#define INVERSE_MAT(mat) inverse(mat)\n#else\nmat2 inverseMat(mat2 m){return mat2(m[1][1],-m[0][1],-m[1][0],m[0][0])/(m[0][0]*m[1][1]-m[0][1]*m[1][0]);}mat3 inverseMat(mat3 m){float a00=m[0][0],a01=m[0][1],a02=m[0][2];float a10=m[1][0],a11=m[1][1],a12=m[1][2];float a20=m[2][0],a21=m[2][1],a22=m[2][2];float b01=a22*a11-a12*a21;float b11=-a22*a10+a12*a20;float b21=a21*a10-a11*a20;float det=a00*b01+a01*b11+a02*b21;return mat3(b01,(-a22*a01+a02*a21),(a12*a01-a02*a11),b11,(a22*a00-a02*a20),(-a12*a00+a02*a10),b21,(-a21*a00+a01*a20),(a11*a00-a01*a10))/det;}mat4 inverseMat(mat4 m){float a00=m[0][0],a01=m[0][1],a02=m[0][2],a03=m[0][3],a10=m[1][0],a11=m[1][1],a12=m[1][2],a13=m[1][3],a20=m[2][0],a21=m[2][1],a22=m[2][2],a23=m[2][3],a30=m[3][0],a31=m[3][1],a32=m[3][2],a33=m[3][3],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32,det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;return mat4(a11*b11-a12*b10+a13*b09,a02*b10-a01*b11-a03*b09,a31*b05-a32*b04+a33*b03,a22*b04-a21*b05-a23*b03,a12*b08-a10*b11-a13*b07,a00*b11-a02*b08+a03*b07,a32*b02-a30*b05-a33*b01,a20*b05-a22*b02+a23*b01,a10*b10-a11*b08+a13*b06,a01*b08-a00*b10-a03*b06,a30*b04-a31*b02+a33*b00,a21*b02-a20*b04-a23*b00,a11*b07-a10*b09-a12*b06,a00*b09-a01*b07+a02*b06,a31*b01-a30*b03-a32*b00,a20*b03-a21*b01+a22*b00)/det;}\n#define INVERSE_MAT(mat) inverseMat(mat)\n#endif\n"; // eslint-disable-line
|
|
8224
|
+
var common = "#define GLSLIFY 1\n#define PI 3.14159265359\n#define RECIPROCAL_PI 0.31830988618\n#define EPSILON 1e-6\n#define LOG2 1.442695\n#define saturate( a ) clamp( a, 0.0, 1.0 )\nfloat pow2(float x){return x*x;}vec4 RGBMToLinear(vec4 value,float maxRange){return vec4(value.rgb*value.a*maxRange,1.0);}vec4 gammaToLinear(vec4 srgbIn){return vec4(pow(srgbIn.rgb,vec3(2.2)),srgbIn.a);}vec4 linearToGamma(vec4 linearIn){linearIn=max(linearIn,0.0);return vec4(pow(linearIn.rgb,vec3(1.0/2.2)),linearIn.a);}uniform vec4 camera_DepthBufferParams;float remapDepthBufferLinear01(float z){return 1.0/(camera_DepthBufferParams.x*z+camera_DepthBufferParams.y);}\n#ifdef GRAPHICS_API_WEBGL2\n#define INVERSE_MAT(mat) inverse(mat)\n#else\nmat2 inverseMat(mat2 m){return mat2(m[1][1],-m[0][1],-m[1][0],m[0][0])/(m[0][0]*m[1][1]-m[0][1]*m[1][0]);}mat3 inverseMat(mat3 m){float a00=m[0][0],a01=m[0][1],a02=m[0][2];float a10=m[1][0],a11=m[1][1],a12=m[1][2];float a20=m[2][0],a21=m[2][1],a22=m[2][2];float b01=a22*a11-a12*a21;float b11=-a22*a10+a12*a20;float b21=a21*a10-a11*a20;float det=a00*b01+a01*b11+a02*b21;return mat3(b01,(-a22*a01+a02*a21),(a12*a01-a02*a11),b11,(a22*a00-a02*a20),(-a12*a00+a02*a10),b21,(-a21*a00+a01*a20),(a11*a00-a01*a10))/det;}mat4 inverseMat(mat4 m){float a00=m[0][0],a01=m[0][1],a02=m[0][2],a03=m[0][3],a10=m[1][0],a11=m[1][1],a12=m[1][2],a13=m[1][3],a20=m[2][0],a21=m[2][1],a22=m[2][2],a23=m[2][3],a30=m[3][0],a31=m[3][1],a32=m[3][2],a33=m[3][3],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32,det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;return mat4(a11*b11-a12*b10+a13*b09,a02*b10-a01*b11-a03*b09,a31*b05-a32*b04+a33*b03,a22*b04-a21*b05-a23*b03,a12*b08-a10*b11-a13*b07,a00*b11-a02*b08+a03*b07,a32*b02-a30*b05-a33*b01,a20*b05-a22*b02+a23*b01,a10*b10-a11*b08+a13*b06,a01*b08-a00*b10-a03*b06,a30*b04-a31*b02+a33*b00,a21*b02-a20*b04-a23*b00,a11*b07-a10*b09-a12*b06,a00*b09-a01*b07+a02*b06,a31*b01-a30*b03-a32*b00,a20*b03-a21*b01+a22*b00)/det;}\n#define INVERSE_MAT(mat) inverseMat(mat)\n#endif\n"; // eslint-disable-line
|
|
8188
8225
|
var common_vert = "#define GLSLIFY 1\nattribute vec3 POSITION;\n#ifdef RENDERER_HAS_UV\nattribute vec2 TEXCOORD_0;\n#endif\n#ifdef RENDERER_HAS_UV1\nattribute vec2 TEXCOORD_1;\n#endif\n#ifdef RENDERER_HAS_SKIN\nattribute vec4 JOINTS_0;attribute vec4 WEIGHTS_0;\n#ifdef RENDERER_USE_JOINT_TEXTURE\nuniform sampler2D renderer_JointSampler;uniform float renderer_JointCount;mat4 getJointMatrix(sampler2D smp,float index){float base=index/renderer_JointCount;float hf=0.5/renderer_JointCount;float v=base+hf;vec4 m0=texture2D(smp,vec2(0.125,v));vec4 m1=texture2D(smp,vec2(0.375,v));vec4 m2=texture2D(smp,vec2(0.625,v));vec4 m3=texture2D(smp,vec2(0.875,v));return mat4(m0,m1,m2,m3);}\n#else\nuniform mat4 renderer_JointMatrix[RENDERER_JOINTS_NUM];\n#endif\n#endif\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nattribute vec4 COLOR_0;\n#endif\n#include <transform_declare>\n#include <camera_declare>\nuniform vec4 material_TilingOffset;\n#ifndef MATERIAL_OMIT_NORMAL\n#ifdef RENDERER_HAS_NORMAL\nattribute vec3 NORMAL;\n#endif\n#ifdef RENDERER_HAS_TANGENT\nattribute vec4 TANGENT;\n#endif\n#endif\n"; // eslint-disable-line
|
|
8189
8226
|
var transform_declare = "#define GLSLIFY 1\nuniform mat4 renderer_LocalMat;uniform mat4 renderer_ModelMat;uniform mat4 camera_ViewMat;uniform mat4 camera_ProjMat;uniform mat4 renderer_MVMat;uniform mat4 renderer_MVPMat;uniform mat4 renderer_NormalMat;"; // eslint-disable-line
|
|
8190
8227
|
var color_share = "#define GLSLIFY 1\n#ifdef RENDERER_ENABLE_VERTEXCOLOR\nvarying vec4 v_color;\n#endif\n"; // eslint-disable-line
|
|
@@ -8328,7 +8365,7 @@
|
|
|
8328
8365
|
var ShaderFactory = function ShaderFactory() {};
|
|
8329
8366
|
ShaderFactory.parseCustomMacros = function parseCustomMacros(macros) {
|
|
8330
8367
|
return macros.map(function(m) {
|
|
8331
|
-
return "#define " + m + "\n";
|
|
8368
|
+
return "#define " + (m.value ? m.name + " " + m.value : m.name) + "\n";
|
|
8332
8369
|
}).join("");
|
|
8333
8370
|
};
|
|
8334
8371
|
ShaderFactory.registerInclude = function registerInclude(includeName, includeSource) {
|
|
@@ -9105,29 +9142,49 @@
|
|
|
9105
9142
|
(function() {
|
|
9106
9143
|
ShaderProgram._counter = 0;
|
|
9107
9144
|
})();
|
|
9145
|
+
/**
|
|
9146
|
+
* @internal
|
|
9147
|
+
* Shader pass type
|
|
9148
|
+
*/ var ShaderType;
|
|
9149
|
+
(function(ShaderType) {
|
|
9150
|
+
ShaderType[ShaderType[/** init by glsl */ "Canonical"] = 0] = "Canonical";
|
|
9151
|
+
ShaderType[ShaderType[/** init by shader-lab */ "ShaderLab"] = 1] = "ShaderLab";
|
|
9152
|
+
})(ShaderType || (ShaderType = {}));
|
|
9108
9153
|
/**
|
|
9109
9154
|
* Shader pass containing vertex and fragment source.
|
|
9110
9155
|
*/ var ShaderPass = /*#__PURE__*/ function(ShaderPart1) {
|
|
9111
9156
|
_inherits$2(ShaderPass, ShaderPart1);
|
|
9112
|
-
function ShaderPass(nameOrVertexSource,
|
|
9157
|
+
function ShaderPass(nameOrVertexSource, vertexSourceOrFragmentSourceOrCode, fragmentSourceOrTagsOrVertexEntry, fragmentEntryOrTags, tags) {
|
|
9113
9158
|
var _this;
|
|
9114
9159
|
_this = ShaderPart1.call(this) || this;
|
|
9115
9160
|
/** @internal */ _this._shaderPassId = 0;
|
|
9116
9161
|
/** @internal */ _this._renderStateDataMap = {};
|
|
9117
9162
|
/** @internal */ _this._shaderProgramPools = [];
|
|
9163
|
+
/** @internal */ _this._path = "";
|
|
9164
|
+
_this._platformMacros = [];
|
|
9118
9165
|
_this._shaderPassId = ShaderPass._shaderPassCounter++;
|
|
9119
|
-
|
|
9166
|
+
_this._type = ShaderType.Canonical;
|
|
9167
|
+
if (typeof fragmentEntryOrTags === "string") {
|
|
9120
9168
|
_this._name = nameOrVertexSource;
|
|
9121
|
-
_this.
|
|
9122
|
-
_this.
|
|
9123
|
-
|
|
9169
|
+
_this._shaderLabSource = vertexSourceOrFragmentSourceOrCode;
|
|
9170
|
+
_this._vertexEntry = fragmentSourceOrTagsOrVertexEntry;
|
|
9171
|
+
_this._fragmentEntry = fragmentEntryOrTags;
|
|
9172
|
+
tags = _extends$2({
|
|
9173
|
+
pipelineStage: exports.PipelineStage.Forward
|
|
9174
|
+
}, tags);
|
|
9175
|
+
_this._type = ShaderType.ShaderLab;
|
|
9176
|
+
} else if (typeof fragmentSourceOrTagsOrVertexEntry === "string") {
|
|
9177
|
+
_this._name = nameOrVertexSource;
|
|
9178
|
+
_this._vertexSource = vertexSourceOrFragmentSourceOrCode;
|
|
9179
|
+
_this._fragmentSource = fragmentSourceOrTagsOrVertexEntry;
|
|
9180
|
+
tags = fragmentEntryOrTags != null ? fragmentEntryOrTags : {
|
|
9124
9181
|
pipelineStage: exports.PipelineStage.Forward
|
|
9125
9182
|
};
|
|
9126
9183
|
} else {
|
|
9127
9184
|
_this._name = "Default";
|
|
9128
9185
|
_this._vertexSource = nameOrVertexSource;
|
|
9129
|
-
_this._fragmentSource =
|
|
9130
|
-
tags =
|
|
9186
|
+
_this._fragmentSource = vertexSourceOrFragmentSourceOrCode;
|
|
9187
|
+
tags = fragmentSourceOrTagsOrVertexEntry != null ? fragmentSourceOrTagsOrVertexEntry : {
|
|
9131
9188
|
pipelineStage: exports.PipelineStage.Forward
|
|
9132
9189
|
};
|
|
9133
9190
|
}
|
|
@@ -9145,9 +9202,52 @@
|
|
|
9145
9202
|
if (shaderProgram) {
|
|
9146
9203
|
return shaderProgram;
|
|
9147
9204
|
}
|
|
9205
|
+
if (this._type === ShaderType.Canonical) {
|
|
9206
|
+
shaderProgram = this._getCanonicalShaderProgram(engine, macroCollection);
|
|
9207
|
+
} else {
|
|
9208
|
+
shaderProgram = this._compileShaderProgram(engine, macroCollection, this._vertexEntry, this._fragmentEntry);
|
|
9209
|
+
}
|
|
9210
|
+
shaderProgramPool.cache(shaderProgram);
|
|
9211
|
+
return shaderProgram;
|
|
9212
|
+
};
|
|
9213
|
+
/**
|
|
9214
|
+
* @internal
|
|
9215
|
+
*/ _proto._destroy = function _destroy() {
|
|
9216
|
+
var shaderProgramPools = this._shaderProgramPools;
|
|
9217
|
+
for(var i = 0, n = shaderProgramPools.length; i < n; i++){
|
|
9218
|
+
shaderProgramPools[i]._destroy();
|
|
9219
|
+
}
|
|
9220
|
+
shaderProgramPools.length = 0;
|
|
9221
|
+
};
|
|
9222
|
+
/**
|
|
9223
|
+
* Shader Lab compilation
|
|
9224
|
+
*/ _proto._compileShaderProgram = function _compileShaderProgram(engine, macroCollection, vertexEntry, fragmentEntry) {
|
|
9225
|
+
var _this = this, path = _this._path, platformMacros = _this._platformMacros;
|
|
9148
9226
|
var isWebGL2 = engine._hardwareRenderer.isWebGL2;
|
|
9149
|
-
var
|
|
9150
|
-
ShaderMacro.
|
|
9227
|
+
var macros = new Array();
|
|
9228
|
+
ShaderMacro._getMacrosElements(macroCollection, macros);
|
|
9229
|
+
platformMacros.length = 0;
|
|
9230
|
+
if (engine._hardwareRenderer.canIUse(exports.GLCapabilityType.shaderTextureLod)) {
|
|
9231
|
+
platformMacros.push("HAS_TEX_LOD");
|
|
9232
|
+
}
|
|
9233
|
+
if (engine._hardwareRenderer.canIUse(exports.GLCapabilityType.standardDerivatives)) {
|
|
9234
|
+
platformMacros.push("HAS_DERIVATIVES");
|
|
9235
|
+
}
|
|
9236
|
+
if (isWebGL2) {
|
|
9237
|
+
platformMacros.push("GRAPHICS_API_WEBGL2");
|
|
9238
|
+
} else {
|
|
9239
|
+
platformMacros.push("GRAPHICS_API_WEBGL1");
|
|
9240
|
+
}
|
|
9241
|
+
var start = performance.now();
|
|
9242
|
+
var _Shader__shaderLab__parseShaderPass = Shader._shaderLab._parseShaderPass(this._shaderLabSource, vertexEntry, fragmentEntry, macros, isWebGL2 ? exports.ShaderPlatformTarget.GLES300 : exports.ShaderPlatformTarget.GLES100, platformMacros, new URL(path, ShaderPass._shaderRootPath).href), vertex = _Shader__shaderLab__parseShaderPass.vertex, fragment = _Shader__shaderLab__parseShaderPass.fragment;
|
|
9243
|
+
Logger.info("[ShaderLab compilation] cost time: " + (performance.now() - start) + "ms");
|
|
9244
|
+
return new ShaderProgram(engine, vertex, fragment);
|
|
9245
|
+
};
|
|
9246
|
+
// TODO: remove it after migrate all shader to `ShaderLab`.
|
|
9247
|
+
_proto._getCanonicalShaderProgram = function _getCanonicalShaderProgram(engine, macroCollection) {
|
|
9248
|
+
var isWebGL2 = engine._hardwareRenderer.isWebGL2;
|
|
9249
|
+
var macroNameList = new Array();
|
|
9250
|
+
ShaderMacro._getMacrosElements(macroCollection, macroNameList);
|
|
9151
9251
|
var macroNameStr = ShaderFactory.parseCustomMacros(macroNameList);
|
|
9152
9252
|
var versionStr = isWebGL2 ? "#version 300 es" : "#version 100";
|
|
9153
9253
|
var graphicAPI = isWebGL2 ? "#define GRAPHICS_API_WEBGL2" : "#define GRAPHICS_API_WEBGL1";
|
|
@@ -9164,24 +9264,17 @@
|
|
|
9164
9264
|
vertexSource = ShaderFactory.convertTo300(vertexSource);
|
|
9165
9265
|
fragmentSource = ShaderFactory.convertTo300(fragmentSource, true);
|
|
9166
9266
|
}
|
|
9167
|
-
shaderProgram = new ShaderProgram(engine, vertexSource, fragmentSource);
|
|
9168
|
-
shaderProgramPool.cache(shaderProgram);
|
|
9267
|
+
var shaderProgram = new ShaderProgram(engine, vertexSource, fragmentSource);
|
|
9169
9268
|
return shaderProgram;
|
|
9170
9269
|
};
|
|
9171
|
-
/**
|
|
9172
|
-
* @internal
|
|
9173
|
-
*/ _proto._destroy = function _destroy() {
|
|
9174
|
-
var shaderProgramPools = this._shaderProgramPools;
|
|
9175
|
-
for(var i = 0, n = shaderProgramPools.length; i < n; i++){
|
|
9176
|
-
shaderProgramPools[i]._destroy();
|
|
9177
|
-
}
|
|
9178
|
-
shaderProgramPools.length = 0;
|
|
9179
|
-
};
|
|
9180
9270
|
return ShaderPass;
|
|
9181
9271
|
}(ShaderPart);
|
|
9182
9272
|
(function() {
|
|
9183
9273
|
ShaderPass._shaderPassCounter = 0;
|
|
9184
9274
|
})();
|
|
9275
|
+
(function() {
|
|
9276
|
+
/** @internal */ ShaderPass._shaderRootPath = "shaders://root/";
|
|
9277
|
+
})();
|
|
9185
9278
|
/**
|
|
9186
9279
|
* Sub shader.
|
|
9187
9280
|
*/ var SubShader = /*#__PURE__*/ function(ShaderPart1) {
|
|
@@ -9810,6 +9903,18 @@
|
|
|
9810
9903
|
};
|
|
9811
9904
|
var _proto = Shader.prototype;
|
|
9812
9905
|
/**
|
|
9906
|
+
* @internal
|
|
9907
|
+
* path should follow the specifications of [URL.origin](https://developer.mozilla.org/en-US/docs/Web/API/URL/origin), like: `shaders://root/`
|
|
9908
|
+
*/ _proto._registerPath = function _registerPath(path) {
|
|
9909
|
+
for(var _iterator = _create_for_of_iterator_helper_loose$1(this._subShaders), _step; !(_step = _iterator()).done;){
|
|
9910
|
+
var subShader = _step.value;
|
|
9911
|
+
for(var _iterator1 = _create_for_of_iterator_helper_loose$1(subShader.passes), _step1; !(_step1 = _iterator1()).done;){
|
|
9912
|
+
var shaderPass = _step1.value;
|
|
9913
|
+
shaderPass._path = path;
|
|
9914
|
+
}
|
|
9915
|
+
}
|
|
9916
|
+
};
|
|
9917
|
+
/**
|
|
9813
9918
|
* Compile shader variant by macro name list.
|
|
9814
9919
|
*
|
|
9815
9920
|
* @remarks
|
|
@@ -9872,45 +9977,44 @@
|
|
|
9872
9977
|
if (!Shader._shaderLab) {
|
|
9873
9978
|
throw "ShaderLab has not been set up yet.";
|
|
9874
9979
|
}
|
|
9875
|
-
var
|
|
9876
|
-
if (shaderMap[
|
|
9877
|
-
console.error('Shader named "' +
|
|
9980
|
+
var shaderContent = Shader._shaderLab._parseShaderContent(nameOrShaderSource);
|
|
9981
|
+
if (shaderMap[shaderContent.name]) {
|
|
9982
|
+
console.error('Shader named "' + shaderContent.name + '" already exists.');
|
|
9878
9983
|
return;
|
|
9879
9984
|
}
|
|
9880
|
-
var subShaderList =
|
|
9881
|
-
var passList =
|
|
9882
|
-
if (
|
|
9985
|
+
var subShaderList = shaderContent.subShaders.map(function(subShaderContent) {
|
|
9986
|
+
var passList = subShaderContent.passes.map(function(passInfo) {
|
|
9987
|
+
if (passInfo.isUsePass) {
|
|
9883
9988
|
var _Shader_find_subShaders_find, _Shader_find;
|
|
9884
9989
|
// Use pass reference
|
|
9885
|
-
var paths = passInfo.split("/");
|
|
9990
|
+
var paths = passInfo.name.split("/");
|
|
9886
9991
|
return (_Shader_find = Shader.find(paths[0])) == null ? void 0 : (_Shader_find_subShaders_find = _Shader_find.subShaders.find(function(subShader) {
|
|
9887
9992
|
return subShader.name === paths[1];
|
|
9888
9993
|
})) == null ? void 0 : _Shader_find_subShaders_find.passes.find(function(pass) {
|
|
9889
9994
|
return pass.name === paths[2];
|
|
9890
9995
|
});
|
|
9891
9996
|
}
|
|
9892
|
-
var
|
|
9997
|
+
var shaderPassContent = new ShaderPass(passInfo.name, passInfo.contents, passInfo.vertexEntry, passInfo.fragmentEntry, passInfo.tags);
|
|
9893
9998
|
var renderStates = passInfo.renderStates;
|
|
9894
9999
|
var renderState = new RenderState();
|
|
9895
|
-
|
|
10000
|
+
shaderPassContent._renderState = renderState;
|
|
9896
10001
|
// Parse const render state
|
|
9897
|
-
var
|
|
9898
|
-
for(var k in
|
|
9899
|
-
Shader._applyConstRenderStates(renderState, parseInt(k),
|
|
10002
|
+
var constantMap = renderStates.constantMap, variableMap = renderStates.variableMap;
|
|
10003
|
+
for(var k in constantMap){
|
|
10004
|
+
Shader._applyConstRenderStates(renderState, parseInt(k), constantMap[k]);
|
|
9900
10005
|
}
|
|
9901
10006
|
// Parse variable render state
|
|
9902
|
-
var variableRenderStateInfo = renderStates[1];
|
|
9903
10007
|
var renderStateDataMap = {};
|
|
9904
|
-
for(var k1 in
|
|
9905
|
-
renderStateDataMap[k1] = ShaderProperty.getByName(
|
|
10008
|
+
for(var k1 in variableMap){
|
|
10009
|
+
renderStateDataMap[k1] = ShaderProperty.getByName(variableMap[k1]);
|
|
9906
10010
|
}
|
|
9907
|
-
|
|
9908
|
-
return
|
|
10011
|
+
shaderPassContent._renderStateDataMap = renderStateDataMap;
|
|
10012
|
+
return shaderPassContent;
|
|
9909
10013
|
});
|
|
9910
|
-
return new SubShader(
|
|
10014
|
+
return new SubShader(subShaderContent.name, passList, subShaderContent.tags);
|
|
9911
10015
|
});
|
|
9912
|
-
shader = new Shader(
|
|
9913
|
-
shaderMap[
|
|
10016
|
+
shader = new Shader(shaderContent.name, subShaderList);
|
|
10017
|
+
shaderMap[shaderContent.name] = shader;
|
|
9914
10018
|
return shader;
|
|
9915
10019
|
} else {
|
|
9916
10020
|
if (shaderMap[nameOrShaderSource]) {
|
|
@@ -12969,6 +13073,13 @@
|
|
|
12969
13073
|
MSAASamples[MSAASamples[/** Multi-sample anti-aliasing with 4 samples. */ "FourX"] = 4] = "FourX";
|
|
12970
13074
|
MSAASamples[MSAASamples[/** Multi-sample anti-aliasing with 8 samples. */ "EightX"] = 8] = "EightX";
|
|
12971
13075
|
})(exports.MSAASamples || (exports.MSAASamples = {}));
|
|
13076
|
+
/**
|
|
13077
|
+
* The strategy to use when a shader replacement fails.
|
|
13078
|
+
*/ exports.ReplacementFailureStrategy = void 0;
|
|
13079
|
+
(function(ReplacementFailureStrategy) {
|
|
13080
|
+
ReplacementFailureStrategy[ReplacementFailureStrategy[/** Keep the original shader. */ "KeepOriginalShader"] = 0] = "KeepOriginalShader";
|
|
13081
|
+
ReplacementFailureStrategy[ReplacementFailureStrategy[/** Do not render. */ "DoNotRender"] = 1] = "DoNotRender";
|
|
13082
|
+
})(exports.ReplacementFailureStrategy || (exports.ReplacementFailureStrategy = {}));
|
|
12972
13083
|
var _Camera;
|
|
12973
13084
|
var MathTemp = function MathTemp() {};
|
|
12974
13085
|
(function() {
|
|
@@ -13016,6 +13127,7 @@
|
|
|
13016
13127
|
/** @internal */ _this._virtualCamera = new VirtualCamera();
|
|
13017
13128
|
/** @internal */ _this._replacementShader = null;
|
|
13018
13129
|
/** @internal */ _this._replacementSubShaderTag = null;
|
|
13130
|
+
/** @internal */ _this._replacementFailureStrategy = null;
|
|
13019
13131
|
/** @internal */ _this._cameraIndex = -1;
|
|
13020
13132
|
_this._priority = 0;
|
|
13021
13133
|
_this._shaderData = new ShaderData(ShaderDataGroup.Camera);
|
|
@@ -13196,6 +13308,7 @@
|
|
|
13196
13308
|
context.virtualCamera = virtualCamera;
|
|
13197
13309
|
context.replacementShader = this._replacementShader;
|
|
13198
13310
|
context.replacementTag = this._replacementSubShaderTag;
|
|
13311
|
+
context.replacementFailureStrategy = this._replacementFailureStrategy;
|
|
13199
13312
|
// compute cull frustum.
|
|
13200
13313
|
if (this.enableFrustumCulling && this._frustumChangeFlag.flag) {
|
|
13201
13314
|
this._frustum.calculateFromMatrix(virtualCamera.viewProjectionMatrix);
|
|
@@ -13215,15 +13328,18 @@
|
|
|
13215
13328
|
this._renderPipeline.render(context, cubeFace, mipLevel, clearMask);
|
|
13216
13329
|
this._engine._renderCount++;
|
|
13217
13330
|
};
|
|
13218
|
-
_proto.setReplacementShader = function setReplacementShader(shader, replacementTag) {
|
|
13331
|
+
_proto.setReplacementShader = function setReplacementShader(shader, replacementTag, failureStrategy) {
|
|
13332
|
+
if (failureStrategy === void 0) failureStrategy = exports.ReplacementFailureStrategy.KeepOriginalShader;
|
|
13219
13333
|
this._replacementShader = shader;
|
|
13220
13334
|
this._replacementSubShaderTag = typeof replacementTag === "string" ? ShaderTagKey.getByName(replacementTag) : replacementTag;
|
|
13335
|
+
this._replacementFailureStrategy = failureStrategy;
|
|
13221
13336
|
};
|
|
13222
13337
|
/**
|
|
13223
13338
|
* Reset and clear the replacement shader.
|
|
13224
13339
|
*/ _proto.resetReplacementShader = function resetReplacementShader() {
|
|
13225
13340
|
this._replacementShader = null;
|
|
13226
13341
|
this._replacementSubShaderTag = null;
|
|
13342
|
+
this._replacementFailureStrategy = null;
|
|
13227
13343
|
};
|
|
13228
13344
|
/**
|
|
13229
13345
|
* @inheritdoc
|
|
@@ -13337,7 +13453,7 @@
|
|
|
13337
13453
|
this._checkMainCanvasAntialiasWaste();
|
|
13338
13454
|
};
|
|
13339
13455
|
_proto._checkMainCanvasAntialiasWaste = function _checkMainCanvasAntialiasWaste() {
|
|
13340
|
-
if (this.independentCanvasEnabled && Vector4.equals(this._viewport, PipelineUtils.defaultViewport)) {
|
|
13456
|
+
if (this._phasedActiveInScene && this.independentCanvasEnabled && Vector4.equals(this._viewport, PipelineUtils.defaultViewport)) {
|
|
13341
13457
|
Logger.warn("Camera use independent canvas and viewport cover the whole screen, it is recommended to disable antialias, depth and stencil to save memory when create engine.");
|
|
13342
13458
|
}
|
|
13343
13459
|
};
|
|
@@ -15015,6 +15131,7 @@
|
|
|
15015
15131
|
break;
|
|
15016
15132
|
}
|
|
15017
15133
|
}
|
|
15134
|
+
context.replacementFailureStrategy === exports.ReplacementFailureStrategy.KeepOriginalShader && this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
|
|
15018
15135
|
} else {
|
|
15019
15136
|
this.pushRenderElementByType(renderElement, subRenderElement, replacementSubShaders[0].passes, renderStates);
|
|
15020
15137
|
}
|
|
@@ -28021,7 +28138,7 @@
|
|
|
28021
28138
|
*/ _proto._initialize = function _initialize(configuration) {
|
|
28022
28139
|
var _this = this;
|
|
28023
28140
|
var shaderLab = configuration.shaderLab, physics = configuration.physics;
|
|
28024
|
-
if (shaderLab) {
|
|
28141
|
+
if (shaderLab && !Shader._shaderLab) {
|
|
28025
28142
|
Shader._shaderLab = shaderLab;
|
|
28026
28143
|
}
|
|
28027
28144
|
var initializePromises = new Array();
|
|
@@ -29019,9 +29136,9 @@
|
|
|
29019
29136
|
/** Shadow bias.*/ _this.shadowBias = 1;
|
|
29020
29137
|
/** Shadow mapping normal-based bias. */ _this.shadowNormalBias = 1;
|
|
29021
29138
|
/** Near plane value to use for shadow frustums. */ _this.shadowNearPlane = 0.1;
|
|
29022
|
-
/** Shadow intensity, the larger the value, the clearer and darker the shadow. */ _this.shadowStrength = 1.0;
|
|
29023
29139
|
/** @internal */ _this._lightIndex = -1;
|
|
29024
29140
|
/** @internal */ _this._lightColor = new Color();
|
|
29141
|
+
_this._shadowStrength = 1.0;
|
|
29025
29142
|
_this._color = new Color(1, 1, 1, 1);
|
|
29026
29143
|
return _this;
|
|
29027
29144
|
};
|
|
@@ -29038,6 +29155,15 @@
|
|
|
29038
29155
|
return this._lightColor;
|
|
29039
29156
|
};
|
|
29040
29157
|
_create_class$2(Light, [
|
|
29158
|
+
{
|
|
29159
|
+
key: "shadowStrength",
|
|
29160
|
+
get: /** Shadow intensity, the larger the value, the clearer and darker the shadow, range [0,1]. */ function get() {
|
|
29161
|
+
return this._shadowStrength;
|
|
29162
|
+
},
|
|
29163
|
+
set: function set(value) {
|
|
29164
|
+
this._shadowStrength = MathUtil.clamp(value, 0, 1);
|
|
29165
|
+
}
|
|
29166
|
+
},
|
|
29041
29167
|
{
|
|
29042
29168
|
key: "color",
|
|
29043
29169
|
get: /**
|
|
@@ -29744,7 +29870,7 @@
|
|
|
29744
29870
|
return this._scatter;
|
|
29745
29871
|
},
|
|
29746
29872
|
set: function set(value) {
|
|
29747
|
-
value =
|
|
29873
|
+
value = MathUtil.clamp(value, 0, 1);
|
|
29748
29874
|
if (value !== this._scatter) {
|
|
29749
29875
|
this._scatter = value;
|
|
29750
29876
|
var params = this._bloomMaterial.shaderData.getVector4(BloomEffect._bloomParams);
|
|
@@ -29941,6 +30067,9 @@
|
|
|
29941
30067
|
*/ var _PostProcessManager = /*#__PURE__*/ function() {
|
|
29942
30068
|
function _PostProcessManager(scene) {
|
|
29943
30069
|
this.scene = scene;
|
|
30070
|
+
this./**
|
|
30071
|
+
* Whether the post process manager is active.
|
|
30072
|
+
*/ isActive = true;
|
|
29944
30073
|
var uberShader = Shader.find(_PostProcessManager.UBER_SHADER_NAME);
|
|
29945
30074
|
var uberMaterial = new Material(scene.engine, uberShader);
|
|
29946
30075
|
var depthState = uberMaterial.renderState.depthState;
|
|
@@ -29974,7 +30103,7 @@
|
|
|
29974
30103
|
get: /**
|
|
29975
30104
|
* Whether has active post process effect.
|
|
29976
30105
|
*/ function get() {
|
|
29977
|
-
return this._bloomEffect.enabled || this._tonemappingEffect.enabled;
|
|
30106
|
+
return this.isActive && (this._bloomEffect.enabled || this._tonemappingEffect.enabled);
|
|
29978
30107
|
}
|
|
29979
30108
|
}
|
|
29980
30109
|
]);
|
|
@@ -38824,6 +38953,7 @@
|
|
|
38824
38953
|
RenderTarget: RenderTarget,
|
|
38825
38954
|
RenderTargetBlendState: RenderTargetBlendState,
|
|
38826
38955
|
get Renderer () { return exports.Renderer; },
|
|
38956
|
+
get ReplacementFailureStrategy () { return exports.ReplacementFailureStrategy; },
|
|
38827
38957
|
ResourceManager: ResourceManager,
|
|
38828
38958
|
ReturnableObjectPool: ReturnableObjectPool,
|
|
38829
38959
|
RotationOverLifetimeModule: RotationOverLifetimeModule,
|
|
@@ -38838,6 +38968,7 @@
|
|
|
38838
38968
|
ShaderMacro: ShaderMacro,
|
|
38839
38969
|
ShaderMacroCollection: ShaderMacroCollection,
|
|
38840
38970
|
ShaderPass: ShaderPass,
|
|
38971
|
+
get ShaderPlatformTarget () { return exports.ShaderPlatformTarget; },
|
|
38841
38972
|
ShaderProperty: ShaderProperty,
|
|
38842
38973
|
get ShaderPropertyType () { return exports.ShaderPropertyType; },
|
|
38843
38974
|
ShaderTagKey: ShaderTagKey,
|
|
@@ -46982,12 +47113,12 @@
|
|
|
46982
47113
|
var atlasItemsLen = atlasItems ? atlasItems.length : 0;
|
|
46983
47114
|
var engine = resourceManager.engine;
|
|
46984
47115
|
var spriteAtlas = new SpriteAtlas(engine);
|
|
46985
|
-
if (atlasItemsLen
|
|
47116
|
+
if (atlasItemsLen <= 0) {
|
|
46986
47117
|
resolve(spriteAtlas);
|
|
46987
47118
|
return;
|
|
46988
47119
|
}
|
|
46989
47120
|
chainPromises.length = 0;
|
|
46990
|
-
for(var i = 0; i <
|
|
47121
|
+
for(var i = 0; i < atlasItemsLen; i++)_loop(i);
|
|
46991
47122
|
AssetPromise.all(chainPromises).then(function() {
|
|
46992
47123
|
resolve(spriteAtlas);
|
|
46993
47124
|
}).catch(reject);
|
|
@@ -47307,6 +47438,31 @@
|
|
|
47307
47438
|
if (fog.fogDensity != undefined) scene.fogDensity = fog.fogDensity;
|
|
47308
47439
|
if (fog.fogColor != undefined) scene.fogColor.copyFrom(fog.fogColor);
|
|
47309
47440
|
}
|
|
47441
|
+
// Post Process
|
|
47442
|
+
var postProcessData = data.scene.postProcess;
|
|
47443
|
+
if (postProcessData) {
|
|
47444
|
+
// @ts-ignore
|
|
47445
|
+
var postProcessManager = scene._postProcessManager;
|
|
47446
|
+
var bloomEffect = postProcessManager._bloomEffect;
|
|
47447
|
+
var tonemappingEffect = postProcessManager._tonemappingEffect;
|
|
47448
|
+
postProcessManager.isActive = postProcessData.isActive;
|
|
47449
|
+
bloomEffect.enabled = postProcessData.bloom.enabled;
|
|
47450
|
+
bloomEffect.threshold = postProcessData.bloom.threshold;
|
|
47451
|
+
bloomEffect.scatter = postProcessData.bloom.scatter;
|
|
47452
|
+
bloomEffect.intensity = postProcessData.bloom.intensity;
|
|
47453
|
+
bloomEffect.tint.copyFrom(postProcessData.bloom.tint);
|
|
47454
|
+
bloomEffect.dirtIntensity = postProcessData.bloom.dirtIntensity;
|
|
47455
|
+
tonemappingEffect.enabled = postProcessData.tonemapping.enabled;
|
|
47456
|
+
tonemappingEffect.mode = postProcessData.tonemapping.mode;
|
|
47457
|
+
if (postProcessData.bloom.dirtTexture) {
|
|
47458
|
+
// @ts-ignore
|
|
47459
|
+
// prettier-ignore
|
|
47460
|
+
var dirtTexturePromise = resourceManager.getResourceByRef(postProcessData.bloom.dirtTexture).then(function(texture) {
|
|
47461
|
+
bloomEffect.dirtTexture = texture;
|
|
47462
|
+
});
|
|
47463
|
+
promises.push(dirtTexturePromise);
|
|
47464
|
+
}
|
|
47465
|
+
}
|
|
47310
47466
|
return Promise.all(promises).then(function() {
|
|
47311
47467
|
resolve(scene);
|
|
47312
47468
|
});
|
|
@@ -47696,7 +47852,7 @@
|
|
|
47696
47852
|
], KHR_materials_anisotropy);
|
|
47697
47853
|
|
|
47698
47854
|
//@ts-ignore
|
|
47699
|
-
var version = "1.3.0-alpha.
|
|
47855
|
+
var version = "1.3.0-alpha.3";
|
|
47700
47856
|
console.log("Galacean engine version: " + version);
|
|
47701
47857
|
for(var key in CoreObjects){
|
|
47702
47858
|
Loader.registerClass(key, CoreObjects[key]);
|