Unity Shadow代理

几乎没有什么可以使场景像阴影一样生动。 不幸的是,在游戏开发人员中,阴影可能很沉重,并且如果操作不当,就会成为影响性能的少数因素之一。 缺少阴影可能比缺少AO,镜面反射或静态反射(组合?!)更为明显。 但是,许多开发人员在涉及到它们时会妥协。

问题

设置阴影横冲直撞,将使您陷入很多抽签和三角形的困境。 投射阴影时,高多边形的汽车,树木和山羊非常沉重,尤其是在这些网格物体很多的情况下。

为此,Unity资产存储中有一些不错的影子产品,但是它们有其​​局限性。 因此,通常您会发现自己回到了最初的问题上。

因此,高多边形模型的默认阴影在计算上可能会非常昂贵,而商店中可用的阴影可能并不完美,甚至不够好。 如果您正在尝试制作一款轻型游戏或正在为移动设备开发,那么您是否还可能会忘记实时阴影并适应古老的阴影投影仪?

阴影投影仪有很好的用途。 但不是! 他们够了吧?

一个办法

这是我用于实际的实时阴影的一种方法:不要让高多边形网格(例如精细的建筑物)投射任何阴影。 取而代之的是,在建筑物内部使用大小相等但非常低的多边形网格,并在其内部使用普通的漫射着色器来投射阴影。

您可能不会说出差异,因为阴影是非常二维的。 它们缺乏照明功能,因此您所需要的只是低多边形网格所提供的轮廓,其精度就足够了。

这是一种非常聪明但标准的技术,称为阴影生成。 直到最近我在CryEngine文档页面中遇到该术语时,我才知道该术语。

确保代理位于实际的网格内,因为您不希望影子代理可见。 但是,如果要投射阴影的网格不是封闭的网格怎么办? 说,一棵树?

在Unity 5及更高版本中,网格渲染器组件的阴影设置中的“仅阴影”选项可用。这些对象仅投射阴影而不被渲染。 如果您使用的是Unity 4或更低版本,请尝试将其保存在着色器文件中:

 着色器“透明/不可见ShadowCaster” 
{
着色器
{
UsePass“ VertexLit / SHADOWCOLLECTOR”
UsePass“ VertexLit / SHADOWCASTER”
}
 后退 
}

您想让松树投下阴影,但每棵都是2000多头,而其中有20多头? 现在,您只需要一个四边形上的广告牌纹理即可用作阴影代理。

如果您将影子代理与实际角色一起安装和设置动画,该技巧将非常适用于汽车,建筑物甚至动画角色。

凉! 您一直阅读。 这是一首关于阴影的歌!

更多关于我