⭐[godot] gdscript 中修改 aa 参数及 godot 上集成显卡上的效果提升
clq
浏览(72) -
2024-08-14 18:54:00 发表
编辑
关键字:
[2024-08-24 16:59:23 最后更新]
⭐[godot] gdscript 中修改 aa 参数及 godot 上集成显卡上的效果提升
首先说,在代码中修改 godot 的 aa 参数,无论是文档还是百度 ai 还是 codegeex 的 ai 的答案,全部是错误的。正确的代码是
get_viewport().msaa_3d = 2; #//ok
而它们集体说是的修改 ProjectSettings.set_setting 而且参数还说错了。这个实际上是配置,并不会马上生效。而 get_viewport().msaa_3d 才是能立即生效的,不过对于 get_viewport().msaa_3d 连 godot 的官方文档和随机文档都是错的。
如果你想 aa4 那么按它们说的调用 get_viewport().msaa_3d = 4 ,那么会报 “Index p_msaa = 4 is out of bounds (MSAA_MAX = 4).”
原因是这个参数值是显示模式的索引,而不是直接对应 aa 值。随机文档直接就说错了。实际上这是一个常量 Viewport.MSAA_4X 。
唉,当然这和 godot 太新,ai 们还没收集到源信息有关。
这从一个方便可以发现这些国内的 ai 显然还不具备智能翻译再进行学习的功能(或者是根本没怎么抓取外网论坛类站点的信息)。实际是这个问题在外网是有答案的,我也是在 godot 的官方论坛上看到的人问才知道的。
#ProjectSettings.set_setting("rendering/anti_aliasing/quality/msaa_3d", 3); #//文档中是这个
#ProjectSettings.set_setting("anti_aliasing/quality/msaa_3d", 4); #//文档中是这个
#ProjectSettings.save(); //这个说是在编辑器状态才有效的
#get_viewport().msaa_3d = value
get_viewport().msaa_3d = 3;
get_viewport().set_msaa_3d(Viewport.MSAA_4X); #//这个才能真的修改成功,ProjectSettings.set_setting 只是写入配置,还不知道如何让配置立即生效或者是下次生效
## 来源 https://github.com/Calinou/godot-sponza/blob/master/scripts/settings_gui.gd
# 推荐自 https://forum.godotengine.org/t/how-to-change-graphics-options-with-gdscript-3d/16100/2
可以看到 gdscipt 的特性还挺丰富的,居然支持属性自动映射到 _get _set 函数。大家写代码时要注意了。另外它的编辑器的提示还不能分辨这两者的区别,vscode 的 gdscript 插件也不能。
--------------------------------------------------------
好了,下面说一下 godot 的默认显示效果。现在桌面版本的 3d 程序都直接上高大上的管线什么的,这导致在集成显卡(比较我的 i5 笔记本)上显示时惨不忍睹,比如 wt 直接会变黑白片。
这是默认了桌面游戏不能在集显在玩,所以 godot u3d 这些的直接给的默认效果也是很差的。反而是 cocos 3d 这样目标是浏览器的所以显示效果最好。godot 这些专业引擎在集显上的效果甚至不如 delphi 的 3d 组件,也不如 qt 的 3d 组件。
我简单研究了一下,其实 AA 效果对显卡要求并不高,我玩 wot 的时候就试过了,至少 aa4 影响不大,卡的话 aa2 也行啊。所以直接打开 aa 好了,效果瞬间提高几十年!
但这还不够,我发现 godot 对导入的某个模型显示效果特别好。而默认材质就很差,但默认材质 g3n 引擎的就很好啊。所以这肯定不是显卡的问题。
所以我直接研究了这个导入的模型,最终发现它也是用的 godot 默认材质!!! 只不过它自动调整了两个参数,其实 godot 默认材质参数非常多,但只改了两个效果就又跃升了几十年。
说出来一点也不稀奇,不过是两个金属度的参数罢了,在 blender 中就可以调整,导入时会自动载入。
所以集显上的游戏效果差大部分责任得开发商背,太懒优化了,其实集显没那么差。 而且我这还没调别的参数。
--
效果见后面的贴图。我是复制的模型的材质参数,奇怪的是 godot 导入的模型的材质不能直接修改,但可以复制给其他材质物体。大概是我操作还不熟,理论上肯定是可以的,因为我用 gdscript 已经实现过修改了。
--------------------------------------------------------
这两个参数为金属度和反射量
float metallic [默认: 0.0]set_metallic(值) setterget_metallic() getter
高值使材质看起来更像金属。非金属使用其反射率作为漫射色,并在镜面反射上添加漫射。对于非金属,反射出现在反照率颜色之上。金属使用其反射率作为镜面反射的倍数,并将漫射色设置为黑色,从而产生有色反射。材质在全金属或全非金属时效果更好,介于 0 和 1 之间的值只能用于金属和非金属部分之间的混合。要改变反射量,请使用roughness。
我设置的值为 金属度(0.4)和反射量(0.27) 。有意思的是,这时候加颜色或者加贴图的话,物体会更亮,更像金属(比如坦克车体)。我用在导弹体上感觉是非常的像。
--------------------------------------------------------
ps.
delphi 11 中为
//5.目前的坦克颜色是 TLightMaterialSource.Ambient = #FF202020 ,即 TLightMaterialSource 的材质,然后修改 Ambient 就可以了,其他的用默认值
clq
2024-08-14 18:58:32 发表
编辑
[图片]
如图示,就改了这两个参数。效果大为不同。其实这是在 blender 中调整的,在 godot 默认材质上也能修改。
本帖子属于以下条目()
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.