Loading...
2017. 12. 14. 09:11

Dark Secrets of Shader Development

지인분께 추천받은 문서기도 하고 제목이 재미있어서 한번 번역해봄. 내맘대로 번역이니 원문보는걸 강추!! 개인적인 내용도 좀 추가. 제목 : Dark Secrets of Shader Development or What Your Mother Never Told You About Shaders. 셰이더 개발의 흑막 또는 당신의 어머니가 셰이더에 대해 당신에게 절대 말해주지 않은 것. 개요 ● 셰이더란 무었인가? - 셰이더 컴파일 과정 ● 셰이더 최적화 - 특정 하드웨어에 국한되지 않는 셰이더 최적화 - ATI 하드웨어에 국한되는 셰이더 최적화 ● 버텍스 셰이더 최적화 ● 픽셀 셰이더 최적화 셰이더란 무었인가? ● 셰이더는 그래픽 하드웨어에서 버텍스와 픽셀엔진을 컨트롤하는 마이크로 프로그램. ● DirectX에..

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메가가 넘는 엄청난 녀석이다.엄청나게 많은 애니메이션을 하겠지 뭐....유니티에서 애니메이션 ..

2017. 2. 28. 09:37

Tiling와 Offset을 활용한 2개의 압축텍스처 최적화

알고있기로는 압축텍스처를 쓸 경우 aos는 2의 승수로, ios는 걍 무조건 2의승수 정방으로 해야 한다.그래서 aos는 가장 가까운 2의 승수, 120x500 이면 128x512로 변환되지만 ios는 512x512가 된다. aos와 ios버전의 텍스처를 따로 관리할 게 아니라면(사실 이건 프로젝트가 커질수록 좀 힘듬..)처음부터 텍스처 관리를 잘 해줘야한다. 우선적으로 생각해야할 부분이 aos에서 ETC2를 사용할까 말까에 대한 결정이다.ETC2 자체로는 ETC1을 대체하기 위해 나온 개량형이다.게다가 용량도 작고 알파까지지원된다!!!.그런데왜 고민을 해야하는 걸까?우선 모든 aos폰이 etc2를 지원하는것이 아니기 때문이다.etc2는 open gles3.0에서 돌아간다.그렇다면 그 es2.0 버전에서..

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

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