전체

    [이펙트] 텍스쳐 최적화

    일반적으로 실무에서 TGA, PNG를 사용한다. TGA는 32bit로 저장하면 알파를 사용할 수 있다. (24bit는 알파 사용 불가능) PNG는 PNG24로 사용하고, (대체로, 언리얼에서 TGA를 사용하며 유니티에서 PNG를 사용한다) TGA보단 PNG 256x256 사이즈 기준으로 용량이 대략 25배 차이난다. (10kb < 250kb) 중요한 건 텍스쳐 포맷 형식 텍스쳐를 유니티로 불러오면 세팅이 중요하다. (1) Alpha Source 1. None - 알파를 사용하지 않는다. 2. Input TextureAlpha - 텍스쳐의 알파를 사용 3. From Gray Scale - 알아서 알파를 빼주는 기능 (2) Alpha Is Transparency - 이 기능을 체크하면 알파가 투명해진다. (..

    연습장.

    1. Screen.sleepTimeout = SleepTimeout.NeverSleep; 2. 스크롤안에 버튼이 들어가서 잘 안눌리는 경우가 발생한다. EventSystem 터치감도 조절private const float inchToCm = 2.54f; [SerializeField]private EventSystem eventSystem = null; [SerializeField]private float dragThresholdCM = 0.5f;//For drag Threshold private void SetDragThreshold(){ if (eventSystem != null) { eventSystem.pixelDragThreshold = (int)(dragThresholdCM * Screen.dp..

    프리팹 UI생성시 크기가 디바이스마다 다른 경우

    [문제]UI를 프리팹으로 만들어 스크립트상에서 생성하는 경우 (ex. 여러개의 버튼을 생성할 때) 디바이스마다 생성된 자식 오브젝트 스케일이값이 변경되는 문제가 생긴다. 예를 들어, 갤럭시S4에서 잘 보이던 버튼이 갤럭시노트5에서는 작게 나오는 경우가 발생한다. [해결 방법]Vector3.one을 사용한다. UI를 생성한 뒤 해당 버튼 스케일값을 Vector3.one으로 초기화해준다.

    유용하게 쓰이는 Mathf 함수

    Mathf.Abs(float f): 데이터 절대값 반환 Debug.Log(Mathf.Abs(-100));: 100 (결과값) Mathf.Clamp(float f, float min, float max): 최소값, 최대값 범위 내 데이터 반환: ※ 데이터가 1이고, 최소값 0, 최대값 10인 경우 1을 반환 for (int ii = 0; ii < 5; ii++){Debug.Log(Mathf.Clamp(ii, 1.0f, 3.0f));}: 1, 1, 2, 3, 3 (결과값) Mathf.PingPong(float A, float B): A값이 B값에 도달하면 -가 되고,: 0이 되면 다시 최대값까지 + void Update(){transform.position = new Vector3(Mathf.PingPong..

    Study #1

    셰이더란? 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수 셰이더는 정점셰이더(Vertex Shader)와 픽셀셰이더(Pixel Shader)로 나뉘며, 앞에서 정의한 내용은 픽셀셰이더(Pixel Shader)에 해당한다. 정점 셰이더(Vertex Shader) 3D 물체를 구성하는 정점들의 위치를 화면 좌표로 변환하는 것이다. (각 정점의 공간을 변환) 정점셰이더는 3D오브젝트를 구성하는 정점의 수만큼 실행되며, 정점의 위치를 3개씩 모으면 화면에 출력할 삼각형이 만들어진다. 만들어진 삼각형 안에 몇 개의 픽셀이 들어갈지 알 수 있게 하는 것이 래스터라이저(Rasterizer)다. 래스터라이저는 정점셰이더가 출력하는 정점의 위치를 차례대로 3개씩 모아 삼각형을 만들고, 그 안에 들어갈 픽셀들을 찾아낸..

    DirectX 파이프라인

    DirectX 파이프라인

    [DirectX 3D 그래픽 파이프라인]1단계 - 3D모델 구축 3D모델을 '로컬 좌표계' 에 띄우는 단계 (CPU) 렌더링 파이프라인 중 '로컬 스페이스' 에 해당한다. 2단계 - 가상 공간 배치 구축한 3D모델을 '월드 좌표계' 로 옮겨 하나의 장면을 구성하는 단계 (CPU) 렌더링 파이프라인 중 '월드 스페이스' 에 해당한다. 3단계 - 정점 단위 음영 계산 정점의 정보(좌표, 색상, 조명 등)를 변화시켜 물체를 다른 위치로 옮기거나 텍스쳐의 좌표를 바꾸거나 색상을 바꾸는 작업을 한다. (GPU) 4단계 - 정점의 증감 정점셰이더(Vertex Shader)에서 정점의 정보(Primitive)를 받고, 가진 정보를 이용해 정점을 증감시켜 새로운 도형 정보를 만든다. ※ Primitive 선, 원, 곡..

    코루틴(Coroutine) #1

    닷넷은 멀티쓰레드를 지원하고, 닷넷을 사용하는 유니티는 단일 쓰레드로 동작한다. 멀티쓰레드가 있는 코드는 버그 발생률이 높아지고, 멀티쓰레드간 교착 상태 경합 등 신경써야할 부분이 많아진다. 그렇다면 어떻게 멀티 태스킹을 손쉽게 구현할 수 있을까? 바로, 코루틴(Coroutine)을 사용해 멀티 쓰레드를 흉내낼 수 있다. '쓰레드를 사용하지 않고, 멀티 태스킹을 가능하게 한다.' 이게 어떻게 가능할까? 일반적으로 함수가 호출되고 끝나는 서브루틴 개념과 다르게 yield return을 사용해 해당하는 위치를 기억하고 다음 호출 때 그 곳부터 다음 부분을 실행할 수 있도록 하는 것이다. 그래서 여러 개의 코루틴을 동작시키고 각기 다른 시점에 yield가 반환되도록 한다면 마치, 여러개의 쓰레드가 동시에 동작..