fix emission buffer writing & fix entity shader
This commit is contained in:
@@ -12,6 +12,7 @@ in vec3 a_position;
|
||||
in vec3 a_realnormal;
|
||||
in vec4 a_color;
|
||||
in vec4 a_modelpos;
|
||||
in float a_emission;
|
||||
|
||||
uniform sampler2D u_texture0;
|
||||
uniform samplerCube u_skybox;
|
||||
@@ -24,14 +25,13 @@ uniform vec3 u_sunDir;
|
||||
#include <shadows>
|
||||
|
||||
void main() {
|
||||
float shadow = calc_shadow(a_modelpos, a_realnormal, a_distance);
|
||||
vec4 texColor = texture(u_texture0, a_texCoord);
|
||||
float alpha = a_color.a * texColor.a;
|
||||
// anyway it's any alpha-test alternative required
|
||||
if (alpha < (u_alphaClip ? 0.5f : 0.15f)) {
|
||||
discard;
|
||||
}
|
||||
f_color = a_color * texColor * shadow;
|
||||
f_color = a_color * texColor;
|
||||
|
||||
#ifndef ADVANCED_RENDER
|
||||
vec3 fogColor = texture(u_skybox, a_dir).rgb;
|
||||
@@ -41,5 +41,5 @@ void main() {
|
||||
f_color.a = alpha;
|
||||
f_position = vec4(a_position, 1.0);
|
||||
f_normal = vec4(a_normal, 1.0);
|
||||
f_emission = vec4(0.0);
|
||||
f_emission = vec4(vec3(a_emission), 1.0);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ out vec3 a_position;
|
||||
out vec3 a_realnormal;
|
||||
out vec4 a_color;
|
||||
out vec4 a_modelpos;
|
||||
out float a_emission;
|
||||
|
||||
uniform mat4 u_model;
|
||||
uniform mat4 u_proj;
|
||||
@@ -31,8 +32,6 @@ uniform float u_torchlightDistance;
|
||||
#include <lighting>
|
||||
#include <fog>
|
||||
|
||||
#define SKY_LIGHT_BRIGHTNESS_COMPENSATION 0.1
|
||||
|
||||
void main() {
|
||||
a_modelpos = u_model * vec4(v_position, 1.0);
|
||||
vec3 pos3d = a_modelpos.xyz - u_cameraPos;
|
||||
@@ -48,13 +47,14 @@ void main() {
|
||||
a_texCoord = v_texCoord;
|
||||
|
||||
a_dir = a_modelpos.xyz - u_cameraPos;
|
||||
vec3 skyLightColor = pick_sky_color(u_skybox) + SKY_LIGHT_BRIGHTNESS_COMPENSATION;
|
||||
vec3 skyLightColor = pick_sky_color(u_skybox);
|
||||
a_color.rgb = max(a_color.rgb, skyLightColor.rgb * v_light.a) * v_color;
|
||||
a_color.a = u_opacity;
|
||||
|
||||
mat4 viewmodel = u_view * u_model;
|
||||
a_distance = length(viewmodel * vec4(pos3d, 0.0));
|
||||
a_fog = calc_fog(length(viewmodel * vec4(pos3d * FOG_POS_SCALE, 0.0)) / 256.0);
|
||||
a_emission = v_normal.w;
|
||||
|
||||
vec4 viewmodelpos = u_view * a_modelpos;
|
||||
a_position = viewmodelpos.xyz;
|
||||
|
||||
@@ -52,5 +52,5 @@ void main() {
|
||||
f_color.a = alpha;
|
||||
f_position = vec4(a_position, 1.0);
|
||||
f_normal = vec4(a_normal, 1.0);
|
||||
f_emission = vec4(a_emission);
|
||||
f_emission = vec4(vec3(a_emission), 1.0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user