구세대 엔진 신데렐라 만들기 최종본 유트브2

Preview:

DESCRIPTION

 

Citation preview

구세대 엔진 ,신데렐라 만들기

비교적 구 기술 게임엔진 렌더링 시스템 생명 연장

NDC 2013

고경석버티고우 게임즈 , 엔진팀

만능종합예술인을 지향

업계 경력

㈜ 엔오지 엔터테인먼트 바이탈 디바이스 (RTS) 개발 플라스틱스 온라인 개발 (MMORPG)

㈜ 아이서프 팀레볼루션 개발 (MORacing)

㈜ CJ 인터넷 개발 2 실 엔진 연구 개발 쿵야 어드벤쳐 개발

SK C&C E-World Project TFT

㈜ T3 엔터테인먼트 워크라이 개발

㈜ JCE 엔터테인먼트 전략기획실㈜ 이누카 인터렉티브㈜ 버티고우 게임즈 전략기술실

최재혁NEXON Korea, 개발 4 본부

HIGHQUALITYRENDERING에 관심이 많은 사람

이 내용은 엔진을 선택하는 것이 아니라선택되어진 구세대 엔진을 어떻게 , 차세대 신규게임에적용시키는가에 대한 문제점의 고민입니다 .

실제 ㈜ 버티고우 게임즈에서 사용하고있는 GameBryo 2.0~2.6 에서의 사례로구세대 엔진에서의 차세대 그래픽스 기술을 접목시키는 방법을 살펴보면서여러분이 가지고 계신 구세대 엔진 혹은코스트 ( 자금 , 인력 ) 때문에 차세대 엔진의 구입이 어려운 힘든 상황에미력하나마 ,참고 자료가 되었으면 좋겠습니다

고경석

인디게임 만들면서근사한 렌더링 하고 싶었는데 ,방향을 찾지 못하는 많은 사람들에게 조금이나마 도움이 되고작은 경험을 나누는 자리였으면 ..

발표자 최재혁씨의 개인생각

“ 흔한 게임브리오 엔진을 사용한 게임 스샷 .JPG”

본 이미지는 무작위 검색에 의하여 특정게임의 홍보 및 다른 의도가 없음을 알려드립니다

“ 게임브리오 2.0~2.6 에서 차세대 게임 그래픽을”

일단 , 보고 시작하자

UGF 구현 영상

United Graphics FoundationKyoung Seok,Ko 2012~2013

본 영상은 필자의 지인들과 본인의 남는 시간을 활용해서 제작한 리소스를 가지고 만든엔진 다이렉트 영상입니다 리소스의 질은 떨어질 수 있으니 , 참고바랍니다

LightFrameworkPost Processing

Light | 중요한 조명 처리 |

컴퓨터 그래픽스에서 가장 중요한 것은 색이 아닌 빛

Diffuse Lighting | Ambient Lighting | Light Mapping

Light | |

추구하는 방향성

Diffuse Lighting | Ambient Lighting | Light Mapping

군더더기 없는 물리모델 기반 라이팅

구세대 엔진중 많은 특징들은 이쁜게 렌더링 하기 위해Light 를 Mesh 나 Node 에 덕지덕지 사용하는 경향이 있다 .

= GI Methods

Light | |

Renderer 를 설계할 때 중요한 문제 한 가지는조명처리 방식을 결정하는 것

Diffuse Lighting | Ambient Lighting | Light Mapping

Forward VS Deferred

가장 무거운 연산이기도 하고 ..

게임 성격에 맞게 적합하다 판단한 ..

을 사용 ..

복잡한 Shading Model 을 쓰고 있기도 하고 ..

LightFrameworkPost Processing

| Diffuse Lighting |

컴퓨터 그래픽스의 빛의 요소

Diffuse Lighting Process- 3 Channel BRDFs Lighting

- Translucency Process

Ambient Lighting Process For Static Ob-ject

- HDR Directional Lightmaps- Global SkyLight SH

Ambient Lighting Process For Dynamic Ob-ject

- Global SkyLight SH- Point Clouds SH

Lighting ProcessDiffuse Lighting | Ambient Lighting | Light Mapping

| Light |

Lighting 을 잘 받으려면 ?

Normal Map 개선Diffuse Lighting | Ambient Lighting | Light Mapping

| Light |

물체의 표면 관련 데이터가 중요

가장 중요한 부분이 Normal 에 대한 데이터

보통 Normal Map 에는 노이즈가 있다 .

2-Channel Normal MapGPU 친화적인 텍스처 압축을 하되 , 손실을 줄일 수 있는 방법Call of Duty, Mass Effect, 언리얼 3 시스템에서 사용

Radiosity Normal MapSelfShadow 가 가능한 NormalMap 통상 RNMs 로 불린다 .Source 엔진에서 처음 구현 ,Source 엔진 , 언리얼 3 에서 사용

Normal Map 개선 작업

보통 Normal Map 에는DXT1 을 많이 쓰는데DXT 포맷은 손실 압축이라서노이즈가 많다 .

노이즈 부터 제거하자

일반 이미지를 DXT 로 압축하면

DXT 압축에 따른 결과

2-Channel Normal Map 구현

DXT 는 하드웨어 가속을 받기 때문에 쓰긴 써야 되는데 ..DXT 가 Alpha, Green값이 덜 훼손되는 특징이 있다 .이 값들을 x, y 에 저장하고 나머지 z값을 계산하여 z값 만들게 되면원본 DXT 보다 훨씬 깨끗한 Normal값을 뽑을 수 있다 .

