이것저것 다해봤지만 딱히 큰 FPS개선은 없는 상황에서 GPU 애니메이션 인스턴싱을 시도해보았습니다 


GPU 애니메이션 인스턴싱은 아마도 ECS에서 사용되는 기법인것 같은데 굇수들이 에셋으로 만들어줬네요 


4



유니티에서 제공하는 기능을 기반으로 하고 있어서 무료 에셋도 있는것 같긴한데 URP 지원하는 녀석은 별로 없는 것 같아요 

어차피 보닌쟝 실력에서 직접 만들 수는 없으니 에셋 쓰는게 답인걸로 ㅎ


5



https://assetstore.unity.com/packages/tools/animation/mesh-animator-animate-massive-crowds-26009?srsltid=AfmBOorqpWnyaJlno8StaXDSz6VbF-1anyUUjqUFUi0SmnyBgu4Jyqxt



Mesh Animator - Animate massive crowds | Animation Tools | Unity Asset Store

Use the Mesh Animator - Animate massive crowds tool from Flick Shot Games on your next project. Find this & more animation tools on the Unity Asset Store.

assetstore.unity.com


이 에셋은 URP에서 돌아가긴하지만, 내용을 뜯어보면 cginc를 사용하고 있는 것으로 봐서는 built-in 셰이더 시절 기능을 일부 차용하고 있는 것으로 보여서 유니티가 SRP를 계속 바꾸고 있다는 점을 감안하면 장기적인 호환성에 대해서는 몰?루 상태입니당


1


하지만 빨리 첫게임을 출시하고 다음게임으로 넘어가겠다는 목표하에 움직이는 보닌쟝 입장에서는 나쁜 선택은 아닌 걸로....


대신 일전에 징징글에서 썼듯이 커스텀 셰이더를 쓰려면 셰이더를 수정해줘야 합니다 


어떻게 수정해야하는지 에셋 개발자가 매뉴얼에 친절하게 설명해두었지만 hlsl는 커녕 SRP도 잘 모르는 까막눈입장에서는 의미가 없는 가이드였고 ㅋㅋㅋ


10


챗지피티와 제미니에게 물어물어 바이브코딩으로 수정을 해보았지만 역시나 작동하지 않았습니다. URP가 계속 변경되고 있다보니 현재의 무료 LLM서비스로는 한계가 있는 게 아닐까 싶어요


별 수 없이 번들되어있는 lit셰이더를 사용해주었더니 기존에 툰 셰이더 사용하던 시절에 느껴지던 병아리들의 뽀송뽀송한 느낌이 없어져버렸네요 ㅠㅠ



0ebcc066b7826af323ef80f84780646d427be9d29a7cf0b37f6fa3e610391d51d6fd4b8fcee4716beb82b1

20


그래도 병아리가 우글우글 모여있는 보닌쟝 께임에서 효과는 확실했습니다. 딥 프로파일링 시에는 일단 안정화된 성능을 보여줬어요


0ebcc066b7826af323ef80f84780646d427be9d39a7bf2b37f6da3e610391d51b6a8b61462cba511642fd3


처음 로딩시에 스파이크가 왕창 발생하고 일단 로딩이 끝나면 그때부터는 안정적인 걸 볼 수 있습니다 


중반 이후에 스파이크가 2개 있긴한데 이건 tutorial기능을 호출했을 때 발생한거라 tutorial기능을 최적화하거나 빼버리거나 해야할 것 같네요 


프로파일러 상에서는 60fps가 어느정도 방어되는 것으로 나오지만, 딥프로파일링을 사용하지 않고 온 디바이스에서 NHN의 Game Package Manager로 측정했을때에는 18~20 fps 정도로 나왔습니다 제 체감상으로도 그 정도가 맞는 것 같네요. 프로파일러와 실제 기기의 오차가 생각보다 큰 듯?


20fps는 상용게임 수준에는 많이 부족하지만, 허접인 현재 보닌쟝 개발 수준에서 극한까지 짜내서 튜닝하지않는이상 30fps조차 너무나 높은 목표이기 때문에 아마 최적화는 이 정도에서 마무리하게 될 것 같아요 ㅎ


104


fake shadow는 적용해보고 싶었는데, 그러려면 셰이더에서 그림자부분 패스를 빼고 fake shadow를 추가해줘야 해서 셰이더 학습 이전엔 어려울 것 같아서 일단 보류하기로 했습니다. 셰이더 학습 일정을 땡겨볼까 고민하고 있긴한데, 운좋게 당초 계획과 달리 셰이더를 올해 공부하게 될 수 있으면, 그때 반영해봐야겠네요. 


아, 그리고 이 gpu 애니메이션 인스턴싱을 사용하면 용량이 늘어납니다. 아마 애니메이션 데이타를 gpu에 바로 쏴줘야하기때문에 그런 것 같은데 제 경우에는 동물당(7천~1만 tris) 10Mb~30Mb의 용량 증가가 있었네요. pc라면 문제없지만 모바일 타겟으로는 꽤나 심각한 문제이긴 한데 빠른 출시가 더 중요하니 일단 그냥 넘어가려고 해요


이 정도로 최적화 뉴비의 일지를 일단 마무리할까 합니다. 버그 잡으면서 추가적인 최적화를 할 수도 있을 것 같긴한데 5fps이상의 현저한 개선이 발생하지 않으면 뻘글이 될거라 추가적으로 최적화 관련 일지를 쓸 가능성은 낮아보이네요. 혹시라도 대박 팁을 찾아서 10fps이상 개선이 발생하면 추가하겠습니다 ㅎㅎ


허접 일지 봐주셔서 감사드리고 조언주신 분들&도와주신 분들 고마워요 ㅎㅎ


퓨어