728x90

유니티 엔진 (Unity Engine) 141

유니티 그래픽스 최적화 - 8.텍스처 (Texture)

. . 8. 텍스처 (Texture) ​ 8-1 인트로 텍스처는 주로 픽셀쉐이더 단계에서 사용. 텍스처 값 샘플링 > 최종컬러 반영. (Vertex Texture Fetch 기법은 논외) 참고 : 텍스처 사용은 아래 참고 https://youtu.be/-6iquaC0Hf4 ​ 8-2 대역폭 (Bandwidth) 텍스처 병목 = 메모리 대역폭에 종속( Memory Bandwidth ) 이미지 데이터 사이즈가 커지면 대역폭 문제 발생. 프로세서가 한 번에 가져올 수 있는 데이터 크기 한정. ​ 모바일 기기 더욱 이슈. 전력소모, 물리적으로 작아서 쿨링 미미, 발열 문제. 그래서 대역폭이 작게 설계. CPU, GPU 뿐 아니라 메모리도 발열과 전력 소모에 큰 영향. 쓰로틀링(Throttling, Thermal..

유니티 그래픽스 최적화 - 7.GI (Global Illumination)

. . 7. GI (Global Illumination) ​ 라이트와 그림자는 연산이 비싸기 때문에 라이트맵과 라이트 프로브 등 미리 연산하는 솔루션들을 적극 활용, 절약하면 좋다. GI 적용 가능. 광원이 태양광 하나로 출발해도 Direction 라이트 영향, 튕겨서 들어오는 Indirection 라이트 영향도 받음. 어떤 지점은 Direction 영향은 막히고, Indirection 영향만 받기도. https://docs.unity3d.com/kr/current/Manual/LightMode-Baked.html ​ 이 현상을 글로벌 일루미네이션(Global Illumination) 라이트맵과 라이트프로브를 이용해서 GI현상까지 미리 연상하여 기록해놓을수 있다. 실시간으로 GI를 처리하려면 많은 연산 ..

유니티 그래픽스 최적화 - 6.그림자 (Shadow)

. . 6-1 쉐도우맵 ​ Mesh Renderer 컴포넌트의 Cast Shadows 항목은 오브젝트의 그림자가 다른 오브젝트에 드리우는지, Receive Shadows 항목은 오브젝트에 다른 오브젝트의 그림자를 받는지. ​ 정적인 오브젝트는 라이트맵을 활용. 라이트맵은 GI(7장)에서 다룸. ​ 유니티는 쉐도우맵 기법을 사용. 그림자의 깊이를 저장하는 버퍼 생성, 픽셀쉐이더(Pixel Shader)에서 깊이를 비교하는 과정 거침. 넓은 영역은 여러 구역으로 나누기도 함(Cascade) 계단 현상을 없애기 위해 여러 번 샘플링, 필터링 처리 등. 렌더링 비용 중 많은 부분을 차지. ----- 셀프 쉐도우 (Self Shadow) 오브젝트 자기 자신의 그림자를 드리우는 기능. ----- ​ 쉐도우맵의 원리..

유니티 그래픽스 최적화 - 5.라이팅 (Lighting)

. . 라이트의 모든 걸 다루진 않고, 성능에 포커싱해서 유의점들을 다룬다. 라이팅 전반은 유니티 매뉴얼 https://docs.unity3d.com/kr/current/Manual/LightingOverview.html ​ 5-1 포워드 렌더링 vs 디퍼드 렌더링 ​ 카메라 컴포넌트에서 포워드 렌더링과 디퍼드 렌더링 두 가지 방식 중 선택 가능. Rendering Path 에서 Forward, Deferred 선택. Use Graphics Settings 로 두면 포워드 혹은 디퍼드를 강제하지 않고 디바이스마다 다른 렌더링 파이프라인 설정 가능. Edit > Project Settings > Graphics 선택, GraphicsSettings 인스펙터 오픈. Tier Setting 에서 플랫폼 티어별..

유니티 그래픽스 최적화 - 4. 드로우콜과 배칭 (Draw Call & Batching)

. . 4. 드로우콜과 배칭 (Draw Call & Batching) 4-1 드로우콜 (Draw Call) 수많은 병목지점이 있지만, 드로우콜이 병목인 경우가 많다. 최적화를 많이 간과하기 때문. 01) 드로우콜의 이해 CPU가 GPU에 오브젝트를 그리라는 명령을 호출하는 것. 한 프레임에서, 오브젝트 하나를 그릴 때 여러가지 정보들이 CPU에서 GPU로 전달됨. (매시 데이터 ,텍스쳐, 쉐이더, 트랜스폼, 블렌딩 셋팅 등등) DATA > Storage(HDD,SDD,SD) > CPU Memory > GPU Memory 플랫폼에 따라 VRAM(GPU Memory)은 자동으로 관리됨. 가비지는 VRAM 에서 제거하고 올리는 등 관리가 됨. GPU는 그려야 하는 상태 정보를 담는 테이블을 가지고 있고 텍스처..

유니티 그래픽스 최적화 - 2.렌더링 파이프라인

