spv.computeShaderDerivatives2.comp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #version 320 es
  2. #extension GL_NV_compute_shader_derivatives : require
  3. layout (local_size_x = 2, local_size_y = 4) in;
  4. layout(derivative_group_linearNV) in;
  5. buffer block {
  6. float fDerivativeX;
  7. float fDerivativeY;
  8. float fDerivativeWidth;
  9. float fCoarseDerivativeX;
  10. float fCoarseDerivativeY;
  11. float fCoarseDerivativeWidth;
  12. float fFineDerivativeX;
  13. float fFineDerivativeY;
  14. float fFineDerivativeWidth;
  15. float fX;
  16. float fY;
  17. vec2 v2DerivativeX;
  18. vec2 v2DerivativeY;
  19. vec2 v2DerivativeWidth;
  20. vec2 v2CoarseDerivativeX;
  21. vec2 v2CoarseDerivativeY;
  22. vec2 v2CoarseDerivativeWidth;
  23. vec2 v2FineDerivativeX;
  24. vec2 v2FineDerivativeY;
  25. vec2 v2FineDerivativeWidth;
  26. vec2 v2X;
  27. vec2 v2Y;
  28. vec3 v3DerivativeX;
  29. vec3 v3DerivativeY;
  30. vec3 v3DerivativeWidth;
  31. vec3 v3CoarseDerivativeX;
  32. vec3 v3CoarseDerivativeY;
  33. vec3 v3CoarseDerivativeWidth;
  34. vec3 v3FineDerivativeX;
  35. vec3 v3FineDerivativeY;
  36. vec3 v3FineDerivativeWidth;
  37. vec3 v3X;
  38. vec3 v3Y;
  39. vec4 v4DerivativeX;
  40. vec4 v4DerivativeY;
  41. vec4 v4DerivativeWidth;
  42. vec4 v4CoarseDerivativeX;
  43. vec4 v4CoarseDerivativeY;
  44. vec4 v4CoarseDerivativeWidth;
  45. vec4 v4FineDerivativeX;
  46. vec4 v4FineDerivativeY;
  47. vec4 v4FineDerivativeWidth;
  48. vec4 v4X;
  49. vec4 v4Y;
  50. };
  51. void main(){
  52. fDerivativeX = dFdx(fX);
  53. fDerivativeY = dFdy(fY);
  54. fDerivativeWidth = fwidth(fX);
  55. fCoarseDerivativeX = dFdxCoarse(fX);
  56. fCoarseDerivativeY = dFdyCoarse(fY);
  57. fCoarseDerivativeWidth = fwidthCoarse(fX);
  58. fFineDerivativeX = dFdxFine(fX);
  59. fFineDerivativeY = dFdyFine(fY);
  60. fFineDerivativeWidth = fwidthFine(fX);
  61. v2DerivativeX = dFdx(v2X);
  62. v2DerivativeY = dFdy(v2Y);
  63. v2DerivativeWidth = fwidth(v2X);
  64. v2CoarseDerivativeX = dFdxCoarse(v2X);
  65. v2CoarseDerivativeY = dFdyCoarse(v2Y);
  66. v2CoarseDerivativeWidth = fwidthCoarse(v2X);
  67. v2FineDerivativeX = dFdxFine(v2X);
  68. v2FineDerivativeY = dFdyFine(v2Y);
  69. v2FineDerivativeWidth = fwidthFine(v2X);
  70. v3DerivativeX = dFdx(v3X);
  71. v3DerivativeY = dFdy(v3Y);
  72. v3DerivativeWidth = fwidth(v3X);
  73. v3CoarseDerivativeX = dFdxCoarse(v3X);
  74. v3CoarseDerivativeY = dFdyCoarse(v3Y);
  75. v3CoarseDerivativeWidth = fwidthCoarse(v3X);
  76. v3FineDerivativeX = dFdxFine(v3X);
  77. v3FineDerivativeY = dFdyFine(v3Y);
  78. v3FineDerivativeWidth = fwidthFine(v3X);
  79. v4DerivativeX = dFdx(v4X);
  80. v4DerivativeY = dFdy(v4Y);
  81. v4DerivativeWidth = fwidth(v4X);
  82. v4CoarseDerivativeX = dFdxCoarse(v4X);
  83. v4CoarseDerivativeY = dFdyCoarse(v4Y);
  84. v4CoarseDerivativeWidth = fwidthCoarse(v4X);
  85. v4FineDerivativeX = dFdxFine(v4X);
  86. v4FineDerivativeY = dFdyFine(v4Y);
  87. v4FineDerivativeWidth = fwidthFine(v4X);
  88. }