yuchi's Development Home
글 수 201
옴니 라이트에 대해서 패치당 L dot normal값을 구하는건 별 문제가 아니다.
근데 그림자를 계산하려면 주변 삼각형들에 몽땅 레이 테스트를 해야하므로 시간이 엄청 걸린다.
아래 글을 올릴 당시 전체 맵의 라이트맵을 빌드하는데 약 15분-20분 정도 걸렸었다.(샷에 보이는 맵 기준)
이게 멀티 스레드로 코어 두개 다 쓰는거니까 싱글 스레드면 40분은 걸렸을거다.
하여간...
새해 첫날 집에서 알고리즘을 개선하여 3분20초까지 줄였다.
삼각형과 레이의 교차판정 함수를 SSE로 최적화해서 2분 40초 정도까지 줄였다.
여기에 그림자 매쉬의 바운딩 볼륨을 다시 삼각형으로 만들어서 얘네들에 대한 교차판정을 먼저 하는 코드를 추가했다.
이걸로 55초까지 줄였다.
그리고 삼각형의 교차판정시에 이전에 판정했던 삼각형부터 체크하도록, 일종의 캐싱을 사용해서 25초까지 줄였다.
이 정도면 할만하군.
훗.
근데 그림자를 계산하려면 주변 삼각형들에 몽땅 레이 테스트를 해야하므로 시간이 엄청 걸린다.
아래 글을 올릴 당시 전체 맵의 라이트맵을 빌드하는데 약 15분-20분 정도 걸렸었다.(샷에 보이는 맵 기준)
이게 멀티 스레드로 코어 두개 다 쓰는거니까 싱글 스레드면 40분은 걸렸을거다.
하여간...
새해 첫날 집에서 알고리즘을 개선하여 3분20초까지 줄였다.
삼각형과 레이의 교차판정 함수를 SSE로 최적화해서 2분 40초 정도까지 줄였다.
여기에 그림자 매쉬의 바운딩 볼륨을 다시 삼각형으로 만들어서 얘네들에 대한 교차판정을 먼저 하는 코드를 추가했다.
이걸로 55초까지 줄였다.
그리고 삼각형의 교차판정시에 이전에 판정했던 삼각형부터 체크하도록, 일종의 캐싱을 사용해서 25초까지 줄였다.
이 정도면 할만하군.
훗.