09. 시야 연출 4 - Elysia-ff/UE4-Custom_Stencil_Tutorial GitHub Wiki
Post Process 추가
BP_Hitman
-> LosComponent
의 스텐실을 First bit (1), ignore depth
, 1
로 지정한다.
캐릭터의 시야가 닿는 곳은 버퍼가 1로 채워진다.
먼저 스텐실 값을 검사하고 첫번째 비트가 켜져있는지 확인하는 코드가 필요하다.
다음 단계에서도 사용할 코드이기 때문에 Material Function MF_IsStencilMasked
로 만들어 놓겠다.
입력으로 스텐실 값과 마스크비트를 받고 마스킹되어있는지 확인 후 결과를 반환한다.
그다음 Place Actors -> Volumes -> Post Process Volume을 Level에 끌어다 놓는다.
모든 위치에 대해 Post Process를 적용할 것이므로 Post Process Volume Settings -> Infinite Extent (Unbound)를 체크한다.
새 마테리얼을 생성하고 Rendering Features -> Post Process Materials에 등록한다.
이제 마테리얼에 스텐실 버퍼의 첫번째 비트가 켜져있는 곳은 밝게, 그렇지 않은 곳은 어둡게 렌더링하는 코드를 추가하면 된다.
먼저 Material Domain을 Post Process로 설정하고
아래 코드를 추가한다.
SceneTexture:CustomStencil
은 스텐실버퍼의 값을, SceneTexture:PostProcessInput0
는 Post Process직전의 렌더링 결과를 반환한다.
스텐실 값의 첫번째 비트가 켜져있는 경우에는 SceneTexture:PostProcessInput0
의 값을 그대로 사용하고 그렇지 않으면 0.2를 곱해서 색을 어둡게 만든다.
이제 실행하면 메시만 원래의 색으로 나오고 다른 부분은 어둡게 표시된다.
메시 때문에 바닥이 보이지 않으니 메시는 화면에 그리지 않되 스텐실 버퍼에는 그리도록 옵션을 변경하면 된다.
BP_Hitman
-> LosComponent
의 Rendering -> Render in Main Pass
와 Render in Depth Pass
옵션을 꺼준다.
그리고 Line Of Sight -> Debug -> DrawDebugLine
옵션도 꺼준다.