spv.sparseTexture.frag 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #version 450
  2. #extension GL_ARB_sparse_texture2: enable
  3. uniform sampler2D s2D;
  4. uniform sampler3D s3D;
  5. uniform sampler2DShadow s2DShadow;
  6. uniform samplerCubeShadow sCubeShadow;
  7. uniform sampler2DArrayShadow s2DArrayShadow;
  8. uniform sampler2DRectShadow s2DRectShadow;
  9. uniform samplerCubeArrayShadow sCubeArrayShadow;
  10. uniform sampler2DMS s2DMS;
  11. uniform isamplerCube isCube;
  12. uniform isampler2DArray is2DArray;
  13. uniform usamplerCubeArray usCubeArray;
  14. uniform usampler2DRect us2DRect;
  15. layout(rgba32f) uniform image2D i2D;
  16. layout(rgba32i) uniform iimage3D ii3D;
  17. layout(rgba32f) uniform image2DMS i2DMS;
  18. in vec2 c2;
  19. in vec3 c3;
  20. in vec4 c4;
  21. in flat ivec2 ic2;
  22. in flat ivec3 ic3;
  23. in flat ivec2 offsets[4];
  24. out vec4 outColor;
  25. void main()
  26. {
  27. int resident = 0;
  28. vec4 texel = vec4(0.0);
  29. ivec4 itexel = ivec4(0);
  30. uvec4 utexel = uvec4(0);
  31. resident |= sparseTextureARB(s2D, c2, texel);
  32. resident |= sparseTextureARB(s3D, c3, texel, 2.0);
  33. resident |= sparseTextureARB(isCube, c3, itexel);
  34. resident |= sparseTextureARB(s2DShadow, c3, texel.x);
  35. resident |= sparseTextureARB(sCubeArrayShadow, c4, 1.0, texel.x);
  36. resident |= sparseTextureLodARB(s2D, c2, 2.0, texel);
  37. resident |= sparseTextureLodARB(usCubeArray, c4, 1.0, utexel);
  38. resident |= sparseTextureLodARB(s2DShadow, c3, 2.0, texel.y);
  39. resident |= sparseTextureOffsetARB(s3D, c3, ivec3(2), texel, 2.0);
  40. resident |= sparseTextureOffsetARB(us2DRect, c2, ivec2(3), utexel);
  41. resident |= sparseTextureOffsetARB(s2DArrayShadow, c4, ivec2(5), texel.z);
  42. resident |= sparseTexelFetchARB(s2D, ivec2(c2), 2, texel);
  43. resident |= sparseTexelFetchARB(us2DRect, ivec2(c2), utexel);
  44. resident |= sparseTexelFetchARB(s2DMS, ivec2(c2), 4, texel);
  45. resident |= sparseTexelFetchOffsetARB(s3D, ivec3(c3), 2, ivec3(4), texel);
  46. resident |= sparseTexelFetchOffsetARB(us2DRect, ivec2(c2), ivec2(3), utexel);
  47. resident |= sparseTextureLodOffsetARB(s2D, c2, 2.0, ivec2(5), texel);
  48. resident |= sparseTextureLodOffsetARB(is2DArray, c3, 2.0, ivec2(6), itexel);
  49. resident |= sparseTextureLodOffsetARB(s2DShadow, c3, 2.0, ivec2(7), texel.z);
  50. resident |= sparseTextureGradARB(s3D, c3, c3, c3, texel);
  51. resident |= sparseTextureGradARB(sCubeShadow, c4, c3, c3, texel.y);
  52. resident |= sparseTextureGradARB(usCubeArray, c4, c3, c3, utexel);
  53. resident |= sparseTextureGradOffsetARB(s2D, c2, c2, c2, ivec2(5), texel);
  54. resident |= sparseTextureGradOffsetARB(s2DRectShadow, c3, c2, c2, ivec2(6), texel.w);
  55. resident |= sparseTextureGradOffsetARB(is2DArray, c3, c2, c2, ivec2(2), itexel);
  56. resident |= sparseTextureGatherARB(s2D, c2, texel);
  57. resident |= sparseTextureGatherARB(is2DArray, c3, itexel, 2);
  58. resident |= sparseTextureGatherARB(s2DArrayShadow, c3, 2.0, texel);
  59. resident |= sparseTextureGatherOffsetARB(s2D, c2, ivec2(4), texel);
  60. resident |= sparseTextureGatherOffsetARB(is2DArray, c3, ivec2(5), itexel, 2);
  61. resident |= sparseTextureGatherOffsetARB(s2DRectShadow, c2, 2.0, ivec2(7), texel);
  62. resident |= sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel);
  63. resident |= sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2);
  64. resident |= sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel);
  65. resident |= sparseImageLoadARB(i2D, ic2, texel);
  66. resident |= sparseImageLoadARB(ii3D, ic3, itexel);
  67. resident |= sparseImageLoadARB(i2DMS, ic2, 3, texel);
  68. outColor = sparseTexelsResidentARB(resident) ? texel : vec4(itexel) + vec4(utexel);
  69. }