Unity常用渲染设置

一.Tags(标签)
通过使用tags来告诉渲染引擎在什么时候该如何渲染他们所期望的效果。注意的是,SubShader和Pass两个地方的Tags的不同.
除了内置标签被统一,你可以使用你自己的标签和使用Material.GetTag函数查询它们。
1.)SubShader Tags
1.”Queue”标签。定义渲染顺序。预制的值为
(1)”Background”。值为1000。
(2)”Geometry”。值为2000。大部分物体在这个队列。不透明的物体也在这里。这个队列内部的物体的渲染顺序会有进一步的优化(应该是从近到远,early-z test可以剔除不需经过FS处理的片元)。
(3)”AlphaTest”。值为2450。已进行AlphaTest的物体在这个队列。 物体都是按空间位置的从远到近进行渲染。
(4)”Transparent”。值为3000。透明物体。
(5)”Overlay”。值为4000。比如镜头光晕。
(6)用户可以定义任意值,比如”Queue”=”Geometry+10”
天空盒在所有不透明物体和所有透明物体之间渲染.实体先前往后,透明先后往前

  1. “RenderType”标签。Unity可以运行时替换符合特定RenderType的所有Shader。Camera.RenderWithShader或者Camera.SetReplacementShader配合使用。Unity内置的RenderType包括:
    (1)”Opaque”:绝大部分不透明的物体都使用这个;
    (2)”Transparent”:绝大部分透明的物体、包括粒子特效都使用这个;
    (3)”Background”:天空盒都使用这个;
    (4)”Overlay”:GUI、镜头光晕都使用这个;
    (5)还有其他可参考Rendering with Replaced Shaders;用户也可以定义任意自己的RenderType字符串。
    3.”ForceNoShadowCasting”,值为”true”时,表示不接受阴影。
    4.”IgnoreProjector”,值为”true”时,表示不接受Projector组件的投影。
  2. "DisableBatching "="True" 关闭了批处理
    https://docs.unity3d.com/Manual/SL-SubShaderTags.html
    2.)Pass Tags
    LightMode 标签定义了光照观点中的pass的任务。查阅render pipeline了解更多细节。这些标签很少手动使用。常用的shader 需要与光照进行互动的Shader写成表面着色器 然后在去关联那些细节
    除最重要的ForwardBase、ForwardAdd外,这里需额外提醒的Tag取值可包括:
    1.Always,永远都渲染,但不处理光照。
    2.ShadowCaster,用于渲染产生阴影的物体。
    3.ShadowCollector,用于收集物体阴影到屏幕坐标Buff里。
    二.Alpha Test (透明度测试)
    Clip(float4 x) 任何给定参数的任何一个分量是负数,舍弃像素
void Clip(float4 x)
{
if(any(x<0))
discard
}

三.Blend(混合)
Blend Off: Turn off blending (this is the default)
Blend SrcFactor DstFactor: 开启混合,并设定混合因子,源颜色 * SrcFactor + 目标颜色 * DstFactor
Blend SrcFactor DstFactor, SrcFactorA DstFactorA: 和上面的类似,只是使用了不同的混合因子来混合透明通道
BlendOp Op: 取代加,可以选择不同的混合方式
BlendOp OpColor, OpAlpha: Same as above, but use different blend operation for color (RGB) and alpha (A) channels.

Blend factors 混合因子总共有十种可选类型
One 值为1,使用此因子来让帧缓冲区源颜色或是目标颜色完全的通过。
zero 值为0,使用此因子来删除帧缓冲区源颜色或目标颜色的值。
SrcColor 使用此因子为将当前值乘以帧缓冲区源颜色的值
SrcAlpha 使用此因子为将当前值乘以帧缓冲区源颜色Alpha的值。
DstColor 使用此因子为将当前值乘以帧缓冲区目标颜色的值。
DstAlpha 使用此因子为将当前值乘以帧缓冲区目标颜色Alpha分量的值。 OneMinusSrcColor 使用此因子为将当前值乘以(1 -帧缓冲区源颜色值) OneMinusSrcAlpha 使用此因子为将当前值乘以(1 -帧缓冲区源颜色Alpha分量的值) OneMinusDstColor 使用此因子为将当前值乘以(1 –目标颜色值)
OneMinusDstAlpha 使用此因子为将当前值乘以(1 –目标Alpha分量的值)

