技术美术TA之渲染路径

本文是视频课程《Unity技术美术TA:Shader篇》,算是对自己学习的总结,也希望分享下所学知识~~

渲染路径:
为进行光照计算而设计的渲染方式

Unity有哪些?

1.前向渲染路径(Forward Rendering Path)
默认的

2.延迟渲染路径(Deferred Rendering Path)
将着色计算进行延后处理的一种渲染方式

两个Pass:
a.几何处理 G-BufferPass

  • RT0,ARGB32:Diffuse
    RGB:Color,漫反射颜色
    A:Occlusion,环境光遮蔽
  • RT1,ARGB32:Specular
    RGB:Color,高光颜色
    A:Roughness,粗糙度
  • RT2,ARGB2101010:WorldSpace
    RGB:Normal,法线坐标
  • RT3,ARGB2101010
    RGB(HDR):Emmision+Lighting+Lightmap+Reflection Probe
  • RT4,ARGB32(shadowmask专用)
    Light Occlusion
  • Depth+Stencil Buffer,深度+模板缓存

b.光照处理 Lighting Pass
只需渲染出一个屏幕大小的二维矩形
使用G-buffer中存储的数据对此矩阵的每一个片段进行光照计算

优点:
a.影响一个物体的光源数量是没有限制的
b.每个光源都是逐像素级别
缺点:
a.不支持半透明效果
b.不支持抗锯齿
c.内存开销比较大
d.不支持正交相机(支持 fallback)

支持条件
a.显卡必须支持 Multiple Render Targets(MRT)多渲染目标
b.ShaderModel在3.0以上
c.手机在OpenGL3.0以上

3.顶点照明渲染路径(Vertex Lit Rendering Path)

优点:
a.性能最优
b.支持的硬件最广
c.一个物体仅渲染一次,所有光照计算都在顶点执行
缺点:
a.不支持下像素级别的级别,比如阴影、高质量高光等


Shader中如何区分渲染路径?
Unity 可以通过设置决定

设置之后 shader如何识别的?

//如果不标记就会在任何渲染管线下都执行
// 如:LightMode = ForwardBase  只会在前向渲染执行
Tags { "LightMode" = "XXX" }

LightMode有哪些?
Always:默认
ForwardBase:前向渲染中的基础Pass
ForwardAdd:前向渲染中的额外Pass
Deferred:延迟渲染
ShadowCaster:渲染对象的shadowmap或者depthTexture
MotionVectors:用于计算物体的MotionVectors
PrepassBase:旧的延迟渲染
PrepassFinal:旧的延迟渲染
Vertex:顶点光照渲染(无贴图)
VertexLMRGBM:定点光照(PC 有贴图)
VertexLM:顶点光照渲染(Mobile 有贴图)


Unity中的灯光类型
1.Direction 平型关
2.Point 点灯
3.Spot 聚光灯
4.Area 面光灯,仅用于烘焙


前向渲染路径
最常用的

特点:
一个物体会受到多个灯光影响时,可能会产生一个或者多个 Pass

渲染方式:
1.逐像素(精细,高质量)
2. 逐顶点
3.SH球谐

潜规则:
1.如果一个灯被标记为 Not important,则这个灯会采用逐顶点或SH

2.最亮的平行灯采用逐像素
3.被标记为 Important的等采用逐像素
4.如果上面产生逐像素的灯数量小于工程中的设置数量,会有更多的灯会采用逐像素

两种 RenderMode:
a.ForwardBase
仅用于一个逐像素的平行灯,以及所有的逐顶点与SH(需要实现三种方式)
可以合批,一次渲染出来
越靠近物体中心,效果越好。同一个物体最多支持4个逐顶点照明,后面都走SH
b.ForwardAdd
用于其他所有的逐像素灯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值