From 251b75ea2ed5e652c245f9bed33ff96092b830fe Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Wed, 29 Jun 2022 17:49:10 -0700 Subject: SL-17274: PBR: Add c_diff and fix kDiffuse --- .../newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index a64d059d06..2749dfed30 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -222,6 +222,7 @@ void main() #endif float metal = packedORM.b; + vec3 c_diff = mix(diffuse.rgb,vec3(0),metal); vec3 reflect90 = vec3(0); vec3 v = -normalize(pos.xyz); #if DEBUG_PBR_VERT2CAM1 @@ -276,7 +277,7 @@ void main() vec3 avg = specWeight * (reflect0 + (1.0 - reflect0) / 21.0); vec3 AvgEms = avg * Ems; vec3 FmsEms = AvgEms * FssEssLambert / (1.0 - AvgEms); - vec3 kDiffuse = colorDiffuse * (1.0 - FssEssLambert + FmsEms); + vec3 kDiffuse = c_diff * (1.0 - FssEssLambert + FmsEms); colorDiffuse += (FmsEms + kDiffuse) * irradiance; colorDiffuse *= packedORM.r; // Occlusion -- NOTE: pbropaque will need occlusion_strength pre-multiplied into spec.r @@ -330,6 +331,9 @@ void main() #if DEBUG_PBR_BRDF_SCALE_BIAS color.rgb = vec3(vScaleBias,0.0); #endif + #if DEBUG_PBR_DIFFUSE_C + color.rgb = c_diff; + #endif #if DEBUG_PBR_DIFFUSE_K color.rgb = kDiffuse; #endif -- cgit v1.2.3 From d1e078a1229fa61ba697e382fb42b6a6b11e8f97 Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Wed, 29 Jun 2022 17:50:03 -0700 Subject: SL-17274: PBR: Fix EMS being zero when using GGX approximation --- .../newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index 2749dfed30..44884e780f 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -23,6 +23,7 @@ * $/LicenseInfo$ */ +#define PBR_GGX_APPROX 1 #define DEBUG_PBR_PACKORM0 0 // Rough=0, Metal=0 #define DEBUG_PBR_PACKORM1 0 // Rough=1, Metal=1 #define DEBUG_PBR_TANGENT1 1 // Tangent = 1,0,0 @@ -141,7 +142,9 @@ vec2 getGGX( vec2 brdfPoint ) { // TODO: use GGXLUT // texture2D(GGXLUT, brdfPoint).rg; +#if PBR_GGX_APPROX return getGGXApprox( brdfPoint); +#endif } vec3 calcBaseReflect0(float ior) @@ -274,6 +277,9 @@ void main() // Reference: getIBLRadianceLambertian vec3 FssEssLambert = specWeight * kSpec * vScaleBias.x + vScaleBias.y; // NOTE: Very similar to FssEssRadiance but with extra specWeight term float Ems = (1.0 - vScaleBias.x + vScaleBias.y); +#if PBR_GGX_APPROX + Ems = alphaRough; // With GGX approximation Ems = 0 so use substitute +#endif vec3 avg = specWeight * (reflect0 + (1.0 - reflect0) / 21.0); vec3 AvgEms = avg * Ems; vec3 FmsEms = AvgEms * FssEssLambert / (1.0 - AvgEms); -- cgit v1.2.3 From 76caf9fe0ede7ded0bf348872be34891a0571c56 Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Wed, 29 Jun 2022 17:50:45 -0700 Subject: SL-17274: PBR: Group diffuse debugging --- .../shaders/class3/deferred/softenLightF.glsl | 31 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index 44884e780f..3c12e55d6a 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -48,12 +48,20 @@ #define DEBUG_PBR_BRDF_SCALE_BIAS 0 // Output: red green BRDF Scale Bias (GGX output) #define DEBUG_PBR_BRDF_UV 0 // Output: red green BRDF UV (GGX input) + +// Diffuse +#define DEBUG_PBR_DIFFUSE_C 0 // Output: diffuse non metal mix +#define DEBUG_PBR_IRRADIANCE 0 // Output: Diffuse Irradiance +#define DEBUG_PBR_FE_LAMBERT 0 // Output: FssEssLambert +#define DEBUG_PBR_EMS 0 // Output: Ems +#define DEBUG_PBR_AVG 0 // Output: Avg +#define DEBUG_PBR_EMS_FMS 0 // Output: FmsEms #define DEBUG_PBR_DIFFUSE_K 0 // Output: diffuse FssEssLambert + FmsEms +#define DEBUG_PBR_DIFFUSE_PRE_AO 0 // Output: diffuse pre AO + #define DEBUG_PBR_FE_GGX 0 // Output: FssEssGGX -#define DEBUG_PBR_FE_LAMBERT 0 // Output: FssEssLambert #define DEBUG_PBR_FRESNEL 0 // Output: roughness dependent fresnel #define DEBUG_PBR_IOR 0 // Output: grayscale IOR -#define DEBUG_PBR_IRRADIANCE 0 // Output: Diffuse Irradiance #define DEBUG_PBR_KSPEC 0 // Output: K spec #define DEBUG_PBR_REFLECT0_BASE 0 // Output: black reflect0 default from ior #define DEBUG_PBR_REFLECT0_MIX 0 // Output: diffuse reflect0 calculated from ior @@ -285,7 +293,9 @@ void main() vec3 FmsEms = AvgEms * FssEssLambert / (1.0 - AvgEms); vec3 kDiffuse = c_diff * (1.0 - FssEssLambert + FmsEms); colorDiffuse += (FmsEms + kDiffuse) * irradiance; - + #if DEBUG_PBR_DIFFUSE_PRE_AO + vec3 debug_diffuse = colorDiffuse; + #endif colorDiffuse *= packedORM.r; // Occlusion -- NOTE: pbropaque will need occlusion_strength pre-multiplied into spec.r color.rgb = colorDiffuse + colorEmissive + colorSpec; @@ -331,6 +341,9 @@ void main() color.rgb = vec3(dotBV); #endif + #if DEBUG_PBR_AVG + color.rgb = avg; + #endif #if DEBUG_PBR_BRDF_UV color.rgb = vec3(brdfPoint,0.0); #endif @@ -346,6 +359,18 @@ void main() #if DEBUG_PBR_DIFFUSE_MAP color.rgb = diffuse.rgb; #endif + #if DEBUG_PBR_DIFFUSE_PRE_AO + color.rgb = debug_diffuse; + #endif + #if DEBUG_PBR_EMS + color.rgb = vec3(Ems); + #endif + #if DEBUG_PBR_EMS_AVG + color.rgb = AvgEms; + #endif + #if DEBUG_PBR_EMS_FMS + color.rgb = FmsEms; + #endif #if DEBUG_PBR_FE_GGX color.rgb = FssEssGGX; // spec #endif -- cgit v1.2.3 From 9432edaba7d073cd3f22ecda1f2cfc3093d9bcb7 Mon Sep 17 00:00:00 2001 From: Ptolemy Date: Wed, 29 Jun 2022 17:51:19 -0700 Subject: SL-17274: PBR: Add spec weight debugging --- indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index 3c12e55d6a..14ba06741b 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -69,6 +69,7 @@ #define DEBUG_PBR_REFLECTION 0 // Output: reflection dir #define DEBUG_PBR_SPEC 0 // Output: Final spec #define DEBUG_PBR_SPEC_REFLECTION 0 // Output: environment reflection +#define DEBUG_PBR_SPEC_WEIGHT 0 // Output: specWeight #define DEBUG_PBR_V2C_RAW 0 // Output: vertex2camera #define DEBUG_PBR_V2C_REMAP 0 // Output: vertex2camera (remap [-1,1] -> [0,1]) #extension GL_ARB_texture_rectangle : enable @@ -407,6 +408,9 @@ void main() #if DEBUG_PBR_SPEC_REFLECTION color.rgb = specLight; #endif + #if DEBUG_PBR_SPEC_WEIGHT + color.rgb = vec3(specWeight); + #endif #if DEBUG_PBR_V2C_RAW color.rgb = v; #endif -- cgit v1.2.3