diff options
| author | Dave Parks <davep@lindenlab.com> | 2022-09-17 15:48:55 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2022-09-17 15:48:55 -0500 | 
| commit | b2553fc8b46e44dd74b2840e041b3cf46d2b39fc (patch) | |
| tree | ad6846532a3fc9707e59354d48ecbe3cf8a21885 /indra/newview/app_settings/shaders/class1/deferred | |
| parent | 48eea4de0a9304cd25af46defb52cb0adeeb87c4 (diff) | |
Fix for spotlights in background not matching foreground.  Remove some unused functions.
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl | 104 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/pbralphaF.glsl | 2 | 
2 files changed, 0 insertions, 106 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl index d1c476792a..0b97ee43e3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl @@ -494,88 +494,9 @@ vec3 BRDFSpecularGGX( vec3 reflect0, vec3 reflect90, float alphaRough, float spe      return fresnel * vis * d;  } -// Based omn http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/ -float random(vec2 co) -{ -	float a = 12.9898; -	float b = 78.233; -	float c = 43758.5453; -	float dt= dot(co.xy ,vec2(a,b)); -	float sn= mod(dt,3.14); -	return fract(sin(sn) * c); -} - -vec2 hammersley2d(uint i, uint N)  -{ -	// Radical inverse based on http://holger.dammertz.org/stuff/notes_HammersleyOnHemisphere.html -	uint bits = (i << 16u) | (i >> 16u); -	bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); -	bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); -	bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); -	bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); -	float rdi = float(bits) * 2.3283064365386963e-10; -	return vec2(float(i) /float(N), rdi); -} - -// Based on http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_slides.pdf -vec3 importanceSample_GGX(vec2 Xi, float roughness, vec3 normal)  -{ -	// Maps a 2D point to a hemisphere with spread based on roughness -	float alpha = roughness * roughness; -	float phi = 2.0 * M_PI * Xi.x + random(normal.xz) * 0.1; -	float cosTheta = sqrt((1.0 - Xi.y) / (1.0 + (alpha*alpha - 1.0) * Xi.y)); -	float sinTheta = sqrt(1.0 - cosTheta * cosTheta); -	vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); - -	// Tangent space -	vec3 up = abs(normal.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); -	vec3 tangentX = normalize(cross(up, normal)); -	vec3 tangentY = normalize(cross(normal, tangentX)); - -	// Convert to world Space -	return normalize(tangentX * H.x + tangentY * H.y + normal * H.z); -} - -// Geometric Shadowing function -float G_SchlicksmithGGX(float dotNL, float dotNV, float roughness) -{ -	float k = (roughness * roughness) / 2.0; -	float GL = dotNL / (dotNL * (1.0 - k) + k); -	float GV = dotNV / (dotNV * (1.0 - k) + k); -	return GL * GV; -} - -#define NUM_SAMPLES 16 -  vec2 BRDF(float NoV, float roughness)  { -#if 0 -	// Normal always points along z-axis for the 2D lookup  -	const vec3 N = vec3(0.0, 0.0, 1.0); -	vec3 V = vec3(sqrt(1.0 - NoV*NoV), 0.0, NoV); - -	vec2 LUT = vec2(0.0); -	for(uint i = 0u; i < NUM_SAMPLES; i++) { -		vec2 Xi = hammersley2d(i, NUM_SAMPLES); -		vec3 H = importanceSample_GGX(Xi, roughness, N); -		vec3 L = 2.0 * dot(V, H) * H - V; - -		float dotNL = max(dot(N, L), 0.0); -		float dotNV = max(dot(N, V), 0.0); -		float dotVH = max(dot(V, H), 0.0);  -		float dotNH = max(dot(H, N), 0.0); - -		if (dotNL > 0.0) { -			float G = G_SchlicksmithGGX(dotNL, dotNV, roughness); -			float G_Vis = (G * dotVH) / (dotNH * dotNV); -			float Fc = pow(1.0 - dotVH, 5.0); -			LUT += vec2((1.0 - Fc) * G_Vis, Fc * G_Vis); -		} -	} -	return LUT / float(NUM_SAMPLES); -#else      return texture(brdfLut, vec2(NoV, roughness)).rg; -#endif  }  // set colorDiffuse and colorSpec to the results of GLTF PBR style IBL @@ -720,28 +641,3 @@ vec3 pbrPunctual(vec3 diffuseColor, vec3 specularColor,      return color;  } - -void pbrDirectionalLight(inout vec3 colorDiffuse, -    inout vec3 colorSpec, -    vec3 sunlit, -    float scol, -    vec3 reflect0, -    vec3 reflect90, -    vec3 c_diff, -    float alphaRough, -    float vh, -    float nl, -    float nv, -    float nh) -{ -    float scale = 32.0; -    vec3 sunColor = sunlit * scale; - -    // scol = sun shadow -    vec3 intensity  = sunColor * nl * scol; -    vec3 sunDiffuse = intensity * BRDFLambertian (reflect0, reflect90, c_diff    , 1.0, vh); -    vec3 sunSpec    = intensity * BRDFSpecularGGX(reflect0, reflect90, alphaRough, 1.0, vh, nl, nv, nh); - -    colorDiffuse += sunDiffuse; -    colorSpec    += sunSpec; -} diff --git a/indra/newview/app_settings/shaders/class1/deferred/pbralphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pbralphaF.glsl index 88ff4f0c96..077c985092 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pbralphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pbralphaF.glsl @@ -92,8 +92,6 @@ vec3 srgb_to_linear(vec3 c);  vec3 linear_to_srgb(vec3 c);  // These are in deferredUtil.glsl but we can't set: mFeatures.isDeferred to include it -vec3 BRDFLambertian( vec3 reflect0, vec3 reflect90, vec3 c_diff, float specWeight, float vh ); -vec3 BRDFSpecularGGX( vec3 reflect0, vec3 reflect90, float alphaRoughness, float specWeight, float vh, float nl, float nv, float nh );  void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten, bool use_ao);  vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten);  vec3 scaleSoftClipFrag(vec3 l);  | 
