SlideShare a Scribd company logo
1 of 17
Download to read offline
Voxel Rendering
                         간단소개


  김성익 (http://gamecode.org)
                 2009/10/25
내용
• Voxel 렌더링 소개
 – Voxel Field 렌더링
   • Marching Cube 를 이용한 ISO Surface 렌더링
 – Voxel Volume 렌더링
   • Ray Casting
   • Sparse Voxel Octrees
Voxel Field 렌더링
• Voxel 데이터
   – 3차원 Array
   – Field 값
• 렌더링
   – 값이 일정한 표면을 렌더링

• ISO Bar
   – Marching Square Algorithm
• ISO Surface                    http://www.geisswerks.com/about_terrain.html


   – Marching Cube Algorithm
ISO Bar (1)
• 데이터 : 2d 그리드에 값
• 값이 일정한 지역을 라인으로 렌더링 (등고선)




 http://www.econym.demon.co.uk/isotut/isobars.htm
ISO Bar (2)
• Marching Square
   – 인접한 4개의 점으로 이루어진 유닛 단위
   – 표면값보다 크거나 같은지, 혹은 작은지에 따라 라인이 생기는 패턴이
     결정
   – 패턴이 대칭 및 회전하는 특성 (패턴의 수를 줄일 수 있다)




   http://www.cs.montana.edu/bnct/publications/cory/thesis.html




   – 값의 비율에 따라 라인 위의 버텍스 위치 결정
ISO Surface(1)
• ISO-Bar 의 확장형
• 데이터 : 3차원 필드 데이터
• 값이 일정한 표면을 렌더링

• Marching Cube 알고리즘
   – 인접한 버텍스를 공유하는 유닛
   – 256가지 타입의 패턴
   – 패턴화 (14가지 고유 패턴)


• 3D Voxel Field => 표면 Polygon 화
   – 전처리 가능 (로딩 타임)
ISO Surface(2)
• 적용 사례
  – Crysis Voxel Terrain
  – Blob
  – GPU Gems 3
    Generating Complex Procedural Terrains Using the GPU



• 특징
  – 3D Voxel 데이터를 손쉽게 표현 가능
       • 동굴 같은 지형 표현 가능
       • 손쉬운 터레인 편집 (3d 어레이 값만 간단하게 에디팅)
  – DCC툴 부재로 인한 인하우스 에디터 필요
  – 텍스처 매핑의 어려움
       • Nvidia Case : UV 는 normal 활용, Splatting 기법 활용
       • 각 유닛 별 별도의 UV 채널을 설정하는 방법도 가능
Voxel Volume Rendering
• 데이터
   – 복셀
   – 3차원 컬러 데이터
• 렌더링
   – 화면에 복셀 이미지를 렌더링
• 차세대 렌더링 기법

• Ray Casting
   – Classic Game Ray casting
   – Volume Ray casting
• Octree
• Sparse Voxel Octree
RayCasting
•   울펜스타인 3d, Doom 시절의 Ray Casting
    – 바닥 + 벽 + 천정으로 분리
    – 벽 부분을 Raycasting
    – 데이터 : 벽 2d 맵
       • 시야 방향으로 데이터 탐색해서 벽 정보 계산
       • 맵 기반으로 충돌 지점 계산
       • 가로 라인에 대해서만 계산 (속도가 빠름)
    – 적은 2d 정보를 활용해서 월드의 모든 벽 정보 표현
Volume Raycasting (1)
• 3D Voxel 데이터를 검색
• 뷰에서 Ray 를 쏘아서 Voxel 데이터 상의 충돌 지점을 검출하여 해
  당 픽셀을 렌더링




• 많은 셈플링이 필요함
Volume Raycasting(2)
• 적용예   (http://www.daimi.au.dk/~trier/?page_id=98)

  – 많은 샘플링이 필요함
Volume Raycasting (3)
• 특징
  – 복잡한 이미지를 간단한 알고리즘으로 구현할 수 있다
  – 빛의 방향에서의 레이케스팅을 통해서 그림자를 판단할 수 있다
  – 투명한 표면처리가 가능하다
       • 표면의 두께를 판단할 수 있다
       • 진짜 Subsurface Scattering
  – 차세대 렌더링 퀄리티 !!!

  – 용량이 크다
       • 1024x1024x1024 크기의 RGBA
         데이터는 무려 4 Giga Byte
  –   연산량이 많다
Voxel Octree
• Voxel 3d 이미지의 치명적인 단점 : 용량
• 용량이 크다 = 샘플링을 많이 해야 한다 = 많은 연산이 필요하다

• Octree 를 활용
  – 용량을 줄인다 => 연산량을 줄인다
     • 속도를 높일 수 있다
  – 단, GPU로 구현 난이도 상승
Sparse Virtual Texture
• Sparse Virtual Texture (aka MEGA texture)
   – 운영체제의 가상 메모리 운영하는 것과 비슷
       • 인덱스화 테이블화
   – 철저하게 화면에 맞는 디테일의 데이터만 적제 (블럭단위 LOD)
       • 텍스처 사용량 최소화
       • 비주얼 손실 굉장히 적음
       • 속도 느리지 않음
           – 텍스처 메모리 활용도 증가로 오히려 빠를 수 있음
   – 스트리밍화 (초대형 텍스처 사용 가능)
   – 구현의 복잡함
       • 테이블화
       • 복잡한 텍스처 매니징 시스템
           – 거의 OS 가상 메모리 매니징급 처리
   – Crysis, Unreal3에 적용되어 있음
Sparse Voxel Octree (1)
•   차세대 렌더링 기법으로 지목
    – 크라이텍 GDC 2009 유럽, KGC 2009 키노트
•   Voxel 도 SVT와 유사하게 테이블화
    –   텍스처 MipMap 개념과 유사
    –   Octree 구조
    –   가상 메모리와 유사한 페이지 테이블
    –   스트리밍 로딩
    –   픽셀 압축
• SVO (aka Giga Voxel)
    – Jon Olink (id soft)
    –   http://www.youtube.com/watch?v=VpEpAFGplnI
Sparse Voxel Octrees(2)
•   특징
    –   3D 복셀 이미지 렌더링
    –   화면에 보일 최적의 메모리 사용
    –   적은 메모리 = 적은 셈플링 = 적은 연산
    –   복잡한 픽셀 셰이더 연산
         • But, 현 세대 하드웨어도 렌더링 가능
    – 적용 가능한 Asset제작을 위한 DCC툴 부재
         • 인하우스 툴 개발 필요
         • 폴리곤 => Voxel 화
    – 해결 과제 : 레스터라이즈 시스템과의 궁합
         • Depth 버퍼 문제
         • 볼륨 문제
•   참고 : Zbrush (미래의 비전 제시???)
    – 이미 현 시대에서 활용되고 있음
    – 폴리곤 레스터라이징 방식으로는 따라하기
      힘든 뷰포트상 모델 렌더링 퀄리티
    – 충격적인 퀄리티의 게임 등장 예상???         ZBRUSH Viewport http://vaelberx.egloos.com/1849742
Q/A

More Related Content

What's hot

언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술Ki Hyunwoo
 
[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기JinHwan Kim
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우Sukwoo Lee
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)Sukwoo Lee
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환Yggdrasil610
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법강 민우
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
IndirectDraw with unity
IndirectDraw with unityIndirectDraw with unity
IndirectDraw with unityJung Suk Ko
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2MinGeun Park
 
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑Sukwoo Lee
 
[0212 박민수]환경 매핑
[0212 박민수]환경 매핑[0212 박민수]환경 매핑
[0212 박민수]환경 매핑MoonLightMS
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트강 민우
 
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링Sukwoo Lee
 
[Gpg1권 조진현] 5.6 하드웨어 범프 매핑
[Gpg1권 조진현] 5.6 하드웨어 범프 매핑[Gpg1권 조진현] 5.6 하드웨어 범프 매핑
[Gpg1권 조진현] 5.6 하드웨어 범프 매핑진현 조
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayYEONG-CHEON YOU
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlasnoerror
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리changehee lee
 

What's hot (20)

언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
 
[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기
 
Sw occlusion culling
Sw occlusion cullingSw occlusion culling
Sw occlusion culling
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
 
Bump Mapping
Bump MappingBump Mapping
Bump Mapping
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
IndirectDraw with unity
IndirectDraw with unityIndirectDraw with unity
IndirectDraw with unity
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2
 
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑
 
[0212 박민수]환경 매핑
[0212 박민수]환경 매핑[0212 박민수]환경 매핑
[0212 박민수]환경 매핑
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
 
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링
 
[Gpg1권 조진현] 5.6 하드웨어 범프 매핑
[Gpg1권 조진현] 5.6 하드웨어 범프 매핑[Gpg1권 조진현] 5.6 하드웨어 범프 매핑
[Gpg1권 조진현] 5.6 하드웨어 범프 매핑
 
Implements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture ArrayImplements Cascaded Shadow Maps with using Texture Array
Implements Cascaded Shadow Maps with using Texture Array
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlas
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 

Viewers also liked

Unity3D Developer Network Study 3rd
Unity3D Developer Network Study 3rdUnity3D Developer Network Study 3rd
Unity3D Developer Network Study 3rdCody Yun
 
10_무한 평면과 놀기
10_무한 평면과 놀기10_무한 평면과 놀기
10_무한 평면과 놀기noerror
 
Real-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelReal-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelJaeyun Lee
 
Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14sj k
 
옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축sj k
 
[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리
[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리
[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리MinGeun Park
 
Game programing gems 4.11
Game programing gems 4.11Game programing gems 4.11
Game programing gems 4.11Sehyeon Nam
 
[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할MinGeun Park
 
Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Sehyeon Nam
 
Game programing gems 4.17
Game programing gems 4.17Game programing gems 4.17
Game programing gems 4.17Sehyeon Nam
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)Amazon Web Services Korea
 

Viewers also liked (12)

Unity3D Developer Network Study 3rd
Unity3D Developer Network Study 3rdUnity3D Developer Network Study 3rd
Unity3D Developer Network Study 3rd
 
10_무한 평면과 놀기
10_무한 평면과 놀기10_무한 평면과 놀기
10_무한 평면과 놀기
 
Real-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelReal-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel model
 
Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14Gpg 1.13 ~ 1.14
Gpg 1.13 ~ 1.14
 
옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축
 
[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리
[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리
[Gpg2권 박민근] 4.4 압축된 축 정렬 경계상자 트리
 
Game programing gems 4.11
Game programing gems 4.11Game programing gems 4.11
Game programing gems 4.11
 
[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할[박민근] 3 d렌더링 옵티마이징_3 공간분할
[박민근] 3 d렌더링 옵티마이징_3 공간분할
 
Game programing gems 3.4 3.6
Game programing gems 3.4 3.6Game programing gems 3.4 3.6
Game programing gems 3.4 3.6
 
Game programing gems 4.17
Game programing gems 4.17Game programing gems 4.17
Game programing gems 4.17
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
천만 사용자를 위한 AWS 아키텍처 보안 모범 사례 (윤석찬, 테크에반젤리스트)
 

Similar to 09_Voxel rendering

빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술YEONG-CHEON YOU
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬현찬 양
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)해강
 
09_motionblur
09_motionblur09_motionblur
09_motionblurnoerror
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)민웅 이
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬KyeongWon Koo
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________Kyoung Seok(경석) Ko(고)
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingYEONG-CHEON YOU
 
Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Sampo Lappalainen
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
NDC2015 광개토태왕 테크니컬 아트
NDC2015 광개토태왕 테크니컬 아트NDC2015 광개토태왕 테크니컬 아트
NDC2015 광개토태왕 테크니컬 아트재철 황
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
글꼴 렌더링 이야기
글꼴 렌더링 이야기글꼴 렌더링 이야기
글꼴 렌더링 이야기Young-jun Jeong
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseerChan-hyun Park
 

Similar to 09_Voxel rendering (20)

빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
 
Motion blur
Motion blurMotion blur
Motion blur
 
09_motionblur
09_motionblur09_motionblur
09_motionblur
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
20120824
2012082420120824
20120824
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
 
엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion Culling
 
Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)Kgc2014 엄브라(umbra)
Kgc2014 엄브라(umbra)
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
NDC2015 광개토태왕 테크니컬 아트
NDC2015 광개토태왕 테크니컬 아트NDC2015 광개토태왕 테크니컬 아트
NDC2015 광개토태왕 테크니컬 아트
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
글꼴 렌더링 이야기
글꼴 렌더링 이야기글꼴 렌더링 이야기
글꼴 렌더링 이야기
 
120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer120513 unity3 d_start_skyseer
120513 unity3 d_start_skyseer
 

More from noerror

11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용noerror
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집noerror
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법noerror
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문noerror
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템noerror
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법noerror
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법noerror
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기noerror
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강noerror
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개noerror
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문noerror
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개noerror
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editornoerror
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁noerror
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)noerror
 
06_앰비언트어클루전 소개
06_앰비언트어클루전 소개06_앰비언트어클루전 소개
06_앰비언트어클루전 소개noerror
 
KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리noerror
 

More from noerror (20)

11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editor
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)
 
06_앰비언트어클루전 소개
06_앰비언트어클루전 소개06_앰비언트어클루전 소개
06_앰비언트어클루전 소개
 
KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리
 

09_Voxel rendering

  • 1. Voxel Rendering 간단소개 김성익 (http://gamecode.org) 2009/10/25
  • 2. 내용 • Voxel 렌더링 소개 – Voxel Field 렌더링 • Marching Cube 를 이용한 ISO Surface 렌더링 – Voxel Volume 렌더링 • Ray Casting • Sparse Voxel Octrees
  • 3. Voxel Field 렌더링 • Voxel 데이터 – 3차원 Array – Field 값 • 렌더링 – 값이 일정한 표면을 렌더링 • ISO Bar – Marching Square Algorithm • ISO Surface http://www.geisswerks.com/about_terrain.html – Marching Cube Algorithm
  • 4. ISO Bar (1) • 데이터 : 2d 그리드에 값 • 값이 일정한 지역을 라인으로 렌더링 (등고선) http://www.econym.demon.co.uk/isotut/isobars.htm
  • 5. ISO Bar (2) • Marching Square – 인접한 4개의 점으로 이루어진 유닛 단위 – 표면값보다 크거나 같은지, 혹은 작은지에 따라 라인이 생기는 패턴이 결정 – 패턴이 대칭 및 회전하는 특성 (패턴의 수를 줄일 수 있다) http://www.cs.montana.edu/bnct/publications/cory/thesis.html – 값의 비율에 따라 라인 위의 버텍스 위치 결정
  • 6. ISO Surface(1) • ISO-Bar 의 확장형 • 데이터 : 3차원 필드 데이터 • 값이 일정한 표면을 렌더링 • Marching Cube 알고리즘 – 인접한 버텍스를 공유하는 유닛 – 256가지 타입의 패턴 – 패턴화 (14가지 고유 패턴) • 3D Voxel Field => 표면 Polygon 화 – 전처리 가능 (로딩 타임)
  • 7. ISO Surface(2) • 적용 사례 – Crysis Voxel Terrain – Blob – GPU Gems 3 Generating Complex Procedural Terrains Using the GPU • 특징 – 3D Voxel 데이터를 손쉽게 표현 가능 • 동굴 같은 지형 표현 가능 • 손쉬운 터레인 편집 (3d 어레이 값만 간단하게 에디팅) – DCC툴 부재로 인한 인하우스 에디터 필요 – 텍스처 매핑의 어려움 • Nvidia Case : UV 는 normal 활용, Splatting 기법 활용 • 각 유닛 별 별도의 UV 채널을 설정하는 방법도 가능
  • 8. Voxel Volume Rendering • 데이터 – 복셀 – 3차원 컬러 데이터 • 렌더링 – 화면에 복셀 이미지를 렌더링 • 차세대 렌더링 기법 • Ray Casting – Classic Game Ray casting – Volume Ray casting • Octree • Sparse Voxel Octree
  • 9. RayCasting • 울펜스타인 3d, Doom 시절의 Ray Casting – 바닥 + 벽 + 천정으로 분리 – 벽 부분을 Raycasting – 데이터 : 벽 2d 맵 • 시야 방향으로 데이터 탐색해서 벽 정보 계산 • 맵 기반으로 충돌 지점 계산 • 가로 라인에 대해서만 계산 (속도가 빠름) – 적은 2d 정보를 활용해서 월드의 모든 벽 정보 표현
  • 10. Volume Raycasting (1) • 3D Voxel 데이터를 검색 • 뷰에서 Ray 를 쏘아서 Voxel 데이터 상의 충돌 지점을 검출하여 해 당 픽셀을 렌더링 • 많은 셈플링이 필요함
  • 11. Volume Raycasting(2) • 적용예 (http://www.daimi.au.dk/~trier/?page_id=98) – 많은 샘플링이 필요함
  • 12. Volume Raycasting (3) • 특징 – 복잡한 이미지를 간단한 알고리즘으로 구현할 수 있다 – 빛의 방향에서의 레이케스팅을 통해서 그림자를 판단할 수 있다 – 투명한 표면처리가 가능하다 • 표면의 두께를 판단할 수 있다 • 진짜 Subsurface Scattering – 차세대 렌더링 퀄리티 !!! – 용량이 크다 • 1024x1024x1024 크기의 RGBA 데이터는 무려 4 Giga Byte – 연산량이 많다
  • 13. Voxel Octree • Voxel 3d 이미지의 치명적인 단점 : 용량 • 용량이 크다 = 샘플링을 많이 해야 한다 = 많은 연산이 필요하다 • Octree 를 활용 – 용량을 줄인다 => 연산량을 줄인다 • 속도를 높일 수 있다 – 단, GPU로 구현 난이도 상승
  • 14. Sparse Virtual Texture • Sparse Virtual Texture (aka MEGA texture) – 운영체제의 가상 메모리 운영하는 것과 비슷 • 인덱스화 테이블화 – 철저하게 화면에 맞는 디테일의 데이터만 적제 (블럭단위 LOD) • 텍스처 사용량 최소화 • 비주얼 손실 굉장히 적음 • 속도 느리지 않음 – 텍스처 메모리 활용도 증가로 오히려 빠를 수 있음 – 스트리밍화 (초대형 텍스처 사용 가능) – 구현의 복잡함 • 테이블화 • 복잡한 텍스처 매니징 시스템 – 거의 OS 가상 메모리 매니징급 처리 – Crysis, Unreal3에 적용되어 있음
  • 15. Sparse Voxel Octree (1) • 차세대 렌더링 기법으로 지목 – 크라이텍 GDC 2009 유럽, KGC 2009 키노트 • Voxel 도 SVT와 유사하게 테이블화 – 텍스처 MipMap 개념과 유사 – Octree 구조 – 가상 메모리와 유사한 페이지 테이블 – 스트리밍 로딩 – 픽셀 압축 • SVO (aka Giga Voxel) – Jon Olink (id soft) – http://www.youtube.com/watch?v=VpEpAFGplnI
  • 16. Sparse Voxel Octrees(2) • 특징 – 3D 복셀 이미지 렌더링 – 화면에 보일 최적의 메모리 사용 – 적은 메모리 = 적은 셈플링 = 적은 연산 – 복잡한 픽셀 셰이더 연산 • But, 현 세대 하드웨어도 렌더링 가능 – 적용 가능한 Asset제작을 위한 DCC툴 부재 • 인하우스 툴 개발 필요 • 폴리곤 => Voxel 화 – 해결 과제 : 레스터라이즈 시스템과의 궁합 • Depth 버퍼 문제 • 볼륨 문제 • 참고 : Zbrush (미래의 비전 제시???) – 이미 현 시대에서 활용되고 있음 – 폴리곤 레스터라이징 방식으로는 따라하기 힘든 뷰포트상 모델 렌더링 퀄리티 – 충격적인 퀄리티의 게임 등장 예상??? ZBRUSH Viewport http://vaelberx.egloos.com/1849742
  • 17. Q/A