不。光栅化在这方面非常糟糕(即使是最近的 AAA 游戏也有明显的阴影伪影),但每个人都忍受它。
解决方案包括(大约从最简单/最差到最好/最难):
- 没有阴影。只需用较深的颜色来解释遮挡。x正常,搅拌机。
- 如果你想要一个角色的近似阴影,一个简单的平面多边形,具有透明和模糊的纹理就可以了。例如,参见塞尔达截图。即使是最近的一些游戏仍然使用它。
- 光照贴图。仅静态几何,但完美的照明(预先计算)。实施起来相当简单。存在很多工具。
- 影子卷,由卡马克推广。像素完美,实现起来相当简单,速度很慢。适合一些对象。没有柔和的阴影。
- 阴影贴图。如果您从未制作过任何 openGL,则有点难以实现。很难做对。像素化阴影。处理大量多边形。不处理大世界。
- 无数阴影地图变体。这几年研究很多。目前最好的是级联阴影贴图:很难,仍然很难让它看起来不错,但速度很快,可以处理大量的多边形和巨大的世界。
- 光线追踪阴影:这可能是下一代。除了一些研究论文,没有人真正使用它。非常复杂,在动态世界中表现不佳(还),巨大的静态场景还可以。像素完美或柔和阴影,取决于您有多少备用 GPU。几种变体;截至 2014 年,出于性能原因,这仍然没有在任何游戏中实现。
因此,通常的技巧是将漂亮但仅静态的方法与动态但不是那么好的方法混合。例如,请参阅我的光照贴图和阴影贴图教程。