NVIDIA
The set of samples demonstrates how to interact with an external graphics API via Unigine API (ResourceExternalMemory and ResourceFence). Although the samples show interaction with NVIDIA CUDA Toolkit, you may use them as the basis for integrating the Engine GAPI (Vulkan, DX11, DX12) with other GAPI (OpenGL, DX, CUDA, etc.) that can accept the handle and import a synchronization primitive (such as external semaphore in CUDA).这组示例演示了如何通过 Unigine API(ResourceExternalMemory 和 ResourceFence)与外部图形 API 交互。虽然示例展示了与 NVIDIA CUDA Toolkit 的交互,但您可以将其用作集成 Engine GAPI(Vulkan、DX11、DX12)与其他可以接受句柄并导入同步原语(例如 CUDA 中的外部信号量)的 GAPI(OpenGL、DX、CUDA 等)的基础。
This approach allows interaction of various APIs using different GAPI, such as interaction of MediaFoundation using DX11 with the Engine using DX12 or Vulkan.这种方法可能有助于使用不同的 GAPI 配置各种 API 的交互,例如使用 DX11 的 MediaFoundation 与使用 DX12 或 Vulkan 的 Engine 的交互。
The samples also illustrate how to take the data directly from the video memory without CPU roundtrip and processing it using non-engine graphics API.这些示例还说明了如何直接从视频内存中获取数据(无需 CPU 往返)并使用非引擎图形 API 对其进行处理
The difference in GPU -> CPU texture transfer performance made via CUDA 12.3 and by the Engine are shown in the table below (tested on our working configurations). Average performance gain with CUDA comprised x10 to x24 depending on the viewport resolution.通过CUDA 12.3和引擎进行的GPU到CPU纹理传输性能差异如下表所示(在我们的工作配置上测试)。使用CUDA的平均性能提升在x10到x24之间,具体取决于视口分辨率。
You can check the results on your PC just by launching the CUDATextureTransfer sample and enabling the Profiler.您可以通过运行 CUDATextureTransfer 示例并启用性能分析器在您的电脑上检查结果。
CUDAMeshDynamicCUDAMeshDynamic#
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
CUDAStructuredBufferWriteCUDAStructuredBufferWrite#
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
CUDATextureTransferCUDATextureTransfer#
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
CUDATextureWriteCUDATextureWrite#
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