Project1
标题:
屏幕色调算法和2000之类的老RM不一样了
[打印本页]
作者:
utunnels
时间:
2024-10-16 23:21
标题:
屏幕色调算法和2000之类的老RM不一样了
本帖最后由 utunnels 于 2024-10-16 23:25 编辑
因为我基本不使用这个功能所以没注意。
几天看到别的论坛有人吐槽这个问题,说RM2k上的色调和MV上的很不一样。
我还专门去看了下,那个红绿蓝的滑动条看起来是一样,不过2K的是百分比,从0%-200%,中间值是100%,MV的是-255~255,中间值是0。
虽然两个版本进度条拉到头都是一样的,但是在中间的时候区别就大了,比如MV如果红绿蓝全+128,遇到浅色比较多的情况,可能整个屏幕都白了。
但是因为2k是百分比,所以进度条拉到对应的位置(150%),并没有出现浅色全变白的情况。
这是MV的情况,好像核爆瞬间
mv2.png
(58.18 KB, 下载次数: 18)
下载附件
保存到相册
2024-10-16 23:15 上传
这是模拟的RM2K的效果,好像白雾
2k.png
(82.46 KB, 下载次数: 18)
下载附件
保存到相册
2024-10-16 23:15 上传
简单来说,MV的色调改变就是数值直接相加,但是2K是按比例增加,比如150%就相当于在上面覆盖一个半透明的亮屏,50%就相当于覆盖一个半透明的黑屏。
模拟代码如下:
ToneFilter.prototype.adjustTone = function(r, g, b) {
r = (r || 0).clamp(-255, 255) / 255;
g = (g || 0).clamp(-255, 255) / 255;
b = (b || 0).clamp(-255, 255) / 255;
var R=1,G=1,B=1;
//rm 2k tint
R = r<0?(1+r):(1-r);
r = r<0?0:r;
G = g<0?(1+g):(1-g);
g = g<0?0:g;
B = b<0?(1+b):(1-b);
b = b<0?0:b;
if (r !== 0 || g !== 0 || b !== 0||R !== 1 || G !== 1 || B !== 1) {
var matrix = [
R, 0, 0, r, 0,
0, G, 0, g, 0,
0, 0, B, b, 0,
0, 0, 0, 1, 0
];
this._loadMatrix(matrix, true);
}
};
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1