-
[ue5] 툰쉐이더 일부 오브젝트에만 적용하기언리얼엔진5 2023. 7. 11. 12:18728x90반응형
배경은 그대로두고
캐릭터나 일부 오브젝트에만 적용하는 법 ..like 원신?
이럴땐 custom depth buffer를 사용하면됨
custom depth 란무엇이냐..
일단 lit 모드를 클릭하고 모드를
buffer visualization> custom depth 선택해보자 그리고 뷰포트로 보면 완전 깜깜 당연함ㅇㅇcustom depth 설정을 안해줘서 안보이는것임 설정을 어떻게하냐? custom depth주고싶은 액터 선택하고 추가해주면됨
액터 stage선택후 디테일패널에서 custom depth 찾아서 체크해줌
Render CustomDepth Pass 에 체크하면됨
이제 다시 머티리얼 노드로 돌아와서
scene texture 추가> scene texture ID를 Custom depth선택.
마스크 컴포넌트 추가한다음 R값만 사용.
대충 이해를 해보자면...
커스텀뎁스 안에 있는경우 픽셀 깊이를 반환하고?
커스텀 뎁스 안에 있지 않는 경우 매우 큰 값을 반환할것임.. 그래서 툰쉐이더가 적용안되게 하나봄?
step노드를 사용하고
y값에 constant 숫자 값 넣어줌. 매우 크게..500000정도?
그리고 step뒤에 1- 노드를 넣어서
커스텀 뎁스 적용되면 1, 아니면 0값이 반환하게 함.
step노드 모야.. 불린같은거야?
아까 하늘부분 격리시키는(멀리있는부분) 노드들 복사해다 붙여넣기 해주고
하늘 격리하는것>A
툰쉐이더 > B
커스텀뎁스 >alpha 에 넣어주자
커스텀뎁스값이 0일경우> 하늘격리 , 1일경우 > 툰쉐이더가 적용 되는것.
그리고 이 lerp 결과값을 뒤에있는 lerp의 a값에 넣어주자.
그리고 뷰포트를보면.. 커스텀 뎁스 적용된 오브젝트에만 툰쉐이더가 적용된것을 볼수있음 하지만 또 여기서 문제가있음 ㅠ
커스텀 뎁스 적용된 물체를 숨겨도 보임... 왜죠... 아까 커스텀뎁스 만들었떤 노드 아래에 scene depth 노드를 추가하고..
component mask로 r값만 뺀다음 subtract노드써서 위의 커스텀뎁스노드에서 scene depth 노드값을 빼줌
그리고 step노드에 넣은다음..
위의 1-x노드결과값과 곱해줌.
그값을 위 lerp의 alpha값에넣어줌
와 여기서부턴 이해를 포기하고 그냥 하는걸로~~
lerp 뒤에 custom depth buffer라는 이름의 switch parameter노드 추가.
앞의 툰쉐이더 (multiply로 끝나는) 노드 더블클릭해서 reroute 점 만들어주고 거기서 뽑아서 false값에 넣어줌
그 결과값은 또 lerp의 a값에 대신넣어줌 커스텀 뎁스 버퍼 스위치의 값이 true일 경우
custom depth 노드 실행되고
false일경우 걍 커스텀뎁스 버퍼 없이 모두 툰쉐이더 실행
728x90'언리얼엔진5' 카테고리의 다른 글
[UE5] 베이스컬러 텍스쳐 발전시키기? (0) 2023.07.11 [ue5] 모래쉐이더 만들기 (0) 2023.07.11 [ue5] Toon shader 툰쉐이더 (0) 2023.07.11 언리얼엔진5 폴리지 최적화하기 (0) 2023.01.20 언리얼엔진5 엔진 컨텐츠 활용하기 (noise brush) (0) 2023.01.19