零拷贝跨界桥接:Aximmetry与虚幻引擎5的双向共享显存(Shared Memory)与D3D12资源直通管线

在现代虚实融合(MR)与虚拟制片(ICVFX)的技术架构中,“多引擎协同”是实现极致画质与工业级播出安全性的必然选择。

通常,虚幻引擎 5(UE5)凭借其 Nanite(超高精几何体)与 Lumen(实时全局光照)技术,扮演着无与伦比的“3D 梦境编织者”; 而 Aximmetry 则凭借其刚性的广播级 I/O 路由、超低延迟的色键抠像(Chroma Keying)和 PTP/Genlock 时钟,充当着整个播出系统的“硬核物理合成底座”。

然而,当技术团队试图将这两大巨头进行强强联合时,会遭遇图形学底层的“跨进程像素搬运灾难(Inter-Process Bottleneck)”

  1. PCIe 总线的吞吐量黑洞: 在典型的合成管线中,Aximmetry 需要将实拍的 4K 10-bit HDR 实拍视频(输入介质)送入 UE5 内部进行虚拟遮挡(Occlusion)或环境折射计算;同时,UE5 渲染出的 3D 场景与 Alpha 深度图,又必须实时传回 Aximmetry 进行最终的高精度色彩合成与播出分发。 如果采用常规的跨进程通信(如传统的 Windows 套接字、NDI 甚至基于 CPU 内存的共享区),图像数据就必须在 GPU 显存 $\rightarrow$ CPU 系统内存(RAM) $\rightarrow$ GPU 显存 之间进行反复的、高频的搬运。 单路 4K 60fps 32-bit 浮点未压缩纹理的数据量高达 16 Gbps。这种高频的“显存-内存”拷贝会瞬间榨干 PCIe 总线带宽,导致严重的 GPU 渲染线程挂起(Stall)与丢帧。
  2. 时序撕裂与亚帧脱节: 由于 Aximmetry 的合成主线程与 UE5 的渲染线程(Render Thread)运行在不同的进程空间,如果缺乏底层的硬件级同步,两者在读写同一块共享像素区域时,会产生严重的竞争冒险(Race Condition)。这表现为画面边缘的锯齿状时序撕裂,以及虚拟背景与实拍人物在快速运动时产生的“亚帧级延迟脱节”。

为了在不消耗任何 PCIe 传输带宽、不引入任何 CPU 开销的前提下,实现 4K HDR 像素流在两大引擎之间的瞬时穿梭,Aximmetry 部署了一套高度专有的“基于 DirectX 12 共享堆(Shared Heaps)与硬件级 GPU Fences 的双向零拷贝直通管线”


一、 显存边界消融:基于 D3D12 Shared Heaps 与 NT 句柄的零拷贝跨进程互通

为了让像素流动实现“0 微秒”的跨界迁徙,Aximmetry 彻底消灭了 CPU 内存作为中转站的角色。 它在 DirectX 12 驱动层,将 Aximmetry 进程与 UE5 进程的 GPU 显存空间进行虚拟联结:

1. D3D12 共享堆(Shared Heaps)分配

在系统初始化时,Aximmetry 显存管理器直接调用 Windows Display Driver Model (WDDM) 的底层 API,在物理显存中开辟一块支持跨进程共享的 D3D12 堆(D3D12_HEAP_FLAG_SHARED)。 这块堆的物理地址被牢牢锁死在 GPU 高速显存(VRAM)中,不允许任何向 CPU 系统内存的换页回写(Page-out)。

2. NT 句柄(NT Handles)跨进程安全桥接

Aximmetry 将该共享堆的 GPU 物理指针,封装为 Windows 内核级的 NT 共享句柄(Shared NT Handle)。 通过 Aximmetry 专用的 UE5 插件(Aximmetry Camera Adapter),虚幻引擎 5 的渲染设备(D3D12 Device)在启动时直接导入该 NT 句柄,并在其内部的虚拟内存空间中,对该共享显存区域进行 “原地重建(Resource In-place Reconstruction)”

3. 双向无拷贝纹理绑定(In-VRAM Texture Binding)

  • Aximmetry $\rightarrow$ UE5: 实拍视频和高精抠像遮罩(Alpha Mask)在被 Aximmetry 采集、解包并转为 ACEScg FP16 格式后,直接写入该共享显存块。UE5 内部的材质系统(Material Graph)通过该共享句柄,直接将其绑定为纹理采样器(Texture Sampler),无需任何数据传输。
  • UE5 $\rightarrow$ Aximmetry: UE5 渲染出的背景画幅与深度图(G-Buffer),也以同样的方式,通过共享句柄直接将显存地址暴露给 Aximmetry 的 3D 合成器。

在这条极其纯净的管线中,像素从未离开过显存芯片的核心区域。 跨引擎的数据传输开销被彻底清零,PCIe 总线得到了 100% 的完美释放。


二、 栅栏硬锁:基于 GPU Fences 的跨引擎异步渲染时序协同

解决了“显存共享”的物理通道后,接下来必须解决最严苛的读写时序同步(Synchronization)。 如果 Aximmetry 正在写入视频纹理时,UE5 同时也去读取它,就会产生“脏数据”和画面撕裂。

