odyssey

#12 odyssey 개발일지 : 셰이더 그래프로 지형 외각선 만들기

san10 2023. 6. 24. 04:59

이제 셰이더를 통해 바다와 환경광을 구현하려고 한다...

원래는 그러려고 했는데

내가 모르는 사이에 SRP라는 렌더링 파이프라인이 나왔다.

 

고3때 갑자기 (유니티도 모르면서) 셰이더에 관심이 생겨서

급발진으로 책을 두권을 샀는데..

유니티 쉐이더 스타트업은 반도 안읽었고

유니티 물리 기반 셰이더 개발은 펼치지도 않음..^___^

그랬는데 그새 새로운 기술이 생기다니..

 

SRP

원래는 바다 셰이더를 구현하려고 이것저것 자료를 찾아봤는데

셰이더를 블록코딩마냥 노드로 연결해서 구현하길래 

찾아보니깐 SRP라는게 새로 생겼다.

 

원래는 유니티에서 서피스 셰이더와 버텍스&프래그먼트(픽셀) 셰이더를 지원했는데

2018년부터 Scriptable Render Pipeline 라는 새로운 렌더링 파이프라인을 공개했다.

그리고 이전에 쓰던 파이프라인을 빌트인 파이프라인이라고 부르게 되었다.

 

사실 이전에 지형 외각선을 만들때는 빌트인 파이프라인, 그 중에서도 서피스 셰이더를 이용해서 만들었는데..

그래서 빌트인 파이프라인으로 계속 만들지. SRP로 만들지 고민을 좀 했었다.

무조건 SRP라고 좋은건 아닌것 같고 버그나 최적화 문제도 있는것 같긴한데

그래도 SRP(중에서도 URP)를 사용해보기로 했다.

 

 

URP로 프로젝트 변경

프로젝트를 생성할때 일반적인 2D로 생성을 했어서

URP로 변경을 했다.

https://www.youtube.com/watch?v=KnueAgpUL3Y&list=PLsPC1W5E9IRTc-Urd0Y1OaXQSv1SzxVwp&index=5&t=5350s 

 

이 영상을 참고해서 변경했는데..

문제가 URP에셋 설정하고 에셋 업그레이드를 했는데도

기존에 만들어놨던 지형 셰이더가 깨진다..

^______^

셰이더 코드나 설정을 좀 건드려봤는데도 잘 안되서..

그냥 셰이더 그래프로 새로 만들었다.

 

 

셰이더 그래프로 지형 외각선 구현

https://san10.tistory.com/5

 

#2 odyssey 개발일지: 지형 외각선 만들기

컨셉아트를 보면 알겠지만 odyssey에는 모든 물체에 얇은 선이 있다. 대부분 리소스는 그려서 넣기에 선이 있는 채로 존재하겠지만 지형은 유니티에서 직접 만들기 때문에 선이 존재하지 않는다.

san10.tistory.com

이때 만들었던 셰이더을 URP로 만들어보려고 한다!

 

셰이더가 복잡한건 아니라 금방 만들줄 알았는데

좀 찾아보니깐 URP에서는 멀티패스를 지원하지 않는다고 한다..

그래서 안된것같기도 하고..URP에서 멀티패스를 구현하는 여러가지 방법들이 있는데..

그중에서도 Mesh Renderer에서 머테리올을 두번 그리게 하는 방법을 사용했다..

https://blog.naver.com/mnpshino/221850973199

 

UPR 셰이더 코딩 튜토리얼 : 제 2편 - SRP Batcher와 MultiPass Outline

안녕하세요 마둠파입니다. URP에 대해서 파다보니 재미있어서 좀 더 파봤습니다. 바로 2편 시작할게요. ...

blog.naver.com

이 블로그를 참고해서 만들었다!

 

이전에 만들었던 것과 비슷하게,

원래 그려야 할 지형 셰이더와

버텍스 위치를 조금 올린 아웃라인 셰이더 두개를 만들었다.

 

그리고 meterials에 셰이더를 2개 추가하면..

 

결과물이 이렇게 나왔다!

근데 땅 색이 묘하게 밝길래..

설정을 Lit에서 Ulit으로 바꿨더니

결과적으로 이렇게 나왔다!