🙇‍♀️유니티 최적화

유니티 최적화 방법

package Manager
built-in
cloth, xr, vr, vehicles disable하기

edit
project settings
Audio -> DSP Buffer Size
버퍼크기가 크면 cpu time이 줄지만 오디오 지연시간 생김
리듬게임이면 best latency
보통best performance

Grphics
Always Included Shaders에서 안쓰는 쉐이더 삭제
Strip unused Post Processing Variants 켜기 안쓰는 후처리 쉐이더 삭제한거임

Physics->Settings
Auto Sync Transforms 체크 해제 (fixed update의 마지막 프레임에 몰아서 계산) 레이트레이싱같은 경우 체크필요
Reuse Collision Callbacks 체크하기 현재 프레임만 사용하고 놓아야됨

Player
안드로이드 -> Auto Graphics API체크 해제
체크하면 불칸, 오픈지엘용 모두 만들어버림
이거 무조건 체크해제 해야하는듯?
원하는 지피유 api설정해라

GPU Skinning을 CPU에서 GPU로 변경
GPU가 보통 널널함
Graphics jobs(Experimental) 체크하기

IOS설정
Memoryless Depth -> Automatic 설정
Accelerometer Frequency->Disabled설정
가속 변화율 설정의 한계를 막지말래요
보통 안하는게 나은듯

Shader Variant Loading Settings
한번에 로딩할 청크 사이즈에 한계를 줌
이건 작게 잡아도 필요한거 알아서 스왑핑해줌
스왑핑이 cpu time을 크게 안먹음
Default chunk size = 4
Default chunk count = 2
로 일단 설정하고 알아서 줄이던가 늘이던가 하셈

Optimization
Prebake Collision Meshes 체크하기
씬에 있는 매쉬의 물리 매쉬를 미리 구움
빌드 크기는 미미하게 증가하지만 실행속도가 빨라짐
Strip Engine Code 체크
Managed Stripping Level Minimal하면 어셈블리까지 다 넣는다?
Medium은 클래스나 타입 단위로
High는 필드 단위로 스트리핑
리플렉션을 쓰고있으면 못알아채니까 생각해야됨
링크 xml로 바꾸거나 해야됨
Optimize Mesh Data 체크 안쓰는 버텍스 채널을 날림, 런타임에 스왑핑이 일어나면 이미 날아가서 문제가 생김
Texture Mipmap Stripping 체크, 이것도 안쓰는 밉맵 날림
Stack Trace
플레이어 빌드에서는 Warning, Log는 None으로 설정
Log의 None은 로그가 안뜨는게 아니라 스택 추적이 사라짐. 스택 추적을 할 때 리플렉션이 일어나서 비용이 큼

Quality
Async Asset Upload
Time Slice = 4
Buffer Size = 8
텍스터 업로드 시간을 더 늘리고 gpu 병목을 줄인다. 한번에 많은 텍스처를 올린다고 생각하면 될듯

Time
Fixed Timestep = 0.333
물리처리가 빨라지면 게임의 반응이 달라짐
이거 엄청 늘리면 랜더링은 잘 되는데 물리가 밀리듯이 실행될수있음

Adressable
Enable Json Catalog 체크해제
메모리 차이는 없는데 Vson파일로 사용. 디시리얼라이즈가 빨라서 그런듯
Internal Asset Naming Mode을 Dynamic으로 설정가능하다. 이거 무조건해야됨. 어드레서블 명명에서 경로 없애줌
아니면 FileName으로 설정하자
Max Concurrent Web Requests를 16으로 설정.
Web Requests가 일대일로 필요해서 그런가보다(초반에 유니티에서?)
기기의 성능이 안좋다면 8까지 내려도 됨

Adressable Group에서 쉐이더 그룹이 있는지 봐야함
Shaders로 만들어서 하는게 좋다. 다른 그룹에서 사용하는 쉐이더를 명시적으로 정해주면 쉐이더가 중복돼서 로드가 안되고 쉐이더 그룹의 쉐이더를 쓴다.
그룹 클릭해서 인스펙터에 Asset Bundle CRC 를 Disabled로 설정가능하다. cpu time줄여줌 Include GUIDs in Catalog 체크 해제. GUID를 키값으로 사용가능한데 보통 안쓰느까 체크 해제하는듯.

에셋 점검
파티클 점검
파티클 시스템
Culling Mode 를 Pause하기
카메라에서 안보여진 파티클이 실시간 계산을 안하고 다시 봤을 때 다시 시작하게 하는거

Audio clip
Load In Background 체크
체크하면 오디오가 지연될수있음
Load type -> Decompress On Load하면 cpu의 일이 줄어듬
Compressed In Memory, Streaming을 하면 압축한상태로 로드, 압축 안하고 로드 -> 메모리를 젤 적게 듦.cpu time을 젤 많이 씀. 지연시간 발생 가능
Compressin Format을 PCM으로 하면 압축을 안해서 노래 퀄이 좋음. cpu를 사용안함. 메모리 사용이 높음.

랜더독?
윈도우는 윈도우에서 실행해야됨
가장 비용이 높은 쉐이더를 찾는데 사용한다. 그 쉐이더를 최적화하면 효율 높은 최적화가 된다는 원리.