
youtu.be/8l9fEjiC2qE In Unity Profiler 2020.1부터는 프로파일러와 에디터랑 분리하여 확인할 수 있음. GPU의 경우 Legacy쉐이더만 확인이 가능. 안드로이드와 iOS도 안됨.. In Memory Profiler In Frame Debugger 왜 Batching이 깨지는지 알려줌. 정리 Unity Profiler에 나오는 Tag에 익숙해지자. 모바일에서는 TotalMemory보다 Bandwidth가 더 중요한 척도이다. XCode에는 Instruments라는 툴이 있음. GPU Vender에서 제공해주는 Profiling툴이 있음. 안드로이드의 경우 탈옥해야가능... 프로파일링을 할때 최저사양을 설정 최저사양에서 현재예산을 측정 남은 버젯을 기준으로 최적화 전략을 선..
youtu.be/tT9LS53HRx4 ScriptCode 작성팁 ObjectPooling 다수 동일한 객체를 자주 생성/삭제가 발생하면 GC의 동작이 많아지게되고 이는 곧 전체 CPU사용량에 부정적인 영향을 주게된다. Object Pool을 통해 게임내에서 사용할 객체를 미리 충분한 개수만큼 생성하였다 필요한 순간 꺼내서 사용하고 끝나면 Pool에 반납하는 시스템. Pool의 크기결정이 중요하며, Pool의 크기를 넘는 개수를 사용해야되는 상황에 대한 보조적인 조치가 필요하다. Sciprtable Object 게임에서 변하지 않는 데이터를 위한 클래스를 작성하는 경우 Monobehaviour보다 Scriptable Object를 상송하여 객체를 작성하는것을 추천함. Mono에 비해 메모리 사용량도 적고 ..

youtu.be/znfyEhpsXkU Galaxy GameSDK (samsung) 사용목적 모바일디바이스의 상태정보 온도 발열상태 bottleneck 실시간으로 성능/품질 조절 급격한 성능저하 회피 적용예 동적변환 퀄리티요소 Shadow distance Foliage LOD Animation LOD Target Framerate Feature Parameter (변하는 양) Scaling Impact Shadow Distance 80~50 CPU 0~10% offloading Foliage LOD 1~0.8 GPU 0~5% offloading Animation LOD 0~2 CPU 0~3% offloading GPU 0~1% offloading Target Frame Rate 60~57 CPU 0~5% ..
간략히, 디바이스상태(정상/쓰로틀링직전/쓰로틀링상태, CPU delay, GPU delay)에 따라 targetFrameRate를 조절하거나 CPU/GPU level의 조정, LOD의 제어를 하게하는 기술 (삼성 디바이스에서만 가능..) 더보기 Adaptive Performance Samsung (Android)은 현재 Android 10을 실행하는 다음 Samsung 장치를 지원합니다. 모든 구형 및 신형 Samsung Galaxy 모델 Samsung GameSDK 3.2+가 설치된 장치를 지원합니다. 가변 주사율 은 현재 Galaxy S20에서만 지원됩니다. [메가시티프로젝트 다운로드] Unity 패키지 관리자를 통해 어댑티브 퍼포먼스를 설치한 후 디바이스에 프로젝트를 빌드하면, Unity에서 삼성 ..

youtu.be/C0UNzBRUr6Q arm과 unity가 협력하여 arm 프로세서의 멀티코어 프로세서 성능을 활용하는 방법 컴파일러 기술을 활용한 ARMv8 Architecture에 타게팅한 최적화기술 버스트(burst) 컴파일러란? unity 앱용 LLVM을 사용해 IL/.NET 바이트코드의 하위세트를 최적화된 네이티브코드로 변환하는 컴파일러 기술. 본래 job과 DOTS와 연동되도록 디자인 되어있음. 범용컴파일러가 아닌 특정한곳에 사용할 컴파일러. 데이터지향설계를 지향. [BurstCompile] struct MyJob : IJob { public NativeArray Input; public NativeArray Output; public void Excute() { for(int i=0; i

youtu.be/d_0uDfNEOk8 프로파일러에서 graphics.blit/device.present 항목으로 대기하는 부분은 gpu boundary 즉, gpu job이 끝날때까지 cpu가 대기하고 있다고 보면 된다. 프로파일러에서 calls가 높고 ms가 높다면, cpu에서의 draw call이 높다고 볼 수 있다. Gpu 프로파일링 Fillrate = 화면 픽셀수 x 프래그먼트 쉐이더 복잡도 x 오버드로우 gpu의 경우 유니티 프로파일러로는 측정이 불가함. 최근 디바이스의 경우 해상도가 hd 이상으로 올라가는 경향이므로 dpi를 조절하는게 의미가 있음. 프로파일링하다가 dpi를 줄였을때 의미있는 결과가 나오면 gpu 병목인지를 가늠해볼 수 있다. 오버드로우 병목의 경우는 보통 파티클이 많아져서 겹..
다음은 기본 제공 파이프 라인과 범용 RP의 차이점을 요약 한 것입니다. 주로 셰이더 코드 차이에 중점을 둡니다. Subshader 블록에서“RenderPipeline”=”UniversalPipeline”태그 사용 URP는 다음 "LightMode"태그를 사용합니다. UniversalForward – 포워드 렌더러로 개체를 렌더링하는 데 사용됩니다. ShadowCaster – 그림자 투사에 사용 DepthOnly – 씬 뷰의 깊이 텍스처를 렌더링 할 때 사용되는 것 같지만 게임 내에서는 사용되지 않습니까? 일부 렌더러 기능은이를 사용할 수 있습니다. Meta – 라이트 맵 베이킹 중에 만 사용 Universal2D – 포워드 렌더러 대신 2D 렌더러가 활성화 된 경우 사용됩니다. UniversalGBuf..
ShadowCaster 셰이더가 그림자를 드리우려면 "LightMode"= "ShadowCaster"태그가 있는 패스가 필요합니다. Unlit 셰이더와 Lit 셰이더 모두 이 작업을 수행 할 수 있지만 그림자를 드리우는 동안 UniversalForward 패스에서 처리하지 않는 한 그림자를 받지 않습니다. 셰이더에는 "LightMode"= "DepthOnly"태그가 지정된 패스도 포함되어야합니다. 이 패스는 ShadowCaster와 매우 유사하지만 그림자 bias offset이 없습니다. URP에서 DepthOnly 패스가 무엇에 사용되는지 완전히 잘 모르겠습니다. 씬 뷰는 (셰이더 그래프의 씬 뎁스 노드에서 사용되는) 뎁스 텍스처를 렌더링 할 때 이것을 사용하는 것 같지만, 게임 뷰 뎁스 텍스처는 이 ..
- Total
- Today
- Yesterday