본문 바로가기

Game/Unity & C#

unity SurfaceOutputStandard

SurfaceOutputStandard 사용하기

  • 01: Standard Shader(스탠다드 쉐이더)

    • struct SurfaceOutputStandard { fixed3 Albedo; // 반사율 (기본 색상 / 오브젝트의 텍스쳐)

      fixed3 Normal; // 법선 (반사각을 결정하는 면의 방향)

      fixed3 Emission; // 방사 (이 오브젝트가 스스로 생성하는 빛의 양 - 빛의 영향을 받지 않는 색상)

      half Metallic; // 재질이 금속인가 아닌가

      half Smoothness; // 재질이 거친가 매끈한가

      half Occlusion; // 폐색 (차폐되어 어둡게 되는 강도)

      half Alpha; // 투명도 };

      glossiness -> 광택 (스펙큘러 반사가 퍼지는 정도)

      gradient -> 기울기?

      Specular -> 머터리얼이 빛을 반사하는 정도 (0~1)

  • 02: Metallic과 Smoothness

    • Metallic : 0 - 비금속, 1 - 금속

  • 03: Normal map

    • 노멀맵이란 실제 디테일이 없는 부분을 디테일이 있는 것처럼 보이게 만들기 위한 눈속임 맵이다. 일반적으로 푸른색을 띠고 있으며, 빛을 속이기 위한 벡터 데이터들로 이루어진 텍스쳐 파일이다. 노멀맵을 이용해서 빛을 속이게 되면 마치 매우 많은 폴리곤으로 이루어진 오브젝트처럼 디테일이 표현되지만, 실제로 폴리곤이 늘어나는 것은 아니다.

    • 노멀맵은 지브러쉬(ZBrush)나 머드박스(Mudbox) 같은 스컾팅(Sculpting) 툴을 이용하거나, 3D 플그램에서 고품질의 하이 폴리곤 모델링을 한 후 렌더 투 텍스쳐(Render to texture: RTT)를 이용해 추출하지만, 이미지의 음영을 기반으로 간단하게 NormalMap을 추출하는 크레이지범프(Crazybump) 또는 B2M 툴을 이용하기도 한다.

    • 유니티에서 음영을 기반으로 NormalMap을 추출할 수 있는 기능이 포함되어 있다. 사용법은 다음과 같다. (p.225)

      1. 일반 텍스쳐를 선택하고, Inspector에서 Texture type을 Normalmap으로 바꿔준다.

      2. Create from Grayscale을 선택하고, Bumpiness나 Filtering을 적절히 조절해준다.

      3. 그 후 Apply를 누르면 일반 텍스쳐가 NormalMap으로 변한다.

  • 04: Occlusion

    • Occlusion은 Ambient Occlusion이라고도 부르며, 구석진 부분의 추가적인 음영을 표현하는 기능을 가지고 있다.