깔끔한 Normal

2 channel Normal Map Radiosity Normal Map

Radiosity Normal Map 비교

VALVE 에서 자체 음영이 가능한 방법을 개선렌더링 품질을 올리기 위해서는 반듯이 써야 한다 . 이제는 일반적인 방법하지만 라이트맵 3 장은 너무 용량이 크다 .개선방향 : [NDC 2012, 가성비 좋은 렌더링 10 선 , 버텍스 단위 3 축 조명 ]

재질이나 라이팅이 밝아질수록 Normal 이 사라지는 현상이 있었다 .

Normal Map 을 Scaling했다 .

그래도 아직 모자른 감이 있었다 .

때때로 Normal값 강조를 위해

3.0f scale

Normal Map Scaling 결과

전통적인 조명 방식에서다음세대 조명 방식이라 생각되는 BRDF

Lighting ModelsDiffuse Lighting | Ambient Lighting | Light Mapping

| Light |

Phong/Blinn Phong Model

Micro-facet BRDFs

Next Generation Lighting Model

예전에는 느려서사용 못하고 있었음

이전에는 단지 빨리서 사용

BRDFDiffuse Lighting | Ambient Lighting | Light Mapping

| Light |

불투명한 물체에서의 반사율을 나타내는 다양한 기법

쉽게 말하면 표면에서 빛이 어떻게 반사되는지를 나타내는 공식

BRDF란 ?

일단 깨끗함48 개 Lighting 모델 제공표현하기 어려운 Material 도 쉽게 가능

Blinn-Phong BRDF

BRDF 를 쓸까 ?

사실 이 복잡한 수식을다 알 필요는 없고F, G, D 의 요소를 이해하고 걍 쓰면 된다 .

정확한 수식이 아님 ..

Micro-facet 방정식

FGD

– 국소면 사이의 그림자 , 마스킹의 영향

– 얼마나 오브젝트가 금속처럼 보일까

– 국소면의 Noraml 값 설정

Micro-facet 방정식

다양한 Lighting Model

가장 일반적으로 Diffuse 라이팅에 적용되는 공식은 Lambert 조명

Wrapped Diffuse Diffuse Lighting | Ambient Lighting | Light Mapping

| Light |

하지만 사용하다 보면 너무 어둡다 .

Wrapped DiffuseTeam Fortress 2 팀 에서 간단한 Diffuse 계산 대신 복잡한 Diffuse 제안

Image From Team Fortress2

음영이 많이 생기는 기존의 Lambert 를 개선하기 위해 나온 것Diffuse vs Wrapped Diffuse

TF2-Shading

GameBryo(Lambert) Wrapped Diffuse(factor 1.0)다소 어두워 지는 경향이 있다 .

Wrapped Diffuse(factor 1.0)보완 1.5

구현

알려진 Specular 만으로 표현 할 수 없는 재질이 많기 때문에 사용

FresnelDiffuse Lighting | Ambient Lighting | Light Mapping

| Light |

보는 각도에 따라서반사되는 재질이 달라진다 .그리고 모든 물체는 Fresnel 을 가진다 .

Crysis Fresnel 예제

반사체를 표현하는데 있어서 프레넬 함수를 사용하는 사실적인 표면의 표현이 가능

Crysis Fresnel 패널

Crysis

Diffuse Fresnel 지원환경맵 Fresnel 지원Fresnel MaskMap 지원스펙큘러맵과 연동지원( 보다 자연스러운 결과를 연출가능 )

구현범위

Translucency MaterialDiffuse Lighting | Ambient Lighting | Light Mapping

| Light |

일반적인 용어는 Sub Surface Scattering빛이 오브젝트의 표면의 한 지점으로 투과되어 내부로 퍼져나간 후 다른 위치로 빠져나가는 현상

두께에 기반한 Sub Surface Scattering

Translucency Material두께를 고려한 Sub Surface Scattering

빛이 반투과 되는 피부나 식물의 입사귀 , 양초같은 오브젝트 표현에 적당

어디에 사용 ?

Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look

경험상 괜찮은 구현 방법은프로바이트 2 엔진에서 사용한 로컬 두께 맵을 이용하는 것

어떤걸 사용 ?

오브젝트의 노멀을 뒤집어 엠비언트 오클루젼을 걸고 그것을 반전시키면 두께 맵이 나온다 .

사람 얼굴로 치자면 코끝이나 귀 끝이 밝게 나오고 얼굴 중심으로 갈수록 어두워지는 두께맵을 얻을 수 있음

아티스트가 라이트맵을 굽는 것과 비슷하다구현방법

MMO 에서는 이 정도까지 쓰는 건 아직까지 좀 무리인 듯

현재까지 완성된 대부분 MMORPG 들은 단순히'피부 부분에만 붉은색을 추가했다'라는 걸 봐서 ..

아직까지는 대부분의 게임에서는 GPU Gems 에 소개 된 Fake SSS 를 많은 쓰는 듯

하지만 ..

Character ShadingDiffuse Lighting | Ambient Lighting | Light Mapping

| Light |

피부가 갖는 빛에 대한 투과성을 흉내 내기 위해 Translucency Material 을 가져다 쓴다 .

Gamebryo 구현 된 것

피부는 플라스틱처럼 깨끗한 재질이 아니기 때문에 ,BeckMann Distribution 과 CookTorrance Term 라이팅 모델로 제한

구현방법

