Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.8 计划 #202

Closed
10 tasks done
Blinue opened this issue Nov 15, 2021 · 73 comments
Closed
10 tasks done

v0.8 计划 #202

Blinue opened this issue Nov 15, 2021 · 73 comments

Comments

@Blinue
Copy link
Owner

Blinue commented Nov 15, 2021

多屏幕

@Blinue Blinue added the roadmap label Nov 15, 2021
@Blinue Blinue mentioned this issue Nov 15, 2021
19 tasks
@Blinue Blinue pinned this issue Nov 15, 2021
@hooke007
Copy link
Collaborator

// LUT_POS 的等价,但它到底是什么?
subpix = lerp(float2(0.5, 0.5) / float2(9, 9), 1 - 0.5 / float2(9, 9), subpix);

我看到了这段注释,想起来之前给mpv报错的时候提过,希望有帮助。
mpv-player/mpv#9390 (comment)
最终上游的修复也是一样
bjin/mpv-prescalers@2678630

@Blinue
Copy link
Owner Author

Blinue commented Nov 16, 2021

感谢 69fe0cf

@motoleon
Copy link

Use with youtube???

@hooke007
Copy link
Collaborator

Use with youtube???

Now u can do it. PIP function of modern browser would create the another window for webvideo.

But why not use media player?

@Blinue
Copy link
Owner Author

Blinue commented Nov 17, 2021

英伟达刚开源了 NIS,一个和 FSR 竞争的技术。我会尝试移植它

初步看了一下,NIS 使用计算着色器。我虽然计划为 MagpieFX 添加计算着色器支持,但工作量很大,至少 v0.8 不会实现。另外计算着色器需要 DX 功能级别 11,这是很大的限制。如果 NIS 能移植到像素着色器上最好不过

@palxex
Copy link

palxex commented Nov 18, 2021

@Blinue FSR的官方demo看起来也是用compute shader做的,请问NIS的做法是与之有什么差异,以致无法用同样的方法移植吗?还是说FSR本身就预留了两种调用路径。

@Blinue
Copy link
Owner Author

Blinue commented Nov 18, 2021

FSR 同时支持像素和计算着色器,NIS 从源码看移植到像素着色器没有太大的问题。我最近会进行移植

更新:已移植为像素着色器,性能有很大损失

@LightMu
Copy link

LightMu commented Nov 18, 2021

进显卡控制面板了,普及比FSR快多了,基本直接实现通用,感觉老黄又赢了。

@linserv33
Copy link

NIS现在可以通过最新的驱动在控制面版或者GeForce Experience里面开启,现在Lossless Scaling也实现了对NIS的支持,感觉确实现在的NIS普及率更胜一筹

@jovan2009
Copy link

As it runs inside driver NIS theoretically should be better. But it is not, I can't get low latency without tearing. Using RTSS fps limiter + sync limiter + fast vsync I get tearing with NIS, which is amazing, fast vsync should be free of tearing. On the other hand Magpie works very well in the same setup. On my gtx 1050ti NIS take about same percentage of GPU utilisation like FSR, maybe a little higher, but tearing is kind of deal breaker.

@hooke007
Copy link
Collaborator

从LS的实现来看,不出意外和fsr一样,空间放大都是基于bilinear没有亮点,至少从效果看是这样的,不加锐化也表现大体相似,感知上区分是靠比cas激进的锐化步骤

@Blinue
Copy link
Owner Author

Blinue commented Nov 20, 2021

release/v0.7 实现了指定 GPU 的功能,你们能正常使用吗 @palxex @hooke007

直接从 Actions 下载:https://github.com/Blinue/Magpie/actions/runs/1484391093

@palxex
Copy link

palxex commented Nov 20, 2021

release/v0.7 实现了指定 GPU 的功能,你们能正常使用吗

抱歉,我用的是amd 3600,没核显。
编辑:用WARP跑FSR的话,CPU会暴涨到80%以上(6c12t),同时GraphicsCapture大概只有10+FPS,GDI会稍微高一两帧,DSS不工作(意思是保持窗口模式不动弹)。

@LightMu
Copy link

LightMu commented Nov 20, 2021

image

@Blinue
Copy link
Owner Author

Blinue commented Nov 20, 2021

这个选项可以正常使用吗 @LightMu

@hooke007
Copy link
Collaborator

我这是独显直连,核显屏蔽后只显示两项,指定microsoft也工作正常,cpu占用会大幅上升

@Blinue
Copy link
Owner Author

Blinue commented Nov 20, 2021

最后一个选项是 WARP,纯 CPU 渲染

@LightMu
Copy link

LightMu commented Nov 20, 2021

我这里是笔记本,不支持独显直连。我外接了副屏,相当于独显直连。都正常使用

@Blinue
Copy link
Owner Author

Blinue commented Nov 20, 2021

DSS不工作(意思是保持窗口模式不动弹)

