精選文章

SmallBurger Asset Home

  SmallBurger

2018年11月18日 星期日

Depth inverse projection and post effect

俗話說得好『科技始終來自於人性』,而效果始終來自於深度。

深度貼圖轉換空間座標算是很重要的技術,他被廣泛應用在影子、打光及各種後處理特效…若不懂這個技術,我認為對real time rendering還是一知半解,另外在Computer Version也有相關的議題Depth sensors are the key to unlocking next level computer vision applications.
在這邊跟大家介紹一下相關的處理流程及技術影片。

實作步驟如下:

  1. 繪製深度貼圖(這個是廢話,當然是必需的)
  2. 計算ViewRay(在vertexShader裡計算,含長度)
    float viewRay = mul(unity_CameraInvProjection, localPosition * _ProjectionParams.z).xyz;
  3. 計算ViewSpacePosition(depth是深度貼圖讀取出來的,viewRay則是vertex output)
    float3 viewSpacePosition = viewRay * depth;
  4. 計算WorldSpacePosition(_InverseView從c#傳Camera的cameraToWorldMatrix)
    float3 worldSpacePosition = mul(_InverseView, float4(viewSpacePosition , 1)).xyz;
  5. 接下來就可以好好享受WorldSpacePosition(也就是拿他的xz當project texture的uv)

相關技術影片如下:



相關參考技術demo專案:
keijiro/DepthInverseProjection

Dream continues in...

沒有留言:

張貼留言