Nvidia Developer 02月16日
Render Path-Traced Hair in Real Time with NVIDIA GeForce RTX 50 Series GPUs
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

NVIDIA GeForce 50 系列 GPU 通过引入线性扫描球体(LSS)图元,显著提升了头发和毛发的光线追踪加速能力,LSS图元是实现实时高质量数字人的重要一步,其应用范围广泛,包括AI头像、电影和游戏角色、图形研究等。LSS现已在NVIDIA OptiX和NVAPI SDK中提供,并通过RTX Character Rendering SDK提供实时头发的示例,该SDK是NVIDIA RTX Kit的一部分。RTX Kit 是一套神经渲染技术,旨在通过 AI 光线追踪游戏、渲染具有巨大几何体的场景以及创建具有照片般逼真视觉效果的游戏角色。

🚀 NVIDIA GeForce 50系列GPU引入LSS图元,为头发和毛发的光线追踪带来重大突破,加速渲染过程,提升视觉效果。

💡 LSS图元是一种具有可变半径的粗圆3D线条,多个LSS可以连接成3D曲线,类似于三角形构建3D表面,可用于硬件加速的粒子渲染。

⚙️ LSS提供两种索引模式:显式列表模式和半隐式连续隐式模式,后者通过假定第二个点是顶点缓冲区中的下一个顶点,节省了索引缓冲区50%的内存。

🛠️ 对于CUDA-based ray tracing API框架NVIDIA OptiX用户,LSS已作为默认线性曲线类型提供,可在所有OptiX支持的GPU上运行,并在GeForce RTX 50系列GPU上自动使用硬件加速图元。

✨ 除了LSS,还可以使用镶嵌曲线(如DOTS)在旧GPU上实现光线追踪,DOTS通过将曲线镶嵌成三角形,实现从任何角度观看而无需每帧重新定向三角形,从而利用现有的RTX硬件。

Hardware support for ray tracing triangle meshes was introduced as part of NVIDIA RTX in 2018. But ray tracing for hair and fur has remained a compute-intensive problem that has been difficult to further accelerate. That is, until now.NVIDIA GeForce 50 Series GPUs include a major advancement in the acceleration of ray tracing for hair and fur: hardware ray tracing support for the linear swept sphere (LSS) primitive. This new primitive is a big step toward rendering high-quality digital humans in real time. The range of applications for realistic human rendering is ever-increasing and includes AI avatars, film and game characters, graphics research, high-performance scientific computing applications, synthetic data generation, and more.LSS is available today in NVIDIA OptiX and in the NVAPI SDK. There are advanced examples of real-time hair using LSS with physically based shading models included in the RTX Character Rendering SDK which is part of NVIDIA RTX Kit. RTX Kit is a suite of neural rendering technologies to ray trace games with AI, render scenes with immense geometry, and create game characters with photorealistic visuals. RTX Kit was introduced during the GeForce RTX 50 Series launch.What is the LSS primitive?The LSS primitive is a thick, round 3D line with varying radii. Multiple linear swept spheres can be chained together to build 3D curves, sharing vertices where they overlap, similar to how triangles are used to build 3D surfaces. LSS is shaped like a cylindrical or conical tube with spheres optionally capping either end.Figure 1. The shapes of a linear swept sphereIf the two endpoints are overlapped so the line has no length, then the line swept sphere becomes just a regular sphere. This can be used for hardware-accelerated particle rendering. To make spheres convenient and memory efficient, this special case of LSS for spheres is being exposed as a separate first-class sphere primitive.Linear swept spheres aren’t normally meant to be shown in magnified close-up, as in Figure 1. Rather, they are intended to be small onscreen, maybe one pixel wide, give or take. When multiple linear swept spheres are chained together into strands and the camera is pulled back a bit, the sharp angles melt away and these thick lines become thin smooth curves.Figure 2. Linear swept spheres appear smooth from a distanceLSS indexingLSS comes with two indexing modes: an explicit list mode, and a semi-implicit mode called successive implicit. In list mode, each segment is specified explicitly using a pair of indices into your vertex buffer. In successive implicit mode, line segments are specified using one explicit index and one implicit index, where the second point is assumed to be the next vertex in the vertex buffer.Because successive vertices in memory are common and convenient, successive implicit mode is an easy way to save 50% of the memory in the index buffer. Figure 3 shows an example where an explicit index buffer would contain [0,1,1,2,2,3,4,5,5,6]. With successive implicit indexing, the index buffer would be [0,1,2,4,5].Figure 3. An example of two strands with vertex indicesRendering strand-based curves using legacy hardwareFor someone already using the CUDA-based ray tracing API framework NVIDIA OptiX, LSS is already available as the default linear curve type, and works on all GPUs that OptiX supports. The OptiX version of LSS automatically uses a software fallback on GPUs prior to NVIDIA Blackwell GPUs, and the new hardware-accelerated primitive on GeForce RTX 50 Series GPUs, without needing any code changes. If you’re not using OptiX, chances are you’ll need to use an alternative primitive. When it comes to high performance, tessellated curves are the next best thing to LSS. One option is camera-facing or ray-facing quads. Ray-facing quads have a relatively low memory footprint, though they may need to be oriented during every frame of animation (either hair motion or camera motion).Disjoint Orthogonal Triangle Strips (DOTS) provide a clever solution for tessellating curves that enables viewing from any angle without having to reorient the triangles every frame to face the camera. This way, if you render static curves, you won’t need to rebuild your bounding volume hierarchy (BVH) when the camera or hair moves. Because triangles have broad support, DOTS can take advantage of existing RTX hardware. Anyone who wants to use LSS on GeForce RTX 50 Series GPUs can still support ray traced strands on older GPUs using DOTS. Some hair examples using both DOTS and LSS will be available as part of the RTX Character Rendering SDK that implements path tracing of realistic human hair and skin.One advantage of LSS is that the geometry is naturally round, making it easy to shade and easy to avoid self-intersection when casting shadow and reflection rays. Tessellated curves like DOTS will typically need to have the geometric normal overridden by a custom shading normal, as shown in Figure 4. When rounded shading normals are used, then the appearance of DOTS can be similar to or even indistinguishable from the appearance of curves made out of linear swept spheres.Figure 4. Disjoint Orthogonal Triangle Strips can match the appearance of linear swept spheres when shading normals are usedBenefits of using LSS Some of the existing approaches to real-time hair include:Textured cardsRay-facing quads, tessellated tubes, orthogonal quads (DOTS)Software higher-order curve primitives (cubic Bezier, for example)Textured cards have been a good way to achieve a reasonable enough quality for hair in games on a very light budget. However, this kind of setup is extremely limited and does not allow much room for simulating or animating hair. Since a textured card has multiple strands per card, there is no control over individual strands, by design. Strand-based approaches are far more controllable and flexible, and this is one reason why strands are clearly the future of real-time hair rendering as the world’s hardware improves over time.Figure 5. Rendering animated hair on humans is about 2x faster with LSS compared to DOTS, while also requiring about 5x less VRAM to store the geometrySince triangles are well supported in hardware these days, tessellating curves into triangles (tubes, quads, DOTS) can be very fast to render. The downside is that tessellating takes time and can use a lot of memory. A quad requires four vertices, though two vertices can be shared with the next successive neighboring quad in the strand. So on average, camera facing quads will cost at least two vertices per strand segment. If tubes or DOTS are used, then the strand will end up with more than two vertices per segment on average.LSS only needs one vertex per strand segment on average, so it uses much less memory than tessellated curves, while achieving higher rendering speeds. And LSS is of course much faster than software higher-order curve primitives, like the cubic B-spline. Depending on the needs and tolerance for quality, this extra performance may come with a memory tradeoff compared to cubic curves, for example, if more vertices are needed for smoothness.What else can LSS be used for?The RTX version of the linear swept sphere was designed mainly with hair and fur in mind, but it can be used for other applications including particles, molecular models, wireframe rendering, font and path rendering, and whatever else you can imagine.Figure 6. Alternative uses of linear swept spheres include wireframe (left), particle rendering (center), and molecular models (right). Image credits: Bay Raitt, Valve; Stanford Dark Sky Simulations; University of IllinoisGet started with LSSRT Cores in the NVIDIA GeForce RTX 50 Series GPUs introduce hardware support for a new primitive called linear swept spheres (LSS). LSS is a round 3D line primitive with varying thickness, enabling flexible approximation of various strand types. As a special case of LSS, the GeForce RTX 50 Series GPUs hardware primitive also supports spheres directly (without a swept linear segment), which is useful for applications like particle systems.Rendering animated hair on humans is about 2x faster with LSS compared to DOTS, while also requiring about 5x less VRAM to store the geometry. This is similar for other common use cases. With LSS on GeForce RTX 50 Series GPUs and DOTS for earlier GPUs, there is now a way to get the highest possible hair ray tracing performance on all RTX GPUs.When ray tracing in CUDA, LSS is currently available in OptiX. For DirectX, API for LSS can be found starting in the R570 version of the NVAPI SDK. Vulkan developers will be interested in the Vulkan LSS extension. For examples of physically based hair rendering, check out the RTX Character Rendering SDK. To learn more about the latest AI and rendering technologies, check out the NVIDIA RTX Kit. Join the conversation about LSS on the OptiX NVIDIA Developer Forum. 

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

NVIDIA RTX 光线追踪 LSS图元 数字人 实时渲染
相关文章