rpcsx/rpcs3/Emu/RSX/Program/MSAA/StencilResolvePass.glsl

29 lines
744 B
GLSL

R"(
#version 420
#extension GL_ARB_separate_shader_objects: enable
#ifdef VULKAN
layout(set=0, binding=0) uniform usampler2DMS fs0;
layout(push_constant) uniform static_data
{
layout(offset=0) ivec2 sample_count;
layout(offset=8) int stencil_mask;
};
#else
layout(binding=31) uniform usampler2DMS fs0;
uniform ivec2 sample_count;
uniform int stencil_mask;
#endif
void main()
{
ivec2 out_coord = ivec2(gl_FragCoord.xy);
ivec2 in_coord = (out_coord / sample_count.xy);
ivec2 sample_loc = out_coord % sample_count.xy;
int sample_index = sample_loc.x + (sample_loc.y * sample_count.y);
uint frag_stencil = texelFetch(fs0, in_coord, sample_index).x;
if ((frag_stencil & uint(stencil_mask)) == 0) discard;
}
)"