SlideShare a Scribd company logo
1 of 23
나눌수 있다면, 가능한 나눠라!!




3D RENDERING
OPTIMIZING #3
- 박 민 근 (민군)
DEVROOKIE(CAFÉ.NAVER.COM/DEVROOKIE)
                                      DevRookie 박민근(민군)   1
DevRookie 박민근(민군)   2
게임상의 월드를 특정 기준으로

공간적으로 분할하여, 보이지 않는 공간을 컬링한다.


분할된 공간은 트리로 구성되어,
상위 트리가 컬링되면 하위 트리도 컬링된다.




                           DevRookie 박민근(민군)   3
하나의 공간을 2개의 공간으로 재귀적으로 분할하는 기법

FPS와 같은 인도어 게임에서 유용하다.

벽이나 오브젝트를 기준으로 비균등 분할된다.

실시간 보다는 미리 만들어 두는 경우가 많다.




                            DevRookie 박민근(민군)   4
하나의 공간을 두개로 분할해 나간다



    DevRookie 박민근(민군)   5
어떤 위치가 주어 졌을때 그 위치에서 보일 가능성이 있는 공간및 오브젝트들의 집합

프리컴파일에서, 공간별로 보일 가능성이 있는 것들을 미리 선별하여 구별한다.

BSP 트리의 단점을 보완하는 형태로 BSP와 같이 쓰이는 경우가 많다.

문이나 창문등을 기준으로 Visible Set을 결정하는 것을 Portal Rendering이라고 한다.

                           DevRookie 박민근(민군)             6
실내공간에서의 뛰어난 성능




                 DevRookie 박민근(민군)   7
DevRookie 박민근(민군)   8
문(Door)만이 Portal이 아니다

       DevRookie 박민근(민군)   9
4개의 하위 트리는 상위 트리에 포함되기 때문에 상위 트
리가 컬링되면 하위 트리는 무조건 컬링된다.


지형과 같은 2D 공간에서 주로 사용된다.



4개의 공간은 균등 분할된다.



Height Map을 이용한 아웃도어에서 주로 사용된다.




                                  DevRookie 박민근(민군)   10
오브젝트는 자신을 완전히 포함하는 가장 작
은 노드에 저장됩니다

중선에 걸친 오브젝트는 한단계 상위의 노드
에 저장됩니다


노드의 깊이는 임의로 정합니다




                          DevRookie 박민근(민군)   11
쿼드트리를 3D공간으로 확장한 것. (Y축 확장)

비행 시뮬레이션과 같은 3D 공간 게임에서 사용된다.

구현 및 내용은 쿼드트리와 거의 동일




                              DevRookie 박민근(민군)   12
공간을 8개씩 분할해 나간다

                  DevRookie 박민근(민군)   13
참조 : GPG 2권 4.5 – 직접 접근 쿼드 트리 참조




게임 데이터가 동적으로
변하는 경우에 트리의 특성상
수많은 Node를 거쳐야
되기때문에
캐시 적중 실패율이 대단히 크게
올라갑니다
                      DevRookie 박민근(민군)         14
중선사이의 거리는 트리의 깊이와 2의 제곱관계


                            -> 객체의 영역이 걸처있는 가장 큰 2의 제곱수
                            를 구한다

                            -> 제곱수의 지수는 객체가 완전히 포함될수 있
                            는 가장 낮은 수준

                            -> 제곱수의 걸침이란 이진수에서 0에서 1로 변
                            하는 상황

                            -> XOR의 결과비트중 1인비트가 처음으로 나타
                            나는 위치가 노드 수준
노드의 중선에 걸치는 객체는 자식 노드에
     저장될 수 없다.


                         DevRookie 박민근(민군)            15
0                       128   160   192          256


                                                              127.8 ~ 128.3
                                                              128.3 ~ 128.8

                                                                 155.4 ~ 166.1




    X1   127 01111111    X1    128 10000000       X1      155 10011011
    X2   128 10000000    X2    128 10000000       X2      166 10100110
    XOR 255 11111111     XOR 0      00000000      XOR 255 00111101

                                          DevRookie 박민근(민군)                      16
DevRookie 박민근(민군)   17
참조 : GPG 1권 4.11 느슨한 옥트리




  DevRookie 박민근(민군)        18
노드의 영역을 원래 영역보다 한단계 높은 크기를
사용한다.
각자의 노드가 겹치기 때문에 중선이 사라지고,
객체는 하위노드중의 하나에 포함된다.
        DevRookie 박민근(민군)    19
