Scriptable Render Pipa pengenalan
Membuat pipa render kustom

Penjadwalan dan mengeksekusi perintah rendering di Pipa Render Scriptable

Halaman ini menjelaskan cara menjadwalkan dan melaksanakan perintah rendering di Scriptable Render Pipeline (SRP), baik dengan menggunakan CommandBuffers atau dengan membuat panggilan API langsung ke ScriptableRenderContext. Informasi di halaman ini berlaku untuk Universal Render PipelineRangkaian operasi yang mengambil isi dari Adegan, dan menampilkannya di layar. Unity memungkinkan Anda memilih dari pipa render yang dibangun sebelumnya, atau menulis sendiri. More info
Lihat di Glossary
(URP), Pipa Render Definisi Tinggi (HDRP), dan pipa render kustom yang didasarkan pada SRP.

Di SRP, Anda menggunakan C# scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary
untuk mengkonfigurasi dan menjadwalkan perintah. Anda kemudian memberitahu arsitektur grafis tingkat rendah Unity untuk mengeksekusi mereka, yang mengirim instruksi ke API grafis.

Cara utama melakukan ini adalah dengan membuat panggilan API ke ScriptableRenderContext, tetapi Anda juga dapat mengeksekusi CommandBuffers segera.

Menggunakan ScriptableRenderContext API

Di SRP, kelas ScriptableRenderContext bertindak sebagai antarmuka antara kode pipa C # dan kode grafis tingkat rendah Unity. SRP rendering bekerja menggunakan eksekusi tertunda; Anda menggunakan ScriptableRenderContext untuk membangun daftar perintah rendering, dan kemudian Anda memberitahu Unity untuk mengeksekusi mereka. Arsitektur grafis tingkat rendah unity kemudian mengirim instruksi ke API grafis.

Untuk menjadwalkan perintah rendering, Anda dapat:

Untuk memberi tahu Unity untuk melakukan perintah yang telah Anda jadwalkan, hubungi ScriptableRenderContext.Submit. Perhatikan bahwa itu tidak masalah apakah Anda menggunakan CommandBuffer untuk menjadwalkan perintah, atau apakah Anda menjadwalkan perintah dengan memanggil API; Unity menjadwalkan semua perintah rendering di ScriptableRenderContext dengan cara yang sama, dan tidak mengeksekusi salah satu dari mereka sampai Anda memanggil Submit().

Kode contoh ini menunjukkan cara menjadwalkan dan melakukan perintah untuk menghapus target render saat ini, menggunakan CommandBuffer.

using UnityEngine;
using UnityEngine.Rendering;

public class ExampleRenderPipeline : RenderPipeline
{
        public ExampleRenderPipeline() {
        }

    protected override void Render(ScriptableRenderContext context, Camera[] cameras) {
        // Create and schedule a command to clear the current render target
        var cmd = new CommandBuffer();
        cmd.ClearRenderTarget(true, true, Color.red);
        context.ExecuteCommandBuffer(cmd);
        cmd.Release();

         // Tell the Scriptable Render Context to tell the graphics API to perform the scheduled commands
        context.Submit();
    }
}

Executing CommandBuffers immediately

Anda dapat mengeksekusi CommandBuffers segera tanpa menggunakan ScriptableRenderContext, dengan memanggil Grafik.ExecuteCommandBuffer. Panggilan ke API ini terjadi di luar pipa render.

Informasi tambahan

Untuk informasi lebih lanjut tentang perintah yang dapat Anda jadwalkan menggunakan CommandBuffers, lihat API documentation.

Scriptable Render Pipa pengenalan
Membuat pipa render kustom