빌트인 쉐이더 가이드
👍 시작하기에 앞서 제페토 빌트인 쉐이더 샘플이 최신 버전으로 다운로드 되었는지 확인합니다. 3.2.12 버전 이상의 최신 프로젝트 파일에는 제페토 빌트인 쉐이더가 포함되어 있습니다.
📘 샘플 제페토 빌트인 쉐이더 샘플
제페토에서 제공하는 빌트인 쉐이더는 ZEPETO/BuiltIn 경로를 통해 사용할 수 있습니다.
Lit 쉐이더는 기본 Unity 스탠다드 쉐이더에서 디테일 노말 부분만 제거되고 컬러 그레이딩 옵션이 추가된 기본 쉐이더입니다.
📘Unity에서 제공하는 가이드를 참고하여 주세요. [Standard Shader Material Parameters]
- 컬러 그레이딩 옵션이 항상 켜져있는 상태로 작업합니다.
- Metallic, Smoothness, Occlusion의 경우 텍스쳐의 R채널(Metallic), G채널(Occlusion), A채널(Smoothness)를 사용하기 때문에 텍스쳐 한장으로 제어가 가능합니다.
- 서브스텐스페인터에서 텍스쳐 추출하실 때, Unity HD Render Pipeline(Metallic Standard)로 추출하시면, MaskMap에 해당 정보가 포함된 상태로 추출됩니다. 해당 텍스쳐를 각각 Metallic, Occlusion에 연결해줍니다.
LitWithDetailNormal 쉐이더는 Lit 쉐이더에서 디테일 노말 부분이 추가된 쉐이더로 다른 타일링을 사용하는 Secondary 텍스쳐를 사용할 수 있습니다.
📘 Unity에서 제공하는 가이드를 참고하여 주세요. [Standard Shader Material Parameters]
👍 해당 쉐이더는 Lit 쉐이더에 비해 많은 연산량을 요구하기 때문에, Secondary Maps을 사용하지 않는 상황이라면 Lit 쉐이더를 사용하는 것이 좋습니다.
- 컬러 그레이딩 옵션이 항상 켜져있는 상태로 작업합니다.
- Metallic, Smoothness, Occlusion의 경우 텍스쳐의 R채널(Metallic), A채널(Occlusion), G채널(Smoothness)를 사용하기 때문에 텍스쳐 한장으로 제어가 가능합니다.
- 서브스텐스페인터에서 텍스쳐 추출하실 때, Unity HD Render Pipeline(Metallic Standard)로 추출하시면, MaskMap에 해당 정보가 포함된 상태로 추출됩니다. 해당 텍스쳐를 각각 Metallic, Occlusion에 연결해줍니다.
- Secondary maps: A채널에 값을 받는 Detail Mask로 영역을 정해줄 수 있습니다.
- DetailAlbedo의 A채널에 같이 묶어주면 텍스쳐 개수를 효율적으로 사용할 수 있습니다.
Cloth 쉐이더는 벨벳 재질을 표현하는 쉐이더로 공통 프로퍼티에서 Sheen Color와 Sheen Roughness 프로퍼티를 추가로 제어할 수 있습니다.
- 컬러 그레이딩 옵션이 항상 켜져있는 상태로 작업합니다.
- Sheen Color: 패브릭 표면에 생기는 광택컬러를 조절할 수 있습니다.
- Sheen Roughness: 광택의 거칠기를 조절할 수 있습니다.
- Cloth 쉐이더는 Metallic, Smoothness의 수치에 따른 변화가 Lit 쉐이더와는 다르게 나타납니다.
CustomEnv 쉐이더는 기존 scene에 환경을 반사하는 Lit 쉐이더에서 유저가 원하는 커스텀 환경을 반사할 수 있게 제작된 쉐이더로, 제페토 기본 환경에서 표현하기 어려운 고 광택이나 보석 재질을 표현할 수 있습니다.
- 컬러 그레이딩 옵션이 항상 켜져있는 상태로 작업합니다.
- Env cubemap: 반사시킬 HDRI리소스를 적용합니다.(해당 텍스쳐의 Texture Shape은 Cube로 설정 되어있어야 합니다.)
- Env horizontal rotation: 머테리얼에 반사되는 HDRI 리소스를 회전시킵니다.
- CustomEnv 쉐이더는 Metallic, Smoothness의 수치에 따른 변화가 Lit 쉐이더와는 다르게 나타납니다.
Fur 쉐이더는 털 재질을 표현할 때 사용되는 쉐이더로 기존 Metallic, Smoothness 프로퍼티에 Fur 관련 프로퍼티와 Lighting 관련 프로퍼티가 추가 되었습니다
여기에 반복되는 퍼의 느낌을 표현하기 위해 NormalMap 타일링이 Albedo, MetallicSmoothness 맵 타일링과 별도로 존재합니다.(노말맵이 fur의 offset 되는 방향에 영향을 줍니다.)
- 컬러 그레이딩 옵션이 항상 켜져있는 상태로 작업합니다.
Fur Property
- FurMap: Fur관련 property에 사용되는 텍스쳐로 R채널에 Fur패턴, G채널에 Fur마스크, B채널에는 중력에 영향을 받는 정도를 제어합니다.
- Fur Length: Fur의 길이를 조절합니다.
- Fur Density: Fur의 밀도를 조절합니다.
- Edge Density: 개체 가장자리의 털 밀도를 조정합니다.
- Fur Gravity: Fur가 offset되는 방향을 조절합니다.
Lighting Property
- Fur Occlusion Color: Fur 사이사이에 Occlusion 컬러를 조절 할 수 있습니다.(Fur의 깊이감이 생깁니다.)
- Fur Occlusion Strength: Fur Occlusion의 강도를 조절합니다.
- Rim Light Mode: Fur가장자리부분의 빛느낌을 선택합니다.(None - 없음, Natural - Albedo컬러에 맞게 자연스럽게, AmbientLight - 씬에 환경광에 맞게, UserDefined - 사용자지정)
- Rim Factor: 가장자리 부분의 빛 영역을 조절합니다.
- Use Directional Fresnel: 빛을 받는 부분에만 RimLight를 사용합니다.
❗️ 주의사항
모바일 특성상 최적화를 위해서 Fur 쉐이더에서 계산되는 offset패스는 7개만 사용하고 있습니다. 따라서 Fur Length를 길게하면 털이 자연스럽지 않게 보입니다. 길이가 긴 모피를 표현할 때에는, 크게 모델링하는 것을 추천합니다.
Iridescence 쉐이더는 오브젝트 표면에 얇은 필름 코팅층을 씌웠을 때 보이는 무지개 빛의 필름 코팅쉐이더입니다. 필름 코팅층에 생기는 무지개빛 컬러는 사용자가 직접 설정할 수는 없고 [Hal Open Science]에서 제시하는 계산법에 의해 자동으로 생성됩니다.
- 컬러 그레이딩이 켜져있을 경우 Iridescence 표현이 잘 나타나지 않을 수 있습니다.
- Thickness: 코팅층의 두께
- η2: 필름 코팅층 매질의 굴절률
- η3: base 물체 매질의 굴절률
- κ3: The value of calculating the internal complex refractive index η3 + i κ3 of the base material
- Controllable scale: 여러층에서 spread되는 빛의 각도를 강제로 scale하는 값을 조절
- Iridescence쉐이더는 Metallic, Smoothness의 수치에 따른 변화가 Lit 쉐이더와는 다르게 나타납니다.
👍 Iridescence 쉐이더를 사용할 때는 직접 각각의 프로퍼티를 조절해보며 표현하고자하는 느낌에 가깝게 맞춰보는 것이 좋습니다.
Sparkle쉐이더는 오브젝트 표면에 흩뿌려져있는 얇은 조각층에서 반사되는 빛을 표현하는 쉐이더로 빛과 카메라 방향에 따라서 달라지는 효과를 나타낼 때 사용됩니다.
❗️ 주의사항 쉐이더에서 사용되는 Noise 리소스는 쉐이더 자체에 내장되어있기 때문에 별도로 수정할 수는 없고, 아래의 프로퍼티에서 느낌을 조절 할 수 있습니다.
- 컬러 그레이딩 옵션이 항상 켜져있는 상태로 작업합니다.
- Noise Intensity : 반짝이는 정도를 조정합니다.
- Noise Concentration: 반짝임이 보이는 영역을 조절합니다.
- Noise Size: 반짝이의 사이즈를 조절합니다.
- Noise Density: 반짝이의 밀도를 조절합니다.
📘 다음 가이드를 참고하여 주세요. Toon Shader
hairAlpha 쉐이더는 hair를 제작할 때 사용되는 쉐이더로, 기존 제페토 hair 쉐이더에서 Alpha 지원 및 Bridge(헤어 컬러에 영향을 받지 않는 부분)를 표현할 수 있게 수정 되었습니다.
- 기본 머테리얼 세팅은 제페토 앱에 포함된 헤어 텍스쳐가 연결되어 있기 때문에 원하는 느낌의 Alpha 텍스쳐를 사용하는 경우가 아니라면 별도의 수정없이 사용합니다.
- 헤어의 경우 기본 RenderType이 Transparent이기 때문에 렌더큐를 조절할 경우, 다른 투명 머테리얼과 중첩하여 문제가 발생할 수 있습니다. 따라서 렌더큐는 수정하지 않습니다.
- 헤어를 제작할 때 겹쳐지는 메쉬에 알파소팅 현상을 해결하기 위해서 머테리얼을 여러개 설정한 후 렌더큐를 다르게 설정해서 해결하는 경우가 많습니다. 이 경우 여러개의 머테리얼을 설정하는 것이 아닌 하나의 머테리얼(렌더큐3000)로 버텍스 넘버를 조절하여 해결할 수 있습니다.
❗️ 주의사항
보통 투명한 메쉬를 렌더링 할 때, 버텍스 넘버가 낮은 순서에서 높은 순서대로 차례대로 그립니다. 이때 나중에 그려지는 메쉬는 앞으로 나온 것 처럼 보이게 됩니다.
3D 모델링 프로그램에서는 임의로 버텍스 넘버를 수정할 수 없지만, 메쉬를 합치는(마야에서는 Combine, 블렌더에서는 Join)순서에 따라 나중에 합쳐지는 메쉬의 버텍스 넘버가 높게 설정되기 때문에, 하나의 머테리얼에서도 알파소팅 현상을 해결할 수 있습니다.
📘 다음 가이드를 참조하십시오. [How to solve transparent material alpha sorting issue]