Aximmetry 并没有采用会阻塞 CPU 线程的操作系统信号量,而是引入了 GPU 底层的“硬件级共享栅栏(Shared GPU Fences)”机制:

1. 硬件级 Fence 对象创建(ID3D12Fence)

Aximmetry 在 GPU 内部创建了一个全局可被两端引擎查询的硬件级同步器——ID3D12Fence。 该 Fence 拥有一个递增的 64-bit 计数器值,直接运行在 GPU 的命令队列调度器(Command Queue Scheduler)中。

2. 异步命令队列“红绿灯”控制

  • 写入通知: 当 Aximmetry 的 GPU 完成了某一帧实拍视频的去溢色与格式转换,向共享显存写入完毕后,它会在 GPU 渲染队列中追加一个 Signal(Fence, CurrentValue) 命令。
  • 读取等待: 虚幻引擎 5 的 D3D12 命令列表在开始渲染 3D 场景、调用这路实拍纹理之前,其 GPU 队列会首先执行一条非阻塞的 Wait(Fence, CurrentValue) 指令。
  • 硬件级无缝挂起: 如果 Aximmetry 的写入尚未完成,GPU 内部的硬件调度器会挂起 UE5 的该项渲染指令,使 GPU 的计算单元(Compute Units)立即转去执行 UE5 场景中的其他计算任务(如粒子更新),绝不让整个 GPU 线程在原地空转(Stall)。

3. 亚像素时域对齐

一旦 Aximmetry 的 Signal 信号发出,GPU 调度器瞬间唤醒 UE5 的读取和光栅化渲染。 这种直接在 GPU 硬件内核层 建立的“红绿灯”控制,将两款独立引擎之间的时序抖动(Jitter)死死控制在 微秒级,彻底消灭了因跨进程通信延迟抖动引发的任何时域错位与画面撕裂。


三、 高宽带像素解耦:跨引擎 G-Buffer 深度拦截与实时物理遮挡

在扩展现实(XR)和绿幕合成中,最让技术总监头疼的是“虚实前后遮挡(Dynamic Occlusion)”。 例如,当一个实拍演员在虚拟的柱子前走过,然后又走到虚拟的桌子后方。

要实现这种动态穿插,传统的做法是在 UE5 内部将背景切片,但这会引入多倍的材质遮罩渲染和边缘毛刺。 Aximmetry 借助这套 DirectX 12 共享显存堆,实现了极其高效的 G-Buffer 深度拦截与实时合成算法(G-Buffer Depth Interception)

1. 拦截并剥离 UE5 的 32-bit 深度缓冲区(Depth Buffer)

在 UE5 完成其 3D 渲染的瞬间,Aximmetry 插件通过 D3D12 共享句柄,直接从虚幻引擎的交换链中,拦截并无损提取出当前帧的 32-bit 高精度深度图(Z-Buffer)

2. 3D 空间深度实时比对

这幅深度图在显存内被秒速推送至 Aximmetry 的 GPU 合成节点。 此时,Aximmetry 自研的合成器在 GPU 内部执行一个极其轻量化的像素级深度比对(Depth Test):

  • 系统将实拍相机的追踪深度(或预设的 3D 垃圾遮罩深度),与 UE5 Z-Buffer 中对应像素的虚拟深度值进行实时比对。
  • 若实拍演员的深度小于虚拟物体的深度,系统保留实拍像素(演员在物体前);
  • 反之,则用虚拟背景像素盖过实拍人物(演员在物体后)。

3. 零锯齿深度羽化(Depth Feathering)

由于这一比对是在 Aximmetry 高达 32-bit 的浮点显存环境中并行计算的,合成引擎可以在比对边缘实施自适应的亚像素级深度羽化算法(Sub-pixel Depth Softening)。 它消除了传统深度遮挡边缘常见的“黑边”和“硬齿状割裂”,让实拍演员与虚拟复杂的 3D 场景完美地交织在一起,呈现出近乎于物理冲印的高阶遮挡关系。


结语:融为一体的数字时空

在虚拟制作向高分辨率、高动态范围、低延迟疯狂迈进的今天,多软件平台之间的“数据孤岛”与“总线壁垒”,是榨干顶级服务器硬件性能的罪魁祸首。 如果无法在底层消灭多引擎协同中的数据拷贝开销,任何所谓的画质跨越都只是以牺牲稳定性为代价的空中楼阁。

虚幻引擎 5 像一位天才画师,在三维世界里挥洒光影;而 Aximmetry 则像一位冷酷的时间与物理法官,在现实世界里严苛地统筹数据。

Aximmetry 的伟大,正是它用 DirectX 12 的底层硬件技术,在两大引擎的显存世界之间,搭建起了一座“零拷贝、高同步的黄金通道”

它用共享堆和 NT 句柄消灭了 PCIe 总线灾难,用 GPU 硬件 Fences 锁死了时序同步,用 G-Buffer 深度拦截实现了完美的虚实遮挡。 正是因为有了 Aximmetry 这一套无形、却极其坚固的底层显存直通管线,虚幻引擎 5 的无边艺术创意,才得以毫无损耗、毫无延迟地注入到广播级的高速播出轨道中,让虚拟与现实在同一个物理 GPU 芯片的方寸之间,融合成一套天衣无缝、坚不可摧的数字时空。

AeroCore图片