이전 글과 이어지는 내용입니다
gimchicchige-mukgoshipda-1223.tistory.com/36
그냥 저렇게 단색으로 채워져있는 실루엣도 괜찮긴 하지만
실루엣을 다른 식으로 그려도 재밌겠죠
그래서 이번엔 한번 실루엣을 외곽선만 나오게끔 만들어보겠습니다
먼저, 실루엣으로 사용할 외곽선 셰이더를 만들어보겠습니다
외곽선 셰이더에 관한 내용은
gimchicchige-mukgoshipda-1223.tistory.com/21
요 게시글 중간에 써놓았으니 궁금하시면 이쪽에 들어가서 보시면 됩니다
다 만들고 나서 이전처럼 렌더러 파일을 만든 후, 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로 채워져있던 부분이 다 날라간 걸 볼 수 있죠
이렇게 해서 외곽선만 나오도록 하는 것이 끝났습니다
응용해보면 뭐 여러가지 만들어 볼 수 있는데
이런식으로 실루엣은 항상 나오되, 캐릭터를 클릭했을 경우에는 외곽선도 추가로 나오는 기능도 만들 수 있습니다
클릭시 외곽선 나오는 건 스크립트 연동을 하긴 했는데
'암튼 이런것도 만들 수 있다~' 라는 걸 보여드리려고 한번 만들어보았습니다
'그래픽(기타)' 카테고리의 다른 글
(Unity shader)물 만들기 복습 (1) | 2021.05.12 |
---|---|
(SRP)파이프라인 에셋의 잔 버그들 (0) | 2021.04.26 |
(SRP)벽 뒤에 있을 때 실루엣이 나오는 효과 만들기 (0) | 2021.04.25 |
유니티 SRP 셰이더 그래프 - 15 (0) | 2020.02.16 |
유니티 SRP 셰이더 그래프 - 14 (0) | 2020.02.12 |