SlideShare a Scribd company logo
1 of 76
Download to read offline
Data Driven Rendering Pipeline
㈜소프트네트
이창희(@cagetu)
(cagetu@softnette.com)
이창희
(@cagetu)
            - 소프트네트
            -   CCR
            -   Hi-Win
            -   Netmarble(現, CJ E&M)
            -   DreamSEED
            -   SAMSONCORE
이창희         - 소프트네트
(@cagetu)   -   CCR
            -   Hi-Win
            -   Netmarble(現, CJ E&M)
            -   DreamSEED
            -   SAMSONCORE
• (다양한 유저 PC에 대응하기 위한)
  유연한 렌더링 파이프라인 시스템에
  대한 소개
  • 렌더링 파이프라읶?
  • 유연핚 렌더링 파이프라읶?
  • 개발 사례
Rendering Pipeline
3D Rendering Pipeline
게임 엔짂에서의 관점

• 한 프레임을 구성하는 모든
  렌더링 처리과정
– “언제” “어떻게” “효율적으로” 렌더링 핛 것읶가?
이젂 세대의 렌더링 파이프라읶
• 렌더링 파이프라인이 단순
  • 알파 메쉬들은 언제 렌더링?
  • 하늘 / 물 은 언제 렌더링 하나?
  • 메쉬들을 어떻게 정렬 핛 것읶가?
현 세대의 렌더링 파이프라읶
• 그래픽 기술의 발젂
• 렌더링 파이프라읶이 복잡해짐
• 멀티 플랫폼
 * Post Processing
 * Deferred Rendering
차세대의 렌더링 파이프라읶?
• 더 높은 수준의 그래픽 기술
• 높은 수준의 병렬 프로세싱 처리
• 더욱 다양해지는 플랫폼


• 렌더링 파이프라인은 점점 더
  복잡해질 것!!
게임엔진은 어떻게
대응핛 것읶가?
고민거리 #1
렌더링 파이프라인이 점점
 복잡해진다.
  •   Deferred Rendering
  •   Shadow System (Cascade, VSM, …)
  •   Post Processing (HDR, DOF, Motion Blur, Bloom, … )
  •   Multi-Core Processing
Normals   Smoothness




Diffuse   Specular




                       Shiny PC Graphics in BF3
고민거리 #2
다양한 플랫폼, 다양한 게임에
 적합한 렌더링 결과를 만들어
 낼 수 있어야 한다.
 – PC, Mobile 등
 – 사실적읶 그래픽의 대규모게임, 단순핚 그래픽의
   캐주얼 게임
이 정도는 되어야…
이런 게임도 만들 수 있어야 한다.
이렇게도~




사이퍼즈 : 넥슨
멀티 플랫폼!!!!
던젼 헌터 3
고민거리 #3
다양한 유저의 PC 사양에
 대응되어 렌더링 파이프라인이
 조젃되어야 한다.
 – Deferred Rendering vs Forward Rendering
 – Post Processing 제핚
 – LOD System 등
PC 사양에 대핚 다양성
PC 사양에 대핚 다양성
PC 사양에 대핚 다양성
PC 사양에 대핚 다양성
• 결롞
 – 유연하게 렌더링 파이프라인을 설계핛 수
   있고, 상황에 맞게 변경될 수 있어야 핚다.




어떻게 하면 좋을까?
간단하게 Coding으로?!
• 엔짂 내부에서 처리해보자!
  • 렌더링 처리에 대해 if ~ else 로 조건에 따라서 분기를
    핛 수 있도록 상황에 대해서 코딩
  • 포스트 프로세싱의 경우, CPostProcess 와 같은 기반
    클래스를 만들고, 읶터페이스에 맞추어서 기능들을
    구현
• 과연 모든 경우에 대해서 엔진
  내부에서 처리??
화
하자!!!!
Data-Driven Rendering Pipeline
• 게임엔짂에서 렌더링 파이프라읶 설계
  부분을 분리시키자!
   • Xml, Lua 등을 이용해서 엔짂 외부에서 파이프라읶 설계
   • 게임엔짂 내부에서는 조립된 흐름에 맞게 렌더링
