我剛在我的引擎中實現了一個燈光系統。在下面的截圖中,你可以看到在行動一光(黃色方塊):漫射光/陰影
要考慮到在光的頂部光照的情況下,其還實施了FOV,將堵塞你的視野之外的任何內容。這就是爲什麼陰影的左側看起來如此關閉。
正如您所看到的,燈光的陰影非常「硬」,因爲它們甚至不會照亮直接觸及範圍之外的區域。 爲了使燈光看起來更好,我申請一個過濾器對他們來說,這幾乎限制了被照亮的範圍內,並且也略有還有iLuminate這個限度內的區域:
在黃色的大即使沒有直射光線到達,您也可以看到該區域是如何照亮的。
然而,這種解決方案帶來了一些不良的副作用。正如你可以在下面的截圖中看到,即使沒有光在所有到達的區域,將在點亮它太靠近光源:
我想知道是否有什麼辦法通過適當地使用着色器來實現我要做的事情。 我遇到的主要問題來自我如何繪製這些陰影。
1)首先我把結構放在燈的範圍內。
在這一點上,我與頂點的工作,因爲他們明確規定陰影投射項目的區域:)
2然後,對於每個對象,我估計他們單獨的陰影:
它們的陰影是由CPU完成的,通過calpulating突起爲身體的每個頂點。
3)然後GPU繪製這些形狀到紋理組成最終的影子:
我發現的問題是,使這個瀰漫性陰影效果,我需要最終的影子。如果我要計算步驟2)中的漫射陰影,則實體B和C之間會出現光線間隙。
但是,如果我在步驟3中彌散陰影,則不再具有頂點信息,因爲所有我所擁有的信息是3個局部紋理在一個最終紋理中加在一起。
那麼,有沒有辦法做到這一點?我的第一個想法是將變化傳遞給碎片生成器來計算有多少光進入黑暗區域,但是由於我將在最終的影子上處理這個信息,該信息沒有頂點信息,所以我完全失去了什麼我應該使用這種方法。
我對這種方法可能完全錯誤,因爲我對着色器的使用經驗非常有限。
這裏是什麼,我有一個例子,現在,我的願望: 我有什麼:普通照明withing光半徑(這會導致穿牆夾光
我想要什麼:陰影越強,距離光線越遠距離越遠
s/difuse/diffuse/ –
感謝您指出錯字。 Fix'd。編輯:我無法輸入! :( – Leo
我想我們需要更多關於你在哪裏做算法部分的信息。你計算CPU上的影子卷嗎? –