Loading...
2017. 6. 27. 17:30

MaterialPropertyBlock

50x50 같은 물체가 있다고 가정하자.이들 물체의 색은 상황에 따라 몇가지 색상으로 변경될 수 있다.즉, 하나의 물체의 색상이 빨간색, 파란색, 노란색 등 바뀔 수 있다는 것이다.총 2500개의 물체를 그리더라도 색상이 다 같다면 배치는 한번만 이루어 진다.하지만 2500개의 물체가 다 다른 색상을 가진다면 배치는 물체의 수만큼 이루어 진다. !테스트에 사용된 리소스와 소스파일은 가장 아래에 있습니다.! 테스트 1. 단순하게 2500개의 물체 뿌리기Test CodeGameObject[] objects;void Start(){if (sphere){float colorOffset = square * square;objects = new GameObject[square * square];for (int xi..

2017. 4. 11. 07:40

Mesh 최적화

5.5.1p3 기준 하나씩 테스트를 해 보자.Mesh Compression : 이 값을 높이면 메쉬 파일 크기가 줄어든다.실제로 어떻게 차이가 나는건지 테스트 해 보자.Mesh Compression : Off Mesh Compression : High 뭔가 모습이 좀 달라진거 같기도 하고 아닌거 같기도 하고...겹쳐서 보면 좀 움찔움찔 바뀌는 것 같음. 버텍스 갯수라던지 파일의 용량은 1도 안 줄어들었음.. 뭘까 분명 줄어든다고 했는데... 그런데 모양은 바뀐단 말이지....여기 링크를 읽어보면 이렇게 적혀 있다. "게임 파일에서 적은 공간을 차지하도록 메쉬와 임포트된 애니메이션 클립을 압축할 수 있다.메쉬압축을 하려면, 메쉬를 선택 후 인스펙터에 있는 Mesh Compression을 Low, Mediu..

2017. 3. 31. 15:16

Dynamic Batching이 효율적일까?

배칭이란 무었인가?드로우 콜(DC)을 줄이기 위한 방법중 하나로 크게 정적배칭과 동적배칭으로 나뉜다. 그렇다면 DC란 무었이고 왜 줄여야 하는가?DC란 그냥 CPU가 GPU에게 메시를 그려달라는 명령이다.문제는 DC 함수를 호출할 때 마다 CPU의 부하가 발생하는 작업이 이루어 진다는 것이다.그림발췌. ARM. The Architecture for the Digital World. API Level Optimizations. 위 그림을 보면 DC가 많을수록 오버헤드와 프로세싱의 비율이 커진다.즉, DC를 적게 호출할 수록 오버헤드와 프로세싱이 줄어든다고 생각할 수 있다.그렇다면 오버헤드와 프로세싱은 무슨 작업인가?이에대한 내용은 아래 ppt의 일부에서 잘 설명되어 있다.참고 : Unite Seoul 20..

유니티 텍스처

원본 글 : Unity Texture compression and optimization개인 필요에 의해 발번역한 글 입니다.원문을 보시길 강력 추천합니다. 유니티 게임을 만들 때 어느 텍스처 압축 포맷이 가장 좋은지 일반적으로 궁금해 한다.일반적인 기준은 "디스크에서의 크기, 차지하는 메모리, 퍼포먼스"다.유니티 엔진은 많은 옵션을 가지고 있다 : ETC1, ETC2, DXT3, DXT5, 기타등등.어떻게 선택해야 할까?다른 사람들이 어떻게 포맷을 선택하는지 알기 위해 최적화 트릭에 대해 간단히 알아보자. 첫번째로 "텍스처가 GPU에서 얼마만큼의 메모리를 가질까?"를 이해해야 한다.- 근래의 많은 엔진들은 텍스처를 메모리에 있는 것과 같은 포맷으로 디스크에 저장하여, 텍스처가 필요로 하는 메모리와 같은..

2017. 3. 4. 12:03

animation 최적화

케릭터에 붙어있는 애니메이션이 많을수록 케릭터 로딩이 느려진다.한 스테이지에 케릭터가 10개가 나온다고 가정하고, 각 케릭터가 가져야 할애니메이션 갯수가 영웅일 경우 20개, 적군일 경우 10라고 할 경우,애니메이션 용량이 3메가라 가정해서 영웅 5명의 애니메이션은 5*20*3 = 300메가....헐...적군 5명은 5*10*3 = 150메가....헐....이건 좀 말이안되는듯..내가제대로 계산한거 맞음??? 후덜덜..... 그래서 애니메이션 최적화를 시도해보자!이미 이 주제에 대해서는 많은 분들이 좋은 팁을 알려주셨으니 참고하면 되고내가 할 이야기는 scale에 관한 내용이다. 최적화를 할 타겟 파일을 보자.5메가가 넘는 엄청난 녀석이다.엄청나게 많은 애니메이션을 하겠지 뭐....유니티에서 애니메이션 ..

유니티에서의 메모리 관리.

유니티에서 사용하는 메모리는 3가지 종류의 영역이 있다. code영역유니티 엔진과 라이브러리, 게임코드가 컴파일 되어서 디바이스의 메모리 코드 영역에 로딩되게 된다.크게 최적화 할 필요가 없음. 코드 파일 용량이라고 해 봤자 어차피 얼마 안된다. Managed Heap 영역Mono(.Net Framework의 오픈소스버전)가 관리하는 영역.instantiated object, variable, new 키워드로 할당한 메모리, 들이 거주하게 되는 영역.Managed인 이유는 Mono Framework이 이 영역의 메모리를 할당하거나 해제하면서 관리하기 때문. 유니티 레퍼 참고 - 자동 메모리 관리오브젝트나 string 또는 배열이 생성될 때, 이를 저장하기 위해 요구되는 메모리는Heap이라고 불리는 중앙 ..

Unity sound setting

1. 자주 호출되고 짧은거 (3.5 이하)Decompress On Load, ADPCM 2. 자주 호출되지만 중간거Compressed In Memory, ADPCM 3. 거의 호출되지 않고 짧은거Compressed, ADPCM 4. 거의 호출되지 않고 중간거Compressed In Memory, Vorbis BGM, Ambient SoundCompression, Vorbis Quality : 100은 하지말것.적당히 70 권장.직접 들어보고 낮춰도 되는건 50정도로. Reference Link- Wrong Import Settings are Killing Your Unity Game- Unity Doc, Audio Clicp- Audio Clip-

gc.markdependencies

어느순간 gc.markdependencies 가 엄청난 렉을 유발한다.거의 대부분은 Resources.UnloadUnusedAssets() 함수 호출 때문.이 함수 자체가 많은 GCCollect 시간을 요구하는데 모바일 폰에서cpu 타임이 느려질 수 있다. 대신 수동으로 Resources.UnloadAssets("")을 사용하자.이 함수는 GC를 유발시키지 않는다. 이 함수를 실시간을 보증하지 않는다. 그래서 yield return 0과 같이 써주는 걸 권장한다.