2023-08-30 16:40:45 +02:00
|
|
|
varying vec2 v_vTexcoord;
|
2023-08-28 12:56:00 +02:00
|
|
|
varying vec4 v_worldPosition;
|
|
|
|
varying vec3 v_viewPosition;
|
|
|
|
varying vec3 v_vNormal;
|
|
|
|
|
2024-12-19 06:09:02 +01:00
|
|
|
uniform int mat_flip;
|
|
|
|
uniform int use_normal;
|
|
|
|
uniform int use_8bit;
|
|
|
|
uniform float normal_strength;
|
|
|
|
uniform sampler2D normal_map;
|
|
|
|
uniform vec2 mat_texScale;
|
|
|
|
uniform vec2 mat_texShift;
|
2023-08-30 16:40:45 +02:00
|
|
|
|
2023-08-28 12:56:00 +02:00
|
|
|
void main() {
|
2023-10-05 06:29:20 +02:00
|
|
|
vec2 uv_coord = v_vTexcoord;
|
|
|
|
if(mat_flip == 1) uv_coord.y = -uv_coord.y;
|
2024-12-19 06:09:02 +01:00
|
|
|
uv_coord = fract(uv_coord * mat_texScale + mat_texShift);
|
|
|
|
|
2023-10-05 06:29:20 +02:00
|
|
|
vec4 mat_baseColor = texture2D( gm_BaseTexture, uv_coord );
|
2023-10-06 11:51:11 +02:00
|
|
|
if(mat_baseColor.a < 0.1) discard;
|
2023-10-05 06:29:20 +02:00
|
|
|
|
2023-08-30 16:40:45 +02:00
|
|
|
vec3 normal = v_vNormal;
|
2023-10-05 06:29:20 +02:00
|
|
|
if(use_normal == 1) normal += (texture2D(normal_map, uv_coord).rgb * 2. - 1.) * normal_strength;
|
2023-08-30 16:40:45 +02:00
|
|
|
|
2023-12-06 13:51:22 +01:00
|
|
|
gl_FragData[0] = vec4(v_worldPosition.xyz, mat_baseColor.a);
|
|
|
|
gl_FragData[1] = vec4(v_viewPosition, mat_baseColor.a);
|
2023-10-05 06:29:20 +02:00
|
|
|
gl_FragData[2] = vec4(normalize(normal), mat_baseColor.a);
|
2023-08-28 12:56:00 +02:00
|
|
|
}
|