探索AI自动生成Shader的工作流程
近两个月以来,深深感受到LLM大模型的飞速进步,曾经在游戏研发AI工作流里难以达成的环节,如今都变为了现实。之前已经尝试过AI生成特效、AI生成3D模型动作等领域,现在,也开始探索让AI协助我们生成shader。
契机来源于一个需求——想要实现类似光遇的美术风格,其中包含草地、天空等元素。若由人工反向推导光遇的实现方式,必然耗费大量精力,于是我收集了几张光遇的游戏截图,配以文字说明,让AI来帮我完成shader效果的搭建。
在实际操作过程中,我会将shader需求细化拆解,拆分成若干个子需求,再让AI逐个生成示例场景,方便我进行效果校验。
第一个需求,是打造一个果冻怪物效果,表现相当不错,无论是动态表现还是光照效果,都与预期较为吻合。
第二个需求,是实现草地效果,看上去也还可以,虽然与光遇相比存在差距,但整体氛围已经初具雏形。
第三个需求,是构建云朵效果,空中飘浮的体积云也呈现出一定的云朵质感。
编写shader并非只要实现效果就行,还需要关注其实现思路、性能表现以及兼容性。于是我也查看了一下实现方式。例如在果冻怪物中,核心是一个球体的顶点变换,mesh结构相对简单,因此具备一定的可移植性。
AI编写的shader提供了众多参数,方便美术进行进一步的微调。
接着查看具体代码,逻辑也比较简洁,初步扫一眼性能和兼容性问题应该不大。
草地的实现方式则较为普通,它生成了一大片面片,再借助shader来控制扰动效果。
从原理上讲,草地的面片应当直接由GPU进行运算处理,而非构建为mesh。而扰动和颜色的处理方式,则属于比较常规的做法。
体积云同样基于mesh实现,这些mesh也是由AI生成的,然后在空中放置几片大型云朵。
下图展示的是一片大型云朵的mesh结构
下图呈现的是动态shader的渲染效果
总体来看AI生成shader的效果,尽管实现细节仍有需要打磨之处,但感官层面,其美术效果已经能够达到相当不错的水平,超出预期,基本可以投入使用。