我目前有一個延遲渲染系統設置,可以渲染點光源和方向燈。我的問題是我可以選擇不同形式的陰影,這些陰影可以使基於點光源和定向光源的陰影可以使用延遲陰影設置?實時動態陰影補充延期陰影?
4
A
回答
7
關於延遲渲染,需要獨特的陰影技術沒有什麼特別的。大多數生成陰影的標準方法都適用於延遲渲染方案。
陰影映射是當今在遊戲等實時應用中最常用的陰影算法。模板陰影幾年前流行起來,但由於各種限制已經失寵。陰影映射適用於延遲着色。陰影映射的基本算法非常簡單:
- 從光源的角度渲染渲染目標紋理的深度(您需要爲點光源渲染立方體貼圖的6個面)。
- 當您執行燈光照明時,對於每個像素將世界空間位置變換爲燈光的視野空間,並將深度與存儲在陰影地圖中的深度進行比較。如果它大於陰影圖深度,則該點位於陰影中,否則通常點亮。
像往常一樣渲染,惡魔是在細節。爲了獲得高質量的陰影,您需要仔細設置陰影貼圖投影,以便充分利用陰影貼圖中可用的像素(搜索透視陰影貼圖,級聯陰影貼圖)。由於精度問題,你會得到自我陰影表面的各種文物(陰影痤瘡是最常見的),並有各種策略來減少這些文物(深度偏差,投影矩陣調整)的發生率。爲了減少分辨率不足的陰影貼圖的塊狀,像素化外觀,您可能需要執行一些陰影貼圖過濾。百分比接近過濾是標準方法,並且有多種方法可以執行PCF。
您還將面臨標準的質量/性能折衷,陰影和動態陰影往往是場景渲染中最昂貴的方面之一。有很多技巧和技巧可以嘗試最大化陰影映射的性能。
最近,在基本陰影映射算法方面出現了一些變體,它試圖通過不同的方式接近過濾問題,給出給定陰影貼圖分辨率的更好看的結果。方差陰影貼圖和指數陰影貼圖是兩種最近的技術,它們具有一些很好的優點,但也有一些獨特的問題。
Nvidia的developer site是一個很好的圖形編程資源,並且有很多關於陰影的文章。看看網站上提供的GPU Gems書籍的HTML版本,他們也有各種關於影子的文章,包括關於GPU Gems 3中的方差影子地圖的權威性文章。
相關問題
- 1. 用延期製作實現陰影
- 2. C++ - 動態陰影投射
- 3. Unity實時軟陰影
- 4. R:在陰謀使用陰影填充
- 5. 陰影
- 6. R陰影的陰影部分
- 7. 瀰漫陰影和ambiant陰影
- 8. OpenGL | ES添加陰影/陰影貼圖
- 9. 陰影路徑和陰影在PNG
- 10. 陰影質量(陰影痤瘡)
- 11. OpenGL ES 2D陰影的陰影
- 12. 帶有浮動陰影的動畫陰影效果
- 13. 將角度(陰影)和距離(從陰影轉換爲文本)動態轉換爲文字陰影效果
- 14. Three.js陰影不如預期
- 15. 陰影本期的UITableViewCell的
- 16. 動態水平滾動陰影
- 17. CALayer的實體陰影
- 18. CoreGraphics的陰影?
- 19. 文字陰影
- 20. Three20 TTStyle陰影
- 21. 邊框陰影
- 22. JPanel陰影
- 23. 陰影DOM
- 24. Android內陰影
- 25. 邊框陰影
- 26. NSTextField內陰影
- 27. 陰影與GDlib
- 28. 應用陰影
- 29. 圖像陰影
- 30. CSS3陰影