NVIDIA
这组示例演示了如何通过 Unigine API(ResourceExternalMemory 和 ResourceFence)与外部图形 API 交互。虽然示例展示了与 NVIDIA CUDA Toolkit 的交互,但您可以将其用作集成 Engine GAPI(Vulkan、DX11、DX12)与其他可以接受句柄并导入同步原语(例如 CUDA 中的外部信号量)的 GAPI(OpenGL、DX、CUDA 等)的基础。
这种方法可能有助于使用不同的 GAPI 配置各种 API 的交互,例如使用 DX11 的 MediaFoundation 与使用 DX12 或 Vulkan 的 Engine 的交互。
这些示例还说明了如何直接从视频内存中获取数据(无需 CPU 往返)并使用非引擎图形 API 对其进行处理
通过CUDA 12.3和引擎进行的GPU到CPU纹理传输性能差异如下表所示(在我们的工作配置上测试)。使用CUDA的平均性能提升在x10到x24之间,具体取决于视口分辨率。
您可以通过运行 CUDATextureTransfer 示例并启用性能分析器在您的电脑上检查结果。
CUDAMeshDynamic#
Vertices of a shared dynamic mesh are processed on GPU using CUDA.
To build the sample, use CUDA Toolkit v12.3.
On Linux: after installing the CUDA Toolkit, make sure that the PATH environment variable includes /usr/local/cuda-12.2/bin.
SDK Path: <SDK_INSTALLATION>source\samples\3rdparty\CUDAMeshDynamic
CUDAStructuredBufferWrite#
Particles in a shared structured buffer are updated on GPU using CUDA, and rasterized manually using Unigine Material with Compute Shader.
To build the sample, use CUDA Toolkit v12.3.
On Linux: after installing the CUDA Toolkit, make sure that the PATH environment variable includes /usr/local/cuda-12.2/bin.
SDK Path: <SDK_INSTALLATION>source\samples\3rdparty\StructuredBufferWrite
CUDATextureTransfer#
A shared texture is processed with CUDA and copied from video memory to RAM into Unigine Image.
To build the sample, use CUDA Toolkit v12.3.
On Linux: after installing the CUDA Toolkit, make sure that the PATH environment variable includes /usr/local/cuda-12.2/bin.
SDK Path: <SDK_INSTALLATION>source\samples\3rdparty\CUDATextureTransfer
CUDATextureWrite#
A shared texture is processed with CUDA and displayed on the Unigine Object as a texture on a cube.
To build the sample, use CUDA Toolkit v12.3.
On Linux: after installing the CUDA Toolkit, make sure that the PATH environment variable includes /usr/local/cuda-12.2/bin.
SDK Path: <SDK_INSTALLATION>source\samples\3rdparty\CUDATextureWrite