看起来 WARP 和 DwmSharedSurface 不兼容

@linserv33
Copy link

linserv33 commented Nov 20, 2021

这边是笔记本,支持独显直连,试着切换混合模式用集显运行任务管理器观察占用情况,无论是在windows图像设置独显优先,还是在nvidia里设置独显优先的情况下,只要在magpie里设定对应显卡,他就会按对应显卡运行
相关设置
新建 BMP 图像
1
任务管理器截图
屏幕截图(1)

这边显卡切换功能貌似就是给magpie接管了

抱歉,测试游戏没有注意到cpu占用,集显实际占用在78%左右,卡顿原因应该是游戏把我cpu吃满了,测试其他游戏没有卡顿现象

@Blinue
Copy link
Owner Author

Blinue commented Nov 26, 2021

Magpie 现已支持 DPI 缩放不同的多显示器。

2021 年了 WPF 依然没有原生的支持,从提交上看 WPF 的开发处于停滞状态 https://github.com/dotnet/wpf/commits/main

@Blinue
Copy link
Owner Author

Blinue commented Nov 26, 2021

Win11 的新表情很有意思

MAG:mag:IE

@Blinue
Copy link
Owner Author

Blinue commented Nov 28, 2021

NIS 比 FSR 锐利的多。移植为像素着色器后 NIS 非常慢,还需要优化一下

https://imgsli.com/ODM4Mzg

@Blinue
Copy link
Owner Author

Blinue commented Nov 28, 2021

NIS 附带一个 NVSharpen,和 FSR_EASU 是很好的组合。既有 FSR 的速度,又有 NIS 的锐度。NVSharpen 相比 FSR_RCAS 抑制噪点效果更好

对比:https://imgsli.com/ODM5MDM

@linserv33
Copy link

发现一个现象,LS移植的NIS锐化效果不如驱动的锐化效果,表现有些糟糕(没有驱动锐化的清晰),看了你的对比,貌似和驱动没什么太大区别

@Blinue
Copy link
Owner Author

Blinue commented Nov 28, 2021

锐度可通过 sharpness 参数调整

@Blinue
Copy link
Owner Author

Blinue commented Dec 7, 2021

发现一个很有意思的参数 WDA_EXCLUDEFROMCAPTURE

Magpie 捕获方法中最大的限制是要能捕获到被遮住的窗口,这个参数意味着更多可能性

更新:这个 API 给了我很多灵感,一大波捕获方法正在路上...

@Blinue
Copy link
Owner Author

Blinue commented Dec 7, 2021

新加入的 Desktop Duplication 捕获方法可以捕获到 UWP 窗口,但是 GPU 占用比其他方法高不少

总体可用,不像 GC 那样高 CPU 占用,也不像其他两种方法无法捕获到 UWP

更新:对于静止图像还有很大的优化空间,实现之后可以有效提高流畅度和降低功耗,尤其是对于视觉小说游戏

@laincat
Copy link

laincat commented Dec 8, 2021

保存,选择,某一个程序的 设置 方案?

@Blinue
Copy link
Owner Author

Blinue commented Dec 8, 2021

保存,选择,某一个程序的 设置 方案?

如果你指的是针对特定游戏的配置,暂时不会有这个功能

@Blinue
Copy link
Owner Author

Blinue commented Dec 13, 2021

crt-royale 太难啃了,我决定放弃。它应该集成在模拟器里,因为对输入的要求很苛刻

我会放在 MagpieToys 里,如果以后修好了再加回来

忍不住要吐槽 crt-royale 两句,移植时最痛苦的是查找参数的定义。作者对参数的组织方式很有想法,每个参数都既有运行时版本,又有编译时版本,再加上很多宏定义,我很难找到使用的参数是哪来的。另外这个着色器的代码又臭又长,其中一些用来处理运行时和编译时参数的选择,还有一些用来处理不同显卡的能力差别,还有很多不同路径的代码用来实现同一个功能,然后用户可以在运行时选择使用哪一种...

话说回来我也想让 magpie 在功能性和配置复杂度之间找到平衡,现在的配置对很多小白来说太难了。软件领域有一个 Worse is better 原则,功能更少的软件更容易使用,因此会更流行

@Blinue
Copy link
Owner Author

Blinue commented Dec 14, 2021

我会再移植几个 crt 着色器,crt-royale 搞多了,现在看什么着色器都眉清目秀

@Blinue
Copy link
Owner Author

Blinue commented Dec 14, 2021

MagpieFX 现已支持获取总帧数和光标位置,因此可以实现一些炫酷的动画效果!

@Blinue
Copy link
Owner Author

Blinue commented Dec 14, 2021

曼德博集合

//!MAGPIE EFFECT
//!VERSION 1


//!CONSTANT
//!VALUE OUTPUT_WIDTH / OUTPUT_HEIGHT
float ratio;

//!CONSTANT
//!DYNAMIC
//!VALUE FRAME_COUNT
int frameCount;


