250104

lililllilillll·2025년 1월 4일

개발 일지

목록 보기
41/350

✅ 오늘 한 일


  • 대마왕의 유니티 URP 셰이더 그래프 읽기
  • Udemy Unity 강의 수강


📖 대마왕의 유니티 URP 셰이더 그래프


Part 02 | URP와 셰이더 그래프

1 셰이더 그래프와 HLSL 셰이더

셰이더 그래프는 사실상 HLSL 셰이더를 노드 형태의 껍데기로 감싸 놓은 것 뿐이다. 결국 HLSL로 변환됨.
셰이더 그래프 Inspector에서 'View Generated Shader' 버튼을 누르면 변환된 결과 확인 가능.

2 앰플리파이드 셰이더 에디터

셰이더 그래프 나오기 이전에 나온 유료 애셋인데 이것도 셰이더 그래프랑 비슷함. 호환은 안됨.

Part 03 | 셰이더를 익히기 위한 기반 지식들

01 렌더링 파이프라인 (렌더링의 순서)

1단계: 오브젝트 데이터 받아오기

그래픽 카드는 Vertex(정점)으로 이루어진 물체의 데이터 값을 받아온다.
vertex에는 index number, position, normal, color, UV, tangent 등의 정보가 있다.

2단계: Vertex(정점) 셰이더

vertex shader에서 vertex의 데이터들로 셰이딩 작업한다.

로컬 좌표계 → 월드 좌표계 → 카메라 좌표계 → 프로젝션 좌표게

  • 로컬 좌표계: 버텍스의 위치 값은 초기엔 로컬 좌표계 상태이다. 모든 오브젝트는 자기 위치가 원점이라고 생각함.
  • 월드 좌표계: 여기에 '월드 변환행렬(월드 좌표계)'를 곱해서 로컬 좌표계를 월드 좌표계로 변환.
  • 카메라 좌표계: 월드 좌표계 버텍스들은 '카메라 행렬'에 곱해지고, 월드 좌표계 버텍스들이 카메라의 중심점으로부터의 상대적 거리로 다시 연산됨.
    카메라의 중심점이 0,0,0이고, 다른 물체들이 여기서 상대적으로 얼마나 떨어져 있는지로 표현됨. 아직 원근감은 표현 안됨.
    카메라 행렬은 View 또는 Orthgraphic Projection이라 부름.
  • 프로젝션 좌표계: 카메라 행렬로 정렬된 버텍스들은 다시 한 번 'Projection 행렬'로 곱해짐. 카메라에서 먼 곳은 좁혀진 것처럼 버텍스 위치를 조정. 원근감 부여됨.

여기까지의 결과물을 그대로 모니터에 출력하면 텍스쳐도 음영도 없는 폴리곤 덩어리 나옴.
Light 연산하면 'Vertex Light'라고 하는 매우 가볍고 부정확한 라이트를 연산할 수 있긴 함.
예시로는 고라우드 셰이딩(Gouraud Shading)이라는게 있음.

3단계: 레스터라이져 (Rasterizer)

오브젝트의 메쉬가 모니터에서 표현될 때 어느 픽셀로 표현될지 나타내는 레스터라이즈를 거쳐야 함.
모니터에 보이기 위해 2D 이미지로 만든다는 뜻. 이를 '레스터화'라고 한다.

4단계: Pixel Shader, Fragment Shader

화면에 픽셀은 찍혔지만 아직 텍스쳐도 없고 라이팅도 없는 상태.
이제 픽셀 셰이더가 가동되어 조명과 텍스쳐, 그림자와 각종 특수효과 등을 연산한다.
(프레그먼트(조각) 셰이더는 픽셀보다 상위 개념이지만, 일단은 거의 동일하다고 생각하고 넘어가도 됨)

요약

점 찍은거 데이터 받아와서 좌표 어딨는지 계산한 다음 카메라랑 화면에 맞게 조정해주고 색칠해준다

02 모니터에 표현되는 색과 빛의 기본원리 (모니터의 색은 어떻게 표현되는가?)

가산 혼합 : 모니터 색 표현 방법. 더하면 밝아지고 다 더하면 흰색.
모니터는 RGB 3개를 가진 서브픽셀들로 이루어져 있다.
RGB 중 R만 켜면 빨간색으로 보이긴 하는데 흰색보다 1/3쯤 어두워짐.
RGB(100%, 100%, 100%) → Float3(1.0, 1.0, 1.0)
1(흰색)보다 밝은 빛이 존재는 하지만 현재의 모니터로 출력하는 건 불가능.
1에서 어떤 색을 빼면 그 색이 반전된다.



🎮 Udemy Unity 강의 수강


https://www.udemy.com/course/rpg-core-combat-creater-intermediate-unity-c-korean

Section 2 기본 움직임 소개

9. 간단한 샌드박스 생성

Create > Terrain
터레인 크기 조절 : Terrain > (산+톱니바퀴 아이콘) > Mesh Resolution > Terrain Width, Length 조절
터레인 그리기 : (산+브러시 아이콘)

  • 민감도 조절 : Opacity
  • 터레인 줄이기 : Shift 누르면서 클릭
  • 텍스처로 그리기 : Paint Texture로 변경 > Edit Terrain Layers
  • 다른 텍스처 추가 : Edit Terrain Layer > Create Layer > 레이어 선택하고 그리기

터레인 작업할 때 꺼둬야할 것 : Windows > Rendering > Lighting > Auto Generate
안 끄면 터레인 변경할 때마다 라이트맵 다시 만든다.
필요할 때만 Generate Lighting하면 된다.

profile
너 정말 **핵심**을 찔렀어

0개의 댓글