본문 바로가기
유니티 엔진

유니티 URP 멀티 렌더 오브젝트 기법으로 겹쳐진면 투명화하기

by 대마왕J 2020. 1. 3.


뭐 이런걸 하려는데.. 

보통 레거시에서는 스텐실을 이용했습니다. URP에서도 스텐실이 있는 것 같던데 .. 


여하간 


Daniel Santalla

@danielsantalla

님의 트윗을 바탕으로 https://twitter.com/danielsantalla/status/1212766169381441537?s=20

따라하면서 연구해 보려 합니다. 

아직 시험 기능이라 완벽하게 정리된 건 아닌 것 같고.. 


일단 이렇게 만들어 봤습니다. 


저 캡슐은 캐릭터라고 치고, char 레이어를 만들어서 적용시켜 놓은 것이 다른 점입니다. 



기본 셋팅은 이렇습니다. 

그 뒤에 이제 파이프라인을 하나 만들겠습니다. 있는거 써도 돼요 



그럼 파이프라인 에셋과 렌더러도 하나 만들어집니다. 기본적으로 포워드. 

파이프라인 에셋에는 저 렌더러가 이미 적용되어 있을겁니다. [각주:1]




프로젝트 셋팅에서 그래픽 탭을 선택하고, 스크립트 렌더 파이프라인 셋팅에서 아까 만든 파이프라인 에셋을 적용해 줍니다. 


그리고 이렇게만 하면 적용 안됩니다. 

Quality 에서도 파이프라인 에셋을 적용해 줘야 제대로 됩니다 



그 후 파이프라인 어셋을 선택하면, 어떤 렌더러 에셋이 적용되어 있는지 찾을 수 있고, 선택할 수 있습니다. 

선택해 봅시다. 


렌더러 에셋을 선택하면 아래와 같습니다. 이 부분 까지가 좀 어렵습니다. 익숙해지면 별 게 아닌데 조금 알아보기 힘들어요 



위에까지 제대로 했다면 char 만 날려보면, 이렇게 됩니다. 


char 만 깔끔하게 날라갔습니다. 이게 제대로 안된다면 위에 뭔가 제대로 따라 안하신 겁니다. 체크 꼼꼼하게 하셔야 할듯



이렇게 되면 이제는 


렌더링 피쳐에서 렌더 오브젝트를 추가해 줍니다. 


렌더 오브젝트를 추가해 주고, 

레이어 마스크에서 char만 보이도록 추가해주면 


이제 제대로 보이는 것을 볼 수 있습니다. 없어졌던 캐릭터가 다시 나옵니다. 

와 근데 이거 자세히 파보는 것도 재밌겠네요.. 이벤트 쪽을 보면 그리는 타이밍이 나옵니다. 이거 구조를 제대로 한 번 알아보고 싶군요 






마치 멀티 렌더타겟 같은 느낌인데요. 이게 어떤 건지 나중에 일단 알아보기로 하고.. 


추가로 이제 하나 더 렌더 오브젝트 추가해 줍니다. 

아래처럼요 



레이어 마스크는 char이고, 

이번엔 댑스 가지고 장난질을 좀 쳐야 합니다. 

이 부분은 셰이더 책을 보신 분에게는 익숙할듯. 


댑스를 켜서 활성화 시키고, 

댑스를 쓰는건 끕니다. (Zwrite off) 

그리고 댑스 테스트 - 깊이 테스트 - 는 

무조건 크면 나오게 합니다. 즉 가려지면 그려지게 하는 겁니다. 


이렇게 되면, 가려지는 부분에만 그려지게 됩니다. 


즉 위의 렌더 오브젝트를 잠시 끄고 아래것만 보면 이렇게 됩니다. 


겹쳐지는 부분만 나오죠. 


이제 저 겹쳐지는 부분만을 위한 메터리얼을 만들어 줍니다. 


마침 이렇게 쉬운 기능이 .. 있어요 



이걸로 메터리얼 만들어서 


이렇게  아래쪽, 즉 겹쳐지는 부분만 나오는 렌더 오브젝트의 메터리얼에 오버라이드 해줍니다. 



그러면


이렇게 되는거죠. 


여러 군데 응용할 것들이 보입니다. 






  1. 이미 있는 파이프라인 에셋을 쓴다면 렌더러만 하나 더 만들어주면 됩니다. [본문으로]
반응형

댓글