2023/12 4

[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를 바로 사용할 수 ..