【MME】细说Ray渲泛光光斑Bug修复方法
ARonisc
2021年10月09日 01:19
收录于文集
共1篇

前言

现在使用ray-mmd渲染器的大家都基本用上了泛光Bloom功能

即ray_controller.pmx左下角的Bloom部分各个控制泛光选项

Bloom是一种画面后处理效果

但很多伙伴开启泛光后都会碰到这个光斑BUG,使得泛光并不好看

受害者MME:空気尘埃

接下来介绍如何修复这个BUG,以及相关进一步产生该BUG的原因和一种错误的修复方法


修复方法

为了节省大家阅读时间,这里直接放出修复方法

1.打开记事本或Notepad++打开\ray-mmd-1.5.2\Shader\PostProcessBloom.fxsub文件

2.修改第7行代码中的512数值为2048或者4096,随后保存

3.用记事本或Notepad++打开\ray-mmd-1.5.2\ray.conf文件

4.找到Toon_Enable选项,若是选择了2模式,请改为1,即去除diffusion柔化效果

5.处理完成后,重置MME状态,或者重启PMM工程,泛光就修复正常了

该图为4096,Toon 0,导出分辨率为3840x2160的效果图,光斑基本看不见了


下面介绍一些其他内容,感兴趣的可以看一眼

BUG产生原因

其实也不算BUG,就是斯基预设的分辨率有些低了,shader文件夹里放置了ray各个功能模块的代码,与泛光Bloom相关的就在PostProcessBloom.fxsub文件里。

我们只要把512改大即可。经过测试,对于当前4K分辨率来说,BloomScale 512,1024都不太够,因此推荐使用2048或4096。如果不够你就4096x2=8192这样依此类推。

为何不选Toon 2模式

Toon_Enable 2模式,附加了diffusion柔化功能,而这个柔化也会产生光斑效果

当你选Toon 2模式时,会产生以下光斑

其原因跟Bloom一样,在Shader文件夹中,同样有该diffusion的代码文件

打开PostProcessDiffusion.fxsub文件,可以看到这里也设置成了512

你若是一定要用Toon 2模式的话,将这个512改成与Bloom一样即可

听说512可以改成ViewportSize?

曾经记得有人在群里说把512改成ViewportSize就行,这样其实是不对的。

static const float2 BloomScale = ViewportSize * float2(ViewportAspect, 1);

根据不吃鱼的喵酱翻译的MME参考文档中,ViewportSize是一个float2参数,值是屏幕的尺寸

也就是说4K分辨率,ViewportSize的值为(3840,2160)

在common.fxsub文件中,ViewportAspect代表了4K分辨率的比例,也就是16:9

static float  ViewportAspect  = ViewportSize.x / ViewportSize.y;

如果用ViewportSize相乘,就破坏了最终数值的比例,会导致泛光变形

下图就是ViewportSize的泛光结果

结语

本来这个修复方法似乎在群里有所流传,而且也有人写过专栏,但好像关注度并不高

而且恰好在群聊的时候和香皂发现了Toon 2模式的diffusion也会产生光斑BUG

所以写一篇更为详细的修复说明,希望能帮助到大家【顺便感谢一波皂皂子一同查出BUG】

附Ray1.5.2下载地址

https://github.com/ray-cast/ray-mmd/releases/tag/1.5.2