Blend operations :
Add Add source and destination together.
Sub a - b
RevSub b - a
Min Use the smaller of source and destination.
Max Use the larger of source and destination.
例如:BlendOp Min
https://docs.unity3d.com/Manual/SL-Blend.html

三.ZTest 和ZWrite(深度测试和深度写入)

ZWrite On | Off 默认是打开状态,假如深度测试通过,则可以把当前像素的z值写入深度缓冲,当然也可以不写入(ZWrite Off).
ZTest ,深度测试;LEqual ,小于等于.即 当前像素的深度值 <= 深度缓冲区,深度测试通过.

ZTest Less | Greater | LEqual | GEqual | Equal | NotEqual | Always , ZTest Off 等同于 ZTest Always。Never 像素总是不通过

四.Stencil Buffer&Stencil Test(模板缓冲和模板测试)
stencil与颜色缓冲区和深度缓冲区类似,模板缓冲区可以为屏幕上的每个像素点保存一个无符号整数值(通常的话是个8位整数)。这个值的具体意义视程序的具体应用而定。在渲染的过程中,可以用这个值与一个预先设定的参考值相比较,根据比较的结果来决定是否更新相应的像素点的颜色值。这个比较的过程被称为模板测试。模板测试发生在透明度测试(alpha test)之后,深度测试(depth test)之前
每个片元都需要通过模板测试和深度测试,才能显示到屏幕上.

stencil{
Ref referenceValue //设定参考值referenceValue,这个值将用来与模板缓冲中的值进行比较。referenceValue是一个取值范围位0-255的整数。
ReadMask readMask //设定掩码值
WriteMask writeMask //写入模板缓冲时进行掩码操作
Comp comparisonFunction
Pass stencilOperation
Fail stencilOperation
ZFail stencilOperation
}

if(referenceValue&readMask comparisonFunction stencilBufferValue&readMask)
通过片元

Comp,Pass,Fail 和ZFail将会应用给背面消隐的几何体(只渲染前面的几何体),除非Cull Front被指定,在这种情况下就是正面消隐的几何体(只渲染背面的几何体)。你也可以精确的指定双面的模板状态通过定义CompFront,PassFront,FailFront,ZFailFront(当模型为front-facing geometry使用)和ComBack,PassBack,FailBack,ZFailBack(当模型为back-facing geometry使用)

1.comparisonFunction
  Less | Greater | LEqual | GEqual | Equal | NotEqual | Always 和深度测试类似

2.stencilOperation
Keep 保留当前缓冲中的内容,即stencilBufferValue不变。
Zero 将0写入缓冲,即stencilBufferValue值变为0。
Replace 将参考值写入缓冲,即将referenceValue赋值给stencilBufferValue。

IncrSat stencilBufferValue加1,如果stencilBufferValue超过255了,那么保留为255,即不大于255。
DecrSat stencilBufferValue减1,如果stencilBufferValue超过为0,那么保留为0,即不小于0。
Invert 将当前模板缓冲值(stencilBufferValue)按位取反
IncrWrap 当前缓冲的值加1,如果缓冲值超过255了,那么变成0,(然后继续自增)。
DecrWrap 当前缓冲的值减1,如果缓冲值已经为0,那么变成255,(然后继续自减) 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • 探花深迷人, 碎步草不惊。 乘风归香去, 却是造化人。
    北溟爵士小喵阅读 203评论 0 3
  • 生活中,每个人都有自己的社交圈。即使都知道时间是宝贵的,大多数人依旧选择浪费着自己的生命。没有几个人能够有勇气过滤...
    李粨阅读 5,523评论 0 4
  • 一 很多人不喜欢相亲,感觉相亲就是一场交易。但是不得不承认,在这个生活节奏快速的时代,相亲还是比较靠谱的。一场相亲...
    90后女秀才阅读 240评论 0 0
  • 今天我和小一万站在阳台上吃了这顿饭。房间堆满了行李。 晚上扔了好多房间里留下的东西,可是空间就那么小。怎么搞都还是拥挤。
    007写了自己的生活阅读 723评论 15 10