2011-05-30 77 views
2

使用多個渲染目標有沒有意義?在清除目標並再次使用它之前,不能只繪製一個渲染目標並將其存儲到紋理中嗎?指向多個渲染目標

回答

1

當您想渲染一個幾何體並將不同的輸出收集到單獨的渲染目標中時,會使用多個渲染目標。

今天,這項技術主要用於實現延期着色。在延遲着色中,多個渲染目標存儲照明信息,例如表面法線,鏡面顏色和鏡面指數,以及深度和漫反射顏色信息。該組合的渲染目標被稱爲G緩衝區。對於延期着色和G緩衝區的引物,參見6800 Leagues Under the Sea (Hargreaves & Harris 2004)

4

瞭解MRT的關鍵在於,您並未向所有渲染目標繪製完全相同的數據。

像素着色器只能輸出4個浮點值,通常您會使用這4個值在給定點處生成顏色。但是,您可能想要輸出深度數據或普通數據,因此您可以使用這4個浮點值來表示其他可能需要的信息。

與MRT相比,您只需繪製場景一次並輸出到各個渲染目標,因此在一個渲染過程中,您可以輸出到一個渲染目標,它將接收漫反射顏色數據,另一個渲染目標將會收到正常數據和第三個渲染目標會收到深度數據。請參閱下文,更好地瞭解我的意思:

enter image description here

這是真的RGBA值成爲其他東西的情況下,例如RGB,因爲X,Y,正常的多邊形之中的ž畫。

有一些使用MRT的漁獲物,比如所有的渲染目標必須具有相同的位深度,並且你開始用它來推動你的GPU紋理填充率,但總的來說優點超過了這些陷阱。