16
UNITY3D 로 3D 로로 로로로 로 로로 로로 로로로 로로로

딥 다크 던전 그래픽 작업기

Embed Size (px)

Citation preview

Page 1: 딥 다크 던전 그래픽 작업기

UNITY3D 로 3D 게임 만들기딥 다크 던전 그래픽 작업기

Page 2: 딥 다크 던전 그래픽 작업기

더 이쁘게 해보자그냥 3D 모델 불러와서배치하는 걸로는 약간 모자라

Page 3: 딥 다크 던전 그래픽 작업기

REALTIME VSBAKED

Page 4: 딥 다크 던전 그래픽 작업기

텍스트

REALTIME VS BAKED

Page 5: 딥 다크 던전 그래픽 작업기

텍스트

GI : GLOBAL ILLUMINATION▸ 물체에서 반사된 빛이 다른 물체를 밝힘을 묘사하는 것 .▸ 고급진 그래픽 표현의 기본

Page 6: 딥 다크 던전 그래픽 작업기

텍스트

BAKED LIGHT MAP▸ 미리 명암을 계산해서 텍스쳐로 만들었다 런타임에 불러와서 쓰는 방식▸ GI 해상도 무제한 ( 미리 계산하니까 !)

▸ 모델의 UV 가 팔레트에 접혀있는 문제는 Generate Lightmap UV 체크로 해결▸ 근데 움직이는 오브젝트의 그림자 표현이 불가능

Page 7: 딥 다크 던전 그래픽 작업기

텍스트

REALTIME SHADING▸ 실시간 그림자 표현 !

▸ GI 표현 불가능: 던전을 매번 생성하므로 Precomputed Realtime GI 를 사용할 수 없음

Page 8: 딥 다크 던전 그래픽 작업기

텍스트

그래서 뭘 골랐나요 ?

▸ GI 는 매우 매력적인 광원 표현 .특히 폐쇄된 공간에서 더더욱 매력적▸ 그런데 절차적 맵 생성을 하므로 실시간 GI 가 불가능▸ 광원이 횃불 등으로 한정된 던전 환경에서는실시간 그림자가 GI 보다 더 중요하다고 판단▸ 추후 더 밝은 환경의 던전을 추가할 땐 Baked 방식을 고려할 것

Page 9: 딥 다크 던전 그래픽 작업기

FORWARD VSDEFERRED

Page 10: 딥 다크 던전 그래픽 작업기

텍스트

FORWARD RENDERING▸ 광원 A 에 대한 오브젝트 1 을 그림▸ 광원 B 에 대한 오브젝트 1 을 그림▸ 광원 A 에 대한 오브젝트 2 를 그림▸ 광원 B 에 대한 오브젝트 2 를 그림▸ …

▸ 이렇게 여러 빛에 대해 오브젝트를 겹쳐 그리는 방식완성된 이미지

Page 11: 딥 다크 던전 그래픽 작업기

텍스트

FORWARD 를 써봤더니…▸ 영향을 받는 라이트 갯수가 늘어나면 무한정 연산량이 증가함▸ Unity3D 에서는 일정 갯수 이상 라이트가 늘어나면 Vertex lit 방식으로 전환하는 방법으로 성능 저하를 억제▸ 그러나 Vertex lit 방식은 오른쪽과 같이 매우 보기에 안 좋음

Page 12: 딥 다크 던전 그래픽 작업기

텍스트

DEFERRED RENDERING▸ 일단 오브젝트를 전부 다 그리면서 픽셀의 깊이와 방향을 기록▸ 이후 후처리 단계에서 명암을 표현

Page 13: 딥 다크 던전 그래픽 작업기

텍스트

DEFERRED 를 써봤더니…▸ 이미 화면이 나온 상태에서 후처리로 명암을 처리하므로 광원이 늘어나도 큰 성능 저하가 없음▸ 추가적인 후처리를 적용해도 성능 저하가 적다▸ 다만 , 광원 여럿에 영향받는 화면상 면적이 늘어나면 마찬가지로 성능을 먹는다▸ 기본적으로 별 거 안 해도 후처리 단계가 필요하기 때문에 일정수준 이상의 성능을 요구함▸ Vertex lit 을 전혀 사용하지 않는다는 점도최저사양 상승에 기여▸ 결과적으로 최저옵과 최상옵의 격차가 줄더라

Page 14: 딥 다크 던전 그래픽 작업기

텍스트

결론은 DEFERRED RENDERING

▸ 무제한 광원효과라니 넘나 매력적▸ 성능을 아끼려면 초대형 광원은 자제하는 쪽으로▸ 저사양에서 좀 힘들어지는 게 문제지만일단 내 맥북에선 잘 돌아감▸ MSAA 가 불가능 -> FXAA 를 쓰면 됨▸ 디퍼드 지원 안하는 매터리얼들은 ? -> 유니티가 알아서 포워드로 돌림▸ 하옵에선 포워드로 내보내는 것도 괜찮을 듯

Page 15: 딥 다크 던전 그래픽 작업기
Page 16: 딥 다크 던전 그래픽 작업기