v0.9 Dev Channel #254
Replies: 23 comments 72 replies
-
关于在用户界面上配置效果参数有了初步的想法 {
"name": "FSR",
"params": [
{
"name": "sharpness",
"label": "锐度"
"description": "FSR 锐度",
"type": "slider",
"min": 0,
"max": 1,
"step": 0.05
}
],
"effects": [
{
"effect": "FSR_EASU",
"scale": [ -1, -1 ]
},
{
"effect": "FSR_RCAS",
"sharpness": "sharpness * 2"
}
]
} |
Beta Was this translation helpful? Give feedback.
-
草稿 设计要点:
{
"models": [
{
"name": "FSR",
"internal": true,
"params": ["sharpness"],
"effects": [
{
"effect": "FSR_EASU",
"scale": [ -1, -1 ]
},
{
"effect": "FSR_RCAS",
"sharpness": "sharpness"
}
]
}
],
"conditional": [
"name": "FSR-Auto",
"params": [
{
"name": "sharpness",
"label": "锐度"
"description": "FSR 锐度",
"type": "slider",
"min": 0,
"max": 1,
"step": 0.05
}
],
"conditions": [
{
"when": "EXE = 'abc'",
"model": "FSR",
"params": {
"sharpness": "sharpness * 2"
},
"options": {
"captureMethod": "GDI",
"showFPS": true
}
},
{
"when": "INPUT_WIDTH > 500",
"model": "FSR",
"params": {
"sharpness": "sharpness * 2"
},
"options": {
"captureMethod": "Graphics Capture"
}
}
]
]
}
|
Beta Was this translation helpful? Give feedback.
-
我迟早要解决 WGC CPU 占用问题 |
Beta Was this translation helpful? Give feedback.
-
如果要重写用户界面,我想做成 win11 的风格,可以参考 PowerToys PowerToys 是一个宝库,用户界面和代码都可以参考 |
Beta Was this translation helpful? Give feedback.
-
关于 CRT-Royale 我打算再挣扎一下,如果成功移植将成为 Magpie 的大杀器 |
Beta Was this translation helpful? Give feedback.
-
接下来我计划重写渲染模块
MagpieFX Version 2 全部基于计算着色器,但会支持像素着色器的“风格”,以便于迁移现有的效果。常用效果会针对计算着色器进行优化。 |
Beta Was this translation helpful? Give feedback.
-
原生 UWP 控件XAML 岛 + WinUI 2,PowerToys 使用此技术 + 原生体验
- 需要 Win10, v1903 基于 WPF 的 UI 框架+ 引入依赖较少,无缝迁移 Windows App SDK还不成熟,限制很多 |
Beta Was this translation helpful? Give feedback.
-
发现了一个未记录的 API ShowSystemCursor(位于 User32.dll),经过测试可以全局隐藏系统光标。虽然我不想做太多 hack,但如果这个 API 可以兼容串流,可能是比 MagShowSystemCursor 更好的选择 更新:也存在双光标问题 |
Beta Was this translation helpful? Give feedback.
-
Magpie 可能已经支持可变帧率 #137 ,虽然我没法验证这一点。可变帧率在技术上等价于 vsync-off,因此只需将帧率设为无限制即可。一些效果很吃性能,如果能用可变帧率体验会好很多,显示器不支持可变帧率的话会导致撕裂 但如果想使用 FSR,可变帧率的效果可能不理想,因为全屏窗口和源窗口的帧率并不一致 |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
MagpieFX v2 草稿 //!MAGPIE EFFECT
//!VERSION 2
// 计算尺寸时可以使用 INPUT_WIDTH、INPUT_HEIGHT、OUTPUT_WIDTH 和 OUTPUT_HEIGHT
//!OUTPUT_WIDTH INPUT_WIDTH * 2
//!OUTPUT_HEIGHT INPUT_HEIGHT * 2
// 添加此行才能使用 GetFrameCount 和 GetCursorPos
//!USE_DYNAMIC
// 参数定义
// 类似 v1 的 CONSTANT,但不支持内置常量
//!PARAMETER
//!DEFAULT 0
// LABEL 可选,暂时不使用
//!LABEL 锐度
float sharpness;
// 不再支持常量定义
//!TEXTURE
// INPUT 不可作为输出
Texture2D INPUT;
//!TEXTURE
//!WIDTH INPUT_WIDTH
//!HEIGHT INPUT_HEIGHT
//!FORMAT R16G16B16A16_FLOAT
Texture2D tex1;
// 与 v1 不同,从文件读取的纹理不再能作为输出(考虑到这个操作基本没有意义)
// 支持的纹理类型与 v1 相比有变化,添加了一些类型以及不再支持 B8G8R8A8_UNROM
//!COMMON
#define RELU(x) max(x, 0)
//!PASS 1
// 描述此通道以便于调试
//!DESC First Pass
// 可选 PS 风格,依然用 CS 实现
// 默认为 CS
//!STYLE PS
//!IN INPUT
// 同样支持多渲染目标,最多 8 个
//!OUT tex1
float4 Pass1(float2 pos) {
return float4(1, 1, 1, 1);
}
//!PASS 2
//!IN INPUT, tex1
// BLOCK_SIZE 指定一次 dispatch 处理多大的区域
// 可以只有一维,即同时指定长和高
//!BLOCK_SIZE 16, 16
// NUM_THREADS 指定一次 dispatch 有多少并行线程
// 可以少于三维,缺少的维数默认为 1
//!NUM_THREADS 64, 1, 1
void Pass2(uint2 blockStart, uint3 threadId) {
// 向 OUPUT 写入的同时处理光标渲染
// 只在最后一个通道中可用
WriteToOutput(blockStart, float3(1,1,1));
} 内置函数: void WriteToOutput(uint2 pos, float3 color); bool CheckViewport(uint2 pos); uint2 GetInputSize(); float2 GetInputPt(); uint2 GetOutputSize(); float2 GetOutputPt(); float2 GetScale(); uint GetFrameCount(); uint2 GetCursorPos(); uint2 Rmp8x8(uint id); 内置宏: MP_BLOCK_WIDTH、MP_BLOCK_HEIGHT:当前通道处理的块的大小(由 //!BLOCK_SIZE 指定) MP_NUM_THREADS_X、MP_NUM_THREADS_Y:当前通道每个线程组的线程数(由 //!NUM_THREADS 指定) MP_PS_STYLE:当前通道是否是像素着色器样式(由 //!STYLE 指定) MP_INLINE_PARAMS:当前通道的参数是否为静态常量(由用户通过 inlineParams 参数指定) MP_DEBUG:当前是否为调试模式(调试模式下编译的着色器不进行优化且含有调试信息) MP_LAST_PASS:当前通道是否是当前效果的最后一个通道 MP_LAST_EFFECT:当前效果是否是当前缩放模式的最后一个效果(最后一个效果要处理视口和光标渲染) MP_FP16:当前是否使用半精度浮点数(由用户通过 fp16 参数指定) MF、MF1、MF2、...、MF4x4:遵守 fp16 参数的浮点数类型。当未指定 fp16,它们为 float... 的别名,否则为 min16float... 的别名 |
Beta Was this translation helpful? Give feedback.
-
目前绘制光标已经比较完美,唯一的问题是无法处理系统光标缩放(win11 中为设置->辅助功能->鼠标指针和触控->鼠标指针->大小)。这牵扯到两个场景:
obsproject/obs-studio#2604 对这个问题有一些讨论 |
Beta Was this translation helpful? Give feedback.
-
这里记录每个效果在 v0.9 中的性能提升。比较对象是处理时间,如 v0.8 中应用某个效果需 1ms,v0.9 中需 0.8ms,则性能提高 20%。因为硬件差异,这些结果仅供参考。 配置信息: Magpie 配置: 测试场景:
测试结果
|
Beta Was this translation helpful? Give feedback.
-
现在我最推荐使用 CatmullRom 进行下采样,Lanczos 稍微锐利一点,但更慢。 |
Beta Was this translation helpful? Give feedback.
-
决定使用 XAML Islands 重写用户界面 Win11 中可以应用 Mica 材质 |
Beta Was this translation helpful? Give feedback.
-
已经对鼠标功能进行增强。用户可以打开开始菜单或者 Win+G 或者 Alt+Tab,光标会像往常一样工作,而不是隐藏起来。这是向窗口化 #135 迈出的重要一步。 |
Beta Was this translation helpful? Give feedback.
-
可使用快捷键 Control+Alt+D 显示和隐藏游戏内覆盖,包含帧率统计,每个效果在 GPU 中的处理时间,以及未来用于在运行时改变配置和参数。 打开“在 3D 游戏中限制光标”时无法操作游戏内 UI,也不支持增强的鼠标功能和多屏幕。 |
Beta Was this translation helpful? Give feedback.
-
libretro的自适应锐化还是很多年前的版本,算法的原作者在这里更新 |
Beta Was this translation helpful? Give feedback.
-
我正在考虑更改默认热键。Alt+F11 来自于 IntegerScaler,使用的原因是 F11 有全屏的含义,因此这个热键较为直观。它有一些问题,一是容易和游戏内置的全屏快捷键冲突,最典型的是《我的世界》,另外 Alt 和 F11 相距较远,又都位于键盘右侧,使用起来不太方便。 |
Beta Was this translation helpful? Give feedback.
-
“在3D游戏中限制光标”已升级为“3D游戏模式”,提供该选项的原因是 3D 游戏处理光标的方式很独特。启用这个选项后:
一个严重的问题是游戏内覆盖开启时游戏本身依然可以检测到光标输入或设置光标位置
在这个问题上 Xbox Game Bar 做的很完美。开启 Xbox Game Bar 后游戏便无法影响鼠标了,也无法检测到鼠标的移动。我没找到能做到类似事情的方法。 |
Beta Was this translation helpful? Give feedback.
-
使用中发现 v0.9.0-preview1 性能相对于v0.8.2反而下降,fps 20 -> fps 15
捕获方式: |
Beta Was this translation helpful? Give feedback.
-
v0.9 的功能已经开发完成,没有bug汇报的话过几天就会发布。 |
Beta Was this translation helpful? Give feedback.
-
v0.9 主要专注于提升性能,支持计算着色器
路线图 https://github.com/Blinue/Magpie/projects/1
Beta Was this translation helpful? Give feedback.
All reactions