셰이더는 게임 및 그래픽 디자인에서 중요한 기술로, 3D 객체를 현실적으로 표현하거나 독창적인 효과(마인크래프트 셰이더 효과를 생각하면 이해가 쉽다...!)를 생성하는 데 사용된다. 고라니님의 강의 영상은 셰이더의 기본 개념부터 고급 기법까지 설명하며, 유니티(Unity)에서 셰이더 그래프를 활용하는 방법을 다룬다. 유니티를 기반으로 설명하지만, 유니티 한정이 아니라 언리얼 엔진에서도 충분히 활용할 수 있는 지식들이 담겨있다.
(유니티에서만 활용할 수 있는 부분은 Skip하고 학습하였다...!)
테크니컬 아티스트(TA)를 준비하고 있다면, 분명 공부하면 좋을 내용이다.
1) 게임 개발에서의 선형대수 응용,
2) 3D 메시 데이터(노멀, 바이노멀, 탄젠트에 대한 개념),
3) 각 좌표계(월드, 로컬, 카메라 등)에 대한 이해
마인크래프트 셰이더 적용 예시
1. 셰이더의 정의
'정점 위치'나 '픽셀 색깔'을 계산하는 함수!
유니티 프로젝트를 만들 때, URP와 HDRP를 볼 수 있다.
아래 사진 보면 알겠지만, RP는 렌더링 파이프라인의 약자이다.
유니티 프젝 생성 시...
렌더링 파이프라인이 뭐야?
➡️ 3D 물체를 2D 화면(즉, 모니터 스크린)까지 표현하는 과정을 뜻한다.
1) 정점 조립(Vertex Shader)
물체를 삼각형으로 분해하여 표현.정점을 조립하면 면이 만들어진다 (GPU가 자동 계산함)
로컬 좌표계
정점(Vertex)마다 벡터(노멀, 탄젠트) 정보를 가지고 있다.
2) 투영 변환(좌표계 변환)
오브젝트(로컬) 좌표계
월드 좌표계
카메라 뷰 좌표계 : 기준이 카메라!, XY는 방향이 동일한데, Z 방향이 거꾸로 되어있다.
orthographic : 원근법이 적용되지 않음.
perspective : 원근법이 적용되어 있음.
3) 클리핑 (절단 좌표계)
PC나 모바일(안드로이드, IOS) 등 각각의 기기가 해상도가 다르다. 따라서 가상의 박스를 만들어서 해당 범위(화면 범위)를 벗어난 부분을 잘라낸다.