SlideShare a Scribd company logo
1 of 42
Fog

 구경원(돼지고기)
  2012.05.16
Fog
• 대기 중의 수증기가 응결하여 지표 가까이에 작
  은 물방울이 떠 있는 현상
FOG 개념
• 3D 장면을 구성하는 가상 카메라에서, 멀리 있
  는 오브젝트는 포그의 색상에 가깝게 만들고 가
  까운 오브젝트는 물체를 선명하게 보이게 하는
  기법.


       흡수작용 - 입자에 가로막히는 빛
     외산란 - 다른 방향 으로 반산 되는 빛
내산란 - 광선을 따라 반사된 다른 방향 의로 부터의 빛
FOG 효과
•   현실감 상승.
•   게임의 몰입도 극대화.
•   랜더링 속도의 향상.
•   갑자기 오브젝트가 나타나는 부자연 스러
    움 방지.
D3D FOG
• 정점 포그
• 픽셀 포그
D3D FOG
• 정점 포그
• 픽셀 포그

• 다각형의 각 정점에 포그 계산을 적용한다.
• Rasterize 때 다각형의 면에 결과를 보간 한다.
• 고정파이프라인에서 처리되어 진다.
D3D FOG
• 정점 포그
• 픽셀 포그

• SetRenderState(D3DRS_FOGENABLE, TRUE);
• SetRenderState(D3DRS_FOGCOLOR, Color);
• SetRenderState(D3DRS_FOGVERTEXMODE, Mode);
D3D FOG
• 정점 포그
• 픽셀 포그

• 픽셀단위로 포그 계산을 한다.
• 포그 계수를 사전에 계산된 참조테이블을 이용하기 때문
  에 테이블 포그 라고도 부른다.
• 정점포그 보다 더 컬리티가 높다.
• 장치 드라이브가 처리한다.
D3D FOG
• 정점 포그
• 픽셀 포그

• SetRenderState(D3DRS_FOGENABLE, TRUE);
• SetRenderState(D3DRS_FOGCOLOR, Color);
• SetRenderState(D3DRS_FOGTABLEMODE, Mode);
C = f * 폴리곤 색상 + ( 1 - f ) * 포그색상
f = 포그 계수 (1.0 ~ 0.0)
( 1.0 = 투명하다 0.0 = 탁하다)



- f의 계산 방식에 따라서 시각적으로 다양
한 효과를 얻을 수 있다.
F 를 구하는 방법?
• 선형포그
• 지수포그
• 지수제곱포그
선형 FOG
• 안개 구현 중 가장 간단하다
• 해당하는 거리에 걸쳐서 안개 입자가 균등하게 분포되어
  있다.
• 시작 값과 종료 값으로 안개를 조절한다.
• start - FOG 가 시작되는 거리.
• end - FOG 가 증가하지 않는 거리.
• d - 시점으로부터의 거리.
D3D 선형FOG
• SetRenderState(
• D3DRS_FOGVERTEXMODE, Mode );

• SetRenderState(
• D3DRS_FOGSTART, *(DWORD *)(&Start) );

• SetRenderState(
• D3DRS_FOGEND, *(DWORD *)(&End) );

• //D3DFOG_LINEAR
셰이더 선형FOG
지수 FOG
• 현실세계 현상과 매우 닮은 안개이다.
• 종료 값과 농도를 가지고 안개를 조절 한다.
• e - 자연대수의 바닥 ( 약 2.71828)이다.
• density - 0.0 ~ 1.0 의 범위의 임의의 FOG 밀도이다.
• distance - 즉 시점으로부터의 거리를 나타낸다.
D3D 지수FOG
• SetRenderState(
• D3DRS_FOGVERTEXMODE, Mode );

• SetRenderState(
• D3DRS_FOGDENSITY, *(DWORD
  *)(&Density) );

• // D3DFOG_EXP
셰이더 지수FOG
지수제곱 FOG
• 지수안개와 유사하다.
• 가까운 거리에서는 평탄하고 뒤이어 가파른 경사를 가진
  다.