20000     18859
18000
16000
14000
12000
10000             9442

8000                       6883      6883                    7024
6000
4000                                                  2976
 2000
   0
        보인다고 판정된 객체들     실제로 보이는 객체들                  체크한 노드들

                    일반 쿼드 트리      느슨한 쿼드 트리
                                  DevRookie 박민근(민군)                 20
감사합니다.
 Q&A

   DevRookie 박민근(민군)   21
10. 참고 자료
1. Real Time Rendering 2판
2. GPG 1, 2권
3. 마이크로소프트 2002년 4월호 - 폴리곤 수를 줄이
  는 가시면 결정 기법
4. Nvidia SDK
5. Occlusion Culling Using DirectX 9
6. BSP Tree 논문 번역


                            DevRookie 박민근(민군)   22
DevRookie 박민근(민군)   23

More Related Content

What's hot

GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라Mark Choi
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리YEONG-CHEON YOU
 
NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템
NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템
NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템burnaby yang
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
09_motionblur
09_motionblur09_motionblur
09_motionblurnoerror
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석SangYun Yi
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments종빈 오
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘Taewoo Lee
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환Yggdrasil610
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
09_Voxel rendering
09_Voxel rendering09_Voxel rendering
09_Voxel renderingnoerror
 
Deferred Shading
Deferred ShadingDeferred Shading
Deferred Shading종빈 오
 
[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )진현 조
 
Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Sampo Lappalainen
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 

What's hot (20)

GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라GameMath-Chapter 06 카메라
GameMath-Chapter 06 카메라
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
 
NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템
NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템
NDC 2017 비주얼 선택과 집중 - 3on3 아트 포스트모템
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
gv004 ver0.1
gv004 ver0.1gv004 ver0.1
gv004 ver0.1
 
09_motionblur
09_motionblur09_motionblur
09_motionblur
 
Motion blur
Motion blurMotion blur
Motion blur
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘
 
Hanoi2
Hanoi2Hanoi2
Hanoi2
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
09_Voxel rendering
09_Voxel rendering09_Voxel rendering
09_Voxel rendering
 
Deferred Shading
Deferred ShadingDeferred Shading
Deferred Shading
 
[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )
 
Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 

Similar to [박민근] 3 d렌더링 옵티마이징_3 공간분할

