언리얼 개발/이것저것 테스트

카툰 렌더링 메테리얼 연구 -3

WhNi 2024. 3. 29. 16:27

이어서 보자면 Custom depth 만 화면에서 보려고 하면

 

까맣게 되서 아무것도 안보이게 된다. 원하는 객체에만 효과를 적용하려고 하면 객체 메뉴에서 Render Customdepth Pass 를 체크 해주면 

 

Custom Depth만 켜진 상태이다.

이렇게 보이게 된다. 이 기능은 Outline에서도 사용되기도 한다. 

 

이후에 메테리얼에서 SceneTexture의 CustomDepth-> Component mask (R채널) 을  1-x 해줘야 한다. 1- 는 기존의 내용을 뒤집는 역수같은 느낌이라서 CustomDepth 있는 부분만 아까 했던 렌더링 처리가 되고 나머지는 원래 색감대로 렌더링 되는 것이다.

 

이후에는 Outline에서도 고려할 문제가 나타나는데, CustomDepth를 기준으로 렌더링 되다보니, 다른 액터에서 가려져도 CustomDepth 부분은 보여진다. Outline의 경우는 이렇게 해서 벽 너머의 적이나 객체를 알아볼 수 있게 하는 기능을 의도적으로 연출할 수 있다. 그러나 아닌 경우에는 객체 뒤에 있으면 렌더링 되지 않게 설정해야 한다. 

 

액터뒤에 있다고 한들, 여전히 적용된 모습이다.

그래서 InputData->Scene Depth->Component mask (R채널)을  Custom Depth->Component mask(R채널)로 빼준다. 그 step 하고 1-x 을 했던 결과값을 곱해주면

 

액터에 가려져 렌더링이 안되는 모습이다.

이렇게 가려져서 안보이게 된다.

 

확장성을 위해서 에디터에 Static Switch parameters 노드를 만들어서, Scene Depth을 합친 값을 true로 Custom Depth만 1-x을 false 로 두고, 필요할때마다 체크 해제하여 원하는 효과를 만들면 된다.

 

Switch Param 만들어 놓으면 에디터에서 체크하기 편하다.
켜지면 다른 액터 뒤에서 안보이고, 꺼지면 다른 액터 뒤에서도 보여진다.

 

툰 쉐이딩이 확실히 성능적으로 렌더링 부분에서 부담이 적었다. 

왼쪽이 툰 쉐이딩 off/ 오른쪽이 툰 쉐이딩 on 이다.

다음은 마지막 포스트인 Outline이다. 오히려 길어질 수 있어서 한번에 끝날지는 모르겠다.