opengl Order-Independent Transparency 順序無關的透明 (一)

Order-independent transparency (OIT) is a class of techniques in rasterisational computer graphics for rendering transparency in a 3D scene, which do not require rendering geometry in sorted order for alpha compositing.
需求:因爲對於一個複雜的場景,透明渲染幾何間的按順序排序是非常困難且耗時的,這時候就需要設計一種方法來避免幾何間按順序排序。再有如果某個幾何體出現自交叉的情況,那麼就無法進行正確排序,也會導致渲染效果不正確問題。
思路:
使用排序後的片元列表來重新排序光柵化之後的片元,然後在片元着色器中完成融混操作。
鏈表的每個元素都記錄一個對最終像素顏色有貢獻的片元值屏幕的每個像素都會產生一個獨立的鏈表,其中包含所有對這個像素有貢獻的透明片元項。

總結主要功能:
我們要保存所有光柵化片元數據,使用一個原子計數器用來分配鏈表元素,分配一個與幀緩存大小相同的2d圖像,用來存儲每個像素的片元列表的head指針。
實驗效果:
未進行排序前的渲染結果:
這裏寫圖片描述

排序後的渲染結果:
這裏寫圖片描述

完整源碼文件:
https://t.zsxq.com/RBe2zFa

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章