美文网首页
着色器的渲染流程

着色器的渲染流程

作者: Gumball_a45f | 来源:发表于2020-07-07 13:43 被阅读0次

    着色器的分类

    • 顶点着色器(必要):是最初用来处理顶点坐标的,一般会对坐标做一些计算
    • 细分着色器(可选):描述物体的形状,在管线中生成新的几何体处理(平顺)模型生成最终形态
    • 几何着色器(可选):是对原坐标进行一些修改,个人感觉适用于一些特效
    • 片元着色器(必要):是对图形进行涂色,并最终输出
      其中顶点着色器和片元着色器是我们必须要要使用的,然而细分着色器和几何着色器我们是可选的,一般用的很少。

    着色器的渲染流程图:


    着色器的渲染流程.png
    1. 拿到顶点数据传给顶点着色器,顶点着色器根据你的投影等等不同的情况进行处理一番
    2. 顶点着色器处理完了之后交给细分着色器,生成新的几何体处理(平顺)模型生成最终形态,对所有的图像进行修改几何图元类型或者放弃所有的凸缘
    3. 然后交给几何着色器对原坐标进行一些修改(一般用于特效方面的)
    4. 接着进行图元设置,其实可以理解为描述图片到底长啥样
    5. 接下来进行剪切,剪切顾名思义就是剪切视口之外的绘制
    6. 下面就是光栅化,光栅化就是输入图元的数学描述,转化为与屏幕对应的位置像素片元。其实很好理解,就是把这个图片切成一个个的像素点然后交给片元着色器
    7. 片元着色器就会处理每一个像素点,给每一个像素点进行着色,其实就是片元颜色以及深度值传递到片元测试和混合模块。所以说有多少个像素点就要执行多少次片元着色器。

    管线

    其实我们通俗的理解,上面说的这个流程就是管线。管线也是分两类的:


    image.png

    固定管线:OpenGL刚出来的时候,大家都是用的固定管线,就是所有的流程都是固定死了的,你就只能按照这个顺序来,中间的过程你不用管。但是随着后面的业务场景越来越丰富,固定管线已经无法满足需求了,于是出现了可编程管线。
    可编程管线:顾名思义就是可以编程的管线,那么哪一些着色器是可以编程的呢?到目前为止,我们能够通过GLSL语言编程的着色器是顶点着色器和片元着色器。

    相关文章

      网友评论

          本文标题:着色器的渲染流程

          本文链接:https://www.haomeiwen.com/subject/flkaqktx.html