添加ravu预置缩放模式以及更新文档

This commit is contained in:
Xu Liu 2021-06-18 21:09:53 +08:00
commit 60d75d0cde
8 changed files with 56 additions and 20 deletions

View file

@ -79,16 +79,16 @@ namespace Magpie.Properties {
/// ]
/// },
/// {
/// "name": "动漫 2xACNet",
/// "name": "通用RAVU",
/// "model": [
/// {
/// "effect": "scale",
/// "type": "ACNet"
/// "type": "ravuZoom",
/// "scale": [ 0, 0 ]
/// },
/// {
/// "effect": "scale",
/// "type": "mitchell",
/// "scale": [ 0, 0 [字符串的其余部分被截断]"; 的本地化字符串。
/// "effect": "misc",
/// "type": "Anime4KDen [字符串的其余部分被截断]"; 的本地化字符串。
/// </summary>
internal static string BuiltInScaleModels {
get {

View file

@ -135,6 +135,21 @@
}
]
},
{
"name": "通用RAVU",
"model": [
{
"effect": "scale",
"type": "ravuZoom",
"scale": [ 0, 0 ]
},
{
"effect": "misc",
"type": "Anime4KDenoiseBilateral",
"variant": "mode"
}
]
},
{
"name": "动漫 2xACNet",
"model": [

View file

@ -2,7 +2,7 @@
窗口放大镜!
可以将任意窗口全屏显示,支持高级缩放算法,包括[Anime4K](https://github.com/bloc97/Anime4K)本项目包含一个Direct2D移植、Lanczos等。
可以将任意窗口全屏显示,支持高级缩放算法,包括[Anime4K](https://github.com/bloc97/Anime4K)、[RAVU](https://github.com/bjin/mpv-prescalers)、Lanczos等。
主要用于游戏窗口的放大显示,适用于那些不支持全屏模式,或者游戏自带的全屏模式会使画面模糊的情况。
@ -21,12 +21,13 @@
程序预置了数种缩放模式,如果没有符合你的需求的,请[自定义缩放](docs/自定义缩放.md)。
1. 通用Lanczos+锐化
2. ACNet[ACNetGLSL](https://github.com/TianZerL/ACNetGLSL)的移植
3. Anime4K存在多种变体
2. 通用RAVU
3. ACNet[ACNetGLSL](https://github.com/TianZerL/ACNetGLSL)的移植
4. Anime4K存在多种变体
* 动漫 2xAnime4K对输入应用一次Anime4K适合放大1~2倍。默认使用降噪版本。
* 动漫 2xAnime4K+ThinLines执行Anime4K后细化线条。一般能产生更好的视觉效果。
* 动漫 4xAnime4K x2应用两次Anime4K适合放大2~4倍的情况。
4. Pixel将每个像素放大整数倍可以完整保留原窗口的视觉效果。有2x3x4x三种放大倍率可选。
5. Pixel将每个像素放大整数倍可以完整保留原窗口的视觉效果。有2x3x4x三种放大倍率可选。
#### 抓取模式

View file

@ -1,3 +1,7 @@
// ravu-lite-r3 Pass1
// ÒÆÖ²×Ô https://github.com/bjin/mpv-prescalers/blob/master/ravu-lite-r3.hook
cbuffer constants : register(b0) {
int2 srcSize : packoffset(c0);
};

View file

@ -1,3 +1,7 @@
// ravu-lite-r3 Pass2
// ÒÆÖ²×Ô https://github.com/bjin/mpv-prescalers/blob/master/ravu-lite-r3.hook
cbuffer constants : register(b0) {
int2 srcSize : packoffset(c0);
};

View file

@ -1,3 +1,7 @@
// ravu-zoom-r3
// 移植自 https://github.com/bjin/mpv-prescalers/blob/master/ravu-zoom-r3-yuv.hook
cbuffer constants : register(b0) {
int2 srcSize : packoffset(c0.x);
int2 destSize : packoffset(c0.z);
@ -40,6 +44,7 @@ D2D_PS_ENTRY(main) {
float2 pos = Coord(0).xy / Coord(0).zw;
float2 subpix = frac(pos - 0.5);
pos -= subpix;
// LUT_POS 的等价,但它到底是什么?
subpix = lerp(float2(0.5, 0.5) / float2(9.0, 9.0), 1.0 - 0.5 / float2(9.0, 9.0), subpix);
float2 subpix_inv = 1.0 - subpix;
subpix /= float2(5.0, 288.0);

View file

@ -11,30 +11,29 @@ Magpie启动时会在所在目录搜索ScaleModels.json如果未找到则会
"model": [
{
"effect": "scale",
"type": "lanczos6",
"type": "lanczos",
"scale": [ 0, 0 ],
"ARStrength": 0.7
},
{
"effect": "sharpen",
"type": "adaptive",
"curveHeight": 0.6
"curveHeight": 0.8
}
]
},
{
"name": "动漫 2xAnime4K",
"name": "通用RAVU",
"model": [
{
"effect": "scale",
"type": "Anime4K",
"curveHeight": 0.3,
"useDenoiseVersion": true
"type": "ravuZoom",
"scale": [ 0, 0 ]
},
{
"effect": "scale",
"type": "mitchell",
"scale": [ 0, 0 ]
"effect": "misc",
"type": "Anime4KDenoiseBilateral",
"variant": "mode"
}
]
},
@ -76,6 +75,10 @@ Magpie支持的缩放效果有
* 参数
* scale缩放比例和其他缩放算法不同此值必须是正整数因为图像尺寸只能等比例整数倍放大。默认值为1。
7. ACNetACNetGLSL的移植。固定的将输入放大至两倍。
8. ravuLiteravu-lite-r3的移植。固定的将输入放大至两倍。
9. ravuZoomravu-zoom-r3的移植。支持任意倍数的缩放。
* 参数
* scale缩放比例值必须是有两个元素的数组分别指定长和高的缩放比例。如果是[0, 0],则等比缩放到屏幕能容纳的最大大小。默认值为 [1,1]。
### 锐化效果

View file

@ -1,6 +1,10 @@
# HookTextureResolver
用于读取mpv hook中的TEXTURE块。
用于读取mpv hook中的TEXTURE块。[RAVU](https://github.com/bjin/mpv-prescalers)使用了TEXTURE块移植到hlsl时必须将其解码。
移植时必须将其解码转换为hlsl可以理解的数组。
较小的TEXTURE块可以转换为hlsl数组较大的TEXTURE块则必须导出为纹理图片将其作为effect的输入。
导出为图片时的一个问题是Direct2D不支持读取alpha通道因此我将导出图片的宽度增加一倍以容纳更多信息。
png格式的每个颜色通道只有8位因此导出时会有严重的精度损失。为了缓解这个问题我进行了一些简单的压缩。实践证明一定程度的精度损失对RAVU的效果没有肉眼可见的影响。