추가로 Frensnel 을 신경 쓰면 좋더라Frensnel 을 Diffuse와 Specular맵과 합성그리고 추가 Frensnel Color와 가중치를 적용하면 자연스럽게 Frensnel 을 적용 할 수 있다 .

두깨맵을 내부적으로 이미시브 채널로 전송하여 SSSSS(Screen Space Sub Surface Scattering) 를 구현

Character Shading

머리카락 표현의 경우 Anistorpic Brdf 모델을 적용

Character Shading

두깨맵의 퀄러티와 설정에 따라 결과 퀄러티는 달라짐

Character Shading

LightFrameworkPost Processing

| Ambient Lighting |

다른 물체에 반사되어 도달하는 간접광그렇기 때문에 Ambient값을 정확하게 계산하지못하고 , Diffuse 에 비해 영향이 아주 적기 때문에보통 Ambient 값을 단순히 상수로 사용 ..

Ambient 란 ?

Diffuse 의 영향이 미치지 않는 부분에는Ambient 영향이 절대적이라 차이가 크다 .

하지만

그런데 Ambient 를 실시간으로 계산하기에는 연산량이너무 많음 ..

생각한게 고정 Ambient Lighting 과동적 Ambient Lighting

그래서

동적 Ambient Lighting 은 현실 타협이 가능한 전처리 과정이 포함된 방법입니다 .

Hemisphere Lighting | Light |Diffuse Lighting | Ambient Lighting | Light Mapping

메탈기어 4 에서 사용된 기술

물리적 정확함보다 영화적 연출을 중시한 기법메탈기어 4

Hemisphere Lighting

Image From MSG4

Hemisphere Lighting란 ?디자이너의 약간의 수작업으로 Lighting 설정한다 .

시작은 Valve 에서 Irradiance Volume 라는간단한 방법으로 시작

디자이너에 의해서 음영의 의도적인 연출이 가능하게 됨

Irradiance Volume 의 장점이자 단점은 ..

Irradiance Volume

하지만 Irradiance Volume 은 손이 너무 많이 감 .좀 더 개선된 방법이 Hemisphere Lighting

간단히 말하면 하늘색과 지면의 색을 설정해서 반구 모델을 만들고 Surface Normal 을 계산으로- 디자이너 일을 줄임- 연산 비용에 비해서 효과가 크다 .

Irradiance Volume 개선

추가 개발한다면 동적으로 변화 할 수 있는 시스템도 만들 수 있을 듯 – 지형은 재질이 다르고 재질에 따른 반사광 의 색도 다르니깐 ..

아이디어

Spherical Harmonics | Light |Diffuse Lighting | Ambient Lighting | Light Mapping

Global Illumination 에 대한 렌더링 방정식은모든 방향에 대해 적분을 해야 함으로 컴퓨터로계산하기가 힘들다 .

PRT 및 SH..

이에 대한 해결책으로 Spherical Harmonics Lighting 이 제안됨

From IBL

큐브맵을 가지고 Global Illumination 을 흉내 낸다현재까지 알려진 것들 중 가장 값싼 방법

Spherical Harmonics | Light |Diffuse Lighting | Ambient Lighting | Light Mapping

Image Based Lighting SH

- 환경의 평균적인 큐브맵을 사용하거나 사용해야 어색하지 않았다 .

- 환경에 따라 큐브맵을 교환하면 실시간 GI 를 흉내 낼 수 있겠으나 , 현실적으로 자연스럽게는 어렵다 .

구현경험큐브맵을 이용한 SH 는 너무 정적이라 실용성이 있을까 ?란 의문

From PointCloudsSpherical Harmonics | Light |

Diffuse Lighting | Ambient Lighting | Light Mapping

Point Clouds SH

캐릭터나 차량같이 움직이는 Prop 에 대해서는격자로 된 Point Clouds SH 를 미리 만들어서대응하게 하면 됨

구현경험먼저 [동적 ] 물체를 위한 SH 계수를 어떻게 얻을까 ?

마야를 뜯어보자 터틀 , 브이레이 분석

일단 터틀 SH 데이터 구조 먼저 파악한 뒤터틀을 이용해 SH 를 배치하고 베이킹하여 XML 로 뽑아서그걸 엔진 내에서는 옥트리 형태로 관리옥트리 노드에 있는 Prop 에 해당 SH 데이터를 적용시킴

구현경험그럼 [ 정적 ] 물체를 위한 SH 계수를 어떻게 얻을까 ?

정적 물체들은 그냥 SkyLab 이라는 하는 처리자를따로 만들어서 SH 를 생성하시고 적용시킴스카이를 Render Target 으로 따와서걍 SH 데이터로 바꿔 처리시킴

Unreal3,Beast,BattleField3

구현Point Clouds 중 한 점을 시뮬레이션

LightFrameworkPost Processing

| Light Mapping |

실시간 Shadow 기법이 발전했지만 ,Light Map 은 여전히 게임 분위기를좌우하는 큰 요소

Light Mapping

Directional Light maps | Light |Diffuse Lighting | Ambient Lighting | Light Mapping

방향성을 가지는 Light mapValve 가 개발

라이트 맵에 노멀 맵을 표현할 수 있는 방법을 찾을 수 있을까 ?

아이디어 :

Diffuse 만으로 게임 내 빛이 닿지 않는 부분은 보이지 않는다 .하지만 실제 환경은 수 많은 반사광이 존재함

실제 Light 는 ..

반사광이 있고 없고의 차이 ..

Image From Un-real3

Image From Un-real3

Directional Light map 은 반사광을 시뮬레이션하기 위해 개발 됨 .