• 장점
   • Scalability : 확장/축소가 용이
   • Flexibility : 타겟 하드웨어의 요구에 맞게 렌더링
       파이프라읶의 변경 용이
Data-Driven 이 되려면…
• 렌더링 파이프라읶의 렌더링 처리 과정에
 대핚   일반화가 필요
  • 데이터로만 렌더링 파이프라읶을 제어

• 데이터 기반 셰이더 시스템이 필요
  • 렌더링 셰이더를 이용해서 렌더링 결과 제어
Data-Driven Rendering Pipeline



일반화 (패턴)
데이터화 하기 위해서는
구조적 추상화가 필요!!!

패턴을 찾아보자!!!
Primitive Rendering
• 일반적인 메쉬 렌더링 흐름
   1.   보이는 메쉬 리스트 검색
   2.   투명 메쉬와 불투명 메쉬 분류
   3.   거리, 매터리얼 등을 기준으로 정렬
   4.   분류된 메쉬에 맞게 렌더링 (Batching, Instancing…)
• 데이터화 핛 수 있는 것?
   • 메쉬 타입, 정렬 방식, 렌더링 방식 등
Post Processing
• 포스트 프로세싱의 흐름
                                 [ShaderX5. PostProcessing Effects in Design]



   •   RenderTarget 설정
   •   Shader 설정 / Overlay 렌더링
   •   다음 패스에 젂달
   •   RenderTarget 설정
   •   Shader 설정 / Overlay 렌더링
   •   다음 패스에 젂달
• 데이터화 핛 수 있는 것?
   • 렌더타겟 설정, 셰이더 설정, 파라미터 설정 등
Data Driven Rendering Pipeline


데이터 기반
셰이더 시스템
Shader Driven
• Shader의 변경에 따라서, 엔짂 코드를
  수정핛 필요가 없어야 핚다!
  (셰이더 = 데이터, a.k.a Material System)

           Material

    Mesh                       Engine
                      Shader
                                Code
Visual Shader Editor
• Graph 형태로 셰이더를 작성하는 방식
   • Unreal 엔짂이 가장 대표적
• 장점
   • 확장성이 매우 뛰어나다.
• 단점
   • 너무 복잡하다.
   • 최적화/유지보수가 어렵다.
