Just My Life & My Work

最近實做了Bump MappingDisplacement Mapping,這兩者還算是相當基本的概念,可以很容易地用shader來做到real-time的效果,進一步研究即是更高深技術的Parallax MappingRelief Mapping,它可以更有效率地表現出更加真實的立體效果。

下表是我這週所整理出來,比較Bump, Normal, Displacement, Parallax, Relief Mapping之間的差異,若想要知道更多的細節,可以去研究paper。

Mapping Concept Map Shader
Bump mapping(1978) 計算vertex的光強時,不是直接使用該vertex的原始法向量,而是在原始法向量上加上一個擾動得到修改法向量,經過光強計算,能夠產生凹凸不平的表面效果。No self-occlusion, No self-shadow, No silhouette。 Bump map (Normal map) Fragment shader
Normal mapping (1996) normal map表示法向量資訊,而法向量資訊可由height map微分而得到,texture的RGB表示法向量的XYZ,利用此資訊計算光強,產生凹凸陰影的效果。No self-occlusion, No self-shadow, No silhouette。 Normal map Fragment shader
Displacement mapping (1984) 直接作用於vertex,根據displacement map中相對應vertex的像素值,使vertex沿法向移動,產生真正的凹凸表面。 Displacement map (Height map) Vertex shader
Parallax mapping (2001) (Virtual displacement mapping) 沒有修改vertex的位置,以視線和height map計算較陡峭的視角給vertex較多的位移,較平緩的視角給vertex較少的位移,透過視差獲得更強的立體感。No self-occlusion, No self-shadow。 Height map Fragment shader
Relief mapping(2005) (Steep Parallax Mapping) 更精確地找出觀察者的視線與高度的交點,對應的texture座標則是位移的距離,所以能更正確地模擬立體的效果,可以產生self-occlusion, self-shadowing, view-motion parallax, and silhouettes。 Height map Fragment shader

這裡名詞有許多歧異,可能是因為作法有很多種。做Bump mapping的時候,參考到使用Normal map來實做的教學,所以會將Bump mapping和Normal mapping都以前者名稱為主。不太清楚occlusion和shadow的差別,初步認知是前者陰影較淺(indirect lighting)而後者較深(direct lighting)。上頭的表格已經servey數次,希望沒有錯誤。

參考:WiKiBumpNormalDisplacementParallaxRelief Mapping。

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