据我了解像素着色器在每个像素的基础上运行。但也有类似ddx
和ddy
计算导数的函数。但是,如何仅从一个像素坐标计算导数呢?有人可以帮我解决这些问题吗?这些也提出了问题,如
tex.Sample(s0, t0);
这是否意味着样本函数是按像素计算的?我认为采样器指令在每个子跨度的基础上运行。
例子:
如果我有以下 16 个像素:
* * * *
* * * *
* * * *
* * * *
我的像素着色器看起来像这样:
float4 PS(PS_INPUT input) : SV_Target{
float2 derivX = ddx_fine(input.tex);
float2 derivY = ddx_fine(input.tex);
return tex.SampleGrad(s0, t0, derivX, derivY);
}
上述代码将在 4 x 4 像素坐标网格中调用多少次?谢谢。