라이트맵 계산시에 Ambient Occlusion적용하기 #2

먼저는 간단한 모델에만 적용해봤는데 이제 좀 복잡한 맵 데이타에 적용해봤다.

당연히 너무 느려서 처리가 불가능할 정도. 한시간 넘게 기다리긴 싫어서 코드를 수정했다.

라이트맵 텍셀이 변경될 때마다 이진트리를 검색해서 삼각형을 가져오던 방식을 비슷한 평면상의 라이트맵 패치 그룹단위로 삼각형을 가져오는 방식으로 변경했다.

레이 충돌검사시 이전에 충돌했던 삼각형은 재충돌 가능성이 높으므로 삼각형 리스트의 가장 앞쪽으로 가져와서 검색 우선순위를 높인다.

일단 두 가지 변경만으로 속도는 크게 향상되었다.

현재 싱글스레드로 20분 정도 걸리는것 같다.

멀티스레드로 바꾸면 대략 코어 개수만큼의 성능향상이 있고 cuda를 적용하면 거기서 2-3배 정도 성능 향상이 있을것이다.

멀티스레드를 적용하는 것은 오늘내일로 가능할듯 싶은데 cuda 적용은 취업 전까지 힘들듯.

Only Light Map

d495337ca533684a33c160088c8a6513

Light Map + Ambient Occlusion

0a3e56e1c5645459921e0a44bdc36697

Only Light Map(No diffuse texture)

346d640117989c2455fb51ea572b8495

Light Map + Ambient Occlusion (No diffuse texture)

cb8df2b5234bc63a7e0cfefd96347ae4


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중