quakeforge/libs/video/renderer/vulkan/shader/alias_gbuf.frag
Bill Currie d5b824a47c [vulkan] Switch alias pipeline to multi-texture
This gets the alias pipeline in line with the bsp pipeline, and thus
everything is about as functional as it was before the rework (minus
dealing with large texture sets).
2021-12-24 06:45:13 +09:00

42 lines
1.2 KiB
GLSL

#version 450
layout (constant_id = 0) const int MaxTextures = 256;
layout (set = 1, binding = 0) uniform sampler samp;
layout (set = 1, binding = 1) uniform texture2DArray skins[MaxTextures];
layout (push_constant) uniform PushConstants {
layout (offset = 68)
uint texind;
uint colorA;
uint colorB;
vec4 base_color;
vec4 fog;
};
layout (location = 0) in vec2 st;
layout (location = 1) in vec4 position;
layout (location = 2) in vec3 normal;
layout (location = 0) out vec4 frag_color;
layout (location = 1) out vec4 frag_emission;
layout (location = 2) out vec4 frag_normal;
layout (location = 3) out vec4 frag_position;
void
main (void)
{
vec4 c;
vec4 e;
int i;
vec3 light = vec3 (0);
c = texture (sampler2DArray(skins[texind], samp), vec3 (st, 0)) * base_color;
c += texture (sampler2DArray(skins[texind], samp), vec3 (st, 1)) * unpackUnorm4x8(colorA);
c += texture (sampler2DArray(skins[texind], samp), vec3 (st, 2)) * unpackUnorm4x8(colorB);
e = texture (sampler2DArray(skins[texind], samp), vec3 (st, 3));
frag_color = c;
frag_emission = e;
frag_normal = vec4(normal, 1);
frag_position = position;
}