. . 책 읽으면서 대략적인 내용 정리. 이번엔 렌더링 파이프라인입니다. 기본적인 내용들이고 이미지 설명이 많아서 정리는 심플합니다. 자세한 설명은 책 본문에서 확인해주세요. ​ 2. 렌더링 파이프라인 (Rendering Pipeline) 화면에 그려지는 과정, Graphics API 워크플로우 2-1 GPU의 의미 . 2-2 게임 루프 게임루프를 크게 묶어 보면 다음과 같다. - 리소스 생성 및 초기화 (Initialization) - 갱신 (물리, 입력, 로직, AI, 네트워크, 애니메이션 등) - 렌더 - 종료 전 해제 (Decommissioning) 스크립트 라이프사이클 플로우차트 (Script Lifecycle Flowchart) https://docs.unity3d.com/kr/2019.1/M..

유니티 그래픽스 최적화 - 1.최적화 개요

. . 유니티 리드 에반젤리스트 오지현님의 "유니티 그래픽스 최적화 스타트업" 오랜만에 다시 읽기 시작해서 내용 정리 중입니다. ​ 이전에 3챕터 다뤘고 이번엔 1챕터. 그냥 읽고 넘겨도 될 부분이 많아서 1챕터 정리는 짧네요. 제가 읽으면서 스터디 목적으로 간략하게 정리한 포스트입니다. 자세한 설명은 책 본문에서 확인해주세요. 1. 최적화 개요 최적화의 가장 중요, 병목 제거 1-1 최적화 이해 1-2 렌더링의 이해 슈렉의 법칙 기술 발전과 시간의 지남에 따라 렌더링 시간이 더 늘어남. 2001년 슈렉 1 렌더링 500만시간 데이터 크기 6TB 2004년 슈렉 2 렌더링 1000만시간 2007년 슈렉 3 렌더링 2000만시간 2010년 슈렉포에버 렌더링 4500만시간 슈렉1 데이터 크기 6TB 드래곤 ..

유니티, 업스케일 샘플링(Upscale Sampling) 데모

. . 유니티 최적화 서적에서 다룬 업스케일 샘플링 데모를 돌려봤습니다. 관련 내용 포스트는 아래. https://wonsorang.tistory.com/475 유니티 그래픽스 최적화 - 3.병목 . . 유니티 리드 에반젤리스트 오지현님의 "유니티 그래픽스 최적화 스타트업" 오랜만에 다시 읽기 시작해서 정리를 해봤습니다. 왜 3챕터부터냐... 는 정리 하고싶은 챕터 먼저 다시 읽어서요. 다른 챕터도 다시.. wonsorang.tistory.com GUI 해상도는 그대로 렌더링 하고, 인게임 렌더 텍스처를 줄이면서 최적화와 룩앤필을 둘 다 취하는 트릭인데요, 아래 깃헙에서 데모 프로젝트를 받을 수 있습니다. https://github.com/ozlael/UpsamplingRenderingDemo ozlae..

유니티 그래픽스 최적화 - 3.병목

. . 유니티 리드 에반젤리스트 오지현님의 "유니티 그래픽스 최적화 스타트업" 오랜만에 다시 읽기 시작해서 정리를 해봤습니다. 왜 3챕터부터냐... 는 정리 하고싶은 챕터 먼저 다시 읽어서요. 다른 챕터도 다시 읽고 정리해보겠습니다. ​ 제가 다시 볼 목적으로 간략하게 정리한 포스트입니다. 자세한 설명은 책 본문에서 확인해주세요. 3. 병목 ( Bottleneck ) 최적화의 가장 중요, 병목 제거 3-1 병목의 이해, 측정, GUI 병목 탐지 보통의 최적화 목록 - 매시 버텍스 줄이기 - 텍스쳐 크기 줄이기 - 가벼운 쉐이더 - 드로우콜 줄이기 - 게임 로직 최적화 - 물리 연산 줄이기 - 기타 등등... 프로파일링을 잘 해야한다. 최적화의 처음은 게임의 타깃 기기를 결정하는 것. 주 타깃 기기와, 시..

[Unity] 유니티 엔진 사용 팁 몇 가지

두괄식 요약 먼저 정리합니다. 1. Playmode Color tint 설정 2. Playmode 에서 수정한 Component, Editmode 에 적용하기 3. Inspector, Project 등 기본 윈도우 탭 추가하기. 4. 오브젝트들 선택 저장/불러오기 5. 선택된 오브젝트 활성화/비활성화 1. Playmode Color tint 플레이 모드로 전환되면, 유니티 GUI 의 배경 컬러를 바꿀 수 있는 옵션. 눈에 띄는 컬러로 조금만 설정해놔도 플레이모드인지 인지하기가 쉽습니다. 플레이 모드 걸어둔 상태로 씬 수정했다가 데이터 날려먹는 일을 방지해줍니다. ​ Edit > Preference 의 Colors 탭에서 수정합니다. ​ 2. Playmode 에서 컴포넌트를 수정한 경우. Playmode ..

728x90
반응형