123456789101112131415161718192021222324 |
- // RGB and Alpha components of ETC2 RGBA are computed separately.
- // This compute shader merely stitches them together to form the final result
- // It's also used by RG11 driver to stitch two R11 into one RG11
- #[compute]
- #version 450
- #include "CrossPlatformSettings_piece_all.glsl"
- layout(local_size_x = 8, //
- local_size_y = 8, //
- local_size_z = 1) in;
- layout(binding = 0) uniform usampler2D srcRGB;
- layout(binding = 1) uniform usampler2D srcAlpha;
- layout(binding = 2, rgba32ui) uniform restrict writeonly uimage2D dstTexture;
- void main() {
- uint2 rgbBlock = OGRE_Load2D(srcRGB, int2(gl_GlobalInvocationID.xy), 0).xy;
- uint2 alphaBlock = OGRE_Load2D(srcAlpha, int2(gl_GlobalInvocationID.xy), 0).xy;
- imageStore(dstTexture, int2(gl_GlobalInvocationID.xy), uint4(rgbBlock.xy, alphaBlock.xy));
- }
|