Unity3D — Shader 基础

什么是Shader

Shader就是我们常听到的着色器,专门用来渲染图形的一种技术,在Unity中的所有材质都属于Shader的范畴。

图像渲染管线

应用阶段 CPU

  1. 准备场景数据
  2. 粗颗粒剔除
  3. 设置模型的渲染状态
  4. 输出渲染图元(点、线、三角面)
  5. CPU向GPU发送渲染命令
    1. 数据加载到显存:硬盘HDD=》内存RAM=》显存VRAM
    2. 设置渲染状态:纹理设置、混合设置、透明设置、顶点着⾊器设置、⽚元着⾊器设置等等
    3. 调⽤DrawCall

在这里插入图片描述
批处理减少DrawCall
在这里插入图片描述

几何阶段 GPU

  1. GPU绘制
  2. 输出屏幕空间的顶点信息
  3. GPU流⽔线
    1. 输⼊:顶点数据
    2. 顶点着⾊器
      1. 空间变换
        运算过程:模型空间(模型的中心为原点)=》世界空间(世界的中心为原点)=》观察空间(摄像机为原点)=》裁剪空间(将遮挡部分裁剪不显示)=》屏幕空间(模型的xy坐标对应屏幕上的2D像素坐标)
      2. 顶点着⾊
    3. 曲⾯细分着⾊器:可选着⾊器,细分图元
    4. ⼏何着⾊器:可选着⾊器,逐图元着⾊or产⽣更多图元
    5. 裁剪:裁剪看不到(被遮挡或内部的)的图元
    6. 屏幕映射:图元转换到屏幕坐标系(根据屏幕大小自适应)

光栅化阶段 GPU

  1. ⽣成像素
  2. 渲染最终图像
  3. GPU流⽔线
    1. 三⻆形设置:根据顶点画出三角形
    2. 三角形遍历:根据三角形的顶点坐标计算出那些像素需要被渲染
      在这里插入图片描述
    3. ⽚元着⾊器:逐⽚元的着⾊操作
      在这里插入图片描述
    4. 逐⽚元操作:修改颜⾊、深度缓冲、混合操作
    5. 输出:屏幕图像:根据像素的位置、深度、贴图坐标、法线、切线、颜⾊等输出每个像素的颜⾊、透明度

DX和OpenGL

DirectX :Direct eXtension简称DX,是由微软公司创建的多媒体编程接口。包含图形, 声音, 输入, 网络等模块。
OpenGL :OPENGL是SGI开发的一套三维图形软件包。只是图形函数库。
单就图形而论, DirectX 的图形库性能不如 OpenGL
OpenGL稳定,可跨平台使用。但 OpenGL 多需要显卡支持.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值