이거 질문한 인붕이인데
오늘 직접 해보면서 배운게 많더라
이 방법을 사용하려했던 이유는
하나의 휴머노이드 아바타를 가지고
범용적인 1인칭 시점 캐릭터를 구성하고싶었음
(캐릭터 별로 어떤 머리카락, 장신구 등이라도 일일히 컬링을 지정안하더라도 화면이 안가려지게)
그래가지고 니어클리핑, 레이어마스크를 통한 컬링은 사용못함
그래서 이런 뜌땨이같은 생각을 했음
음..
렌더링 생명주기에서 시작전에
헤드본스케일을 0으로 줄이고,
끝나면 다시 원상복구 시켜주면 되겠는데???
그래서 머리박음
빌트인에서 콜백으로 호출하는 카메라 이벤트들이 있음
OnPreCull, OnPostRender
그런데 내가 사용하는 URP에서는 지원안함
Renderpipe..~~.BeginCameraRendering인가 이런거로 대체한다고 공식문서 뒤지면서 겨우 찾음
그런데 해보니 스케일을 변경한다는
디버그로그는 잘 동작하는데 실제 렌더링은 스케일이 유지된 상태가 출력됨
뜌땨이 디버깅은 여기서 안멈췄음
스케일을 줄이는 로직만 실행시키거나,
원상복구하는 로직만 실행시켜보니
이건 또 잘 작동하는 것 처럼 보임
그래서 다시 되돌려놓고
프레임디버거를 켜보니 opaque렌더링에서 적용이 안되고 있는걸 봄
나는 이 힌트를 놓치고 아~ 내가 호출하는 타이밍이 이상했구나란 뜌땨이 생각을 하게 되버림
그래서 urp의 ableRendererFeature로 렌더패스 추가해서 beforeOpaqueRendering 시점에 정확히 실행시켜봄 당연히 될리가 없음
다시 프레임디버거를 켜보니
렌더링전에 하는 Skinnded머시깽이가 보임
아 스킨드메시는 이미 본와 이에 따른 메쉬정보를 렌더링전에 미리 계산해버리는구나 라는걸
4시간만에 드디어 깨달았음..
뜌땨이 인붕이 멍청했지만 직접 몸으로 머리박으면서
renderFeature로 렌더패스 추가하는거,
다양한 카메라콜백함수,
게임로직-렌더링의 생명주기를 배웟슴..
댓글 0