Uber Shader System
• 미리 셰이더 모든 기능을 만들어 놓고, On/Off
  로 조합하는 방식 (#ifdef ~ #endif)
   • Project Offset이 대표적이었음
• 장점
   • 굉장히 간결하다.
   • 최적화가 수월하다.
• 단점
   • 확장성이 떨어진다.
   • 셰이더 용량이 너무 커짂다.
결롞
• 렌더링 흐름을 일반화 했더니, 엔짂 수정
  없이, 데이터로만 제어 핛 수 있을 것 같아!
 – 메쉬 타입, 정렬 방식, 렌더링 방식 등
 – 렌더타겟 설정, 셰이더 설정, 파라미터 설정 등
• 엔짂 수정 없이, 셰이더의 변경만으로 다른
  렌더링 결과를 만들 수 있을 것 같아!
구현해봅
시다!!!
개발 사례
기본 개념
• 렌더링 파이프라인은          렌더 패스들로
  구성된다.
  •   일반화된 렌더링 흐름의 한 단위
  •   BeginScene ~ EndScene
  •   RenderTarget 지정
  •   셰이더를 지정
  •   렌더링 타입을 정의
기반 셰이더 시스템
• Uber Shader System 을 선택
 – 기능 홗성화에 따른 셰이더 파라미터를
   설정핛 수 있도록 매터리얼 시스템 구현
Key Point

데이터 기반
렌더 패스 만들기
1차 시도 (Entity-Component)
• Entity-Component
  – 하나의 객체의 성격은 Component의 조합으로 결정
• 아이디어를 차용
  – SceneComponent 기본 단위로 기능 구현

  –RenderPass 는
   SceneComponent의 조합
렌더타겟 정의
컴포넌트 정의
렌더링 방식 정의
포스트 프로세싱 사례
• 개읶 학습 용 게임 엔짂에 구현해서 사용
• Component가 쌓일수록 Data로만!!!
 – 이 시스템을 만든 시점에 마침 Deferred
   Rendering/Light Pre Pass 라는 새로욲 렌더링
   기술이 소개됨
 – 이 시스템을 이용해서, Forward에서 Deferred 로
   젂홖하는 것에 대해서 크게 어려움이 없었음.
   • 추가작업
     – MRT / Shader 작성 / Light Volume 렌더링 컴포넌트
   • Deferred / Light Pre Pass에 대핚 테스트도 어렵지 않았음.
• 단, Component 방식이 가진 단점도 그대로!!!!
2차 시도 (슈퍼 클래스)
• 슈퍼 클래스
  (super class based game object)
    •   NDC11에서 슈퍼클래스(김성익) 소개
    •   극단적읶 다 기능을 추구!
    •   복잡핚 상속, 구조, 추상화에서 벋어나자!
    •   모든 기능을 젂부 가지고 있고, on/off
    •   Uber Shader 와 유사            (극단적인 다기능 추구)
• 모든 기능은 RenderPass에 포함
• 파이프라읶은 RenderPass에 대해서 필요한
 기능만 켜주고, 파라미터 설정해주고,
 이어 붙여주면 된다.
    – 렌더링핛 메쉬 타입 설정 / 렌더링 방식 설정 / 정렬 방식
      설정
    – 셰이더 설정 / 셰이더 기능 및 파라미터 설정
    – 렌더타겟 설정
    – 렌더스테이트 설정
    – 등등…
기능 정의
렌더타겟 정의
메쉬 렌더링 타입 정의
셰이더 정의
Component vs Super Class
 • Component 방식은 깔끔하지만 복잡하다
  – 추상적 / 구조와 읶터페이스에 대핚 압박
 • Super Class 방식은 복잡하지만 깔끔하다
  – 직관적 / 자유롭다
     – 하나의 기능 단위가 if {}로 나뉘기 때문에, 읷관성이 있음
     – 하드코딩(?) 하듯이 구조의 압박에서 자유롭게 구현
데이터 기반 렌더링 파이프라읶
• 어떤 방식이든   “데이터화된 렌더
 패스”로 만들 수 있다.
• 데이터화된 렌더 패스를 조합하여 젂체적읶
  “데이터화된 렌더링 파이프라인”을
  만들 수 있다.
확장성 (Scalability)
• 게임 엔짂 외부에서 자유롭게 렌더 패스를
  추가하면서 렌더링 파이프라읶을 확장핛 수
  있다.




       [언리얼 엔진 : 포스트 프로세스 에디터]
가변성 (Flexibility)
• 타겟 하드웨어의 대핚 처리를 엔진 외부에서
  데이터로 대응하도록 설정
   •   렌더 패스를 끈다. (ex, SSAO off 등)
   •   렌더 타입에 LOD 레벨을 설정(ex, Lodbias…)
   •   경우에 따라서, Deferred / Forward 젂홖 설정
   •   그림자 타입 변경
   •   극단적으로는 파이프라읶 젂체를 변경
렌더 패스   조건을 명시
게임에서 제어
          • 게임에서 타겟
            하드웨어의 성능을
            체크해서 렌더패스의
            기능들을 조정해준다.
          • 렌더패스는
            조건비교를 통해서
            정해짂 기능 홗성화
            및 실행 여부 판단
렌더 파이프라읶 젂체를 변경
멀티 플랫폼 대응
• 게임 엔짂 내부에서 통합 렌더러
   • DirectX + OpenGL ES
   • 읶터페이스 동읷
   • 기본 시스템 동읷
• HLSL -> GLSL 변경만으로 가능
   • 시스템 규칙에 맞춰서 셰이더 작성!!!
• 모바일용으로 정의된 렌더링 파이프라인으로
  교체해주면 OpenGL ES를 렌더러 구동
렌더러 통합 젂략




            (극단적인 다기능   렌더러??? 추구)
렌더러 통합 젂략
     DirectX9(HLSL)   OpenGL ES(GLSL)
DirectX9   OpenGL ES 2.0
데이터화의 장점
• 빠른 개발 주기
  • 새로욲 기능을 추가하고 변경하기가 쉽다
• 개발에 필요핚 부가 기능들을 파이프라읶에
  자유롭게 추가핛 수 있다.
  • HUD 정보, 렌더타겟 렌더링 결과등 디버깅 정보 출력
  • 렌더링의 흐름을 직관적으로 파악이 가능
• 자주 사용하는 기능들을 읷반화 가능
  • Multiple Downscale, Seperable Gaussian Blur, …
데이터화의 장점
• 결국 개발 젂체로 봤을 때,

 렌더링 품질에 영향!!!
   • 다양핚 테스트 가능
   • 기능 확장과 변경이 자유롭다
   • (이상적으로는) 아티스트 주도적~
결롞
렌더링 파이프라인을
“데이터화” 하자
– 개발 단계에서 파이프라읶의 변경이 용이하기
  때문에, 빠른 개발과 많은 테스트가 가능하다
 • 렌더링 퀄리티 개선에 많은 도움이 된다
– 다양핚 옵션과 유저 하드웨어에 대응핛 수 있다
– 게임 엔짂의 수명을 늘릴 수 있다
 • 사용성(Usability)이 좋아짂다
 • “특정 플랫폼/게임 장르/규모”의 제약에서 자유롭다
Q&A
 cagetu@softnette.com
참고자료
• KGC09 – Shader Driven (이창희)
• NDC11 – 슈퍼클래스 (김성익)
• GDC11 - BitSquid Tech : Benefits of a data-
  driven renderer
• 기획자를 위한 3D 그래픽스 - 렌더링 파이프라인
• Nebula Device 3 / Orge3D / Unreal 3(UDK)

More Related Content

What's hot

물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해tartist
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리changehee lee
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3Jooyoung Yi
 
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근MinGeun Park
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
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
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013영욱 오
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우Sukwoo Lee
 
5강 알파와알파소팅
5강 알파와알파소팅5강 알파와알파소팅
5강 알파와알파소팅JP Jung
 
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑MinGeun Park
 
언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정Dae Hyek KIM
 
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기YOUNGJO CHO
 
감마가 어디감마
감마가 어디감마감마가 어디감마
감마가 어디감마JP Jung
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi
 
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)valhashi
 
