여러분 안녕하세요. 게임에서 Shader는 GPU의 계산 영역을 아티스트가 직접 접근하여, ‘다양한 질감’과 ‘그래픽 효과’를 자유롭고 손쉽게 컴퓨터 그래픽으로 표현할 수 있도록 만든 함수집합입니다. 하지만 게임에서는 실시간으로 실행되어야 하는 특성상 하드웨어의 제약에 매우 민감하기 때문에 영화나 애니메이션 등에서 사용하던 만큼의 Shader는 거의 사용하지 못했습니다. 그래서 그 민감한 퍼포먼스의 영역은 주로 프로그래머들이 다루던 영역이었습니다. 하지만 최근에는 게임에서 사용할 수 있는 하드웨어의 발전과 함께 간편하게 Shader를 제작할 수 있는 툴과 환경이 만들어졌습니다. Shader는 더 이상 프로그래머들의 영역이 아닌 아티스트들의 영역으로 넘어오게 된 것을 의미합니다. 지금부터 아티스트가 사용하기 쉽게 만들어진 Unity의 Shader 저작 툴 ‘Shader Forge’를 이용해서 간단한 Shader를 제작하는 방법을 배워보도록 하겠습니다. 지금부터 아티스트가 사용하기 쉽게 만들어진 Unity의 Shader 저작 툴 ‘Shader Forge’를 이용해서 간단한 Shader를 제작하는 방법을 배워보도록 하겠습니다.
자, 그럼 Shader Forge를 이용해서 Shader를 제작해보도록 하겠습니다. 일단 Shader Forge를 설치해야 합니다. Shader Forge는 Asset store에서 구입할 수 있습니다, Shader Forge라고 치면, 이렇게 구입할 수 있습니다. 자, 여기서 구입해서 불러오게 되면 이렇게 폴더가 생기게 됩니다. 그리고 윈도우에 Shader Forge라고 하는 기능이 생기게 되죠. 자, 그럼 Shader Forge를 이용해서 Shader을 제작해 보도록 하겠습니다. 일단, Shader Forge를 실행합니다. Shader Forge를 실행하면, 이렇게 창이 열리면서 새 Shader를 만들 것인지 기본 Shader를 불러 올 것인지에 대한 창이 열립니다. 자 새 Shader을 만들어 보겠습니다, 새 Shader를 만들어 보는데요, 여러 가지 Shader를 만들 수 있습니다. 조명이 없는 Shader, 물리기반 lighting을 만들 수 있는 Shader, 일반적인 구형 lighter를 만들 수 있는 Shader 그리고 자신이 직접 조명 계산을 할 수 있는 custom Shader, 그리고 tree game을 위한 sprite Shader, 그리고 3가지의 particle Shader, 그리고 하늘을 위한 sky Shader 그리고 마지막으로 화면 특수효과인 post effect로 인한 Shader를 만들 수 있게 기본 템플릿이 나와 있습니다. 우리는 여기서 기본적인 light를 이용해서 Shader을 만드는 little을 선택해 보겠습니다, 선택을 하면 이런 식으로 새 Shader에 이름을 정 할 수 있도록 나옵니다. 자, 여기서 이름을 정해도 되고요. 저희는 그냥 new Shader로 시작해 보도록 하겠습니다. 정장을 누르면, 자, 이렇게.Shader가 만들어졌습니다. 여기 보시는 것이 노드 구조라는 하는 Shader 제작 구조고요. 다른 게임 engine에서는 많이 사용되고 있는 구조입니다. 자, 여기 흰색. 컬러라고 되어있죠. 흰색 컬러에 RGB가 diffuse로 연결되어 있습니다, 이 연결을 끊으려면 Alt 를 누르고 오른쪽 마우스를 클릭해주면 됩니다. 왼쪽 클릭을 하고, 드래그로 연결해 주면 연결이 됩니다, 물론 이 노드는 움직일 수 있고요, 마우스 휠로 확대, 축소가 될 수 있고 마우스 휠 가운데 버튼을 누르고 움직이면 이렇게 수평 이동이 가능해 집니다. 자, 이렇게 만들어 놓고 일단 잠시 꺼보도록 하겠습니다. 여기 방금 만든 Shader가 생겨 있습니다.
이 Shader을 이제 object에 적용해 보겠습니다. object에 적용해 보려면, object가 있어야겠죠. Game object, 3D object, spear를 이용해서 적용해 보도록 하겠습니다. 자, 0포인트로 잠깐 움직일게요.자, 이렇게 공이 하나, 자, 여기다가 저희가 만든 Shader를 적용시킬 건데요. 이 Shader를 적용 시키려면, material이 있어야겠죠? 우선, create material로 만들어 줍니다. 이름을 바꾸셔도 상관은 없고요. 그리고 이 material에 Shader를 적용시켜야 합니다, 이 material에 Shader를 적용시키는 방법은 여러 가지 방법이 있지만, 여기서는 가장 간단한 방법인 드래그를 이용해서 집어넣는 방법을 사용해 보겠습니다, 이렇게 드래그해서 집어넣고 나서 material을 선택하고 보면, 여기 Shader Forge에 new Shader가 Shader 이름으로 적용되어 있는 것을 보실 수 있습니다. 지금 여러분들이 만든 Shader가 Shader Forge에 있는 new Shader 라고 하는, 이런 이름을 가진 Shader인 것이죠. 이 material을 공에다
적용해야겠죠? 역시, 이번에는 가장 간단한 방법인 드래그 앤 드롭으로 이 material을 공에다 적용해 보겠습니다, 자, 다시 한 번 볼까요? Shader을 material에 넣고요. material을 object에 drag해서 넣었습니다.자, 그렇다면 이번에는 이 object를 선택해도 되고요, 이 material을 선택해도 됩니다. 자, material을 선택하면, open Shader in Shader Forge라고 나오죠. object를 선택하면 이 부분을 이렇게 열어보면, open Shader in Shader Forge라고 나오죠. 똑같은 겁니다. 자, open Shader in Shader Forge를 이용해서 Shader을 열어보겠습니다, 아까 만든 Shader가 나오죠. 지금 기본 형태는 흰색 컬러가 diffuse에 연결된 Shader로 보입니다, 이렇게 내려 보면, 이 공에 있는 Shader을 보면, 컬럭 흰색이 적용되어 있는 것을 알 수 있죠. 자, 즉 여기서 Shader을 만들어주면 바로 여기서도 적용된다는 뜻입니다. 그러면 이번에는 이것을 끊어 보겠습니다, 그리고 compare Shader를 눌러줍니다. 아무것도 연결이 되어 있지 않죠, 까맣게 되어서 나옵니다, color interface는 그대로 있는데, 연결되어 있지 않기 때문에 까맣게 나오게 되는 겁니다, 다시 연결을 시켜줄까요? compare Shader을 하면 이렇게 preview창이 뜨고 다시 보면 연결되어 있습니다. 여기 있는 흰색은 기본 값이고, 이 Shader가 적용되었을 때 가장 초기 값이 무슨 컬러인지를 나타내고 있고요. 여기랑 상관없이 여기 흰색으로 초기 값이 되어있는 것이 보이죠? 여기는 나중에 언제든지 바꿔도 됩니다. 바꾸고 나면, 더 이상 초기 값과는 상관이 없는 컬러가 됩니다, 물론 초기 값은 여전히 흰색으로 남아 있습니다. 자, 그리고 여기에 많은 항목들이 있는데요, 여기에 알맞은 것들을 연결해 주면 됩니다. 이번에는 다른 것을 한번 연결해 보죠, properities가 바로 interface입니다. interface 라는 것을 한번 만들어 볼게요. properities를 이용해서요. slider를 한번 만들어 볼까요? slider. slider가 됐습니다. 최대값이 0, 최소값이 1인 slider가 만들어 졌습니다, slider은 어디다 넣으면 될까요? diffuse power가 좋을 것 같습니다. 여기서 이것을 눌러보면, 여기다 집어넣을 수 있는 것들이 보입니다, specular은 이렇게 넣을 수 있고 normal은 이렇게, normal은 RGB밖에 받지 않는 것을 알 수 있죠. 자, 여기다가, diffuse power에다 넣어 보겠습니다. 컴파일을 해 볼까요? 만화처럼 그렸습니다. 이것을 조정하면 이렇게 변합니다. 자, 무슨 일이 일어나는 걸까요? 이렇게 컴파일 된 상태에서 엔진으로 가 보겠습니다. 공이 원래 빨간 색이었는데, 굉장히 검어졌죠? 자 역시 이것을 조종하면 이렇게. 빛을 받는 범위를 조종할 수 있는 기능, 정확히 diffuse power은 수학적으로 보면 제곱을 나타내지만 여기서는 그것까지는 상관없고 그냥 0에서 1까지 하게 되면, 빛을 조금 더 부드럽게, 날카롭게 받는다고 아시면 될 것 같습니다. 자, 이번에는 컬러 말고 texture를 한번 받아보죠, 오른쪽 클릭하고 properties. texture 2D를 선택합니다. texture 2D를 선택하고 texture RGB를 Diffuse에 연결해보죠. 컬러 대신에 texture가 연결되었습니다. 컴파일 해보고요. 가보면, 이렇게 texture를 넣을 수 있는 항목이 생겼습니다, 더 이상 공은 빨간 색이 아니죠? 이 컬러는 연결되어 있지 않으니까요. 자 그럼 여기다가 texture을 넣어보겠습니다. select하고 이 texture을 넣어보겠습니다. texture가 들어갔습니다. 하지만 공은 더 이상 빨갛지 않죠. 여기 보면 texture가 diffuse에 들어가 있습니다, 여기 이름을 바꾸는 법은요. 여기 위에를 바꾸면 됩니다, 이름은 texture이라고 써볼까요? 여기는 diffuse power라고 써보겠습니다. 컴파일 Shader을 해 보면 이름이 바꿔져있는 것을 보실 수 있습니다. 자 여기다가 texture을 집어넣습니다.
이번 시간에는 Shader Forge의 기본적인 설치와 조작법, 그리고 오브젝트에 적용하는 방법과 간단한 인터페이스 제작까지 알아보았습니다. 다음 시간에는 추가적인 인터페이스 제작을 배운 후 이미지에 알맞은 Properties를 연결하고, 이미지와 색상을 연산하는 방법에 대해 알아보도록 하겠습니다. 감사합니다.
01. 이 강좌에 대해서
최근에는 게임에서 사용할 수 있는 하드웨어의 발전과 함께 간편하게 Shader를 제작할 수 있는 툴과 환경이 만들어졌습니다. Shader는 더 이상 프로그래머들의 영역이 아닌 아티스트들의 영역으로 넘어오게 된 것을 의미합니다. 지금부터 아티스트가 사용하기 쉽게 만들어진 Unity의 Shader 저작 툴 ‘Shader Forge’를 이용해서 간단한 Shader를 제작하는 방법을 배워보도록 하겠습니다.
02. 강사 소개
정종필 (청강대 게임스쿨 교수)
03. 강사 이력
- 청강문화산업대학교 게임콘텐츠스쿨 교수 - 前 ㈜ 엔도어즈 테크니컬 아트 디렉터 - 前 ㈜ 조이온 아트 디렉터 - 前 ㈜ 드림웨어 그래픽 팀장 - 前 H.Q.TEAM 그래픽 팀장
- 01년 앗싸! 게임 만들기 -실무자에게 배워보는 게임그래픽:(공저)-비비컴' 집필 - 05년 사이버게임 아카데미 ‘게임이펙트’ 사이버강의 과정 집필 - 06년 (재)한국게임산업개발원 5차년도 교재 : 게임영상연출&이펙트 - 집필 (공저) - 07년 사이버게임 아카데미 ‘기획자가 알아야 할 2D 게임 그래픽’ 사이버강의 과정 집필 - 08년 모바일 기기용 게임 개발을 위한 가변 인덱스 컬러 응용 : 한국 콘텐츠 학회 논문지 - 10년 텍스쳐 스플레팅 방식에서의 게임 지형 표현을 위한 전이타일의 표현 방법 개선 : 한국 게임학회 - 10년 게임 배경 표현을 위한 진보된 타일 텍스쳐 제작 방법 : 상명대학교 - 14년 Game Graphics / 3D Technical Art 참여 : 비엘북스
연계과정
Unity를 이용한 Shader 제작 기초 3 - Shader 함수 사용과 Alpha Blending
중급
온라인교육ㆍ
렌더링/셰이더
Unity를 이용한 Shader 제작 기초 2 - Shader Forge 인터페이스 제작2와 색상 연산