@galacean/engine-core 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/main.js +198 -59
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +198 -59
- package/dist/module.js +199 -60
- package/dist/module.js.map +1 -1
- package/package.json +3 -3
- package/types/Camera.d.ts +7 -4
- package/types/enums/ReplacementFailureStrategy.d.ts +9 -0
- package/types/index.d.ts +1 -0
- package/types/input/pointer/PointerEvent.d.ts +4 -0
- package/types/input/pointer/PointerEventType.d.ts +7 -0
- package/types/lighting/Light.d.ts +4 -2
- package/types/shader/ShaderPass.d.ts +10 -0
- package/types/shader/index.d.ts +1 -0
- package/types/shaderlib/ShaderFactory.d.ts +2 -1
- package/types/ui/Image.d.ts +38 -0
- package/types/ui/RedBlackTree.d.ts +2 -0
- package/types/ui/UICanvas.d.ts +55 -0
- package/types/ui/UIRenderer.d.ts +14 -0
- package/types/ui/UITransform.d.ts +20 -0
- package/types/ui/enums/BlockingObjects.d.ts +6 -0
- package/types/ui/enums/CanvasRenderMode.d.ts +8 -0
- package/types/ui/enums/ResolutionAdaptationStrategy.d.ts +10 -0
- package/types/ui/index.d.ts +6 -0
- package/types/Deprecated.d.ts +0 -101
- package/types/RenderPipeline/Chunk.d.ts +0 -1
- package/types/RenderPipeline/batcher/MeshBuffer.d.ts +0 -1
- package/types/RenderPipeline/enums/RenderBufferStoreAction.d.ts +0 -13
- package/types/postProcess/PostProcessEffect.d.ts +0 -13
- package/types/postProcess/PostProcessPass.d.ts +0 -55
- package/types/texture/enums/PixelFormat.d.ts +0 -73
package/dist/main.js
CHANGED
|
@@ -2994,6 +2994,51 @@ exports.RenderStateDataKey = void 0;
|
|
|
2994
2994
|
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";
|
|
2995
2995
|
})(exports.StencilOperation || (exports.StencilOperation = {}));
|
|
2996
2996
|
|
|
2997
|
+
exports.ShaderPlatformTarget = void 0;
|
|
2998
|
+
(function(ShaderPlatformTarget) {
|
|
2999
|
+
ShaderPlatformTarget[ShaderPlatformTarget["GLES100"] = 0] = "GLES100";
|
|
3000
|
+
ShaderPlatformTarget[ShaderPlatformTarget["GLES300"] = 1] = "GLES300";
|
|
3001
|
+
})(exports.ShaderPlatformTarget || (exports.ShaderPlatformTarget = {}));
|
|
3002
|
+
|
|
3003
|
+
function _array_like_to_array(arr, len) {
|
|
3004
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3005
|
+
|
|
3006
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
3007
|
+
|
|
3008
|
+
return arr2;
|
|
3009
|
+
}
|
|
3010
|
+
|
|
3011
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
3012
|
+
if (!o) return;
|
|
3013
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
3014
|
+
|
|
3015
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
3016
|
+
|
|
3017
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
3018
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
3019
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
3020
|
+
}
|
|
3021
|
+
|
|
3022
|
+
function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
3023
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
3024
|
+
|
|
3025
|
+
if (it) return (it = it.call(o)).next.bind(it);
|
|
3026
|
+
// Fallback for engines without symbol support
|
|
3027
|
+
if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
3028
|
+
if (it) o = it;
|
|
3029
|
+
|
|
3030
|
+
var i = 0;
|
|
3031
|
+
|
|
3032
|
+
return function() {
|
|
3033
|
+
if (i >= o.length) return { done: true };
|
|
3034
|
+
|
|
3035
|
+
return { done: false, value: o[i++] };
|
|
3036
|
+
};
|
|
3037
|
+
}
|
|
3038
|
+
|
|
3039
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
3040
|
+
}
|
|
3041
|
+
|
|
2997
3042
|
/**
|
|
2998
3043
|
* Shader macro。
|
|
2999
3044
|
*/ var ShaderMacro = /*#__PURE__*/ function() {
|
|
@@ -3023,14 +3068,14 @@ exports.RenderStateDataKey = void 0;
|
|
|
3023
3068
|
maskMap.length++;
|
|
3024
3069
|
maskMap[index] = new Array(32);
|
|
3025
3070
|
}
|
|
3026
|
-
maskMap[index][bit] =
|
|
3071
|
+
maskMap[index][bit] = macro;
|
|
3027
3072
|
ShaderMacro._macroCounter++;
|
|
3028
3073
|
}
|
|
3029
3074
|
return macro;
|
|
3030
3075
|
};
|
|
3031
3076
|
/**
|
|
3032
3077
|
* @internal
|
|
3033
|
-
*/ ShaderMacro.
|
|
3078
|
+
*/ ShaderMacro._getMacrosElements = function _getMacrosElements(macros, out) {
|
|
3034
3079
|
var maskMap = ShaderMacro._macroMaskMap;
|
|
3035
3080
|
var mask = macros._mask;
|
|
3036
3081
|
out.length = 0;
|
|
@@ -3213,15 +3258,6 @@ exports.RenderStateDataKey = void 0;
|
|
|
3213
3258
|
return ShaderMacroCollection;
|
|
3214
3259
|
}();
|
|
3215
3260
|
|
|
3216
|
-
/**
|
|
3217
|
-
* Pipeline stage.
|
|
3218
|
-
*/ exports.PipelineStage = void 0;
|
|
3219
|
-
(function(PipelineStage) {
|
|
3220
|
-
PipelineStage[/** DepthOnly stage. */ "DepthOnly"] = "DepthOnly";
|
|
3221
|
-
PipelineStage[/** Shadow caster stage. */ "ShadowCaster"] = "ShadowCaster";
|
|
3222
|
-
PipelineStage[/** Forward shading stage. */ "Forward"] = "Forward";
|
|
3223
|
-
})(exports.PipelineStage || (exports.PipelineStage = {}));
|
|
3224
|
-
|
|
3225
3261
|
function _extends() {
|
|
3226
3262
|
_extends = Object.assign || function assign(target) {
|
|
3227
3263
|
for (var i = 1; i < arguments.length; i++) {
|
|
@@ -3235,9 +3271,18 @@ function _extends() {
|
|
|
3235
3271
|
return _extends.apply(this, arguments);
|
|
3236
3272
|
}
|
|
3237
3273
|
|
|
3274
|
+
/**
|
|
3275
|
+
* Pipeline stage.
|
|
3276
|
+
*/ exports.PipelineStage = void 0;
|
|
3277
|
+
(function(PipelineStage) {
|
|
3278
|
+
PipelineStage[/** DepthOnly stage. */ "DepthOnly"] = "DepthOnly";
|
|
3279
|
+
PipelineStage[/** Shadow caster stage. */ "ShadowCaster"] = "ShadowCaster";
|
|
3280
|
+
PipelineStage[/** Forward shading stage. */ "Forward"] = "Forward";
|
|
3281
|
+
})(exports.PipelineStage || (exports.PipelineStage = {}));
|
|
3282
|
+
|
|
3238
3283
|
var camera_declare = "#define GLSLIFY 1\nuniform vec3 camera_Position;uniform vec3 camera_Forward;uniform vec4 camera_ProjectionParams;"; // eslint-disable-line
|
|
3239
3284
|
|
|
3240
|
-
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
|
|
3285
|
+
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
|
|
3241
3286
|
|
|
3242
3287
|
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
|
|
3243
3288
|
|
|
@@ -3450,7 +3495,7 @@ var ShaderFactory = /*#__PURE__*/ function() {
|
|
|
3450
3495
|
function ShaderFactory() {}
|
|
3451
3496
|
ShaderFactory.parseCustomMacros = function parseCustomMacros(macros) {
|
|
3452
3497
|
return macros.map(function(m) {
|
|
3453
|
-
return "#define " + m + "\n";
|
|
3498
|
+
return "#define " + (m.value ? m.name + " " + m.value : m.name) + "\n";
|
|
3454
3499
|
}).join("");
|
|
3455
3500
|
};
|
|
3456
3501
|
ShaderFactory.registerInclude = function registerInclude(includeName, includeSource) {
|
|
@@ -4235,29 +4280,50 @@ var ShaderFactory = /*#__PURE__*/ function() {
|
|
|
4235
4280
|
ShaderProgram._counter = 0;
|
|
4236
4281
|
})();
|
|
4237
4282
|
|
|
4283
|
+
/**
|
|
4284
|
+
* @internal
|
|
4285
|
+
* Shader pass type
|
|
4286
|
+
*/ var ShaderType;
|
|
4287
|
+
(function(ShaderType) {
|
|
4288
|
+
ShaderType[ShaderType[/** init by glsl */ "Canonical"] = 0] = "Canonical";
|
|
4289
|
+
ShaderType[ShaderType[/** init by shader-lab */ "ShaderLab"] = 1] = "ShaderLab";
|
|
4290
|
+
})(ShaderType || (ShaderType = {}));
|
|
4291
|
+
|
|
4238
4292
|
/**
|
|
4239
4293
|
* Shader pass containing vertex and fragment source.
|
|
4240
4294
|
*/ var ShaderPass = /*#__PURE__*/ function(ShaderPart1) {
|
|
4241
4295
|
_inherits(ShaderPass, ShaderPart1);
|
|
4242
|
-
function ShaderPass(nameOrVertexSource,
|
|
4296
|
+
function ShaderPass(nameOrVertexSource, vertexSourceOrFragmentSourceOrCode, fragmentSourceOrTagsOrVertexEntry, fragmentEntryOrTags, tags) {
|
|
4243
4297
|
var _this;
|
|
4244
4298
|
_this = ShaderPart1.call(this) || this;
|
|
4245
4299
|
/** @internal */ _this._shaderPassId = 0;
|
|
4246
4300
|
/** @internal */ _this._renderStateDataMap = {};
|
|
4247
4301
|
/** @internal */ _this._shaderProgramPools = [];
|
|
4302
|
+
/** @internal */ _this._path = "";
|
|
4303
|
+
_this._platformMacros = [];
|
|
4248
4304
|
_this._shaderPassId = ShaderPass._shaderPassCounter++;
|
|
4249
|
-
|
|
4305
|
+
_this._type = ShaderType.Canonical;
|
|
4306
|
+
if (typeof fragmentEntryOrTags === "string") {
|
|
4250
4307
|
_this._name = nameOrVertexSource;
|
|
4251
|
-
_this.
|
|
4252
|
-
_this.
|
|
4253
|
-
|
|
4308
|
+
_this._shaderLabSource = vertexSourceOrFragmentSourceOrCode;
|
|
4309
|
+
_this._vertexEntry = fragmentSourceOrTagsOrVertexEntry;
|
|
4310
|
+
_this._fragmentEntry = fragmentEntryOrTags;
|
|
4311
|
+
tags = _extends({
|
|
4312
|
+
pipelineStage: exports.PipelineStage.Forward
|
|
4313
|
+
}, tags);
|
|
4314
|
+
_this._type = ShaderType.ShaderLab;
|
|
4315
|
+
} else if (typeof fragmentSourceOrTagsOrVertexEntry === "string") {
|
|
4316
|
+
_this._name = nameOrVertexSource;
|
|
4317
|
+
_this._vertexSource = vertexSourceOrFragmentSourceOrCode;
|
|
4318
|
+
_this._fragmentSource = fragmentSourceOrTagsOrVertexEntry;
|
|
4319
|
+
tags = fragmentEntryOrTags != null ? fragmentEntryOrTags : {
|
|
4254
4320
|
pipelineStage: exports.PipelineStage.Forward
|
|
4255
4321
|
};
|
|
4256
4322
|
} else {
|
|
4257
4323
|
_this._name = "Default";
|
|
4258
4324
|
_this._vertexSource = nameOrVertexSource;
|
|
4259
|
-
_this._fragmentSource =
|
|
4260
|
-
tags =
|
|
4325
|
+
_this._fragmentSource = vertexSourceOrFragmentSourceOrCode;
|
|
4326
|
+
tags = fragmentSourceOrTagsOrVertexEntry != null ? fragmentSourceOrTagsOrVertexEntry : {
|
|
4261
4327
|
pipelineStage: exports.PipelineStage.Forward
|
|
4262
4328
|
};
|
|
4263
4329
|
}
|
|
@@ -4275,9 +4341,52 @@ var ShaderFactory = /*#__PURE__*/ function() {
|
|
|
4275
4341
|
if (shaderProgram) {
|
|
4276
4342
|
return shaderProgram;
|
|
4277
4343
|
}
|
|
4344
|
+
if (this._type === ShaderType.Canonical) {
|
|
4345
|
+
shaderProgram = this._getCanonicalShaderProgram(engine, macroCollection);
|
|
4346
|
+
} else {
|
|
4347
|
+
shaderProgram = this._compileShaderProgram(engine, macroCollection, this._vertexEntry, this._fragmentEntry);
|
|
4348
|
+
}
|
|
4349
|
+
shaderProgramPool.cache(shaderProgram);
|
|
4350
|
+
return shaderProgram;
|
|
4351
|
+
};
|
|
4352
|
+
/**
|
|
4353
|
+
* @internal
|
|
4354
|
+
*/ _proto._destroy = function _destroy() {
|
|
4355
|
+
var shaderProgramPools = this._shaderProgramPools;
|
|
4356
|
+
for(var i = 0, n = shaderProgramPools.length; i < n; i++){
|
|
4357
|
+
shaderProgramPools[i]._destroy();
|
|
4358
|
+
}
|
|
4359
|
+
shaderProgramPools.length = 0;
|
|
4360
|
+
};
|
|
4361
|
+
/**
|
|
4362
|
+
* Shader Lab compilation
|
|
4363
|
+
*/ _proto._compileShaderProgram = function _compileShaderProgram(engine, macroCollection, vertexEntry, fragmentEntry) {
|
|
4364
|
+
var _this = this, path = _this._path, platformMacros = _this._platformMacros;
|
|
4278
4365
|
var isWebGL2 = engine._hardwareRenderer.isWebGL2;
|
|
4279
|
-
var
|
|
4280
|
-
ShaderMacro.
|
|
4366
|
+
var macros = new Array();
|
|
4367
|
+
ShaderMacro._getMacrosElements(macroCollection, macros);
|
|
4368
|
+
platformMacros.length = 0;
|
|
4369
|
+
if (engine._hardwareRenderer.canIUse(exports.GLCapabilityType.shaderTextureLod)) {
|
|
4370
|
+
platformMacros.push("HAS_TEX_LOD");
|
|
4371
|
+
}
|
|
4372
|
+
if (engine._hardwareRenderer.canIUse(exports.GLCapabilityType.standardDerivatives)) {
|
|
4373
|
+
platformMacros.push("HAS_DERIVATIVES");
|
|
4374
|
+
}
|
|
4375
|
+
if (isWebGL2) {
|
|
4376
|
+
platformMacros.push("GRAPHICS_API_WEBGL2");
|
|
4377
|
+
} else {
|
|
4378
|
+
platformMacros.push("GRAPHICS_API_WEBGL1");
|
|
4379
|
+
}
|
|
4380
|
+
var start = performance.now();
|
|
4381
|
+
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;
|
|
4382
|
+
Logger.info("[ShaderLab compilation] cost time: " + (performance.now() - start) + "ms");
|
|
4383
|
+
return new ShaderProgram(engine, vertex, fragment);
|
|
4384
|
+
};
|
|
4385
|
+
// TODO: remove it after migrate all shader to `ShaderLab`.
|
|
4386
|
+
_proto._getCanonicalShaderProgram = function _getCanonicalShaderProgram(engine, macroCollection) {
|
|
4387
|
+
var isWebGL2 = engine._hardwareRenderer.isWebGL2;
|
|
4388
|
+
var macroNameList = new Array();
|
|
4389
|
+
ShaderMacro._getMacrosElements(macroCollection, macroNameList);
|
|
4281
4390
|
var macroNameStr = ShaderFactory.parseCustomMacros(macroNameList);
|
|
4282
4391
|
var versionStr = isWebGL2 ? "#version 300 es" : "#version 100";
|
|
4283
4392
|
var graphicAPI = isWebGL2 ? "#define GRAPHICS_API_WEBGL2" : "#define GRAPHICS_API_WEBGL1";
|
|
@@ -4294,24 +4403,17 @@ var ShaderFactory = /*#__PURE__*/ function() {
|
|
|
4294
4403
|
vertexSource = ShaderFactory.convertTo300(vertexSource);
|
|
4295
4404
|
fragmentSource = ShaderFactory.convertTo300(fragmentSource, true);
|
|
4296
4405
|
}
|
|
4297
|
-
shaderProgram = new ShaderProgram(engine, vertexSource, fragmentSource);
|
|
4298
|
-
shaderProgramPool.cache(shaderProgram);
|
|
4406
|
+
var shaderProgram = new ShaderProgram(engine, vertexSource, fragmentSource);
|
|
4299
4407
|
return shaderProgram;
|
|
4300
4408
|
};
|
|
4301
|
-
/**
|
|
4302
|
-
* @internal
|
|
4303
|
-
*/ _proto._destroy = function _destroy() {
|
|
4304
|
-
var shaderProgramPools = this._shaderProgramPools;
|
|
4305
|
-
for(var i = 0, n = shaderProgramPools.length; i < n; i++){
|
|
4306
|
-
shaderProgramPools[i]._destroy();
|
|
4307
|
-
}
|
|
4308
|
-
shaderProgramPools.length = 0;
|
|
4309
|
-
};
|
|
4310
4409
|
return ShaderPass;
|
|
4311
4410
|
}(ShaderPart);
|
|
4312
4411
|
(function() {
|
|
4313
4412
|
ShaderPass._shaderPassCounter = 0;
|
|
4314
4413
|
})();
|
|
4414
|
+
(function() {
|
|
4415
|
+
/** @internal */ ShaderPass._shaderRootPath = "shaders://root/";
|
|
4416
|
+
})();
|
|
4315
4417
|
|
|
4316
4418
|
/**
|
|
4317
4419
|
* Sub shader.
|
|
@@ -4948,6 +5050,18 @@ __decorate([
|
|
|
4948
5050
|
}
|
|
4949
5051
|
var _proto = Shader.prototype;
|
|
4950
5052
|
/**
|
|
5053
|
+
* @internal
|
|
5054
|
+
* path should follow the specifications of [URL.origin](https://developer.mozilla.org/en-US/docs/Web/API/URL/origin), like: `shaders://root/`
|
|
5055
|
+
*/ _proto._registerPath = function _registerPath(path) {
|
|
5056
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(this._subShaders), _step; !(_step = _iterator()).done;){
|
|
5057
|
+
var subShader = _step.value;
|
|
5058
|
+
for(var _iterator1 = _create_for_of_iterator_helper_loose(subShader.passes), _step1; !(_step1 = _iterator1()).done;){
|
|
5059
|
+
var shaderPass = _step1.value;
|
|
5060
|
+
shaderPass._path = path;
|
|
5061
|
+
}
|
|
5062
|
+
}
|
|
5063
|
+
};
|
|
5064
|
+
/**
|
|
4951
5065
|
* Compile shader variant by macro name list.
|
|
4952
5066
|
*
|
|
4953
5067
|
* @remarks
|
|
@@ -5010,45 +5124,44 @@ __decorate([
|
|
|
5010
5124
|
if (!Shader._shaderLab) {
|
|
5011
5125
|
throw "ShaderLab has not been set up yet.";
|
|
5012
5126
|
}
|
|
5013
|
-
var
|
|
5014
|
-
if (shaderMap[
|
|
5015
|
-
console.error('Shader named "' +
|
|
5127
|
+
var shaderContent = Shader._shaderLab._parseShaderContent(nameOrShaderSource);
|
|
5128
|
+
if (shaderMap[shaderContent.name]) {
|
|
5129
|
+
console.error('Shader named "' + shaderContent.name + '" already exists.');
|
|
5016
5130
|
return;
|
|
5017
5131
|
}
|
|
5018
|
-
var subShaderList =
|
|
5019
|
-
var passList =
|
|
5020
|
-
if (
|
|
5132
|
+
var subShaderList = shaderContent.subShaders.map(function(subShaderContent) {
|
|
5133
|
+
var passList = subShaderContent.passes.map(function(passInfo) {
|
|
5134
|
+
if (passInfo.isUsePass) {
|
|
5021
5135
|
var _Shader_find_subShaders_find, _Shader_find;
|
|
5022
5136
|
// Use pass reference
|
|
5023
|
-
var paths = passInfo.split("/");
|
|
5137
|
+
var paths = passInfo.name.split("/");
|
|
5024
5138
|
return (_Shader_find = Shader.find(paths[0])) == null ? void 0 : (_Shader_find_subShaders_find = _Shader_find.subShaders.find(function(subShader) {
|
|
5025
5139
|
return subShader.name === paths[1];
|
|
5026
5140
|
})) == null ? void 0 : _Shader_find_subShaders_find.passes.find(function(pass) {
|
|
5027
5141
|
return pass.name === paths[2];
|
|
5028
5142
|
});
|
|
5029
5143
|
}
|
|
5030
|
-
var
|
|
5144
|
+
var shaderPassContent = new ShaderPass(passInfo.name, passInfo.contents, passInfo.vertexEntry, passInfo.fragmentEntry, passInfo.tags);
|
|
5031
5145
|
var renderStates = passInfo.renderStates;
|
|
5032
5146
|
var renderState = new RenderState();
|
|
5033
|
-
|
|
5147
|
+
shaderPassContent._renderState = renderState;
|
|
5034
5148
|
// Parse const render state
|
|
5035
|
-
var
|
|
5036
|
-
for(var k in
|
|
5037
|
-
Shader._applyConstRenderStates(renderState, parseInt(k),
|
|
5149
|
+
var constantMap = renderStates.constantMap, variableMap = renderStates.variableMap;
|
|
5150
|
+
for(var k in constantMap){
|
|
5151
|
+
Shader._applyConstRenderStates(renderState, parseInt(k), constantMap[k]);
|
|
5038
5152
|
}
|
|
5039
5153
|
// Parse variable render state
|
|
5040
|
-
var variableRenderStateInfo = renderStates[1];
|
|
5041
5154
|
var renderStateDataMap = {};
|
|
5042
|
-
for(var k1 in
|
|
5043
|
-
renderStateDataMap[k1] = ShaderProperty.getByName(
|
|
5155
|
+
for(var k1 in variableMap){
|
|
5156
|
+
renderStateDataMap[k1] = ShaderProperty.getByName(variableMap[k1]);
|
|
5044
5157
|
}
|
|
5045
|
-
|
|
5046
|
-
return
|
|
5158
|
+
shaderPassContent._renderStateDataMap = renderStateDataMap;
|
|
5159
|
+
return shaderPassContent;
|
|
5047
5160
|
});
|
|
5048
|
-
return new SubShader(
|
|
5161
|
+
return new SubShader(subShaderContent.name, passList, subShaderContent.tags);
|
|
5049
5162
|
});
|
|
5050
|
-
shader = new Shader(
|
|
5051
|
-
shaderMap[
|
|
5163
|
+
shader = new Shader(shaderContent.name, subShaderList);
|
|
5164
|
+
shaderMap[shaderContent.name] = shader;
|
|
5052
5165
|
return shader;
|
|
5053
5166
|
} else {
|
|
5054
5167
|
if (shaderMap[nameOrShaderSource]) {
|
|
@@ -8138,6 +8251,14 @@ var /**
|
|
|
8138
8251
|
MSAASamples[MSAASamples[/** Multi-sample anti-aliasing with 8 samples. */ "EightX"] = 8] = "EightX";
|
|
8139
8252
|
})(exports.MSAASamples || (exports.MSAASamples = {}));
|
|
8140
8253
|
|
|
8254
|
+
/**
|
|
8255
|
+
* The strategy to use when a shader replacement fails.
|
|
8256
|
+
*/ exports.ReplacementFailureStrategy = void 0;
|
|
8257
|
+
(function(ReplacementFailureStrategy) {
|
|
8258
|
+
ReplacementFailureStrategy[ReplacementFailureStrategy[/** Keep the original shader. */ "KeepOriginalShader"] = 0] = "KeepOriginalShader";
|
|
8259
|
+
ReplacementFailureStrategy[ReplacementFailureStrategy[/** Do not render. */ "DoNotRender"] = 1] = "DoNotRender";
|
|
8260
|
+
})(exports.ReplacementFailureStrategy || (exports.ReplacementFailureStrategy = {}));
|
|
8261
|
+
|
|
8141
8262
|
var _Camera;
|
|
8142
8263
|
var MathTemp = function MathTemp() {
|
|
8143
8264
|
};
|
|
@@ -8187,6 +8308,7 @@ exports.Camera = (_Camera = /*#__PURE__*/ function(Component1) {
|
|
|
8187
8308
|
/** @internal */ _this._virtualCamera = new VirtualCamera();
|
|
8188
8309
|
/** @internal */ _this._replacementShader = null;
|
|
8189
8310
|
/** @internal */ _this._replacementSubShaderTag = null;
|
|
8311
|
+
/** @internal */ _this._replacementFailureStrategy = null;
|
|
8190
8312
|
/** @internal */ _this._cameraIndex = -1;
|
|
8191
8313
|
_this._priority = 0;
|
|
8192
8314
|
_this._shaderData = new ShaderData(ShaderDataGroup.Camera);
|
|
@@ -8366,6 +8488,7 @@ exports.Camera = (_Camera = /*#__PURE__*/ function(Component1) {
|
|
|
8366
8488
|
context.virtualCamera = virtualCamera;
|
|
8367
8489
|
context.replacementShader = this._replacementShader;
|
|
8368
8490
|
context.replacementTag = this._replacementSubShaderTag;
|
|
8491
|
+
context.replacementFailureStrategy = this._replacementFailureStrategy;
|
|
8369
8492
|
// compute cull frustum.
|
|
8370
8493
|
if (this.enableFrustumCulling && this._frustumChangeFlag.flag) {
|
|
8371
8494
|
this._frustum.calculateFromMatrix(virtualCamera.viewProjectionMatrix);
|
|
@@ -8385,15 +8508,18 @@ exports.Camera = (_Camera = /*#__PURE__*/ function(Component1) {
|
|
|
8385
8508
|
this._renderPipeline.render(context, cubeFace, mipLevel, clearMask);
|
|
8386
8509
|
this._engine._renderCount++;
|
|
8387
8510
|
};
|
|
8388
|
-
_proto.setReplacementShader = function setReplacementShader(shader, replacementTag) {
|
|
8511
|
+
_proto.setReplacementShader = function setReplacementShader(shader, replacementTag, failureStrategy) {
|
|
8512
|
+
if (failureStrategy === void 0) failureStrategy = exports.ReplacementFailureStrategy.KeepOriginalShader;
|
|
8389
8513
|
this._replacementShader = shader;
|
|
8390
8514
|
this._replacementSubShaderTag = typeof replacementTag === "string" ? ShaderTagKey.getByName(replacementTag) : replacementTag;
|
|
8515
|
+
this._replacementFailureStrategy = failureStrategy;
|
|
8391
8516
|
};
|
|
8392
8517
|
/**
|
|
8393
8518
|
* Reset and clear the replacement shader.
|
|
8394
8519
|
*/ _proto.resetReplacementShader = function resetReplacementShader() {
|
|
8395
8520
|
this._replacementShader = null;
|
|
8396
8521
|
this._replacementSubShaderTag = null;
|
|
8522
|
+
this._replacementFailureStrategy = null;
|
|
8397
8523
|
};
|
|
8398
8524
|
/**
|
|
8399
8525
|
* @inheritdoc
|
|
@@ -8507,7 +8633,7 @@ exports.Camera = (_Camera = /*#__PURE__*/ function(Component1) {
|
|
|
8507
8633
|
this._checkMainCanvasAntialiasWaste();
|
|
8508
8634
|
};
|
|
8509
8635
|
_proto._checkMainCanvasAntialiasWaste = function _checkMainCanvasAntialiasWaste() {
|
|
8510
|
-
if (this.independentCanvasEnabled && engineMath.Vector4.equals(this._viewport, PipelineUtils.defaultViewport)) {
|
|
8636
|
+
if (this._phasedActiveInScene && this.independentCanvasEnabled && engineMath.Vector4.equals(this._viewport, PipelineUtils.defaultViewport)) {
|
|
8511
8637
|
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.");
|
|
8512
8638
|
}
|
|
8513
8639
|
};
|
|
@@ -10201,6 +10327,7 @@ var /**
|
|
|
10201
10327
|
break;
|
|
10202
10328
|
}
|
|
10203
10329
|
}
|
|
10330
|
+
context.replacementFailureStrategy === exports.ReplacementFailureStrategy.KeepOriginalShader && this.pushRenderElementByType(renderElement, subRenderElement, materialSubShader.passes, renderStates);
|
|
10204
10331
|
} else {
|
|
10205
10332
|
this.pushRenderElementByType(renderElement, subRenderElement, replacementSubShaders[0].passes, renderStates);
|
|
10206
10333
|
}
|
|
@@ -23345,7 +23472,7 @@ ShaderPool.init();
|
|
|
23345
23472
|
*/ _proto._initialize = function _initialize(configuration) {
|
|
23346
23473
|
var _this = this;
|
|
23347
23474
|
var shaderLab = configuration.shaderLab, physics = configuration.physics;
|
|
23348
|
-
if (shaderLab) {
|
|
23475
|
+
if (shaderLab && !Shader._shaderLab) {
|
|
23349
23476
|
Shader._shaderLab = shaderLab;
|
|
23350
23477
|
}
|
|
23351
23478
|
var initializePromises = new Array();
|
|
@@ -24352,9 +24479,9 @@ ShaderPool.init();
|
|
|
24352
24479
|
/** Shadow bias.*/ _this.shadowBias = 1;
|
|
24353
24480
|
/** Shadow mapping normal-based bias. */ _this.shadowNormalBias = 1;
|
|
24354
24481
|
/** Near plane value to use for shadow frustums. */ _this.shadowNearPlane = 0.1;
|
|
24355
|
-
/** Shadow intensity, the larger the value, the clearer and darker the shadow. */ _this.shadowStrength = 1.0;
|
|
24356
24482
|
/** @internal */ _this._lightIndex = -1;
|
|
24357
24483
|
/** @internal */ _this._lightColor = new engineMath.Color();
|
|
24484
|
+
_this._shadowStrength = 1.0;
|
|
24358
24485
|
_this._color = new engineMath.Color(1, 1, 1, 1);
|
|
24359
24486
|
return _this;
|
|
24360
24487
|
}
|
|
@@ -24370,6 +24497,15 @@ ShaderPool.init();
|
|
|
24370
24497
|
return this._lightColor;
|
|
24371
24498
|
};
|
|
24372
24499
|
_create_class(Light, [
|
|
24500
|
+
{
|
|
24501
|
+
key: "shadowStrength",
|
|
24502
|
+
get: /** Shadow intensity, the larger the value, the clearer and darker the shadow, range [0,1]. */ function get() {
|
|
24503
|
+
return this._shadowStrength;
|
|
24504
|
+
},
|
|
24505
|
+
set: function set(value) {
|
|
24506
|
+
this._shadowStrength = engineMath.MathUtil.clamp(value, 0, 1);
|
|
24507
|
+
}
|
|
24508
|
+
},
|
|
24373
24509
|
{
|
|
24374
24510
|
key: "color",
|
|
24375
24511
|
get: /**
|
|
@@ -25085,7 +25221,7 @@ var BloomEffect = /*#__PURE__*/ function() {
|
|
|
25085
25221
|
return this._scatter;
|
|
25086
25222
|
},
|
|
25087
25223
|
set: function set(value) {
|
|
25088
|
-
value =
|
|
25224
|
+
value = engineMath.MathUtil.clamp(value, 0, 1);
|
|
25089
25225
|
if (value !== this._scatter) {
|
|
25090
25226
|
this._scatter = value;
|
|
25091
25227
|
var params = this._bloomMaterial.shaderData.getVector4(BloomEffect._bloomParams);
|
|
@@ -25284,6 +25420,9 @@ var TonemappingEffect = /*#__PURE__*/ function() {
|
|
|
25284
25420
|
*/ var _PostProcessManager = /*#__PURE__*/ function() {
|
|
25285
25421
|
function _PostProcessManager(scene) {
|
|
25286
25422
|
this.scene = scene;
|
|
25423
|
+
this./**
|
|
25424
|
+
* Whether the post process manager is active.
|
|
25425
|
+
*/ isActive = true;
|
|
25287
25426
|
var uberShader = Shader.find(_PostProcessManager.UBER_SHADER_NAME);
|
|
25288
25427
|
var uberMaterial = new Material(scene.engine, uberShader);
|
|
25289
25428
|
var depthState = uberMaterial.renderState.depthState;
|
|
@@ -25317,7 +25456,7 @@ var TonemappingEffect = /*#__PURE__*/ function() {
|
|
|
25317
25456
|
get: /**
|
|
25318
25457
|
* Whether has active post process effect.
|
|
25319
25458
|
*/ function get() {
|
|
25320
|
-
return this._bloomEffect.enabled || this._tonemappingEffect.enabled;
|
|
25459
|
+
return this.isActive && (this._bloomEffect.enabled || this._tonemappingEffect.enabled);
|
|
25321
25460
|
}
|
|
25322
25461
|
}
|
|
25323
25462
|
]);
|