|
@@ -170,6 +170,7 @@ void main(void) {
|
|
// _____________________________ Reflectivity Info _______________________________
|
|
// _____________________________ Reflectivity Info _______________________________
|
|
float microSurface = vReflectivityColor.a;
|
|
float microSurface = vReflectivityColor.a;
|
|
vec3 surfaceReflectivityColor = vReflectivityColor.rgb;
|
|
vec3 surfaceReflectivityColor = vReflectivityColor.rgb;
|
|
|
|
+ vec3 baseColor = surfaceAlbedo;
|
|
|
|
|
|
#ifdef METALLICWORKFLOW
|
|
#ifdef METALLICWORKFLOW
|
|
vec2 metallicRoughness = surfaceReflectivityColor.rg;
|
|
vec2 metallicRoughness = surfaceReflectivityColor.rg;
|
|
@@ -208,8 +209,6 @@ void main(void) {
|
|
microSurface = 1.0 - metallicRoughness.g;
|
|
microSurface = 1.0 - metallicRoughness.g;
|
|
|
|
|
|
// Diffuse is used as the base of the reflectivity.
|
|
// Diffuse is used as the base of the reflectivity.
|
|
- vec3 baseColor = surfaceAlbedo;
|
|
|
|
-
|
|
|
|
#ifdef REFLECTANCE
|
|
#ifdef REFLECTANCE
|
|
// *** NOT USED ANYMORE ***
|
|
// *** NOT USED ANYMORE ***
|
|
// Following Frostbite Remapping,
|
|
// Following Frostbite Remapping,
|
|
@@ -516,9 +515,10 @@ void main(void) {
|
|
environmentIrradiance = computeEnvironmentIrradiance(irradianceVector);
|
|
environmentIrradiance = computeEnvironmentIrradiance(irradianceVector);
|
|
#endif
|
|
#endif
|
|
#elif defined(USEIRRADIANCEMAP)
|
|
#elif defined(USEIRRADIANCEMAP)
|
|
- environmentIrradiance = sampleReflection(irradianceSampler, reflectionCoords).rgb;
|
|
|
|
|
|
+ vec4 environmentIrradiance4 = sampleReflection(irradianceSampler, reflectionCoords);
|
|
|
|
+ environmentIrradiance = environmentIrradiance4.rgb;
|
|
#ifdef RGBDREFLECTION
|
|
#ifdef RGBDREFLECTION
|
|
- environmentIrradiance.rgb = fromRGBD(environmentIrradiance);
|
|
|
|
|
|
+ environmentIrradiance.rgb = fromRGBD(environmentIrradiance4);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef GAMMAREFLECTION
|
|
#ifdef GAMMAREFLECTION
|
|
@@ -740,7 +740,7 @@ void main(void) {
|
|
#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
|
|
#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
|
|
float clearCoatReflectionLOD = getLodFromAlphaG(vReflectionMicrosurfaceInfos.x, clearCoatAlphaG, clearCoatNdotVUnclamped);
|
|
float clearCoatReflectionLOD = getLodFromAlphaG(vReflectionMicrosurfaceInfos.x, clearCoatAlphaG, clearCoatNdotVUnclamped);
|
|
#elif defined(LINEARSPECULARREFLECTION)
|
|
#elif defined(LINEARSPECULARREFLECTION)
|
|
- float sheenReflectionLOD = getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x, clearCoatRoughness);
|
|
|
|
|
|
+ float clearCoatReflectionLOD = getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x, clearCoatRoughness);
|
|
#else
|
|
#else
|
|
float clearCoatReflectionLOD = getLodFromAlphaG(vReflectionMicrosurfaceInfos.x, clearCoatAlphaG);
|
|
float clearCoatReflectionLOD = getLodFromAlphaG(vReflectionMicrosurfaceInfos.x, clearCoatAlphaG);
|
|
#endif
|
|
#endif
|
|
@@ -1048,7 +1048,7 @@ void main(void) {
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#if defined(USESPHERICALFROMREFLECTIONMAP)
|
|
#if defined(USESPHERICALFROMREFLECTIONMAP)
|
|
- vec3 refractionIrradiance = computeEnvironmentIrradiance(-irradianceVector);
|
|
|
|
|
|
+ vec4 refractionIrradiance = vec4(computeEnvironmentIrradiance(-irradianceVector), 0.0);
|
|
#elif defined(USEIRRADIANCEMAP)
|
|
#elif defined(USEIRRADIANCEMAP)
|
|
#ifdef REFLECTIONMAP_3D
|
|
#ifdef REFLECTIONMAP_3D
|
|
vec3 irradianceCoords = irradianceVector;
|
|
vec3 irradianceCoords = irradianceVector;
|
|
@@ -1060,7 +1060,7 @@ void main(void) {
|
|
irradianceCoords.y = 1.0 - irradianceCoords.y;
|
|
irradianceCoords.y = 1.0 - irradianceCoords.y;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
- vec3 refractionIrradiance = sampleReflection(irradianceSampler, -irradianceCoords).rgb;
|
|
|
|
|
|
+ vec4 refractionIrradiance = sampleReflection(irradianceSampler, -irradianceCoords);
|
|
#ifdef RGBDREFLECTION
|
|
#ifdef RGBDREFLECTION
|
|
refractionIrradiance.rgb = fromRGBD(refractionIrradiance);
|
|
refractionIrradiance.rgb = fromRGBD(refractionIrradiance);
|
|
#endif
|
|
#endif
|
|
@@ -1069,10 +1069,10 @@ void main(void) {
|
|
refractionIrradiance.rgb = toLinearSpace(refractionIrradiance.rgb);
|
|
refractionIrradiance.rgb = toLinearSpace(refractionIrradiance.rgb);
|
|
#endif
|
|
#endif
|
|
#else
|
|
#else
|
|
- vec3 refractionIrradiance = vec3(0.);
|
|
|
|
|
|
+ vec4 refractionIrradiance = vec4(0.);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
- refractionIrradiance *= transmittance;
|
|
|
|
|
|
+ refractionIrradiance.rgb *= transmittance;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
// ______________________________________________________________________________
|
|
// ______________________________________________________________________________
|
|
@@ -1092,7 +1092,7 @@ void main(void) {
|
|
#ifdef REFLECTION
|
|
#ifdef REFLECTION
|
|
vec3 finalIrradiance = environmentIrradiance;
|
|
vec3 finalIrradiance = environmentIrradiance;
|
|
#if defined(SS_TRANSLUCENCY)
|
|
#if defined(SS_TRANSLUCENCY)
|
|
- finalIrradiance += refractionIrradiance;
|
|
|
|
|
|
+ finalIrradiance += refractionIrradiance.rgb;
|
|
#endif
|
|
#endif
|
|
finalIrradiance *= surfaceAlbedo.rgb;
|
|
finalIrradiance *= surfaceAlbedo.rgb;
|
|
#endif
|
|
#endif
|