[程式] Unreal的nanite分析与简化(Part 1)

楼主: oopFoo (3d)   2024-05-23 17:40:39
" Level of Detail for 3D Graphics "
https://lodbook.com/
这本书还有网站,虽然很旧但还是很有用,书虽然不容易买了但pdf还蛮容易找的。Recommended
Quadric Error Metrics(QEM)
http://www.cs.cmu.edu/~garland/Papers/quadrics.pdf
简单好用,最普及的Simplification的算法
https://mgarland.org/software/qslim.html
QSlim是实践QEM的软件,可研读。但因为license是GPL,可想直接用的,另外参考
https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification
去github找找适合的。
QuadTree,Binary Triangle Tree(bintree)了解也有帮助。
限制3d mesh是Manifold(有洞没差)会好处理许多。HalfEdge 好用。
C-LOD要处理的问题是,不同层次的LOD要如何避免t-junction/crack。能处理这问题基本上算法就成功了。如果避不掉还可以用skirts/flanges处理,但这不理想。
适合GPU的运算法要
1)CPU尽量不要写新资料到GPU,因为慢。
2)除了coarse occlusion/frustum culling,其它都batch起来交给GPU处理。
3)GPU的branch性能不理想,要多想想如何避开,但避不开也不用想太多。
在gpu兴起前,用cpu算法来减少triangles是王道,但这违反(1)。GPU能处理triangles的数量实在太庞大了,就算多个几倍,能减少cpu/gpu的互动都是划算的。
PS:如果有什么不清楚的,问,我写的大概漏掉太多解释。

Links booklink

Contact Us: admin [ a t ] ucptt.com