在此记录自己每日阅读笔记,详细内容查看《Unity Shader入门精要》的第一章
渲染流程
应用阶段(CPU) | 几何阶段(GPU) | 光栅化阶段(GPU) |
1)数据加到显存中; 2)设置渲染状态; 3)调用drawCall 【顶点数据】 | 【顶点着色器】->【曲面细分着色器】->【几几何着色器】->【裁剪】->【屏幕映射】 | 【三角形设置】->【三角形遍历】->片元着色器->【逐片元操作】 |
输出渲染图元 | 顶点坐标到屏幕坐标 | 产生像素,输出图像。对上一个阶段的逐顶点数据进行插值,再进行逐像素处理 |
顶点着色器(Vertex Shader)
主要工作是坐标变幻和逐顶点光照。那顶点坐标从模型空间转移到齐次裁剪空间(Normalized Device Coordinates也简称NDC)。
注意:opengl和unity中,z分量是[-1,1],direcX是[0,1]
屏幕映射OpenGL和direcX差异
OpenGL是左下是原点,DirectX是左上是原点。
片元着色器(Fragment Shader)
也叫做像素着色器(Pixel Shader,在这一过程中主要是进行纹理采样,以及对颜色等进行插值,从而使得每一个片元都有颜色。
什么是Opengl/DirectX
是图像图形应用编程接口。这些接口联系了底层的图形驱动和上层的应用程序。
简单关系图为:主存->CPU->应用程序->DirectX或者OpenGL->显卡驱动->显卡->GPU