본문 바로가기

분류 전체보기

(50)
텍스처 해상도 = 높이 * 너비 픽셀 총 개수= 해상도 예를 들어 RGB16 텍스처가 있다고 한다면 RGB 16비트 이미지는 각 색상 채널(Red, Green, Blue)이 16비트로 표현. 이것은 각 색상 채널이 2^16 (65,536) 가지의 서로 다른 색상을 표현할 수 있다는 것을 의미. 따라서 각 픽셀은 다음과 같이 데이터를 가지고 있음Red 채널: 16비트Green 채널: 16비트Blue 채널: 16비트그러므로 각 픽셀은 16비트 + 16비트 + 16비트 = 48비트의 데이터를 가지고 있다. 그리고 픽셀의 수와 비트의 상관 관계에 따라 전체 이미지의 데이터 크기를 계산할 수 있다. 만약 이미지의 해상도가 256x256 픽셀이라면, 전체 이미지의 데이터 크기는 다음과 같이 계산. 전체 이미지의 데이터 크..
그래픽스 퍼포먼스 최적화 전후 런타임 중에 3D 모델을 임포트 하는 프로젝트 진행 중, 300MB 크기의 모델을 임포트 하니 프레임 드랍이 너무 심함. 아무리 에디터에서 테스트 했다지만 게이밍 노트북으로 fps가 30까지도 떨어져버림. 그래서 최적화를 진행하게 됨. -최적화 전(FPS : 30 ~ 90) -최적화 시도 과정 가장 먼저 한 시도는 하위 오브젝트의 모든 메시들을 하나의 메시에 서브메시로 병합. 하지만 이 방법은 batches 는 물론이고 프레임 드랍도 그대로. batch가 어디에 영향을 받는지 테스트 해보니 머터리얼 수와 서브메시의 수에 영향을 받는 것을 확인. 그래서 머터리얼을 유지하면서 서브메시를 줄이기 위해 고민하다가 같은 속성 값들을 가진 머터리얼끼리 묶어 서브 메시들을 한번더 병합. 그러자 batches 1590..
Unity 3D 렌더링 최적화 및 fps 높이기 -batches수에 영향주는 요소 1. 서브메시 개수 2. 할당된 머터리얼 수 총 배치수 = 서브메시 개수 + 머터리얼 개수 이를 개선하면 렌더링 속도 개선. (단일 material사용하는 경우 다른 메시 및 서브메시를 통합하여 하나의 material을 적용하면 된다.) (CombineMeshes 메소드 사용) -머터리얼 front로 바꾸기 material.SetInt("_CullMode", (int)UnityEngine.Rendering.CullMode.Front); (테스트 결과 fps 의 향상)
Unity 알림텍스트 using UnityEngine; using UnityEngine.UI; public class Notification : MonoBehaviour { static GameObject notifyText, canvasObject, panelObject; public static Notification instance = null; public static Notification Instance { get { if(instance == null) { CreateText(); CreateCanvas(); CreatePanel(); instance = canvasObject.AddComponent(); } return instance; } } static void CreateText() { notifyText..
라이트맵 런타임 Import 주의할 점 런타임 중 라이트 맵을 임포트 하는 기능 구현 중. 에디터에서는 런타임 중에도 잘 임포트 되지만, 빌드된 프로그램에서는 임포트가 안되는 현상 발생. 수십시간 테스트 해 본 결과 정말 황당했다. 런타임 중에 빌드할 때, 그 씬에 라이트 맵이 구워졌던 흔적이 있어야한다. 라이트맵을 런타임 중에 라이트 맵을 씌울 대상 오브젝트 말고 아무거라도(나의 경우 기본 큐브) 라이트맵이 구워져있어야 Unity에서 빌드 할 때, 씬에서 Baked 라이트 맵 사용이 가능한 것 같다.
wsl 포트포워딩 및 도메인 연결과 인증서 발급 포트포워딩 나의 경우 iptime공유기 사용 중이므로 http://192.168.0.1/ 에 접속. 80 포트 열기.(인증서 발급을 위해서는 반드시 80포트 열어야함. http는 기본적으로 80포트 사용) 그 다음 도메인 생성 후 수정에 들어가서 ip연결. https://xn--220b31d95hq8o.xn--3e0b707e/ 내도메인.한국 - 한글 무료 도메인 등록센터 한글 무료 도메인 내도메인.한국, 웹포워딩, DNS 등 무료 도메인 기능 제공 xn--220b31d95hq8o.xn--3e0b707e (빨간색 네모 칸에는 public ip를 작성한다. 구글에 what is my ip 검색) (이 부분은 wsl 사용자만) wsl사용자는 추가적인 과정이 필요함. https://velog.io/@sangwo..
윈도우에서 리눅스 사용하는 법. wsl 1.PowerShell 접속 2. wsl --install
Unity Android 빌드 시 라이트맵 어두움 컬러 스페이스를 linear에서 gamma로 바꾼다.
Collection was modified; enumeration operation may not execute. 에러. 리스트 요소 제거 시 주의 할점 보통 foreach문에서 해당 컬렉션을 읽는 도중 수정을 시도할 시 발생하는 에러이다. 수정전: foreach (TMP_InputField input in list) { if (input == null) { list.Remove(input); continue; } inputDict.Add(input.transform.name, input); } 첫번 째 수정: for (int i = 0 ; i < list.Count ; i++) { TMP_InputField input = list[i]; if (input == null) { list.RemoveAt(i); continue; } inputDict.Add(input.transform.name, input); } 하지만 이렇게 작성하면 문제가 발생 할 수 있..
다중 스레드에서 딕셔너리 동시 접근시 에러 InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct. InvalidOperationException: 비동시 컬렉션을 변경하는 작업에는 독점 액세스 권한이 있어야 합니다. 이 컬렉션에 대한 동시 업데이트가 수행되어 컬렉션의 상태가 손상되었습니다. 컬렉션의 상태가 더 이상 올바르지 않습니다. 서로 다른 스레드에서 딕셔너리에 동시 접근하면 해당 에러가 발생한다..