ShaderLab: Tag Pass yang telah ditentukan di Pipeline Render Built-in
ShaderLab: menentukan persyaratan paket

ShaderLab: menambahkan program naungan

Pada Unity, Anda biasanya menulis program shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
di HLSL. Untuk menambahkan kode HLSL ke aset warna Anda, Anda menempatkan kode di dalam shader code block.

Halaman ini berisi informasi tentang menggunakan blok kode naungan. Untuk informasi tentang menulis HLSL sendiri, lihat Menggunakan HLSL di Unity.

Sitemap Unity juga mendukung menulis program naungan dalam bahasa lain, meskipun ini tidak umumnya diperlukan atau direkomendasikan. Untuk informasi lebih lanjut, lihat Note:.Menu Menu.

Kompatibilitas pipa Render

Feature 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
Pipa Render Universal (URP) Definisi Tinggi Render Pipeline (HDRP) Sitemap Login
HLSLPROGRAM Yes Yes Yes Yes
HLSLINCLUDE Yes Yes Yes Yes
CGPROGRAM Yes No No Sitemap Tidak kompatibel dengan pipa render kustom yang menggunakan paket.

Not compatible with custom render pipelines that use the package.
CGINCLUDE Yes No No Sitemap Tidak kompatibel dengan pipa render kustom yang menggunakan paket.

Not compatible with custom render pipelines that use the package.

Jenis blok kode naungan

Untuk menambahkan kode HLSL, Anda dapat menggunakan jenis blok kode naungan berikut:

  • HLSLPROGRAM
  • CGPROGRAM
  • HLSLINCLUDE
  • CGINCLUDE

Untuk memahami apa yang harus Anda gunakan ketika, Anda harus memahami awalan mereka (HLSL atau CG), dan suffix mereka (PROGRAM atau INCLUDE).

HLSL dan perbaikan CG

Perbedaan antara blok yang dimulai dengan HLSL atau CG adalah:

  • Blok kode naungan yang ditetapkan dengan CG lebih tua. Mereka termasuk beberapa built-in naungan termasuk file Unity secara default, yang dapat nyaman jika Anda membutuhkan fungsi ini. Built-in termasuk hanya kompatibel dengan Pipeline Render Built-in.
  • Blok kode naungan yang ditetapkan dengan HLSL lebih baru. Mereka tidak termasuk naungan bawaan Unity termasuk file secara default, sehingga Anda harus secara manual menyertakan kode perpustakaan yang ingin Anda gunakan. Mereka cocok untuk digunakan dengan pipa render.

Untuk informasi tentang naungan bawaan Unity termasuk file, lihat Reflektor built-in termasuk file.

PROGRAM DAN suffixes INCLUDE

Perbedaan antara blok yang berakhir dengan PROGRAM atau INCLUDE adalah:

  • Blok kode naungan yang berakhir dengan PROGRAM disebut shader program blocks. Anda menggunakannya untuk menulis program naungan. Anda menulis kode naungan HLSL di dalam blok ini, dan kemudian menempatkan mereka di dalam blok Pass pada kode ShaderLabBahasa Unity untuk mendefinisikan struktur benda-benda Shader. More info
    Lihat di Glossary
    Anda.
  • Blok kode naungan yang berakhir dengan INCLUDE disebut shader include blocks. Anda menggunakannya untuk berbagi kode umum antara blok program naungan dalam file sumber yang sama. Anda menulis kode naungan HLSL yang ingin Anda bagikan di dalam blok ini, dan kemudian menempatkannya di dalam Lulus, SubShader atau blok ShaderLab Anda. Ini bekerja dengan cara yang sama untuk menggunakan kode HLSL Anda.

Menggunakan blok program naungan

Signature Function
HLSLPROGRAM
[source code for shader programs, written in HLSL]
ENDHLSL%
Menambahkan program naungan HLSL ke Pass yang mencakup blok program naungan ini. Tidak termasuk naungan bawaan Unity termasuk file.
CGPROGRAM
[source code for shader programs, written in HLSL]
ENDCG%
Menambahkan program naungan HLSL ke Pass yang mencakup blok program naungan ini. Sertakan beberapa built-in naungan termasuk file Unity secara default, memungkinkan Anda untuk menggunakan variabel dan fungsi bawaan.

Examples

Shader "Examples/ExampleShader"
{
    SubShader
    {
        Pass
        {                
              Name "ExamplePassName"
              Tags { "LightMode" = "ExampleLightModeTagValue" }

              // ShaderLab commands to set the render state go here

              HLSLPROGRAM
                // HLSL shader code goes here
              ENDHLSL
        }
    }
}

Menggunakan naungan termasuk blok

Signature Function
HLSLINCLUDE
[HLSL code that you want to share]
ENDHLSL%
Unity termasuk kode ini di semua program naungan yang didefinisikan dalam blok HLSLPROGRAM, di mana saja dalam file sumber ini.
CGINCLUDE
[HLSL code that you want to share]
ENDCG%
Unity termasuk kode ini di semua program naungan yang didefinisikan dalam blok CGPROGRAM, di mana saja dalam file sumber ini.

Examples

Shader "Examples/ExampleShader"
{
    SubShader
    {

        HLSLINCLUDE
            // HLSL code that you want to share goes here
        ENDHLSL

        Pass
        {                
              Name "ExampleFirstPassName"
              Tags { "LightMode" = "ExampleLightModeTagValue" }

              // ShaderLab commands to set the render state go here

              HLSLPROGRAM
                // This HLSL shader program automatically includes the contents of the HLSLINCLUDE block above
                // HLSL shader code goes here
              ENDHLSL
        }

        Pass
        {                
              Name "ExampleSecondPassName"
              Tags { "LightMode" = "ExampleLightModeTagValue" }

              // ShaderLab commands to set the render state go here

              HLSLPROGRAM
                // This HLSL shader program automatically includes the contents of the HLSLINCLUDE block above
                // HLSL shader code goes here
              ENDHLSL
        }

    }
}
ShaderLab: Tag Pass yang telah ditentukan di Pipeline Render Built-in
ShaderLab: menentukan persyaratan paket