본문 바로가기
튜터리얼_스터디

(셰이더그래프)아티스트를 위한 URP 셰이더 Shader #3 - 프로퍼티스 1

by 대마왕J 2021. 7. 16.

이제 프로퍼티스(Properties)입니다. 빈껍데기 인터페이스를 만드는 거예요. 
작동은 안하지만 인터페이스 만드는건 재미있잖아요? 일단 이뻐야 재밌으니까 말이죠. 

대충 이런걸 만든다고 생각하면 되염

프로퍼티 만들기 

그럼 지금부터 프로퍼티들을 만들어 볼 거예요. 사용할 창은 블랙보드랑 그래프 인스펙터. 

프로퍼티의 전 기능을 다 설명할 수도 있지만, 그렇게 설명했다가는 초보도 다 도망가고 이 글도 수십페이지가 될거고 언제 쓸지도 모르는 고급 기능까지 설명하게 될테니 일단 많이 쓰는 기능만 설명하는 식으로 할게요. 백과사전으로 나열하는건 차라리 메뉴얼을 보시는게 낫고요, 어차피 전부 다 안써요 (...) 나도 안써본게 많어.. 

혹시 저 두 창이 안보이면 셰이더 그래프에서 이걸 눌러 켜주세요 

일단 블랙보드에서 + 버튼을 누르면 만들 수 있는 인스펙터들이 좌라락 나옵니다. 

아유 많다... 저걸 언제 다 배워... 하고 걱정 하시겠지요? 걱정마세요. 고급 기법이 되기 전까지는 저기서 자주 쓰는건 몇 개 안됩니다.

야 좀 그렇다고 하면 믿어봐

첫 번째 프로 퍼티 : Float 만들기 

그럼 각설하고 첫 번째 프로퍼티로

Float 하나 만들어 봅시다. 

Float이 뭐냐면요... 걍 숫자 하나예요. 단 , 소숫점을 가진 숫자예요. 0.5 같은거 0.3 뭐 그런거 0.0045 뭐 이런거. 
정밀도 미묘하고요. 그래도 많이 써요. 그게 뭔지는 담에 알기로 하고 친구들. 

그럼 Float이 하나 만들어졌죠? Save Asset 버튼을 눌러 저장을 한 다음, 이 셰이더가 적용되어 있는 메터리얼을 선택해 보세요

오 그러면.. 드디어 Float  이라는 이름으로 인터페이스가 하나 생겼습니다! 
이걸 인터페이스라고 부르지 않고 프로퍼티라고 부르지만 어쨌거나 생겼다고요! 막 숫자도 조절할 수 있습니다. 뭐 바뀌는건 없지만!! 으하하 되는게 없는게 마치 내 인생같군요!! 

대충 감 잡았습니다. 블랙보드에 프로퍼티를 만들어 저장하면 인스펙터에서 보여지는 인터페이스가 된다는 것을! 

하지만 여기서 그냥 끝낼 수 없죠. 뭐든지 처음이 중요하거든요. 특히 이런 툴일수록 초반은 중요!
조금 더 자세히 살펴봅시다. 
Float을 선택하고 Graph Inspector 창을 같이 봅시다. 아참 Node Setting 탭이 선택되어 있어야 해요. 

설정바꾸기

이름바꾸기는 공부하는 사람의 기본! (아님) 
이름바꾸는 법은 두 가지가 있는데요, 블랙보드의 Float이라는 이름을 더블클릭해서 바꾸거나, 
그래프 인스펙터에서 바로 바꾸는 법이 있습니다. 둘다 먹어요. 
그리고 심지어!!! 한글이 먹어요!!!!! 
유일하게 한글 쓸 수 있는 부분이 이부분입니다!! ㅎㅎㅎ 

Save Asset 버튼을 눌러 저장하고 다시 메터리얼로 가 보면, 그대로 반영되어 있는것을 볼 수 있습니다. 

이렇게 이름 부분은 유저에게 보여주는 부분이니까 알아보기 쉬운게 짱이예요. 
근데 진짜 중요한 부분은 그 다음이지. 

