Version: Unity 6.0 (6000.0)
言語 : 日本語
URP のレンダーグラフシステムのテクスチャ
URP のレンダーグラフシステムでテクスチャを作成する

URP のレンダーパスでテクスチャを使用する

レンダーグラフシステム API を使用して、カスタムレンダーパスの入力または出力としてテクスチャを設定し、そのテクスチャに対して読み込みまたは書き込みを行うことができます。

1 つのレンダーパス内で、同じテクスチャに対して読み込みと書き込みの両方を実行することはできません。詳細は、レンダーパスでレンダーターゲットを変更するを参照してください。

テクスチャを入力として設定する

カスタムレンダーパスの入力としてテクスチャを設定するには、以下の手順に従います。

  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 メソッドでは、Blitter.BlitTexture などの API の入力として、パスデータの TextureHandle オブジェクトを使用できるようになりました。

テクスチャをレンダーターゲットとして設定する

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 が書き込むテクスチャを変更することはできません。

代わりに以下のいずれかを実行できます。

  • 2 番目のカスタムレンダーパスを作成し、2 番目のレンダーパス中に builder.SetRenderAttachment を使用してレンダーターゲットを変更します。
  • UnsafePass API を使用して、SetRenderFunc メソッド内で SetRenderTarget API を使用できるようにします。詳細と例については、レンダーグラフのレンダーパスに互換性モード API を使用するを参照してください。

これらのメソッドを使用して、最初にテクスチャから作成した一時的なテクスチャにコピーし、それからコピーして戻すことで、同じテクスチャに対して読み取りと書き込みを行うことができます。

異なるプロパティを持つ複数のテクスチャ間で blit (転送) を使用すると、URP は blit を 1 つのネイティブレンダーパスにマージできないため、レンダリングが遅くなる場合があります。代わりに AddUnSafePass API と SetRenderTarget() メソッドを使用してください。

以下の例を参照してください。

URP のレンダーグラフシステムのテクスチャ
URP のレンダーグラフシステムでテクスチャを作成する
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961