즉 , Direct 한 빛 외에 반사되는 빛에 의한 Normal 을 추가로 표현 하는 것이 목적

Light Map 의 목적

이전 Spherical Harmonics Ambient 를 사용 할 수 없다면아마 이게 유일한 주변광 라이팅일듯 .

Light Map 의 목적

Source 엔진에서 처음 사용현재 , Source,Unreal3등 여러 엔진에서 보편적으로 사용

다른 게임에서 사용 예

Metal Gear用 Fox Engine 에서의 Directional Lightmap 의 설명다른 게임에서 사용 예

전통적으로 3 방향의 라이트맵이 필요하나 ,언리얼 3와 같이 x,y 축 2 장의 라이트맵을 사용

위의 그림은 라이트맵만 출력한 상태( 빛이 없어도 노멀맵이 표현된다 )

구현Directional Light maps 적용

구현Directional Light Map 적용

구현Directional Light Map 적용

Lightmap Calc Method | Light |Diffuse Lighting | Ambient Lighting | Light Mapping

Artrmouse

노출이라는 개념을 첨가

라이트맵의 전통적인 계산 방식과는 다른 새로운 방법론을 만들고 싶었다

라이트맵을 텍스쳐의 개념보다 라이팅의 개념으로 더 보고 싶었다

Modulate Modulate 2X Modulate 4X

보통 Diffuse Map 과 Light Map 을 Modulate 해서나타내는데 .. 이 방법은 Light Map 이 칙칙해지는 단점이 있다 .

Traditional Light mapping

비 오는 날씨 같은 느낌 .Modulate 할 수록 색은 양극화 된다 .

개선 방향Light Map 개선하기 위해낮은 주파수 영역 , 높은 주파수 영역을 각자 연산

아티스트가 일부 수정 가능하게 파라미터로 일부 제공

Use Diffuse LightingDiffuse Lightmap Generate

Flow

Use Ambient LightingAmbient Lightmap GenerateExpourse

Ligthtmap(8bit Alpha)

Artmouse Light mapping

노출 정도를 맵으로 표현해서 라이트맵의 알파채널에 넣는다 ( 픽셀당 8 비트 사용 )

노출 맵과 노출 계수를 활용하여 ,주변광과 직접광 라이트맵을 만들고 라이팅 계산을 한다

색 공간 계산 대신 , 감마계산을 활용하여 ,이전에는 불가능 밝기를 실현할 수 있다

Exposure = 1 Exposure = 2 Exposure = 3

구현 ambient light map

Exposure = 1 Exposure = 2 Exposure = 3

밝은 색 영역만 추출 (HDR 톤 맵핑과 유사 )버텍스 노멀과 빛 방향의 외적과 연산

구현 diffuse light map

구현 결과최대한 중간 톤을 지키면서도 밝은 곳은 밝게 어두운 곳은연하게 또는 강하게 조절 할 수 있었다 .

Modulate 4X

엠비언트 라이팅의 색과디퓨즈 라이팅의 색을 다르게 준 예

구현 결과

하지만 ..여전히 A급 Light Map 얻는데 실패

Light Map Beast, Unreal Light-mass 의 수준에 도전해보자

RGB 채널당 16 비트 혹은 32 비트 float 형 값을 가짐

OpenEXR 이나 HDRI 포멧으로 저장

RGB 채널당 0~255 의 단계를 저장하거나 그 이하의 단계를 가짐

32,24 비트 TGA 나 16 비트 DDS 로 저장Baking Light map in DCC

LDR Light map

Baking Light map in DCC

HDR Light map

HDR Light map

그런데 걍 HDR 로 Light map 을 만들게 되면Light map 한 장에 수백메가 ..

RGBM HDR Light map | Light |Diffuse Lighting | Ambient Lighting | Light Mapping

장점 : 많은 색 영역을 확보할 수 있다단점 : 용량이 많다 . 비디오 메모리에서 DXTn 처럼 압축지원을 받지 못한다

HDR Light map

해결책 ? “RGBM Light map”PS3 의 적은 메모리 덕분에 많은 연구가 진행되어 나온 결과물 중 하나 ..

전용 프로그램으로 OpenEXR 에서 인코딩되며 ,다른 방법보다 단순한 방법으로 Shader 에서 디코딩됩니다

RGBM FormatDXT5 의 RGB 채널에 LDR 칼라 값을알파채널에 휘도 값을 저장합니다

RGBM 공정Vray or FinalRender

HDR 라이트맵베이킹

OpenEXR

포멧으로저장

인코딩 프로그램으로DXT5 로 변환

디코딩In PixelShader

구현칙칙한 느낌은 사라짐

RGBM Light Map 의 아쉬운 점 : 명암 차이를 내기 쉽지 않다 구현 시 문제점

또 수정

RGBM+Artrmouse Ex Method

노출정도를 편리하게 편집가능

Artmouse Exposure Method

최종 구현

최종 구현RGBM Directional Light Map

최종 구현RGBM Directional Light Map

상용 Lighting 엔진 Beast와 비슷하게 구현최종 구현

Light | 그리고 또 뭐 하면 좋은게 .. |Diffuse Lighting | Ambient Lighting | Light Mapping

WYSIWYG 기능 제공

1. 라이팅 모델2. 스킨 쉐이딩3. 라이트맵 에디팅4. Decal,Emissive맵등 편집5. 블렌딩 기능 편집

기능을 제한한 3D 컨텐츠 용 DCC Viewport Shader 를 통해 ,생산성을 증대시킨다