• e - 자연대수의 바닥 ( 약 2.71828)이다.
• density - 0.0 ~ 1.0 의 범위의 임의의 FOG 밀도이다.
• density - 즉 시점으로부터의 거리를 나타낸다.
D3D 지수FOG
• SetRenderState(
• D3DRS_FOGVERTEXMODE, Mode );

• SetRenderState(
• D3DRS_FOGDENSITY, *(DWORD
  *)(&Density) );

• // D3DFOG_EXP2
셰이더 지수제곱FOG
Range-based FOG
• 오브젝트 기반
  카메라와 오브젝트의 거리에 따른 포그의 농도 이용.
• 거리 기반
  카메라와 일정 거리에 따른 포그의 농도 이용.
Range-based FOG
• 카메라를 회전시킬 때 오브젝트가 깜빡이는 현상.
• 다수의 오브젝트들이 있을 때 부자연스러운 Fog 연출.
Range-based FOG
• m_lpDevice->SetRenderState
  (D3DRENDERSTATE_RANGEFOGENABLE, TRUE);
• 정점 Fog 에서만 적용할 수 있다.
레이어 안개
• 거리요소 뿐만 아니라 높이 요소도 포함시킨다.
언리얼 - 볼륨포그
• 특정 영역에만 포그를 적용하는 방법.
언리얼 높이포그
버츄어 파이터 VTF 포그
• VTF:Vertex Texture Fetching
• 마무리
• Q&A
• END

More Related Content

Viewers also liked

