diff options
3 files changed, 79 insertions, 54 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl index e6f2c9d02b..87c1ff5517 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl @@ -31,6 +31,7 @@ #define DEBUG_VERTEX 0 #define DEBUG_NORMAL_MAP 0 // Output packed normal map "as is" to diffuse #define DEBUG_NORMAL_OUT 0 // Output unpacked normal to diffuse +#define DEBUG_ORM 0 // Output Occlusion Roughness Metal "as is" to diffuse #define DEBUG_POSITION 0 uniform sampler2D diffuseMap; //always in sRGB space @@ -139,6 +140,9 @@ void main() #if DEBUG_NORMAL_OUT col.rgb = vary_normal; #endif +#if DEBUG_ORM + col.rgb = linear_to_srgb(spec); +#endif #if DEBUG_POSITION col.rgb = vary_position.xyz; #endif diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl index 86235f3b89..f28619b11a 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl @@ -29,29 +29,36 @@ /*[EXTRA_CODE_HERE]*/ #define DEBUG_PBR_LIGHT_TYPE 0 // Ouput gray if PBR multiSpot lights object +#define DEBUG_PBR_SPOT_ZERO 0 // Output zero for spotlight #define DEBUG_PBR_SPOT 0 #define DEBUG_PBR_SPOT_DIFFUSE 0 // PBR diffuse lit #define DEBUG_PBR_SPOT_SPECULAR 0 // PBR spec lit -#define DEBUG_SPOT_DIFFUSE 0 -#define DEBUG_SPOT_NL 0 // monochome area effected by light -#define DEBUG_SPOT_SPEC_POS 0 -#define DEBUG_SPOT_REFLECTION 0 +#define DEBUG_LIGHT_FRUSTUM 0 // If projected light effects a surface +#define DEBUG_AMBIANCE_COLOR 0 // calculated ambiance color +#define DEBUG_AMBIANCE_AOE 0 // area of effect using inverse ambiance color +#define DEBUG_AMBIANCE_FINAL 0 // light color * ambiance color +#define DEBUG_NOISE 0 // monochrome noise +#define DEBUG_SHADOW 0 // Show inverted shadow +#define DEBUG_SPOT_DIFFUSE 0 // dot(n,l) * dist_atten +#define DEBUG_SPOT_NL 0 // monochome area effected by light +#define DEBUG_SPOT_SPEC_POS 0 +#define DEBUG_SPOT_REFLECTION 0 // color: pos reflected along n #define DEBUG_PBR_LIGHT_H 0 // Half vector #define DEBUG_PBR_LIHGT_L 0 // Light vector -#define DEBUG_PBR_LIGHT_NH 0 // dot(n,h) -#define DEBUG_PBR_LIGHT_NL 0 // doh(n,l) -#define DEBUG_PBR_LIGHT_NV 0 // doh(n,v) -#define DEBUG_PBR_LIGHT_VH 0 // doh(v,h) +#define DEBUG_PBR_LIGHT_NH 0 // colorized dot(n,h) +#define DEBUG_PBR_LIGHT_NL 0 // colorized dot(n,l) +#define DEBUG_PBR_LIGHT_NV 0 // colorized dot(n,v) +#define DEBUG_PBR_LIGHT_VH 0 // colorized dot(v,h) #define DEBUG_PBR_LIGHT_DIFFUSE_COLOR 0 // non PBR spotlight #define DEBUG_PBR_LIGHT_SPECULAR_COLOR 0 // non PBR spotlight #define DEBUG_PBR_LIGHT_INTENSITY 0 // Light intensity #define DEBUG_PBR_LIGHT_INTENSITY_NL 0 // Light intensity * dot(n,l) -#define DEBUG_PBR_LIGHT_BRDF_DIFFUSE 0 +#define DEBUG_PBR_LIGHT_BRDF_DIFFUSE 0 // like "fullbright" if no "nl" factor #define DEBUG_PBR_LIGHT_BRDF_SPECULAR 0 #define DEBUG_PBR_LIGHT_BRDF_FINAL 0 // BRDF Diffuse + BRDF Specular -#define DEBUG_PBR_SHADOW 0 // Show inverted shadow + #ifdef DEFINE_GL_FRAGCOLOR out vec4 frag_color; @@ -164,6 +171,8 @@ void main() vec3 dlit = vec3(0, 0, 0); vec3 slit = vec3(0, 0, 0); + vec3 amb_rgb = vec3(0); + if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_PBR)) { vec3 colorDiffuse = vec3(0); @@ -205,42 +214,23 @@ void main() colorDiffuse *= nl; colorDiffuse *= shadow; #endif - - #if DEBUG_SPOT_SPEC_POS - colorDiffuse = pos + ref * dot(pdelta, proj_n)/ds; colorSpec = vec3(0); - #endif - #if DEBUG_SPOT_REFLECTION - colorDiffuse = ref; colorSpec = vec3(0); - #endif - } - vec3 amb_rgb = getProjectedLightAmbiance( amb_da, dist_atten, lit, nl, 1.0, proj_tc.xy ); + amb_rgb = getProjectedLightAmbiance( amb_da, dist_atten, lit, nl, 1.0, proj_tc.xy ); colorDiffuse += diffuse.rgb * amb_rgb; + #if DEBUG_AMBIANCE_FINAL + colorDiffuse = diffuse.rgb * amb_rgb; colorSpec = vec3(0); + #endif #if DEBUG_LIGHT_FRUSTUM colorDiffuse = vec3(0,1,0); colorSpec = vec3(0); #endif - #if DEBUG_PBR_SPOT - colorDiffuse = dlit; colorSpec = vec3(0); - colorDiffuse *= nl; - colorDiffuse *= shadow; - #endif - - #if DEBUG_SPOT_SPEC_POS - colorDiffuse = pos + ref * dot(pdelta, proj_n)/ds; colorSpec = vec3(0); - #endif - #if DEBUG_SPOT_REFLECTION - colorDiffuse = ref; colorSpec = vec3(0); + #if DEBUG_NOISE + float noise = texture2D(noiseMap, tc/128.0).b; + colorDiffuse = vec3(noise); colorSpec = vec3(0); #endif } - #if DEBUG_SPOT_DIFFUSE - colorDiffuse = vec3(nl * dist_atten); - #endif - #if DEBUG_SPOT_NL - colorDiffuse = vec3(nl); colorSpec = vec3(0); - #endif #if DEBUG_PBR_LIGHT_TYPE colorDiffuse = vec3(0.5); colorSpec = vec3(0); #endif @@ -299,10 +289,6 @@ void main() colorDiffuse = nl * BRDFLambertian ( reflect0, reflect90, c_diff , specWeight, vh ); colorSpec = nl * BRDFSpecularGGX( reflect0, reflect90, alphaRough, specWeight, vh, nl, nv, nh ); #endif - #if DEBUG_PBR_SHADOW - colorDiffuse = 1.0 - vec3(shadow); - colorSpec = vec3(0); - #endif final_color = colorDiffuse + colorSpec; } @@ -386,22 +372,55 @@ void main() } } } - #if DEBUG_SPOT_SPEC_POS - final_color = pos + ref * dot(pdelta, proj_n)/ds; - #endif #if DEBUG_SPOT_REFLECTION final_color = ref; #endif } +#if DEBUG_LIGHT_FRUSTUM + if (proj_tc.x > 0.0 && proj_tc.x < 1.0 + && proj_tc.y > 0.0 && proj_tc.y < 1.0) + { + final_color = vec3(0,0,1); + } +#endif + } + +#if DEBUG_AMBIANCE_AOE + if (proj_tc.x > 0.0 && proj_tc.x < 1.0 + && proj_tc.y > 0.0 && proj_tc.y < 1.0) + { + final_color = 1.0 - amb_rgb; + } +#endif +#if DEBUG_AMBIANCE_COLOR + if (proj_tc.x > 0.0 && proj_tc.x < 1.0 + && proj_tc.y > 0.0 && proj_tc.y < 1.0) + { + final_color = amb_rgb; + } +#endif +#if DEBUG_SHADOW + final_color = 1.0 - vec3(shadow); +#endif +#if DEBUG_SPOT_DIFFUSE + final_color = vec3(nl * dist_atten); +#endif #if DEBUG_SPOT_NL final_color =vec3(nl); #endif -#if DEBUG_SPOT_DIFFUSE - final_color = vec3(nl * dist_atten * noise); +#if DEBUG_SPOT_SPEC_POS + vec3 ref = reflect(normalize(pos), n); + vec3 pdelta = proj_p-pos; + float ds = dot(ref, proj_n); + final_color = pos + ref * dot(pdelta, proj_n)/ds; +#endif +#if DEBUG_SPOT_REFLECTION + final_color = reflect(normalize(pos), n); +#endif +#if DEBUG_SPOT_ZERO + final_color = vec3(0); #endif - - } //not sure why, but this line prevents MATBUG-194 final_color = max(final_color, vec3(0.0)); diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl index 062062f976..25622d4f83 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl @@ -30,10 +30,11 @@ #define DEBUG_PBR_LIGHT_TYPE 0 #define DEBUG_PBR_SPOT 0 -#define DEBUG_PBR_NL 0 // monochome area effected by light #define DEBUG_PBR_SPOT_DIFFUSE 0 #define DEBUG_PBR_SPOT_SPECULAR 0 +#define DEBUG_SPOT_NL 0 // monochome area effected by light + #ifdef DEFINE_GL_FRAGCOLOR out vec4 frag_color; #else @@ -185,12 +186,6 @@ void main() } - #if DEBUG_SPOT_DIFFUSE - colorDiffuse = vec3(nl * dist_atten); - #endif - #if DEBUG_PBR_NL - colorDiffuse = vec3(nl); colorSpec = vec3(0); - #endif #if DEBUG_PBR_LIGHT_TYPE colorDiffuse = vec3(0.5,0,0); colorSpec = vec3(0.0); #endif @@ -279,6 +274,13 @@ void main() } } +#if DEBUG_SPOT_DIFFUSE + final_color = vec3(nl * dist_atten); +#endif +#if DEBUG_SPOT_NL + final_color = vec3(nl); +#endif + //not sure why, but this line prevents MATBUG-194 final_color = max(final_color, vec3(0.0)); |