전체 글 47

[Unity] Shader Graph Swizzle Node란 ?

유니티 Shader Graph 내에는 Swizzle이라는 노드가 있습니다. 예제들을 하나씩 따라서 구현해보는데 해당 노드가 어떤 역할을 해주는지 정확하게 알아보고 싶어 찾아보았습니다. 아래는 유니티 Docs 공식 설명입니다. 입력 벡터의 재정렬된 요소에서 새 벡터를 만듭니다. 이것을 스위즐링이라고 합니다. 입력 요소를 혼합하는 방법을 지정하려면 입력 마스크에 형식 지정 문자열을 입력하세요. 예를 들어 입력 요소의 순서를 바꾸려면 "wzyx" 또는 "abgr" 문자열을 사용합니다. 입력 마스크의 길이에 따라 출력 벡터의 크기가 결정됩니다. "잘못된 마스크" 오류는 입력 벡터에 존재하지 않는 하나 이상의 채널을 포함하는 입력 마스크 값을 나타냅니다. 예를 들어 입력 벡터의 x, y 및 z 요소를 사용하여 벡..

[Graphics] 노멀 맵(Normal Map)은 왜 파란색일까 ?

노멀 맵은 왜 항상 파란색으로 보여질까 ? 쉐이더를 공부하다 노멀 맵이 항상 파란색으로 보여지는 이유가 궁금해서 찾아보았습니다. 그 이유는 굉장히 간단했는데, 노멀 맵이 방향을 RGB로 표현하기 때문입니다. 방향은 벡터값을 사용하는데 벡터값은 -1 ~ 1 까지이며, 이 값을 컬러(RGB)값을 사용하여 표현합니다. 컬러 값은 0 ~ 1(0 ~ 255)사이의 값을 사용하는데 x값은 Red를 표현하고, y는 Green을 표현하고, z는 Blue를 표현합니다. 아래 이미지를 통해 설명하자면, 공간 좌표계 상에서 z값은 높이를 나타냅니다. 노말 맵 상에서 굴곡을 표현할 때 높이가 0보다 낮아질 수 없기에, z값은 항상 0 이상이 되며 벡터에서의 0은 RGB 에서는 127.5 가 되기에 항상 노말 맵은 파란색을 띄..

[Unity] Reflex

❗ Reflex는 매우 빠르고, 최소한이지만 완전한 Unity용 종속성 주입 프레임워크 입니다. GitHub - gustavopsantos/Reflex: Minimal dependency injection framework for Unity Minimal dependency injection framework for Unity. Contribute to gustavopsantos/Reflex development by creating an account on GitHub. github.com 🎯 Reflex 도입 목적 및 목표 저는 수년 동안 Zenject/Extenject를 사용했지만 CodeBase가 너무 컸고, 공개된 API가 너무 많아서 초보자의 학습 곡선이 가파르게 느껴졌고, 성능도 그다지 좋다..

[Unity] 2D URP 화면 굴절 쉐이더 구현해보기

완성 결과물 미리보기 사전 준비 Background(바다 배경) 이미지와 Mask 역할을 해줄 이미지를 아래와 같이 생성합니다. 2. Mask 이미지가 Background 이미지에 가려지지 않게, Sorting Layer를 지정합니다. (Add Sorting Layer를 통해 Mask 레이어를 추가해줍니다.) 3. Settings/Renderer 2D의 Foremost Sorting Layer 설정을 변경해줍니다. 쉐이더 구성하기 우선 쉐이더를 구성하려면, 쉐이더를 먼저 생성해야 합니다. 아래와 같이 Shaders 폴더 안에 Sprite Unlit Shader Graph를 생성해줍니다. Distortion Shader 구성하기 3D 환경에서는 아래와 같은 구성으로 Scene Color를 바로 사용할 수 ..

Unity,C#) 객체 지향 프로그래밍, 상속의 개념

위 사진을 잘보면 평소에 내가 쓰던 스크립트와는 다른 점이 하나있다. 바로 public class 스크립트명 : Monobehaviour를 쓰던 함수 클래스가 Bullet을 상속한다는 것이다. 상속이라는 개념은 2년전에 C++을 공부하면서 배웠던 개념인데 군대에 다녀오면서 다 까먹어 버렸다ㅋㅋ 군대에서도 공부를 안한건 아니지만 컴퓨터 사양문제, 환경문제로 핑계라고 댈 순 있지만 나름 열심히하긴 했지만, C++에 대한건 다 까먹어 버렸다. 그래서 요즘 골드메탈님 유튜브를 보면서 유니티를 공부하는데 C#을 기반으로 하는 유니티에서도 상속이라는 개념이 나오는걸 오늘에서야 알았다. C#을 공부한적이 없어서 골드메탈님이 알려주시는 함수들만 완벽하진 않더라도 알고있기에 C#에 대하여 자세히는 몰랐는데 객체 지향 프..

