Lambert 光照效果【基于 Raytrace 实现】
Lambert 光照模型是一种经验的光照模型,其理论基础是 Lambert 余弦定理。主要是用来模拟粗糙物体表面的光照现象,它并没有考虑镜面反射部分
/// @note 球心和球面上一点做差,计算球面法线
vec3 normal_at(vec3 s_c, vec3 point)
{
return normalize(point - s_c);
}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy / iResolution.xy;
float aspect_ratio = iResolution.x / iResolution.y;
uv.x *= aspect_ratio;
uv.x += (1.0 - aspect_ratio) / 2.0;
//vec2 mouse_loc = vec2(iMouse.x / iResolution.x, iMouse.y / iResolution.y);
//vec2 mouse_loc = vec2(0.5) + 0.2*vec2(sin(0.05 * iTime), cos(0.05 * iTime));
vec2 mouse_loc = vec2(0.5);
//vec3 sphere_centre = vec3(0.2);
vec3 sphere_centre