👨🏻💻 몰입할 줄 아는 개발자 박진혁입니다.
📧 Contact: [email protected]
🌐 Github: https://github.com/criel2019
Yesterday is History, Tomorrow is a Mystery, but Today is a gift
위의 대사는 영화 <쿵푸팬더>에서 “우그웨이”라는 캐릭터가 주인공 “포”에게 한 말입니다.
저는 쿵푸팬더를 70회 이상 시청했을 정도로 이 영화를 좋아합니다. 그런 제가 쿵푸팬더에서 가장 인상 깊었던 장면을 꼽으라면 위에서 언급한 대사가 나온 장면일 겁니다.
지나간 일은 역사가 되고, 미래는 아직 알 수 없으니 과거와 미래를 너무 걱정하지 말고 자신에게 주어진 오늘을 소중히하라는 이 격언은 저에게 있어 깊은 인상을 안겨줬습니다. 이러한 격언에 따라 저는 현재에 몰입하여 살아가는 것으로 과거에 연연하지 않으며, 미래를 겁내지 않고, 현재를 소중히 하도록 노력하고 있습니다.
이력서
- 아래 파일을 클릭하시면 다운받아서 보실 수 있습니다.
- 지금은 회사에 재직중이라 인적사항이 들어있는 이력서는 숨김 처리했습니다.
경력 기술
풀 렌더링 최적화
- 필요성
- 풀은 게임의 진행과는 거의 관련이 없지만 퀄리티에 큰 차이를 주는 중요한 작업이다. 문제는 풀을 렌더링하게 되면 인스턴스가 조금만 많아져도 많은 부하를 가지고 오기 때문에 이를 최적화할 필요성이 있었다.
- 해결방법
- 유니티에서 제공하는 DrawMeshInstancedIndirect라는 API를 통해서 드로우콜을 직접 관리하는 방법을 통해서 GPU Instancing(Procedural instancing)을 통해 많은 인스턴스를 그림자를 포함하여 10번이 안되는 드로우콜로 처리를 할 수 있었음.
- 인스턴스가 많아지게 되면 그림자에 대한 부하도 커지는데 멀리있는 풀에 대해서도 그림자를 항상 업데이트 해줄 필요가 적어서 유니티 쉐도우맵 시스템에서 쉐도우 맵을 커스텀으로 생성하고 해당 부분을 기존 쉐도우 맵 대신 캐싱해서 사용하는 것으로 성능을 아낄 수 있었음.
- LOD에 따라서 빌보드 처리, 바람 기능, 거리에 따른 컬링, 프러스트럼 컬링 들을 GPU 단에서 처리할 수 있게 컴퓨트 쉐이더, Vertex/Fragment shader를 통해서 작업하여 빠르게 처리할 수 있게 하였음.
- 이 작업으로 얻을 수 있는 메리트
- 그림자를 렌더링할 때와 LOD에 따라 달라지는 마테리얼을 제외하면 랜더 스테이트를 변화시키지 않기 때문에 다른 방법들에 비해서 압도적으로 많은 배칭으로 드로우콜을 아낄 수 있으며 일반적인 어셋을 구매해서 사용할때는 커스텀이 불가능한 경우가 있는데 직접 구현하였기 때문에 필요에 따라서 커스텀도 할 수 있음
- GPGPU를 이용하여 렌더링하기 때문에 비교적 간단한(분기가 일어나지 않는) 작업을 GPU로 옮겨서 계산하기 때문에 풀 이외에 CPU에서 발생하게될 부하를 상당부분 아낄 수 있음
게임 데이터 로딩 최적화