Version: Unity 6.0 (6000.0)
언어 : 한국어
URP의 렌더 그래프 시스템의 텍스처
URP의 렌더 그래프 시스템에서 텍스처 생성

URP의 렌더 패스에서 텍스처 사용

렌더 그래프 시스템 API를 사용해 텍스처를 커스텀 렌더 패스의 입력 또는 출력으로 설정하여 텍스처를 읽거나 쓸 수 있습니다.

렌더 패스의 동일한 텍스처에서 대히 읽기와 쓰기를 모두 수행할 수는 없습니다. 자세한 내용은 렌더 패스 동안 렌더 타겟 변경을 참조하십시오.

텍스처를 입력으로 설정

텍스처를 커스텀 렌더 패스의 입력으로 설정하려면 다음 과정을 따르십시오.

  1. RecordRenderGraph 메서드에서 패스가 사용하는 데이터에 텍스처 핸들 필드를 추가합니다.

    예시:

    // Create the data your pass uses
    public class MyPassData
    {
        // Add a texture handle
        public TextureHandle textureToUse;
    }
    
  2. 사용할 텍스처의 텍스처 핸들을 설정합니다.

    예시:

    // Add the texture handle to the data
    RenderTextureDescriptor textureProperties = new RenderTextureDescriptor(Screen.width, Screen.height, RenderTextureFormat.Default, 0);
    TextureHandle textureHandle = UniversalRenderer.CreateRenderGraphTexture(renderGraph, textureProperties, "My texture", false);
    passData.textureToUse = textureHandle;
    
  3. UseTexture 메서드를 호출하여 텍스처를 입력으로 설정합니다.

    예시:

    builder.UseTexture(passData.textureToUse, AccessFlags.Read);
    

SetRenderFunc 메서드에서 이제 패스 데이터의 TextureHandle 오브젝트를 Blitter.BlitTexture와 같이 API에 대한 입력으로 사용할 수 있습니다.

텍스처를 렌더 타겟으로 설정

텍스처를 Blit와 같은 커맨드의 출력으로 설정하려면 RecordRenderGraph 메서드에서 SetRenderAttachment 메서드를 사용하십시오. SetRenderAttachment 메서드는 기본적으로 텍스처를 쓰기 전용으로 설정합니다.

예를 들어 다음 커맨드는 임시 텍스처를 생성하여 렌더 패스의 렌더 타겟으로 설정합니다.

// Create texture properties
RenderTextureDescriptor textureProperties = new RenderTextureDescriptor(Screen.width, Screen.height, RenderTextureFormat.Default, 0);

// Create the texture
TextureHandle targetTexture = UniversalRenderer.CreateRenderGraphTexture(renderGraph, textureProperties, "My texture", false);

// Set the texture as the render target
// The second parameter is the index the shader uses to access the texture
builder.SetRenderAttachment(targetTexture, 0);

SetRenderFunc 메서드에서 이제 Blitter.BlitTexture와 같은 API를 사용하여 텍스처에 대해 쓰기를 수행할 수 있습니다.

패스 데이터에 텍스처를 추가할 필요는 없습니다. 렌더 그래프 시스템은 렌더 패스를 실행하기 전에 텍스처를 자동으로 설정합니다.

렌더 타겟에 오브젝트를 드로우해야 하는 경우 렌더 패스에서 오브젝트 드로우에서 자세한 내용을 확인하십시오.

렌더 패스 동안 렌더 타겟 변경

렌더 그래프 시스템 렌더 패스 동안 URP가 쓰기를 수행하는 텍스처는 변경할 수 없습니다.

대신 다음 중 하나를 수행할 수 있습니다.

  • 두 번째 커스텀 렌더 패스를 생성하고 두 번째 렌더 패스 동안 builder.SetRenderAttachment를 사용하여 렌더 타겟을 변경합니다.
  • UnsafePass API를 사용하여 SetRenderFunc 메서드에서 SetRenderTarget API를 사용할 수 있게 합니다. 자세한 내용과 예시는 렌더 그래프 렌더 패스에서 Compatibility Mode API 사용을 참고하십시오.

이러한 메서드를 사용해 먼저 텍스처에서 생성한 임시 텍스처로 복사한 다음 다시 복사하는 방식으로 동일한 텍스처를 읽고 쓸 수 있습니다.

프로퍼티가 다른 여러 텍스처 간에 블릿을 적용하면 URP가 블릿을 하나의 네이티브 렌더 패스로 병합할 수 없으므로 렌더링이 느려질 수 있습니다. 대신 AddUnSafePass API와 SetRenderTarget() 메서드를 사용하십시오.

예제

다음을 참조하십시오.

URP의 렌더 그래프 시스템의 텍스처
URP의 렌더 그래프 시스템에서 텍스처 생성