Unity shader学习笔记1 渲染管线


前言

第一篇博客,总感觉还是得把学过的东西都给记录下来,就当写着玩玩了
这几天看了Unity shader入门精要的前几章,总感觉还是有点不懂,先把几个点给写一下吧

渲染管线

Render Pipeline 书里面叫做渲染流水线,大概意思就是指计算机渲染当前场景并将其呈现在屏幕上的一个整体流程,和cpu流水线相似,渲染管线的出现也在很大程度上提高了计算机渲染3维场景的效率(这里的计算机渲染指的是cpu与gpu共同渲染)

1.渲染管线的整体流程

渲染管线分为应用阶段,集合阶段,光栅化阶段三个步骤
在这里插入图片描述
当然每个阶段也是一个单独的流水线系统

a.应用阶段

应用阶段尚还处在cpu的管辖范畴中,由上面的图可以清楚的知道,这一阶段的主要目的是得到一个叫做渲染图元的东西,其解释为“渲染所需要的几何信息”。
在这一阶段中要准备好三个东西
1.场景中的模型,光源,摄像机的位置等
2.粗粒度剔除(culling),即把不可见的物体剔除出去
3.设置每个模型的渲染状态,材质,纹理,着色器(也就是shader)等

b.几何阶段

几何阶段要将从应用阶段得到的渲染图元进行逐顶点,逐多边形的操作,这个操作较为复杂,会将顶点坐标变换到屏幕空间中,得到其二维顶点坐标,以及每个顶点对应的深度值,着色等信息,即图中的输出屏幕空间的顶点信息

c.光栅化阶段

这一阶段的主要任务是将得到的屏幕空间顶点信息转变为屏幕上的像素,即决定每个渲染图元的哪些像素应该被绘制在屏幕上

2.cpu和gpu之间的通信(Draw Call)

a.数据传递

所有渲染所需要的数据都要先从硬盘种被加载到内存中,然后网格纹理等数据又要从内从中加载到显存中

b.设置渲染状态
c.调用draw call

cpu通过draw call命令来告诉gpu开始渲染,gpu就会根据渲染状态和所有顶点数据计算并输出结果到屏幕上

3.GPU流水线

在这里插入图片描述

顶点着色器

两个过程
1.顶点坐标变换
在做顶点动画的时候非常有用,例如布料模拟,水等.abc文件
同时,顶点坐标变换会把顶点变换到其次裁剪坐标系下,即标准化顶点位置(类似于blender里面的ctrl+a应用全部变换)
在这里插入图片描述
2.逐顶点光照
该过程将为每个顶点计算一次光照颜色,然后在通过顶点在多边形所覆盖的区域对像素颜色进行线形插值。(来自bing)(三点成面)

裁剪

顾名思义,将整个场景裁剪得到只有摄像机视野范围这么大一块,完全在视野里面的面保留,完全不在视野里面的面被抛弃,部分在视野里面的面在被裁剪处用两个新的顶点代替。而由于在顶点着色器中我们已经对顶点坐标进行了变换,则裁剪将变得比较容易,把顶点位置在单位立方体内的顶点留下就可以了。

屏幕映射

进行一个类似于顶点坐标变换的变换,这次变化的是图元坐标,将每个图元的x和y坐标转换到屏幕坐标系下,其中存在一个缩放和拉伸的过程。在这里插入图片描述
有意思的是,OpenGL和DirectX的屏幕坐标系是相互镜像的,DirectX的屏幕坐标原点在左上角,OpenGL的屏幕坐标原点在左下角

三角形设置

这是光栅化的第一个阶段,其目的是得到三角形每条边包含的像素坐标(相当于是边的像素,而下一步三角形遍历得到的是面的像素)

三角形遍历

生成片元的阶段,一个一个的片元组成一个片元序列,一个片元包含了其所对应像素的屏幕坐标,深度信息等等

片元着色器

非常非常重要的阶段
根据片元信息计算片元输出颜色

逐片元操作

在这里插入图片描述

总结

文章包含了一个最基本的渲染管线应该包含的内容与步骤,可能不是很详细甚至有错误,欢迎各位大佬批评指正。TA之路任重道远啊

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值