Unity) C#. Foreach문

나는 C#은 따로 공부한적이 없고 C++ , Windows API, C언어만 공부했기에 골드메탈님의 유니티 강의에서 foreach라는 구문을 처음봤다. 간단하게 설명해 주셨는데, foreach문은 프로그래머가 직접 처음과 끝을 입력해줘야하는 for문과 달리 알아서 배열의 처음부터 끝까지 반복해주는 구문이다. foreach문을 짤때는 foreach(자료형 변수명 in 배열) 이런식으로 짜줘야한다. 또 중요한건 배열만이 foreach문을 사용할 수 있다.

Unity) Ray 와 RayCast

Ray와 RayCast를 간단하게 정리 해놓으려 글을 쓴다. Ray란 지정한 위치에서부터 무한대로 발사되는 가상의 선이다. 게임속에선 보이지 않지만 Debug를 통하여 Ray를 확인할 수 있다. 보통 Ray를 사용한 후에 Ray에서 반환된 값을 찾기 위해서 RayCastHit 를 사용하는데 빨간 네모칸의 함수를 사용하면 Ray에 닿은 물체의 정보를 반환할 수 있다. 위의 예제에서 Physics.Raycast(ray, out rayHit, 100) 가 있는데 ray는 발사되는 ray를 넣어준거고, out rayHit가 있는데 여기서 out은 return의 기능을 수행하여 RaycastHit rayHit 로 선언된 rayHit에 ray와 닿은 값을 리턴해주는 것이다. 100은 ray의 최대길이이다.

Unity) Coroutine 함수란 ?

이번엔 코루틴 함수에 대해서 다뤄(?) 기록 해보려고 한다. 코루틴 함수라는 개념은 Unity 에서 엄청 중요한 개념인데 간단하게 말하자면 Invoke 함수의 기능을 한다고 볼수도 있다. 함수라는 개념은 보통 함수안에서 다른 함수를 호출해 그 함수를 실행후 다시 메인함수로 복귀하여 다시 메인 함수를 진행하는 식인데 코루틴 함수는 내가 지금까지 공부한 것과는 다르게 작동한다. 메인함수에서 호출시 다른 함수처럼 서브 함수라는 개념이 아니라 같이 작동한다. 메인 함수와 같이 알기 쉽게 예를 들자면 MMORPG 게임에서 내가 움직임과 동시에 다른 플레이어가 움직이는게 Coroutine 함수라고 볼수 있다. Routine 앞에 Co를 붙여 Coworker(동료) 와 같이 함께 한다는 의미로 보면된다. 위 함수를 ..

Unity) Particle System이란?

오늘은 유니티의 파티클 시스템을 다시 만져봤다. 예전에 한번 했었던 기억이 있지만 2,3달 동안 유니티를 안 건드렸기에 잠시 잊었지만 다시 공부하면서 차츰 기억이 나기 시작했다. 그래서 다신 잊지 않도록 파티클 시스템에 관련하여 글을 남겨놓으려고 한다. 파티클 시스템이란 개념을 잘 알지는 못하지만 내가 느끼는 개념은 그냥 GameObject들을 예쁘게 꾸며주고 화려하게 만들어주는 이펙트라고 본다. 위 사진은 Particle System을 적용했을 시에 보이는 파티클의 예제이다. 골드메탈님의 영상을 참고하여 파티클을 배웠고 그 예시로 적용했다. 보기엔 화려하지만 해야 할 일들은 매우 적고 간단하다. 최근 Low level 한 Windows API들을 공부하다가 이런 High Level 엔진을 공부하니까 느..

Unity) is Kinematic

Rigidbody 기능에 포함되어있는 Is Kinematic이라는 기능을 체크하기에 앞서 우선 보통적으로 이 기능을 사용하기 전에 Use Gravity기능을 체크해제 해주고 난 후에 사용하게 된다. Use Gravity기능을 체크해제 해주면 이 개체는 중력의 영향을 받지 않게 되고, 이 개체를 이동하거나 하려면 따로 코드를 작성해줘야 한다. Is Kinematic : 외부에서 가해지는 물리적 힘에 반응하지 않는 오브젝트라는 의미. 중력과 충돌에 반응하지 않도록 합니다. 오브젝트를 물리 거동하지 않은 스크립트에서 제어하는 데 주로 사용하면서 특정 상황에서 물리 거동으로 전환합니다. 예를 들어, 플레이어는 “걷기”로 일반적으로 이동하면서 폭발이나 충돌이 있을 때 공중에 내던질 수 있습니다. 물리 거동을 사용..