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/.