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.
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. |
Untuk menambahkan kode HLSL, Anda dapat menggunakan jenis blok kode naungan berikut:
Untuk memahami apa yang harus Anda gunakan ketika, Anda harus memahami awalan mereka (HLSL
atau CG
), dan suffix mereka (PROGRAM
atau INCLUDE
).
Perbedaan antara blok yang dimulai dengan HLSL
atau CG
adalah:
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.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.
Perbedaan antara blok yang berakhir dengan PROGRAM
atau INCLUDE
adalah:
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 infoINCLUDE
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.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. |
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
}
}
}
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. |
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
}
}
}