improve torchlight
This commit is contained in:
parent
931f0180ef
commit
559322f70a
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user