alpha_stitch.glsl 802 B

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