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.
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 |
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:
Add
.Add
, Sub
, RevSub
, Min
, atau Max
, GPU menggandakan nilai output naungan fragmen oleh faktor sumber.Add
, Sub
, RevSub
, Min
, atau Max
, GPU melipat nilai yang sudah ada dalam target render oleh faktor tujuan.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:
GL_ARB_draw_buffers_blend
, atau OpenGL ES 3.2.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). |
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
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.
}
}
}