[URP 함정] Unity는 URP의 RenderTexture를 사용하여 UI에서 투명한 카메라 배경으로 후처리 장면을 렌더링합니다.

Tip: 글 작성 후 자동으로 목차가 생성될 수 있으며, 생성 방법은 오른쪽 도움말 문서를 참고하시기 바랍니다.


머리말

최근 프로젝트 개발을 위해 Unity의 URP 유니버설 파이프라인을 사용해야 한다는 요구 사항이 있었는데, 시나리오 중 하나에서는 UI에 동적 캐릭터 모델을 표시해야 했고 배경은 투명했습니다. 이 요구사항에 대해 처음 들었을 때는 매우 간단해 보였는데, 일반적인 파이프라인에서 Rendertexture를 사용하여 카메라 관점의 내용을 출력하고 이를 RawImage에 입력하면 쉽게 해결할 수 있습니다. 그러나 URP에서는 자유도를 반영하기 위해 프로그래밍 가능한 파이프라인(SRP)의 Unity는 공식적으로 RenderTexture를 사용하여 PostProcessing을 렌더링합니다. 모든 알파 값은 기본적으로 1을 반환합니다. 간단한 설명은 PostProcessing이 더 이상 Rendertexture에 반투명 채널을 표시하지 않는다는 것입니다.


1. 구현 아이디어

많은 정보를 검색한 결과 여러 가지 해결책도 찾았습니다. 개인 테스트를 해본 결과 모두 쓸모가 없었지만 다음과 같은 아이디어도 얻었습니다. PostProcessing은 Rendertexture에서 Alpha 채널을 반환하지 않지만 PostProcessing의 카메라가 그렇지 않은 한 표시되면 정상적으로 Rendertexture로 사용할 수 있습니다.알파를 출력하려면 두 대의 카메라를 사용합니다.한 카메라는 PostProcessing 렌더링을 켜고 다른 카메라는 PostProcessing을 켜지 않습니다.Shader를 사용하여 RenderTexture 출력의 픽셀을 두 카메라에 곱하여 필터링합니다. PostProcessing을 사용한 Rendertexture의 배경 마지막으로 출력에 대해 이야기해 보겠습니다. 그림을 UI에 표시할 수 있습니다.

2. 개발 환경

Unity2021.3.13f1c1
URP12.1.7
Amplify Shader Editor v1.9.1.5

3. 사용 단계

1. 픽셀 융합을 위한 셰이더 생성

Shader를 생성하기 위해 ASE 타사 Shader 비주얼 편집기를 선택했습니다(Shader 초보자에게 적합한 간단한 작업).

  1. UI에 표시하고 싶기 때문에 UI 기본 셰이더를 만듭니다. Create/Amplify Shader/UI/Default;
  2. 원리는 비교적 간단하므로 여기서는 자세히 설명하지 않겠습니다.아래 그림을 참조하세요.여기에 이미지 설명을 삽입하세요.

2. 렌더링 카메라 만들기

  • 기본 카메라를 만듭니다. 이 카메라는 후처리 효과를 렌더링하지 않습니다. 배경 유형은 단색으로 설정되고 색상 알파는 0으로 설정됩니다.여기에 이미지 설명을 삽입하세요.
  • 후처리 카메라를 만들고 배경 유형을 단색으로 설정하고 색상 알파를 0으로 설정합니다.여기에 이미지 설명을 삽입하세요.

3. 렌더 텍스처 생성

이전 단계에서 두 카메라에 대한 Rendertexture를 생성하여 카메라에서 렌더링된 콘텐츠를 출력하고 이를 카메라의 OutputTexture로 드래그한 다음 두 Rendertexture의 Colorfomat을 R16G16B16A16_SFLOAT로 변경합니다.

4. Rawimage를 재료로 렌더링

  • 이미지를 혼합하는 셰이더 만들기여기에 이미지 설명을 삽입하세요.

  • 재료 공을 RawImage로 드래그하는 방법에 대해 이야기
    여기에 이미지 설명을 삽입하세요.

5. 효과 표시(UI 배경은 노란색)

  • [기본 Rendertexture만 표시되고 배경 투명은 정상이나 PostProcessing 효과는 없습니다]

후처리가 없지만 투명한 배경은 정상입니다.

  • [PostProcessing의 Rendertexture만 표시되고 PostProcessing 효과는 정상이나 배경 투명이 실패함]여기에 이미지 설명을 삽입하세요.
  • [두 개의 렌더 텍스처를 융합한 최종 효과]여기에 이미지 설명을 삽입하세요.

요약하다

URP는 성능과 성능에 초점을 맞춘 Unity의 렌더링 파이프라인으로, 점점 더 많은 시나리오에서 사용되지만 점점 더 많은 함정을 노출하고 있습니다. Unity의 공식 소식에 따르면 URP는 후속 버전에서 기본 렌더링 파이프라인으로 사용될 예정입니다. 우리도 개발의 길에서 유니티와 천천히 친해지도록 하겠습니다.

추천

출처blog.csdn.net/weixin_43559607/article/details/132354524