介绍
UTS,一个toon shader, 用于进行3DCG动画的卡通渲染。
![](https://img.haomeiwen.com/i18672981/07e72e92abed79ed.png)
使用这一toon shader,可以很简单地产生多种角色设计时的阴影效果,例如强调不同部件间构成所产生的阴影(大概是自有阴影),不需要去担心光源的位置和强度。阴影颜色相关设置也可以让用户更好地去创建不同的阴影颜色。
这一shader最强大的特性在于可以用滑条参数来调整阴影,减少了光源的使用需要。
![](https://img.haomeiwen.com/i18672981/28d41e1654343d47.png)
除Base Color,1st Shade Color和2nd Shade Color外,对于颜色和纹理也有着丰富的可自定义选项,例如High Color,Rim Light,MatCap(球面映射)和Emissive(灯光发光)。
![](https://img.haomeiwen.com/i18672981/26f73c481b4fb70d.png)
颜色间的渐变级别也可以实时调整。
![](https://img.haomeiwen.com/i18672981/8e26060a2a06deab.png)
这一shader对于创建固定阴影有两个选项:Position Map,绑定了每个阴影的投射点,Shading Grade Map,基于光照调整阴影强度。
还有一些其它的便捷工具,例如针对穿过刘海的眼球和睫毛的可见性,这可以强化动画感。
简要而言,UTS2尽量囊括了角色设计时会遇到的情况,从赛璐璐到小说插画光照风格。
当然,也支持Unity自带的阴影系统:
![](https://img.haomeiwen.com/i18672981/de852af099a3a68a.png)
加入后处理的话,UTS2就可以利用NPR尽量还原PBR所能做到的各种效果。
UTS2中的不同shader
根目录下的各种shader
![](https://img.haomeiwen.com/i18672981/72715daa49100d94.png)
包含两类:
-
DoubleShadeWithFeather
:UTS2的标准shader,可以使用两种着色颜色,并在颜色间分级渐变(Feathering)。 -
ShadingGradeMap
:更高级的shader,除上述特性,还使用了一张名为ShadingGradeMap的贴图。
两种类型均有相同的基础特性,匹配颜色(_Step)和分级(_Feather)值可以得到相同的效果。
用哪一个shader完全看个人的想法,不过DoubleShadeWithFeather
更适合颜色区分明显的赛璐璐效果,而ShadingGradeMap
可能更适合模糊颜色分界的小说插图风格。
此外,名字带Toon
前缀的shader名字意味着它可以使用物体反向膨胀渲染的方式创建轮廓效果。
对于轮廓线,UTS2有着许多自定义选项:控制轮廓强度的纹理,与基础颜色混合的级别,基于摄像机的偏移等。
有些shader带有Clipping
的后缀,它表明该shader拥有以下的特性: -
Clipping
:Shader包含一张clipping遮罩图,用于裁剪和消融。 -
TransClipping
:也是一张遮罩图,但考虑了值。
-
StencilMask
:模版缓冲,用于确定哪一部分可见。例如,有些情况下,希望可以透过刘海看见角色的眉毛。和StencilOut
一起使用。 -
StencilOut
:和StencilMask
一起使用。对于上述的例子,这一shader会用来刘海上,让本该看见眉毛的区域不可见。
NoOutline目录下的shader
![](https://img.haomeiwen.com/i18672981/7a1b5e4eddfa5c2a.png)
该目录下的shader前缀为
ToonColor
,这表明这些shader并不能渲染轮廓。
Transparent shader
![](https://img.haomeiwen.com/i18672981/5926981c4bdc3be0.png)
有些
NoOutline
shader有着Transparent
的后缀。这些是特殊的transparency shader,可用于角色的面颊红晕,或者玻璃。
红晕:
![](https://img.haomeiwen.com/i18672981/9f9e8d478f5ff17a.png)
- 设置自定义渲染队列:
AngelRing目录下的shader
![](https://img.haomeiwen.com/i18672981/ca2303dd4f2e67b0.png)
AngelRing
目录下的shader拥有angel ring
特性(大概是画二次元角色时的头发条带高光,诸如此类)![](https://img.haomeiwen.com/i18672981/025a6bcde8de89a9.png)
只有高光
ShadingGradeMap
shader和变体ShadingGradeMap_TransClipping
shader有angel ring
特性。这些shader主要用在毛发部分,归类于
StencilOut
shader,利用模版抠形状。
Mobile目录下的shader
![](https://img.haomeiwen.com/i18672981/ecef94a8f3075450.png)
上述各种shader的简化版,针对移动和VR设备。以下特性会被限制:
- 只能使用一个实时平行光源。
- 点光支持烘焙光和灯光探针,可能需要特定的参数
GI_Intensity
来调节。
Tessellation目录下的shader
![](https://img.haomeiwen.com/i18672981/127caff1007669ba.png)
包含支持DX11 Phong Tessellation的shader。
Phong Tessellation矫正了细分表面的位置,更加贴近网格的法线方向,对于平滑底面模型非常有效。
![](https://img.haomeiwen.com/i18672981/b751e4724326efb4.png)
添加Phong Tessellation可以显著地提升轮廓的质量和各种微小的细节(如嘴唇)。
Helper目录下的shader
![](https://img.haomeiwen.com/i18672981/2c63506019a100ec.png)
用于显示轮廓物体,作为multi-material添加。
![](https://img.haomeiwen.com/i18672981/2688f3aa3f007739.png)
前往网格的
Skinned Mesh Renderer->Materials
部分,Size
提升至1,接着注册相应的轮廓材质。
初始项目设置
推荐
Render Path:Forward
Color Space:Linear
![](https://img.haomeiwen.com/i18672981/85044e1a5db8ecc5.png)
shader自定义面板
![](https://img.haomeiwen.com/i18672981/752eda86229743ff.png)
点击
Show All Properties
可以切换至属性列表面板。![](https://img.haomeiwen.com/i18672981/0d867df56b4c87cf.png)
Basic Shader Settings
![](https://img.haomeiwen.com/i18672981/79f1b7e98194fb28.png)
除基础设置外,还可以指定模版缓冲的引用数,设置剔除模式,使用何种遮罩。
![](https://img.haomeiwen.com/i18672981/651c144ae89e61db.png)
参数 | 用途 | 属性 |
---|---|---|
Culling Mode | 确定多边形哪一面会被剔除。Culling off:不剔除,Culling Front:正面剔除,Culling Back:背面剔除,默认背面剔除。有时候选择Culling off会让法线贴图和光照看起来很奇怪。 | _CullMode |
Stencil No | StencilMask/StencilOut shader使用,确定模版引用数字,0-255之间。 | _StencilNo |
Clipping Mask | Clipping/TransClipping shader使用。裁剪遮罩的灰度值,白色代表不存在。 | _ClippingMask |
Inverse Clipping Mask | 反转Clipping Mask | _Inverse_Clipping |
Clipping Level | 确定clipping mask的强度 | _Clipping_Level |
Transparency Level | TransClipping shader使用,将clipping mask的灰度值作为 |
_Tweak_transparency |
Use BaseMap as Clipping Mask | TransClipping shader 使用,使用BaseMap的A通道 | _IsBaseMapAlphaAsClippingMask |
Option Menu | 可选特性列表 | |
Current UI Type | 点击后,GUI切换到Beginner模式,其中,只能使用基础方法。再次点击,回到Pro/Full Control 模式 | |
VRChat Recommendation | 针对VRChat的最佳设置 | |
Remove Unused Keywords/Properties from Material | 构建项目前,使用此命令会从材质中移除不需要的shader关键字和没有用到的属性。使用后记得保存项目 |
![](https://img.haomeiwen.com/i18672981/d186fa9a278826ae.png)
TransClipping
shader的通用特性和Clipping
一致,不过可以将clipping mask的灰度值作为Basic Three Colors and Control Maps Setups
![](https://img.haomeiwen.com/i18672981/405736b8256a1ec4.png)
这一菜单里定义了几种会用到的基础颜色:Base Color,1st Shade Color,2nd Shader Color。
这些颜色按照光源方向排列:Base Color->1st Shader Color->2nd Shade Color。
每种颜色会与纹理颜色相乘,再与灯光颜色相乘。
注意,Shade Color不一定得比Base Color颜色要深,2nd Shade Color完全可以比1st Shade Color要亮,这样做的话会有着增强环境光反射的效果。
参数 | 用途 | 属性 |
---|---|---|
BaseMap | 确定基础颜色和纹理,两者相乘。如果没有设定纹理,颜色会作为基础颜色使用。点击右侧按钮,会将BaseMap的纹理设置到1st ShadeMap上 | _MainTex,_BaseColor,_Use_BaseAs1st |
1st_ShadeMap | 确定1st Shade Color纹理和颜色,其它类似 | _1st_ShadeMap,_1st_ShadeColor,_Use_1stAs2nd |
2nd_ShadeMap | 确定2nd Shade Color纹理和颜色,其它类似 | _2nd_ShadeMap, _2nd_ShadeColor |
NormalMap Settings
![](https://img.haomeiwen.com/i18672981/4ca45ff5bb01eef4.png)
Normal Map经常用于Shade Color分级,使用Normal Map可以得到比较复杂的分级效果。上图左侧应用,左侧未应用。
此外,法线贴图会和缩放级别一起使用来帮助调整皮肤纹理。如果针对MatCap准备一张法线贴图,可以作为头发纹理使用。
![](https://img.haomeiwen.com/i18672981/d77b612d26b09bd0.png)
使用法线贴图,可以实现许多不同的效果。
![](https://img.haomeiwen.com/i18672981/5279143a1e384cf8.png)
参数 | 用途 | 属性 |
---|---|---|
NormalMap | 指定法线贴图,右侧滑条可以调节强度 | _NormalMap,_BumpScale |
NormalMap Effectiveness | 选择是否将法线贴图反射到颜色上。如果是Off,则不,而是使用几何体本身的结构。 | |
3 Basic Colors | 是否将法线贴图反射到颜色上 | _Is_NormalMapToBase |
HighColor | 是否将法线贴图反射到高光颜色上 | _Is_NormalMapToHighColor |
RimLight | 是否将法线贴图反射到轮廓光上 | _Is_NormalMapToRimLight |
![](https://img.haomeiwen.com/i18672981/756b8ed21d8f0c2b.png)
最好将Base Color/1st Shade Color/2nd Shade Color阶梯设置,以凸显法线贴图凹凸表面的效果。上图例子中,基础颜色step为0.8,Shade Colorstep为0.5,还使用了较黑的Hi-Color来凸显凹凸效果。
Shadow Control Maps
指定position map和shading grade map来调节阴影。
-
DoubleShadeWithFeather Shader
参数 | 用途 | 属性 |
---|---|---|
1st Shade Position Map | 使用Position Map来强制调整1st Shade Color的位置,独立于光照。必须处于阴影的区域为黑色 | _Set_1st_ShadePosition |
2nd Shade Position Map | 使用Position Map来强制调整2nd Shade Color的位置,独立于光照。必须处于阴影的区域为黑色 | _Set_2nd_ShadePosition |
Position Map:
![](https://img.haomeiwen.com/i18672981/e7e9e6873e44ee33.png)
Position Map指定了除光照外阴影的位置。
![](https://img.haomeiwen.com/i18672981/4f0a213f01226e0c.png)
为了显示独立于光照的2nd Shade Color,请确保将1st和2nd Shade Color重叠位置填满。
这样做的话,即使其它光照效果落在2nd Shade Color的区域,还是会继续显示的。另一方面,对于不显示2nd Shade Color的区域,只会被光照所影响。
-
ShadingGradeMap Shader
参数 | 用途 | 属性 |
---|---|---|
ShadingGradeMap | 灰度图,sRGB off | _ShadingGradeMap |
ShadingGradeMap Level | ShadingGradeMap灰度值的级别矫正,默认为0,范围为±0.5 | _Tweak_ShadingGradeMapLevel |
Blur Level of ShadingGradeMap | 使用mip map方法模糊Shading Grade Map,记得开启mipmap设置。默认为0,即不模糊 | _BlurLevelSGM |
何为Shading Grade Map
Toon_ShadingGradeMap
使用UV点控制阴影。
![](https://img.haomeiwen.com/i18672981/e8b257a10c9033cc.png)
在基础toon shader的基础上添加
Shading Grade Map
,可以用UV点控制1st和2nd Shade Color。这一贴图的适用场合类似于光照衣服时隐藏褶皱。图片的黑色部分由Shading Grade Map的2nd Shade Color控制,阴影的投射变化基于灰色部分,取决于黑色部分的密度。灰色密度越大,阴影越容易投射。
将类似于AO图的shading map应用到shading grade map上可以让阴影根据光照投射,这在创建沿发束或衣服褶皱的阴影时非常有用。
Basic Lookdevs:Shading Step and Feather Settings
![](https://img.haomeiwen.com/i18672981/224d73141952bb4a.png)
在这里设置Base Color/1st Shade Color/2nd Shade Color的梯度和羽化强度。除了实时平行光设置,这些是最为重要的设置,它们决定了基础效果,也是区分赛璐璐和插图风格的地方。
Step/Feather 滑条效果
-
DoubleShadeWithFeather Shader
参数 | 用途 | 属性 |
---|---|---|
BaseColor Step | 设置Base Color和Shade Color间的边界 | _BaseColor_Step |
Base/Shade Feather | 羽化Base Color和Shade Color的边界 | _BaseShade_Feather |
ShadeColor Step | 设置1st和2nd Shade Color的边界,如果不使用2nd则设置为0 | _ShadeColor_Step |
1st/2nd_Shades Feather | 羽化1st和2nd Shade Color的边界 | _1st2nd_Shades_Feather |
-
ShadingGradeMap Shader
参数 | 用途 | 属性 |
---|---|---|
1st ShadeColor Step | 设置Base Color和1st Shade Color间的边界 | _1st_ShadeColor_Step |
1st ShadeColor Feather | 羽化Base Color和1st Shade Color的边界 | _1st_ShadeColor_Feather |
2nd ShadeColor Step | 设置1st和2nd Shade Color的边界,如果不使用2nd则设置为0 | _2nd_ShadeColor_Step |
2nd ShadeColor Feather | 羽化1st和2nd Shade Color的边界 | _2nd_ShadeColor_Feather |
System Shadows: Self Shadows Receiving
![](https://img.haomeiwen.com/i18672981/b5b47d71c0afd82e.png)
参数 | 用途 | 属性 |
---|---|---|
Receive System Shadows | 使用Unity的阴影系统的话就设置为Active | _Set_SystemShadowsToBase |
System Shadows Level | 控制Unity的系统阴影级别,默认为0,上下浮动0.5 | _Tweak_SystemShadowsLevel |
Additonal Settings
包含针对ForwardAdd路径下的实时点光组的设置,并不适用于移动/轻量版本。
![](https://img.haomeiwen.com/i18672981/e41079cee9dc5070.png)
参数 | 用途 | 属性 |
---|---|---|
Step Offset for PointLights | 微调灯光步长(边界) | _StepOffset |
PointLights HiCutFilter | 对于在ForwardAdd pass中添加的光源,从其基础颜色区域剔除不需要的高光。 | _Is_Filter_HiCutPointLightColor |
HighColor Settings
![](https://img.haomeiwen.com/i18672981/08b0ebaae6da643c.png)
高光反射自主平行光,当光移动时反射也跟着移动。
![](https://img.haomeiwen.com/i18672981/a76e3ceaa575d712.png)
参数 | 用途 | 属性 |
---|---|---|
HighColor | 指定高光颜色,不使用的话设定为黑色(0,0,0)。可以使用纹理。 | _HighColor,_HighColor_Tex |
HighColor Power | 调整高光颜色范围 | _HighColor_Power |
Specular Mode | 如果Active,镜面反射高光,如果关闭,则绘制为圆形 | _Is_SpecularToHighColor |
Color Blend Mode | 如果是Additive,将高光加到基础颜色上。如果是Multiply,则将高光颜色乘上基础颜色 | _Is_BlendAddToHiColor |
ShadowMask On HighColor | 如果Active,遮蔽阴影处的高光 | _Is_UseTweakHighColorOnShadow |
HighColor Power On Shadow | 调整阴影处的高光强度 | _TweakHighColorOnShadow |
HighColor Mask | 基于UV坐标遮蔽高光,白色100%显示,黑色不显示。 | _Set_HighColorMask |
HighColor Mask Level | 调整高光的遮蔽级别,默认为0 | _Tweak_HighColorMaskLevel |
如果想开启实时点光的高光,则将PointLights Hi-Cut Filter设为Off。
![](https://img.haomeiwen.com/i18672981/28ba2eb2ffcb0eec.png)
通过使用HighColorMask,我们可以减弱部分强度过高的高光,常用于颧骨和胸部皮肤。
![](https://img.haomeiwen.com/i18672981/6afa2dcafcc3106f.png)
RimLight Settings
![](https://img.haomeiwen.com/i18672981/7efda03ace05323a.png)
即边缘高光。
![](https://img.haomeiwen.com/i18672981/56c2ae96f0ae68a5.png)
参数 | 用途 | 属性 |
---|---|---|
RimLight | 如果Active,开启RimLight | _RimLight |
RimLight Color | 指定RimLight的颜色 | _RimLightColor |
RimLight Power | 调节RimLight强度 | _RimLight_Power |
RimLight Inside Mask | 调节RimLight内部遮罩的强度 | _RimLight_InsideMask |
RimLight FeatherOff | 如果Active,关闭RimLight的模糊 | _RimLight_FeatherOff |
LightDirection Mask | 如果Active,只在光源方向显示RimLight | _LightDirection_MaskOn |
LightDirection MaskLevel | 在光源方向调整rim遮罩级别 | _Tweak_LightDirection_MaskLevel |
Antipodean(Ap)_RimLight | 如果Active,在光源反方向显示RimLight | _Add_Antipodean_RimLight |
Ap_RimLight Color | 指定AP RimLight的颜色 | _Ap_RimLightColor |
Ap_RimLight Power | 指定AP RimLight的强度 | _Ap_RimLight_Power |
Ap_RimLight FeatherOff | 如果Active,关闭AP RimLight的模糊 | _Ap_RimLight_FeatherOff |
RimLight Mask | 基于UV坐标遮蔽RimLight,白色全显示,黑色不显示 | _Set_RimLightMask |
RimLight Mask Level | 调节RimLight的遮罩级别,默认为0 | _Tweak_RimLightMaskLevel |
![](https://img.haomeiwen.com/i18672981/f8f46db51c5ec428.png)
RimLight可从摄像机视角观察,包围在物体边缘。RimLight可与光源方向相关,也可反方向。如果只想反向显示,则将rimlight颜色设置为黑色(0,0,0)。
![](https://img.haomeiwen.com/i18672981/3ff122f87b0f9c18.png)
取决于摄像机角度,rimlight可能会想高光一样强烈。可以使用RimLight 的遮罩来让其暗淡些。上图中,光源方向和光反射方向的RimLight的颜色均被改变。
![](https://img.haomeiwen.com/i18672981/0040f83dfe754a49.png)
MatCap:Texture Projection Settings
![](https://img.haomeiwen.com/i18672981/5a3c60e05eb1a634.png)
MatCap是基于摄像机的球面贴图,可以应用到物体上。
![](https://img.haomeiwen.com/i18672981/0e9cdcccfe54eb52.png)
参数 | 用途 | 属性 |
---|---|---|
MatCap | 如果Active,则开启MatCap | _MatCap |
MatCap Sampler | 设定MatCap使用的纹理,与右侧设置的颜色相乘。 | _MatCap_Sampler,_MatCapColor |
Blur Level of MatCap Sampler | 使用mipmap方法模糊MatCap_Sampler。 | _BlurLevelMatcap |
Color Blend Mode | 如果是Additive,MatCap混合会设置为Adding模式,更亮。如果是Multiply,设置为Multiplication模式,更暗。 | _Is_BlendAddToMatCap |
Scale MatCapUV | 缩放matcap中心的圆来调节UV,以调节MatCap的范围 | _Tweak_MatCapUV |
Rotate MatCapUV | 基于中心旋转MatCap Sampler | _Rotate_MatCapUV |
CameraRolling_Stabillizer | 如果Active,避免Matcap因摄像机沿深度轴方向旋转而旋转。 | _CameraRolling_Stablizer |
NormalMap for MatCap | 如果Active,指定一张法线贴图,如果想用MatCap进行镜面光照,我们可以使用这个进行遮蔽操作 | _Is_NormalMapForMatCap |
NormalMap | 法线贴图和缩放 | _NormalMapForMatCap,_BumpScaleMatcap |
Rotate NormalMapUV | 基于中心点旋转MatCap的法线贴图UV | _Rotate_NormalMapForMatCapUV |
MatCap on Shadow | 如果Active,遮蔽阴影处的MatCap区域 | _Is_UseTweakMatCapOnShadow |
MatCap Power On Shadow | 调节阴影内MatCap的范围 | _TweakMatCapOnShadow |
MatCap Projection Camera | 指定视窗内摄像机的投影类型。在透视投影时可以使用摄像机畸变矫正 | _Is_Ortho |
Matcap Mask | 设置MatCap的灰度遮罩,调整MatCap的显示程度。MatcaoMask基于MatCap会投影到的网格的UV坐标进行摆放。黑色被遮蔽,白色则不 | _Set_MatcapMask |
Matcap Mask Level | 调整MatcapMask的强度,值为1,100%显示。值为-1,不会显示。默认为0 | _Tweak_MatcapMaskLevel |
Inverse MatcapMask | 如果Active,反转MatcapMask | _Inverse_MatcapMask |
![](https://img.haomeiwen.com/i18672981/e4d56aee0a206d28.png)
上述例子中,Matcap作为环境相似贴图使用。
使用Matcap,可以创建光滑表面的光照反射效果,同时保持插画风格。
![](https://img.haomeiwen.com/i18672981/f63c759618ca376b.png)
上述的例子中,MatCap,MatCap的NormalMap,MatcapMask都被用来表现头发上的光反射。
![](https://img.haomeiwen.com/i18672981/e64ce6264b9fa8dc.png)
AngelRing Projection Settings
![](https://img.haomeiwen.com/i18672981/3357c88244811628.png)
Angel Ring是一种固定位置的高光。
![](https://img.haomeiwen.com/i18672981/f3533b93b1ed0798.png)
Angel Ring受投射网格的UV2影响,制作时记得搞两套UV。
![](https://img.haomeiwen.com/i18672981/aab18b38f282ec4d.png)
参数 | 用途 | 属性 |
---|---|---|
AngelRing Projection | 如果Active,打开Angel Ring | _AngelRIng |
AngelRing | 指定纹理和颜色,二者相乘 | _AngelRing_Sampler,_AngelRing_Color |
Offset U | 调整Angel Ring水平方向的形状 | _AR_OffsetU |
Offset V | 调整Angel Ring垂直方向的形状 | _AR_OffsetV |
Use a channel as Clipping Mask | 如果Active,将AngelRing纹理的 |
_ARSampler_AlphaOn |
- 为Angel Ring创建材质
首先,为头发网格设置2UV。AngelRing的UV独立于纹理UV,从角色正面正交投影创建。
将AngelWing的UV作为引导,绘制高光纹理,高光颜色会被添加到初始颜色上。将创建的纹理注册为AngelRing_Sampler。
也可以用白色绘制高光,在AngelRing_Color里设置颜色。
如果开启Usechannel as Clipping Mask,我们可以使用AngelRing纹理里的
通道作为clipping mask。
Emissive:Self-luminescene Settings
![](https://img.haomeiwen.com/i18672981/d958a8c0e752d36b.png)
通过定义Emissive的HDR颜色,可以创建更亮的部分。
![](https://img.haomeiwen.com/i18672981/114e5f89e2e00bbc.png)
将其作为后处理效果绑定到摄像机上。
![](https://img.haomeiwen.com/i18672981/49026c6bbb372353.png)
参数 | 用途 | 属性 |
---|---|---|
Emissive | 指定Emissive的纹理。右侧的颜色会与纹理颜色相乘。大多数情况下,如果不想自发光则将HDR Color设置为黑色 | _Emissive_Tex.rgb,_Emissive_Color |
The |
|
_Emissive_Tex.a |
Emissive Animation | 设置为Active,则可设置动态发光颜色。如果alpha通道是遮罩则不行 | EMISSIVE MODE=ANIMATION |
Base Speed(Time) | 指定动画基础更新速度,1为1s,2为0.5s | _Base_Speed |
UV Coord Scroll,View Coord Scroll | 指定滚动的坐标系。UV Coord Scroll,则基于UV坐标滚动纹理,View Coord Scroll,则基于和MatCap同样的观察坐标滚动 | _Is_ViewCoord_Scroll |
Scroll U direction | 指定沿U方向滚动的程度,主要是控制速度。最终速度BasexUxV | _Scroll_EmissiveU |
Scroll V direction | 沿V方向,同上 | _Scroll_EmissiveV |
Rotate around UV center | 指定沿UV中心坐标(0.5,0.5)旋转的程度。在滚动后计算旋转 | _Rotate_EmissiveUV |
PingPong Move for Base | 设置为Active,则动画方向为PingPong形式(左右或上下来回) | _Is_PingPong_Base |
ColorShift with Time | 设置为Active,则发光颜色与Destination Color线性插值。使用该功能时最好将纹理设置为灰度纹理 | _Is_ColorShift |
Destination Color | color shift的目标颜色 | _ColorShift |
ColorShift Speed(Time) | 设置Color Shift的基础速度,值为1,循环变化一次大约需要6s | _ColorShift_Speed |
ViewShift of Color | 开启后基于观察角度平移颜色,正面正常发光颜色,变换角度后逐渐过渡 | _Is_ViewShift |
ViewShift Color | 变换视角时所变换的目标颜色。 | _ViewShift |
![](https://img.haomeiwen.com/i18672981/f6307ea7575e879c.png)
Outline Settings
![](https://img.haomeiwen.com/i18672981/56111b371b83dd20.png)
我们使用翻转模型(法线反向膨胀,剔除正面)的方法来渲染轮廓线。
![](https://img.haomeiwen.com/i18672981/492886bb12256131.png)
参数 | 用途 | 属性 |
---|---|---|
Outline Mode | 选用轮廓线的模式。可选Normal Direction(法线翻转),Position Scaling(位置缩放)。大多数情况使用Normal Direction,Position Scaling可以避免轮廓截断 | _OUTLINE |
Outline Width | 指定轮廓线的宽度。取决于导入Unity时模型的缩放 | _Outline_Width |
Outline Color | 指定轮廓线的颜色 | _Is_BlendBaseColor |
BlendBaseColor to Outline | 如果想要将轮廓线颜色和物体基础颜色混合则开启 | _Is_BlendBaseColor |
Outline Sampler | 如果想设置轮廓线的起始点(可以理解为压感笔刷的效果)或者只想在特定地方显示轮廓线,则使用outline sampler。最厚为白,最薄为黑 | _Outline_Sampler |
Offset Outline with Camera Z-axis | 沿Z方向偏移轮廓线,如果输入位置值,可以让尖端部分的轮廓线更不明显(如头发末梢),大多数情况下,设为0 | _Offset_Z |
Advanced Outline Settings
![](https://img.haomeiwen.com/i18672981/186fbab1c694d753.png)
参数 | 用途 | 属性 |
---|---|---|
Farthest Distance to vanish | 轮廓线的宽度会根据到摄像机的距离改变宽度。在最远距离时,轮廓线会消失 | _Farthest_Distance |
Nearest Distance to draw with Outline Width | 在最近距离时,轮廓宽度为Outline Width | _Nearest_Distance |
Use Outline Texture | 开启后,将纹理应用到反转轮廓物体上 | _Is_OutlineTex |
Outline Texture | 如果想让轮廓线应用纹理则使用。改变纹理后,可以应用笔刷 | _OutlineTex |
Use Baked Normal for Outline | 开启后,可以开启Baked Normal for Outline | _Is_BakedNormal |
Baked NormalMap for Outline | 法线贴图存有烘焙好的顶点法线,读取后,应用到反转轮廓上 | _BakedNormal |
-
Adjusting the strength of outlines: Outline Sampler
黑色意味着没有轮廓线,白色意味着宽度最大。
- Tracing baked vertices normals:Baked Normal for Outline
读取存有顶点法线的法线贴图,使用这个可以基于法线贴图让硬边模型拥有柔和的轮廓线。
当使用预烘焙法线贴图,轮廓线设置如下:
- Outline Mode设置为"Normal Direction"
- Use Baked Normal for Outline 设置为"Active"
- 法线贴图设置:Default,sRGB off
-
Moving the outline away from the camera : Offset Outline with Camera Z-axis
为Offset Outline with Camera Z-axis设置值,我们可以沿Z方向偏移轮廓线。在尖端部分可以让轮廓线更不明显。
DX11 Phong Tessellation Settings
只能在Windows上使用。
![](https://img.haomeiwen.com/i18672981/bc9152027620b887.png)
参数 | 用途 | 属性 |
---|---|---|
Edge Length | 基于摄像机细分tessellation | _TessEdgeLength |
Phong Strength | 调整tessellation细分的拉伸程度,默认为0.5 | _TessPhongStrength |
Extrusion Amount | 缩放由于tessellation延申的部分。默认为0 | _TessExtrusionAmount |
Tessellation参考https://github.com/Stereoarts/UnityChanToonShaderVer2_Tess。
LightColor Contribution to Materials
用于控制光源对材质中颜色的影响。如果设置为Active则光源会影响像素处的对应颜色。
![](https://img.haomeiwen.com/i18672981/549c1b07f482c3c3.png)
参数 | 用途 | 属性 |
---|---|---|
Base Color | 如果Active,将灯光颜色应用到Base Color | _Is_LightColor_Base |
1st Shade Color | 同上 | _Is_LightColor_1st_Shade |
2nd Shade Color | 同上 | _Is_LightColor_2nd_Shade |
HighColor | 同上 | _Is_LightColor_HighColor |
RimLight | 同上 | _Is_LightColor_RimLight |
Ap_RimLight | 同上 | _Is_LightColor_Ap_RimLight |
MatCap | 同上 | _Is_LightColor_MatCap |
AngelRing | 同上 | _Is_LightColor_AR |
Outline | 同上 | _Is_LightColor_Outline |
Environment Lighting Contributions Setups
![](https://img.haomeiwen.com/i18672981/57aa99d78c48623d.png)
调整环境光的影响,包括环境光(Skybox,Gradient,Color)和灯光探针。
![](https://img.haomeiwen.com/i18672981/a6a0c8e1799be37c.png)
参数 | 用途 | 属性 |
---|---|---|
GI Intensity | 设置为0或更高,会处理Unity的GI系统,尤其是灯光探针。当设置为1,GI Intensity为100%。 | _GI_Intensity |
Unlit Intensity | 如果场景中没有实时平行光,场景亮度和颜色将取决于Environment Lighting's Source Settings,通过Unlit Intensity提升亮度,并作为光源使用(Ambient Blending)。默认为1,0则完全关闭。如果想让环境颜色与材质颜色时则使用,如果想更暗,则设置为0.5-1,如果想更亮,则1.5-2 | _Unlit_Intensity |
SceneLights Hi-Cut Filter | 在灯光亮度过高时,或存在多个实时平行光时,或存在多个实时点光时,减少过度曝光的效果。开启后可以保留灯光颜色和衰减,同时抛弃材质颜色亮度来避免过度曝光。默认为OFF。当使用这一功能时,请确保LightColor Contribution to Materials中的3个基础颜色开关开启,建议VRChat用户开启 | _Is_Filter_LightColor |
Built-in Light Direction | 对于有经验的用户,可以启用Built-in Light Direction矢量(shader中的虚拟光源)。当启用后,其亮度和颜色与场景中的实时平行光一致,如果没有,则ambient blending的值会被使用 | _Is_BLD |
Offset X-Axis Direction | 左右移动虚拟光源 | _Offset_X_Axis_BLD |
Offset Y-Axis Direction | 上下移动虚拟光源 | _Offset_Y_Axis_BLD |
Inverse Z-Axis Axis Direction | 前后移动虚拟光源 | _Inverse_Z_Axis_BLD |
-
Decide the light probe's brightness:GI Intensity
左侧:GI Intensity=0,右侧:GI Intensity=1。当提升GI强度,会将灯光探针的颜色添加到材质颜色上。
上面的例子是舞台上放置烘焙点光和灯光探针的效果。
GI Intensity设置为0及以上,可与类似灯光探针的GI系统兼容。
使用其它光源在场景中烘培的灯光探针会作为额外的颜色添加到材质颜色上。当设置为1,灯光探针颜色为100%,0则完全是材质颜色。
GI Intensity=0
GI Intensity=1
网友评论