Shader loading
Compute shaders

Mengganti naungan pada runtime

Pada 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
Built-in, Anda dapat memberi tahu CameraKomponen yang menciptakan gambar sudut pandang tertentu di tempat kejadian Anda. Output ditarik ke layar atau ditangkap sebagai tekstur. More info
Lihat di Glossary
untuk mengubah warna yang digunakan untuk membuat geometri tertentu pada runtime. Anda mungkin melakukan ini untuk mencapai efek visual seperti deteksi tepi.

Penggantian Shader dilakukan dari scripting menggunakan fungsi Kamera.RenderWithShader atau Kamera.SetReplacementShader. Kedua fungsi mengambil shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
dan replacementTag.

Ini bekerja seperti ini: kamera renders sceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
seperti biasanya akan. objek tetap menggunakan bahan mereka, tetapi naungan yang sebenarnya yang akhirnya digunakan diubah:

  • Jika replacementTag kosong, maka semua benda di tempat kejadian diberikan dengan naungan pengganti yang diberikan.
  • Jika replacementTag tidak kosong, maka untuk setiap objek yang akan diberikan:
    • Naungan objek nyata dikuasai untuk nilai tag.
    • Jika tidak memiliki tag, objek adalah not rendered.
    • A subshader ditemukan di naungan pengganti yang memiliki tag yang diberikan dengan nilai yang ditemukan. Jika tidak ada subshader tersebut ditemukan, objek adalah not rendered.
    • Sekarang subshader digunakan untuk membuat objek.

Jadi jika semua naungan akan memiliki, misalnya, tag "RenderType" dengan nilai-nilai seperti "Opaque", "Transparent", "Background", "Overlay", Anda dapat menulis naungan pengganti yang hanya membuat benda padat dengan menggunakan satu subshader dengan RenderType=Solid tagKata referensi yang dapat Anda berikan kepada satu atau lebih GameObjects untuk membantu Anda mengidentifikasi GameObjects untuk tujuan scripting. Misalnya, Anda mungkin mendefinisikan dan “Edible” Tag untuk setiap item pemain dapat makan dalam permainan Anda. More info
Lihat di Glossary
. Jenis tag lain tidak akan ditemukan di naungan pengganti, sehingga objek tidak akan diberikan. Atau Anda bisa menulis beberapa subshader untuk nilai tag "RenderType". Secara jelas, semua built-in Shader objectsContoh kelas Shader, objek Shader adalah wadah untuk program naungan dan instruksi GPU, dan informasi yang memberi tahu Unity bagaimana menggunakannya. Gunakan mereka dengan bahan untuk menentukan penampilan adegan Anda. More info
Lihat di Glossary
memiliki set tag "RenderType".

penggantian warna Lit

Ketika menggunakan naungan penggantian adegan dirender menggunakan jalur render yang dikonfigurasi pada kamera. Ini berarti bahwa naungan yang digunakan untuk penggantian dapat mengandung bayangan dan melewati pencahayaan (Anda dapat menggunakan warna permukaan untuk penggantian naungan). Ini dapat berguna untuk melakukan rendering efek khusus dan adegan debugging.

Tag pengganti Shader di naungan built-in

Semua naungan bawaan memiliki tag “RenderType” yang dapat digunakan saat rendering dengan warna yang diganti. Nilai tag adalah berikut:

  • Opaque: sebagian besar naungan (NormalArah tegak lurus ke permukaan jala, diwakili oleh vektor. Unity menggunakan normal untuk menentukan orientasi objek dan menerapkan pencukur. More info
    Lihat di Glossary
    , Diterangi Diri, Reflective, penghilang medan).
  • Transparent: kebanyakan naungan semitransparan (Transparent, Partikel, Font, penghujung aditif melewati naungan).
  • TransparentCutout: naungan transparansi masked (Cutout Transparan, dua warna vegetasi lulus).
  • Background: SkyboxJenis khusus Bahan yang digunakan untuk mewakili langit. Biasanya enam sisi. More info
    Lihat di Glossary
    naungan.
  • Overlay: Login Login
  • TreeOpaque: terrainPemandangan di tempat kejadian Anda. Terrain GameObject menambahkan pesawat datar besar untuk adegan Anda dan Anda dapat menggunakan jendela Inspektur Terrain untuk menciptakan lanskap rinci. More info
    Lihat di Glossary
    mesin pohon kulit.
  • TreeTransparentCutout: daun pohon mesin medan.
  • TreeBillboard: pepohonan mesin terrain.
  • Grass: rumput mesin medan.
  • GrassBillboard: rumput yang ditagih mesin medan.

Built-in adegan kedalaman / tekstur normal

Kamera memiliki kemampuan built-in untuk membuat tekstur kedalaman atau kedalaman + normal, jika Anda perlu bahwa dalam beberapa efek Anda. Lihat halaman Tekstur Kedalaman Kamera. Perhatikan bahwa dalam beberapa kasus (tergantung pada perangkat keras), tekstur kedalaman dan kedalaman + normal dapat secara internal dibuat menggunakan pengganti naungan. Jadi penting untuk memiliki tag "RenderType" yang benar di naungan Anda.

Contoh Kode

Fungsi Start() Anda menentukan warna pengganti:

void Start() {
    camera.SetReplacementShader (EffectShader, "RenderType");
}

Permintaan ini bahwa EffectShader akan menggunakan kunci RenderType. EfekShader akan memiliki tag nilai kunci untuk setiap RenderType yang Anda inginkan. Shader akan melihat sesuatu seperti:

Shader "EffectShader" {
     SubShader {
         Tags { "RenderType"="Opaque" }
         Pass {
             ...
         }
     }
     SubShader {
         Tags { "RenderType"="SomethingElse" }
         Pass {
             ...
         }
     }
 ...
 }

Login Shader akan melihat melalui semua objek di tempat kejadian dan, alih-alih menggunakan naungan normal mereka, menggunakan subshader pertama yang memiliki nilai pencocokan untuk kunci yang ditentukan. Dalam contoh ini, benda apa pun yang naungannya memiliki tag Rendertype=“Opaque” akan diganti oleh subshader pertama dalam EffectShader, benda apa pun dengan RenderType=“SomethingElse” akan menggunakan subshader pengganti kedua dan sebagainya. Setiap objek yang naungan tidak memiliki nilai tag yang cocok untuk kunci yang ditentukan dalam naungan pengganti tidak akan diberikan.

Shader loading
Compute shaders