Notice
Recent Posts
Recent Comments
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
관리 메뉴

일상

bvh 적용해보기 - 02 본문

computer graphics

bvh 적용해보기 - 02

Mysteryu 2021. 11. 13. 15:52

이전 포스팅에서 말했던대로 물체의 개수에 따라서 bvh의 성능이 어떻게 변하는지 확인해보겠습니다.

소스코드는

 

Ray Tracing: The Next Week

 

https://raytracing.github.io/books/RayTracingTheNextWeek.html

For spheres, texture coordinates are usually based on some form of longitude and latitude, _i.e._, spherical coordinates. So we compute $(\theta,\phi)$ in spherical coordinates, where $\theta$ is the angle up from the bottom pole (that is, up from -Y), and

raytracing.github.io

BVH: Bounding Volume Hierarchy : 네이버 블로그 (naver.com)

 

BVH: Bounding Volume Hierarchy

카메라에 보이는 물체 뿐만이 아니라 모든 물체를 렌더링하는 것은 굉장히 비효율적입니다. GPU에 의해...

blog.naver.com

위의 사이트에 나온 소스코드를 참고하였습니다. 특히 첫번째 사이트를 많이 참고 했는데 bvh를 구성할때 정렬을 할 때 랜덤으로 axis를 선택을 하기 때문에 bvh를 사용한 소스코드의 렌더링 시간은 제각각일수도 있다고 생각합니다.

 

object 개수 : 1

 

bvh 적용

 

bvh 적용X

 

예상했던것처럼 bvh에 대한 오버헤드로 인해 bvh를 사용했을때가 좀 더 느리다는것을 볼 수 있습니다. 이제부터는 물체의 개수를 좀 더 늘려보겠습니다.

 

object 개수 : 2x2x2 (8개)
bvh 적용
bvh 적용X

 

 

object 개수 : 3x3x3 (27개)
bvh 적용
bvh 적용X

 

object 개수 : 4x4x4 (64개)
bvh 적용
bvh적용X

 

object 개수 : 5x5x5 (125개)
bvh 적용

 

bvh 적용X

 

잘 가다가 5x5x5 예제에서는 bvh를 적용한 소스코드의 렌더링 시간이 더 많이 걸렸네요. 사실 object의 개수가 적으면 오차때문에 제대로 된 비교가 잘 안되겠더라구요. 그래서 조금 크게 8x8x8 예제를 만들어봤습니다. 

 

object 개수 : 8x8x8 (512개)

 

bvh 적용
bvh 적용X

 

확실히 object 개수가 많아지니까 bvh를 적용했을때와 적용하지 않았을때의 시간이 훨씬 의미있게 차이가 나는것을 볼 수 있네요. 개인적으로 10x10x10 이상으로 해보고 싶지만 당장 시간은 부족해서 다음에 한번 해봐야겠습니다.

 

그리고 사실 당연한 말이겠지만 object들의 간격에 따라서도 결과가 많이 달라지더라구요. 예를들어 오브젝트들의 간격을 구의 지름만큼을 설정한다면 7x7x7의 예제에서도 오히려 bvh를 적용한 것이 더 시간이 걸리는경우도 있더라구요. box가 넓어지기 때문에 그런걸까요? 어찌되었든 이런 경우에 대해서도 한번 생각해보면 좋을것 같습니다.

 

 

'computer graphics' 카테고리의 다른 글

[C++] 백준 2738 : 행렬 덧샘  (0) 2023.06.12
bvh 적용해보기 - 01  (0) 2021.11.12
Cornell box 만들어보기  (0) 2021.11.06
Fresnel Coefficient 적용해보기 -03  (0) 2021.10.08
Fresnel Coefficient 적용해보기 -02  (0) 2021.10.03
Comments