Membuat pipa render kustom berdasarkan Pipa Render Scriptable
Membuat loop render sederhana dalam pipa render kustom

Membuat Render Pipeline Asset dan Render Pipeline Instance dalam pipa render kustom

Jika Anda membuat 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
Anda sendiri berdasarkan API Reference (SRP), Anda Proyek harus mengandung:

  • Sebuah skrip yang mengherankan dari RenderPipelineAsset dan menimpa metode CreatePipeline(). Script ini mendefinisikan Aset Pipeline Render Anda.
  • Sebuah skrip yang mengherankan dari RenderPipeline, dan menimpa metode Render(). Script ini mendefinisikan Anda Render Pipeline Instance, dan di mana Anda menulis kode rendering kustom Anda.
  • Pipa Render Aset yang telah Anda buat dari script RenderPipelineAsset Anda. aset ini bertindak sebagai kelas pabrik untuk Anda Render Pipeline Instance.

Karena elemen-elemen ini sangat terkait, Anda harus membuat mereka pada saat yang sama.

Membuat dasar Render Pipeline Asset dan Render Pipeline Instance

Contoh berikut menunjukkan bagaimana untuk membuat skrip untuk Aset Pipa Render kustom dasar yang mengklasifikasikan Pipa Render Instance, skrip yang menentukan Render Pipeline Instance, dan Aset Pipeline Render itu sendiri.

  1. Buat skrip C# yang disebut ContohRenderPipelineAsset.cs.

  2. Salin dan paste kode berikut ke script baru:

    using UnityEngine;
    using UnityEngine.Rendering;
        
    // The CreateAssetMenu attribute lets you create instances of this class in the Unity Editor.
    [CreateAssetMenu(menuName = "Rendering/ExampleRenderPipelineAsset")]
    public class ExampleRenderPipelineAsset : RenderPipelineAsset
    {
        // Unity calls this method before rendering the first frame.
        // If a setting on the Render Pipeline Asset changes, Unity destroys the current Render Pipeline Instance and calls this method again before rendering the next frame.
        protected override RenderPipeline CreatePipeline() {
            // Instantiate the Render Pipeline that this custom SRP uses for rendering.
            return new ExampleRenderPipelineInstance();
        }
    }
    
  3. Buat skrip C# yang disebut ContohRenderPipelineInstance.cs.

  4. Salin dan paste kode berikut ke script baru:

    using UnityEngine;
    using UnityEngine.Rendering;
        
    public class ExampleRenderPipelineInstance : RenderPipeline
    {
        public ExampleRenderPipelineInstance() {
        }
        
        protected override void Render (ScriptableRenderContext context, Camera[] cameras) {
            // This is where you can write custom rendering code. Customize this method to customize your SRP.
        }
    }
    
  5. Dalam tampilan Proyek, baik klik tombol add (+), atau buka menu konteks dan arahkan ke Create, lalu pilih Rendering > Example Render Pipeline Asset. Unity menciptakan Aset Pipa Render baru dalam tampilan Proyek.

Membuat Aset Render Pipeline yang dapat dikonfigurasi dan Render Pipeline Instance

Secara default, informasi Render Pipeline Asset storesSebuah perpustakaan yang berkembang dari aset gratis dan komersial yang diciptakan oleh Unity dan anggota komunitas. Menawarkan berbagai aset, dari tekstur, model dan animasi ke seluruh contoh proyek, tutorial dan ekstensi Editor. More info
Lihat di Glossary
tentang mana Render Pipeline Instance untuk digunakan untuk rendering, dan Bahan default dan ShadersProgram yang berjalan di GPU. More info
Lihat di Glossary
untuk digunakan di Editor. Dalam skrip RenderPipelineAsset Anda, Anda dapat memperluas Render Pipeline Anda Aset sehingga menyimpan data tambahan, dan Anda dapat memiliki beberapa Aset Pipa Render yang berbeda dengan konfigurasi yang berbeda dalam Proyek Anda. Misalnya, Anda mungkin menggunakan Aset Render Pipeline untuk menahan data konfigurasi untuk setiap tingkat perangkat keras yang berbeda. Pipa Render Definisi Tinggi (HDRP) dan Pipa Render Universal (URP) termasuk contoh ini.

Contoh berikut menunjukkan bagaimana membuat skrip RenderPipelineAsset yang mendefinisikan Aset Pipeline Render dengan data publik yang dapat Anda set untuk setiap kasus menggunakan InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary
, dan Render Pipeline Instance yang menerima Aset Pipeline Render di konstruk dan menggunakan data dari Aset Pipeline Render.

  1. Buat skrip C# yang disebut ContohRenderPipelineAsset.cs.

  2. Salin dan paste kode berikut ke script baru:

    using UnityEngine;
    using UnityEngine.Rendering;
        
    // The CreateAssetMenu attribute lets you create instances of this class in the Unity Editor.
    [CreateAssetMenu(menuName = "Rendering/ExampleRenderPipelineAsset")]
    public class ExampleRenderPipelineAsset : RenderPipelineAsset
    {
        // This data can be defined in the Inspector for each Render Pipeline Asset
        public Color exampleColor;
        public string exampleString;
        
            // Unity calls this method before rendering the first frame.
           // If a setting on the Render Pipeline Asset changes, Unity destroys the current Render Pipeline Instance and calls this method again before rendering the next frame.
        protected override RenderPipeline CreatePipeline() {
            // Instantiate the Render Pipeline that this custom SRP uses for rendering, and pass a reference to this Render Pipeline Asset.
            // The Render Pipeline Instance can then access the configuration data defined above.
            return new ExampleRenderPipelineInstance(this);
        }
    }
    
  3. Buat skrip C# yang disebut ContohRenderPipelineInstance.cs.

  4. Salin dan paste kode berikut ke script baru:

    using UnityEngine;
    using UnityEngine.Rendering;
        
    public class ExampleRenderPipelineInstance : RenderPipeline
    {
        // Use this variable to a reference to the Render Pipeline Asset that was passed to the constructor
        private ExampleRenderPipelineAsset renderPipelineAsset;
        
        // The constructor has an instance of the ExampleRenderPipelineAsset class as its parameter.
        public ExampleRenderPipelineInstance(ExampleRenderPipelineAsset asset) {
            renderPipelineAsset = asset;
        }
        
        protected override void Render(ScriptableRenderContext context, Camera[] cameras) {
            // This is an example of using the data from the Render Pipeline Asset.
            Debug.Log(renderPipelineAsset.exampleString);
                
            // This is where you can write custom rendering code. Customize this method to customize your SRP.
        }
    }
    
    
  5. Dalam tampilan Proyek, baik klik tombol add (+), atau buka menu konteks dan arahkan ke Create, lalu pilih Rendering > Example Render Pipeline Asset. Unity menciptakan Aset Pipa Render baru dalam tampilan Proyek.

Membuat pipa render kustom berdasarkan Pipa Render Scriptable
Membuat loop render sederhana dalam pipa render kustom