3D渲染中的技术能解决哪些问题?(二)
纹理混合和绑定技术
如果到GPU渲染的时候,GPU会根据用户的需要,给每个**点着色(如果这个词太晦涩,那么就是“上色”)。着色可以是直接的颜色,也可以是从一张图(纹理图)中得到。纹理绑定就是告诉GPU,“这次着色如果遇到要从图中取色,那么你用这张图”。这个在OpenGL和DX都是相关的API供用户调用。纹理混合,先说个简单的例子就是苹果手机上的“毛玻璃”效果,展现出的隐隐约约看到图像后面的背景,就是“混合”出来的。把前景的像素(即将被绘制到屏幕的像素)和背后的像素(已经展现在屏幕上的)用一定的算法加、减、乘在一起,渲染,这样最后的展现出的像素就是前后两个像素的颜色的混合体。纹理混合就是告知GPU需要做这样的事情,可能是多张纹理间混合色彩,可能是跟背景色混合色彩。也对应到OpenGL和DX的不同的API。
空间剪裁
在3D渲染的时候,因为GPU的能力,要解决的问题是每帧喂给它要渲染的东西太多就会导致应用的帧率下降(在mobile上计算量太大以至于长时间满负荷也会导致发热量大,3d渲染插件,电池消耗过快)。因此,3d卡通渲染,对于一个场景中的所有物体,在提交给GPU渲染之前,需要有空间裁剪的方式来快速的去除相机看不到的物体。较基础的也是每个3D引擎必有的是基于相机的平截头体(frustum)的裁剪,也因为只通过平截头体来裁剪的话,大空间的场景会需要消耗很多的CPU资源,所以才产生了其他的如二叉树(Quake使用)、四叉树、八叉树(GB lightspeed使用)以及门(portal)等技术。这些都在平截头体裁剪前发生,用来快速的去除相机看不到的物体。然后剩下的物体再跟平截头体做裁剪计算,如果通过的话才进入GPU进行真正的渲染。