Depth Map & Fog Effect

Date:     Updated:

카테고리:

태그:

홍정모님의 그래픽스 새싹코스 강의를 듣고 정리한 내용입니다.


🐥 Depth Map

Origin Map Depth Map
3 4

Ect-67

Depth Map은 카메라를 기준으로 얼마만큼의 거리를 갖는지를 표현한 버퍼이다. 이때 깊이값은 정확히 카메라 부터 world position까지의 거리가 아닌 카메라와 Near-Far축에 대한 거리이다. Depth Map은 Frame Buffer와 동일한 크기이며 픽셀 단위로 깊이 값을 가진다.


float4 TexcoordToView(float2 texcoord)
{
  float4 posProj;

  posProj.xy = texcoord * 2.0 - 1.0;
  posProj.y *= -1;
  posProj.z = depthOnlyTex.Sample(linearClampSampler, texcoord).r;
  posProj.w = 1.0;

  float4 posView = mul(posProj, invProj);
  posProj.xyz /= posProj.w;

  return posProj;
}
  • 특정 World 좌표의 깊이값은?
  • xy 범위를 [0, 1]에서 NDC[-1, 1]로 조정
  • depthTexture에서 해당 위치의 깊이값 가져오기
  • MVP변환을 구할 때 같이 구해둔 inverse Projection변환을 이용해 역변환


🐥 Fog Effect

images

단순한 Fog Effect 구현 방법을 생각해보면, 특정 위치의 깊이에 비례한 fog color를 interpolation하는 방법이 있다. 이때 Beer-Lambert Law를 적용해주면 더욱 현실적인 Fog Effect를 구현할 수 있다. Beer-Lambert Law란 매질의 성질과 빛의 감쇠현상에 대한 법칙이다. 간단한 미분 방적식을 풀면 되는데 exp에 대한 함수로 정리된다.

🐥 Results

ezgif com-crop (1)



맨 위로 이동하기

Graphics 카테고리 내 다른 글 보러가기

댓글 남기기