我一直在尝试使用更复杂的着色器,并且遇到了顶点着色器和纹理采样器使用的坐标系问题。简而言之:它们似乎没有任何意义,并且在尝试测试它们时,我最终得到不一致的结果。更糟糕的是,互联网上几乎没有文档,而且我发现的大多数信息似乎都希望我知道这是如何工作的。我希望有人可以澄清以下内容:
- 顶点着色器传递一个 (x, y, z) 表示渲染目标上的位置。x、y 和 z 的可接受值是多少?
- x 和 y 如何对应后台缓冲区的宽度和高度(假设它是渲染目标)?
- x 和 y 如何对应输出纹理的宽度和高度(假设它是渲染目标)?
- 当 x=0 和 y=0 时,顶点在哪里?
- 纹理采样器在 (u, v) 坐标处对纹理进行采样。u 和 v 的可接受值是多少?
- u 和 v 如何与被采样纹理的宽度和高度对应?
- AGAL 的 wrap、clamp 和 repeat 标志如何改变采样,如果没有给出默认行为是什么?
- 在 u=0 和 v=0 采样时,哪个像素按位置返回?
编辑: 根据我的测试,我相信答案是:
- 不确定
- -1 是左/下,1 是右/上
- 不确定
- 在输出的中心
- 不确定
- 0 是左/下,1 是右/上
- 不确定
- 纹理的最左下角