2012-11-30 104 views
3

我正在執行的延期渲染全方位陰影映射,但我有麻煩解決這個問題:全方位陰影映射射燈

這裏有一個畫面:shadow problem example

這是發生了什麼事時,我只是六個方位點指示燈沿正向和反向指向每個軸。我知道這個問題是由點光計算爲燈光保持錐形的光照而引起的,這就是爲什麼它是圓形的。

我的第一個想法是隻是禁用錐體計算,但很明顯,因爲燈光混合在一起,如果你通過一個燈光看另一個會有重疊。如果我將光線從錐形渲染到基於方形的金字塔(我認爲無論如何我需要這樣做),那麼我就可以使用光的截頭(我已經有了)的錐形計算來測試當前像素是否落在平截頭體內,對嗎?

如果有的話,是否有人知道在像素着色器中執行此操作的最佳方法是什麼?我想只是檢查點是否位於平截頭體的每個平面的前方,但在像素着色器中這似乎很昂貴。

+0

刪除並重新提出相同的問題是*不*你如何回答你的問題。你可以通過將信息*放入人們要求的問題中得到答案。 –

+0

「*這是發生在我正確定位沿着每個軸指向正反方向的六個聚光燈時發生的事情。*」你會怎樣做到這一點?如果你想要*點光源*,那麼只需使用點光源。你只是從一些在線延遲着色示例中複製並粘貼代碼,該示例只顯示瞭如何做聚光燈? –

+0

對不起,我刪除了舊的問題,我不再重新提交它,我已經重新編寫它,我愚蠢地省略了我正在處理陰影映射,即時消息不問只是添加一個點光源,我有這個工作正常。 「什麼會讓你真正做到這一點?」我的問題是關於點光源的陰影映射,你需要使用6個點光源來模擬點光源,對於一個很好的解釋我推薦閱讀這個alt dev博客文章http://www.altdevblogaday.com/2011/01/30/omni-directional-shadow-mapping/ – user1848064

回答

0

你有6個視錐,但請注意,

  1. 你不需要檢查的背面或正面,只是無論是
  2. 每個面由兩個相鄰的視錐共享無限金字塔
  3. 每個面由面向圓臺鏡像向後

這意味着你只需要檢查的像素對6個面的總看到你需要訪問的陰影貼圖。