|
@@ -74,7 +74,7 @@
|
|
|
public REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;
|
|
|
public INVERTCUBICMAP = false;
|
|
|
public USESPHERICALFROMREFLECTIONMAP = false;
|
|
|
- public USESPHERICALINFRAGMENT = false;
|
|
|
+ public USESPHERICALINVERTEX = false;
|
|
|
public REFLECTIONMAP_OPPOSITEZ = false;
|
|
|
public LODINREFLECTIONALPHA = false;
|
|
|
public GAMMAREFLECTION = false;
|
|
@@ -632,7 +632,10 @@
|
|
|
if (reflectionTexture.sphericalPolynomial) {
|
|
|
defines.USESPHERICALFROMREFLECTIONMAP = true;
|
|
|
if (this._forceIrradianceInFragment || scene.getEngine().getCaps().maxVaryingVectors <= 8) {
|
|
|
- defines.USESPHERICALINFRAGMENT = true;
|
|
|
+ defines.USESPHERICALINVERTEX = false;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ defines.USESPHERICALINVERTEX = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -650,7 +653,7 @@
|
|
|
defines.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED = false;
|
|
|
defines.INVERTCUBICMAP = false;
|
|
|
defines.USESPHERICALFROMREFLECTIONMAP = false;
|
|
|
- defines.USESPHERICALINFRAGMENT = false;
|
|
|
+ defines.USESPHERICALINVERTEX = false;
|
|
|
defines.REFLECTIONMAP_OPPOSITEZ = false;
|
|
|
defines.LODINREFLECTIONALPHA = false;
|
|
|
defines.GAMMAREFLECTION = false;
|
|
@@ -831,58 +834,75 @@
|
|
|
|
|
|
// Fallbacks
|
|
|
var fallbacks = new EffectFallbacks();
|
|
|
- if (defines.ENVIRONMENTBRDF) {
|
|
|
- fallbacks.addFallback(0, "ENVIRONMENTBRDF");
|
|
|
+ var fallbackRank = 0;
|
|
|
+ if (defines.USESPHERICALINVERTEX) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "USESPHERICALINVERTEX");
|
|
|
}
|
|
|
|
|
|
- if (defines.REFLECTION) {
|
|
|
- fallbacks.addFallback(0, "REFLECTION");
|
|
|
+ if (defines.FOG) {
|
|
|
+ fallbacks.addFallback(fallbackRank, "FOG");
|
|
|
+ }
|
|
|
+ if (defines.POINTSIZE) {
|
|
|
+ fallbacks.addFallback(fallbackRank, "POINTSIZE");
|
|
|
+ }
|
|
|
+ if (defines.LOGARITHMICDEPTH) {
|
|
|
+ fallbacks.addFallback(fallbackRank, "LOGARITHMICDEPTH");
|
|
|
+ }
|
|
|
+ if (defines.PARALLAX) {
|
|
|
+ fallbacks.addFallback(fallbackRank, "PARALLAX");
|
|
|
+ }
|
|
|
+ if (defines.PARALLAXOCCLUSION) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "PARALLAXOCCLUSION");
|
|
|
}
|
|
|
|
|
|
- if (defines.REFRACTION) {
|
|
|
- fallbacks.addFallback(0, "REFRACTION");
|
|
|
+ if (defines.ENVIRONMENTBRDF) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "ENVIRONMENTBRDF");
|
|
|
}
|
|
|
|
|
|
- if (defines.REFLECTIVITY) {
|
|
|
- fallbacks.addFallback(0, "REFLECTIVITY");
|
|
|
+ if (defines.TANGENT) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "TANGENT");
|
|
|
}
|
|
|
|
|
|
if (defines.BUMP) {
|
|
|
- fallbacks.addFallback(0, "BUMP");
|
|
|
+ fallbacks.addFallback(fallbackRank++, "BUMP");
|
|
|
}
|
|
|
|
|
|
- if (defines.PARALLAX) {
|
|
|
- fallbacks.addFallback(1, "PARALLAX");
|
|
|
- }
|
|
|
+ fallbackRank = MaterialHelper.HandleFallbacksForShadows(defines, fallbacks, this._maxSimultaneousLights, fallbackRank++);
|
|
|
|
|
|
- if (defines.PARALLAXOCCLUSION) {
|
|
|
- fallbacks.addFallback(0, "PARALLAXOCCLUSION");
|
|
|
+ if (defines.SPECULARTERM) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "SPECULARTERM");
|
|
|
}
|
|
|
|
|
|
- if (defines.SPECULAROVERALPHA) {
|
|
|
- fallbacks.addFallback(0, "SPECULAROVERALPHA");
|
|
|
+ if (defines.USESPHERICALFROMREFLECTIONMAP) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "USESPHERICALFROMREFLECTIONMAP");
|
|
|
}
|
|
|
|
|
|
- if (defines.FOG) {
|
|
|
- fallbacks.addFallback(1, "FOG");
|
|
|
+ if (defines.LIGHTMAP) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "LIGHTMAP");
|
|
|
}
|
|
|
|
|
|
- if (defines.POINTSIZE) {
|
|
|
- fallbacks.addFallback(0, "POINTSIZE");
|
|
|
+ if (defines.NORMAL) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "NORMAL");
|
|
|
}
|
|
|
|
|
|
- if (defines.LOGARITHMICDEPTH) {
|
|
|
- fallbacks.addFallback(0, "LOGARITHMICDEPTH");
|
|
|
+ if (defines.AMBIENT) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "AMBIENT");
|
|
|
}
|
|
|
|
|
|
- MaterialHelper.HandleFallbacksForShadows(defines, fallbacks, this._maxSimultaneousLights);
|
|
|
+ if (defines.EMISSIVE) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "EMISSIVE");
|
|
|
+ }
|
|
|
|
|
|
- if (defines.SPECULARTERM) {
|
|
|
- fallbacks.addFallback(0, "SPECULARTERM");
|
|
|
+ if (defines.VERTEXCOLOR) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "VERTEXCOLOR");
|
|
|
}
|
|
|
|
|
|
if (defines.NUM_BONE_INFLUENCERS > 0) {
|
|
|
- fallbacks.addCPUSkinningFallback(0, mesh);
|
|
|
+ fallbacks.addCPUSkinningFallback(fallbackRank++, mesh);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (defines.MORPHTARGETS) {
|
|
|
+ fallbacks.addFallback(fallbackRank++, "MORPHTARGETS");
|
|
|
}
|
|
|
|
|
|
//Attributes
|