Metal片段着色器解惑:插值颜色、纹理采样与调用次数
Metal渲染管线中片段着色器的核心疑问解答
片段着色器的调用次数
答案是10次。
光栅化阶段会为三角形覆盖的每一个屏幕像素生成一个片段,每个片段都会触发一次片段着色器的调用。你之前的误解混淆了顶点属性插值和片段着色器的执行时机:实际上,顶点着色器先处理3个顶点,输出顶点位置、颜色、UV等属性;然后光栅化阶段会自动对这些顶点属性(比如颜色、UV)进行插值,得到每个片段对应的属性值;最后每个片段带着插值后的属性数据,单独调用一次片段着色器。
比如纹理采样场景,每个片段拿到的是插值后的UV坐标,这样才能正确采样对应像素位置的纹理颜色——这也侧面证明了片段着色器是按每个被覆盖的像素(片段)来调用的。
片段(Fragment)的定义
片段不是包含三个顶点的结构,它本质上是单个像素的候选渲染单元。
每个片段对应屏幕上的一个像素位置,同时携带了该位置通过顶点属性插值得到的所有数据(比如颜色、UV坐标、深度值、法线等)。片段着色器的工作就是基于这些插值后的数据,计算出该片段最终的颜色,后续经过深度测试、混合等步骤后,才会写入颜色缓冲成为屏幕上的实际像素颜色。
内容的提问来源于stack exchange,提问作者Philip Pegden
相关产品推荐
相关产品推荐

