spv.1.4.sparseTexture.frag 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #version 450
  2. #extension GL_ARB_sparse_texture2: enable
  3. uniform sampler2D s2D;
  4. uniform isampler2D is2D;
  5. uniform usampler2D us2D;
  6. layout(rgba32f) uniform image2D i2D;
  7. layout(rgba32i) uniform iimage2DMS ii2DMS;
  8. layout(rgba32ui) uniform uimage3D ui3D;
  9. in vec2 c2;
  10. in vec3 c3;
  11. in vec4 c4;
  12. in flat ivec2 ic2;
  13. in flat ivec3 ic3;
  14. in flat ivec2 offsets[4];
  15. out vec4 outColor;
  16. void main()
  17. {
  18. int resident = 0;
  19. vec4 texel = vec4(0.0);
  20. ivec4 itexel = ivec4(0);
  21. uvec4 utexel = uvec4(0);
  22. resident |= sparseTextureARB(s2D, c2, texel);
  23. resident |= sparseTextureARB(is2D, c2, texel);
  24. resident |= sparseTextureARB(us2D, c2, texel);
  25. resident |= sparseTextureLodARB( s2D, c2, 2.0, texel);
  26. resident |= sparseTextureLodARB(is2D, c2, 2.0, texel);
  27. resident |= sparseTextureLodARB(us2D, c2, 2.0, texel);
  28. resident |= sparseTexelFetchARB( s2D, ivec2(c2), 2, texel);
  29. resident |= sparseTexelFetchARB(is2D, ivec2(c2), 2, texel);
  30. resident |= sparseTexelFetchARB(us2D, ivec2(c2), 2, texel);
  31. resident |= sparseImageLoadARB(i2D, ic2, texel);
  32. resident |= sparseImageLoadARB(ii2DMS, ic2, 3, texel);
  33. resident |= sparseImageLoadARB(ui3D, ic3, utexel);
  34. outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel);
  35. }