《UnityShader入门精要》总结(1)理论篇

本文深入探讨Unity的渲染流程,包括应用、几何和光栅化三个阶段,详细解释了顶点、曲面细分和几何着色器的作用。接着,介绍了UnityShader的结构和常用元素,如Title、Properties、Subshader和Pass,以及表面着色器与顶点/片元着色器的区别。最后,讲解了Unity中的数学基础,如笛卡尔坐标系、向量和矩阵运算,为理解Shader的实现打下基础。
摘要由CSDN通过智能技术生成

紫色:大类概念或简短有力的总结

蓝色:细分概念或重要部分

红色:重要的补充注释

第二章:渲染流程与流程分工

渲染的流程分三个阶段:

应用阶段(开发者控制阶段)

由开发者全权进行管理,控制场景内摄像机位置,需要用到的模型以及他们的位置.在布置结束后DrawCall进入下一阶段(由CPU发布渲染指令被称为DrawCall)

几何阶段(3D转2D阶段)

由GPU进行管理,将所有3D物体坐标进行变换,输出2D坐标并传输到下一阶段

光栅化阶段(将图像渲染到屏幕上)

由GPU进行管理,根据坐标决定要如何渲染,并将处理好的图像绘制在屏幕上

 几何阶段过程详解

顶点着色器:将顶点进行空间变换并着色

曲面细分着色器:用于细分图元

几何着色器:产生更多图元或对图元依次着色

裁剪:将不在摄像机范围内的顶点去除掉,并去除一些三角图元的面片

屏幕映射:把每个图元的x和y坐标转换到屏幕坐标系下

光栅化阶段过程详解

三角形设置:计算由几何阶段传过端点而构成的三角形的边的坐标

三角形遍历:检查每个像素是否被三角网格所覆盖

片元着色器:将片元逐一着色

逐片元操作:将片元依次渲染,不可编程但可配置.对片元进行测试通过后可对片元进行各种重要操作.如修改颜色,颜色混合等(若未通过测试则舍弃片元)

 模板测试:

读取模板缓冲区该片元的位置,然后和读取到的参考值进行比较

开发者可对比较函数进行配置。如小于参考值时舍弃,或大于等于时舍弃

不管片元有没有通过测试,开发者都可以根据测试结果修改模板缓冲区

常用于实现阴影效果

深度测试:

GPU将该片元的深度和深度缓冲区的数值进行比较,常用于实现透明效果

当一个片元完成了以上测试,就进入了混合(合并)环节

在渲染时,因为物体是逐一被绘制到屏幕上的,而每个像素的颜色都被保存在颜色缓冲区

那么当我们执行下次渲染时,是要直接替换掉之前的颜色,还是和之前的颜色进行一些混合操作?

对于不透明物体,开发者可以关闭混合。这样,由于绘制时会覆盖掉之前的像素,绘制到屏幕上的结果就是不透明的。反之,通过混合操作可以让物体看起来像是透明

章节总结:

阶段与各环节流程

渲染流程的三个阶段.在应用阶段由开发者自由配置

在几何阶段由GPU进行空间转换.将端点坐标计算好来为光栅化阶段做准备

光栅化阶段负责

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值