그래픽(기타)

(SRP)벽 뒤 실루엣 심화

에페아 2021. 4. 26. 15:41

이전 글과 이어지는 내용입니다

gimchicchige-mukgoshipda-1223.tistory.com/36

 

(SRP)벽 뒤에 있을 때 실루엣이 나오는 효과 만들기

먼저 Project Settings → Graphics 에 들어가면 현재 적용된 파이프라인을 볼 수가 있습니다 저걸 이제 클릭해서 들어가게 되면 이렇게 기본으로 만들어져있는 렌더러가 끼워져있습니다. 이걸 이제 새

gimchicchige-mukgoshipda-1223.tistory.com

 

그냥 저렇게 단색으로 채워져있는 실루엣도 괜찮긴 하지만

실루엣을 다른 식으로 그려도 재밌겠죠

그래서 이번엔 한번 실루엣을 외곽선만 나오게끔 만들어보겠습니다

 

먼저, 실루엣으로 사용할 외곽선 셰이더를 만들어보겠습니다

외곽선 셰이더에 관한 내용은

gimchicchige-mukgoshipda-1223.tistory.com/21

 

유니티 SRP 셰이더 그래프 - 13

1. 2Pass 아웃라인 저번엔 프레넬로 아웃라인을 만들었었는데 이번엔 멀티패스를 사용해서 아웃라인을 만들어봅시다 1 - 멀티패스 사용하기 일단 멀티패스를 사용하는 방법이 SRP 환경에서는 좀

gimchicchige-mukgoshipda-1223.tistory.com

요 게시글 중간에 써놓았으니 궁금하시면 이쪽에 들어가서 보시면 됩니다

 

다 만들고 나서 이전처럼 렌더러 파일을 만든 후, Renderer Feature를 2개 추가해줍니다

아래에 있는 Renderer Feature 를 먼저 수정해주겠습니다(저게 그리는 순서라서 그대로 따라하실 분은 반드시 더 아래에 있는걸 수정해야 합니다 안그러면 나중에 이상하게 나와요)

저기에서 외곽선을 그려줄겁니다

여기까지는 이전 포스팅과 동일합니다

근데 이렇게 하면 이전과 똑같이 만들었으니까 외곽선이 아니라 안쪽이 다 채워져있는 실루엣이 나오겠죠?

 

그래서 여기서 이제 스텐실 이라는 걸 사용할겁니다

간단하게 설명하면 내가 있던 자리에 값을 남기는 건데, 말로만 하면 어려우니 계속 만들면서 이해해보도록 합시다

아까 건드리지 않았던 위에있는 Renderer Feature 를 꺼내줍시다

캐릭터가 그려지는 자리에 1이라는 값을 그려주기 위해 스텐실을 켜주고 Value 를 1로 맞춰줍니다

그리고 Z Fail 부분을 Replace 로 맞춰주었는데

Z Fail은 '내 깊이값이 더 앞에있는 애들한테 묻혔을 경우' 대충 이런걸 뜻하고,

그럴 경우에는 스텐실 값을 어떻게 할건지 옆에 리스트에서 선택을 해주는겁니다.

여기에선 Replace를 선택했으니까 스텐실값을 1로 다 채워버리게 되죠

직접 눈에 보이진 않지만, 실제 값을 보면 이런식으로 적용이 되는거죠

여기서 이제 저 값의 차이를 가지고 실루엣의 안쪽을 안그리도록 외곽선을 구현한 Renderer Feature를 수정해보겠습니다

외곽선 쪽에서도 마찬가지로 Stencil을 켜주시고, Value 를 1로 맞춘 후에,

Compare Function을 Not Equal 로 바꿔줍니다.

저 Compare Function은 '어떤 경우에 나를(스텐실값 말고) 그릴 것이냐' 하는 걸 선택하는겁니다

이 경우에는 Value를 1로 해놓고, Not Equal 을 선택했기 때문에

내가 그리려는 자리의 스텐실 값이 1이 아닐때만 그리게 됩니다

 

실제로 적용된 모습을 보면

위에서 값이 1로 채워져있던 부분이 다 날라간 걸 볼 수 있죠

이렇게 해서 외곽선만 나오도록 하는 것이 끝났습니다

 

 

응용해보면 뭐 여러가지 만들어 볼 수 있는데

이런식으로 실루엣은 항상 나오되, 캐릭터를 클릭했을 경우에는 외곽선도 추가로 나오는 기능도 만들 수 있습니다

 

클릭시 외곽선 나오는 건 스크립트 연동을 하긴 했는데

'암튼 이런것도 만들 수 있다~' 라는 걸 보여드리려고 한번 만들어보았습니다

반응형