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

(셰이더그래프)아티스트를 위한 URP 셰이더 Shader #13_2 - Custom Light_Normalmap

by 대마왕J 2021. 12. 18.

노말맵 넣기 

 

에또 .. 앞에서 이어집니다. 

이번엔 노말맵을 카와이하게 넣어볼 거예요! 

왜냐면

얘가 너무 밋밋하니깬 

ㅋㅋㅋ

여기서  NdotL 계산은 했지요? 저기의 노말을 노말맵으로 바꿔주면 돼요 

하지만...킹치만...

일단 노말맵을 하나 받아와 볼까요? 

평범한 sample Texture 2D 를 꺼내와서 텍스쳐를 입력받는데,
sample Texture2D  의 Type이 Normal이라는건 주의해야 해요 
왜냐면 노말맵은 타입이 노말맵이니까 

NormalMap Type is NormalMap

근데 문제는 이 노말맵은 Space (공간) 가 Tangent 공간이라는 거예요. 
탄젠트 공간은 대충 면이 가지고 있는 좌표계 정도로 생각하면 되는... 

이걸 월드 공간으로 변화시켜줄 필요가 있는데요 

왜냐면

애초에 전에 구했던 라이트벡터가 월드 공간의 벡터이기도 하고 

얘도 월드니까 

좌표계에 대한 설명은 책에 후반부에 나오긴 하는데, 기준 좌표 같은 거예요. 

쉽게 설명하면 로컬은 로컬끼리 연산해야 하고, 월드는 월드끼리 연산해야 한다는 뭐 그런거라고 생각하면 쉬움 
사실은 이렇게만 설명하면 절대 안되지만 

 

여하간 월드엔 월드가 필요하다만 알고 있어도 일단 가능은 해요 
그러니까.. 노말맵도 탄젠트 -> 월드를 해줘야 쓸 수 있다는 거죠

사실 이걸 할 땐 메트릭스 연산이 필요한데, 셰이더 그래프에서는 아주 편합니다. 

짠 

트렌스폼 노드 하나 꺼내서 탄젠트를 월드로 바꿔주면 돼요. 
노말은 디렉션이니까 타입을 디렉션으로 바꿔주고요. 

 

흠 .. 노말맵은 근데 입력도 신경써줘야 합니다. 아니 뭐 꼭 필수는 아닌데 지금 저대로면 기본이 흰색이 들어가는게 문제 

여기 말이죠 여기. 노말맵인데 아무것도 안 넣었을때 흰색이 들어가면, 노말맵 텍스쳐를 아무것도 넣지 않았을때 이상한 값이 들어가게 되거든요 (이거 설명은 기니까 패스)

그래서 노말맵으로 바꿔주면 마음이 편안해 집니다 휴우

한 김에 텍스쳐도 넣어보죠

역시 마음이 편해지는군요. 월드 노말 색이 좀 이상해 보일텐데, 저게 정상입니다. 
역시 탄젠트가 너무 새파란것은 안 이상해 할 줄 알았어  

파랑 노말맵에 대한 얘기는 여기 

https://chulin28ho.tistory.com/359

 

유니티 엔진의 노말맵은 노랑색? 흑백? 파랑색? : Unity Normal Map Color

이번에 오버워치에 관련한 문서때문에 노말맵이 왜 노랑이냐는 질문이 들어와서 ... 그걸 간단하게 말할 수도 있지만 사실 제대로 말하려면 노말맵의 기본부터 얘기해야 하는 항목이라서 말이

chulin28ho.tistory.com

 

탄젠트 좌표계의 노말맵과 월드 좌표계의 노말맵 차이입니다. 탄젠트는 확실히 자기 면의 방향성을 가지고 있고, 월드 노말은 월드 방향성을 가지고 있죠. 

톤매핑 하지 않은 HDR 화면에서는 뭔가 지글지글하게 보일겁니다. 

 

여하간, 이렇게 월드 좌표계로 변환한 노말맵을 라이트와 dot 연산 시켜주면 된다는 말입니다. 

더이상 얼굴이 밋밋하지 않지요. 

이렇게 노말맵이 적용되게 됩니다. 

 


텍스쳐와 환경광 추가 

뭐 한 김에 텍스쳐Texture 와 환경광 Ambient 도 넣지요. 
역시 책에는 잘 나와있는 내용. 

셰이더 그래프로 텍스쳐를 넣는건 이렇게 하면 되고요. 뭐 곱하기죠 글쵸 그거

엠비언트 넣는건 이렇게 하면 됩니다. 

Ambient 노드를 꺼내서 스카이 칼라를 텍스쳐와 곱해주면 돼요. 
그리고 그걸 마지막에 더해주고요. 

즉 이건 표현하자면 이거죠

(라이트 연산 * 텍스쳐) + (엠비언트 칼라 * 텍스쳐) = 최종결과 

셰이더는 결국 코드를 그림을 나타낸거라, 코드식으로 해석하지 않으면 외우기 힘듭니다. 

그러면 짜잔 이렇게 나오게 되는거지요

검었던 부분에 엠비언트가 들어왔습니다. 
셰이더 그래프는 아래에 있어요!

CustomLight1.shadergraph
0.05MB

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

 

반응형

댓글