金属片段着色器概念:插值颜色与纹理

问题描述 投票:0回答:1

我需要帮助理解 Apple Metal 管道中的基本概念。

假设我要渲染一个三角形,由三个点 R、G 和 B 组成。我们还假设每个点都有一个与之关联的颜色 - 与其名称相对应。我们设置顶点着色器来简单地传递顶点位置和颜色而不进行修改。

管道现在对三角形进行栅格化 - 假设它覆盖了屏幕上的 10 个像素。现在这就是我的困惑所在 - 片段着色器......

如果我的片段着色器只返回顶点的颜色,那么 Metal 将在每个角的颜色之间进行插值。我天真的假设是 Metal 会为每个顶点调用一次片段着色器,然后使用生成的颜色来插值每个像素的值。

但是,如果我在片段着色器中对纹理进行采样,则需要传递 uv 空间中每个像素的位置,而不是原始顶点的数据,因此我可以从纹理中查找/采样正确的颜色着色器。

我想问同样问题的一个愚蠢的方式是:片段着色器被调用 3、10、30 或其他次数的频率是多少?或者更愚蠢 - 什么是片段:单个像素,还是包含需要着色的 3 个顶点和像素的结构?

metal
1个回答
0
投票

光栅化阶段将抓取Vertex生成的顶点 着色器,它会找到三角形覆盖了哪些像素。 这些像素将被发送到片段着色器。

片段着色器负责将这些像素变成真实的 输出的彩色像素,每个像素运行一次着色器 光栅化阶段发送给它。仅其像素的片段 中心在三角形内被渲染。

© www.soinside.com 2019 - 2024. All rights reserved.