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. http://opencontent.org/openpub/.