ShadowMapping
一共做兩次計算,第一次從燈光出發,記錄各點最近深度形成shadowmap。第二次從錄影機出發,利用shadowmap進行陰影判斷。但是會出現自遮擋現象,以及走樣現象
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35EMNpXTxsGROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxcjMyQjNzYTM3ADNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
因為shadowmap有像素分别率,從某個像素看去,覆寫過去的深度,就是一個像素大小常值深度。
橘色值方片,就是一個常值深度,随後後面像素被遮擋。
解決辦法:通過夾角判斷忽略一小段距離。
secondDepth shadowmapping
還記錄次小深度,利用最小和次小深度的中間深度,來做陰影投射。
利用積分拆分不等式,将visibility與shading部分分離。當gx積分域較小,且函數足夠光滑時該約等式成立。
對于點光源和面光源都是十分準确的。
Percentage closer soft shadows軟陰影
Percentage closer Filtering(PCF) 是為了解決陰影鋸齒問題,不是為了做軟陰影。是在做陰影判斷時進行操作,而不是得到圖像後做模糊處理。
具體操作:從該點出發,連向shadowmap,并不是隻看shadowmap上一個點的深度值,而是找該點周圍一個區域進行判斷01,最後權重平均計算深度。
利用硬陰影,做遮擋物距離不同大小的fliter就能得到軟硬陰影。
w為軟陰影區域,blocker距離為遮擋物距離。