• [UnityShader基础]09.渲染流水线


    参考链接:

    https://zhuanlan.zhihu.com/p/84275265

    渲染流水线,起点是cpu,终点是gpu,分为3个阶段:应用阶段,几何阶段,光栅化阶段

    1.应用阶段(由cpu负责)

    准备要渲染的场景数据,例如SetActive为false的物体,所在层不被相机照射的物体,会被忽略。然后将网格和纹理加载到显存中,设置网格的渲染状态(即怎样渲染该网格,用哪个shader)。在网格和材质准备好后,调用drawcall。

    drawcall,即cpu调用gpu去绘制的过程,前提是同一个网格,同一个材质。回想下动态合批,静态合批,ugui的合批,都有一个合网格的过程

    2.几何阶段(由gpu负责)

    几何阶段主要分为顶点着色器处理,裁剪,屏幕映射

    a.顶点着色器处理:处理顶点,必须完成的一个工作是将顶点坐标从模型空间转换到齐次裁剪空间

    o.pos= UnityObjectToClipPos(v.vertex); 新的API

    o.pos= mul(UNITY_MVP,v.vertex); 旧版本的写法

    b.裁剪:上一步转换到齐次裁剪空间后,就可以进行裁剪操作,将不在相机视锥体内的三角面裁剪掉,与视锥体边界相交的会生成新的顶点

    c.屏幕映射:将裁剪空间的三维坐标转化为屏幕空间的二维坐标

    3.光栅化阶段(由gpu负责)

    光栅化阶段主要分为三角形设置,三角形遍历,片元着色器处理

    a.三角形设置:将上一个阶段输出的顶点连成三角面

    b.三角形遍历:此阶段会遍历屏幕上的每一个像素,检查其是否被一个三角网格所覆盖,若是则会生成一个片元。片元的信息由3个顶点信息进行插值得到,即三角网格的3个顶点的顶点信息对整个覆盖区域的像素进行差值

    片元比像素多了一些额外的数据,如深度值,纹理坐标等

    c.片元着色器处理:处理片元,其中最重要的操作是纹理采样。片元在通过模板测试、深度测试后才能和颜色缓冲区中已存在的像素颜色进行混合,最后再写入颜色缓冲区中

    即片元->模板测试->深度测试->混合->颜色缓冲区

  • 相关阅读:
    git 常用命令
    mac 显示隐藏文件
    android 图片缓存
    字符串与枚举相互转换
    ios 消息通知
    ios 真机调试
    ios 宏定义 系统版本 判定
    autolayout autoresizing
    c++对象创建带括号与无括号的区别
    内存对齐
  • 原文地址:https://www.cnblogs.com/lyh916/p/14169968.html
Copyright © 2020-2023  润新知