17173 > 游戏资讯 > 官方公告 > 正文

《默特术士》周一随想第35期:超级着色器的崛起

2025-12-02 10:26:03 神评论
17173 新闻导语

揭秘《默特术士》超级着色器:如何用单一技术实现全动画,性能飙升4倍!技术美术深度解析,优化游戏沉浸感与性能的终极方案。

今天该回归超级极客和技术宅模式了!很多问题只有深入开发阶段才会暴露,《默特术士》的美术管线绝对是其中之一。我在技术美术和特效美术领域有多年的经验,还有我们在先前随想中探讨过的疯狂科学家式解决方案。所有这些最终汇聚成了《默特术士》的超级着色器。

但这是为什么呢?
有太多细微因素影响着沉浸感——树木摇曳、云朵飘动、阴影渐变。虽然并非全部必需,但它们的缺席比存在更引人注意,哪怕只是潜意识层面的。我们在第12期和第24期探讨过实现沉浸感和2D动态的各种黑魔法,这就引出了今天的问题:如果我们想给游戏中所有元素添加动画,最佳实现方式是什么?

当然可以为游戏中每个独特结构定制材质、定制技术、定制分层方案,但当我们仅植物就有上百种,更不用说数十种建筑的多角度旋转时,就需要找到既能保证性能效率,又能优化迭代创作时间的方法,避免被像素海洋淹没。于是我们的目标变成了:一石能击几鸟。



这是我筑起的高山
为实现所有目标——轻松迭代、良好帧率、艺术自由——我们采用了如今较少使用的一项技术:单一着色器实现全功能。这听起来很可怕,因为着色器本身超级复杂,可能会调用许多用不上的功能,但它能实现一个关键功能——批处理。

批处理本质上是告诉显卡:保持当前操作,尽可能一次性处理更多内容。由于《默特术士》采用自上而下层层渲染的方式,大多数结构只是加载纹理、绘制精灵、重复循环。问题在于即使屏幕上只有一堆树,每棵树也会成为独立绘制调用,因为每个都引用自己的小纹理集。通常可以用精灵图集解决,但图集很少使用多重技术纹理。不过这阻止不了我们:)



将过去两年的大部分美术工作压缩到单张图像简直疯狂。这仅是超级着色器使用的6张图像中的两张。这种材质处理方式让我们能在单次渲染中实现色调偏移、夜间辉光、风力摇摆、自定义滚动等众多效果。测试期间,我将测试场景的绘制调用从960次降至230次,这对性能提升是巨大的。关键还在于每个精灵都能受益于我们长期构建的所有疯狂纹理操作。想要风力摇摆、夜间照明加上自定义UV?我们全都能实现。



实用的疯狂科学
如果详细说明这个着色器能实现的所有附加功能,我可以说上一整天,但特别想分享这个实现的疯狂技术——所有拖尾纹理都能在同一个着色器上工作。



这个功能特别酷,因为我们可以用简单浮点值让UV读取特定区域,比如读取0-0.25(底部四分之一)然后切换+0.25读取上一个纹理,依此类推。通常需要通过材质控制,但这里的魔法在于我们可以通过遮罩通道驱动。例如我可以设定#111111表示偏移0.25,#222222表示偏移0.5等。

这还带来两个绝妙的附加好处:该技术可用于将着色器分支到未来其他路径,而无需在着色器内引入真假布尔值(通常不好)。全是加法和乘法运算,让显卡非常开心。而且我们可以在同一物体内混合搭配,因为全都通过像素遮罩颜色控制。



好吧最后这段可能让部分人跟不上,只需知道摇曳的树木、旋转的齿轮、流动的河水和生物发光晶洞全都通过单一(复杂)技术绘制,这意味着更好的性能、更高的艺术一致性以及所有结构同步实现更快的艺术迭代。说实话这是我最痴迷的部分,就像自己的炼金工坊,可以把所有东西炸开重新组装成新奇而迷人的混沌合剂。这太美了。

回实验室了 :) 🌿
~CyanAvatar
【来源:steam】
我想了解这个游戏:
官网 专区 下载 礼包
关于默特术士,超级着色器,美术管线,技术美术,特效美术,批处理,绘制调用,精灵图集,纹理操作,性能优化的新闻
亲爱的 17173 玩家们~我们正在打磨平台的找游戏功能,想听听你平时是怎么筛选、导航找游戏的?你的真实习惯和偏好,能让后续找游戏更顺手哦!立即点击填写问卷 参与问卷