[英]Fragment discard and early fragment tests in practice
我知道硬件可以運行早期片段測試 ( https://www.khronos.org/opengl/wiki/Early_Fragment_Test ) 特別是對於深度測試,這意味着深度緩沖區可以在頂點着色器輸出的插值期間更新片段着色器只會被深度測試失敗的片段調用。
現在,在片段着色器中使用discard
會禁用此優化。 我知道如果使用discard
,深度緩沖區的更新只能在片段着色器執行后發生。 但是實際的早期深度拒絕(即,如果片段無法通過深度測試,甚至不執行片段着色器)仍然是可能的。
所以我對這種情況下當前硬件上發生的事情很感興趣(特別是我對金魚草/腎上腺素硬件感興趣)
如果着色器包含discard
關鍵字(但不更改 gl_Fragdepth),片段着色器是否會被調用,即使是對於將無法通過深度測試的片段,還是它們仍然會得到早期 z 拒絕處理?
如果着色器包含 discard 關鍵字(但不更改 gl_Fragdepth),片段着色器是否會被調用,即使是對於將無法通過深度測試的片段,還是它們仍然會得到早期 z 拒絕處理?
根據幻燈片的第 32-34 頁,啟用/禁用 earlyZ 取決於 DepthWrite=OFF/ON
如果 DepthWrite=OFF,(即啟用 earlyZ),如果 2x2 quad 的任何像素通過深度測試,將調用片段着色器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.