@galacean/effects-plugin-model 2.0.0-alpha.7 → 2.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +407 -99
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +405 -101
- package/dist/index.mjs.map +1 -1
- package/dist/loader.mjs +4601 -4297
- package/dist/loader.mjs.map +1 -1
- package/dist/runtime/common.d.ts +2 -0
- package/dist/runtime/material.d.ts +6 -12
- package/dist/runtime/mesh.d.ts +5 -0
- package/dist/runtime/shader-libs/standard-shader-source.d.ts +1 -0
- package/dist/runtime/shader-libs/standard-shader.d.ts +8 -0
- package/dist/utility/shader-helper.d.ts +2 -0
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player model plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 飂兮
|
|
6
|
-
* Version: v2.0.0-alpha.
|
|
6
|
+
* Version: v2.0.0-alpha.8
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -268,6 +268,8 @@ exports.PShadowType = void 0;
|
|
|
268
268
|
PShadowType[PShadowType["variance"] = 2] = "variance";
|
|
269
269
|
PShadowType[PShadowType["expVariance"] = 3] = "expVariance";
|
|
270
270
|
})(exports.PShadowType || (exports.PShadowType = {}));
|
|
271
|
+
var PBRShaderGUID = "pbr00000000000000000000000000000";
|
|
272
|
+
var UnlitShaderGUID = "unlit000000000000000000000000000";
|
|
271
273
|
/**
|
|
272
274
|
* 插件变换类
|
|
273
275
|
*/ var PTransform = /*#__PURE__*/ function() {
|
|
@@ -2085,11 +2087,11 @@ var deg2rad = Math.PI / 180;
|
|
|
2085
2087
|
var color = data.color;
|
|
2086
2088
|
_this.color = new Vector3(color.r, color.g, color.b);
|
|
2087
2089
|
_this.intensity = data.intensity;
|
|
2088
|
-
if (data.lightType ===
|
|
2090
|
+
if (data.lightType === effects.spec.LightType.point) {
|
|
2089
2091
|
_this.lightType = exports.PLightType.point;
|
|
2090
2092
|
var _data_range;
|
|
2091
2093
|
_this.range = (_data_range = data.range) != null ? _data_range : -1;
|
|
2092
|
-
} else if (data.lightType ===
|
|
2094
|
+
} else if (data.lightType === effects.spec.LightType.spot) {
|
|
2093
2095
|
_this.lightType = exports.PLightType.spot;
|
|
2094
2096
|
var _data_range1;
|
|
2095
2097
|
_this.range = (_data_range1 = data.range) != null ? _data_range1 : -1;
|
|
@@ -2097,7 +2099,7 @@ var deg2rad = Math.PI / 180;
|
|
|
2097
2099
|
_this.outerConeAngle = (_data_outerConeAngle = data.outerConeAngle) != null ? _data_outerConeAngle : Math.PI;
|
|
2098
2100
|
var _data_innerConeAngle;
|
|
2099
2101
|
_this.innerConeAngle = (_data_innerConeAngle = data.innerConeAngle) != null ? _data_innerConeAngle : 0;
|
|
2100
|
-
} else if (data.lightType ===
|
|
2102
|
+
} else if (data.lightType === effects.spec.LightType.directional) {
|
|
2101
2103
|
_this.lightType = exports.PLightType.directional;
|
|
2102
2104
|
} else {
|
|
2103
2105
|
_this.lightType = exports.PLightType.ambient;
|
|
@@ -2801,8 +2803,8 @@ function _assert_this_initialized(self) {
|
|
|
2801
2803
|
* @param skybox - 天空盒
|
|
2802
2804
|
*/ _proto.build = function build(lightCount, uniformSemantics, skybox) {
|
|
2803
2805
|
var globalState = PGlobalState.getInstance();
|
|
2804
|
-
var
|
|
2805
|
-
this.material.
|
|
2806
|
+
var primitiveMacroList = this.getMacroList(lightCount, true, skybox);
|
|
2807
|
+
var materialMacroList = this.material.getMacroList(primitiveMacroList);
|
|
2806
2808
|
var newSemantics = uniformSemantics != null ? uniformSemantics : {};
|
|
2807
2809
|
newSemantics["_ViewProjectionMatrix"] = "VIEWPROJECTION";
|
|
2808
2810
|
//newSemantics["uView"] = 'VIEWINVERSE';
|
|
@@ -2814,19 +2816,10 @@ function _assert_this_initialized(self) {
|
|
|
2814
2816
|
material = this.material.material;
|
|
2815
2817
|
// @ts-expect-error
|
|
2816
2818
|
material.uniformSemantics = newSemantics;
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
//id: 'pbr00000000000000000000000000000',
|
|
2821
|
-
id: effects.generateGUID(),
|
|
2822
|
-
dataType: "Shader",
|
|
2823
|
-
vertex: this.material.vertexShaderCode,
|
|
2824
|
-
fragment: this.material.fragmentShaderCode,
|
|
2825
|
-
// @ts-expect-error
|
|
2826
|
-
glslVersion: isWebGL2 ? effects.GLSLVersion.GLSL3 : effects.GLSLVersion.GLSL1
|
|
2819
|
+
materialMacroList.forEach(function(macro) {
|
|
2820
|
+
var name = macro.name, value = macro.value;
|
|
2821
|
+
material.enableMacro(name, value);
|
|
2827
2822
|
});
|
|
2828
|
-
// @ts-expect-error
|
|
2829
|
-
material.shader = shader;
|
|
2830
2823
|
this.material.setMaterialStates(material);
|
|
2831
2824
|
} else {
|
|
2832
2825
|
material = effects.Material.create(this.engine, {
|
|
@@ -2892,11 +2885,14 @@ function _assert_this_initialized(self) {
|
|
|
2892
2885
|
}
|
|
2893
2886
|
}
|
|
2894
2887
|
if (this.material.materialType !== exports.PMaterialType.unlit) {
|
|
2888
|
+
// let hasLight = false;
|
|
2895
2889
|
if (lightCount > 0 && this.geometry.hasNormals()) {
|
|
2890
|
+
// hasLight = true;
|
|
2896
2891
|
featureList.push("USE_PUNCTUAL 1");
|
|
2897
2892
|
featureList.push("LIGHT_COUNT " + lightCount);
|
|
2898
2893
|
}
|
|
2899
2894
|
if (skybox !== undefined && skybox.available) {
|
|
2895
|
+
// hasLight = true;
|
|
2900
2896
|
featureList.push("USE_IBL 1");
|
|
2901
2897
|
featureList.push("USE_TEX_LOD 1");
|
|
2902
2898
|
if (skybox.hasDiffuseImage) ; else {
|
|
@@ -2916,6 +2912,116 @@ function _assert_this_initialized(self) {
|
|
|
2916
2912
|
}
|
|
2917
2913
|
return featureList;
|
|
2918
2914
|
};
|
|
2915
|
+
_proto.getMacroList = function getMacroList(lightCount, pbrPass, skybox) {
|
|
2916
|
+
var macroList = [];
|
|
2917
|
+
if (this.geometry.hasNormals()) {
|
|
2918
|
+
macroList.push({
|
|
2919
|
+
name: "HAS_NORMALS"
|
|
2920
|
+
});
|
|
2921
|
+
}
|
|
2922
|
+
if (this.geometry.hasTangents()) {
|
|
2923
|
+
macroList.push({
|
|
2924
|
+
name: "HAS_TANGENTS"
|
|
2925
|
+
});
|
|
2926
|
+
}
|
|
2927
|
+
if (this.geometry.hasUVCoords(1)) {
|
|
2928
|
+
macroList.push({
|
|
2929
|
+
name: "HAS_UV_SET1"
|
|
2930
|
+
});
|
|
2931
|
+
}
|
|
2932
|
+
if (this.geometry.hasUVCoords(2)) {
|
|
2933
|
+
macroList.push({
|
|
2934
|
+
name: "HAS_UV_SET2"
|
|
2935
|
+
});
|
|
2936
|
+
}
|
|
2937
|
+
if (this.morph !== undefined && this.morph.hasMorph()) {
|
|
2938
|
+
// 存在 Morph 动画,需要配置 Morph 动画相关的 Shader 宏定义
|
|
2939
|
+
// USE_MORPHING 是总开关,WEIGHT_COUNT 是 weights 数组长度(Shader)
|
|
2940
|
+
macroList.push({
|
|
2941
|
+
name: "USE_MORPHING"
|
|
2942
|
+
});
|
|
2943
|
+
macroList.push({
|
|
2944
|
+
name: "WEIGHT_COUNT",
|
|
2945
|
+
value: this.morph.morphWeightsLength
|
|
2946
|
+
});
|
|
2947
|
+
for(var i = 0; i < this.morph.morphWeightsLength; i++){
|
|
2948
|
+
if (this.morph.hasPositionMorph) {
|
|
2949
|
+
macroList.push({
|
|
2950
|
+
name: "HAS_TARGET_POSITION" + i
|
|
2951
|
+
});
|
|
2952
|
+
}
|
|
2953
|
+
if (this.morph.hasNormalMorph) {
|
|
2954
|
+
macroList.push({
|
|
2955
|
+
name: "HAS_TARGET_NORMAL" + i
|
|
2956
|
+
});
|
|
2957
|
+
}
|
|
2958
|
+
if (this.morph.hasTangentMorph) {
|
|
2959
|
+
macroList.push({
|
|
2960
|
+
name: "HAS_TARGET_TANGENT" + i
|
|
2961
|
+
});
|
|
2962
|
+
}
|
|
2963
|
+
}
|
|
2964
|
+
}
|
|
2965
|
+
if (this.skin !== undefined) {
|
|
2966
|
+
macroList.push({
|
|
2967
|
+
name: "USE_SKINNING"
|
|
2968
|
+
});
|
|
2969
|
+
macroList.push({
|
|
2970
|
+
name: "JOINT_COUNT",
|
|
2971
|
+
value: this.skin.getJointCount()
|
|
2972
|
+
});
|
|
2973
|
+
macroList.push({
|
|
2974
|
+
name: "HAS_JOINT_SET1"
|
|
2975
|
+
});
|
|
2976
|
+
macroList.push({
|
|
2977
|
+
name: "HAS_WEIGHT_SET1"
|
|
2978
|
+
});
|
|
2979
|
+
if (this.skin.textureDataMode) {
|
|
2980
|
+
macroList.push({
|
|
2981
|
+
name: "USE_SKINNING_TEXTURE"
|
|
2982
|
+
});
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2985
|
+
if (this.material.materialType !== exports.PMaterialType.unlit) {
|
|
2986
|
+
if (lightCount > 0 && this.geometry.hasNormals()) {
|
|
2987
|
+
macroList.push({
|
|
2988
|
+
name: "USE_PUNCTUAL"
|
|
2989
|
+
});
|
|
2990
|
+
macroList.push({
|
|
2991
|
+
name: "LIGHT_COUNT",
|
|
2992
|
+
value: lightCount
|
|
2993
|
+
});
|
|
2994
|
+
}
|
|
2995
|
+
if (skybox !== undefined && skybox.available) {
|
|
2996
|
+
macroList.push({
|
|
2997
|
+
name: "USE_IBL"
|
|
2998
|
+
});
|
|
2999
|
+
macroList.push({
|
|
3000
|
+
name: "USE_TEX_LOD"
|
|
3001
|
+
});
|
|
3002
|
+
if (skybox.hasDiffuseImage) ; else {
|
|
3003
|
+
macroList.push({
|
|
3004
|
+
name: "IRRADIANCE_COEFFICIENTS"
|
|
3005
|
+
});
|
|
3006
|
+
}
|
|
3007
|
+
}
|
|
3008
|
+
// if(!hasLight){
|
|
3009
|
+
// featureList.push('MATERIAL_UNLIT 1');
|
|
3010
|
+
// }
|
|
3011
|
+
}
|
|
3012
|
+
// 渲染中间结果输出,用于渲染效果调试,支持 pbr 和 unlit
|
|
3013
|
+
var renderMode = PGlobalState.getInstance().renderMode3D;
|
|
3014
|
+
var outputDefine = this.getRenderMode3DDefine(renderMode);
|
|
3015
|
+
if (outputDefine !== undefined) {
|
|
3016
|
+
macroList.push({
|
|
3017
|
+
name: "DEBUG_OUTPUT"
|
|
3018
|
+
});
|
|
3019
|
+
macroList.push({
|
|
3020
|
+
name: outputDefine
|
|
3021
|
+
});
|
|
3022
|
+
}
|
|
3023
|
+
return macroList;
|
|
3024
|
+
};
|
|
2919
3025
|
/**
|
|
2920
3026
|
* 销毁,需要释放创建的 GE 对象
|
|
2921
3027
|
*/ _proto.dispose = function dispose() {
|
|
@@ -3780,7 +3886,7 @@ var EffectsMeshProxy = /*#__PURE__*/ function() {
|
|
|
3780
3886
|
return PSceneManager;
|
|
3781
3887
|
}();
|
|
3782
3888
|
|
|
3783
|
-
var primitiveVert = "precision highp float;\n#define FEATURES\n#include <webglCompatibility.glsl>\n#include <animation.vert.glsl>\nvsIn vec4 aPos;vsOut vec3 v_Position;\n#ifdef HAS_NORMALS\nvsIn vec4 aNormal;\n#endif\n#ifdef HAS_TANGENTS\nvsIn vec4 a_Tangent;\n#endif\n#ifdef HAS_NORMALS\n#ifdef HAS_TANGENTS\nvsOut mat3 v_TBN;\n#else\nvsOut vec3 v_Normal;\n#endif\n#endif\n#ifdef HAS_UV_SET1\nvsIn vec2 aUV;\n#endif\n#ifdef HAS_UV_SET2\nvsIn vec2
|
|
3889
|
+
var primitiveVert = "precision highp float;\n#define FEATURES\n#include <webglCompatibility.glsl>\n#include <animation.vert.glsl>\nvsIn vec4 aPos;vsOut vec3 v_Position;\n#ifdef HAS_NORMALS\nvsIn vec4 aNormal;\n#endif\n#ifdef HAS_TANGENTS\nvsIn vec4 a_Tangent;\n#endif\n#ifdef HAS_NORMALS\n#ifdef HAS_TANGENTS\nvsOut mat3 v_TBN;\n#else\nvsOut vec3 v_Normal;\n#endif\n#endif\n#ifdef HAS_UV_SET1\nvsIn vec2 aUV;\n#endif\n#ifdef HAS_UV_SET2\nvsIn vec2 aUV2;\n#endif\nvsOut vec2 v_UVCoord1;\n#ifdef HAS_UV_SET2\nvsOut vec2 v_UVCoord2;\n#endif\n#ifdef HAS_VERTEX_COLOR_VEC3\nvsIn vec3 a_Color;vsOut vec3 v_Color;\n#endif\n#ifdef HAS_VERTEX_COLOR_VEC4\nvsIn vec4 a_Color;vsOut vec4 v_Color;\n#endif\nuniform mat4 _ViewProjectionMatrix;uniform mat4 _ModelMatrix;uniform mat4 _NormalMatrix;\n#ifdef EDITOR_TRANSFORM\nuniform vec4 uEditorTransform;\n#endif\n#ifdef USE_SHADOW_MAPPING\nuniform mat4 _LightViewProjectionMatrix;uniform float _DeltaSceneSize;vsOut vec4 v_PositionLightSpace;vsOut vec4 v_dPositionLightSpace;\n#endif\nvec4 getPosition(){vec4 pos=vec4(aPos.xyz,1.0);\n#ifdef USE_MORPHING\npos+=getTargetPosition();\n#endif\n#ifdef USE_SKINNING\npos=getSkinningMatrix()*pos;\n#endif\nreturn pos;}\n#ifdef HAS_NORMALS\nvec4 getNormal(){vec4 normal=aNormal;\n#ifdef USE_MORPHING\nnormal+=getTargetNormal();\n#endif\n#ifdef USE_SKINNING\nnormal=getSkinningNormalMatrix()*normal;\n#endif\nreturn normalize(normal);}\n#endif\n#ifdef HAS_TANGENTS\nvec4 getTangent(){vec4 tangent=a_Tangent;\n#ifdef USE_MORPHING\ntangent+=getTargetTangent();\n#endif\n#ifdef USE_SKINNING\ntangent=getSkinningMatrix()*tangent;\n#endif\nreturn normalize(tangent);}\n#endif\nvoid main(){vec4 pos=_ModelMatrix*getPosition();v_Position=vec3(pos.xyz)/pos.w;\n#ifdef HAS_NORMALS\n#ifdef HAS_TANGENTS\nvec4 tangent=getTangent();vec3 normalW=normalize(vec3(_NormalMatrix*vec4(getNormal().xyz,0.0)));vec3 tangentW=normalize(vec3(_ModelMatrix*vec4(tangent.xyz,0.0)));vec3 bitangentW=cross(normalW,tangentW)*tangent.w;v_TBN=mat3(tangentW,bitangentW,normalW);\n#else\nv_Normal=normalize(vec3(_NormalMatrix*vec4(getNormal().xyz,0.0)));\n#endif\n#endif\nv_UVCoord1=vec2(0.0,0.0);\n#ifdef HAS_UV_SET1\nv_UVCoord1=aUV;\n#endif\n#ifdef HAS_UV_SET2\nv_UVCoord2=aUV2;\n#endif\n#if defined(HAS_VERTEX_COLOR_VEC3) || defined(HAS_VERTEX_COLOR_VEC4)\nv_Color=a_Color;\n#endif\n#ifdef USE_SHADOW_MAPPING\nv_PositionLightSpace=_LightViewProjectionMatrix*pos;vec3 dpos=vec3(_DeltaSceneSize);v_dPositionLightSpace=_LightViewProjectionMatrix*(pos+vec4(dpos,0));\n#endif\ngl_Position=_ViewProjectionMatrix*pos;\n#ifdef EDITOR_TRANSFORM\ngl_Position=vec4(gl_Position.xy*uEditorTransform.xy+uEditorTransform.zw*gl_Position.w,gl_Position.zw);\n#endif\n}";
|
|
3784
3890
|
|
|
3785
3891
|
var metallicRoughnessFrag = "\n#define FEATURES\n#ifndef WEBGL2\n#extension GL_OES_standard_derivatives : enable\n#endif\n#if !defined(WEBGL2) && defined(USE_TEX_LOD)\n#extension GL_EXT_shader_texture_lod : enable\n#endif\n#ifdef USE_HDR\n#extension GL_OES_texture_float : enable\n#extension GL_OES_texture_float_linear : enable\n#endif\n#if !defined(WEBGL2) && defined(USE_WBOIT)\n#extension GL_EXT_draw_buffers: require\n#endif\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n#ifdef WEBGL2\n#ifdef USE_WBOIT\nlayout(location=0)out vec4 outFragColor0;layout(location=1)out vec4 outFragColor1;\n#else\nout vec4 outFragColor;\n#endif\n#else\n#ifdef USE_WBOIT\n#define outFragColor0 gl_FragData[0]\n#define outFragColor1 gl_FragData[1]\n#else\n#define outFragColor gl_FragColor\n#endif\n#endif\n#include <webglCompatibility.glsl>\n#include <extensions.frag.glsl>\n#include <tonemapping.frag.glsl>\n#include <textures.vert.glsl>\n#include <functions.frag.glsl>\n#include <shadowCommon.vert.glsl>\n#include <shadow.frag.glsl>\nstruct Light{vec3 direction;float range;vec3 color;float intensity;vec3 position;float innerConeCos;float outerConeCos;int type;vec2 padding;};const int LightType_Directional=0;const int LightType_Point=1;const int LightType_Spot=2;const int LightType_Ambient=3;\n#ifdef USE_PUNCTUAL\nuniform Light _Lights[LIGHT_COUNT];\n#endif\n#if defined(MATERIAL_SPECULARGLOSSINESS) || defined(MATERIAL_METALLICROUGHNESS)\nuniform float _MetallicFactor;uniform float _RoughnessFactor;uniform vec4 _BaseColorFactor;\n#endif\n#ifdef MATERIAL_SPECULARGLOSSINESS\nuniform vec3 _SpecularFactor;uniform vec4 _DiffuseFactor;uniform float _GlossinessFactor;\n#endif\n#ifdef ALPHAMODE_MASK\nuniform float _AlphaCutoff;\n#endif\n#ifdef ADD_FOG\nuniform vec4 _FogColor;\n#ifdef LINEAR_FOG\nuniform float _FogNear;uniform float _FogFar;\n#endif\n#ifdef EXP_FOG\nuniform float _FogDensity;\n#endif\n#endif\n#ifdef PREVIEW_BORDER\nuniform vec4 uPreviewColor;\n#endif\nuniform vec3 _Camera;uniform int _MipCount;struct MaterialInfo{float perceptualRoughness;vec3 reflectance0;float alphaRoughness;vec3 diffuseColor;vec3 reflectance90;vec3 specularColor;};\n#ifdef ADD_FOG\nvec3 getMixFogColor(vec3 baseColor){vec3 distance=_Camera-v_Position;float fogAmount=0.0;\n#ifdef LINEAR_FOG\nfogAmount=smoothstep(_FogNear,_FogFar,distance[2]);\n#endif\n#ifdef EXP_FOG\n#define LOG2 1.442695\nfogAmount=1.-exp2(-_FogDensity*_FogDensity*distance[2]*distance[2]*LOG2);fogAmount=clamp(fogAmount,0.,1.);\n#endif\nvec3 mixColor=baseColor.rgb+(vec3(_FogColor)-baseColor.rgb)*fogAmount;return mixColor;}\n#endif\n#ifdef IRRADIANCE_COEFFICIENTS\nvec3 getIrradiance(vec3 norm,SHCoefficients c){float x=norm.x;float y=norm.y;float z=norm.z;float c1=0.429043;float c2=0.511664;float c3=0.743125;float c4=0.886227;float c5=0.247708;vec3 irradiance=c1*c.l22*(x*x-y*y)+c3*c.l20*(z*z)+c4*c.l00-c5*c.l20+2.0*c1*(c.l2m2*x*y+c.l21*x*z+c.l2m1*y*z)+2.0*c2*(c.l11*x+c.l1m1*y+c.l10*z);return irradiance;}\n#endif\n#ifdef USE_IBL\nvec3 getIBLContribution(MaterialInfo materialInfo,vec3 n,vec3 v){float NdotV=clamp(dot(n,v),0.0,1.0);float lod=clamp(materialInfo.perceptualRoughness*float(_MipCount),0.0,float(_MipCount));vec3 reflection=normalize(reflect(-v,n));vec2 brdfSamplePoint=clamp(vec2(NdotV,materialInfo.perceptualRoughness),vec2(0.0,0.0),vec2(1.0,1.0));vec2 brdf=texture2D(_brdfLUT,brdfSamplePoint).rg;vec4 diffuseColor=vec4(1.0,0.0,0.0,1.0);\n#ifdef IRRADIANCE_COEFFICIENTS\nvec3 irradiance=getIrradiance(n,_shCoefficients);diffuseColor=vec4(irradiance,1.0);\n#else\ndiffuseColor=textureCube(_DiffuseEnvSampler,n);\n#endif\n#ifdef USE_TEX_LOD\nvec4 specularSample=_textureCubeLodEXT(_SpecularEnvSampler,reflection,lod);\n#else\nvec4 specularSample=textureCube(_SpecularEnvSampler,reflection,lod);\n#endif\n#ifdef USE_HDR\nvec3 diffuseLight=diffuseColor.rgb;vec3 specularLight=specularSample.rgb;\n#else\nvec3 diffuseLight=SRGBtoLINEAR(diffuseColor).rgb;vec3 specularLight=SRGBtoLINEAR(specularSample).rgb;\n#endif\nvec3 diffuse=diffuseLight*materialInfo.diffuseColor;vec3 specular=specularLight*(materialInfo.specularColor*brdf.x+brdf.y);return diffuse*_IblIntensity[0]+specular*_IblIntensity[1];}\n#endif\nvec3 diffuse(MaterialInfo materialInfo){return materialInfo.diffuseColor/M_PI;}vec3 specularReflection(MaterialInfo materialInfo,AngularInfo angularInfo){return materialInfo.reflectance0+(materialInfo.reflectance90-materialInfo.reflectance0)*pow(clamp(1.0-angularInfo.VdotH,0.0,1.0),5.0);}float visibilityOcclusion(MaterialInfo materialInfo,AngularInfo angularInfo){float NdotL=angularInfo.NdotL;float NdotV=angularInfo.NdotV;float alphaRoughnessSq=materialInfo.alphaRoughness*materialInfo.alphaRoughness;float GGXV=NdotL*sqrt(NdotV*NdotV*(1.0-alphaRoughnessSq)+alphaRoughnessSq);float GGXL=NdotV*sqrt(NdotL*NdotL*(1.0-alphaRoughnessSq)+alphaRoughnessSq);float GGX=GGXV+GGXL;if(GGX>0.0){return 0.5/GGX;}return 0.0;}float microfacetDistribution(MaterialInfo materialInfo,AngularInfo angularInfo){float alphaRoughnessSq=materialInfo.alphaRoughness*materialInfo.alphaRoughness;float f=(angularInfo.NdotH*alphaRoughnessSq-angularInfo.NdotH)*angularInfo.NdotH+1.0;return alphaRoughnessSq/(M_PI*f*f);}vec3 getPointShade(vec3 pointToLight,MaterialInfo materialInfo,vec3 normal,vec3 view){AngularInfo angularInfo=getAngularInfo(pointToLight,normal,view);if(angularInfo.NdotL>0.0||angularInfo.NdotV>0.0){vec3 F=specularReflection(materialInfo,angularInfo);float Vis=visibilityOcclusion(materialInfo,angularInfo);float D=microfacetDistribution(materialInfo,angularInfo);vec3 diffuseContrib=(1.0-F)*diffuse(materialInfo);vec3 specContrib=F*Vis*D;return angularInfo.NdotL*(diffuseContrib+specContrib);}return vec3(0.0,0.0,0.0);}float getRangeAttenuation(float range,float distance){if(range<=0.0){return 1.0;}return 1.0/(pow(5.0*distance/range,2.0)+1.0);}float getSpotAttenuation(vec3 pointToLight,vec3 spotDirection,float outerConeCos,float innerConeCos){float actualCos=dot(normalize(spotDirection),normalize(-pointToLight));if(actualCos>outerConeCos){if(actualCos<innerConeCos){return smoothstep(outerConeCos,innerConeCos,actualCos);}return 1.0;}return 0.0;}vec3 applyDirectionalLight(Light light,MaterialInfo materialInfo,vec3 normal,vec3 view,float shadow){vec3 pointToLight=-light.direction;vec3 shade=getPointShade(pointToLight,materialInfo,normal,view)*shadow;return light.intensity*light.color*shade;}vec3 applyPointLight(Light light,MaterialInfo materialInfo,vec3 normal,vec3 view){vec3 pointToLight=light.position-v_Position;float distance=length(pointToLight);float attenuation=getRangeAttenuation(light.range,distance);vec3 shade=getPointShade(pointToLight,materialInfo,normal,view);return light.color*shade*attenuation*light.intensity;}vec3 applySpotLight(Light light,MaterialInfo materialInfo,vec3 normal,vec3 view,float shadow){vec3 pointToLight=light.position-v_Position;float distance=length(pointToLight);float rangeAttenuation=getRangeAttenuation(light.range,distance);float spotAttenuation=getSpotAttenuation(pointToLight,light.direction,light.outerConeCos,light.innerConeCos);vec3 shade=getPointShade(pointToLight,materialInfo,normal,view)*shadow;return rangeAttenuation*spotAttenuation*light.intensity*light.color*shade;}vec3 applyAmbientLight(Light light,MaterialInfo materialInfo){return light.intensity*light.color*diffuse(materialInfo);}float weight(float z,float a){return clamp(pow(min(1.0,a*10.0)+0.01,3.0)*1e8*pow(1.0-z*0.9,3.0),1e-2,3e3);}void writeFragmentColor(vec4 fragColor){\n#if !defined(ALPHAMODE_OPAQUE) && defined(USE_WBOIT)\nfloat w=weight(gl_FragCoord.z,fragColor.a);fragColor.rgb*=fragColor.a;outFragColor0=vec4(fragColor.rgb*w,fragColor.a);outFragColor1=vec4(fragColor.a*w);\n#else\noutFragColor=fragColor;\n#endif\n}void main(){float perceptualRoughness=0.0;float metallic=0.0;vec4 baseColor=vec4(0.0,0.0,0.0,1.0);vec3 diffuseColor=vec3(0.0);vec3 specularColor=vec3(0.0);vec3 f0=vec3(0.04);\n#ifdef PREVIEW_BORDER\nwriteFragmentColor(uPreviewColor);return;\n#endif\n#ifdef MATERIAL_SPECULARGLOSSINESS\n#ifdef HAS_SPECULAR_GLOSSINESS_MAP\nvec4 sgSample=SRGBtoLINEAR(texture2D(_SpecularGlossinessSampler,getSpecularGlossinessUV()));perceptualRoughness=(1.0-sgSample.a*_GlossinessFactor);f0=sgSample.rgb*_SpecularFactor;\n#else\nf0=_SpecularFactor;perceptualRoughness=1.0-_GlossinessFactor;\n#endif\n#ifdef HAS_DIFFUSE_MAP\nbaseColor=SRGBtoLINEAR(texture2D(_DiffuseSampler,getDiffuseUV()))*_DiffuseFactor;\n#else\nbaseColor=SRGBtoLINEAR(_DiffuseFactor);\n#endif\nbaseColor*=getVertexColor();specularColor=f0;float oneMinusSpecularStrength=1.0-max(max(f0.r,f0.g),f0.b);diffuseColor=baseColor.rgb*oneMinusSpecularStrength;\n#ifdef DEBUG_METALLIC\nmetallic=solveMetallic(baseColor.rgb,specularColor,oneMinusSpecularStrength);\n#endif\n#endif\n#ifdef MATERIAL_METALLICROUGHNESS\n#ifdef HAS_METALLIC_ROUGHNESS_MAP\nvec4 mrSample=texture2D(_MetallicRoughnessSampler,getMetallicRoughnessUV());perceptualRoughness=mrSample.g*_RoughnessFactor;metallic=mrSample.b*_MetallicFactor;\n#else\nmetallic=_MetallicFactor;perceptualRoughness=_RoughnessFactor;\n#endif\n#ifdef HAS_BASE_COLOR_MAP\nbaseColor=SRGBtoLINEAR(texture2D(_BaseColorSampler,getBaseColorUV()))*_BaseColorFactor;\n#else\nbaseColor=SRGBtoLINEAR(_BaseColorFactor);\n#endif\nbaseColor*=getVertexColor();diffuseColor=baseColor.rgb*(vec3(1.0)-f0)*(1.0-metallic);specularColor=mix(f0,baseColor.rgb,metallic);\n#endif\n#ifdef ALPHAMODE_MASK\nif(baseColor.a<_AlphaCutoff){discard;}baseColor.a=1.0;\n#endif\n#ifdef ALPHAMODE_OPAQUE\nbaseColor.a=1.0;\n#endif\n#ifdef MATERIAL_UNLIT\n#ifndef DEBUG_OUTPUT\n#ifdef ADD_FOG\nvec3 mixColor=getMixFogColor(baseColor.rgb);vec4 fragColorUnlit=vec4(LINEARtoSRGB(mixColor)*baseColor.a,baseColor.a);\n#else\nvec4 fragColorUnlit=vec4(LINEARtoSRGB(baseColor.rgb)*baseColor.a,baseColor.a);\n#endif\nwriteFragmentColor(fragColorUnlit);\n#else\n#ifdef DEBUG_UV\noutFragColor.rgb=vec3(getDebugUVColor(getBaseColorUV(),getNormal()));\n#endif\n#ifdef DEBUG_METALLIC\noutFragColor.rgb=vec3(metallic);\n#endif\n#ifdef DEBUG_ROUGHNESS\noutFragColor.rgb=vec3(perceptualRoughness);\n#endif\n#ifdef DEBUG_NORMAL\noutFragColor.rgb=getNormal()*0.5+0.5;\n#endif\n#ifdef DEBUG_BASECOLOR\noutFragColor.rgb=LINEARtoSRGB(baseColor.rgb);\n#endif\n#ifdef DEBUG_OCCLUSION\noutFragColor.rgb=vec3(1.0);\n#endif\n#ifdef DEBUG_EMISSIVE\noutFragColor.rgb=vec3(0.0);\n#endif\n#ifdef DEBUG_ALPHA\noutFragColor.rgb=vec3(baseColor.a);\n#endif\noutFragColor.a=1.0;\n#endif\nreturn;\n#endif\nmetallic=clamp(metallic,0.0,1.0);float alphaRoughness=perceptualRoughness*perceptualRoughness;vec3 normal=getNormal();\n#ifdef USE_SPECULAR_AA\nfloat AARoughnessFactor=getAARoughnessFactor(normal);perceptualRoughness+=AARoughnessFactor;alphaRoughness+=AARoughnessFactor;\n#endif\nperceptualRoughness=clamp(perceptualRoughness,0.04,1.0);alphaRoughness=clamp(alphaRoughness,0.04,1.0);float reflectance=max(max(specularColor.r,specularColor.g),specularColor.b);vec3 specularEnvironmentR0=specularColor.rgb;vec3 specularEnvironmentR90=vec3(clamp(reflectance*50.0,0.0,1.0));MaterialInfo materialInfo=MaterialInfo(perceptualRoughness,specularEnvironmentR0,alphaRoughness,diffuseColor,specularEnvironmentR90,specularColor);vec3 color=vec3(0.0,0.0,0.0);vec3 view=normalize(_Camera-v_Position);float shadow=1.0;\n#ifdef USE_SHADOW_MAPPING\nshadow=getShadowContribution();\n#endif\n#ifdef USE_PUNCTUAL\nfor(int i=0;i<LIGHT_COUNT;++i){Light light=_Lights[i];if(light.type==LightType_Directional){color+=applyDirectionalLight(light,materialInfo,normal,view,shadow);}else if(light.type==LightType_Point){color+=applyPointLight(light,materialInfo,normal,view);}else if(light.type==LightType_Spot){color+=applySpotLight(light,materialInfo,normal,view,shadow);}else if(light.type==LightType_Ambient){color+=applyAmbientLight(light,materialInfo);}}\n#endif\n#ifdef USE_IBL\ncolor+=getIBLContribution(materialInfo,normal,view);\n#endif\nfloat ao=1.0;\n#ifdef HAS_OCCLUSION_MAP\nao=texture2D(_OcclusionSampler,getOcclusionUV()).r;color=mix(color,color*ao,_OcclusionStrength);\n#endif\nvec3 emissive=vec3(0);\n#ifndef DEBUG_OUTPUT\n#ifdef ADD_FOG\nvec4 toneMapColor=SRGBtoLINEAR(vec4(toneMap(color),baseColor.a));color=getMixFogColor(toneMapColor.rgb);vec4 fragColorOut=vec4(LINEARtoSRGB(color.rgb)*baseColor.a,baseColor.a);\n#else\ncolor=toneMap(color)*baseColor.a;\n#ifdef HAS_EMISSIVE\ncolor+=_EmissiveFactor.rgb;\n#endif\n#ifdef HAS_EMISSIVE_MAP\nemissive=SRGBtoLINEAR(texture2D(_EmissiveSampler,getEmissiveUV())).rgb*_EmissiveFactor.rgb;color+=emissive;\n#endif\nvec4 fragColorOut=vec4(color,baseColor.a);\n#endif\nwriteFragmentColor(fragColorOut);\n#else\n#ifdef DEBUG_UV\noutFragColor.rgb=vec3(getDebugUVColor(getBaseColorUV(),normal));\n#endif\n#ifdef DEBUG_METALLIC\noutFragColor.rgb=vec3(metallic);\n#endif\n#ifdef DEBUG_ROUGHNESS\noutFragColor.rgb=vec3(perceptualRoughness);\n#endif\n#ifdef DEBUG_NORMAL\noutFragColor.rgb=normal*0.5+0.5;\n#endif\n#ifdef DEBUG_BASECOLOR\noutFragColor.rgb=LINEARtoSRGB(baseColor.rgb);\n#endif\n#ifdef DEBUG_OCCLUSION\n#ifdef HAS_OCCLUSION_MAP\noutFragColor.rgb=vec3(mix(1.0,ao,_OcclusionStrength));\n#else\noutFragColor.rgb=vec3(1.0);\n#endif\n#endif\n#ifdef DEBUG_EMISSIVE\n#ifdef HAS_EMISSIVE\nemissive=_EmissiveFactor.rgb;\n#endif\n#ifdef HAS_EMISSIVE_MAP\nemissive=SRGBtoLINEAR(texture2D(_EmissiveSampler,getEmissiveUV())).rgb*_EmissiveFactor.rgb;\n#endif\noutFragColor.rgb=LINEARtoSRGB(emissive);\n#endif\n#ifdef DEBUG_F0\noutFragColor.rgb=vec3(f0);\n#endif\n#ifdef DEBUG_ALPHA\noutFragColor.rgb=vec3(baseColor.a);\n#endif\noutFragColor.a=1.0;\n#endif\n}";
|
|
3786
3892
|
|
|
@@ -3839,6 +3945,18 @@ var StandardShaderSource;
|
|
|
3839
3945
|
* @param isWebGL2 - 是否 WebGL2
|
|
3840
3946
|
* @returns 最终代码
|
|
3841
3947
|
*/ StandardShaderSource.build = build;
|
|
3948
|
+
function getSourceCode(source, isWebGL2) {
|
|
3949
|
+
var match;
|
|
3950
|
+
while((match = /#include <(.+)>/gm.exec(source)) !== null){
|
|
3951
|
+
source = source.replace(match[0], glsl[match[1]]);
|
|
3952
|
+
}
|
|
3953
|
+
if (isWebGL2) {
|
|
3954
|
+
return "#version 300 es\n" + source;
|
|
3955
|
+
} else {
|
|
3956
|
+
return "#version 100\n" + source;
|
|
3957
|
+
}
|
|
3958
|
+
}
|
|
3959
|
+
StandardShaderSource.getSourceCode = getSourceCode;
|
|
3842
3960
|
})(StandardShaderSource || (StandardShaderSource = {}));
|
|
3843
3961
|
|
|
3844
3962
|
/**
|
|
@@ -3884,12 +4002,57 @@ var StandardShaderSource;
|
|
|
3884
4002
|
throw new Error("Invalid material type " + materialType + " for getFragmentShaderString!");
|
|
3885
4003
|
}
|
|
3886
4004
|
};
|
|
4005
|
+
StandardShader.genVertexShaderCode = function genVertexShaderCode(materialType, isWebGL2) {
|
|
4006
|
+
switch(materialType){
|
|
4007
|
+
case exports.PMaterialType.unlit:
|
|
4008
|
+
case exports.PMaterialType.pbr:
|
|
4009
|
+
case exports.PMaterialType.shadowBase:
|
|
4010
|
+
return StandardShaderSource.getSourceCode(primitiveVert, isWebGL2);
|
|
4011
|
+
case exports.PMaterialType.skyboxFilter:
|
|
4012
|
+
return StandardShaderSource.getSourceCode(skyboxVert, isWebGL2);
|
|
4013
|
+
default:
|
|
4014
|
+
throw new Error("Invalid material type " + materialType + " for genVertexShaderCode!");
|
|
4015
|
+
}
|
|
4016
|
+
};
|
|
4017
|
+
/**
|
|
4018
|
+
* 获取片段着色器代码
|
|
4019
|
+
* @param materialType - 材质类型
|
|
4020
|
+
* @returns
|
|
4021
|
+
*/ StandardShader.genFragmentShaderCode = function genFragmentShaderCode(materialType, isWebGL2) {
|
|
4022
|
+
switch(materialType){
|
|
4023
|
+
case exports.PMaterialType.unlit:
|
|
4024
|
+
case exports.PMaterialType.pbr:
|
|
4025
|
+
return StandardShaderSource.getSourceCode(metallicRoughnessFrag, isWebGL2);
|
|
4026
|
+
case exports.PMaterialType.shadowBase:
|
|
4027
|
+
return StandardShaderSource.getSourceCode(shadowPassFrag, isWebGL2);
|
|
4028
|
+
case exports.PMaterialType.skyboxFilter:
|
|
4029
|
+
return StandardShaderSource.getSourceCode(skyboxFrag, isWebGL2);
|
|
4030
|
+
default:
|
|
4031
|
+
throw new Error("Invalid material type " + materialType + " for genFragmentShaderCode!");
|
|
4032
|
+
}
|
|
4033
|
+
};
|
|
3887
4034
|
return StandardShader;
|
|
3888
4035
|
}();
|
|
3889
4036
|
/**
|
|
3890
4037
|
* WebGL 环境
|
|
3891
4038
|
*/ StandardShader.environment = "webgl1";
|
|
3892
4039
|
|
|
4040
|
+
function fetchPBRShaderCode(isWebGL2) {
|
|
4041
|
+
var vertexShaderCode = StandardShader.genVertexShaderCode(exports.PMaterialType.pbr, isWebGL2);
|
|
4042
|
+
var fragmentShaderCode = StandardShader.genFragmentShaderCode(exports.PMaterialType.pbr, isWebGL2);
|
|
4043
|
+
return {
|
|
4044
|
+
vertexShaderCode: vertexShaderCode,
|
|
4045
|
+
fragmentShaderCode: fragmentShaderCode
|
|
4046
|
+
};
|
|
4047
|
+
}
|
|
4048
|
+
function fetchUnlitShaderCode(isWebGL2) {
|
|
4049
|
+
var vertexShaderCode = StandardShader.genVertexShaderCode(exports.PMaterialType.unlit, isWebGL2);
|
|
4050
|
+
var fragmentShaderCode = StandardShader.genFragmentShaderCode(exports.PMaterialType.unlit, isWebGL2);
|
|
4051
|
+
return {
|
|
4052
|
+
vertexShaderCode: vertexShaderCode,
|
|
4053
|
+
fragmentShaderCode: fragmentShaderCode
|
|
4054
|
+
};
|
|
4055
|
+
}
|
|
3893
4056
|
/**
|
|
3894
4057
|
* 获取 PBR 材质着色器代码
|
|
3895
4058
|
* @param context - 着色器上下文
|
|
@@ -4345,7 +4508,7 @@ exports.ModelMeshComponent = /*#__PURE__*/ function(RendererComponent) {
|
|
|
4345
4508
|
return ModelMeshComponent;
|
|
4346
4509
|
}(effects.RendererComponent);
|
|
4347
4510
|
exports.ModelMeshComponent = __decorate([
|
|
4348
|
-
effects.effectsClass(effects.DataType.MeshComponent)
|
|
4511
|
+
effects.effectsClass(effects.spec.DataType.MeshComponent)
|
|
4349
4512
|
], exports.ModelMeshComponent);
|
|
4350
4513
|
exports.ModelSkyboxComponent = /*#__PURE__*/ function(RendererComponent) {
|
|
4351
4514
|
_inherits(ModelSkyboxComponent, RendererComponent);
|
|
@@ -4419,7 +4582,7 @@ exports.ModelSkyboxComponent = /*#__PURE__*/ function(RendererComponent) {
|
|
|
4419
4582
|
return ModelSkyboxComponent;
|
|
4420
4583
|
}(effects.RendererComponent);
|
|
4421
4584
|
exports.ModelSkyboxComponent = __decorate([
|
|
4422
|
-
effects.effectsClass(effects.DataType.SkyboxComponent)
|
|
4585
|
+
effects.effectsClass(effects.spec.DataType.SkyboxComponent)
|
|
4423
4586
|
], exports.ModelSkyboxComponent);
|
|
4424
4587
|
exports.ModelLightComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
4425
4588
|
_inherits(ModelLightComponent, ItemBehaviour);
|
|
@@ -4484,7 +4647,7 @@ exports.ModelLightComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
4484
4647
|
return ModelLightComponent;
|
|
4485
4648
|
}(effects.ItemBehaviour);
|
|
4486
4649
|
exports.ModelLightComponent = __decorate([
|
|
4487
|
-
effects.effectsClass(effects.DataType.LightComponent)
|
|
4650
|
+
effects.effectsClass(effects.spec.DataType.LightComponent)
|
|
4488
4651
|
], exports.ModelLightComponent);
|
|
4489
4652
|
exports.ModelCameraComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
4490
4653
|
_inherits(ModelCameraComponent, ItemBehaviour);
|
|
@@ -4572,9 +4735,21 @@ exports.ModelCameraComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
4572
4735
|
return ModelCameraComponent;
|
|
4573
4736
|
}(effects.ItemBehaviour);
|
|
4574
4737
|
exports.ModelCameraComponent = __decorate([
|
|
4575
|
-
effects.effectsClass(effects.DataType.CameraComponent)
|
|
4738
|
+
effects.effectsClass(effects.spec.DataType.CameraComponent)
|
|
4576
4739
|
], exports.ModelCameraComponent);
|
|
4577
4740
|
|
|
4741
|
+
// 射线与带旋转的包围盒求交
|
|
4742
|
+
// function transformDirection (m: Matrix4, direction: Vector3) {
|
|
4743
|
+
// const x = direction.x;
|
|
4744
|
+
// const y = direction.y;
|
|
4745
|
+
// const z = direction.z;
|
|
4746
|
+
// const me = m.elements;
|
|
4747
|
+
// const result = new Vector3();
|
|
4748
|
+
// result.x = me[0] * x + me[4] * y + me[8] * z;
|
|
4749
|
+
// result.y = me[1] * x + me[5] * y + me[9] * z;
|
|
4750
|
+
// result.z = me[2] * x + me[6] * y + me[10] * z;
|
|
4751
|
+
// return result.normalize();
|
|
4752
|
+
// }
|
|
4578
4753
|
/**
|
|
4579
4754
|
* 带旋转的射线与包围盒求交
|
|
4580
4755
|
* @param ray - 射线
|
|
@@ -5498,14 +5673,13 @@ var normal = new Vector3();
|
|
|
5498
5673
|
if (camera.perspective === undefined) {
|
|
5499
5674
|
return;
|
|
5500
5675
|
}
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
});
|
|
5676
|
+
// const p = camera.perspective;
|
|
5677
|
+
// const options: ModelCameraOptions = {
|
|
5678
|
+
// near: p.znear,
|
|
5679
|
+
// far: p.zfar ?? 1000,
|
|
5680
|
+
// fov: p.yfov,
|
|
5681
|
+
// clipMode: 0,
|
|
5682
|
+
// };
|
|
5509
5683
|
};
|
|
5510
5684
|
/**
|
|
5511
5685
|
* 转成播放器中 [0, 255] 区间的颜色值
|
|
@@ -5686,7 +5860,7 @@ var normal = new Vector3();
|
|
|
5686
5860
|
var textures = scene.textureOptions;
|
|
5687
5861
|
jsonScene.compositions.forEach(function(comp) {
|
|
5688
5862
|
comp.items.forEach(function(item) {
|
|
5689
|
-
if (item.type ===
|
|
5863
|
+
if (item.type === effects.spec.ItemType.mesh) {
|
|
5690
5864
|
var meshItem = item;
|
|
5691
5865
|
var primitives = meshItem.content.options.primitives;
|
|
5692
5866
|
primitives.forEach(function(prim) {
|
|
@@ -5713,7 +5887,7 @@ var normal = new Vector3();
|
|
|
5713
5887
|
}
|
|
5714
5888
|
}
|
|
5715
5889
|
});
|
|
5716
|
-
} else if (item.type ===
|
|
5890
|
+
} else if (item.type === effects.spec.ItemType.skybox) {
|
|
5717
5891
|
loadSkybox = true;
|
|
5718
5892
|
//
|
|
5719
5893
|
var skyboxItem = item;
|
|
@@ -5728,7 +5902,7 @@ var normal = new Vector3();
|
|
|
5728
5902
|
} else {
|
|
5729
5903
|
jsonScene.compositions.forEach(function(comp) {
|
|
5730
5904
|
comp.items.forEach(function(item) {
|
|
5731
|
-
if (item.type ===
|
|
5905
|
+
if (item.type === effects.spec.ItemType.skybox) {
|
|
5732
5906
|
loadSkybox = true;
|
|
5733
5907
|
}
|
|
5734
5908
|
});
|
|
@@ -5738,7 +5912,7 @@ var normal = new Vector3();
|
|
|
5738
5912
|
jsonScene.compositions.forEach(function(comp) {
|
|
5739
5913
|
var lightCount = 0;
|
|
5740
5914
|
comp.items.forEach(function(item) {
|
|
5741
|
-
if (item.type ===
|
|
5915
|
+
if (item.type === effects.spec.ItemType.light || item.type === effects.spec.ItemType.skybox) {
|
|
5742
5916
|
++lightCount;
|
|
5743
5917
|
}
|
|
5744
5918
|
});
|
|
@@ -5865,7 +6039,7 @@ var normal = new Vector3();
|
|
|
5865
6039
|
sceneComp.items.forEach(function(data) {
|
|
5866
6040
|
var itemId = data.id;
|
|
5867
6041
|
var item = composition.getEngine().jsonSceneData[itemId];
|
|
5868
|
-
if (item.type ===
|
|
6042
|
+
if (item.type === effects.spec.ItemType.mesh) {
|
|
5869
6043
|
var meshItem = item;
|
|
5870
6044
|
var skin = meshItem.content.options.skin;
|
|
5871
6045
|
var primitives = meshItem.content.options.primitives;
|
|
@@ -5900,7 +6074,7 @@ var normal = new Vector3();
|
|
|
5900
6074
|
console.error("setupItem3DOptions: Invalid inverseBindMatrices type, " + inverseBindMatrices);
|
|
5901
6075
|
}
|
|
5902
6076
|
}
|
|
5903
|
-
} else if (item.type ===
|
|
6077
|
+
} else if (item.type === effects.spec.ItemType.tree) {
|
|
5904
6078
|
var jsonItem = item;
|
|
5905
6079
|
var studioItem = item;
|
|
5906
6080
|
var jsonAnimations = jsonItem.content.options.tree.animations;
|
|
@@ -5925,7 +6099,7 @@ var normal = new Vector3();
|
|
|
5925
6099
|
});
|
|
5926
6100
|
});
|
|
5927
6101
|
}
|
|
5928
|
-
} else if (item.type ===
|
|
6102
|
+
} else if (item.type === effects.spec.ItemType.skybox) {
|
|
5929
6103
|
var skybox = item;
|
|
5930
6104
|
var studioSkybox = item;
|
|
5931
6105
|
var options = skybox.content.options;
|
|
@@ -7568,6 +7742,24 @@ var toHalf = function() {
|
|
|
7568
7742
|
}
|
|
7569
7743
|
return featureList;
|
|
7570
7744
|
};
|
|
7745
|
+
_proto.getShaderMacros = function getShaderMacros() {
|
|
7746
|
+
var macroList = [];
|
|
7747
|
+
if (this.isOpaque()) {
|
|
7748
|
+
macroList.push({
|
|
7749
|
+
name: "ALPHAMODE_OPAQUE"
|
|
7750
|
+
});
|
|
7751
|
+
} else if (this.isMasked()) {
|
|
7752
|
+
macroList.push({
|
|
7753
|
+
name: "ALPHAMODE_MASK"
|
|
7754
|
+
});
|
|
7755
|
+
}
|
|
7756
|
+
if (this.faceSideMode === exports.PFaceSideMode.both) {
|
|
7757
|
+
macroList.push({
|
|
7758
|
+
name: "DOUBLE_SIDED"
|
|
7759
|
+
});
|
|
7760
|
+
}
|
|
7761
|
+
return macroList;
|
|
7762
|
+
};
|
|
7571
7763
|
/**
|
|
7572
7764
|
* 根据材质状态,更新 GE 材质状态
|
|
7573
7765
|
* @param material - GE 材质
|
|
@@ -7619,6 +7811,30 @@ var toHalf = function() {
|
|
|
7619
7811
|
}
|
|
7620
7812
|
return finalFeatureList;
|
|
7621
7813
|
};
|
|
7814
|
+
_proto.getMacroList = function getMacroList(inMacroList) {
|
|
7815
|
+
var finalMacroList = this.getShaderMacros();
|
|
7816
|
+
if (inMacroList !== undefined) {
|
|
7817
|
+
var _finalMacroList;
|
|
7818
|
+
(_finalMacroList = finalMacroList).push.apply(_finalMacroList, [].concat(inMacroList));
|
|
7819
|
+
}
|
|
7820
|
+
var isWebGL2 = PGlobalState.getInstance().isWebGL2;
|
|
7821
|
+
if (isWebGL2) {
|
|
7822
|
+
finalMacroList.push({
|
|
7823
|
+
name: "WEBGL2"
|
|
7824
|
+
});
|
|
7825
|
+
}
|
|
7826
|
+
// 目前只有 PRB 和 Unlit 是需要 EDITOR_TRANSFORM,适配编辑器的视口 Offset
|
|
7827
|
+
// 阴影 Pass 的渲染是不需要,所以这里特殊处理下
|
|
7828
|
+
if (this.materialType !== exports.PMaterialType.shadowBase) {
|
|
7829
|
+
var isEditorEvn = PGlobalState.getInstance().isEditorEnv;
|
|
7830
|
+
if (isEditorEvn) {
|
|
7831
|
+
finalMacroList.push({
|
|
7832
|
+
name: "EDITOR_TRANSFORM"
|
|
7833
|
+
});
|
|
7834
|
+
}
|
|
7835
|
+
}
|
|
7836
|
+
return finalMacroList;
|
|
7837
|
+
};
|
|
7622
7838
|
/**
|
|
7623
7839
|
* 获取混合模式,根据 GE 混合模式
|
|
7624
7840
|
* @param mode - GE 混合模式
|
|
@@ -7768,10 +7984,7 @@ var toHalf = function() {
|
|
|
7768
7984
|
*/ var PMaterialUnlit = /*#__PURE__*/ function(PMaterialBase) {
|
|
7769
7985
|
_inherits(PMaterialUnlit, PMaterialBase);
|
|
7770
7986
|
function PMaterialUnlit() {
|
|
7771
|
-
|
|
7772
|
-
_this = PMaterialBase.apply(this, arguments) || this;
|
|
7773
|
-
_this.baseColorFactor = new Vector4(1, 1, 1, 1);
|
|
7774
|
-
return _this;
|
|
7987
|
+
return PMaterialBase.apply(this, arguments);
|
|
7775
7988
|
}
|
|
7776
7989
|
var _proto = PMaterialUnlit.prototype;
|
|
7777
7990
|
/**
|
|
@@ -7785,7 +7998,6 @@ var toHalf = function() {
|
|
|
7785
7998
|
if (options.baseColorTexture) {
|
|
7786
7999
|
this.baseColorTexture = options.baseColorTexture;
|
|
7787
8000
|
}
|
|
7788
|
-
this.setBaseColorFactor(PluginHelper.toPluginColor4(options.baseColorFactor));
|
|
7789
8001
|
/**
|
|
7790
8002
|
* 默认需要写入深度值,只有传入false才是false
|
|
7791
8003
|
*/ if (options.depthMask === false) {
|
|
@@ -7798,6 +8010,25 @@ var toHalf = function() {
|
|
|
7798
8010
|
this.alphaCutOff = (_options_alphaCutOff = options.alphaCutOff) != null ? _options_alphaCutOff : 0;
|
|
7799
8011
|
this.faceSideMode = this.getFaceSideMode(options.side);
|
|
7800
8012
|
};
|
|
8013
|
+
_proto.createFromMaterial = function createFromMaterial(mat) {
|
|
8014
|
+
this.fromMaterial = true;
|
|
8015
|
+
this.material = mat;
|
|
8016
|
+
this.name = mat.name;
|
|
8017
|
+
this.type = exports.PObjectType.material;
|
|
8018
|
+
this.materialType = exports.PMaterialType.unlit;
|
|
8019
|
+
var _mat_getTexture;
|
|
8020
|
+
//
|
|
8021
|
+
this.baseColorTexture = (_mat_getTexture = mat.getTexture("_BaseColorSampler")) != null ? _mat_getTexture : undefined;
|
|
8022
|
+
this.depthMask = true;
|
|
8023
|
+
var _mat_getInt;
|
|
8024
|
+
var blending = (_mat_getInt = mat.getInt("blending")) != null ? _mat_getInt : effects.spec.MaterialBlending.opaque;
|
|
8025
|
+
this.blendMode = this.getBlendMode(blending);
|
|
8026
|
+
var _mat_getFloat;
|
|
8027
|
+
this.alphaCutOff = (_mat_getFloat = mat.getFloat("_AlphaCutoff")) != null ? _mat_getFloat : 0;
|
|
8028
|
+
var _mat_getInt1;
|
|
8029
|
+
var side = (_mat_getInt1 = mat.getInt("side")) != null ? _mat_getInt1 : effects.spec.SideMode.FRONT;
|
|
8030
|
+
this.faceSideMode = this.getFaceSideMode(side);
|
|
8031
|
+
};
|
|
7801
8032
|
/**
|
|
7802
8033
|
* 销毁材质
|
|
7803
8034
|
*/ _proto.dispose = function dispose() {
|
|
@@ -7816,6 +8047,21 @@ var toHalf = function() {
|
|
|
7816
8047
|
featureList.push("MATERIAL_UNLIT 1");
|
|
7817
8048
|
return featureList;
|
|
7818
8049
|
};
|
|
8050
|
+
_proto.getShaderMacros = function getShaderMacros() {
|
|
8051
|
+
var macroList = PMaterialBase.prototype.getShaderMacros.call(this);
|
|
8052
|
+
macroList.push({
|
|
8053
|
+
name: "MATERIAL_METALLICROUGHNESS"
|
|
8054
|
+
});
|
|
8055
|
+
if (this.hasBaseColorTexture()) {
|
|
8056
|
+
macroList.push({
|
|
8057
|
+
name: "HAS_BASE_COLOR_MAP"
|
|
8058
|
+
});
|
|
8059
|
+
}
|
|
8060
|
+
macroList.push({
|
|
8061
|
+
name: "MATERIAL_UNLIT"
|
|
8062
|
+
});
|
|
8063
|
+
return macroList;
|
|
8064
|
+
};
|
|
7819
8065
|
/**
|
|
7820
8066
|
* 更新对应的 GE 材质中着色器的 Uniform 数据
|
|
7821
8067
|
* @param material - GE 材质
|
|
@@ -7823,14 +8069,12 @@ var toHalf = function() {
|
|
|
7823
8069
|
PMaterialBase.prototype.updateUniforms.call(this, material);
|
|
7824
8070
|
//
|
|
7825
8071
|
var uvTransform = new Matrix3().identity();
|
|
7826
|
-
material.setVector4("_BaseColorFactor", this.baseColorFactor);
|
|
7827
8072
|
if (this.hasBaseColorTexture()) {
|
|
7828
|
-
material.setTexture("_BaseColorSampler", this.getBaseColorTexture());
|
|
7829
8073
|
material.setInt("_BaseColorUVSet", 0);
|
|
7830
8074
|
material.setMatrix3("_BaseColorUVTransform", uvTransform);
|
|
7831
8075
|
}
|
|
7832
|
-
material.setFloat("_MetallicFactor", 0
|
|
7833
|
-
material.setFloat("_RoughnessFactor", 0
|
|
8076
|
+
material.setFloat("_MetallicFactor", 0);
|
|
8077
|
+
material.setFloat("_RoughnessFactor", 0);
|
|
7834
8078
|
material.setFloat("_Exposure", 1.0);
|
|
7835
8079
|
};
|
|
7836
8080
|
/**
|
|
@@ -7851,22 +8095,6 @@ var toHalf = function() {
|
|
|
7851
8095
|
*/ _proto.setBaseColorTexture = function setBaseColorTexture(val) {
|
|
7852
8096
|
this.baseColorTexture = val;
|
|
7853
8097
|
};
|
|
7854
|
-
/**
|
|
7855
|
-
* 获取基础颜色值
|
|
7856
|
-
* @returns
|
|
7857
|
-
*/ _proto.getBaseColorFactor = function getBaseColorFactor() {
|
|
7858
|
-
return this.baseColorFactor;
|
|
7859
|
-
};
|
|
7860
|
-
/**
|
|
7861
|
-
* 设置基础颜色值
|
|
7862
|
-
* @param val - 颜色值
|
|
7863
|
-
*/ _proto.setBaseColorFactor = function setBaseColorFactor(val) {
|
|
7864
|
-
if (_instanceof1(val, Vector4)) {
|
|
7865
|
-
this.baseColorFactor.set(val.x, val.y, val.z, val.w);
|
|
7866
|
-
} else {
|
|
7867
|
-
this.baseColorFactor.set(val[0], val[1], val[2], val[3]);
|
|
7868
|
-
}
|
|
7869
|
-
};
|
|
7870
8098
|
return PMaterialUnlit;
|
|
7871
8099
|
}(PMaterialBase);
|
|
7872
8100
|
/**
|
|
@@ -7966,8 +8194,6 @@ var toHalf = function() {
|
|
|
7966
8194
|
this.depthMask = true;
|
|
7967
8195
|
}
|
|
7968
8196
|
this.blendMode = this.getBlendMode(options.blending);
|
|
7969
|
-
var _options_alphaCutOff;
|
|
7970
|
-
this.alphaCutOff = (_options_alphaCutOff = options.alphaCutOff) != null ? _options_alphaCutOff : 0;
|
|
7971
8197
|
this.faceSideMode = this.getFaceSideMode(options.side);
|
|
7972
8198
|
};
|
|
7973
8199
|
_proto.createFromMaterial = function createFromMaterial(mat) {
|
|
@@ -7975,7 +8201,7 @@ var toHalf = function() {
|
|
|
7975
8201
|
this.material = mat;
|
|
7976
8202
|
this.name = mat.name;
|
|
7977
8203
|
this.type = exports.PObjectType.material;
|
|
7978
|
-
this.materialType =
|
|
8204
|
+
this.materialType = exports.PMaterialType.pbr;
|
|
7979
8205
|
var _mat_getTexture;
|
|
7980
8206
|
//
|
|
7981
8207
|
this.baseColorTexture = (_mat_getTexture = mat.getTexture("_BaseColorSampler")) != null ? _mat_getTexture : undefined;
|
|
@@ -8068,6 +8294,72 @@ var toHalf = function() {
|
|
|
8068
8294
|
}
|
|
8069
8295
|
return featureList;
|
|
8070
8296
|
};
|
|
8297
|
+
_proto.getShaderMacros = function getShaderMacros() {
|
|
8298
|
+
var macroList = PMaterialBase.prototype.getShaderMacros.call(this);
|
|
8299
|
+
macroList.push({
|
|
8300
|
+
name: "MATERIAL_METALLICROUGHNESS"
|
|
8301
|
+
});
|
|
8302
|
+
if (this.hasBaseColorTexture()) {
|
|
8303
|
+
macroList.push({
|
|
8304
|
+
name: "HAS_BASE_COLOR_MAP"
|
|
8305
|
+
});
|
|
8306
|
+
if (this.baseColorTextureTrans !== undefined) {
|
|
8307
|
+
macroList.push({
|
|
8308
|
+
name: "HAS_BASECOLOR_UV_TRANSFORM"
|
|
8309
|
+
});
|
|
8310
|
+
}
|
|
8311
|
+
}
|
|
8312
|
+
if (this.hasMetallicRoughnessTexture()) {
|
|
8313
|
+
macroList.push({
|
|
8314
|
+
name: "HAS_METALLIC_ROUGHNESS_MAP"
|
|
8315
|
+
});
|
|
8316
|
+
if (this.metallicRoughnessTextureTrans !== undefined) {
|
|
8317
|
+
macroList.push({
|
|
8318
|
+
name: "HAS_METALLICROUGHNESS_UV_TRANSFORM"
|
|
8319
|
+
});
|
|
8320
|
+
}
|
|
8321
|
+
}
|
|
8322
|
+
if (this.useSpecularAA) {
|
|
8323
|
+
macroList.push({
|
|
8324
|
+
name: "USE_SPECULAR_AA"
|
|
8325
|
+
});
|
|
8326
|
+
}
|
|
8327
|
+
if (this.hasNormalTexture()) {
|
|
8328
|
+
macroList.push({
|
|
8329
|
+
name: "HAS_NORMAL_MAP"
|
|
8330
|
+
});
|
|
8331
|
+
if (this.normalTextureTrans !== undefined) {
|
|
8332
|
+
macroList.push({
|
|
8333
|
+
name: "HAS_NORMAL_UV_TRANSFORM"
|
|
8334
|
+
});
|
|
8335
|
+
}
|
|
8336
|
+
}
|
|
8337
|
+
if (this.hasOcclusionTexture()) {
|
|
8338
|
+
macroList.push({
|
|
8339
|
+
name: "HAS_OCCLUSION_MAP"
|
|
8340
|
+
});
|
|
8341
|
+
if (this.occlusionTextureTrans !== undefined) {
|
|
8342
|
+
macroList.push({
|
|
8343
|
+
name: "HAS_OCCLUSION_UV_TRANSFORM"
|
|
8344
|
+
});
|
|
8345
|
+
}
|
|
8346
|
+
}
|
|
8347
|
+
if (this.hasEmissiveTexture()) {
|
|
8348
|
+
macroList.push({
|
|
8349
|
+
name: "HAS_EMISSIVE_MAP"
|
|
8350
|
+
});
|
|
8351
|
+
if (this.emissiveTextureTrans !== undefined) {
|
|
8352
|
+
macroList.push({
|
|
8353
|
+
name: "HAS_EMISSIVE_UV_TRANSFORM"
|
|
8354
|
+
});
|
|
8355
|
+
}
|
|
8356
|
+
} else if (this.hasEmissiveFactor()) {
|
|
8357
|
+
macroList.push({
|
|
8358
|
+
name: "HAS_EMISSIVE"
|
|
8359
|
+
});
|
|
8360
|
+
}
|
|
8361
|
+
return macroList;
|
|
8362
|
+
};
|
|
8071
8363
|
/**
|
|
8072
8364
|
* 更新关联的 GE 材质中着色器的 Uniform 数据
|
|
8073
8365
|
* @param material - GE 材质
|
|
@@ -8340,18 +8632,24 @@ var toHalf = function() {
|
|
|
8340
8632
|
* @returns 材质对象
|
|
8341
8633
|
*/ function createPluginMaterial(options) {
|
|
8342
8634
|
if (_instanceof1(options, effects.Material)) {
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8635
|
+
if (options.shader.getInstanceId() === PBRShaderGUID) {
|
|
8636
|
+
var materialPBR = new PMaterialPBR();
|
|
8637
|
+
materialPBR.createFromMaterial(options);
|
|
8638
|
+
return materialPBR;
|
|
8639
|
+
} else {
|
|
8640
|
+
var materialUnlit = new PMaterialUnlit();
|
|
8641
|
+
materialUnlit.createFromMaterial(options);
|
|
8642
|
+
return materialUnlit;
|
|
8643
|
+
}
|
|
8346
8644
|
} else {
|
|
8347
8645
|
if (options.type === effects.spec.MaterialType.pbr) {
|
|
8348
8646
|
var materialPBR1 = new PMaterialPBR();
|
|
8349
8647
|
materialPBR1.create(options);
|
|
8350
8648
|
return materialPBR1;
|
|
8351
8649
|
} else {
|
|
8352
|
-
var
|
|
8353
|
-
|
|
8354
|
-
return
|
|
8650
|
+
var materialUnlit1 = new PMaterialUnlit();
|
|
8651
|
+
materialUnlit1.create(options);
|
|
8652
|
+
return materialUnlit1;
|
|
8355
8653
|
}
|
|
8356
8654
|
}
|
|
8357
8655
|
}
|
|
@@ -8810,12 +9108,12 @@ exports.PSkyboxType = void 0;
|
|
|
8810
9108
|
*/ PSkyboxCreator.createSpecularCubeMap = function createSpecularCubeMap(engine, params) {
|
|
8811
9109
|
return _async_to_generator(function() {
|
|
8812
9110
|
return __generator(this, function(_state) {
|
|
8813
|
-
|
|
8814
|
-
|
|
8815
|
-
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
}
|
|
9111
|
+
// const configOptions: TextureConfigOptions = {
|
|
9112
|
+
// wrapS: glContext.CLAMP_TO_EDGE,
|
|
9113
|
+
// wrapT: glContext.CLAMP_TO_EDGE,
|
|
9114
|
+
// magFilter: glContext.LINEAR,
|
|
9115
|
+
// minFilter: glContext.LINEAR_MIPMAP_LINEAR,
|
|
9116
|
+
// };
|
|
8819
9117
|
if (params.type === "url") {
|
|
8820
9118
|
return [
|
|
8821
9119
|
2,
|
|
@@ -8881,7 +9179,9 @@ exports.PSkyboxType = void 0;
|
|
|
8881
9179
|
var dataArray = [];
|
|
8882
9180
|
switch(skyboxType){
|
|
8883
9181
|
case 0:
|
|
8884
|
-
|
|
9182
|
+
{
|
|
9183
|
+
return undefined;
|
|
9184
|
+
}
|
|
8885
9185
|
case 1:
|
|
8886
9186
|
dataArray = [
|
|
8887
9187
|
0.2665672302246094,
|
|
@@ -9371,7 +9671,7 @@ exports.PSkyboxType = void 0;
|
|
|
9371
9671
|
* @param options - 加载选项
|
|
9372
9672
|
*/ ModelPlugin.prepareResource = function prepareResource(scene, options) {
|
|
9373
9673
|
return _async_to_generator(function() {
|
|
9374
|
-
var
|
|
9674
|
+
var keyList, pluginData, _options_env, runtimeEnv;
|
|
9375
9675
|
return __generator(this, function(_state) {
|
|
9376
9676
|
switch(_state.label){
|
|
9377
9677
|
case 0:
|
|
@@ -9393,8 +9693,8 @@ exports.PSkyboxType = void 0;
|
|
|
9393
9693
|
//
|
|
9394
9694
|
runtimeEnv = (_options_env = options.env) != null ? _options_env : "";
|
|
9395
9695
|
scene.storage["runtimeEnv"] = runtimeEnv;
|
|
9396
|
-
|
|
9397
|
-
|
|
9696
|
+
// const compatibleMode = options.pluginData?.['compatibleMode'] ?? 'gltf';
|
|
9697
|
+
// const autoAdjustScene = options.pluginData?.['autoAdjustScene'] ?? false;
|
|
9398
9698
|
//
|
|
9399
9699
|
//PluginHelper.preprocessScene(scene, runtimeEnv, compatibleMode, autoAdjustScene);
|
|
9400
9700
|
return [
|
|
@@ -9412,24 +9712,28 @@ exports.PSkyboxType = void 0;
|
|
|
9412
9712
|
};
|
|
9413
9713
|
ModelPlugin.precompile = function precompile(compositions, renderer) {
|
|
9414
9714
|
var isWebGL2 = renderer.engine.gpuCapability.level === 2;
|
|
9415
|
-
var
|
|
9715
|
+
var pbrShaderCode = fetchPBRShaderCode(isWebGL2);
|
|
9716
|
+
var unlitShaderCode = fetchUnlitShaderCode(isWebGL2);
|
|
9717
|
+
var pbrShaderData = {
|
|
9718
|
+
id: PBRShaderGUID,
|
|
9719
|
+
name: "PBR Shader",
|
|
9720
|
+
dataType: effects.spec.DataType.Shader,
|
|
9721
|
+
fragment: pbrShaderCode.fragmentShaderCode,
|
|
9722
|
+
vertex: pbrShaderCode.vertexShaderCode,
|
|
9416
9723
|
// @ts-expect-error
|
|
9417
|
-
|
|
9418
|
-
materialType: exports.PMaterialType.pbr
|
|
9419
|
-
},
|
|
9420
|
-
isWebGL2: isWebGL2,
|
|
9421
|
-
featureList: []
|
|
9724
|
+
glslVersion: isWebGL2 ? effects.GLSLVersion.GLSL3 : effects.GLSLVersion.GLSL1
|
|
9422
9725
|
};
|
|
9423
|
-
var
|
|
9424
|
-
|
|
9425
|
-
|
|
9426
|
-
|
|
9427
|
-
|
|
9726
|
+
var unlitShaderData = {
|
|
9727
|
+
id: UnlitShaderGUID,
|
|
9728
|
+
name: "Unlit Shader",
|
|
9729
|
+
dataType: effects.spec.DataType.Shader,
|
|
9730
|
+
fragment: unlitShaderCode.fragmentShaderCode,
|
|
9731
|
+
vertex: unlitShaderCode.vertexShaderCode,
|
|
9428
9732
|
// @ts-expect-error
|
|
9429
|
-
fragment: pbrShader.fragmentShaderCode,
|
|
9430
|
-
vertex: pbrShader.vertexShaderCode,
|
|
9431
9733
|
glslVersion: isWebGL2 ? effects.GLSLVersion.GLSL3 : effects.GLSLVersion.GLSL1
|
|
9432
|
-
}
|
|
9734
|
+
};
|
|
9735
|
+
renderer.engine.addEffectsObjectData(pbrShaderData);
|
|
9736
|
+
renderer.engine.addEffectsObjectData(unlitShaderData);
|
|
9433
9737
|
return Promise.resolve();
|
|
9434
9738
|
};
|
|
9435
9739
|
return ModelPlugin;
|
|
@@ -9589,7 +9893,7 @@ exports.ModelPluginComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
9589
9893
|
return ModelPluginComponent;
|
|
9590
9894
|
}(effects.ItemBehaviour);
|
|
9591
9895
|
exports.ModelPluginComponent = __decorate([
|
|
9592
|
-
effects.effectsClass(effects.DataType.ModelPluginComponent)
|
|
9896
|
+
effects.effectsClass(effects.spec.DataType.ModelPluginComponent)
|
|
9593
9897
|
], exports.ModelPluginComponent);
|
|
9594
9898
|
/**
|
|
9595
9899
|
* 获取场景管理器,从合成中查找
|
|
@@ -9785,7 +10089,7 @@ exports.ModelTreeComponent = /*#__PURE__*/ function(ItemBehaviour) {
|
|
|
9785
10089
|
return ModelTreeComponent;
|
|
9786
10090
|
}(effects.ItemBehaviour);
|
|
9787
10091
|
exports.ModelTreeComponent = __decorate([
|
|
9788
|
-
effects.effectsClass(effects.DataType.TreeComponent)
|
|
10092
|
+
effects.effectsClass(effects.spec.DataType.TreeComponent)
|
|
9789
10093
|
], exports.ModelTreeComponent);
|
|
9790
10094
|
|
|
9791
10095
|
/**
|
|
@@ -11705,7 +12009,7 @@ var GLTFHelper = /*#__PURE__*/ function() {
|
|
|
11705
12009
|
|
|
11706
12010
|
effects.registerPlugin("tree", ModelTreePlugin, effects.VFXItem, true);
|
|
11707
12011
|
effects.registerPlugin("model", ModelPlugin, effects.VFXItem);
|
|
11708
|
-
var version = "2.0.0-alpha.
|
|
12012
|
+
var version = "2.0.0-alpha.8";
|
|
11709
12013
|
effects.logger.info("plugin model version: " + version);
|
|
11710
12014
|
|
|
11711
12015
|
exports.BoxMesh = BoxMesh;
|
|
@@ -11729,6 +12033,7 @@ exports.PAnimTexture = PAnimTexture;
|
|
|
11729
12033
|
exports.PAnimTrack = PAnimTrack;
|
|
11730
12034
|
exports.PAnimation = PAnimation;
|
|
11731
12035
|
exports.PAnimationManager = PAnimationManager;
|
|
12036
|
+
exports.PBRShaderGUID = PBRShaderGUID;
|
|
11732
12037
|
exports.PCamera = PCamera;
|
|
11733
12038
|
exports.PCameraManager = PCameraManager;
|
|
11734
12039
|
exports.PCoordinate = PCoordinate;
|
|
@@ -11757,6 +12062,7 @@ exports.RayIntersectsBoxWithRotation = RayIntersectsBoxWithRotation;
|
|
|
11757
12062
|
exports.RayTriangleTesting = RayTriangleTesting;
|
|
11758
12063
|
exports.ToggleItemBounding = ToggleItemBounding;
|
|
11759
12064
|
exports.TwoStatesSet = TwoStatesSet;
|
|
12065
|
+
exports.UnlitShaderGUID = UnlitShaderGUID;
|
|
11760
12066
|
exports.VFX_ITEM_TYPE_3D = VFX_ITEM_TYPE_3D;
|
|
11761
12067
|
exports.VertexAttribBuffer = VertexAttribBuffer;
|
|
11762
12068
|
exports.WebGLHelper = WebGLHelper;
|
|
@@ -11764,6 +12070,8 @@ exports.WebHelper = WebHelper;
|
|
|
11764
12070
|
exports.createAnimationSampler = createAnimationSampler;
|
|
11765
12071
|
exports.createInternalMaterial = createInternalMaterial;
|
|
11766
12072
|
exports.createPluginMaterial = createPluginMaterial;
|
|
12073
|
+
exports.fetchPBRShaderCode = fetchPBRShaderCode;
|
|
12074
|
+
exports.fetchUnlitShaderCode = fetchUnlitShaderCode;
|
|
11767
12075
|
exports.getDefaultEffectsGLTFLoader = getDefaultEffectsGLTFLoader;
|
|
11768
12076
|
exports.getDiffuseOnlyShaderCode = getDiffuseOnlyShaderCode;
|
|
11769
12077
|
exports.getGaussianBlurShaderCodeV1 = getGaussianBlurShaderCodeV1;
|