| #version 450 |
| #extension GL_NV_compute_shader_derivatives : require |
| |
| layout (local_size_x = 2, local_size_y = 4) in; |
| layout(derivative_group_quadsNV) in; |
| |
| buffer block { |
| float fDerivativeX; |
| float fDerivativeY; |
| float fDerivativeWidth; |
| float fCoarseDerivativeX; |
| float fCoarseDerivativeY; |
| float fCoarseDerivativeWidth; |
| float fFineDerivativeX; |
| float fFineDerivativeY; |
| float fFineDerivativeWidth; |
| |
| float fX; |
| float fY; |
| |
| |
| vec2 v2DerivativeX; |
| vec2 v2DerivativeY; |
| vec2 v2DerivativeWidth; |
| vec2 v2CoarseDerivativeX; |
| vec2 v2CoarseDerivativeY; |
| vec2 v2CoarseDerivativeWidth; |
| vec2 v2FineDerivativeX; |
| vec2 v2FineDerivativeY; |
| vec2 v2FineDerivativeWidth; |
| |
| vec2 v2X; |
| vec2 v2Y; |
| |
| |
| vec3 v3DerivativeX; |
| vec3 v3DerivativeY; |
| vec3 v3DerivativeWidth; |
| vec3 v3CoarseDerivativeX; |
| vec3 v3CoarseDerivativeY; |
| vec3 v3CoarseDerivativeWidth; |
| vec3 v3FineDerivativeX; |
| vec3 v3FineDerivativeY; |
| vec3 v3FineDerivativeWidth; |
| |
| vec3 v3X; |
| vec3 v3Y; |
| |
| |
| vec4 v4DerivativeX; |
| vec4 v4DerivativeY; |
| vec4 v4DerivativeWidth; |
| vec4 v4CoarseDerivativeX; |
| vec4 v4CoarseDerivativeY; |
| vec4 v4CoarseDerivativeWidth; |
| vec4 v4FineDerivativeX; |
| vec4 v4FineDerivativeY; |
| vec4 v4FineDerivativeWidth; |
| |
| vec4 v4X; |
| vec4 v4Y; |
| }; |
| |
| void main(){ |
| fDerivativeX = dFdx(fX); |
| fDerivativeY = dFdy(fY); |
| fDerivativeWidth = fwidth(fX); |
| fCoarseDerivativeX = dFdxCoarse(fX); |
| fCoarseDerivativeY = dFdyCoarse(fY); |
| fCoarseDerivativeWidth = fwidthCoarse(fX); |
| fFineDerivativeX = dFdxFine(fX); |
| fFineDerivativeY = dFdyFine(fY); |
| fFineDerivativeWidth = fwidthFine(fX); |
| |
| v2DerivativeX = dFdx(v2X); |
| v2DerivativeY = dFdy(v2Y); |
| v2DerivativeWidth = fwidth(v2X); |
| v2CoarseDerivativeX = dFdxCoarse(v2X); |
| v2CoarseDerivativeY = dFdyCoarse(v2Y); |
| v2CoarseDerivativeWidth = fwidthCoarse(v2X); |
| v2FineDerivativeX = dFdxFine(v2X); |
| v2FineDerivativeY = dFdyFine(v2Y); |
| v2FineDerivativeWidth = fwidthFine(v2X); |
| |
| |
| v3DerivativeX = dFdx(v3X); |
| v3DerivativeY = dFdy(v3Y); |
| v3DerivativeWidth = fwidth(v3X); |
| v3CoarseDerivativeX = dFdxCoarse(v3X); |
| v3CoarseDerivativeY = dFdyCoarse(v3Y); |
| v3CoarseDerivativeWidth = fwidthCoarse(v3X); |
| v3FineDerivativeX = dFdxFine(v3X); |
| v3FineDerivativeY = dFdyFine(v3Y); |
| v3FineDerivativeWidth = fwidthFine(v3X); |
| |
| |
| v4DerivativeX = dFdx(v4X); |
| v4DerivativeY = dFdy(v4Y); |
| v4DerivativeWidth = fwidth(v4X); |
| v4CoarseDerivativeX = dFdxCoarse(v4X); |
| v4CoarseDerivativeY = dFdyCoarse(v4Y); |
| v4CoarseDerivativeWidth = fwidthCoarse(v4X); |
| v4FineDerivativeX = dFdxFine(v4X); |
| v4FineDerivativeY = dFdyFine(v4Y); |
| v4FineDerivativeWidth = fwidthFine(v4X); |
| } |