//!PASS 1
//!BIND INPUT

int mandelbrot(float2 c) {
	float2 z = c;
	for (int i = 0; i < 1500; i++) {
		if (dot(z, z) > 4.0) return i;
		z = float2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
	}
	return 0;
}

float zoom(float t) {
	float a = floor(t / 24.0f);
	return (exp(-t + 24.0 * a) + exp(t - 24.0 - 24.0 * a));
}

float4 Pass1(float2 pos) {
	pos.x = pos.x * ratio - 0.2;
	float2 c = ((pos * 2 - 1) * 2.0) * zoom(frameCount / 100.0f);
	c += float2(-1.253443441, 0.384693578);
	float iters = float(mandelbrot(c));

	float3 col = sin(float3(0.1, 0.2, 0.5) * float(iters));
	return float4(col, 1.0);
}

@Blinue
Copy link
Owner Author

Blinue commented Dec 16, 2021

终于找到了 Graphics Capture 无法捕获一些窗口的原因。WGC 只能捕获在 Alt+Tab 列表中的窗口。解决办法也很简单,修改源窗口的样式使它可以被 alt+tab 切换到就完了

@Blinue
Copy link
Owner Author

Blinue commented Dec 16, 2021

WGC 高 CPU 占用的问题似乎是 directflip 引起的,你们尝试一下关闭 directflip 看看 cpu 占用 @palxex @hooke007

@hooke007
Copy link
Collaborator

可以降低近一半的单线程负载
Snipaste_2021-12-17_00-46-14
Snipaste_2021-12-17_00-47-12

@Blinue
Copy link
Owner Author

Blinue commented Dec 17, 2021

OBS 的 WGC CPU 占用很少,但是我按他们的方法配置也没解决问题

@hooke007
Copy link
Collaborator

我这里比较下来obs倒也不少
obs

magpie关闭directflip,缩放设置为nearest [1,1]来模拟obs纯捕捉
magpie

@Blinue
Copy link
Owner Author

Blinue commented Dec 18, 2021

关于跨越多个屏幕的功能有一个意想不到的障碍,Windows 没提供 API 持久标记一个显示器(如 ID 之类的),我就没法让用户指定使用哪些显示器。

这个问题存在十多年了 https://social.msdn.microsoft.com/Forums/en-US/668e3cf9-4e00-4b40-a6f8-c7d2fc1afd39/how-can-i-retrieve-monitor-information?forum=windowsgeneraldevelopmentissues

设置里每个显示器都有一个编号,但不幸的是,这个编号没有 API 来获取,而且系统重启后编号可能会变...

不值得在这里花太多功夫,我就只提供一个“跨越所有显示器”的功能

@FineLine0
Copy link

custom scaling algorithim? less intensive scaler than magpie fsr but better than bilinear and bicubic

@Blinue
Copy link
Owner Author

Blinue commented Dec 19, 2021

Do you want to recommend a new effect? Please file an issue

@palxex
Copy link

palxex commented Dec 19, 2021

我这里并没有出现过WGC占满CPU的情况,应该是因为我的显卡并不支持DirectFlip。在测试中打开关闭Magpie的DirectFlip选项都不影响CPU占用率,甚至我都没感觉这个捕获方式比其他的有任何差异——实际上这个是我日常使用的捕获方式,捕获方式中描述的双三次插值损失在200%下我看不出来,而这个API在我这的帧率稳定性是其他任何方法无法达到的。

@Blinue
Copy link
Owner Author

Blinue commented Dec 20, 2021

光标可以在屏幕间自由移动真的很棒,可惜我只有一个显示器,无福消受了🥲

@hooke007
Copy link
Collaborator

NIS 更新到了1.0.1

@Blinue
Copy link
Owner Author

Blinue commented Dec 22, 2021

会跟进

@Blinue
Copy link
Owner Author

Blinue commented Dec 25, 2021

NIS 更新后振铃问题好了很多

@hooke007
Copy link
Collaborator

hooke007 commented Dec 25, 2021

nvsharpen 有往左上偏移的问题(比较四周亮边)
sharpeness都是0.5

nis
nis

nvsharpen
nvsharpen

变形后 nvsharpen
bilinear+nvsharpen

@Blinue
Copy link
Owner Author

Blinue commented Dec 26, 2021

nvsharpen 有往左上偏移的问题

这个问题似乎一直有,我正在调查

更新:已修复

@Blinue
Copy link
Owner Author

Blinue commented Dec 26, 2021

现有的效果里只有 FSR 不支持 DX10,不用发布 DX10 版本了,直接加一个 DX10 的 FSR 就好。

@Blinue
Copy link
Owner Author

Blinue commented Dec 28, 2021

因为现在路线图迁移到 Projects 了,接下来关于开发的讨论转移到 Discussions 里

@Blinue
Copy link
Owner Author

Blinue commented Dec 28, 2021

#254

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants