<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Nanite on MrOptimist</title><link>https://mr0ptimist.github.io/tags/nanite/</link><description>Recent content in Nanite on MrOptimist</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 21 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mr0ptimist.github.io/tags/nanite/index.xml" rel="self" type="application/rss+xml"/><item><title>UE5 Nanite 与传统渲染管线的深度源码对比</title><link>https://mr0ptimist.github.io/posts/ue5-nanite-%E4%B8%8E%E4%BC%A0%E7%BB%9F%E6%B8%B2%E6%9F%93%E7%AE%A1%E7%BA%BF%E7%9A%84%E6%B7%B1%E5%BA%A6%E6%BA%90%E7%A0%81%E5%AF%B9%E6%AF%94/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><guid>https://mr0ptimist.github.io/posts/ue5-nanite-%E4%B8%8E%E4%BC%A0%E7%BB%9F%E6%B8%B2%E6%9F%93%E7%AE%A1%E7%BA%BF%E7%9A%84%E6%B7%B1%E5%BA%A6%E6%BA%90%E7%A0%81%E5%AF%B9%E6%AF%94/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文基于 UE 5.4/5.5 引擎源码，从源码层面深入对比 Nanite 渲染管线与传统网格渲染管线的差异。所有代码引用均标注了引擎内的原始路径。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-宏观架构概览"&gt;1. 宏观架构概览&lt;/h2&gt;
&lt;p&gt;传统渲染管线和 Nanite 管线的最根本区别在于：&lt;strong&gt;几何处理的主导权从 CPU 转移到了 GPU&lt;/strong&gt;，并且&lt;strong&gt;材质着色从 Pixel Shader 迁移到了 Compute Shader&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;传统渲染 (Traditional)&lt;/th&gt;
&lt;th&gt;Nanite&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;几何裁剪&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CPU-driven Frustum/Occlusion Culling&lt;/td&gt;
&lt;td&gt;GPU-driven Cluster Culling + Two-Pass Occlusion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LOD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;离散 LOD (StaticMesh LOD0~N)&lt;/td&gt;
&lt;td&gt;连续 LOD (Cluster Hierarchy, Runtime Streaming)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;光栅化&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;硬件光栅化 (Fixed Function RS)&lt;/td&gt;
&lt;td&gt;软件光栅化 (Compute) + 硬件光栅化 (Mesh/Prim Shader)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;中间表示&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;无 (直接写 GBuffer/FrameBuffer)&lt;/td&gt;
&lt;td&gt;Visibility Buffer (VisBuffer64)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;材质着色&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pixel Shader (&lt;code&gt;BasePassPixelShader.usf&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Compute Shader (&lt;code&gt;ComputeShaderOutputCommon.ush&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GBuffer 输出&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SV_Target&lt;/code&gt; MRT&lt;/td&gt;
&lt;td&gt;UAV (&lt;code&gt;ComputeShadingOutputs.OutTargetN&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DrawCall&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;FMeshDrawCommand&lt;/code&gt; (CPU 组装)&lt;/td&gt;
&lt;td&gt;Indirect Dispatch (GPU 驱动)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="2-渲染入口与调度"&gt;2. 渲染入口与调度&lt;/h2&gt;
&lt;h3 id="21-传统渲染的入口"&gt;2.1 传统渲染的入口&lt;/h3&gt;
&lt;p&gt;传统渲染的顶层调度在 &lt;code&gt;FDeferredShadingSceneRenderer::Render()&lt;/code&gt; 中，通过 &lt;code&gt;RenderBasePass()&lt;/code&gt; 等函数发起。每个 &lt;code&gt;FPrimitiveSceneProxy&lt;/code&gt; 会在 &lt;code&gt;FMeshPassProcessor&lt;/code&gt; 中被转换为 &lt;code&gt;FMeshDrawCommand&lt;/code&gt;，最终由 &lt;code&gt;FParallelMeshDrawCommandPass&lt;/code&gt; 提交到 RHI。&lt;/p&gt;</description></item><item><title>Nanite VisBuffer 核心概念速查</title><link>https://mr0ptimist.github.io/posts/nanite_visbuffer%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E9%80%9F%E6%9F%A5/</link><pubDate>Mon, 20 Apr 2026 14:00:00 +0800</pubDate><guid>https://mr0ptimist.github.io/posts/nanite_visbuffer%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5%E9%80%9F%E6%9F%A5/</guid><description>&lt;h1 id="nanite-visbuffer-核心概念速查"&gt;Nanite VisBuffer 核心概念速查&lt;/h1&gt;
&lt;p&gt;Nanite 是 UE5 的虚拟化几何系统，其核心创新是用 &lt;strong&gt;Visibility Buffer（可见性缓冲）&lt;/strong&gt; 替代传统 G-Buffer，将几何处理与材质着色完全解耦。本文梳理 VisBuffer 管线中涉及的关键概念。&lt;/p&gt;
&lt;h2 id="visbuffer-整体管线"&gt;VisBuffer 整体管线&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Mesh → Instance → Cluster Group → Cluster → Triangle → VisBuffer → Material Pass
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Culling Pass（计算着色器）&lt;/strong&gt;：GPU 端逐 Cluster 做视锥/遮挡/屏幕尺寸剔除&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rasterization Pass&lt;/strong&gt;：将可见像素写入 VisBuffer（仅存 ID，不做材质计算）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Material Pass&lt;/strong&gt;：全屏 Pass 读取 VisBuffer，解码 ID，仅对可见像素着色一次&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;来源：Brian Karis, &amp;ldquo;A Deep Dive into Nanite Virtualized Geometry&amp;rdquo;, SIGGRAPH 2021 (Advances in Real-Time Rendering)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="三角形triangle"&gt;三角形（Triangle）&lt;/h2&gt;
&lt;p&gt;Cluster 内的基本渲染单元。每个 Cluster 包含最多 &lt;strong&gt;128 个三角形&lt;/strong&gt;。在 VisBuffer 中，三角形 ID 占约 7 bit（2^7 = 128），用于在 Material Pass 中定位该三角形的三个顶点并做重心坐标插值。&lt;/p&gt;</description></item><item><title>Nanite: A Deep Dive</title><link>https://mr0ptimist.github.io/posts/karis_nanite_siggraph_advances_2021/</link><pubDate>Mon, 20 Apr 2026 10:00:00 +0800</pubDate><guid>https://mr0ptimist.github.io/posts/karis_nanite_siggraph_advances_2021/</guid><description>&lt;h1 id="nanite-a-deep-dive"&gt;Nanite: A Deep Dive&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;来源&lt;/strong&gt;: &lt;a href="https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf"&gt;Karis_Nanite_SIGGRAPH_Advances_2021_final&lt;/a&gt; — Brian Karis, Rune Stubbe, Graham Wihlidal
&lt;strong&gt;会议&lt;/strong&gt;: SIGGRAPH 2021 &lt;em&gt;Advances in Real-Time Rendering in Games&lt;/em&gt; course
&lt;strong&gt;作者主讲&lt;/strong&gt;: Brian Karis (Engineering Fellow, Epic Games)
&lt;strong&gt;主题&lt;/strong&gt;: UE5 全新虚拟几何系统 Nanite 的深度技术解析&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="#1-%E6%84%BF%E6%99%AF%E4%B8%8E%E7%8E%B0%E5%AE%9E"&gt;愿景与现实&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-%E5%8F%AF%E9%80%89%E6%96%B9%E6%A1%88%E7%9A%84%E6%8E%A2%E7%B4%A2"&gt;可选方案的探索&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-gpu-driven-pipeline"&gt;GPU Driven Pipeline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#4-%E4%B8%89%E8%A7%92%E5%BD%A2-cluster-culling-%E4%B8%8E-occlusion-culling"&gt;三角形 Cluster Culling 与 Occlusion Culling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#5-visibility-buffer-%E4%B8%8E%E5%8F%AF%E8%A7%81%E6%80%A7%E6%9D%90%E8%B4%A8%E8%A7%A3%E8%80%A6"&gt;Visibility Buffer 与可见性/材质解耦&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#6-%E6%AC%A1%E7%BA%BF%E6%80%A7%E6%89%A9%E5%B1%95%E4%B8%8E-cluster-%E5%B1%82%E6%AC%A1%E7%BB%93%E6%9E%84"&gt;次线性扩展与 Cluster 层次结构&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#7-lod-%E8%A3%82%E7%BC%9D%E9%97%AE%E9%A2%98%E4%B8%8E-dag-%E6%9E%84%E5%BB%BA"&gt;LOD 裂缝问题与 DAG 构建&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#8-%E6%9E%84%E5%BB%BA%E6%B5%81%E7%A8%8B%E8%AF%A6%E8%A7%A3build-operations"&gt;构建流程详解（Build Operations）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#9-%E7%AE%80%E5%8C%96%E7%AE%97%E6%B3%95%E4%B8%8E%E8%AF%AF%E5%B7%AE%E5%BA%A6%E9%87%8F"&gt;简化算法与误差度量&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#10-%E8%BF%90%E8%A1%8C%E6%97%B6%E8%A7%86%E7%9B%B8%E5%85%B3-lod-%E9%80%89%E6%8B%A9"&gt;运行时视相关 LOD 选择&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#11-%E5%B9%B6%E8%A1%8C-lod-%E9%80%89%E6%8B%A9%E4%B8%8E%E5%B1%82%E6%AC%A1%E8%A3%81%E5%89%AA"&gt;并行 LOD 选择与层次裁剪&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#12-persistent-threads-%E4%B8%8E%E4%B8%A4-pass-occlusion-culling"&gt;Persistent Threads 与两 Pass Occlusion Culling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#13-%E5%85%89%E6%A0%85%E5%8C%96%E8%BD%AF%E4%BB%B6--%E7%A1%AC%E4%BB%B6%E6%B7%B7%E5%90%88"&gt;光栅化（软件 + 硬件混合）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#14-%E5%B0%8F%E4%B8%89%E8%A7%92%E5%BD%A2%E4%B8%8E%E5%BE%AE%E5%A4%9A%E8%BE%B9%E5%BD%A2%E8%BD%AF%E5%85%89%E6%A0%85%E5%99%A8"&gt;小三角形与微多边形软光栅器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#15-%E5%B0%8F%E5%AE%9E%E4%BE%8Btiny-instances%E4%B8%8E-imposter"&gt;小实例（Tiny Instances）与 Imposter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#16-%E5%BB%B6%E8%BF%9F%E6%9D%90%E8%B4%A8%E6%B1%82%E5%80%BCdeferred-material-evaluation"&gt;延迟材质求值（Deferred Material Evaluation）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#17-%E6%B5%81%E6%B0%B4%E7%BA%BF%E6%80%A7%E8%83%BD%E6%95%B0%E6%8D%AE"&gt;流水线性能数据&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#18-%E9%98%B4%E5%BD%B1virtual-shadow-maps"&gt;阴影：Virtual Shadow Maps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#19-streaming%E5%87%A0%E4%BD%95%E6%B5%81%E9%80%81"&gt;Streaming（几何流送）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#20-%E5%8E%8B%E7%BC%A9%E5%86%85%E5%AD%98%E8%A1%A8%E7%A4%BA%E4%B8%8E%E7%A3%81%E7%9B%98%E8%A1%A8%E7%A4%BA"&gt;压缩：内存表示与磁盘表示&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#21-%E7%BB%93%E6%9E%9C%E4%B8%8E%E6%9C%AA%E6%9D%A5%E5%B7%A5%E4%BD%9C"&gt;结果与未来工作&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#22-%E8%87%B4%E8%B0%A2%E4%B8%8E%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE"&gt;致谢与参考文献&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="1-愿景与现实"&gt;1. 愿景与现实&lt;/h2&gt;
&lt;h3 id="11-the-dream梦想"&gt;1.1 The Dream（梦想）&lt;/h3&gt;
&lt;p&gt;像 Virtual Texturing 那样&lt;strong&gt;虚拟化几何&lt;/strong&gt;：&lt;/p&gt;</description></item></channel></rss>