mirror of https://github.com/xemu-project/xemu.git
35 lines
1.4 KiB
Plaintext
35 lines
1.4 KiB
Plaintext
#version 310 es
|
|
#extension GL_QCOM_tile_shading : enable
|
|
|
|
layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in;
|
|
layout (shading_rate_xQCOM = 2, shading_rate_yQCOM = 2, shading_rate_zQCOM = 1) in;
|
|
|
|
layout (set=0, binding=0, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D input0;
|
|
layout (set=0, binding=1, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D color0; // attachment0
|
|
layout (set=0, binding=2, tile_attachmentQCOM, rgba32i) uniform writeonly highp iimage2D color1; // attachment1
|
|
|
|
// depth/stencil attachments
|
|
layout (set=0, binding=3, tile_attachmentQCOM, rgba32f) uniform readonly highp image2D depth;
|
|
layout (set=0, binding=4, tile_attachmentQCOM, rgba32ui) uniform writeonly highp uimage2D stencil;
|
|
|
|
void main ()
|
|
{
|
|
uvec2 uoffset = clamp(gl_GlobalInvocationID.xy, gl_TileOffsetQCOM, gl_TileOffsetQCOM + gl_TileDimensionQCOM.xy - uvec2(1.1));
|
|
ivec2 offset = ivec2(uoffset);
|
|
|
|
// read from attachments
|
|
vec4 colorA = imageLoad( color0, offset );
|
|
vec4 colorC = imageLoad( input0, offset );
|
|
float d = imageLoad( depth, offset ).x;
|
|
uint s = uint(2);
|
|
|
|
// compute output values
|
|
vec4 outColor = ( colorA + vec4(1.0f) + colorC ) * 0.33f;
|
|
float outDepth = d * 2.0f;
|
|
uint outStencil = s + uint(1);
|
|
|
|
// write to attachments
|
|
imageStore( color1, offset, ivec4(outColor) );
|
|
imageStore( stencil, offset, uvec4(outStencil) );
|
|
}
|