[페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자![페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자!KyeongWon Koo
 
[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략KyeongWon Koo
 
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기KyeongWon Koo
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법KyeongWon Koo
 
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조KyeongWon Koo
 
역동적인 애니메이션 Ik
역동적인 애니메이션 Ik역동적인 애니메이션 Ik
역동적인 애니메이션 IkKyeongWon Koo
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬KyeongWon Koo
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리KyeongWon Koo
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 
[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍KyeongWon Koo
 
빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자KyeongWon Koo
 

Viewers also liked (11)

[페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자![페차쿠차] 3월 19일 아이디어에 미쳐보자!
[페차쿠차] 3월 19일 아이디어에 미쳐보자!
 
[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략[Gpg2권 구경원] 3.1 ai전략
[Gpg2권 구경원] 3.1 ai전략
 
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
[Gpg2권]4.7 인쇄해상도의 스크린샷 만들기
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
 
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
[Gpg2권 구경원] 3.4 rts 게임의 명령 큐잉을 위한 기반 구조
 
역동적인 애니메이션 Ik
역동적인 애니메이션 Ik역동적인 애니메이션 Ik
역동적인 애니메이션 Ik
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 
[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍[0204 구경원] sse 병렬 프로그래밍
[0204 구경원] sse 병렬 프로그래밍
 
빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자
 

[데브루키] FOG

  • 2. Fog • 대기 중의 수증기가 응결하여 지표 가까이에 작 은 물방울이 떠 있는 현상
  • 3. FOG 개념 • 3D 장면을 구성하는 가상 카메라에서, 멀리 있 는 오브젝트는 포그의 색상에 가깝게 만들고 가 까운 오브젝트는 물체를 선명하게 보이게 하는 기법. 흡수작용 - 입자에 가로막히는 빛 외산란 - 다른 방향 으로 반산 되는 빛 내산란 - 광선을 따라 반사된 다른 방향 의로 부터의 빛
  • 4. FOG 효과 • 현실감 상승. • 게임의 몰입도 극대화. • 랜더링 속도의 향상. • 갑자기 오브젝트가 나타나는 부자연 스러 움 방지.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. D3D FOG • 정점 포그 • 픽셀 포그
  • 14. D3D FOG • 정점 포그 • 픽셀 포그 • 다각형의 각 정점에 포그 계산을 적용한다. • Rasterize 때 다각형의 면에 결과를 보간 한다. • 고정파이프라인에서 처리되어 진다.
  • 15. D3D FOG • 정점 포그 • 픽셀 포그 • SetRenderState(D3DRS_FOGENABLE, TRUE); • SetRenderState(D3DRS_FOGCOLOR, Color); • SetRenderState(D3DRS_FOGVERTEXMODE, Mode);
  • 16. D3D FOG • 정점 포그 • 픽셀 포그 • 픽셀단위로 포그 계산을 한다. • 포그 계수를 사전에 계산된 참조테이블을 이용하기 때문 에 테이블 포그 라고도 부른다. • 정점포그 보다 더 컬리티가 높다. • 장치 드라이브가 처리한다.
  • 17. D3D FOG • 정점 포그 • 픽셀 포그 • SetRenderState(D3DRS_FOGENABLE, TRUE); • SetRenderState(D3DRS_FOGCOLOR, Color); • SetRenderState(D3DRS_FOGTABLEMODE, Mode);
  • 18. C = f * 폴리곤 색상 + ( 1 - f ) * 포그색상 f = 포그 계수 (1.0 ~ 0.0) ( 1.0 = 투명하다 0.0 = 탁하다) - f의 계산 방식에 따라서 시각적으로 다양 한 효과를 얻을 수 있다.
  • 19. F 를 구하는 방법? • 선형포그 • 지수포그 • 지수제곱포그
  • 20. 선형 FOG • 안개 구현 중 가장 간단하다 • 해당하는 거리에 걸쳐서 안개 입자가 균등하게 분포되어 있다. • 시작 값과 종료 값으로 안개를 조절한다.
  • 21. • start - FOG 가 시작되는 거리. • end - FOG 가 증가하지 않는 거리. • d - 시점으로부터의 거리.
  • 22. D3D 선형FOG • SetRenderState( • D3DRS_FOGVERTEXMODE, Mode ); • SetRenderState( • D3DRS_FOGSTART, *(DWORD *)(&Start) ); • SetRenderState( • D3DRS_FOGEND, *(DWORD *)(&End) ); • //D3DFOG_LINEAR
  • 24. 지수 FOG • 현실세계 현상과 매우 닮은 안개이다. • 종료 값과 농도를 가지고 안개를 조절 한다.
  • 25. • e - 자연대수의 바닥 ( 약 2.71828)이다. • density - 0.0 ~ 1.0 의 범위의 임의의 FOG 밀도이다. • distance - 즉 시점으로부터의 거리를 나타낸다.
  • 26. D3D 지수FOG • SetRenderState( • D3DRS_FOGVERTEXMODE, Mode ); • SetRenderState( • D3DRS_FOGDENSITY, *(DWORD *)(&Density) ); • // D3DFOG_EXP
  • 28. 지수제곱 FOG • 지수안개와 유사하다. • 가까운 거리에서는 평탄하고 뒤이어 가파른 경사를 가진 다.
  • 29. • e - 자연대수의 바닥 ( 약 2.71828)이다. • density - 0.0 ~ 1.0 의 범위의 임의의 FOG 밀도이다. • density - 즉 시점으로부터의 거리를 나타낸다.
  • 30. D3D 지수FOG • SetRenderState( • D3DRS_FOGVERTEXMODE, Mode ); • SetRenderState( • D3DRS_FOGDENSITY, *(DWORD *)(&Density) ); • // D3DFOG_EXP2
  • 32. Range-based FOG • 오브젝트 기반 카메라와 오브젝트의 거리에 따른 포그의 농도 이용. • 거리 기반 카메라와 일정 거리에 따른 포그의 농도 이용.
  • 33. Range-based FOG • 카메라를 회전시킬 때 오브젝트가 깜빡이는 현상. • 다수의 오브젝트들이 있을 때 부자연스러운 Fog 연출.
  • 34. Range-based FOG • m_lpDevice->SetRenderState (D3DRENDERSTATE_RANGEFOGENABLE, TRUE); • 정점 Fog 에서만 적용할 수 있다.
  • 35.
  • 36. 레이어 안개 • 거리요소 뿐만 아니라 높이 요소도 포함시킨다.
  • 37. 언리얼 - 볼륨포그 • 특정 영역에만 포그를 적용하는 방법.
  • 39. 버츄어 파이터 VTF 포그 • VTF:Vertex Texture Fetching