improve torchlight
This commit is contained in:
@@ -38,7 +38,7 @@ void main() {
|
|||||||
a_realnormal = a_normal;
|
a_realnormal = a_normal;
|
||||||
|
|
||||||
vec3 light = v_light.rgb;
|
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;
|
light += torchlight * u_torchlightColor;
|
||||||
a_color = vec4(pow(light, vec3(u_gamma)),1.0f);
|
a_color = vec4(pow(light, vec3(u_gamma)),1.0f);
|
||||||
a_texCoord = v_texCoord;
|
a_texCoord = v_texCoord;
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ uniform float u_weatherFogOpacity;
|
|||||||
uniform float u_weatherFogDencity;
|
uniform float u_weatherFogDencity;
|
||||||
uniform float u_weatherFogCurve;
|
uniform float u_weatherFogCurve;
|
||||||
|
|
||||||
float calc_torch_light(vec3 modelpos) {
|
float calc_torch_light(vec3 normal, vec3 modelpos) {
|
||||||
return max(0.0, 1.0 - distance(u_cameraPos, modelpos.xyz) / u_torchlightDistance);
|
return max(0.0, 1.0 - distance(u_cameraPos, modelpos) / u_torchlightDistance) * -dot(normal, normalize(modelpos - u_cameraPos));
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 calc_screen_normal(vec3 normal) {
|
vec3 calc_screen_normal(vec3 normal) {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ void main() {
|
|||||||
a_normal = calc_screen_normal(a_realnormal);
|
a_normal = calc_screen_normal(a_realnormal);
|
||||||
|
|
||||||
vec3 light = v_light.rgb;
|
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_torchLight = vec4(pow(light + torchlight * u_torchlightColor, vec3(u_gamma)), 1.0f);
|
||||||
|
|
||||||
a_texCoord = v_texCoord;
|
a_texCoord = v_texCoord;
|
||||||
|
|||||||
Reference in New Issue
Block a user