LightFrameworkPost Processing

| Manet |

Framework | Lighting Solution |Manet | SkyLab | Re-Construction of Color Pipeline | Building Emissive Glow Pipeline

Graphics Framework

Manet : Lighting Solution Project인상파의 대표적 화가의 이름에서 프로젝트 명을 따옴

리소스 파이프라인에서 데이터를 받아 게임환경을 처리하고 전달 .

최종적으로 Shader 로 표현해주는가장 Core 한 Framework

[Ambient Lighting 과 Direct Lighting 정보를 ]

Manet [Lighting Solution] 이 해야 될 일

Module 간 Connecting 기능Asset 관리 기능환경 관리Post Processing Special Effect

Point Cloud Octree Based SH BasisComposite value for Sun and Ground

Pre-Baking SH From Turtle Maya

Sun Ray form SkyDome

Ground Ray From Lightmap

( 아직 결정되지 않음 )Shader

Manet

Graphics Framework

Manet 구조

Dynamic SH GISkyLight And Indirect Ground Lighting( 개발 예정 )SunRay( 개발 예정 )……

우리는 대략 이런 식으루 구현 함

Manet 특징 ..Dynamic SH GI 데이터를 옥트리 형태로 가지고 있다 .

Unreal 3 & En-lighten

다른 Lighting Solution

Enlighten CryEngine

다른 Lighting Solution

Manet Test Build 2012-07-05

SH 처리 ..Dynamic SH GI 처리 형태

Lighting 을 계산 할 때 Sky, Land 의 영향이 중요하다 .

주변 환경 Lighting 처리 ..

LightFrameworkPost Processing

| SkyLab |

Framework | Sky Process |Manet | SkyLab | Re-Construction of Color Pipeline | Building Emissive Glow Pipeline

Atmosphere Env.Solution

대기 환경을 시뮬레이션하기 위해 만든 Framework

레일리 산란 , 미 산란을 이용해물리 기반 대기 Scattering 을 처리간단한 태양 처리

ShaderManet

Graphics Framework

ShaderSkyLab

Process Sky SH Lighting

Process Land Scattering

Process LensFlare Effect

Sky-Dome Parameter

Atmosphere Shader

SkyLAB 구조

진보된 스카이 , 지형 스케터링하늘에 관련된 효과 ( 구름의 스크롤 ,밤낮 구현등 )Manet 과 연동 -Sky Light 를 Manet 에 연결해줌Sun Shaft/God Ray( 개발 예정 )

Basic Sky ScatteringSkyLab 의 구면 하늘 셰이더는 레일리 , 미 산란 ,파라메터와 구의 반경 ,공기 층의 두께 , 노출 및 여러 가지 파라메터를 통해 결정된다

Blend Clouds Layer

| 블랜딩을 하지 않은 구름 레이어 | 수치로 조절 가능한 블랜딩 영역을 계산 | 블랜딩 영역으로 블랜딩한 구름 레이어

구름의 경우 절차적으로 구름을 생성하는 방식이 있지만아티스트가 그린 구름의 퀄리티를 따라 올 수는 없다 .하지만 너무 정적인데 , 동적으로 할 수는 없을까 ?

노이즈 맵을 만들어서 구름의 수증기양을 알파값으로 조절함

Dynamic Shape Transform구름의 가장자리 부분이나 수증기가 적은 부분은 때때로 나타났다사라졌다 하며 , 이것은 하늘을 동적으로 변화시켜 심심하지 않게 해준다

노이즈 텍스쳐가 필요하며 , 이것을 구름전체 이미지와 반응시키진 않는다 구름 농도에 상관없이 반응시킨다면 , 촌스러워지며 현실감이 떨어진다

Dynamic Shape Transform옅은 부분의 모양이 조금 변한 것을 볼 수 있다

스크린 샷으로는 잘 안보이니 뒤에서 동영상으로 ...

Silver Lining구름이 태양의 인접 구역에 가면 구름 외곽이 밝게 변하는 현상

실버 라이닝을 구현한 엔진들이 많지 않다

Silver Lining 구현구름 레이어의 알파를 이용하여 구름 이미지의 외곽선을 추출

Silver Lining외곽선과 Mie Scattering 과 계산함

Silver Lining합성 : Sliver Lining 수치로 자연스럽게 조절 가능

태양위치에 따른 구름 색 변경[ 시간 ]

밤 , 아침까지의 구름의 색 자동 변경

Support Time of DayMMORPG 프로젝트라면 Night 에 대한 로직을 강화현재로써는 Star 텍스쳐를 블랜딩 하는 것까지 ..

Support to RT Cubemap And Event SH

렌더타겟으로 하늘만을 큐브맵으로 만든다 .하늘 큐브맵 이미지는 Lighting 계산에서 물이나 Frenel 에사용되고 SH 화 된 데이터는 GI Ambient 요소에 쓰이게 된다 .

Support to RT Cubemap And Event SH

물론 실시간은 아니고이벤트 방식으로 SH 계수화해서 사용한다 .실시간이 아니기 때문에 정확도는 약간 떨어진다 .

맵을 로딩하거나 이벤트시간에SH 화 시켜 Ambient Color 로 사용함상수 Ambient Color 는 더 이상 사용하지 말자

Support to RT Cubemap And Event SH

구현

Volumetric Light Scattering on a Highly Animated Scene in Real Time(nvidia GPU Gem3)

Support to Light Shafts(AKA Godray)

