여러분 안녕하세요. Shader에는 편리한 조작을 가능하게 해주는 많은 함수들이 내장되어 있습니다. 이 함수들은 내장된 것을 사용할 수도 있고, 직접연산을 만들어서 사용할 수 있습니다. 이번 시간에는 간단하게 내장된 ‘Lerp 함수’ 사용방법을 익혀보도록 할 텐데요. ‘Lerp 함수’란 ‘Linear Interpolation’이라는 뜻으로 ‘선형 보간‘ 이라고 불리기도 합니다. ’선형 보간‘은 두 개의 숫자나 색상, 텍스쳐를 0과 1사이의 인자값을 이용해서 부드럽게 전환시켜주는 기능을 말하는 것입니다. 그리고 또 하나 오늘 배울 것은, 투명도를 가동시키는 방법입니다. Shader에서 투명도를 가동시키기 위해서는 단순히 Alpha채널을 가진 텍스쳐를 집어넣기만 해서는 가동되지 않습니다. 투명도를 가동시키기 위해서는 Shader의 설정부터 바꿔줘야 합니다. 본래 투명도 쪽은 꽤 복잡한 이론과 설정이 필요하지만 이번 시간을 통해 간단히 ‘Alpha Blending‘만 가동시켜보도록 하겠습니다. 그럼 지금부터 ‘Lerp 함수’와 ‘Alpha Blending가동‘에 대해서 본격적으로 알아보겠습니다.
자, 그럼 계속해 보도록 하겠습니다, 자, 이번에는 함수를 이용한 고급 shader forge 조작과 Alpha에 대해서 알아보도록 하겠습니다. 일단 여기 있는, 필요 없는 것들을 모두 다 지워주도록 하겠습니다. Texture은 하나 필요하니까요, texture은 하나 연결해 놓도록 하겠습니다. 컴파일 shader 해주면요. 이런 식으로 texture가 하나 들어 간 shader가 만들어져 있는 것을 볼 수 있습니다. 여기 보기 편하게, 동일하게, 플랜에다가 같은 material을 적용해 보도록 하겠습니다. 자, 이렇게 적용되었죠? 자, 이번에는 texture을 한 장 더 받을 수 있게 해 보겠습니다. ctrl c, ctrl v에서 카피를 해서 보겠습니다. 자, 두 장을 이렇게 연산하면, 이건 연산이 아니죠. 두 장을 단지 갈아치우기 하는 것이죠? 이렇게 해보면 아무 것도 없습니다. 두 번째 texture 에는 아무것도 없기 때문이죠. 자, 두 번째 texture로 이런 풀 texture을 집어넣어 보겠습니다. 그러면, 여기 texture, texture를 연결하고 컴파일 해보면, 돌이 있고요. texture 카피를 연결하고 해보면, 풀이 있는 것을 알 수 있습니다. 자, 그러면, 이 두 개를 자연스럽게 전환되도록 만들어 보겠습니다. Arthmetic에서 lerp라는 함수를 사용해서 그 기능을 만들 수 있습니다. lerp는 세 개의 인자를 받을 수 있는데요. 자, 첫 번째 인자에다 돌, 두 번째 인자에다가 풀을 넣습니다, 그러면 세 번째 인자에는 어떤 것이 들어가는가 하면, Properties에서 slider, 0부터 1까지 되어 있는 slider가 가장 잘 어울립니다. 자, 이렇게 연결 했습니다. 자, 이렇게 하고, 이것의 출력을 diffuse로 뺐습니다. lerp는 인자에 두 개가 들어갔습니다. texture 2개와 이것을 조절할 수 있는 조절 바입니다. 컴파일 해주고, 볼까요? 첫 번째 texture은 돌이고, 두 번째 texture에는 나무가 있습니다. 그리고 여기에 조절 바가 있고요.
자. 이것이 0 일 때는 돌이 보입니다. 1 일 때는 풀이 보입니다. 0.5 일 때는 서로 섞어서 보입니다. 이런 식으로 자연스럽게 변하는 shader를 만들 수 있습니다. 이름을 이제 잘 만들어 볼까요? 2번째 texture은 Texture 2라고 해 볼까요? 여기에서는 blending이라고 만들어 보겠습니다. 컴파일 shader하면, 이름이 바뀌었죠? texture에 이름을 바꿨기 때문에 texture가 날아갔습니다. 다시 texture을 적용 시키면 되겠죠? 이렇게요. 이러면, 이렇게 적용되는 shader가 만들어 졌습니다.
다음은 Alpha채널을 사용해 보겠습니다. 지금 현재 두 번째 texture는 Alpha채널이 있습니다. 이렇게. Alpha 채널이 있어요. 이 Alpha채널로 투명하게 되는 것을 만들어 보기 이전에 그냥 투명하게 되는 것부터 해볼게요. 자, Opacity가 있죠? Opacity가 보입니다. 여기 오른 클릭하고 Properties에서 역시 slider를 만들어서 Opacity에 연결해서 컴파일 해 봅니다. 자, 어떻게 될까요? 뭔가 이상하죠? 자 어떻게 되는지 볼까요? 컴파일 shader하고 가서 보면 Opacity에 적용하게 되면 투명도가 반할 것 같은데, 전혀 변하지 않습니다. 이게 어떻게 된 것일까요? 투명도를 적용하려면 Opacity에 0부터1까지의 조절점만 달아서는 되지 않습니다. 이쪽 메뉴에 보면, 이 shader의 blending option을 조절 할 수 있는 메뉴가 있습니다. blending option자체에 blending mode가 opaque로 되어 있으면 이것은 절대로 반투명이 되지 않는 shader입니다. 이 상태로 opaque가 된 상태에서 Opacity에 어떤 값을 넣어도 반투명은 되지 못합니다. 그럼 우리 이렇게 눌러서 Alpha blend로, Alpha blended로 만들어줍니다. 그렇게 컴파일 shader을 하면요. 투명도에 따라서 투명도가 먹는 shader로 변합니다. 자, 정리해 볼까요? 이렇게 투명도에 따라서 나오게 됩니다. 자, 이제 두 번째 texture인 풀 있죠? 여기 이쪽에 풀이 있습니다. 이 풀은 Alpha texture을 가지고 있습니다. 자, 여긴 Alpha가 바로 풀의 Alpha죠. 여기서 일단, 미리보기로 이렇게 해 볼 수 가 있습니다. 풀이 여기 있죠? 풀에 Alpha를 연결해서 Opacity에 넣어 보겠습니다. 컴파일로 보면 어떻게 될까요? 미리보기로 볼 수 있습니다. 네, 이런 식으로요. 첫 번째 texture도 미리 넣어놓으면 보기 편하겠죠? 그러면 이렇게. 이렇게 해서 Alpha 채널이 가동할 수 있게 만들었습니다, 두 번째 texture을 Alpha 채널를 Opacity에 넣은 것이죠. 자, 이것을 통째로 사라지게 하려면, 다시 arthmetic에서 multiply를 곱하기죠? 곱하기를 가져와서 이 Alpha채널과 이 숫자를 곱하게 해서 이것을 출력하게 하면요. 자, 어떻게 되는지 볼까요? 이 숫자가 1일 때는 Alpha채널이 그대로, Alpha채널이 곱해도 1을 곱하면 그대로, 그대로 나오는데, 0으로 내리면, 이 Alpha채널 값이 통째로 0으로 사라지기 때문에 통째로 나뭇잎을 사라지게 할 수 있습니다. 컴파일 shader해보고 엔진으로 가서 볼까요? Alpha채널은 현재 적용되어 있고요. 나뭇잎으로 변하는 것도 자연스럽습니다. 그 다음 이 나뭇잎이 통째로 사라지게도 할 수 있습니다.
이제 이름을 정해주겠습니다, Alpha라고 이름을 정해주면 되겠죠? 자, 그리고 마지막으로 여기 shader setting에서 보면요. shader forge에 new shader이라고 하는 이름이 정해져 있습니다. 이 이름을 바꿔보겠습니다. shader forge에 test shader 1이라고 정해 놓으면요. 이 shader을 적용하고 싶으면, 이렇게 가서 shader forge에 test shader1 이라고 바뀌어 있습니다, 바로 이 이름을 바꿔주는 것이 아까 그 부분입니다. 자 이런 식으로 다양한 연산을 통해서 우리가 원하는 shader을 간단히 만들 수 있는 것을 해 보았습니다.
다시 한번 정리해볼까요? 오늘은 내장된 선형보간 함수를 이용하여 이미지를 보간시키는 법을 알아보았고, 투명도가 있는 오브젝트 제작을 위해서 Alpha 블렌딩을 가동시키는 법을 배워보았습니다. 지금까지 배웠던 3개의 차시는 모두 간단하게 shader가 무엇인지 알아보기 위해서 배웠던 맛보기 과정이었고, 다음 기회에는 보다 본격적으로 shader 제작에 대해서 배울 수 있는 시간을 가지도록 하겠습니다. 감사합니다.
01. 이 강좌에 대해서
Shader에는 편리한 조작을 가능하게 해주는 많은 함수들이 내장되어 있습니다. 이 함수들은 내장된 것을 사용할 수도 있고, 직접연산을 만들어서 사용할 수 있습니다. 이번 시간에는 간단하게 내장된 ‘Lerp 함수’ 사용방법과 투명도를 가동시키는 방법에 대해서 알아보겠습니다. Shader에서 투명도를 가동시키기 위해서는 단순히 알파채널을 가진 텍스쳐를 집어넣기만 해서는 가동되지 않습니다. 투명도를 가동시키기 위해서는 Shader의 설정부터 바꿔줘야 합니다. 본래 투명도 쪽은 꽤 복잡한 이론과 설정이 필요하지만 이번 시간을 통해 간단히 ‘Alpha Blending‘만 가동시켜보도록 하겠습니다. 그럼 지금부터 ‘Lerp 함수’와 ‘Alpha Blending가동‘에 대해서 본격적으로 알아보겠습니다.
02. 강사 소개
정종필 (청강대 게임스쿨 교수)
03. 강사 이력
- 청강문화산업대학교 게임콘텐츠스쿨 교수 - 前 ㈜ 엔도어즈 테크니컬 아트 디렉터 - 前 ㈜ 조이온 아트 디렉터 - 前 ㈜ 드림웨어 그래픽 팀장 - 前 H.Q.TEAM 그래픽 팀장
- 01년 앗싸! 게임 만들기 -실무자에게 배워보는 게임그래픽:(공저)-비비컴' 집필 - 05년 사이버게임 아카데미 ‘게임이펙트’ 사이버강의 과정 집필 - 06년 (재)한국게임산업개발원 5차년도 교재 : 게임영상연출&이펙트 - 집필 (공저) - 07년 사이버게임 아카데미 ‘기획자가 알아야 할 2D 게임 그래픽’ 사이버강의 과정 집필 - 08년 모바일 기기용 게임 개발을 위한 가변 인덱스 컬러 응용 : 한국 콘텐츠 학회 논문지 - 10년 텍스쳐 스플레팅 방식에서의 게임 지형 표현을 위한 전이타일의 표현 방법 개선 : 한국 게임학회 - 10년 게임 배경 표현을 위한 진보된 타일 텍스쳐 제작 방법 : 상명대학교 - 14년 Game Graphics / 3D Technical Art 참여 : 비엘북스
연계과정
Unity를 이용한 Shader 제작 기초 2 - Shader Forge 인터페이스 제작2와 색상 연산
중급
온라인교육ㆍ
렌더링/셰이더
Unity를 이용한 Shader 제작 기초 1 - Shader Forge의 기본 조작과 인터페이스