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.7 计划 #94

Closed
18 of 19 tasks
Blinue opened this issue Aug 29, 2021 · 93 comments
Closed
18 of 19 tasks

v0.7 计划 #94

Blinue opened this issue Aug 29, 2021 · 93 comments

Comments

@Blinue
Copy link
Owner

Blinue commented Aug 29, 2021

功能

BUG

其他

  • All Contributors
  • 移除 Hardcodet.NotifyIcon.Wpf 依赖,因为它不兼容 GPLv3
  • 贡献指南
@Blinue Blinue added the roadmap label Aug 29, 2021
@Blinue
Copy link
Owner Author

Blinue commented Aug 29, 2021

现在Magpie使用Direct2D Custom Effect实现缩放效果,这个技术不是为性能而设计的,因此我计划使用Direct3D重写效果引擎,以实现下面的目标:

  1. 精细管理GPU指令和资源以提升性能和降低显存占用。
  2. 支持更多分辨率,Direct3D对纹理的限制比Direct2D少的多。
  3. 通过在运行时编译着色器实现效果插件化。
  4. 游戏内更改缩放配置。

这些是长远的目标,v0.7将至少实现第一条。

另外我也在考虑对reshade的兼容性。reshadeFX虽然是独立的组件,但它和reshade本身紧密耦合,因此短期内不会支持。

@Blinue
Copy link
Owner Author

Blinue commented Aug 29, 2021

目前已知的一些提升性能的方法:

  1. 提高 Magpie 的进程优先级。
  2. 关闭游戏模式。有时游戏模式会使 OS 分配更多 GPU 资源给游戏本身。
  3. 在 GPU 驱动中提高 Magpie 的优先级或降低游戏的优先级。
  4. 如果有多个 GPU,可以让 Magpie 运行在其他 GPU 上。
  5. 注意显存占用,在显存不足时 Magpie 会卡顿。

@Blinue Blinue pinned this issue Aug 29, 2021
@FugaziScript
Copy link

There is also Win32.DwmThumbnail capturing method which is fast. There is a comparison and samples here

@Blinue
Copy link
Owner Author

Blinue commented Aug 29, 2021

DwmThumbnail cannot get the texture of the window, it is drawn directly by DWM.

DwmSharedSurface seems to be a good method, although it is an undocumented API.

@hooke007
Copy link
Collaborator

hooke007 commented Sep 2, 2021

一个可有可无的不要紧的图标问题
Snipaste_2021-09-03_00-04-02
magpie的后台图标在深色和背景下任务栏很难看见,虽然截图可见性尚可,但是受限于实际的显示设备的亮度和对比度

@Blinue
Copy link
Owner Author

Blinue commented Sep 3, 2021

现在的图标太简陋了,如果有人能贡献图标就好了

@HealGea
Copy link

HealGea commented Sep 4, 2021

If it is not too much work for you, could you translate the road map and other things to English too? I am very curious as I am very interested in the program. Thanks.

@LightMu
Copy link

LightMu commented Sep 5, 2021

现在的图标太简陋了,如果有人能贡献图标就好了

https://imgtu.com/i/hR1iVI 自己P了个

@LightMu
Copy link

LightMu commented Sep 5, 2021

现在的图标太简陋了,如果有人能贡献图标就好了

https://imgtu.com/i/hR1iVI 自己P了个

https://wwa.lanzoui.com/iWEq4tmj5fa ICO格式

@LightMu
Copy link

LightMu commented Sep 5, 2021

https://imgtu.com/i/hR1bQg 效果

@Blinue
Copy link
Owner Author

Blinue commented Sep 5, 2021

谢谢,这个图标很棒。现在的问题是它在显示为32x32的场合太糊(比如系统托盘)
屏幕截图 2021-09-05 090829
文字已经不可见了。我的想法是图标要尽量简洁抽象,在尺寸较小时也有很高辨识度(比如图上的TrafficMonitor和Shadowsocks)。希望你能再做一些工作,为小尺寸的图标进行优化

@Blinue
Copy link
Owner Author

Blinue commented Sep 5, 2021

@HealGea Thanks for the suggestion. I'm putting more effort into coding than localizing the documentation. But if someone contributes a translation I'll be happy to accept it.

@LightMu
Copy link

LightMu commented Sep 5, 2021

