#version 330 core in vec2 v_texcoord; in vec3 v_fragpos; in vec3 v_normal; uniform sampler2D u_tex; uniform sampler2D u_tex1; uniform sampler2D u_tex2; uniform vec2 u_xz_mult; layout (location = 0) out vec4 o_color; layout (location = 1) out vec4 o_normal; void main() { vec2 txc = vec2(v_texcoord.x, 1.0 - v_texcoord.y); vec2 tc1 = v_fragpos.xz * u_xz_mult.x; vec2 tc2 = v_fragpos.xz * u_xz_mult.y; vec4 color_mask = texture(u_tex, txc); vec4 color_xz1 = texture(u_tex1, tc1); vec4 color_xz2 = texture(u_tex2, tc2); // vec4 object_color_4 = mix(color_xz1, color_xz2, color_mask.a); // if (object_color_4.a < 0.5) discard; vec3 object_color = mix(color_xz1.rgb, color_xz2.rgb * color_mask.rgb, color_mask.a); o_color = vec4(object_color, 1.0); o_normal = vec4(v_normal, 1.0); }