spv.imageLoadStoreLod.frag 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #version 450 core
  2. #extension GL_AMD_shader_image_load_store_lod: enable
  3. layout(rgba32f, binding = 0) uniform image1D i1D;
  4. layout(rgba32f, binding = 1) uniform image2D i2D;
  5. layout(rgba32f, binding = 2) uniform image3D i3D;
  6. layout(rgba32i, binding = 3) uniform iimageCube iiCube;
  7. layout(rgba32i, binding = 4) uniform iimage1DArray ii1DArray;
  8. layout(rgba32ui, binding = 5) uniform uimage2DArray ui2DArray;
  9. layout(rgba32ui, binding = 6) uniform uimageCubeArray uiCubeArray;
  10. layout(location = 0) out vec4 fragColor;
  11. void main()
  12. {
  13. const int c1 = 1;
  14. const ivec2 c2 = ivec2(2, 3);
  15. const ivec3 c3 = ivec3(4, 5, 6);
  16. const int lod = 3;
  17. vec4 f4 = vec4(0.0);
  18. f4 += imageLoadLodAMD(i1D, c1, lod);
  19. f4 += imageLoadLodAMD(i2D, c2, lod);
  20. f4 += imageLoadLodAMD(i3D, c3, lod);
  21. imageStoreLodAMD(iiCube, c3, lod, ivec4(f4));
  22. imageStoreLodAMD(ii1DArray, c2, lod, ivec4(f4));
  23. uvec4 u4;
  24. sparseImageLoadLodAMD(ui2DArray, c3, lod, u4);
  25. sparseImageLoadLodAMD(uiCubeArray, c3, lod, u4);
  26. fragColor = f4 + vec4(u4);
  27. }