2023. 7. 13. 18:05ㆍUnity
책의 예제와 똑같이, 에셋 스토어에서 무료 에셋을 받은 후 프로젝트에 Import하고 분홍색으로 깨지는 메테리얼 대신 Lit Shader Graph를 적용한 메테리얼을 적용한다.
이후 Diffuse(Albedo)는 컬러 값과 곱하여 Base Color에 연결하고 Metallic은 R값은 Metallic에, A알파값은 Smoothness에 들어있으므로 맞는 곳에 연결한다. (*만약 Smoothness 텍스쳐가 따로 있다면 데이터로 쓰이는 텍스쳐이기 때문에 [sRGB] 체크를 해제해서 써야한다.)
유니티 기본 Lit 셰이더에서도 Smoothness의 Source가 "Metallic Alpha"로 설정되어 있는 것을 볼 수 있다.
노말맵 만들기
노말맵에 쓸 텍스쳐는 반드시 Inpector에서 [Texture Type]을 [Normal Map]으로 설정해야 한다.
*노말 맵은 지브러쉬나 머드박스 같은 Sculpting 툴을 이용하거나 3D 프로그램에서 하이 폴리곤 모델링 후 Render to Texture(RTT)로 추출하는 방식을 자주 사용한다. 간단하게는 Crazy Bump 또는 B2M 툴을 이용하기도 하며 최근의 포토샵 또는 유니티에서도 이런 기능은 퀄리티가 높진 않지만 가능하다.
유니티에서 노말맵 만드는 방법
[Texture Type] - [Normal map] 으로 설정하고, [Create from Grayscale] 체크, 이후 [Bumpness]와 [Filtering]을 조절한다.
노말맵 적용
노말맵을 적용하니 입체감이 조금 살아난 것을 볼 수 있다.
노말맵 정도를 높여주는 [Normal Strength]라는 노드가 있는데 값을 5로 높였더니 더 강하게 노말맵이 들어간 것을 볼 수 있다.
*여기서 , Normal Map에 쓰이는 [Sample Texture 2D] 노드에 [Type]을 [Normal]로 설정해야하는 것도 중요하다.
Ambient Occlusion 적용
AO 텍스쳐는 [Ambient Occlusion] 부분에 바로 연결할 수 있는데, [Add], [Saturate] 노드와 연결하여 그 정도를 조절할 수 있다. 마이너스 값을 더하면 더 어두워지고 [Saturate] 노드를 이용하여 0 이하의 값을 0으로 만들어준다.
Emission 적용
HDR 설정을 준 Color 값을 곱하여 조절 할 수 있으며, Emission 부분에 연결하면 된다.
HDR Color의 intensity 값을 올리면 Emission 받는 부분이 빛나는 것을 볼 수 있다.
최종으로 정리하면 위와 같다.
위의 링크에서 무료 HDRI .exr 파일을 받아서 큐브맵 적용을 하고 배경에 넣으면 주변 환경광에 맞게 오브젝트가 빛에 영향을 받는 것을 볼 수 있다.
참고자료
'Unity' 카테고리의 다른 글
[Unity] URP 셰이더 Height Map(Parallax Mapping) (0) | 2023.07.17 |
---|---|
[Unity] URP 셰이더 픽셀 셰이더 5.0 샘플러 오류 해결법 (Sampler State 노드) (0) | 2023.07.14 |
[Unity] URP 셰이더 Vertex Color와 응용 (0) | 2023.07.12 |
[Unity] URP 셰이더 Time 노드로 움직이는 불 만들기 (0) | 2023.07.12 |
[Unity] URP 셰이더 Lerp 노드 응용 (0) | 2023.07.12 |