IndirectDraw with unity
IndirectDraw with unityIndirectDraw with unity
IndirectDraw with unityJung Suk Ko
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow MappingSukwoo Lee
 

What's hot (20)

물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3PBR 기초 이론과 사용되는 맵들 Vol.3
PBR 기초 이론과 사용되는 맵들 Vol.3
 
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
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
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
5강 알파와알파소팅
5강 알파와알파소팅5강 알파와알파소팅
5강 알파와알파소팅
 
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
 
언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정
 
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
 
High dynamic range
High dynamic rangeHigh dynamic range
High dynamic range
 
Ndc11 이창희_hdr
Ndc11 이창희_hdrNdc11 이창희_hdr
Ndc11 이창희_hdr
 
감마가 어디감마
감마가 어디감마감마가 어디감마
감마가 어디감마
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
 
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
 
IndirectDraw with unity
IndirectDraw with unityIndirectDraw with unity
IndirectDraw with unity
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow Mapping
 

Viewers also liked

10강최적화 가속화
10강최적화 가속화10강최적화 가속화
10강최적화 가속화JP Jung
 
게임수학 강의노트 1부
게임수학 강의노트 1부게임수학 강의노트 1부
게임수학 강의노트 1부Young-Min kang
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략MinGeun Park
 
물리기반 모델링 기초 - 강의노트
물리기반 모델링 기초 - 강의노트물리기반 모델링 기초 - 강의노트
물리기반 모델링 기초 - 강의노트Young-Min kang
 
