Merge pull request #51416 from clayjohn/GLES-horizon-occlusion

[3.x] Add horizon specular occlusion
This commit is contained in:
Rémi Verschelde 2021-08-10 09:55:46 +02:00 committed by GitHub
commit dad5d09d1b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 0 deletions

View file

@ -1693,6 +1693,8 @@ FRAGMENT_SHADER_CODE
ref_vec.z *= -1.0; ref_vec.z *= -1.0;
specular_light = textureCubeLod(radiance_map, ref_vec, roughness * RADIANCE_MAX_LOD).xyz * bg_energy; specular_light = textureCubeLod(radiance_map, ref_vec, roughness * RADIANCE_MAX_LOD).xyz * bg_energy;
float horizon = min(1.0 + dot(ref_vec, normal), 1.0);
specular_light *= horizon * horizon;
#ifndef USE_LIGHTMAP #ifndef USE_LIGHTMAP
{ {
vec3 ambient_dir = normalize((radiance_inverse_xform * vec4(normal, 0.0)).xyz); vec3 ambient_dir = normalize((radiance_inverse_xform * vec4(normal, 0.0)).xyz);

View file

@ -1887,6 +1887,8 @@ FRAGMENT_SHADER_CODE
ref_vec = normalize((radiance_inverse_xform * vec4(ref_vec, 0.0)).xyz); ref_vec = normalize((radiance_inverse_xform * vec4(ref_vec, 0.0)).xyz);
vec3 radiance = textureDualParaboloid(radiance_map, ref_vec, roughness) * bg_energy; vec3 radiance = textureDualParaboloid(radiance_map, ref_vec, roughness) * bg_energy;
env_reflection_light = radiance; env_reflection_light = radiance;
float horizon = min(1.0 + dot(ref_vec, normal), 1.0);
env_reflection_light *= horizon * horizon;
} }
} }
#ifndef USE_LIGHTMAP #ifndef USE_LIGHTMAP