Games101 图形学入门笔记

渲染管线

步骤总览

顶点的变换投影=》光栅化,深度测试成每个像素=》FrameBuffer的输出 组成一个完整的实时渲染管线,当然这些其实现代渲染中是GPU也就是硬件所做的事情

演示图片

第一步MVP投影变换,发生在顶点阶段

演示图片

像素光栅化操作,逐像素采样,是否在三角形内,发生在光栅化阶段

演示图片

深度测试,光栅化操作中的像素是否可见/遮挡,属于光栅化阶段

演示图片

这里着色是可以看到是发生在顶点和像素阶段,是因为我们可以使用不同的着色频率,前面提到的三种,有的是发生对顶点进行着色,有的是对像素进行着色,所以这里都有可能会发生,然后现代渲染中在这两个阶段的着色是允许可编程的,就是你可以通过代码来决定这个顶点或者像素着色的结果是怎么样的,这个编程的代码就叫Shader

演示图片

Shader

先说明 不管是顶点着色器(vertex shader),还是像素着色器(pixels shader),都是对每一个顶点或者像素进行操作,所以只需要写一份对应的shader即可,每个像素或顶点都是按这个流程来执行,下面演示的是OpenGL 的Shader语言 GLSL写的一个PS的示例代码

演示图片

演示图片

推荐的在线执行Shader代码的网站,只需要写Shader代码以后就可以显示结果

演示图片

GPU现在对于光栅化等操作已经内置全部支持,然后支持可对顶点/像素着色可编程,还有一些其他Shader,如几何着色器(geometry shader),计算着色器(compute shader),下图是独立显卡 和 集成显卡

演示图片