dFdx, dFdy - OpenGL 4 Reference Pages

## Name

dFdx, dFdy — return the partial derivative of an argument with respect to x or y

## Declaration

`genType dFdx(` | genType p`)`;

`genType dFdy(` | genType p`)`;

`genType dFdxCoarse(` | genType p`)`;

`genType dFdyCoarse(` | genType p`)`;

`genType dFdxFine(` | genType p`)`;

`genType dFdyFine(` | genType p`)`;

## Parameters

`p`

  Specifies the expression of which to take the partial derivative.

## Description

Available only in the fragment shader, these functions return the partial derivative of expression `p` with respect to the window $x$ coordinate (for `dFdx*`) and $y$ coordinate (for `dFdy*`).

`dFdxFine` and `dFdyFine` calculate derivatives using local differencing based on on the value of `p` for the current fragment and its immediate neighbor(s).

`dFdxCoarse` and `dFdyCoarse` calculate derivatives using local differencing based on the value of `p` for the current fragment's neighbors, and will possibly, but not necessarily, include the value for the current fragment. That is, over a given area, the implementation can compute derivatives in fewer unique locations than would be allowed for the corresponding `dFdxFine` and `dFdyFine` functions.

`dFdx` returns either `dFdxCoarse` or `dFdxFine`. `dFdy` returns either `dFdyCoarse` or `dFdyFine`. The implementation may choose which calculation to perform based upon factors such as performance or the value of the API `GL_FRAGMENT_SHADER_DERIVATIVE_HINT` hint.

Expressions that imply higher order derivatives such as `dFdx(dFdx(n))` have undefined results, as do mixed-order derivatives such as `dFdx(dFdy(n))`. It is assumed that the expression `p` is continuous and therefore, expressions evaluated via non-uniform control flow may be undefined.

## Version Support

| OpenGL Shading Language Version
--- | ---
Function Name | 1.10 | 1.20 | 1.30 | 1.40 | 1.50 | 3.30 | 4.00 | 4.10 | 4.20 | 4.30 | 4.40 | 4.50
dFdx | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔
dFdy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔
dFdxCoarse, dFdxFine, dFdyCoarse, dFdyFine | - | - | - | - | - | - | - | - | - | - | - | ✔

## See Also

fwidth, glHint

## Copyright

Copyright © 2011-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.