251123 책리뷰 유니티 쉐이더 스타트업
23 Nov 2025
p34 쉐이더
- 컴퓨터 그래픽에서 최종적으로 화면에 출력해하는 픽셀의 색을 정해주는 함수
p40 렌더링 파이프라인
- 단계
- 오브젝트 데이타 임포트
- 버텍스 쉐이더
- 래스터라이저
- 프래그먼트 쉐이더
p41 오브젝트 받아오기
- 버텍스의 정보
- 인덱스 넘버
- 포지션
- 노멀
- 컬러
- UV(Texcoord)
p42 버텍스 쉐이더
- 로컬좌표계
- 월드변환행렬을 곱해서, 월드좌표계로 변환.
- 카메라변환행렬을 곱해서, 카메라 중심점의 상대좌표로 변환.
- 원근감은 아직 고려되지 않음.
- 카메라 행렬은 뷰.
- 오쏘그래픽 프로젝션
- 모니터에 출력 가능한 상태
- 프로젝션행렬 곱해서
- 원근감 부여
- 흔히 볼수 있는 뷰의 모습
- 여기까지 하면 폴리곤 덩어리가 완성
- 픽셀쉐이더를 거치지 않아서, 아직 모니터로 볼수 없음.
- 단지 3D공간에 존재하는 오브젝트
p45 래스터라이저
- 화면에 오브젝트를 출력할 준비
- 래스터라이저
- 오브젝트가 표시될때 어떤 픽셀로 표시될지 결정
p46 프래그먼트 쉐이더
- 아직 텍스쳐, 라이팅 없음.
- 조명, 텍스쳐, 각종 특수효과 연산
p46 간단한 렌더링 프로세스
- 정점데이타
- 버텍스 쉐이더
- 정점좌표변환
- 정점위치
- 래스터라이저
- 픽셀위치
- 프래그먼트 쉐이더
- 픽셀색상결정
- 픽셀색상
p69 버텍스 프래그먼트 쉐이더 작성
Shader "Unlit/SingleColor"
{
Properties
{
_MainColor("MainColor", Color) = (1, 1, 1, 1)
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float4 vert (float4 vertex : POSITION) : SV_POSITION
{
return mul(UNITY_MATRIX_MAP, vertex);
}
fixed4 _MainColor;
fixed4 frag () : SV_TARGET
{
return _MainColor;
}
ENDCG
}
}
}
p82 쉐이더 프로퍼티
_MyFloat("MyFloat", Range(-10, 10)) = 0
_MyFloat("MyFloat", Float) = 1
_MyFloat("MyFloat", int) = 2
_MyFloat4("MyFloat4", Color) = (0, 0.1, 0.9, 1)
_MyFloat4("MyFloat4", Vector) = (10, 20, 30, 40)
_MySampler("MySampler", 2D) = "white" {}
_MySampler("MySampler", Rect)
_MySampler("MySampler", Cube)
_MySampler("MySampler", 3D)