我需要计算分配给从某个角度在屏幕上绘制给定对象时产生的像素的最小和最大 UV 值。例如,如果我有一个 UV 映射立方体,但只有正面可见,则 min(UV) 和 max(UV) 应设置为分配给可见面像素的最小和最大 UV 坐标。
我想使用 Direct3D 9 着色器(以及可能的最低着色器模型)来加快处理速度。顶点着色器可以像获取每个输入顶点的 UV 坐标并将它们未经修改地传递给像素着色器一样简单。另一方面,像素着色器必须采用顶点着色器产生的值并使用这些值来计算最小和最大 UV 值。
我想知道的是:
- 如何在像素着色器的调用之间保持状态(当前最小值和最大值)?
- 如何将着色器生成的最终最小值和最大值放入我的程序中?
有没有办法在 HLSL 中做到这一点,还是我坚持手工做?如果 HLSL 不起作用,那么在不使用着色器的情况下最有效的方法是什么?