2019-11-16 Shader(一)

1. 渲染管线

计算机从一系列的顶点数据,纹理和信息出发,把这些信息转化为人眼所看到的图像,由CPU与GPU共同完成。

(从三维场景出发,渲染出一张二维图像)

可以分为三个阶段

        1.1 应用阶段

        由CPU负责实现,主要是将场景数据(摄像机,模型,光源)准备好;提高渲染性能(粗粒度提出culling);设置好每个模型的渲染状态            (材质,纹理,shader)。这阶段最重要的输出是渲染图元———由点,线,三角面等等,之后便会传递给几何阶段。

        1.2 几何阶段

        由GPU负责实现,主要是绘制图元相关,怎样/在哪里绘制。

        几何阶段的一个顶点坐标变换到屏幕空间中,再交  给光栅器进行处理。

        这对输入的渲染图元进行多步处理后,将会输出屏幕空间的二维顶点坐标,每个顶点的对应的深度值,着色相关信息,传递给下一个阶段。

        1.3 光栅化阶段 

        由GPU负责实现,主要决定每个渲染图元中的哪些像素应该被绘制在屏幕上。

        它需要对上一个阶段得到的逐顶点数据(纹理坐标,顶点颜色等)进行插值,再进行逐像素处理。

2.CPU与GPU之间的通信

        2.1 把数据加载进显存中

        渲染所需的数据都要从硬盘加载到系统内存,网格和纹理等数据再被加载到显存 VRAM 中。

        这是因为显卡对显存访问速度更快,并且大多数显卡没有直接访问内存的权力。

        2.2 设置渲染状态

        渲染状态定义了场景中网格是怎样被渲染的。(类似于给不同的网格绑定不同的属性,Vertex shader ,fragment shader材质之类的吧)

        2.3 调用Draw call

        Draw call实际上是一个命令,由CPU发给GPU的命令,告诉GPU开始一个渲染过程。(渲染的参数在渲染状态已经绑定好了,Drawcall只    

        负责发信号)被渲染的单位也会由draw call指出。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容