我需要帮助理解 Apple Metal 管道中的基本概念。
假设我要渲染一个三角形,由三个点 R、G 和 B 组成。我们还假设每个点都有一个与之关联的颜色 - 与其名称相对应。我们设置顶点着色器来简单地传递顶点位置和颜色而不进行修改。
管道现在对三角形进行栅格化 - 假设它覆盖了屏幕上的 10 个像素。现在这就是我的困惑所在 - 片段着色器......
如果我的片段着色器只返回顶点的颜色,那么 Metal 将在每个角的颜色之间进行插值。我天真的假设是 Metal 会为每个顶点调用一次片段着色器,然后使用生成的颜色来插值每个像素的值。
但是,如果我在片段着色器中对纹理进行采样,则需要传递 uv 空间中每个像素的位置,而不是原始顶点的数据,因此我可以从纹理中查找/采样正确的颜色着色器。
我想问同样问题的一个愚蠢的方式是:片段着色器被调用 3、10、30 或其他次数的频率是多少?或者更愚蠢 - 什么是片段:单个像素,还是包含需要着色的 3 个顶点和像素的结构?