improve torchlight

This commit is contained in:
MihailRis 2025-07-07 00:25:12 +03:00
parent 931f0180ef
commit 559322f70a
3 changed files with 4 additions and 4 deletions

View File

@ -38,7 +38,7 @@ void main() {
a_realnormal = a_normal;
vec3 light = v_light.rgb;
float torchlight = calc_torch_light(a_modelpos.xyz);
float torchlight = calc_torch_light(a_realnormal, a_modelpos.xyz);
light += torchlight * u_torchlightColor;
a_color = vec4(pow(light, vec3(u_gamma)),1.0f);
a_texCoord = v_texCoord;

View File

@ -7,8 +7,8 @@ uniform float u_weatherFogOpacity;
uniform float u_weatherFogDencity;
uniform float u_weatherFogCurve;
float calc_torch_light(vec3 modelpos) {
return max(0.0, 1.0 - distance(u_cameraPos, modelpos.xyz) / u_torchlightDistance);
float calc_torch_light(vec3 normal, vec3 modelpos) {
return max(0.0, 1.0 - distance(u_cameraPos, modelpos) / u_torchlightDistance) * -dot(normal, normalize(modelpos - u_cameraPos));
}
vec3 calc_screen_normal(vec3 normal) {

View File

@ -38,7 +38,7 @@ void main() {
a_normal = calc_screen_normal(a_realnormal);
vec3 light = v_light.rgb;
float torchlight = calc_torch_light(a_modelpos.xyz);
float torchlight = calc_torch_light(a_realnormal, a_modelpos.xyz);
a_torchLight = vec4(pow(light + torchlight * u_torchlightColor, vec3(u_gamma)), 1.0f);
a_texCoord = v_texCoord;