瀏覽代碼

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

[3.x] Add horizon specular occlusion
Rémi Verschelde 4 年之前
父節點
當前提交
dad5d09d1b
共有 2 個文件被更改,包括 4 次插入0 次删除
  1. 2 0
      drivers/gles2/shaders/scene.glsl
  2. 2 0
      drivers/gles3/shaders/scene.glsl

+ 2 - 0
drivers/gles2/shaders/scene.glsl

@@ -1693,6 +1693,8 @@ FRAGMENT_SHADER_CODE
 	ref_vec.z *= -1.0;
 
 	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
 	{
 		vec3 ambient_dir = normalize((radiance_inverse_xform * vec4(normal, 0.0)).xyz);

+ 2 - 0
drivers/gles3/shaders/scene.glsl

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