피사계심도란?
W
Depth Of Field 라고도 하며
렌즈로 일정 거리에 피사체의 초점을 맞추면 앞면과 뒷면의 일정한 거리 내에 초점이 맞는데
이때 그 범위를 이르는 말로
게임 내에서는 씬 내에 있는 가장 멀리 있는 오브젝트와 가장 가까이 있는 오브젝트 사이의 거리
즉,카메라에 초점이 맞는 거리 범위를 말한다
크라이시스2 Bokeh 합성 DOF 영상
DOF ON
return lerp(OriginalImage, BlurredImage, saturate(Range *abs(Focus - PixelCameraZ))); |
VS_OUTPUT VS(VS_INPUT Input) { // 조명계산 필요시, 깊이값을 색성분의 w값에만 사용하고 다른성분에 조명을 계산한값을 출력 |
다음 축소 버퍼를 사용해 뭉갠 화면을 준비한 후 초점이 될 깊이값을 어플리케이션에서 세팅한다
이후 강도를 조절하고 lerp()함수를 사용해 선명한 화면과 뭉개진 화면을 합성한다.
// 카메라 공간으로 역변환 float PixelCameraZ = (-NearClip * Q) / (Depth - Q); |
사용자정의 Focus 값과 Range 값은 원래 이미지와 뭉갠이미지 사이를 선형 보간하기 위하여 구한
픽셀의 카메라 거리와 함께 사용되며 최종 화면으로 합성된다
// 선형 보간 return lerp(OriginalImage, BlurredImage, saturate(Range * abs(Focus - PixelCameraZ))); |
이때 절대값을 취하는 이유는 피사계심도가 초점이 맞는 위치를 기준으로 앞쪽과 뒤쪽 모두에서
흐리게 뭉개져야 하므로 초점이 맞는 위치를 기준으로 어느족으로 깊이값이 증가하더라도
뭉개지는 양이 증가 할수 있도록 한것이다
(절대값이 아닌 제곱 값을 취해도 되나 출력상태가 약간 틀리므로 보고 나서 선택 하도록)
이 밖에 Bokeh 합성이 있으며 자세한건 위키피디아를 참조..
NDC11 "올바른 HDR을 이용한 Bloom과 DOF" 이창희님
스타2의 DOF
그림에서 보면 블러를 먹일 양을 결정하진 텍스처 인것 같다
.. 최대치의 블러를 먹일 부분과 초점이 맞는
부분의 사이의 Fade 효과가 들어가는 것일지도...
대충 봤을때는 현재 픽셀의 블러를 먹일 것인가에 대한 데이터를 가진 텍스쳐인거 같다
출처 : http://blog.naver.com/sorkelf/40149186261
'Visualization Programming > Basic Knowledge' 카테고리의 다른 글
Basic Knowledge - Z-Fighting (0) | 2017.04.19 |
---|---|
Basic Knowledge - Pitch , Yaw , and Roll Systems (0) | 2017.04.19 |
Basic Knowledge - FOV (Field of View) (0) | 2017.04.19 |
Basic Knowledge - 렌더링 파이프라인 (0) | 2017.04.19 |
Basic Knowledge - 렌더링의 개요 (0) | 2017.04.19 |