유니티(Unity) 사용되지않는 에셋 메모리 해제 (Resources.UnloadUnusedAssets, 메모리 누수 관련)Resources.UnloadUnusedAssets 함수를 사용하여 유니티에서 사용되지않는 에셋을 언로드할수있습니다. 전체 게임오브젝트 계층(스크립트 컴포넌트를 포함)을 탐색하여 에셋에 도달하지못하면 해당 에셋은 사용되지않는것으로 간주됩니다. 현재 씬이나 게임에서 더 이상 참조되지 않는 리소스들을 명시적으로 해제하여 메모리 누수를 방지하기위해 사용할수있습니다. https://docs.unity3d.com/ScriptReference/Resources.UnloadUnusedAssets.html스크립트 실행 스택은 검사되지않습니다. 따라서 스크립트의 스택 내에서 참조되는 에셋(Asset..
유니티(Unity) 게임 개발에서 메모리 관리(씬 전환, 가비지 수집) 참고 유니티 메모리 관리에서 씬전환과 가비지 수집(GC) 사용 예시 유니티 라이브 스페셜(메탈릭 차일드 출시 기념 한대훈님의 프로젝트 소개)31분 40초 GC.Collect(0, GCCollectionMode.Forced);https://youtu.be/kPfiROl7iag
유니티 게임 최적화 기술문서 모음유니티 성능 최적화 튜토리얼https://unity3d.com/kr/learn/tutorials/topics/performance-optimization Learn game development w/ Unity | Courses & tutorials in game design, VR, AR, & Real-time 3D | Unity LearnFree tutorials, courses, and guided pathways for mastering real-time 3D development skills to make video games, VR, AR, and more.learn.unity.com 유니티 최적화 전문가 팁 문서 https://create.unity.com/..
유니티(Unity)에서 Debug.DrawRay 함수를 사용하여 디버깅 Ray 표시하기Debug.DrawRay 함수를 사용하여 특정 시작점(start)에서 방향(dir)으로 색상(color)의 선을 표시합니다.https://docs.unity3d.com/ScriptReference/Debug.DrawRay.html 이 오브젝트의 위치에서 로컬 축 z 방향으로 길이 10의 빨간색 선(ray)을 표시합니다.
skinned mesh renderer 게임 오브젝트의 인스턴싱 실외 씬 작업에서 건물, 나무, 잔디와 같은 오브젝트에 대해 GPU 인스턴싱을 사용하면 드로우콜을 낮출수있다. 하지만 캐릭터등의 SkinnedMeshRenderer 오브젝트는 스키닝(skinning)이 CPU에서 계산되고 하나씩 GPU로 제출되기때문에 일반적인 방법으로 인스턴싱을 사용할수없다. 만약 씬에 수많은 캐릭터가 존재한다면 그것은 막대한 양의 애니메이션 계산과 함께 높은 드로우콜 수치를 초래할것이다. 유니티에서는 이러한 한계에 대하여 CPU 비용을 절감하고 GPU 인스턴싱을 보강할수있는 방법을 제공한다. (현재는 root motion, attachment, animation events를 지원하며(transition, animatio..
유니티 최적화 GPU 인스턴싱(instancing) GPU 인스턴싱을 사용하면 다중으로 복사된 동일한 메시의 오브젝트(인스턴스)를 한번에 렌더링하여 드로우콜 수치를 낮추고 렌더링 퍼포먼스를 향상시킬수있다. 씬에서 반복적으로 사용되는 건물, 나무, 기타 오브젝트에 사용할수있다. 아래 예에서 씬에 게임 오브젝트를 생성하였다. 게임 오브젝트를 여러개 복사하면 batches의 수치가 증가한것을 확인할수있다. 재질의 쉐이더가 gpu instancing을 지원한다면 재질에 enable GPU instancing 속성이 표시된다. 유니티에서 기본적으로 제공하는 쉐이더인 standard, standardSpecular, mobile diffuse, mobile bumped등이 gpu instancing을 지원한다. 예..
유니티 게임 그래픽 최적화 주제 모음 프러스텀컬링 오쿨루젼컬링 정적 배칭 유니티에서 정적배칭(static batching) 사용하기 동적 배칭 유니티에서 동적배칭 사용하기(dynamic batching) GPU인스턴싱 유니티 GPU 인스턴싱(instancing) vsync CombineMeshes함수 유니티에서 CombineMeshes 함수를 이용하여 배칭하기 LOD(level of detail) 유니티에서 LOD 그룹 설정하기 라이팅기법 라이트맵 gpu스키닝 라이트프로브 리플렉션 프로브 텍스처 압축 파티클최적화 렌더링파이프라인(빌트인, URP, HDRP) 유니티의 렌더링 파이프라인(built-in, SRP, URP, HDRP) 포워드렌더링, 디퍼드렌더링 안티 엘리어싱 유니티 안타 엘리어싱(anti-al..
유니티(Unity)의 오쿨루전 컬링(occlusion culling)과 프러스텀 컬링(frustum culling)https://docs.unity3d.com/Manual/OcclusionCulling 오쿨루전 컬링(occlusion culling)은 다른 오브젝트에 의해 가려진 오브젝트가 카메라에서 보여지지않을때 해당 오브젝트 렌더링을 불능화시키는 기능으로 드로우콜을 감소시키고 게임의 퍼포먼스를 향상시킬수있습니다. 오쿨루전 컬링은 3D 컴퓨터 그래픽스에서 자동으로 일어나지않습니다. 왜냐하면 대부분의 경우 카메라에서 가장 먼 오브젝트가 먼저 그려지고 더 가까운 오브젝트들은 그 위에 그려지기때문입니다(오버드로우) 프러스텀 컬링(frustum culling) 오쿨루전 컬링은 프러스텀 컬링과 구별됩니다...
유니티(Unity)에서 충돌 jitter를 개선하기 위한 물리 속성(physics)https://docs.unity3d.com/Manual/class-PhysicsManager.htmlBounce Threshold충돌한 두 콜라이더 오브젝트의 상대속도가 이 값보다 작으면 바운스를 일으키지않습니다. 이 값은 zitter를 개선할수있으며 너무 낮은 값으로 설정하는것을 권장하지않습니다.Default Contact Offset콜리전 감지 시스템이 충돌 접촉을 발생하기위해 사용하는 거리를 설정합니다. 값은 양수를 사용하고 0에 너무 가까운 값을 사용하면 jitter가 발생할수있습니다. 두 콜라이더의 거리가 접촉 오프셋 값(contact offset value)의 합보다 작을때만 충돌 접촉을 발생시킨다. 기본값..