WinCNT

URP 14이전 버전에서 커스텀 Post Processing 사용이 안 되는 이슈 본문

Unity/Unity 개발 중 발생한 이슈 정리

URP 14이전 버전에서 커스텀 Post Processing 사용이 안 되는 이슈

WinCNT_SSS 2023. 2. 13. 12:21

발생한 이슈

간단한 포스트 프로세싱을 만들어서 확인보고자

OnRenderImage()이란 API를 이용해서 스크립트를 만들었는데 작동되지 않았다


이슈 상세

쉐이더나 머티리얼 쪽은 문제가 없는 것 같다…

 


발생 원인

사실 원인은 간단했는데 URP에서는 OnRenderImage()를 사용할 수 없었기 때문이었다


해결법

처음에는 ‘그럼 URP 문서를 찾으면 나오겠지~’라고 간단히 생각했었다…

그런데 놀랍게도 URP에서의 커스텀 포스트 프로세싱은 추가된지 얼마 안 된 것 같다

URP 14(Unity 2022.2)의 새로운 기능 소개에서 찾아볼 수 있다

What's new in URP 14 (Unity 2022.2)

 

What's new in URP 14 (Unity 2022.2) | Universal RP | 14.0.6

What's new in URP 14 (Unity 2022.2) This section contains information about new features, improvements, and issues fixed in URP 14. For a complete list of changes made in URP 14, refer to the Changelog. Features This section contains the overview of the ne

docs.unity3d.com

그리고 슬프게도 내 URP 버전은 12.1.9이었다…

그리고 매우 슬프게도 유니티의 버전을 올릴 수는 없었기에 우회 방법을 찾기로 했다

(참고로 시험삼아 2022.2.5버전에서 새 프로젝트를 만들어보니 될 것 같긴 했다)

 

주로 참고한 것은 아래의 블로그

【Unity】Uiversal Render Pipelineでカスタムポストエフェクトを実装する(公式未対応バージョン) - LIGHT11

 

【Unity】Uiversal Render Pipelineでカスタムポストエフェクトを実装する(公式未対応バージョン) -

UnityのUniversal Render Pipeline(URP)でカスタムポストエフェクトを実装する方法についてまとめました。 なおいずれはカスタムポストエフェクトについて公式なサポートが入る予定ですが、この記

light11.hatenadiary.com

OnRenderImage()가 있는 스크립트를 대신할 스크립트가 필요하다

  • VolumeComponent를 계승한 스크립트 => 볼륨에서 포스트 이펙트를 선택할 수 있도록 함
  • ScriptableRenderPass를 계승한 스크립트 => 포스트 이펙트에 대한 렌더링 패스를 만듦
  • ScriptableRendererFeature를 계승한 스크립트 => 렌더 패스를 렌더러에 등록

그리고 렌더러 데이터에 만들었던 Renderer Feature를 추가하면 된다

렌더러 데이터는 설정된 스크립터블 렌더 파이프라인에서 확인할 수 있고,

설정된 스크립터블 렌더 파이프라인은 Project Settings의 그래픽스에서 확인할 수 있다

설정된 스크립터블 렌더 파이프라인의 확인(왼쪽), 렌더러 데이터에 커스텀 포스트 이펙트를 추가(오른쪽)

여기까지하면 프래그먼트 셰이더의 결과를 확인하는데 문제가 없을 것이다

하지만 셰이더에 값을 조정하고 싶거나 할 때에는 볼륨에 컴포넌트를 추가해야 한다

 

그 부분도 참고 사이트에 있지만 내가 사용하는 URP와는 다르게 한 액션이 더 필요했다

그건 바로 볼륨에서 Profile를 적용하는 것!

기존에 있거나 새로 만든 Profile를 Volume에 추가하고

오버라이드 추가를 통해 이번에 새로 만든 VolumeComponent를 추가하면 된다

(VolumeComponentMenu(”Name”)에서 지정한 Name으로 검색 가능)

 

위의 이미지에는 파라미터가 없지만 스크립트를 참고 사이트와 완전히 똑같이 만들면

Tint Color라는 파라미터를 조정할 수 있다

https://light11.hatenadiary.com/entry/2021/08/03/202047


마무리

간단히 확인할 생각이었는데 이렇게 시간이 걸릴 줄은 몰랐다…

확인용으로는 이걸로 상관 없지만 실제로 포스트 이펙트를 사용하려면

제대로 렌더링 패스에 대해서 고려할 필요가 있을 것 같다

제발 빨리 적용된 버전이 퍼졌으면 좋겠다


참고 자료

【Unity】Uiversal Render Pipelineでカスタムポストエフェクトを実装する(公式未対応バージョン) - LIGHT11

 

【Unity】Uiversal Render Pipelineでカスタムポストエフェクトを実装する(公式未対応バージョン) -

UnityのUniversal Render Pipeline(URP)でカスタムポストエフェクトを実装する方法についてまとめました。 なおいずれはカスタムポストエフェクトについて公式なサポートが入る予定ですが、この記

light11.hatenadiary.com

URPで無理やり Custom Post Processing する - Qiita

 

URPで無理やり Custom Post Processing する - Qiita

URPとCustom Post Processing URP (Universal Render Pipeline)における公式実装によるCustom Post Processingは現時点(2020/06/27)で非対応です...

qiita.com