2016-08-10 89 views
3

我和一位朋友一直在爭論模板緩衝區。簡而言之,我一直無法發現模板緩衝區相對於OpenGL 3.2+中的可編程管道工具的優勢。現代OpenGL中的模板緩衝區有什麼用處?模板緩衝區在現代OpenGL中仍然相關嗎?

[編輯]

謝謝大家對這個問題的所有輸入。

+2

[早期片段測試](https://www.opengl.org/wiki/Early_Fragment_Test)避免運行昂貴的片段着色器? – genpfault

+0

我認爲這個鏈接是相關的http://gamedev.stackexchange.com/questions/105667/stencil-buffer-vs-conditional-discard-in-fragment-shader – Harish

+2

它和以前一樣有用,與你無關使用可編程管線或不使用。在片段着色器執行之後,模板測試作爲固定功能每片段操作的一部分應用。渲染管線的那部分仍然不可編程。 –

回答

11

它比以前更有用,因爲您可以從片段着色器中對模板索引紋理進行採樣。甚至不應該認爲模板緩衝區不是可編程管線的一部分。

深度緩衝區用於簡單的通過/失敗片段拒絕,模板緩衝區也可以按照註釋中的建議進行操作。但是,模板緩衝區也可以累積多次通過測試結果的信息。各種邏輯和計數應用程序都存在,例如測量場景的深度複雜度,建設性立體幾何等。

7

要將最近的示例添加到Andon的答案,GTA V使用模板緩衝區有點像ID緩衝區來標記播放器字符,汽車,植被等。

它隨後使用模板緩衝區僅將子表面散射應用於角色或將其排除在運動模糊之外。

GTA V Graphics Study(強烈推薦,這是一個偉大的閱讀!)

編輯:相信你可以在軟件做到這一點。但是,您也可以在軟件中進行光柵化或曲面細分......最後它是關於我想要的性能。隨着depth24stencil8你有一個很好的硬件支持的格式,模板測試是最有可能更快,然後在片段着色器做丟棄。

+0

感謝您的研究,它是一個非常有趣的閱讀和一個我以前沒有見過。爲了收集更多的想法和意見,我會再次打開這幾天,但這是一個非常可靠的答案。謝謝。 – claudehenry

+1

@claudehenry:有一種有趣的命令獨立透明度技術,稱爲[stencil-routed A-buffering](http://www.humus.name/index.php?page=3D&ID=76),它使用模板緩衝區來推遲排序片段,直到最終解決多采樣幀緩衝區。 _這是你在軟件中無法做到的,它補充了karyon給像素分配身份的例子。@ –

+0

@ AndonM.Coleman很酷,生病檢查出來,謝謝。 – claudehenry

-1

只是提供一個其他用途的情況下,影卷(又名「模板陰影」)仍然是非常相關的:https://en.wikipedia.org/wiki/Shadow_volume

他們對那裏的陰影應該是像素完美的室內場景有用的,你」不太可能有經過alpha測試的樹葉搞亂了陰影體積。

確實陰影圖更常見,但我懷疑一旦大腦死亡Createive/3DLabs專利在zfail方法上過期,模板陰影就會復發。

+1

這不是專利 - 它是他們要求的過度填充率。無論如何,陰影貼圖只是縮放比例更好,而清晰的陰影也不是真實照片。 – ybungalobill