12
UNITY COOKBOOK SHOT BY. INS PART 17 게게게 게게게 #1

Unity cookbook 17

Embed Size (px)

Citation preview

Page 1: Unity cookbook 17

UNITY COOKBOOKSHOT BY. INS

PART 17게임의 화장법 #1

Page 2: Unity cookbook 17

그림자 처리 #1

게임에서의 그림자 표현은 개발자 입장에서는 표현이 힘들 수도 있습니다 .그 중 그림자를 표현하는 테크닉 중 하나인 ‘ Shadow Mapping’ 이라는 테크닉을 보겠습니다 .광원으로부터 닿지 않는 곳은 광원의 방향으로부터 그림자가 져버리는데 광원 방향으로부터 물체를 바라보는 시점으로‘Rander Target’ 을 심고 이후 그림자가 생기는 곳 ( 객체 ) 에 ‘ Texture Splatting’ 처리를 해버립니다 .대충 광원 방향에서의 대상 객체를 찍고 ( 스텐실 ), 그림자가 생기는 곳의 Texture 를 추가적으로 그려줍니다 .

( 1 / 10 )

# Shadow Mapping

Page 3: Unity cookbook 17

그림자 처리 #2

하지만 이러한 그림자 표현은 그림자가 그려질 객체가 다수개면 Render Target 이 처리하는 양도 다수 번 처리합니다 .이에 따른 최적화 기법이 있는데 그림자가 적용 될 객체를 그래픽 아티스트를 통해서 하나의 객체로 처리하게 되면한 번의 처리로 구현이 가능하게 됩니다 .

( 2 / 10 )

Capture !Render Target

Splatting 9x !

Page 4: Unity cookbook 17

빛의 산란

유니티에서의 표현되는 빛의 표현은 물체에 부딪혀 여러 방면으로 다시 튕겨져 나가는 빛을 만드는데여러 번 튕겨 생긴 빛은 점점 세기를 잃어 어두워집니다 . 저런 틈 사이에 광원이 산란된다면 마치 그라데이션 같은빛의 영향을 받게 되는 것이죠 .

( 3 / 10 )

# 산란광의 빛은 점점 감쇄된다 .

Page 5: Unity cookbook 17

GI (Global Illumination)

게임에서의 빛을 표현하는 테크닉은 더 존재합니다 . 카메라에서 빛 (Ray) 을 쏘아 계산하는 ‘ Ray Tracing’ 기법과 산란광의색상까지 고려해 라이팅을 표현하는 ‘ Radiosity’ 기법도 있습니다 . 이러한 전역 조명 렌더링 (Global Illumination) 으로부터더욱 우수한 게임 그래픽을 뽑아낼 수 있습니다 . 물론 유니티 내에서도 이러한 기능이 존재합니다 .

( 4 / 10 )

# Ray Tracing # Radiosity

Page 6: Unity cookbook 17

HDR (High Dynamic Range)

게임에서의 색상은 1,677 만개 색상을 표현 RGB8(LDR) 을 따르는데 , 색상의 표현 범위 (Dynamic Range) 를 높이고자색상당 16 비트 부동소수점으로 표현하게 됩니다 . 즉 장면의 휘도 값을 렌더링 파이프라인 전체에 유지하고 , 그 결과를디스플레이 장치에 출력할 수 있는 범위로 압축시키는 것이죠 . 이러한 HDR(FP16) 으로 인해 게임 상에서의 눈부심 효과와빛 번짐 효과를 볼 수 있습니다 .

( 5 / 10 )

Page 7: Unity cookbook 17

SSAO (Screen Space Ambient Occlusion)

빛이 닿지 않는 구석이나 그늘이 질 법한 곳에 명암을 덫칠하는 테크닉입니다 . 즉 , 깊이 값 (Z-buffer) 에서 조도를 산출하여음영 (noise) 을 추가하는데 이런 수행을 화면상에서 (Screen Space) 만 수행하여 최적화 효과까지 볼 수 있는 기술입니다 .실제 게임에서도 이 기술을 적용 하냐 안하냐에 따라 게임 퀄리티가 매우 바뀝니다 .

( 6 / 10 )

Page 8: Unity cookbook 17

DX11 Tessellation

Normal Map 을 이용해 가상 음영을 만들어 입체적인 효과를 볼 수 있긴 하지만 테셀레이션이라는 기술은 offset map 에 따라폴리곤을 쪼개 직접 튀어나오게 만들어 버립니다 . 눈 속임이 아닌 실제로 입체적이게 만들어 버립니다 .테셀레이션 기술은 dx11 이상부터 지원하며 유니티 내에서도 지원하고 있습니다 .

( 7 / 10 )

Page 9: Unity cookbook 17

라이트맵 (Lightmap)

Realtime 렌더링은 비용이 상당합니다 . 저사양 PC 나 모바일에서는 이를 해결하는 방법이 있는데 정적으로 렌더링을 하면됩니다 . Bake 를 할 객체의 static 을 ‘ Lightmap Static’ 으로 바꾸고 광원의 ‘ Baking’ 을 ‘ Baked’ 으로 변경합니다 .이후 ‘ Lighting’ 탭에서 ‘ Build’ 을 누르고 기다리면 음영과 산란광에 기준으로 텍스쳐가 변경되는 것을 볼 수 있습니다 .실시간 렌더링이 아니기 때문에 비용이 낮은 테크닉입니다 . ( 8 / 10 )

# 구워진 광원

Page 10: Unity cookbook 17

라이트 프로브 (Light Probe)

정적 렌더링으로 동적 (Realtime) 렌더링을 표현하는 테크닉이 있습니다 .‘Light’ ‘Light Probe Group’ 을 생성하면 구체가 서로 연결되는 링크가 나오는데 라이트맵 을 만들 때의 산란광을저 프로브에 담아두었다가 객체가 프로브 안에 지나가면 저장되어 있던 광원을 불러와 적용시켜줍니다 .난반사처럼 무한한 반사가 아닌 일정한 광원이기 때문에 비용 절감에 탁월합니다 . ( 9 / 10 )

# 라이트 프로브에 의한 광원

white

white

red

Page 11: Unity cookbook 17

리플렉션 프로브 (Reflection Probe)

마지막으로 ‘ Reflection Probe’ 테크닉을 배워보겠습니다 .‘Light’ -> ‘Reflection Probe’ 탭을 눌러보면 큐브 형태의 객체가 나오는데 큐브 안쪽에서 바깥쪽을 바라보는 여섯 방향의공간을 찍어 기록하겠다는 의미입니다 . 위 사진처럼 반사할 공간에 배치하고 반사 될 객체에 ‘ Reflection Probe Static’ 을줍니다 . 이후 프로브에서 ‘ Bake’ 를 누르고 반사시키고 싶은 객체의 ‘ Metallic’(shader) 을 조정해주면 반사되는 것을 볼 수 있습니다 .

( 10 / 10 )

# 반사되는 캡슐

Page 12: Unity cookbook 17

Thank You !