光照模型 - 经验光照模型

https://www.cnblogs.com/anesu/p/15786470.html

Lambert

shader_type spatial;

uniform vec3 Albedo: source_color = vec3(1, 1, 1);

void fragment()
{
	ALBEDO = Albedo;
}

void light()
{
	vec3 lightColor = LIGHT_COLOR / PI;
	DIFFUSE_LIGHT += clamp(dot(NORMAL, LIGHT), 0.0, 1.0) * ATTENUATION * lightColor;
}
shader_type spatial;
render_mode unshaded, ambient_light_disabled;

varying vec3 world_normal;

void vertex() {
	world_normal = NORMAL;
}

void fragment() {
	vec3 light_dir = vec3(1, 0, 0); // 手动指定
	float NdotL = dot(world_normal, light_dir);
	ALBEDO =  vec3(NdotL, 0, NdotL);
}

Half-Lambert

Phong

Bling-Phong