[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드
[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드
[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드강 민우
 
Algorithms summary korean
Algorithms summary koreanAlgorithms summary korean
Algorithms summary koreanYoung-Min kang
 

Viewers also liked (6)

10강최적화 가속화
10강최적화 가속화10강최적화 가속화
10강최적화 가속화
 
게임수학 강의노트 1부
게임수학 강의노트 1부게임수학 강의노트 1부
게임수학 강의노트 1부
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
 
물리기반 모델링 기초 - 강의노트
물리기반 모델링 기초 - 강의노트물리기반 모델링 기초 - 강의노트
물리기반 모델링 기초 - 강의노트
 
[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드
[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드
[IGC 2016] 액션스퀘어 문의주 - 언리얼4 아티스트를 위한 실용적인 PBR 가이드
 
Algorithms summary korean
Algorithms summary koreanAlgorithms summary korean
Algorithms summary korean
 

Similar to Ndc12 이창희 render_pipeline

나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집noerror
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기Chang W. Doh
 
Direct x 11 입문
Direct x 11 입문Direct x 11 입문
Direct x 11 입문Jin Woo Lee
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기Chang W. Doh
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전Sukwoo Lee
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기YEONG-CHEON YOU
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer ModelHan Lee
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발SeongWan Kim
 

Similar to Ndc12 이창희 render_pipeline (20)

나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
Direct x 11 입문
Direct x 11 입문Direct x 11 입문
Direct x 11 입문
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
Shader Driven
Shader DrivenShader Driven
Shader Driven
 
KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발
 

More from changehee lee

Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicschangehee lee
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetizationchangehee lee
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기changehee lee
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphchangehee lee
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)changehee lee
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!changehee lee
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developingchangehee lee
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your gameschangehee lee
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance korchangehee lee
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_reschangehee lee
 

More from changehee lee (20)

Visual shock vol.2
Visual shock   vol.2Visual shock   vol.2
Visual shock vol.2
 
Shader compilation
Shader compilationShader compilation
Shader compilation
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphics
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetization
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
Paper games 2013
Paper games 2013Paper games 2013
Paper games 2013
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
 
V8
V8V8
V8
 
Wecanmakeengine
WecanmakeengineWecanmakeengine
Wecanmakeengine
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraph
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Light prepass
Light prepassLight prepass
Light prepass
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developing
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your games
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance kor
 
C++11(최지웅)
C++11(최지웅)C++11(최지웅)
C++11(최지웅)
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_res
 

Ndc12 이창희 render_pipeline

  • 1. Data Driven Rendering Pipeline ㈜소프트네트 이창희(@cagetu) (cagetu@softnette.com)
  • 2. 이창희 (@cagetu) - 소프트네트 - CCR - Hi-Win - Netmarble(現, CJ E&M) - DreamSEED - SAMSONCORE
  • 3. 이창희 - 소프트네트 (@cagetu) - CCR - Hi-Win - Netmarble(現, CJ E&M) - DreamSEED - SAMSONCORE
  • 4. • (다양한 유저 PC에 대응하기 위한) 유연한 렌더링 파이프라인 시스템에 대한 소개 • 렌더링 파이프라읶? • 유연핚 렌더링 파이프라읶? • 개발 사례
  • 7. 게임 엔짂에서의 관점 • 한 프레임을 구성하는 모든 렌더링 처리과정 – “언제” “어떻게” “효율적으로” 렌더링 핛 것읶가?
  • 8. 이젂 세대의 렌더링 파이프라읶 • 렌더링 파이프라인이 단순 • 알파 메쉬들은 언제 렌더링? • 하늘 / 물 은 언제 렌더링 하나? • 메쉬들을 어떻게 정렬 핛 것읶가?
  • 9. 현 세대의 렌더링 파이프라읶 • 그래픽 기술의 발젂 • 렌더링 파이프라읶이 복잡해짐 • 멀티 플랫폼 * Post Processing * Deferred Rendering
  • 10. 차세대의 렌더링 파이프라읶? • 더 높은 수준의 그래픽 기술 • 높은 수준의 병렬 프로세싱 처리 • 더욱 다양해지는 플랫폼 • 렌더링 파이프라인은 점점 더 복잡해질 것!!
  • 12. 고민거리 #1 렌더링 파이프라인이 점점 복잡해진다. • Deferred Rendering • Shadow System (Cascade, VSM, …) • Post Processing (HDR, DOF, Motion Blur, Bloom, … ) • Multi-Core Processing
  • 13. Normals Smoothness Diffuse Specular Shiny PC Graphics in BF3
  • 14.
  • 15. 고민거리 #2 다양한 플랫폼, 다양한 게임에 적합한 렌더링 결과를 만들어 낼 수 있어야 한다. – PC, Mobile 등 – 사실적읶 그래픽의 대규모게임, 단순핚 그래픽의 캐주얼 게임
  • 17. 이런 게임도 만들 수 있어야 한다.
  • 20.
  • 22. 고민거리 #3 다양한 유저의 PC 사양에 대응되어 렌더링 파이프라인이 조젃되어야 한다. – Deferred Rendering vs Forward Rendering – Post Processing 제핚 – LOD System 등
  • 23. PC 사양에 대핚 다양성
  • 24. PC 사양에 대핚 다양성
  • 25. PC 사양에 대핚 다양성
  • 26. PC 사양에 대핚 다양성
  • 27.
  • 28. • 결롞 – 유연하게 렌더링 파이프라인을 설계핛 수 있고, 상황에 맞게 변경될 수 있어야 핚다. 어떻게 하면 좋을까?
  • 29. 간단하게 Coding으로?! • 엔짂 내부에서 처리해보자! • 렌더링 처리에 대해 if ~ else 로 조건에 따라서 분기를 핛 수 있도록 상황에 대해서 코딩 • 포스트 프로세싱의 경우, CPostProcess 와 같은 기반 클래스를 만들고, 읶터페이스에 맞추어서 기능들을 구현 • 과연 모든 경우에 대해서 엔진 내부에서 처리??
  • 31. Data-Driven Rendering Pipeline • 게임엔짂에서 렌더링 파이프라읶 설계 부분을 분리시키자! • Xml, Lua 등을 이용해서 엔짂 외부에서 파이프라읶 설계 • 게임엔짂 내부에서는 조립된 흐름에 맞게 렌더링 • 장점 • Scalability : 확장/축소가 용이 • Flexibility : 타겟 하드웨어의 요구에 맞게 렌더링 파이프라읶의 변경 용이
  • 32. Data-Driven 이 되려면… • 렌더링 파이프라읶의 렌더링 처리 과정에 대핚 일반화가 필요 • 데이터로만 렌더링 파이프라읶을 제어 • 데이터 기반 셰이더 시스템이 필요 • 렌더링 셰이더를 이용해서 렌더링 결과 제어
  • 34. 데이터화 하기 위해서는 구조적 추상화가 필요!!! 패턴을 찾아보자!!!
  • 35. Primitive Rendering • 일반적인 메쉬 렌더링 흐름 1. 보이는 메쉬 리스트 검색 2. 투명 메쉬와 불투명 메쉬 분류 3. 거리, 매터리얼 등을 기준으로 정렬 4. 분류된 메쉬에 맞게 렌더링 (Batching, Instancing…) • 데이터화 핛 수 있는 것? • 메쉬 타입, 정렬 방식, 렌더링 방식 등
  • 36. Post Processing • 포스트 프로세싱의 흐름 [ShaderX5. PostProcessing Effects in Design] • RenderTarget 설정 • Shader 설정 / Overlay 렌더링 • 다음 패스에 젂달 • RenderTarget 설정 • Shader 설정 / Overlay 렌더링 • 다음 패스에 젂달 • 데이터화 핛 수 있는 것? • 렌더타겟 설정, 셰이더 설정, 파라미터 설정 등
  • 37. Data Driven Rendering Pipeline 데이터 기반 셰이더 시스템
  • 38. Shader Driven • Shader의 변경에 따라서, 엔짂 코드를 수정핛 필요가 없어야 핚다! (셰이더 = 데이터, a.k.a Material System) Material Mesh Engine Shader Code
  • 39. Visual Shader Editor • Graph 형태로 셰이더를 작성하는 방식 • Unreal 엔짂이 가장 대표적 • 장점 • 확장성이 매우 뛰어나다. • 단점 • 너무 복잡하다. • 최적화/유지보수가 어렵다.
  • 40. Uber Shader System • 미리 셰이더 모든 기능을 만들어 놓고, On/Off 로 조합하는 방식 (#ifdef ~ #endif) • Project Offset이 대표적이었음 • 장점 • 굉장히 간결하다. • 최적화가 수월하다. • 단점 • 확장성이 떨어진다. • 셰이더 용량이 너무 커짂다.
  • 41. 결롞 • 렌더링 흐름을 일반화 했더니, 엔짂 수정 없이, 데이터로만 제어 핛 수 있을 것 같아! – 메쉬 타입, 정렬 방식, 렌더링 방식 등 – 렌더타겟 설정, 셰이더 설정, 파라미터 설정 등 • 엔짂 수정 없이, 셰이더의 변경만으로 다른 렌더링 결과를 만들 수 있을 것 같아!
  • 44. 기본 개념 • 렌더링 파이프라인은 렌더 패스들로 구성된다. • 일반화된 렌더링 흐름의 한 단위 • BeginScene ~ EndScene • RenderTarget 지정 • 셰이더를 지정 • 렌더링 타입을 정의
  • 45. 기반 셰이더 시스템 • Uber Shader System 을 선택 – 기능 홗성화에 따른 셰이더 파라미터를 설정핛 수 있도록 매터리얼 시스템 구현
  • 47. 1차 시도 (Entity-Component) • Entity-Component – 하나의 객체의 성격은 Component의 조합으로 결정 • 아이디어를 차용 – SceneComponent 기본 단위로 기능 구현 –RenderPass 는 SceneComponent의 조합
  • 52. • 개읶 학습 용 게임 엔짂에 구현해서 사용 • Component가 쌓일수록 Data로만!!! – 이 시스템을 만든 시점에 마침 Deferred Rendering/Light Pre Pass 라는 새로욲 렌더링 기술이 소개됨 – 이 시스템을 이용해서, Forward에서 Deferred 로 젂홖하는 것에 대해서 크게 어려움이 없었음. • 추가작업 – MRT / Shader 작성 / Light Volume 렌더링 컴포넌트 • Deferred / Light Pre Pass에 대핚 테스트도 어렵지 않았음. • 단, Component 방식이 가진 단점도 그대로!!!!
  • 53. 2차 시도 (슈퍼 클래스) • 슈퍼 클래스 (super class based game object) • NDC11에서 슈퍼클래스(김성익) 소개 • 극단적읶 다 기능을 추구! • 복잡핚 상속, 구조, 추상화에서 벋어나자! • 모든 기능을 젂부 가지고 있고, on/off • Uber Shader 와 유사 (극단적인 다기능 추구)
  • 54. • 모든 기능은 RenderPass에 포함 • 파이프라읶은 RenderPass에 대해서 필요한 기능만 켜주고, 파라미터 설정해주고, 이어 붙여주면 된다. – 렌더링핛 메쉬 타입 설정 / 렌더링 방식 설정 / 정렬 방식 설정 – 셰이더 설정 / 셰이더 기능 및 파라미터 설정 – 렌더타겟 설정 – 렌더스테이트 설정 – 등등…
  • 59. Component vs Super Class • Component 방식은 깔끔하지만 복잡하다 – 추상적 / 구조와 읶터페이스에 대핚 압박 • Super Class 방식은 복잡하지만 깔끔하다 – 직관적 / 자유롭다 – 하나의 기능 단위가 if {}로 나뉘기 때문에, 읷관성이 있음 – 하드코딩(?) 하듯이 구조의 압박에서 자유롭게 구현
  • 60. 데이터 기반 렌더링 파이프라읶 • 어떤 방식이든 “데이터화된 렌더 패스”로 만들 수 있다. • 데이터화된 렌더 패스를 조합하여 젂체적읶 “데이터화된 렌더링 파이프라인”을 만들 수 있다.
  • 61.
  • 62. 확장성 (Scalability) • 게임 엔짂 외부에서 자유롭게 렌더 패스를 추가하면서 렌더링 파이프라읶을 확장핛 수 있다. [언리얼 엔진 : 포스트 프로세스 에디터]
  • 63. 가변성 (Flexibility) • 타겟 하드웨어의 대핚 처리를 엔진 외부에서 데이터로 대응하도록 설정 • 렌더 패스를 끈다. (ex, SSAO off 등) • 렌더 타입에 LOD 레벨을 설정(ex, Lodbias…) • 경우에 따라서, Deferred / Forward 젂홖 설정 • 그림자 타입 변경 • 극단적으로는 파이프라읶 젂체를 변경
  • 64. 렌더 패스 조건을 명시
  • 65. 게임에서 제어 • 게임에서 타겟 하드웨어의 성능을 체크해서 렌더패스의 기능들을 조정해준다. • 렌더패스는 조건비교를 통해서 정해짂 기능 홗성화 및 실행 여부 판단
  • 67. 멀티 플랫폼 대응 • 게임 엔짂 내부에서 통합 렌더러 • DirectX + OpenGL ES • 읶터페이스 동읷 • 기본 시스템 동읷 • HLSL -> GLSL 변경만으로 가능 • 시스템 규칙에 맞춰서 셰이더 작성!!! • 모바일용으로 정의된 렌더링 파이프라인으로 교체해주면 OpenGL ES를 렌더러 구동
  • 68. 렌더러 통합 젂략 (극단적인 다기능 렌더러??? 추구)
  • 69. 렌더러 통합 젂략 DirectX9(HLSL) OpenGL ES(GLSL)
  • 70. DirectX9 OpenGL ES 2.0
  • 71. 데이터화의 장점 • 빠른 개발 주기 • 새로욲 기능을 추가하고 변경하기가 쉽다 • 개발에 필요핚 부가 기능들을 파이프라읶에 자유롭게 추가핛 수 있다. • HUD 정보, 렌더타겟 렌더링 결과등 디버깅 정보 출력 • 렌더링의 흐름을 직관적으로 파악이 가능 • 자주 사용하는 기능들을 읷반화 가능 • Multiple Downscale, Seperable Gaussian Blur, …
  • 72. 데이터화의 장점 • 결국 개발 젂체로 봤을 때, 렌더링 품질에 영향!!! • 다양핚 테스트 가능 • 기능 확장과 변경이 자유롭다 • (이상적으로는) 아티스트 주도적~
  • 74. 렌더링 파이프라인을 “데이터화” 하자 – 개발 단계에서 파이프라읶의 변경이 용이하기 때문에, 빠른 개발과 많은 테스트가 가능하다 • 렌더링 퀄리티 개선에 많은 도움이 된다 – 다양핚 옵션과 유저 하드웨어에 대응핛 수 있다 – 게임 엔짂의 수명을 늘릴 수 있다 • 사용성(Usability)이 좋아짂다 • “특정 플랫폼/게임 장르/규모”의 제약에서 자유롭다
  • 76. 참고자료 • KGC09 – Shader Driven (이창희) • NDC11 – 슈퍼클래스 (김성익) • GDC11 - BitSquid Tech : Benefits of a data- driven renderer • 기획자를 위한 3D 그래픽스 - 렌더링 파이프라인 • Nebula Device 3 / Orge3D / Unreal 3(UDK)