dFdx, dFdy — return the partial derivative of an argument with respect to x or y
genType dFdx( | genType p) ; |
genType dFdy( | genType p) ; |
genType dFdxCoarse( | genType p) ; |
genType dFdyCoarse( | genType p) ; |
genType dFdxFine( | genType p) ; |
genType dFdyFine( | genType p) ; |
p
Specifies the expression of which to take the partial derivative.
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.
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 | - | - | - | - | - | - | - | - | - | - | - | ✔ |
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. https://opencontent.org/openpub/.