顶点处理与像素着色的相对费用

时间:2013-04-12 17:04:47

标签: directx shader

我即将开发的directX应用程序可以通过两种方式实现 - 一种是我们拥有大量具有相关颜色的三角形,另一种是我们拥有较少数量的三角形,但是通过生成的纹理映射添加细节纹理。

我对GPU硬件足够新,我对这两种方法的代价没有直觉 - 我的猜测是处理大量顶点比少量顶点更昂贵但有一些细节从像素着色器中添加,但在硬件方面无法证明这一点。

任何人都可以解释如何思考这个问题,或者这是否是正确的心态?

任何帮助表示赞赏

Anondev

1 个答案:

答案 0 :(得分:0)

使用大多边形并使用纹理细化它们更有效。这就是纹理映射存在的原因。这是为了使平坦的表面看起来更加细致。凹凸贴图技术通过使光照表现为多边形不平坦来进一步增强效果。

然而,这绝不会像使用多边形那样逼真,因为silouette是扁平等问题。

如果你想象三角形这么小,它们最终会在屏幕上占据一个像素。每个像素必须使用矩阵数学计算其位置,每个多边形将被传递给光栅化器并转换为单个像素,每个像素将被发送到像素着色器。这是很多工作,像素着色器仍然必须运行以计算出这个像素的光照。

如果我们在屏幕上填充了一个大三角形,则只使用矩阵数学转换三个顶点,栅格化器将一个三角形转换为像素。像素着色器的执行次数与前一示例相同。唯一的区别是像素着色器需要进行纹理贴图查找,这相对便宜。