태양 빛 산란을 만들자기본적인 이론은 NVIDIA 문서를 참조해서 만들었다 .

구현스크린 공간의 태양 이미지를 방향성을 갖는좌표 오프셋으로 여러 번 찍는 방식

그러나 어려웠던 점은 Z 버퍼도 검사해야 하고스크린 영역도 판단해야 제대로 된 차폐가 가능하다 .경험적으로 이를 위해 선형 Z 버퍼를 사용하는 것이 좋다 .

구현 시 문제점구름은 이미지인데 .. 어떻게 판단할까 ?

일단 구름을 흑과 백으로 추출한 렌더 타겟을차폐 텍스처에 더해주는 방식으로 해결

태양을 추출하는 버퍼를 만들어 ( 스크린 스페이스의 ¼ 크기 ) 구름 텍스쳐를 일단 차폐하고 뎁스 버퍼에서 추가로 차폐한다

구현 시 문제점

Support to Light Shafts(AKA Godray)

LightFrameworkPost Processing

| Re-Construction of Color Pipeline |

Framework | 컬러파이트라인의 재구성 |Manet | SkyLab | Re-Construction of Color Pipeline | Building Emissive Glow Pipeline

컬러 파이프라인의 재구성왜 크라이시스나 언리얼로 만든 게임은 색이 깨끗이 잘나오는데 구세대 엔진에서만든 게임은 색감이 죽는 걸까 ?

HDR 라이트맵이나 HDR 톤맵핑의 차이일까 ?

이것 말고도 감마 공간에서의 Lighting 계산에서의 차이도 있다 .

구세대 엔진들 대부분은걍 선형공간에 대한 개념이 없다 .

프레임버퍼는 선형 공간에서 계산하고 있는데 ,우리가 화면에 보고 있는 최종 결과물이나 텍스쳐들은 감마공간

GPU Gems 3 권 24.1

텍스쳐 레벨 (감마공간 )

Lighting and Material Processing( 선형공간 )

HDR Tone-mapping( 선형 ->감마 공간 )

Post Color Processing (감마 공간 )

컬러 파이프라인디자이너가 포토샵으로 만들어 내는 텍스처는감마가 적용된 텍스처

텍스처를 선형공간으로 바꾼다 .

Lighting 계산은 모든 이미지가선형공간에 있다고 판단하고 계산

감마 보정을 하는 이유는 주어진 대역폭 내에서 최대한의 화질을 보여주기 위해서 ..

컬러 파이프라인하다보니 문제가 있었다 .

선형공간에서 RGBM 의 라이트맵 색 영역을 32Bit 버퍼가 버티질 못하고 손실 .

컬러 파이프라인하다보니 문제가 있었다 .

선형공간에서 Color Grading 을 했는데 , Color값 손실 발생

컬러 파이프라인이렇게 해결 했음

텍스쳐 레벨 (감마공간 )

Lighting and Material Processing( 선형공간 )

HDR Tone-mapping( 선형 ->감마 공간 )

Post Color Processing (감마 공간 )렌더 타겟을 16F 포멧으로

순서를 잘 지켜야 한다

결과컬러 파이프라인 문제점 수정하고 그

실패

성공

LightFrameworkPost Processing

| Building Emissive Glow Pipeline |

Framework | Lighting Solution |Manet | SkyLab | Re-Construction of Color Pipeline | Building Emissive Glow Pipeline

Atmosphere Env.Solution

발광 텍스쳐를 추룰해서 렌더타겟에 그리고 블러링해서 합성하는 과정

아름다운 예광탄이나 이펙트를 만들고 싶었다 .

Glow PassHDR 상에서 일정한 LDR 이상의 컬러는 어느 정도의 Emissive 의 효과를 얻을 수 있으나 , 실제적으로 특정적이고 한정된 범위를 조절하기 어렵다 .

원하는 곳에 블러링을 하고 싶어서 Glow Pass 를 만들었다 .

Image From Un-real3

Image From Un-real3

Building Emissive Glow Pipeline

MRT ColorOut Value 추가

MRT 버퍼 추가 ½ 사이즈

Normal Emissive Glow

Lens FlareEmissiveGlow

Post ProcessGlow Blur

LensFX

Emissive Texture 에 일반 이미시브 ,렌즈 플레어 이미시브를 나눈다 ( 기준 알파 값의 유무 )

Emissive Glow Pass

이미시브 텍스쳐 전체를 렌더링Normal Emissive Glow Pass

구현하고 싶었던 것Anamorphic Lens Flare Effect 와일드 스크린 영화에 맞게고안된 렌즈가 Anamorphic Lens 이며 그 렌즈에 flare 가 나타나면 독특한 형태를 띄게 된다

구현하고 싶었던 것스타트랙 , 트랜스포머등 영화에서 주로 사용되며 ,게임엔진에서는 Cysis2,3 가 대표적으로 지원한다

Implement of Anamorphic Lens flare LensFX 용의 이미시브의 추출된 패스 ( 알파값으로 추출해서 렌더링 )

아직 AfterEffect와 같은 툴을 사용한 CG 에 부합되진 않는다Implement of Anamorphic Lens flare

이미시브의 가중치를 만들어서 , 각 이미시브의 가중치가 다르므로 Flare 의 길이도 다르게 줄 수 있다

Implement of Anamorphic Lens flare

최종 구현Full Emissive Glow Pipeline(Basic+LensFX emissivePass)+ Anamorphic Lesn flare + Chromatic Aberration Lens Effect

LightFrameworkPost Processing

Screen Space EffectPost Processing

