一、逐顶点计算和逐像素计算
1.1逐顶点计算
在vertex函数中进行的计算就叫逐顶点计算,该计算量只和模型的顶点数量或面的数量有关,而和其他因素(如模型在屏幕上的大小)无关。在unity的表面着色器中,逐像素的计算发生在vertex:vertexfunction所确定的函数中。
1.2逐像素计算
在fragment函数中进行的计算就叫逐像素计算,这个计算量和模型的具体顶点数量以及面数无关,而和物体在屏幕上的大小有关。而3个点确定的面经过栅格化之后,往往会产生成百上千的像素,因此逐像素和逐顶点计算的计算量往往相差数个数量级。逐顶点计算和逐像素计算是着色器计算、渲染优化的重点。
1.3如何在这两个概念中取舍
尽量把计算移动到vertex函数中,同时使逐像素计算的面在屏幕上尽量小。另外在移动平台的顶点数不要超过10的6次方。在PC上要限制在10的7次方级别内。
二、绘制调用的意义
2.1绘制调用的概念
绘制调用是CPU为GPU准备渲染数据并令GPU进行一次渲染的操作。这是系统的一个底层操作,涉及大量的数据生成和前期准备,因此是重量级的。
2.2正确理解绘制调用对开发应用的意义
绘制调用是一个重要指标,具体就是CPU和GPU交互、协同的一个重要指标,或者说是瓶颈。它终究只是CPU和GPU交互效率 一个指标,并不是一切。对于GPU来说,一次绘制调用的消耗还是具体看绘制调用的内容,也就是着色器的具体代码。