关闭

关于shaderLab中 tags(标签)

标签: tags
2504人阅读 评论(0) 收藏 举报
分类:

SubShader内部可以有标签(Tags)的定义。Tag指定了这个SubShader的渲染顺序(时机),以及其他的一些设置。

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”
2. “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组件的投影。
Pass的Tag

最重要Tag是 “LightMode”,指定Pass和Unity的哪一种渲染路径(“Rendering Path”)搭配使用。除最重要的ForwardBase、ForwardAdd外,这里需额外提醒的Tag取值可包括:
1.Always,永远都渲染,但不处理光照。
2.ShadowCaster,用于渲染产生阴影的物体。
3.ShadowCollector,用于收集物体阴影到屏幕坐标Buff里。
另外关于Shader中的数据类型 有三种数据类型 float、half、fixed。
这3种基本数值类型可以再组成vector和matrix,比如half3是由3个half组成、float4x4是由16个float组成。
(1) float:32位高精度浮点数。
(2)half:16位中精度浮点数。范围是[-6万, +6万],能精确到十进制的小数点后3.3位。
(3)fixed:11位低精度浮点数。范围是[-2, 2],精度是1/256。
数据类型的精度够用就好。例如,颜色和单位向量,使用fixed;其他情况,尽量使用half(即范围在[-6万, +6万]内、精确到小数点后3.3位);否则才使用float。
(4)saturate 是指 饱和处理,大于1就变成1,小于0就变成0

1
0
查看评论

【Unity5.x Shader】SubShader Tags 标签

ShaderLab: SubShader TagsSubshaders使用标签来告诉引擎如何以及何时将其渲染。语法:Tags { "TagName1" = "Value1" "TagName2" = "Value2" }...
  • TreePulse
  • TreePulse
  • 2016-12-07 11:52
  • 1967

Unity Shader Tags

Tags 表面着色器可以被若干的标签(tags)所修饰,而硬件将通过判定这些标签来决定什么时候调用该着色器。比如我们的例子中SubShader的第一句 Tags { "RenderType"="Opaque" } 告诉了系统应该在渲染非透明物体时调用我们...
  • ak4100
  • ak4100
  • 2016-04-22 15:57
  • 1143

Unity3d shader中Queue 使用渲染队列进行深度排序

为了让我们真正明白透明度,我们需要了解一下深度排序,或者说,对象的绘制顺序。Unity允许我们控制一个特定对象绘制到屏幕上的顺序,因此我们可以更好地控制哪些对象应该覆盖在其他对象上。你可以把绘制顺序理解成Photoshop中的图层的概念。在处理透明度或者类似界面对象的元素时,绘制顺序尤其重要。 ...
  • e295166319
  • e295166319
  • 2016-08-31 17:29
  • 4183

Shader山下(十九)标记Tag

Unity Shader里的Tag分为两种,一种是子着色器(SubShader)Tags,一种是通道(Pass)Tags。 我们使用Tag告诉渲染引擎我们期望什么时候渲染这些子着色器或者通道,以及怎么样渲染(既然是期望,那么渲染引擎也可能不答应,那么就靠Fallback了)。
  • ecidevilin
  • ecidevilin
  • 2016-10-20 10:58
  • 1149

unity3d shader中RenderType的所有类型

Opaque: 用于大多数着色器(法线着色器、自发光着色器、反射着色器以及地形的着色器)。 Transparent:用于半透明着色器(透明着色器、粒子着色器、字体着色器、地形额外通道的着色器)。 TransparentCutout: 蒙皮透明着色器(Transparent Cutout,两个通道...
  • nnsword
  • nnsword
  • 2014-01-04 11:51
  • 13932

shaderlab中RenderType的意义

SubShader     {         Tags {"Queue"="Transparent" "IgnoreProjector"="True" &qu...
  • zmafly
  • zmafly
  • 2016-04-13 10:25
  • 1663

Unity3d开发(一)ShaderLab 入门 语法格式

ShaderLab 是Unity3d自己封装的一个调用CG/HLSL/GLSL的接口。这篇文章主要记录一下基本的用法.
  • fansongy
  • fansongy
  • 2015-09-21 21:00
  • 5322

Shader特效——实现“HDR”效果【GLSL】

参考自:http://www.qqread.com/soft-engineering/q372752_7.html 原图: 效果图: 第一个Pass的片元着色器: uniform sampler2D Texture0; const vec2 texSize = vec2(2...
  • panda1234lee
  • panda1234lee
  • 2016-08-08 22:42
  • 1709

Unity 自动添加tag,SortingLayers,Layer

momo大神的文章已经写得很详细了,但文章的代码在新版本里已经无法运行了,前几天整理公司SDK,看到自动添加tag的地方,参照momo的做法整理了一版。顺便扩展了一些功能,这里贴出来供大家参考 using UnityEditor; using UnityEngine; public clas...
  • mc572324257
  • mc572324257
  • 2017-05-03 17:16
  • 513

【Unity Shaders】Transparency —— 使用alpha通道创建透明效果

本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。========================================== ...
  • candycat1992
  • candycat1992
  • 2014-06-05 16:07
  • 50456
    个人资料
    • 访问:10627次
    • 积分:239
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:6篇
    • 译文:0篇
    • 评论:0条
    文章分类