본문 바로가기

Unity Engine

유니티 Terrain Sample Asset Pack 셰이더 오류 해결

728x90
728x90

 

에셋 스토어에서 유니티 공식으로 제공하는 지형 에셋인 Terrain Sample Asset Pack이 있다. 다양한 브러시나 각종 머티리얼을 제공하여 지형을 더 멋지게 만들 수 있도록 해준다.

 

하지만...

 

 

식물 프리팹을 쓰려고 하면 이렇게 충격적인 분홍색이 우리를 반겨준다. 이 문제를 해결해보도록 하자.

직접 수정하기

분홍색이 나오는 이유는 유니티에서 셰이더에 오류가 있을 때 나오는 기본 색이다. 오류가 나오는 이유 중 하나는 에셋이 URP나 HDRP를 쓰고 있는데 우리 프로젝트는 그렇지 않고 기본 렌더링 파이프를 쓸 때 호환이 맞지 않아서다.

 

따라서 우리는 프로젝트를 HDRP로 올려주거나 에셋의 렌더링 파이프를 빌트인 수준으로 내리는 작업을 해야 한다. 여기서는 재작업을 통해 에셋을 살려보겠다.

 

 

머티리얼 폴더에 들어가 무슨 일이 일어났는지 보도록 하자.

 

 

이렇게 모든 분홍색 머티리얼이 우리를 반겨주고 있다. 여기서 BushDry를 고쳐보자.

 

 

지금 적용된 셰이더는 InternalErrorShader라고 뜨고 있을 텐데 Standard로 바꿔준다.

 

 

그리고 알베도를 눌러 BushDry를 검색해 나온 텍스처로 변경하자.

 

 

메탈릭이나 노말 맵이 존재하는 경우 그것도 빠짐없이 적용하도록 한다.

 

 

그럼 이제 뭔가 색이 잘 입혀졌다. 이제 배치하면

 

 

아직 괴상하게 나온다. 사실 여기서 끝난 게 아니고 머티리얼에서 렌더링 모드를 바꿔줘야 한다.

 

 

뭘로 바꿔줘야 할까? 유니티 공식 문서에는 다음과 같이 설명하고 있다.

 

  • Opaque - 디폴트입니다. 투명한 영역이 없는 일반 솔리드 오브젝트에 적합합니다.
  • Cutout - 투명 영역과 불투명 영역 사이에 하드 에지가 있는 투명 효과를 만들 수 있습니다. 이 모드에서는 반투명 영역이 없고 텍스처가 100% 불투명이거나 보이지 않습니다. 이 모드는 나뭇잎이나 구멍과 찢어진 부분이 있는 옷감 같은 머티리얼의 형상을 만들기 위해 투명도를 사용할 때 유용합니다.
  • Transparent - 투명한 플라스틱이나 유리처럼 투명한 머티리얼을 사실적으로 렌더링하는 데 적합합니다. 이 모드에서는 머티리얼 자체에 (텍스처의 알파 채널과 틴트 컬러의 알파에 기반한)투명도 값이 있지만, 반사 및 조명 하이라이트는 실제 투명 머티리얼과 마찬가지로 계속 완전히 투명하게 보입니다.
  • Fade - 투명도 값으로 오브젝트에 있는 모든 스페큘러 하이라이트 또는 반사를 포함하여 오브젝트를 완전히 페이드 아웃할 수 있습니다. 이 모드는 오브젝트 페이드 인 또는 페이드 아웃을 애니메이션으로 나타내고 싶을 때 유용합니다. 반사와 하이라이트도 페이드 아웃되므로 투명한 플라스틱 또는 유리 등의 투명 머티리얼의 사실적인 렌더링에는 적합하지 않습니다.

 

나뭇잎에는 Cutout를 쓰라고 했으므로 Cutout으로 바꿔주면 된다.

 

 

이제 잘 나온다. 이런식으로 고장 난 머티리얼을 전부 고쳐주면 된다.

 

이 상황 말고도 가끔 에셋을 받아서 쓸 때 렌더링 파이프라인이 맞지 않아 이렇게 머티리얼이 고장 나는 경우가 종종 있는데 그럴 때는 당황하지 말고 원래의 것으로 추정되는 텍스처나 셰이더를 찾아 이렇게 자가 수리를 할 수 있다. 아니면 그냥 프로젝트의 렌더링 파이프라인을 바꿔도 된다.

 

소중한 에셋 버리지 말고 잘 살려보자.

728x90
728x90