要像素级排序,也就是OIT。主流引擎很多耗不起这样的排序,所以很多只是物体排序,错了就错了。
至于真的要做OIT的话,常见的套路有:
Depth peeling:慢,费显存(unbounded),但哪都能用
Stencil routed:费显存(bounded),D3D10.1+的卡能用
Per-pixel linked lists:略快,没那么费显存,D3D11+的卡能用(细节在
实现一个较新的OIT方法:Per-Pixel Linked Lists)
Adaptive transparency:更快,没那么费显存,D3D11+的卡能用(有损)(细节在
继续探索OIT:Adaptive Transparency)
Weighted blended OIT:更快,没那么费显存,D3D11+的卡能用(有损)
Pixel sync:快,不费显存,D3D12+的卡能用
而如果就是要速度,可以用一个depth peeling的极大简化版本,只渲染最远的一层和最近一层。通过设置face culling就能做到,对于几何不复杂的物体这个近似结果也不错。