谢谢,这个图标很棒。现在的问题是它在显示为32x32的场合太糊(比如系统托盘)
屏幕截图 2021-09-05 090829
文字已经不可见了。我的想法是图标要尽量简洁抽象,在尺寸较小时也有很高辨识度(比如图上的TrafficMonitor和Shadowsocks)。希望你能再做一些工作,为小尺寸的图标进行优化

https://imgtu.com/i/hRfh0H 会不会太简单

@Blinue
Copy link
Owner Author

Blinue commented Sep 5, 2021

虽然很有设计感,但对比度太低了
image
image

分享一个制作图标的软件,现在的图标就是用它做的。Windows的图标需要32x32,48x48,64x64,128x128四种尺寸,建议分别导出然后整合到ico里。
IcoFX.zip

感谢,完成之后请提交pull request,这样可以把你加入贡献者名单 :)

@LightMu
Copy link

LightMu commented Sep 5, 2021

虽然很有设计感,但对比度太低了
image
image

分享一个制作图标的软件,现在的图标就是用它做的。Windows的图标需要32x32,48x48,64x64,128x128四种尺寸,建议分别导出然后整合到ico里。
IcoFX.zip

感谢,完成之后请提交pull request,这样可以把你加入贡献者名单 :)

虽然很有设计感,但对比度太低了
image
image

分享一个制作图标的软件,现在的图标就是用它做的。Windows的图标需要32x32,48x48,64x64,128x128四种尺寸,建议分别导出然后整合到ico里。
IcoFX.zip

感谢,完成之后请提交pull request,这样可以把你加入贡献者名单 :)

https://wwa.lanzoui.com/iBxBatmtxjc

@HealGea
Copy link

HealGea commented Sep 5, 2021

@HealGea Thanks for the suggestion. I'm putting more effort into coding than localizing the documentation. But if someone contributes a translation I'll be happy to accept it.

I would be more than happy to help you if I know the language you speak but I don't. I can translate the program from English to Turkish though if you are interested.

@Blinue
Copy link
Owner Author

Blinue commented Sep 5, 2021

Feel free to contribute translations, and it would be better if you can maintain it.

@HealGea
Copy link

HealGea commented Sep 5, 2021

Feel free to contribute translations, and it would be better if you can maintain it.

Do you have something like Discord so I can contact you about translation?

@Blinue
Copy link
Owner Author

Blinue commented Sep 6, 2021

You should open a pull request or discussion.

@Blinue
Copy link
Owner Author

Blinue commented Sep 15, 2021

渲染的重写已经基本完成,希望你们帮忙测试一下d3d分支的性能 @palxex @hooke007

现在只支持FSR,且只能放大到全屏,缩放模式不起作用。

WinRT捕获重命名为 GraphicsCapture,添加了 DwmSharedSurface 和 GDI Over DXGI 两种捕获方式。希望你们分别测试四种捕获方式的性能。

@hooke007
Copy link
Collaborator

hooke007 commented Sep 15, 2021

DwmSharedSurface 和 GDI Over DXGI

暂时没有感知上的延迟,gdi也没有感知上的显著延迟

edit: Genshin 静态场景 cpu没有显著变化,至于为什么不放大的占用比放大之后还大。。。我也不知道
Snipaste_2021-09-15_20-28-12

@Blinue
Copy link
Owner Author

Blinue commented Sep 15, 2021

测试不同类型的窗口(GDI、DirectX、OpenGL等),查看CPU和GPU占用。GDI有延迟吗

@Blinue
Copy link
Owner Author

Blinue commented Sep 15, 2021

GraphicsCapture 是最快的,就是CPU占用有点高,DwmSharedSurface 和 GDI Over DXGI 比较平衡,而且可以捕获到更多类型的窗口,GDI性能最差。

和v0.6.1相比怎么样

@hooke007
Copy link
Collaborator

hooke007 commented Sep 15, 2021

这次直接对任务管理器进行放大观察,基本符合你的描述
从左到右: 源 GC DSS GDI+ GDI
Snipaste_2021-09-15_20-41-24
正好几次测试都调用了cpu0,GC的cpu占用很浮夸,gdi的gpu占用最明显

和v0.6.1相比怎么样

d3d 的GDI大幅提升了可用性,相比d2d的延迟很低