바로 여기. 레퍼런스 부분이요. 
이 부분이 '프로그래머가 사용하는 이름' 이예요. 이 부분을 '변수명' 이라고 하기도 하죠.
이 부분이 진짜 중요한 부분이예요. 프로그래머랑 같이 일한다면 이 부분의 이름을 잘 써주는게 중요합니다.
지금처럼 되어 있으면 뭐가 뭔지도 모르고 틀릴 가능성도 크겠죠? 프로그래머가 달려와서 멱살을 잡을지도 몰라요 
도데체 Vector1_1a3c5cfa127241038d27c819f8ba8081 가 뭔지 어케 알겠습니까 ... 
여기를 영어로 이름을 쉽게 지어주는게 정말 중요한 예의예요. 혼자 작업하는거라면 뭐 맘대로 하시고요 .. 

그래서 이렇게 이름을 지어서 해 봤어요 

좋은 이름이네요 알아보기 쉽고. _FirstVector라. 

여기에 쓰는 이름에는 약간의 규칙이 있습니다. 변수명 규칙이랑 똑같은데요. (그거야 변수니까)
대충 아래처럼 생각하시면 됩니다. 

  • 예약어 안됩니다. 예약어란 .. 프로그램에서 미리 쓰고 있는 것 같은 이름들을 말합니다. 상식적으로 딱 왜 그 다른데서 쓸 것 같은 이름이요. 예를 들자면 Color, Vector, Float,  뭐 그런 이름들요. 왠지 불안한 이름들은 피해가거나 Color2 같이 숫자를 붙여주든, 
  • 띄어쓰기 안됩니다. 띄어쓰면 멍청한 컴퓨터는 두 개의 단어인줄 알아요. 추천은 대소문자로 구분하거나, _ 를 붙여주는 거예요. RedColor나 Red_Color 처럼 말이죠. 
  • 한글 안됩니다. 이러지 마세요
  • 특수문자 안됩니다. 단 하나 예외는 _ 입니다. 

 

이름을 바꿔주고 변수까지 만들어 줬으면, 기본값을 넣어 줍시다. 
이 기본값은 '셰이더가 처음 생성되었을때 들어가는 값' 입니다. 
뭐 유저가 한 번 건드리면 아무 쓸모없는 값이지만, 그냥 처음 태어날때의 수치를 말하는 거죠. 지금은 0 이어도 상관없으니까 뭐 둡시다. 

모드는 기본으로 둬도 되지만 필요하면 바꿔도 됩니다. 솔직히 쓸만한건 Default와 Slider예요. 
Interger나 Enum은 제대로 작동하지 않습니다. 

Default로 놓으면 그냥 지금처럼 한 자리 숫자를 입력하는게 나오고요, 
 Slider로 놓으면 원하는 최소/최대값을 입력하게 한 후 슬라이더가 출력되게 만들 수 있습니다. 

그럼 이렇게 슬라이더를 만들 수 있어요. 범위를 제한하거나, 감각적으로 조절하게 하고 싶을때 쓸만하죠. 

그 다음에 나오는 Precision은 정밀도인데요. 그냥 두고 사셔도 사실 별 문제 없습니다. (...) 이 정밀도 아껴서 부자된 사람 본 적 없어요. 
Exposed는 중요합니다. 이걸 끄면, 인스펙터에 인터페이스가 나오지 않습니다. 우리는 꼭 켜야 겠지요! 
'존재하는데 유저에게 안보여주는 기능' 같은거라서, 프로그래머만 스크립트로 다뤄야 하는 경우에 쓰지요. 우린 걍 켜 놓으면 됩니다. 

그 다음에 있는 Override Property Declaration 은 Dots 같은 고급 기법에 쓰이는 거니 신경 안쓰고 넘어가도록 하지요. 

이렇게 첫 번째 프로퍼티를 마쳤습니다. 설명이 좀 길 수 밖에 없는게, 처음 나와서 그래요. 다음 부터는 좀 줄겠죠. 
정리하자면 ..


Float은 한 자리 숫자를 입력받는 기능입니다. 
한 자리 숫자를 입력받게 할 수 있고, 범위(Range) 를 정해서 슬라이더로 값을 입력받게 할 수 있어요!
라는 간단한 내용이었습니다. 한 번 해 보세요!!! 

그럼 다음 시간에는 다른 프로퍼티도 만들어 보지요

블로그 주인장에게 커피값을 후원할 수 있습니다! 

donaricano-btn

반응형

댓글