我有一個OpenGL場景,呈現了一羣精靈,我想自動爲它們添加陰影。這裏有一張展示我的意思:OpenGL ES 2D陰影的陰影
該場景使用正投影,精靈是紋理四邊形,和我使用的深度緩衝區前吸引他們來支持。我正在使用OpenGL ES 2.0,但也會讚賞iOS或非ES世界的想法。在我的頭腦中,我拋出了一些想法,我想知道哪些是最有前途的。
- 繪製每個精靈兩次,第一次正常,第二次用某種陰影着色器在場景中更深一點。不知道這是可能的嗎?
- 繪製一個精靈,然後再繪製一遍,變暗,並用一些阿爾法,幾次與一些隨機抖動應用於verticies。這可能看起來很傻,根本不像一個影子。
- 繪製沒有背景的基礎場景到紋理,然後模糊並使其變暗以創建一個大的投影。然後在陰影紋理上繪製基礎場景,最後在背景上繪製。不過,這將會消失精靈之間的陰影。
- SSAO在後處理階段。可能是最具動態性和自動性的,但可能會看起來模糊/顆粒感和真正緩慢的事情。
- 在創建時,爲每個精靈生成陰影紋理。爲了渲染,在場景中繪製一個精靈,然後繪製它的陰影。我想我想避免這一點,由於加載時間和額外的內存要求,但這可能是最快和最好看?
我不想用外部紋理做任何陰影工作,因爲我在不同的比例下使用相同的精靈紋理,並且預先烘焙的陰影會不自然地縮放。
所以這些比其他人更好嗎?有沒有其他選擇我沒有想到?謝謝!
對於#3,您可能會對Imagination Technologies的後處理建議感興趣:http://www.imgtec.com/powervr/insider/docs/PowerVR.Post%20Processing%20Effects%20Development%20Recommendations.1.7f。 External.pdf,其中包括對高效布隆過濾器的描述。只需渲染對象的黑暗版本即可取代高通濾鏡,這應該會產生良好的快速投影。 – 2012-03-07 17:04:29
好讀,布拉德。如果我去#3,我可以使用這種方法。 – Josh 2012-03-07 17:38:39