CuRast: Cuda-Based Software Rasterization for Billions of Triangles

📄 arXiv: 2604.21749v2 📥 PDF

作者: Markus Schütz, Lukas Lipp, Elias Kristmann, Michael Wimmer

分类: cs.GR

发布日期: 2026-04-23 (更新: 2026-04-24)

🔗 代码/项目: GITHUB


💡 一句话要点

CuRast:基于CUDA的软件光栅化,高效渲染数十亿三角形

🎯 匹配领域: 支柱三:空间感知与语义 (Perception & Semantics)

关键词: CUDA 光栅化 软件渲染 大规模模型 三角形网格

📋 核心要点

  1. 现有方法在渲染大规模三角形数据集时,通常需要预先构建加速结构,计算开销大。
  2. CuRast利用CUDA计算着色器高效光栅化小三角形的特性,设计三阶段流水线,无需预先构建加速结构。
  3. 实验表明,CuRast在渲染大规模模型时,比Vulkan快2-12倍,但在低多边形网格上Vulkan更快。

📝 摘要(中文)

本文提出了一种基于CUDA的软件光栅化方法CuRast,旨在高效渲染大规模三角形数据集,无需预先构建加速结构。该方法利用计算着色器高效光栅化小三角形的特性,构建了一个三阶段光栅化流水线。第一阶段直接光栅化小三角形,使用atomicMin存储最近的片段。较大的三角形被转发到第二和第三阶段处理。实验结果表明,CuRast在渲染数亿三角形的模型时,比Vulkan快2-5倍(唯一三角形)或高达12倍(实例化)。然而,对于低多边形网格,Vulkan仍然快一个数量级。目前,CuRast主要关注从摄影测量/3D重建获得的密集、不透明网格,暂不支持混合/透明度,且对包含数千个低多边形网格的场景处理效率不高。未来的工作将优化对数万个节点/网格场景的处理,增加对分层聚类LOD(如Meshoptimizer生成)的支持,并添加对透明度的支持。

🔬 方法详解

问题定义:论文旨在解决大规模三角形数据集的高效光栅化问题。传统方法通常依赖于预先构建的加速结构(如BVH),这带来了额外的计算和内存开销,尤其是在处理动态场景或需要快速原型设计时。现有GPU硬件光栅化器在处理大量小三角形时效率较低,成为性能瓶颈。

核心思路:论文的核心思路是利用CUDA计算着色器直接光栅化小三角形,避免构建加速结构。通过将光栅化过程分解为多个阶段,并根据三角形的大小进行分流处理,从而优化整体性能。这种方法特别适用于从摄影测量或3D重建中获得的密集网格数据。

技术框架:CuRast采用三阶段光栅化流水线: 1. 小三角形光栅化阶段:直接使用计算着色器光栅化小三角形,利用atomicMin操作来确定最近的片段。 2. 中等三角形光栅化阶段:将未能直接光栅化的小三角形转发到此阶段进行处理。 3. 大三角形光栅化阶段:处理剩余的大三角形。这种分阶段处理允许针对不同大小的三角形进行优化。

关键创新:CuRast的关键创新在于: 1. 无加速结构:避免了预先构建加速结构的开销,简化了渲染流程。 2. 基于CUDA的软件光栅化:充分利用CUDA的并行计算能力,实现高效的光栅化。 3. 分阶段处理:根据三角形大小进行分流处理,优化了整体性能。

关键设计:论文中没有明确提及关键的参数设置、损失函数或网络结构等技术细节,因为这是一个纯粹的光栅化算法,而非基于机器学习的方法。关键设计在于如何有效地利用CUDA的atomicMin操作来解决深度冲突,以及如何平衡不同阶段之间的负载。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

CuRast在渲染包含数亿个三角形的模型时,性能优于Vulkan。对于唯一三角形,CuRast比Vulkan快2-5倍;对于实例化三角形,CuRast比Vulkan快高达12倍。这些结果表明,CuRast在处理大规模三角形数据集时具有显著的性能优势。但对于低多边形网格,Vulkan仍然更快。

🎯 应用场景

CuRast适用于需要快速渲染大规模、密集三角形网格的场景,例如摄影测量、3D重建、科学可视化等。该方法可以用于快速原型设计、实时渲染以及离线渲染等应用。未来,通过增加对透明度和更多场景的支持,CuRast有望应用于游戏开发、虚拟现实等领域。

📄 摘要(原文)

Previous work shows that small triangles can be rasterized efficiently with compute shaders. Building on this insight, we explore how far this can be pushed for massive triangle datasets without the need to construct acceleration structures in advance. Method: A 3-stage rasterization pipeline first rasterizes small triangles directly in stage 1, using atomicMin to store the closest fragments. Larger triangles are forwarded to stages 2 and 3. Results: CuRast can render models with hundreds of millions of triangles up to 2-5x (unique) or up to 12x (instanced) faster than Vulkan. Vulkan remains an order of magnitude faster for low-poly meshes. Limitations: We currently focus on dense, opaque meshes that you would typically obtain from photogrammetry/3D reconstruction. Blending/Transparency is not yet supported, and scenes with thousands of low-poly meshes are not implemented efficiently. Future Work: To make it suitable for games and a wider range of use cases, future work will need to (1) optimize handling of scenes with tens of thousands of nodes/meshes, (2) add support for hierarchical clustered LODs such as those produced by Meshoptimizer, (3) add support for transparency, likely in its own stage so as to keep opaque rasterization untouched and fast. Source Code: https://github.com/m-schuetz/CuRast