환영합니다
지난 강의에서 다룬 바와 같이, 텍스처를 Unpack(언팩)하는 과정은
각 채널에 저장된 값을 드래그 해오는 것으로 간단히 할 수 있었습니다
우리가 사용하는 표면에는 메탈릭 텍스처가 없기 때문에
블루 채널에 저장된 값은 보시다시피 완전히 검정, 즉 0입니다
에디터로 돌아오겠습니다
더블 클릭으로 마스터 머티리얼 인스턴스를 열어보겠습니다
지금까지 이렇게 개별 텍스처에 대한 보조 기능만 있었지만 이제는 이 머티리얼 인스턴스에도
추가하고 싶습니다
여기에 텍스처 사용 여부에 따라 조건부로 활성화할 수 있는 기능이 있었으면 좋겠습니다
조건에 부합하면 사용자에게 특정 파라미터가 노출되도록 할 것입니다
머티리얼 그래프로 돌아가 스위치 파라미터로 쉽게 구현할 수 있습니다
예를 들어 이 조건의 이름을 UsingORM이라 하고
조건의 결과값이 true일 경우 ORM 텍스처의 출력이 최종 출력 값이 되도록 하고
결과값이 false라면 디폴트 값이 최종 출력 값이 되는 것이며 여러분이 충분히 구현할 수
있습니다
여러분의 과제는 스위치 파라미터를 사용해 UseORM 조건을 활성화 시켜주는 것입니다
그리고 사용자들이 직접 ORM에서 나오는 값들을 제어할 수 있는 파라미터를 생성하는 것인데
디폴트 텍스처 입력 값에 대한 제어는 이미 가능하지만 ORM 텍스처에도
이와 같은 제어를 통해
통제하기 위함입니다
그리고 마지막으로 사용자에게 텍스처 파라미터를 노출시키는 것입니다
머티리얼 인스턴스의 조건이 부합할 경우 이 파라미터가 보여지고
관련이 없는 파라미터들은 숨겨져 보이지 않도록 하는 것입니다
스스로 할 수 있을지 도전해 보시고, 만약 성공한다면 여러분들은 이제 마스터 머티리얼 내
거의 모든 타입의 텍스처에 이러한 보조 기능을 구현할 수 있을 것입니다
그럼 영상을 멈추고 도움이 필요하시면 돌아오시기 바랍니다
어떠셨나요?
성공적으로 Channel Packed(채널 패킹)된 텍스처에 지원 기능을 추가했나요?
축하합니다
성공하셨다면 말입니다
굉장한 진전입니다
성공하지 못했더라도
걱정하지 않으셔도 됩니다
어떻게 하면 좋을지 같이 살펴보겠습니다
그래서 일단 이 부분으로 내려가 보겠습니다
텍스처 파라미터를 하나 더 추가하려고 합니다
Texture Sample Parameter를 입력합니다
이름은 ORM으로 하고 sRGB를 사용하지 않기 때문에 Sampler Type은
Linear Color로 바꾸겠습니다
UV에는 이 캐시된 입력 값을 사용하겠습니다
그래서 이걸 UV 소켓에 플러그 한 다음 레드 채널에서 나오는 값은
AO라는 것을 알고 있기에, 이를 드래그해서 Named Reroute 노드를 입력하고
이름은 ORM_CachedAOOutput이라 합니다
기본 텍스처는 이런 식으로 제어를 했습니다
Multiply 노드와 스칼라 파라미터를 사용했습니다
여기에도 동일한 작업을 해주겠씁니다
Multiply 노드를 꺼내 레드 채널에서 나오는 값을 소켓 A에 꽂아주고
이것은 최종 출력 값에 넣어주고 소켓 B에는 스칼라 파라미터를
연결합니다
이름은 ORM Strength 라고 하겠습니다
그리고 잊기 전에 이 파라미터들을 분류해 주겠습니다
우선 이것을 DefaultTexture로 설정하고 이 Preview Texture(프리뷰 텍스처)를 BlackPlaceholder로 설정해
이후에 생길지도 모르는 오류를 방지해 두고
따로 그룹에 넣어줍니다
이 이름은 ORMTexture로 바꾸어 다른 이름 규약들과 맞춰주고
그룹에 넣어주겠습니다
이름은 07-ORM이라 하고, 이 텍스처 파라미터가 첫 번째이길 원하기 때문에
1을 입력해주고 설정하고 이 스칼라 파라미터도 이 그룹에 넣은 다음 Sort Priority
2로 설정합니다
좋습니다
그리고 이것을 소켓 B에 넣어주고 기본 값은 1로 합니다
그러면
이것이 출력 값이 됩니다
다 됐습니다
다음은 Roughness(러프니스) 출력 값입니다
끌어와서 Named Reroute 노드를 블러와
ORM_CachedRoughnessOutput 이라 부르겠습니다
역시 Roughness(러프니스)의 강도를 제어할 수 있도록 해야하는데
상기시켜드리기 위해 디폴트 Roughness(러프니스) 출력 값으로 돌아갑니다
이런 식으로 했었습니다
Lerp 노드를 사용해 RoughnessTexture에서 나오는 값을 사용해 MinRoughness와 MaxRoughness
사이에 위치한 값을 구합니다
여기에도 동일한 작업을 해주기 위해 L을 꾹 눌러 Lerp를 불러오고
값을 Alpha 소켓에 플러그 합니다
소켓 A에는 최소 Roughness(러프니스)를 원하기 때문에
ORM_MinRoughness라 하고 디폴트 값은 0.2로 하고
최대값은 1로 고정합니다
1보다 큰 값을 원치 않으며 이걸 소켓 A에 연결하고 07-ORM 그룹에 넣어줍니다
그리고
순서는 3으로 한 후, 이제 S를 꾹 눌러서 ORM_MaxRoughness를 만듭니다
디폴트 값은 0.8로 합니다
이 최대값도 1로 고정하고 그룹에 넣어 4 순위로 설정합니다
그러면 이걸 소켓 B에 꽂고 이건 캐시 노드에 연결합니다
그 다음에 색은 오렌지 빛으로 바꿔주도록 하겠습니다
이 둘을 확실히 구분할 수 있게 하기 위함입니다
좋습니다
이 노드를 끌어당겨서 조금 정리를 하겠습니다
그리고 마지막으로 블루 채널은 메탈릭 텍스처인데
디폴트 메탈릭 텍스처에 대해 상기시켜 드리자면
우선 스위치 파라미터를 사용해 머티리얼이 메탈릭 텍스처를 갖고 있는지 확인했습니다
true일 경우 이것이 최종 출력 값으로 통과됩니다
fasle일 경우 디폴트 값 0을 사용했습니다
그리고 머티리얼이 금속일 경우에도 이것이 최종 출력 값으로 가도록 되어 있습니다
그러므로 텍스처나 값 둘 중 하나가 되는 것인데
만약 금속이 아닐 경우 0의 값을 최종 출력 값으로 보냅니다
하지만 ORM에서는 저 과정을 모두 다시 할 필요가 없습니다
이 값을 캐시하면 됩니다
Named Reroute 노드에 ORM_CachedMetallicOutput이라고 이름을 짓습니다
만약에 ORM 텍스처가 메탈릭 텍스처를 갖고 있으면 여기에 저장될 것이고
만약 금속이 아닐 경우 값은 그냥 0이 되고 완전히 검정색이 됩니다
그러니 일일이 할 필요가 없습니다
색상은 보랏빛으로 바꿔주겠습니다
좋습니다
이런 식으로
ORM 텍스처가 완성되었습니다
전체 선택하여 ORM이라고 코멘트를 달아주고 나면, 드디어 최종 출력할
차례입니다
한 번 생각해 봅시다 Base Color(베이스 컬러) 출력 값에는 무엇을 사용하든
최종 출력이 되지 않길 원합니다
메탈릭의 경우 ORM을 사용하고 있는데 이것이 출력되지 않기 원하면
또 다른 스위치 파라미터를 추가해 UseORM이라고 지어주겠습니다
그리고 바로 Global Control 그룹에 넣습니다
조건이 false일 때 가장 먼저 설정하고 싶은 파라미터 중 하나입니다
이것이 최종 출력 값으로 보내지기 원하고 만약 조건이 true일 경우
ORM_CachedMetalicOutput을 여기 true에 연결시키고
그리고 이것을 메탈릭 소켓에 연결합니다
이 Sort Priority 설정은
4로 설정할 것인데, 그 이유는 이 Adavnced UV Control이 3이기 때문입니다
좋습니다
이 스위치 파라미터의
Sort Priority를
설정하겠습니다
4로 설정합니다
좋습니다
메탈릭도 마찬가지로
마무리되었습니다
Specular(스페큘러)로 내려가 봅시다
이 부분은 건드리지 않아도 되는데 ORM 텍스처 사용 여부와 상관 없이
Specular(스페큘러)를 사용할 것이기 때문입니다
하지만 Roughness(러프니스)는 작업이 필요합니다
ORM을 사용할 때는 이 캐시된 Roughness(러프니스) 출력 값을 사용하고 싶습니다
그러므로 이 스위치 파라미터를 복사하여 붙여놓고 false일 때는 이것이 통과될 것입니다
true일 경우에는
CachedRoughnessOutput을 true에 연결해주고 이를 최종 Roughness에 연결해줍니다
노멀은 중요하지 않기 때문에
아무것도 바꾸지 않아도 됩니다
Ambient Occlusion(앰비언트 오클루전)에는 이 스위치 파라미터를 복사하여
false일 경우 통과될 것이고, true일 경우에는
CachedAOOutput을 사용해서
이것을 true에 연결시키고, 최종 출력 값으로 연결합니다
Named Reroute 노드가 아니었으면
교차되는 선들이 굉장히 많았을 것이며 머티리얼 그래프 많이 지저분해
보였을 것입니다
Apply를 클릭해 적용 후
머티리얼 인스턴스로 돌아가보면
UseORM 박스를 체크하면 ORM 텍스처 사용 및 제어가 가능해집니다
보시면 무관한 파라미터는 사라지고 이 새로운 파라미터가 보여집니다
이 ORMTexture를 클릭해 활성화시키고 텍스처를 넣어주겠습니다
이것을 이 소켓에 드래그하면 ORM_MinRoughness와 ORM_MaxRoughness를 제어할 수 있습니다
예를 들어
이것을 줄이거나 키울 수 있습니다
하지만 이 값이 괜찮은 것 같습니다
표면에 멋진 마무리 작업을 추가해주는 것 같습니다 만약 제가 마음을 바꿔 더 이상 이것을 사용하고 싶지
않다면
이 개별 텍스처들을 사용하고 싶다면
언제든 비활성화하여 다른 파라미터들을 노출시킬 수 있습니다
이번 강의에서는 마스터 머티리얼에 추가로 보조 기능을 구현해 보았습니다
단일 스위치 파라미터로 기본 파라미터들을 노출시키거나
ORM 파라미터를 노출시키도록 했습니다
수고하셨습니다
이제 원하는대로 마스터 머티리얼을 개조할 수 있습니다
원하는 어떤 타입의 텍스처도 이러한 보조 기능을 구현할 수 있습니다
다음 강의에서 뵙겠습니다