這篇文章介紹了 NVIDIA GPU 上 Clears 的最佳實踐。要在應用程序中獲得高且一致的幀速率,請參閱所有 高級 API 性能提示 .
表面清理是一種廣泛使用的輔助操作。
推薦
- 使用圖形 API 中的清除函數來清除資源。
- 使用任何清晰的顏色來清除渲染目標。
- 硬件優化改進了最清晰的操作。
- 清除深度緩沖區時,請使用合適的清除值。
- 使用深度測試功能
D3D12_COMPARISON_FUNC_GREATER
或D3D12_COMPARISON_FUNC_GREATER_EQUAL
時,更喜歡[0.0 , 0.5]范圍內的清晰值 - 在使用深度測試功能
D3D12_COMPARISON_FUNC_LESS
或D3D12_COMPARISON_FUNC_LESS_EQUAL
時,首選[0.5 , 1.0]范圍內的清晰值。
- 使用深度測試功能
- 將清除操作分組為盡可能少的批次。
- 批處理減少了每次清除的性能開銷。
不推薦
- 避免使用多個不同的透明顏色進行表面清理。
- 在 NVIDIA Ampere 架構 GPU 上,清除優化限制為每幀 25 種清晰顏色。
- 在 NVIDIA Turing GPU 上,清除優化限制為每幀 10 種清晰顏色。
- 避免將單個清除調用與渲染工作交叉進行。
- 只要有可能,組會分批清除。
- 永遠不要使用透明著色器替代 API 透明。
- 它會禁用硬件優化,并對 CPU 和 GPU 性能產生負面影響。
- 例外:將計算清除與相鄰計算工作重疊可能會提供更好的性能。
致謝
感謝邁克爾·墨菲、莫里斯·哈里斯、德米特里·日丹和帕特里克·尼爾的建議和反饋。
?