就我所知,像素着色器以每个像素为基础运行。但是有一些功能,如ddx
和ddy
可以计算派生值。但是,如何从一个像素坐标计算出导数?有人可以帮我解决这些问题吗?这些也提出了问题,如在DirectX:像素着色器计算
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的像素坐标网格? 谢谢。