大家好,我想与大家分享一下我整合灯泡照明引擎到我的项目中并进行后处理的结果。
完整片段: 视频展示
https://preview.redd.it/lqxxczoxo4ah1.png?width=652&format=png&auto=webp&s=4210e4ef6f5c47044a0e00fd2b6af22178f901cb
https://preview.redd.it/rdjy2kkvm4ah1.png?width=847&format=png&auto=webp&s=b0666d9ba774f6fc1d29f91d680de7318ba41be6
https://preview.redd.it/cfnrht25x4ah1.png?width=832&format=png&auto=webp&s=7e28ed1081cf6276f65bdc9dbcab705c41b4702a
设置起来是很简单的,只需要在拥有BulbRenderer的房间中创建一个obj_bulb_controller,并确保关闭默认的应用程序表面application_surface_draw_enable(false),Bulb将在Post Draw中处理最终的合成。在Draw End中,会重建法线图并运行renderer.Update(),然后在Post Draw中只会在顶层堆叠其他内容。
要获得法线图,我使用了Laigter,并批量导出它们作为配对的_n sprites,然后我编写了一个查找表,使得游戏仍然使用普通的漫射 sprites,而Bulb的法线通道则会读取_n sprites。之后,我添加了灯光和阴影,给玩家添加了一个温暖的蜡烛BulbLight,阴影关闭,因为在狭窄的空间中它看起来更干净。水晶从特定的房间开始生成,并且遮挡器会烘烤我的碰撞层。
最麻烦的一点是我想让水晶发光,想要它们在房间中发散出加性光,像小的闪光点,但如果我在玩家身上绘制一个正常的sprite来修复透明度,那么我不小心就覆盖了所有法线图的照明,玩家就变成了扁平的。但是,我还是能够通过捕获Bulb的已经照亮的输出,绘制发光效果,然后恢复玩家并使用一个小的遮罩着色器来修复它。
如果我再次做这件事,我会先阅读Bulb的自定义绘制文档,逐一调整每一层,而不是同时调整五个变量,并且我会记住法线图不是免费的,所以我只会在玩家身上使用它。
我已经链接了一些截图和YouTube视频,展示了结果。如果您正在尝试类似的东西,我很乐意回答您的问题。如果您感兴趣的话,您可以通过以下链接关注我的项目:
如果您感兴趣的话,您可以通过以下链接了解更多关于Bulb引擎的信息:
评论 (0)