[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가Hwanhee Kim
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field종빈 오
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingYEONG-CHEON YOU
 
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...종빈 오
 
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱MinGeun Park
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담Sumin Byeon
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013devCAT Studio, NEXON
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기JP Jung
 
쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전Modulabs
 
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9진현 조
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .YEONG-CHEON YOU
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기Myeongju Kim
 
Playground 소개
Playground 소개Playground 소개
Playground 소개승우 백
 

Similar to [박민근] 3 d렌더링 옵티마이징_3 공간분할 (18)

[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion Culling
 
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
[shaderx6] 3.7 Robust Order-Independent Transparency via Reverse Depth Peelin...
 
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
[야생의 땅: 듀랑고]의 식물 생태계를 담당하는 21세기 정원사의 OpenCL 경험담
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기
 
쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전
 
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9[0312 조진현] good bye dx9
[0312 조진현] good bye dx9
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기딥뉴럴넷 클러스터링 실패기
딥뉴럴넷 클러스터링 실패기
 
Playground 소개
Playground 소개Playground 소개
Playground 소개
 

More from MinGeun Park

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdfMinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석MinGeun Park
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이MinGeun Park
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐MinGeun Park
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBRMinGeun Park
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OTMinGeun Park
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.MinGeun Park
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & TrickMinGeun Park
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)MinGeun Park
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 MinGeun Park
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기MinGeun Park
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기MinGeun Park
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개MinGeun Park
 

More from MinGeun Park (20)

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 

[박민근] 3 d렌더링 옵티마이징_3 공간분할

  • 1. 나눌수 있다면, 가능한 나눠라!! 3D RENDERING OPTIMIZING #3 - 박 민 근 (민군) DEVROOKIE(CAFÉ.NAVER.COM/DEVROOKIE) DevRookie 박민근(민군) 1
  • 3. 게임상의 월드를 특정 기준으로 공간적으로 분할하여, 보이지 않는 공간을 컬링한다. 분할된 공간은 트리로 구성되어, 상위 트리가 컬링되면 하위 트리도 컬링된다. DevRookie 박민근(민군) 3
  • 4. 하나의 공간을 2개의 공간으로 재귀적으로 분할하는 기법 FPS와 같은 인도어 게임에서 유용하다. 벽이나 오브젝트를 기준으로 비균등 분할된다. 실시간 보다는 미리 만들어 두는 경우가 많다. DevRookie 박민근(민군) 4
  • 5. 하나의 공간을 두개로 분할해 나간다 DevRookie 박민근(민군) 5
  • 6. 어떤 위치가 주어 졌을때 그 위치에서 보일 가능성이 있는 공간및 오브젝트들의 집합 프리컴파일에서, 공간별로 보일 가능성이 있는 것들을 미리 선별하여 구별한다. BSP 트리의 단점을 보완하는 형태로 BSP와 같이 쓰이는 경우가 많다. 문이나 창문등을 기준으로 Visible Set을 결정하는 것을 Portal Rendering이라고 한다. DevRookie 박민근(민군) 6
  • 7. 실내공간에서의 뛰어난 성능 DevRookie 박민근(민군) 7
  • 9. 문(Door)만이 Portal이 아니다 DevRookie 박민근(민군) 9
  • 10. 4개의 하위 트리는 상위 트리에 포함되기 때문에 상위 트 리가 컬링되면 하위 트리는 무조건 컬링된다. 지형과 같은 2D 공간에서 주로 사용된다. 4개의 공간은 균등 분할된다. Height Map을 이용한 아웃도어에서 주로 사용된다. DevRookie 박민근(민군) 10
  • 11. 오브젝트는 자신을 완전히 포함하는 가장 작 은 노드에 저장됩니다 중선에 걸친 오브젝트는 한단계 상위의 노드 에 저장됩니다 노드의 깊이는 임의로 정합니다 DevRookie 박민근(민군) 11
  • 12. 쿼드트리를 3D공간으로 확장한 것. (Y축 확장) 비행 시뮬레이션과 같은 3D 공간 게임에서 사용된다. 구현 및 내용은 쿼드트리와 거의 동일 DevRookie 박민근(민군) 12
  • 13. 공간을 8개씩 분할해 나간다 DevRookie 박민근(민군) 13
  • 14. 참조 : GPG 2권 4.5 – 직접 접근 쿼드 트리 참조 게임 데이터가 동적으로 변하는 경우에 트리의 특성상 수많은 Node를 거쳐야 되기때문에 캐시 적중 실패율이 대단히 크게 올라갑니다 DevRookie 박민근(민군) 14
  • 15. 중선사이의 거리는 트리의 깊이와 2의 제곱관계 -> 객체의 영역이 걸처있는 가장 큰 2의 제곱수 를 구한다 -> 제곱수의 지수는 객체가 완전히 포함될수 있 는 가장 낮은 수준 -> 제곱수의 걸침이란 이진수에서 0에서 1로 변 하는 상황 -> XOR의 결과비트중 1인비트가 처음으로 나타 나는 위치가 노드 수준 노드의 중선에 걸치는 객체는 자식 노드에 저장될 수 없다. DevRookie 박민근(민군) 15
  • 16. 0 128 160 192 256 127.8 ~ 128.3 128.3 ~ 128.8 155.4 ~ 166.1 X1 127 01111111 X1 128 10000000 X1 155 10011011 X2 128 10000000 X2 128 10000000 X2 166 10100110 XOR 255 11111111 XOR 0 00000000 XOR 255 00111101 DevRookie 박민근(민군) 16
  • 18. 참조 : GPG 1권 4.11 느슨한 옥트리 DevRookie 박민근(민군) 18
  • 19. 노드의 영역을 원래 영역보다 한단계 높은 크기를 사용한다. 각자의 노드가 겹치기 때문에 중선이 사라지고, 객체는 하위노드중의 하나에 포함된다. DevRookie 박민근(민군) 19
  • 20. 20000 18859 18000 16000 14000 12000 10000 9442 8000 6883 6883 7024 6000 4000 2976 2000 0 보인다고 판정된 객체들 실제로 보이는 객체들 체크한 노드들 일반 쿼드 트리 느슨한 쿼드 트리 DevRookie 박민근(민군) 20
  • 21. 감사합니다. Q&A DevRookie 박민근(민군) 21
  • 22. 10. 참고 자료 1. Real Time Rendering 2판 2. GPG 1, 2권 3. 마이크로소프트 2002년 4월호 - 폴리곤 수를 줄이 는 가시면 결정 기법 4. Nvidia SDK 5. Occlusion Culling Using DirectX 9 6. BSP Tree 논문 번역 DevRookie 박민근(민군) 22