摘要:SHADER基礎簡介
陰影圖(陰影映射Shadow mapping)與陰影體是當今兩種生成陰影的普通技術。其中陰影體比陰影映射困難不少。
陰影映射的原理為從光源位置看出去,所有能夠看到的物體都處在光照之中,這些物體後面的東西將處在陰影之中。光照場景進行渲染,保存能夠看到的物體表面深度,即為陰影圖。
對於實時陰影來說,這項技術要比陰影體的精度差一些,陰影圖有些情況下是一種速度比較快的選擇。並且,陰影圖不需要額外的模板緩存(stencil buffer),並且可以經過修改生成柔和邊界的陰影。但是,與陰影體不同,陰影圖的精度受到解析度的限制。
陰影場景的渲染需要兩個步驟來完成。第一步是產生陰影圖本身,第二步是將陰影圖應用到場景中。根據實現方式以及光源數目的不同,陰影場景渲染過程可能需要兩個或者更多的繪製過程。
陰影體(Shadow volume) 先從光源投射一條射線穿過產生陰影的物體中的每個頂點到某個點(通常在無窮遠點)。這些射線一起組成一個體;每個該體中的點都在陰影中,所有在外部的物體被該光源照亮。
實際的陰影體如下計算:
- 找到所有的輪廓邊(將前向面和後向面隔開的邊)
- 將所有的輪廓邊向遠離光源的方向伸展形成一個四邊形。
- 加入前蓋和後蓋到這些表面上形成一個閉合體(不是必要的,是否採用取決於所採用的實現方法)
by 魚