오늘은 계획한 최적화를 하나하나 해보았다.
다른 작업을 끝내고 마지막에 마무리를 할게 있어서 끝은 아니지만 어느정도는 끝났다.
아틀라스
사용한 UI들을 아틀라스에 묶어주었다.
미리미리 해둘걸 이라는 생각이 드는 작업..
스태틱 배칭
움직이지 않을 물체들을 배칭 스태틱으로 두어 스태틱배칭을 사용했다.
스태틱 배칭을 사용한다면 씬이 시작되기 전에 동일한 매터리얼을 쓰는 오브젝트들을 CPU에서 연산을 통해 합친 하나의 메쉬로 만들어 드로우콜을 한번에 처리하는 방식이다.
하나로 만든 메쉬를 메모리에 올려두고 쓰기 때문에 메모리를 더 사용한다.
GPU 인스턴싱
GPU 인스턴싱도 배칭의 한 종류인데,
스태틱 배칭이 CPU가 메쉬를 새로 만들고 GPU가 만든 메쉬를 렌더링하지만 GPU인스턴싱은 오브젝트들의 트랜스폼 정보를 별도의 버퍼에 담고 GPU는 이 버퍼와 원본메쉬를 가져다가 여러오브젝트를 한번에 처리한다고 한다.
이 처리를 GPU에서 하기 때문에 GPU에서 메시를 구성하는 오버헤드나 메모리 이슈로 자유롭다.
스태틱 배칭 vs GPU 인스턴싱
스태틱배칭과 GPU인스턴싱에 다 포함된다면 우선순위는 스태틱 배칭이다.
한국 사이트엔 정보가 많이 없어서 해외사이트를 조금 돌아다녔는데
GPU 인스턴싱을 사용했을때 스태틱 배칭보다 더 많은 CPU 작업이 발생하는 경우가 있었다고 한다.
즉, 일부 플랫폼에서는 스태틱 배칭이 더 나은 결과를 얻었다.
스태틱 배칭은 같은 매터리얼을 공유하는 다른 메쉬를 위해 만들어졌고,
GPU인스턴싱은 많은, 동일한 메쉬에 적합하며 동적인 배칭에도 효과적이라고 하는데 그냥 해외사이트의 댓글일뿐이고 실험은 해보지 못했다.
나는 같은 매터리얼을 쓰는 오브젝트들이 많아서 겹치면 스태틱 배칭으로 처리가 될테니 스태틱 배칭과 GPU인스턴싱에 체크 해두었다.
오클루전 컬링
카메라(시야)에 보이는 오브젝트들만 렌더링 되도록 오클루전 컬링을 적용했다.
카메라의 Far Clip Plane을 낮춰서 시야 거리를 좁혔다.
그에 따라 시야 뒤에있는 오브젝트들은 오클루전 컬링때문에 렌더링 되지 않는다.
가짜 그림자
모바일에서 가장 부담스러운게 그림자 처리인데, 실시간으로 렌더링 되는 그림자를 없애고
가짜 그림자를 넣어 처리했다. 몬스터와 npc, 보스에게도 가짜 그림자를 심어주었다.
라이트맵 굽기
설정을 잘 못해서 그림자들도 이상하고 뒷쪽 라이트맵은 구워지지 않아서 다시 해야하긴 하는데,
확연하게 줄어든 배치수를 볼 수 있다.
메쉬 합치기
Mesh Combiner | Modeling | Unity Asset Store
메쉬들을 하나로 묶어준다.
지금 처리 해야할게 물을 만들고 메쉬를 합치고 라이트맵을 구워야하는데 아직 물 작업을 안해서 뒤로 미뤘다.
한번 써봤는데 정말 유의미하게 배치수가 줄어들어서 기대중이다.
정적인 오브젝트들이라면 쓰는것이 좋을거같다.
내일 작업
원래 계획한 마무리 날짜가 오늘이였는데 마무리를 못해서 아쉽다.
완성 되지도 않았는데 급하게 마무리 하는것보다 한 3일정도 더 써서 완벽하게 마무리를 하고 동영상 작업에 들어가야겠다.
일단 최적화와 시네머신 이후에 처리해야했던 버그들과 수정할 부분에 대해서 내일 다 작업을 마치고
맵 전체에 물을 만들고 메쉬를 합쳐서 라이트맵을 굽고 끝낼 예정이다.
3일 이라고 생각하고 있지만 최대 7일까지라고 생각하고 작업을 해야겠다.
'개발일지 > Unity 개인 포트폴리오 개발일지' 카테고리의 다른 글
new 포폴 27일차 / 패트롤 로직수정, 버그수정, 쉐이더 그래프로 간단한 물 만들기 (2) | 2022.08.03 |
---|---|
new 포폴 26일차 / 여러가지 작업들, 보스 패턴 수정 (0) | 2022.08.02 |
new 포폴 24일차 / 시네머신 작업 마무리 (0) | 2022.07.31 |
new 포폴 23일차 / 시네머신 작업 (0) | 2022.07.30 |
new 포폴 22일차 / 옵션 , 미니맵, 사운드 작업 (0) | 2022.07.29 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!