Screen Space Ambient OcclusionScreen Space Sub ScatteringScreen Space DecalScreen Space GIETC..

이미지 포스트 프로세싱 이펙트로아래 내용을 써보니깐 괜찮았다 .

장점화면 중심으로 효과를 처리하기 때문에 ,질 좋은 효과를 빠르게 표현 할 수 있다

단점RenderToTexture 를 기반으로 하기 때문에 ,메모리를 많이 소모한다Deferred Rendering 방식이 아니면 ,사용이 거의 불가능하다

장단점

최근의 Screen Space Effect 는 많은 부분이 Deffered Rendering 의 요소인 Screen Surface Normal 과 위치그리고 선형 z 버퍼를 이용

구현

CrysisScreen Space Effect 가 다른 게임에서 쓰인 사례

Gears of War2Screen Space Effect 가 다른 게임에서 쓰인 사례

Deferred 의 시작

ViewSpace Normal Surface Normal

게임브리오 2.X 버전은 Deferred Rendering 이 지원되지 않는다 !!!!

SSAOVew-Space Normal, Position Map/Depth Map 지원을 받아 SSAO 구현

SSAO

SSAO 적용

중첩되는 오브젝트가 있을 경우 함몰된 부분이광원효과를 덜 받게 된다 .

Screen Space Global Illumination스크린 스페이스에서 모든 물체가 발광한다 전제한다 .스크린 노멀과 뎁스 버퍼를 이용해 프레임버퍼의 컬러를 계산한다 .

Screen Space Global Illumination

SSGI 적용

화면상에 나타나 있는 모든 오브젝트들은 빛을 반사하여 발광한다 .

Screen Space Global IlluminationSSGI 는 프레임버퍼의 색을 스크린 서페이스 노멀을 사용해 인접된 색을 섞어줍니다

SSGI 적용

HDR Tone mappingPost Processing

Tone Mapping 은 엔진을 개선하는데 있어서 가장 중요하게 여겨지는 요소 중 하나

HDR Image 를 모니터로 표시하기 위해 출력 가능한 휘도 범위의 LDR(0~255) 로 바꾸는 과정입니다

Linear Tone Mapping 의 단점은 색 영역의 제한이 생긴다

경험상 추천 하는 방식은 Reinhard 방식과 Filmic 방식의 톤 맵핑의 혼합방식입니다

DirectX와 GameBryo 가 대표적으로 Linear Tone Mapping 을 채용

Tone Mapping 비교 Reinhard’s 방법으로 Color 영역을 더 많이 지킬 수 있다

Linear Tone Mapping Reinhard’s Tone Mapping

Gamebryo(MidKey:0.72,BloomScale:0.5*0.5,Dlight Mul:100)

Gamebryo(MidKey:1.0,BloomScale:0.5*0.5,Dlight Mul:100)

UnitedHDR(MidKey:0.72,BloomScale:0.5*0.5,Dlight Mul:100)

UnitedHDR(MidKey:1.0,BloomScale:0.5*0.5,Dlight Mul:100)

그런데 어째 좀 어두웠다 .그래서 Filmic Tone Mapping 의 추가 채택영화에서 사용하는 필름 커브를 이용합니다

Uncharted 2 에서 처음 개발CryEngine 3.4.0 버전에 채택

Image From Un-charted

Image From CRY EN-GINE

+ Filmic 방식

Reinhard 방식 Reinhard 방식 + Filmic 방식

Reinhard 방식

+ Filmic 방식Reinhard 방식

Linear Tone색이 날아가다

Reainhard Tone색은 지키는데 밝은 곳이 밝은 느낌이 아니다

Reainhard + Filmic색 영역을 지키면서밝은 곳은 밝게 ,암부도 단계가 풍부하다

Color GradingPost Processing

Image From Un-real3

영화에서는 후반 색 보정은 당연하게 사용

Look Up Texture 를 이용한 Color Grading 은 Post Effect 로서의 색 보정 역할 뿐만 아니라 개별 사물이나 캐릭터에도 적용이 가능

Actor 의 Shader Code 마지막에 Look Up Texture 관련 함수만 적용해주면 완성

게임에서는 Look Up Texture 를 이용해서 빠르게 적용합니다기본 텍스쳐는 RGB값을 컨버팅한 UV좌표에 정확히 자기의 Color 를 가지고 있는 상태

추가 텍스쳐 제작 없이도 Look Up Table 만 만들어 놓으면 다양한 색의 사물이나

몬스터 , 이펙트를 다량으로 생성할 수 있음

대량 생산도 가능

Valve 방식소스 엔진의 경우 헤머 툴에 포함

룩업 텍스쳐는 포토샵으로 작업해도 되지만 베가스나 에프터이펙트로 작업을 하는게 효과적게임 환경 구석구석을 돌아다니면서 맞춰야 하니깐

다른 툴 이용

적용 결과

Bleach BypassPost Processing

[ 라이언 일병 구하기 ]을 통해 대중에 알려진 필름 기법

Bleach Bypass낮은 채도와 강한 콘트라스트로 인해 실사보다 더한 샤프니스가 두드러진다

컬러 무드등 여러가지 컬라 조정기능In Game

Bleach bypass = 0.0 Bleach bypass = 1.0

Bokeh DOF Without VTFPost Processing

카메라로 Depth Of Field 를 적용하면 렌즈에 따라 Bokeh 가 발생합니다

Bokeh DOF게임 브리오에서 제공하는 선형 DOF 는 차세대에서 쓰기 좀 그렇다

