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

问题
设置阴影横冲直撞,将使您陷入很多抽签和三角形的困境。 投射阴影时,高多边形的汽车,树木和山羊非常沉重,尤其是在这些网格物体很多的情况下。
- PVS-Studio团队即将取得技术突破,但现在让我们重新检查Blender
- 2018-2019年排名前五的未知模拟游戏,潜力巨大
- Pygame教程#5:简洁的事件编辑器。 为游戏增加可点击性。
- 使游戏精益化,第1部分
- 游戏设计的百万美元问题
为此,Unity资产存储中有一些不错的影子产品,但是它们有其局限性。 因此,通常您会发现自己回到了最初的问题上。
因此,高多边形模型的默认阴影在计算上可能会非常昂贵,而商店中可用的阴影可能并不完美,甚至不够好。 如果您正在尝试制作一款轻型游戏或正在为移动设备开发,那么您是否还可能会忘记实时阴影并适应古老的阴影投影仪?
阴影投影仪有很好的用途。 但不是! 他们够了吧?

一个办法
这是我用于实际的实时阴影的一种方法:不要让高多边形网格(例如精细的建筑物)投射任何阴影。 取而代之的是,在建筑物内部使用大小相等但非常低的多边形网格,并在其内部使用普通的漫射着色器来投射阴影。
您可能不会说出差异,因为阴影是非常二维的。 它们缺乏照明功能,因此您所需要的只是低多边形网格所提供的轮廓,其精度就足够了。
这是一种非常聪明但标准的技术,称为阴影生成。 直到最近我在CryEngine文档页面中遇到该术语时,我才知道该术语。
确保代理位于实际的网格内,因为您不希望影子代理可见。 但是,如果要投射阴影的网格不是封闭的网格怎么办? 说,一棵树?
在Unity 5及更高版本中,网格渲染器组件的阴影设置中的“仅阴影”选项可用。这些对象仅投射阴影而不被渲染。 如果您使用的是Unity 4或更低版本,请尝试将其保存在着色器文件中:
着色器“透明/不可见ShadowCaster”
{
着色器
{
UsePass“ VertexLit / SHADOWCOLLECTOR”
UsePass“ VertexLit / SHADOWCASTER”
}
后退
}
您想让松树投下阴影,但每棵都是2000多头,而其中有20多头? 现在,您只需要一个四边形上的广告牌纹理即可用作阴影代理。

如果您将影子代理与实际角色一起安装和设置动画,该技巧将非常适用于汽车,建筑物甚至动画角色。
凉! 您一直阅读。 这是一首关于阴影的歌!
更多关于我