일단 Shader(셰이더) 라는 뜻을 인터넷에서 찾아보면 어렵게 설명된 것들이 많다.
C#은 물론이고 유니티조차 수박 겉 핥기식으로 일부 기능들만 쓰고 있고
그것조차도 어떻게 해야할 지 몰라서 쩔쩔매는 VRChat 유저들한테 셰이더를 설명하기란 여간 쉬운게 아니다.
(셰이더를 만들 때 참고하던 그래프 모양들)
그러나 셰이더는 이미 많은 게임들에 이용되고 있으며(초딩겜 마인크래프트조차 '셰이더팩'이란 개념이 있다)
간단히 생각해보자면 이해하기 쉬운데 우리가 셰이더의 복잡한 수학 함수들때문에 접근조차 하지 않는 게 아닐까란 생각도 들게 된다.
이 글을 통해 VRChat 유저들이 셰이더에 대해서 조금 더 이해했으면 좋겠고
이것을 바탕으로 자신만의 아바타를 더 개성있게 꾸밀 수 있도록 도와주고자 한다.
셰이더. Shader를 한국어로 직역하면 '음영'이 된다.
음영이란, 우리가 게임을 할 때 빛을 받는 쪽은 밝게 되고 빛을 받는 반대쪽은 어둡게 되는 것을 생각하면 되겠다.
아니면 미술 시간의 소묘 과목일 때나 낙서를 할 때 한 번쯤은 그려봤을 동그란 공 도형에 그림자를 그렸던 것을 떠올리면 된다.
대충 이런거.
그러므로 VRChat 유저들에게는
음영을 이용해서 데이터 쪼가리로 이루어진 물체(아바타)를 표현하고 거기에 색을 입혀 모니터에 보여주는 역할을 하는 것이
바로 셰이더라고 생각하면 되겠다.
우리가 색연필로 그림을 그리고나서 물감으로 똑같은 그림을 그렸을 때
같은 그림이지만 우리가 느끼는 감각˙재질˙음영 등이 다르듯이
셰이더도 어떤 셰이더를 쓰느냐에 따라 똑같은 물체라고 할 지라도 금속으로 보이기도 하고 털로 보이기도 하는 것이다.
유니티 시작 후 하이어라키(Hierarchy) 창 빈 공간을 우클릭>3D Object>Sphere로 공을 생성한다.
공을 생성했으면 씬(Scene) 창에 동그란 공이 나타날텐데 잘 안 보일테니 씬을 확대시켜서 공이 잘 보이게 해 보자.
씬의 물체를 확대시키는 방법은 더 다양하지만 기본적으로 아래 3가지의 방법이 있다.
1) 하이어라키(Hierarchy)창의 물체 이름을 더블 클릭한다.
2) 하이어라키(Hierarchy)창의 물체 이름을 클릭하고 씬에 마우스 커서를 가져다 댄 뒤 단축키 F를 누른다.
3) 씬에 마우스 커서를 가져다 댄 뒤 마우스를 위로 스크롤한다.
그런 다음 프로젝트(Project) 창의 빈 공간을 우클릭하고 Create>Shader>Unlit Shader로 새 Unlit Shader를 만든다.
프로젝트에서 처음으로 파일을 생성하면 이름을 변경할 수 있을텐데 그 땐 생성한 파일을 빼고 아무데나 좌클릭하면 이름이 정해지게 된다.
프로젝트 창의 빈 공간을 우클릭하고 Create>Material로 새 메터리얼을 만든다.
아까 만든 Unlit Shader 파일을 드래그하여 Material에 옮겨주면 메터리얼에 셰이더가 적용되게 되는 것이다.
간단한 과정으로는 Shader 아이콘을 우클릭하고 Create>Material로 해당 셰이더가 입힌 메터리얼을 만들어 주는 방법이 있다.
프로젝트에 원하는 셰이더가 어디 있는지도 모르겠고 찾을 수 없을 때 쓰는 방법도 있다.
메터리얼을 선택하고 인스펙터(Inspector)에서 Shader라고 적힌 곳의 오른쪽 박스 영역을 클릭한다.
그러면 현재 프로젝트에 들어간 모든 Shader의 목록이 나타나는데 그곳에서 원하는 셰이더를 찾고 선택하여 클릭한다.
원하는 물체를 클릭하고 인스펙터 창에서 매시 렌더러 컴포넌트(Mesh Renderer)를 찾는다.
매시 렌더러에 있는 Materials 옆에 엘리먼트(Element)를 찾아본다. 없으면 Materials 왼쪽에 있는 세모를 클릭한다.
엘리먼트에 원하는 메터리얼을 찾아 적용하는 방법도 있고
(프로젝트에 있는 모든 메터리얼이 목록에 나오게 되는데 안 보인다면 생성되는 Select Materials 창에서 Assets를 클릭해본다)
가장 많이 쓸 법한 방법으로
프로젝트의 메터리얼을 씬의 물체에 드래그하여 옮겨주는 방법이 있다.
이제 자신의 아바타에 맞는 셰이더를 찾고 메터리얼을 생성시켜 적용할 수 있겠지?
이 글에서는 첫 글이고 하니 셰이더란 무엇이고 어떻게 쓰는 지에 대해서만 설명했는데
Unity를 통해 아바타 업로드밖에 할 줄 몰랐던 사람들을 위해 글을 쓸 것이며
진도를 나가다보면 VRChat에서 쓰는 셰이더나 용어들을 거의 이해하고
간단한 셰이더 수정도 할 수 있도록 도울 것이다.
VRChat 유저들에게 셰이더 제작은 크게 필요치 않다.
이미 널린게 셰이더고 쓸만한 것들도 엄청 많다.
다만 자신이 아바타를 어떻게 표현하고 싶은데
어떻게 해야할 지 몰라 쩔쩔매는 유저가 없길 바라는 마음에 쓰게 된 것 같다.