因此,我已经知道,关于dFdx、dFdy和fwidth的文档指出,“包含高阶导数的表达式,如dFdx(dFdx(n)),以及dFdx(dFdy(N))等混合阶导数都有未定义的结果。”如果这些表达式是未定义的,是否有可能在片段着色器中得到某种表达式的高阶导数?
我听说dFdx从相邻的片段中获取信息,并发现相邻片段的值与该片段的值之间的差异。也许有一种方法可以手动从相邻的片段中获取信息?
我认为有一个公式可以用来找出二阶导数:
(f(x+h,y+h) - f(x+h,y) - f(x,y+h) + f(x,y))/h^2
但我的问题是,我们如何获得术语f(x+h,y+h)
,f(x+h,y)
,f(x,y+h)
?我们如何得到h
,也就是片段之间的距离?
发布于 2022-04-01 06:01:54
也许有一种方法可以手动从相邻的片段中获取信息?
即使您可以(使用一些子群扩张,您可以),它也不会有帮助。
片段着色器在2x2quad中执行调用,每个调用组由4个直接相邻的调用组成。导数函数仅取四边形中水平/垂直碎片中数据的差值。如果一个四边形中的一个或多个碎片恰好在被光栅化的原语区域之外,它仍然会被执行(为了计算导数),但是它没有明显的效果。这些被称为“助手调用”。
无论如何,四角体中的调用只能与同一四格中的其他调用对话。如果你想得到高阶导数,你需要的不仅仅是一个相邻的片段。
https://stackoverflow.com/questions/71702276
复制相似问题