@Blinue
Copy link
Owner Author

Blinue commented Sep 15, 2021

渲染已经很难再优化了,再想提升性能只能从系统层面入手,这个暂且搁置。

我会发布一个预览版,让更多人可以反馈

@palxex
Copy link

palxex commented Sep 15, 2021

主观感受上这四种区别不大。
延迟方面,因为个人不敏感没法说。跟之前测试环境一样,zen2 3600锁4G,RX580 4G,显示器4k60hz无freesync。因为GPU瓶颈,测试中原生分辨率只能到1080P。
因为该版本帧率显示不生效,用AfterBurner显示的结果是会出现两个,原游戏画面和Magpie放大过的。
原神——游戏内设置1080P+60fps,垂直同步开:
GC和GDI这两个,两边帧率是同步的,一般是60。
DwmSharedSurface 和 GDI Over DXGI 这两个则不同,游戏本身的帧率保持60的前提下,Magpie窗口的帧率会随着负载减小越来越高,我在个别UI中见到了接近300的fps,估计是没有VSync限制
CEMU+BOTW——GraphicsPack设置(模拟器特有的hack,强制设置3d相关分辨率)1080P+60fps,垂直同步开:
4个方法都保持了绝大多数地方两者一致,除了开头UI很反常的,游戏内60fps,Magpie 30fps.
游戏内通过AfterBurner观察实时CPU占用大致符合作者的概述,但总体上都不算高,只看第一个核心没有见到超过40%的时候,GDI over DXGI最低(如果VSync能生效——因为在我的60hz显示器上渲染到300帧并无意义——我猜还能更低;这种高帧率+无垂直同步的体感还不如那两个锁60的)。GPU我的设置下一直都是接近满载的。
该分支比起0.6.1正式版,显存占用明显大大降低,1080P->4K大概不到100M,4K->4K约200M出头(前面的是cemu的窗口化全屏4k,相当于主流游戏的4K 50%渲染),而显存不爆的情况下,cemu+botw也不再有之前版本的不明帧率降低。
以上都是Win10下的测试结果,Win11的结果(包括圆角问题是否仍然存在)需要等明晚测试后再更新。

@Z-Dante
Copy link

Z-Dante commented Oct 25, 2021

I plan to delete SSimSuperRes. SSimDownscaler will follow up.

I would like to request you to keep SSimDownscaler in magpie. In my experience, SSimDownscaler is better at keeping details of 2d artworks compared to other downscaling algorithms.

@Blinue
Copy link
Owner Author

Blinue commented Oct 25, 2021

I won't remove SSimDownscaler as it's an awesome effect. Maybe the inappropriate translation made you misunderstand :)

@Blinue
Copy link
Owner Author

Blinue commented Oct 26, 2021

Lossless Scaling 也推出了 FSR,和它相比 Magpie 有哪些优势与不足?希望购买了 LS 的人能向我反馈

Lossless Scaling has also released FSR. Where does Magpie need to be improved? I would like feedback from those who have purchased LS!

@LightMu
Copy link

LightMu commented Oct 26, 2021

Lossless Scaling 也推出了 FSR,和它相比 Magpie 有哪些优势与不足?希望购买了 LS 的人能向我反馈