버텍스 펫치를 쓰지 않고도 Bokeh 를 지원한다포커스는 기본 스크린 서페이스의 중심이며 , 포커스 영역을 지정할 수 있다

구현

http://youtu.be/LQrRB3zUICc

영상

Pseudo Lens FlarePost Processing

Image From BattleField3(EA,DICE)

태양이나 라이트의 렌즈 플레어는 전통적으로 게임의 환경을 꾸미는 역할을 담당

VS

구현 방식 비교스프라이트 기반 렌즈 플레어

- 명시적으로 배치 할 수 있다- 언제나 정적인 모습으로 비현실적으로 보인다

물리 기반 SS 렌즈 플레어

- 비용이 스프라이트 기반 렌즈

플레어에 비해 비싸다- 현실적이고도 , 이미지와 복합적으로 사용 할 수도

있다

Downsample + 임계 값 Flip horizontally + vertically 수평 뒤집기 + 수직 Generate lens flare features 렌즈 플레어 기능을 생성 Upscale + modulate with a 'dirt' texture + blend with original image 고급 + 는 ' 흙 ' 질감으로 조절 + 조화를 원본 이미지와 함께

구현 방법

Add Chromatic Halo Ring Add Dirty Lens Surface

영상

Anti AliasingPost Processing

지금까지 구현된 것은 루카츠아츠에서 드미트리기 제안한 DLAAMSAA 를 지양하고 Shader AA 를 구현한다

FXAA

Directionally Localized Anti-AliasingPost Processing

다른 관점에서 안티 알리아싱(GDC 2011 Dmitry Andreev, LucasArts) 에서 소개가로 세로 높은 주파수의 엣지를 샘플링 하여 블러링 한다

구현

Directionally Localized Anti-Aliasing Without Anti-Aliasing

Optimizing SectionPost Processing

GameBryo Default Shader 보다 훨씬 많은 일들을 하고 , 고급 조명효과를 제공한다

GameBryo Default Shader 보다 무겁다

Shader Optimizing

Shader Optimizing가장 부하가 심한 라이팅 계산의 Skipping

픽셀 라이팅 스피킹

Vertex Shader 에서 기본라이팅을 계산( 대신 좀 넓은 영역으로 ) 0.5*N dot L+0.5

라이트맵의 일정 명도 이하의 값과 리얼타임 쉐도우의 영역을 추출

픽셀 쉐이더에서의 라이팅 계산

블랙영역을 라이팅 스키핑 영역을 지정

Diffuse Light

요약BRDFWrapped DiffuseFrensnelTransiucency Material

Ambient LightHemisphere LightingSpherical Harmonics From IBLSpherical Harmonics From Point Cloud

Light MappingDirectional LightmapHDR Lightmap

FrameworkManetSkyLabRe-Construction of ColorEmissive Glow

Post ProcessingScreen Space EffectHDR Tone mappingColor GradingBleach BypassBokeh DOF Without VTFPseudo Lens FlareDLAA

물리기반 라이팅 모델사용

결론 정적 ,동적 SH,Hemi 시스템으로엠비언트 라이팅 시스템 강화Sub Surface Scatter-

ing/SSSSS 산란기법 사용최신 라이팅 솔루션에 근접한 라이트맵 구현마네 , 스카이랩등 미들웨어급 프레임 웍 구현으로 모듈간 연결 고리 구축부분적 디퍼드 시스템 채용과 컬러 재 구축 ,HDR톤 맵핑 구축으로 인한 차세대 컬러 구현

결론

“We Can Do It”

References

Wrap diffues : http://blog.stevemcauley.com/2011/12/03/energy-conserving-wrapped-diffuse/ http://engineroom.ubi.com/energy-conserving-wrapped-diffuse/

Normal Map : http://www.ozone3d.net/tutorials/bump_map_compression_p5.php http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_EfficientSelfShadowedRadiosityNormalMapping.pdfBRDF : Background: Physically-Based Shading (Naty Hoffman): http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_a_notes.pdfPractical Implementation of Physically-Based Shading Models at tri-Ace (Yoshiharu Gotanda): http://renderwonk.com/publications/s2010-shading-course/gotanda/course_note_practical_implementation_at_triace.pdfCrafting Physically Motivated Shading Models for Game Development (Naty Hoffman): http://renderwonk.com/publications/s2010-shading-course/hoffman/s2010_physically_based_shading_hoffman_b_notes.pdfPhysically-based lighting in Call of Duty: Black Ops: http://advances.realtimerendering.com/s2011/Lazarov-Physically-Based-Lighting-in-Black-Ops%20(Siggraph%202011%20Advances%20in%20Real-Time%20Rendering%20Course).pptxMicrofacet Models for Refraction through Rough Surfaces:http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdfhttp://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/http://seblagarde.wordpress.com/2011/08/17/hello-world/

SH : http://developer.amd.com/media/gpu_assets/Tatarchuk_Irradiance_Volumes.pdf http://www2.ati.com/developer/gdc/D3DTutorial10_Half-Life2_Shading.pdf

References

Directional Light map : http://www.decew.net/OSS/References/sem_ss06_07-Independant%20Explanation.pdf기타 : http://maddieman.wordpress.com/2009/06/23/gamma-correction-and-linear-colour-space-simplified/ http://www.slideshare.net/leemwymw/gamma-and-linear-colorspace

기술 구현 및 협력버티고우 게임즈 고경석 책임연구원artmouse@hotmail.com

http://twitter.com/artmouse_ko