rain rendering

Post on 13-Jul-2015

525 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Rain

Rendering

-이론편-2013.05.04

Devrookie

엠에스박

• 들어가기전에

• 비 현상

• 빗줄기

• 물 튀는 현상

• 기타

들어가기전에

갑자기 자연현상이 만들어보고 싶었다.

그냥 막연하게 비나 내리게 해볼까로 시작했다.

그런데 너무 늦게 정해서…

직접 예제를 만들어볼 시간이 부족했다.

들어가기전에

그래서 이번 발표는 이론적인 부분 위주로…

다음 발표때는 같은 주제로 하되 직접 만들어본

경험담을 발표하겠습니다. ㅠㅠ

• 들어가기전에

• 비 현상

• 빗줄기

• 물 튀는 현상, 물결

• 기타

비 현상

비 오는걸 제대로 표현하는 것은 쉽지 않다.

의외로 하나씩 정리해 보면 고려해야 될 게 많

다.

하지만 잘 만들면 멋진 장면을 만들 수 있다.

비 현상

비 렌더링을 하지 않은 장면

비 현상

비 렌더링을 한 장면

비 현상

빗줄기

비 현상

구름

비 현상

무지개

비 현상

번개

비 현상

물 웅덩이, 물 튀는 현상

비 현상

물 흘러내림

비 현상

안개

비 현상

글로우

• 들어가기전에

• 비 현상

• 빗줄기

• 물 튀는 현상, 물결

• 기타

빗줄기

대표적인 구현 방법

• 텍스쳐 애니메이션

• 파티클

빗줄기

텍스쳐 애니메이션

• 화면상에 후처리로 랜더링

• 카메라에 더블 콘을 씌우고 매핑

• 다중 레이어를 이용한 처리

빗줄기

텍스쳐 애니메이션

폭풍우 같은 동적인 처리가 어렵다.

부분적인 조명처리가 어렵다.

빗줄기

더블 콘

빗줄기

다중 레이어

레이어당 패턴이 겹치지 않고

속도도 다르게 처리

다양한 처리 후 혼합하여 후처리 적용

빗줄기

다중 레이어

빗줄기

파티클

파티클 하나당 스프라이트 하나로 구현

퀄리티는 좋지만 많으면 많아질 수록 부하

CPU 연산, GPU 연산 증가

빗줄기

파티클

파티클당 계산만 달리하면 다양한 효과 연출 가

파티클에 조명 처리 또한 편하다.

빗줄기

파티클

• CPU 에서 생성, 계산

• CPU 에서 생성, GPU 계산

• GPU 에서 생성, 계산 (Geometry Shader)

빗줄기

파티클

빗줄기

빗줄기 생성

빗줄기

빗줄기 생성

빗줄기

빗줄기 생성

빗줄기

빗줄기 생성

http://www1.cs.columbia.edu/CAVE/databases/

rain_streak_db/rain_streak.php

미리 뽑혀있는 텍스쳐들이 있다. !!

빗줄기

Nvidia DirectX10 예제

텍스쳐 300장 가량을 DirectX10의 Texture

Array에 담아 놓고 각도에 맞는 텍스쳐를 가져

와 적용시켜 준다.

빗줄기

Nvidia DirectX10 예제

빗줄기

Nvidia DirectX10 예제

조명과의 거리를 계산하여 파티클에 적용한다.

조명 근처에 있는 빗방울에 빛이 적용된다.

빗줄기

Nvidia DirectX10 예제

• 들어가기전에

• 비 현상

• 빗줄기

• 물 튀는 현상, 물결

• 기타

물 튀는 현상

물 튀는 현상, 물결

대표적인 구현 방법

• 파티클

• 텍스쳐 애니메이션

• 노말맵

물 튀는 현상, 물결

파티클

물방울의 크기, 방향 이런 것 까지 고려해서 물

이 튀는걸 계산할 수는 없다.

고정적인 파티클 이펙트를 만들어 뿌려준다.

물 튀는 현상, 물결

텍스쳐 애니메이션

물결에 대해서 텍스쳐 애니메이션을 만들어 놓

적용해 주면 간단하게 라도 비가 바닥에 닿았음

느끼게 해준다.

물 튀는 현상, 물결

노말맵

물 튀는 현상, 물결

노말맵

해당 노말맵을 얻어와서 기존의 노말 계산에 추

가하여 계산한다.

더욱 입체감 있는 물결을 만들 수 있다.

물 튀는 현상, 물결

노말맵

물 튀는 현상, 물결

노말맵

물 튀는 현상, 물결

파티클이 바닥에 닿는 곳 마다 처리할 필요 없

다.

랜덤하게 뿌려줘도 이상해 보이지 않는다.

위에서 찍은 깊이 맵을 참조하여 찍는 경우도

있다.

• 들어가기전에

• 비 현상

• 빗줄기

• 물 튀는 현상, 물결

• 기타

기타

포그 & 글로우

평범한 포그를 적용하면 느낌이 살지 않는다.

조금 더 분석적인 모델이 필요하다.

http://www1.cs.columbia.edu/~bosun/sig05.ht

m

기타

포그 & 글로우

기타

포그 & 글로우

미리 뽑아놓은 수치값이 있다.

하나의 맵으로 만들고 조명계산에 사용한다.

기타

포그 & 글로우

기타

포그 & 글로우

기타

포그 & 글로우

글로우의 경우에는 조명 부분을 뿌옇게 처리하

비를 그리지 않아서 강조하는 경우도 있다.

기타

물방울

기타

물방울

제대로 반사, 굴절을 계산하려면…

장면에 대해서 환경맵을 생성해서 적용해야 한

다.

기타

물방울

흘러가는 장면을 연출을 위해서는 다음과 같이

격자를 구성하고 랜덤성, 물리 계산을 필요로

한다.

기타

물방울

기타

반사

기타

반사

조명이 적용되는 부분에 대해서 블러를 적용한

다.

기타

반사

조명을 기준으로 바닥면과 닿는 부분을 계산한

해당 위치에 조명을 그려주고 블러를 적용해 준

다.

적용하는 씬에 동적인 물체가 있다면 어색할 수

도…

기타

번개

번개가 쳤을 때 맵 부분이 밝아지는 효과를 주

려면

번개용 라이트맵을 미리 구워서 적용해 주면된

다.

결론

자연현상을 표현하는 부분도 계속 발전 중이다.

하드웨어의 발전으로 점점 더 물리적인 모델의

구현이 구체화 되고 있다.

아직까지는 범용적으로 사용할 수 없겠지만 콘

솔 등 최소사양을 높게 잡는 게임이라면 고려해

볼만하다.

결론

다음 발표때는 하나 하나 만들어 보면서 경험을

정리해서 발표하도록 하겠습니다.

들어주셔서 감사합니다.

참고자료http://www1.cs.columbia.edu/CAVE/publications/pdfs/Garg_TOG06.pdf

http://developer.amd.com/wordpress/media/2012/10/Tatarchuk-Rain.pdf

http://developer.download.nvidia.com/SDK/10/direct3d/Source/rain/doc/RainSDKWhitePaper.pdf

http://seblagarde.wordpress.com/2012/12/10/observe-rainy-world/

top related