ShaderLab perintah: AlphaToMask
perintah ShaderLab: Login

perintah ShaderLab: Login

Menentukan bagaimana GPU menggabungkan output dari fragmen shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
dengan target render.

Fungsi dari perintah ini tergantung pada operasi blending, yang dapat Anda set menggunakan perintah BlendOp. Perhatikan bahwa sambil memadukan dirinya didukung pada semua API grafis dan perangkat keras, beberapa operasi campuran memiliki dukungan yang lebih terbatas.

Mengaktifkan campuran menonaktifkan beberapa optimasi di GPU (paling permukaan tersembunyi / Early-Z), yang dapat menyebabkan peningkatan bingkai GPU kali.

Kompatibilitas pipa Render

Feature name Built-in Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom SRP
Blend Yes Yes Yes Yes

Usage

Perintah ini membuat perubahan pada state render. Gunakan blok Pass untuk mengatur state render untuk Pass itu, atau menggunakannya dalam blok SubShader untuk mengatur state render untuk semua Passes di SubShader.

Jika campuran diaktifkan, berikut terjadi:

  • Jika perintah BlendOp digunakan, operasi blending diatur ke nilai itu. Jika tidak, default operasi campuran ke Add.
  • Jika operasi campuran adalah Add, Sub, RevSub, Min, atau Max, GPU menggandakan nilai output naungan fragmen oleh faktor sumber.
  • Jika operasi campuran adalah Add, Sub, RevSub, Min, atau Max, GPU melipat nilai yang sudah ada dalam target render oleh faktor tujuan.
  • GPU melakukan operasi campuran pada nilai yang dihasilkan.

Persamaan campuran adalah:

finalValue = sourceFactor * sourceValue operation destinationFactor * destinationValue

Dalam persamaan ini:

  • finalValue adalah nilai bahwa GPU menulis ke penyangga tujuan.
  • sourceFactor didefinisikan dalam perintah Blend.
  • sourceValue adalah nilai output oleh naungan fragmen.
  • operation adalah operasi campuran.
  • destinationFactor didefinisikan dalam perintah Blend.
  • destinationValue adalah nilai yang sudah ada dalam penyangga tujuan.
Signature Example syntax Function
Blend <state> Blend Off Disables blending untuk target render default. Ini adalah nilai default.
Blend <render target> <state> Blend 1 Off Seperti di atas, tetapi untuk target render yang diberikan. Sitemap
Blend <source factor> <destination factor> Blend One Zero Memungkinkan campuran untuk target render default. Menetapkan faktor campuran untuk nilai RGBA.
Blend <render target> <source factor> <destination factor> Blend 1 One Zero Seperti di atas, tetapi untuk target render yang diberikan. Sitemap
Blend <source factor RGB> <destination factor RGB>, <source factor alpha> <destination factor alpha> Blend One Zero, Zero One Aktifkan campuran target render default. Mengatur faktor campuran terpisah untuk nilai RGB dan alfa. Sitemap
Blend <render target> <source factor RGB> <destination factor RGB>, <source factor alpha> <destination factor alpha> Blend 1 One Zero, Zero One Seperti di atas, tetapi untuk target render yang diberikan. (1) (2)

Notes:

  1. Setiap tanda tangan yang menentukan target render memerlukan OpenGL 4.0+, GL_ARB_draw_buffers_blend, atau OpenGL ES 3.2.
  2. Separate RGB dan campuran alfa tidak kompatibel dengan operasi campuran OpenGL canggih.

Nilai parameter yang valid

Parameter Value Function
render target Pengintegrasian, kisaran 0 melalui 7 Indeks target render.
state Off Disables campuran.
factor One Nilai input ini adalah satu. Gunakan ini untuk menggunakan nilai sumber atau warna tujuan.
Zero Nilai input ini adalah nol. Gunakan ini untuk menghapus sumber atau nilai tujuan.
SrcColor GPU menggandakan nilai input ini dengan nilai warna sumber.
SrcAlpha GPU menggandakan nilai input ini dengan nilai alpha sumber.
DstColor GPU menggandakan nilai input ini oleh nilai warna sumber penyangga bingkai.
DstAlpha GPU menggandakan nilai input ini oleh nilai alpha sumber penyangga bingkai.
OneMinusSrcColor GPU menggandakan nilai input ini oleh (1 - warna sumber).
OneMinusSrcAlpha GPU menggandakan nilai input ini oleh (1 - sumber alfa).
OneMinusDstColor GPU menggandakan nilai input ini oleh (1 - warna tujuan).
OneMinusDstAlpha GPU menggandakan nilai input ini oleh (1 - tujuan alfa).

Jenis campuran umum

Berikut adalah sintaks untuk jenis campuran yang paling umum:

Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency
Blend One OneMinusSrcAlpha // Premultiplied transparency
Blend One One // Additive
Blend OneMinusDstColor One // Soft additive
Blend DstColor Zero // Multiplicative
Blend DstColor SrcColor // 2x multiplicative

Examples

Shader "Examples/CommandExample"
{
    SubShader
    {
         // The rest of the code that defines the SubShader goes here.

        Pass
        {    
              // Enable regular alpha blending for this Pass
      Blend SrcAlpha OneMinusSrcAlpha
            
              // The rest of the code that defines the Pass goes here.
        }
    }
}

Kode contoh ini menunjukkan sintaks untuk menggunakan perintah ini dalam blok SubShader.

Shader "Examples/CommandExample"
{
    SubShader
    {
         // Enable regular alpha blending for this SubShader
         Blend SrcAlpha OneMinusSrcAlpha

         // The rest of the code that defines the SubShader goes here.        

        Pass
        {    
              // The rest of the code that defines the Pass goes here.
        }
    }
}
ShaderLab perintah: AlphaToMask
perintah ShaderLab: Login