1.1 Unity Shader 入门紧要学习
candycat1992/Unity_Shaders_Bookgithub.com1.2 还有一些图形学的历史可以观看
渲染管线与Shader编程入门_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com1.3 写在开头,曾经好几次想开始unity shader学习,也确实开始过,但是最终都没长久。这次希望可以通过记录的形式督促自己,将学习进行下去。经过几天的资料学习,才了解,在unity shader 中,Unity已经做了大量的工作,所以学会ShaderLab无法代表会图形学shader。但这并不影响我们学习,而且这样上手学些也会更轻松一些。
unity可编程渲染管线。2.1 关于渲染流水线的发展史,个人觉得很有意思,我们都是站在巨人的肩膀上前行的,有大量的人做出的贡献,才能让我们如此轻易的了解这些。如有想详细了解的,请访问参考中视频链接地址观看。
2.2 通俗的讲渲染就是把模型显示到显示器上,中间计算机一系列过程就是流水线。那为何我们要了解渲染流水线?如果我们直接开始编写,那就犹如管中窥豹,不知前因,不知后果,学习难度也会增加。
2.3 如上图可编程部分,在unity中我们比较熟悉的是 顶点着色器和片元着色器,我们默认创建的Unlit Shader就包括这两个部分,也可以看到这两个部分在整个流水线中在什么位置。在顶点着色器中有几个比较重要的事情如下,它保证了顶点信息独立,与GPU并行运算
片元着色器在光栅化阶段中,屏幕显示是以像素为单位,光栅化就是把三角面转化成像素的工程,如下图所示,转化结果单位像素是不能才分显示的,所以三角形面转化后如下图形式,也就是大家常听到的锯齿,关于锯齿的优化算法有很多,大家可以后续查找阅读。
shader unity,
2.4 不可编程但可配置部分包括 剪裁 和 逐片元操作
剪裁用于控制几何体的哪一面会被剔除,其中可配置项包括:
逐片元操作片元要经过各种测试,片元-->模板测试-->深度测试-->混合-->颜色缓冲区
2.4.1 模板测试
unity血条shader,管网讲解 参考博客
Ref 就是参考值,当参数允许赋值时,会把参考值赋给当前像素
ReadMask 对当前参考值和已有值进行mask操作,默认值255,一般不用
WriteMask 写入Mask操作,默认值255,一般不用
Comp 比较方法。是拿Ref参考值和当前像素缓存上的值进行比较。默认值always
unity怎么渲染、Pass 当模版测试和深度测试都通过时,进行处理
Fail 当模版测试和深度测试都失败时,进行处理
ZFail 当模版测试通过而深度测试失败时,进行处理
pass,Fail,ZFail都属于Stencil操作,他们参数统一如下:
2.4.2 深度测试 包括zwrite 和 ztest
unity shader graph、zwrite 分类
zwrite on / off : 开启深度缓冲/关闭深度缓冲(其实就是记录Z值,把最小的Z存放在缓冲中),一般情况不透明的物体都会使用zwrite on 而 半透明的物体都会使用 zwrite off 这样半透明的物体就直接比较ztest了
ztest 分类
less / greater / lequal /gequal / equal / notequal /always(其实就是拿着当前的像素来对深度缓冲中的z值进行比较的条件)
那么他们的情况就有如下几种:
unity书籍。1. 当ZWrite为On时,ZTest通过时,该像素的深度才能成功写入深度缓存,同时因为ZTest通过了,该像素的颜色值也会写入颜色缓存。
2. 当ZWrite为On时,ZTest不通过时,该像素的深度不能成功写入深度缓存,同时因为ZTest不通过,该像素的颜色值不会写入颜色缓存。
3. 当ZWrite为Off时,ZTest通过时,该像素的深度不能成功写入深度缓存,同时因为ZTest通过了,该像素的颜色值会写入颜色缓存。
4. 当ZWrite为Off时,ZTest不通过时,该像素的深度不能成功写入深度缓存,同时因为ZTest不通过,该像素的颜色值不会写入颜色缓存。
2.4.3 混合
unity 渲染,混合操作相关的句法
混合因子(Blend factors)列举
引用博客
Blend SrcFactor DstFactor
以下所有属性都可以作为SrcFactor或DstFactor。其中Source指的是被计算过的颜色,Destination是已经在屏幕上的颜色
三、写在最后
shader。概念性的知识总会让人容易分神,其实可以将整个渲染流水线想象成一个 顶点的闯关游戏,我们可以在顶点着色器和片段着色器中操控顶点玩家自身,在剪裁 和 逐片元操作 中操控顶点躲避环境障碍,最终实现模型以像素的形式渲染到屏幕上,在每一帧中不同顶点的通关成功,在屏幕上展现出不同的界面。在此过程中我们需要掌握的知识有很多,文中很多参数解释来自其他博客,放在这里一是方便查找,二是方便整理理解,详情还请跳转原博客中阅读。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态