Lossless Scaling has also released FSR. Where does Magpie need to be improved? I would like feedback from those who have purchased LS!
无损缩放在8月份左右更新的1.5.0版本里加入了FSR的功能,并经过了7个版本的修复FSR效果很稳定。目前默认使用核显,延迟低,性能相对于原生窗口只有1-2fps的差异。
缩放比例可自定义调节,可以自动识别。
增加了一个FSR lite的缩放选项,似乎是FSR的弱化版。
这些是我的直观体验。(软件没有加密

@Blinue
Copy link
Owner Author

Blinue commented Oct 26, 2021

对于 FSR 这种非常轻量的缩放效果来说,减少缩放之外的负载才是最重要的。模块化和通用化是 Magpie 的精华,不过一定程度的性能损失就不可避免了。

我会持续优化 Magpie 的性能,也希望听到关于这方面的反馈和建议。

@linserv33
Copy link

linserv33 commented Oct 26, 2021

Lossless Scaling 也推出了 FSR,和它相比 Magpie 有哪些优势与不足?希望购买了 LS 的人能向我反馈

Lossless Scaling has also released FSR. Where does Magpie need to be improved? I would like feedback from those who have purchased LS!

对于我来说,性能相较之前的Magpie会比较好,在没重新编译之前一直用的Lossless Scaling,唯一缺点就是不能自定义缩放功能,在重新编译以后的Magpie,我看不出两者对性能损耗的差距(在我的电脑上可以说是没有),但是Magpie能够自定义缩放,我觉得这个功能就很不错
Lossless Scaling 有个便利的功能 就是强制进行缩放比例的调整,虽然有Sizer这类软件辅助,在部分游戏使用不是很方便(部分游戏只有其固定的分辨率,通过外部对其进行修改有些麻烦)
我会继续使用这两款软件,看看能否有所区别

@Blinue
Copy link
Owner Author

Blinue commented Oct 26, 2021

Lossless Scaling 有个便利的功能 就是强制进行缩放比例的调整,虽然有Sizer这类软件辅助,在部分游戏使用不是很方便(部分游戏只有其固定的分辨率,通过外部对其进行修改有些麻烦)

强制调整缩放比例是什么功能,是长和高的缩放比例不同的意思吗

@linserv33
Copy link

linserv33 commented Oct 26, 2021

Lossless Scaling 有个便利的功能 就是强制进行缩放比例的调整,虽然有Sizer这类软件辅助,在部分游戏使用不是很方便(部分游戏只有其固定的分辨率,通过外部对其进行修改有些麻烦)

强制调整缩放比例是什么功能,是长和高的缩放比例不同的意思吗

其实就是依据你本机的分辨率进行一个比例的缩放
比如那个软件,如果设定比例因子为1.2,本机分辨率为1920x1080
那么那个窗口就会被强制缩放为1600x900

@Blinue
Copy link
Owner Author

Blinue commented Oct 26, 2021

游戏不支持调整大小的话这个功能会不会使画面模糊

@linserv33
Copy link

游戏不支持调整大小的话这个功能会不会使画面模糊

不支持调整大小的游戏我没有试过,我试的是有其固定分辨率的游戏(比如只有1280x720,1366x768,1920x1080这种)
当强制调整为1600x900时,我认为和原生的1600x900没多大差别

@Blinue
Copy link
Owner Author

Blinue commented Oct 26, 2021

调整源窗口尺寸的功能会在未来加入 #173

@hooke007
Copy link
Collaborator

LS
+fsr实现了hdr支持(无法测试)
+fsr lite模型对低配更友好?
+有gc失败后fall back到gdi的自动处理
=fsr性能差异 magpie更吃u LS更吃显卡

图一:使用LS的处理器状态
LS

图二:使用magpie的处理器状态
magpie

图三:使用magpie的显卡状态(绿LS 蓝magpie)
Snipaste_2021-10-26_20-06-05

@Blinue
Copy link
Owner Author

Blinue commented Oct 26, 2021

很详细的对比!

  1. HDR 暂时没有支持打算,我没这样的显示器
  2. fsr lite 应该可以很容易的移植到 Magpie 上,有心人可以做一下
    https://atyuwen.github.io/posts/optimizing-fsr/
  3. Magpie 有四种捕获模式,我觉得它们各有优势(除了 GDI),所以不好做 fallback。GC 失败的情况应该相当罕见,尤其是对于 3D 游戏。
  4. 我很好奇 LS 使用的 GC 为什么降低了 CPU 占用却增加了 GPU 占用,看起来是别的捕获方式了。GC 的高 CPU 占用是 API 自带的问题。

@palxex
Copy link

palxex commented Nov 1, 2021

报一个新发现的问题。
在测试以管理员方式自动启动时发现,magpie的选项勾选后是立刻生效的,但保存却不是(至少「不绘制光标」等好几个选项是这样的)。这导致修改配置后游戏可以以修改后的选项放大,但如果之后magpie被通过任务管理器kill掉,之前调好的配置将无法保存,下次启动还是修改前的状态。
而Win10的重启在我测试中是无法触发magpie的选项保存的,也许它的实现就是kill掉?这导致我只要修改magpie选项后不手动关闭magpie就重启,那配置修改就是白做的,除非我每次配置后就手动关掉magpie再启动一次再重启……
如果修改选项后立刻存储不容易/不方便做,建议改成提前到关闭选项页时就保存,或者加个跨所有配置选项页面的确定按钮也行。

@Blinue
Copy link
Owner Author

Blinue commented Nov 1, 2021

现在只在程序关闭时保存一次设置,我会改成在设置页关闭时保存

@Blinue
Copy link
Owner Author

Blinue commented Nov 4, 2021

dwmSharedSurface 现在可以无视 DPI 缩放,它可以捕获到系统执行缩放前的图像。希望你们测试一下 @hooke007 @palxex

@hooke007
Copy link
Collaborator

hooke007 commented Nov 4, 2021

我当前环境暂无可以复现这个功能的程序。。如有将追加更新

@palxex
Copy link

palxex commented Nov 4, 2021

测了一圈,目前手头只有少数几个2D游戏对DPI缩放有反应而可以测出区别,3D游戏包括模拟器(测试了原神、崩坏3、Okami、CEMU BOTW)似乎都是倾向于直接使用原生像素的,因此跟之前完全没有区别。
测试系统:Win10 21H1,系统设置缩放200%,游戏exe设置均取消「高DPI缩放替代」(否则所有游戏都会使用原生像素,忽略系统缩放配置),magpie设置使用Integer Scale 2x
case 1. SDLPal. GraphicsCapture: 全屏后内容较窗口化后大一倍。DWMSharedSurface:全屏后所占屏幕空间较窗口化时完全一致。
case 2. Fate stay night/Fate Hollow Ataraxia. GraphicsCapture完全无效,DWMSharedSurface效果同SDLPal下。

@Blinue
Copy link
Owner Author

Blinue commented Nov 4, 2021

DWMSharedSurface 和 GDI 捕获到的都是 DPI 缩放前的图像,因此不会有任何模糊。只有 GC 捕获到的是缩放后的。

因为使用了一些黑科技,无法确保它的可靠性,还需要更多的测试。主要看对客户区的裁剪是否正确(图像四周是否有非客户区,可能是白边或黑边)

@palxex
Copy link

palxex commented Nov 4, 2021

已经测试的游戏里暂时没有发现此类情况,如果后续发现将追加到这个评论。

@Blinue
Copy link
Owner Author

Blinue commented Nov 8, 2021

@biantaonkss 请在 #164 中反馈

@Blinue
Copy link
Owner Author

Blinue commented Nov 9, 2021

Magpie 应该有一套图标。

现在使用的是微软的 Segoe MDL2 Assets,有几个缺点:

  1. 是字体图标,没法在系统托盘菜单中使用(Hardcodet.NotifyIcon.Wpf 可以使用,但它和 Magpie 许可证不兼容)
  2. 只在 Win10/11 中提供,而在可能的情况下我想尽量向下兼容
  3. 这套字体可能有许可证兼容性问题。一方面它随操作系统提供,可以视为是“系统软件”,但它本身是微软提供的商业字体。

另外 Magpie 的 Logo 还没着落,我会加一个根据任务栏颜色自动切换图标的功能 #131

@nt-cubic
Copy link

I605S@%(DDWBL2J}OF@N~%V
我对logo有个想法。喜鹊(Magpie)的羽毛围成一个圈,作为放大镜的形意。
我画得有点复杂,大概风格使用这种:
TGMBZ59VUA9BET$PM5%Q2~F
若是可以的话我托朋友整套logo出来

@Blinue
Copy link
Owner Author

Blinue commented Nov 15, 2021

感谢提出点子🙏

给Magpie做图标最棘手的问题是要适配系统托盘,这就要求:1. 简洁,在32x32的尺寸有辨识度 2. 同时适配黑底和白底,要么做成彩色,要么做出黑白两种版本

另外说一下 Magpie 名字的含义:mag 是放大镜,pie 是无限,字面意思就是“通用放大镜程序”,所以也可以写成MagPie。喜鹊是一个文字游戏,可以把这个名称“形象化”。Logo里有喜鹊的元素很好,没有也无妨

@hooke007
Copy link
Collaborator

#111

这个是不是在roadmap里被遗漏了

@Blinue
Copy link
Owner Author

Blinue commented Nov 15, 2021

这个功能有点复杂,0.8 里实现

@Blinue
Copy link
Owner Author

Blinue commented Nov 15, 2021

#202

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