2014-02-17 88 views
2

我想實現平鋪的延遲渲染方法,現在我卡住了。我正在計算每個tile(32x32)的最小/最大深度並將其存儲在紋理中。然後我想要計算場景中每個點光源(球體)的矩形的左下角和右上角座標框(請參閱我的應用程序中的圖片)所代表的屏幕空間邊界框(邊界方塊)。這將與最小/最大深度一起用於檢查光線是否影響實際瓷磚。在OpenGL中的屏幕空間邊界框計算

問題是我不知道如何做到這一點。任何想法,源代碼或準確的數學?

bounding box of light, rendered light volume

更新 Your idea I guess

My attempt

回答

1

屏幕空間基本上是一個二維實體,所以不是一個邊框認爲邊界矩形的。

這裏是計算它一個簡單的方法:用你的ModelViewProjection矩陣

  • 你的世界空間邊界框的

    1. 項目8個角點到屏幕上找到這些點的矩形邊框(這是隻是點的最小/最大X和Y座標)

    可以使用更復雜的方法來計算點光源的屏幕空間邊界矩形。我們計算出四個穿過攝像機位置的平面,並與光線的照明範圍(光半徑)相切。每個切平面與圖像平面的交點在圖像平面上給我們4條線。這條線定義了最終的邊界矩形。

    請參閱本文的數學細節:http://www.altdevblogaday.com/2012/03/01/getting-the-projected-extent-of-a-sphere-to-the-near-plane/

  • +0

    這也是可能的解決方案,但我沒有計算領域邊界框,所以我想建立邊界從轉換光的位置廣場(四)查看空間計算它到屏幕空間。任何想法如何實現這一目標? – mezo

    +0

    @mezo:我已經更新了我的答案。 –

    +0

    你的意思是計算光的平截頭體(更確切地說是左,右,上,下平面---與視錐體相近和近似)?我試圖計算類似的東西,但並不像看起來那麼容易。我已更新我的帖子以顯示我的意思。不要在這個或某些源代碼上有一些精確的數學鏈接,以便更好地理解?謝謝 – mezo