这是一个关于游戏图形编程的纯技术问题。我不需要任何关于"应该做什么游戏"、"从更宏观的角度应优先考虑什么"或"玩家在意什么"的建议。我只是个享受自己爱好的业余开发者。
我的3D游戏目前只有一个光源:太阳。
这也是一个太空游戏,几何体稀疏。未来会有额外的光源(枪口闪光、爆炸、推进器等),但现阶段大多数光源的影响范围主要是直接且局部的。
我推迟(双关语意)增加更多光源,是因为我不确定应该使用前向渲染还是延迟渲染,以及如果以后需要更改,工作量会有多大。
未来加入室内场景和大型物体(已在路线图中),可能会改变需求:更多光源、需要全局光照和阴影等。
究竟在什么规模下,延迟渲染才真正合理,而非过早优化?通常你们如何用前向渲染处理多个动态光源?
它能为我带来多少灵活性,代价是什么?这里我主要考虑性能成本。一次性实现并不是我担心的(我以前手动实现过,但只是实验,并非实际游戏)。
我还大量使用程序化技术而非静态资源,尤其是纹理方面。我正考虑对程序化纹理进行延迟渲染,因为它们在没有预计算的情况下代价高昂。有些纹理是从3D模型空间计算而来,而非映射到UV空间,因为这更简单且一致性更好,但排除了预计算的可能性,导致GPU负担很重,因此我希望避免过度绘制。我认为这正是延迟渲染再次胜出的地方。
最后:延迟渲染是否有助于处理反射、阴影、体积效果、传送门和空间位移(虫洞等)?
如果对理解背景有帮助:我的艺术风格是低精度几何体结合高精度特效与光照。我还不知道这是否可行,但这最符合我的技能组合。我是个程序员,不是艺术家。我不常使用Blender,我最强的艺术工具是数学和代码。我最近才"发现"仅仅更换BRDF就能让最简单的平面着色占位几何体看起来很酷。这就是为什么我非常在意光照和着色。我也认为这种方法适合我选择的游戏类型。但还有待观察……
评论 (0)