Render Tekstur
Tekstur Film

Tekstur Render Kustom

Switch to Scripting

Custom Render Textures adalah jenis tekstur khusus yang memungkinkan Anda untuk memperbarui tekstur dengan shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
. Mereka adalah ekstensi untuk Tekstur RenderJenis Tekstur khusus yang diciptakan dan diperbarui pada runtime. Untuk menggunakannya, pertama membuat Tekstur Render baru dan menunjuk salah satu Kamera Anda untuk membuatnya. Kemudian Anda dapat menggunakan Tekstur Render dalam Bahan seperti Tekstur biasa. More info
Lihat di Glossary
. Anda dapat menggunakan Tekstur Render Kustom untuk membuat simulasi kompleks seperti caustik, simulasi riak untuk efek hujan, dan splatters cair.

Fitur Tekstur Render Kustom menyediakan kerangka skrip dan Shader untuk membantu dengan konfigurasi yang rumit seperti frekuensi pembaruan yang bervariasi, pembaruan sebagian atau multi-pass.

Untuk menggunakan kerangka ini Anda perlu menetapkan Bahan untuk aset Tekstur Render Kustom. Tekstur Render Kustom memerlukan Bahan yang kompatibel. Untuk informasi lebih lanjut, lihat Menulis naungan untuk Tekstur Render Kustom.

Untuk menetapkan bahan yang kompatibel dengan aset Tekstur Render Kustom:

  1. Buat aset Tekstur Render Kustom baru.
  2. Menetapkan Bahan yang kompatibel dengan properti Material dalam aset Custom Render Texture.

Bahan ini memperbarui konten tekstur sesuai dengan parameternya.

Halaman ini berisi informasi berikut:

Kompatibilitas Pipa Render

Tabel berikut menjelaskan kompatibilitas antara fitur Custom Render Textures dan setiap 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
:

Feature Pipa Render Built-in Pipa Render Universal (URP) Definisi Tinggi Render Pipeline (HDRP) Custom Scriptable Render Pipeline (SRP)
Tekstur Render Kustom G (1) G (1) G (1) G (1)

Note:

  1. Saat ini, Anda tidak dapat membuat Materi yang memperbarui dan meminisialisasikan Custom Render Textures di . Anda hanya dapat membuat naungan yang beroperasi pada Tekstur Render Khusus dengan menulis kode ShaderLabBahasa Unity untuk mendefinisikan struktur benda-benda Shader. More info
    Lihat di Glossary
    .

Properties

Jendela Custom Render Textures InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary
menampilkan banyak sifat yang sama dengan Inspektur Tekstur Render, dan beberapa sifat spesifik untuk Custom Render Textures.

Tekstur render:

Property: Fungsi:
Dimension Dimensi Tekstur Render.
     2D Membuat Tekstur Render dua dimensi.
     Cube Membuat Tekstur Render peta kubus.
     3D Membuat Tekstur Render tiga dimensi.
Size Ukuran Tekstur Render dalam pixelsUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
Lihat di Glossary
.
Color Format Format Tekstur Render.
sRGB (Color Render Texture) Aktifkan untuk memungkinkan Render Tekstur untuk menggunakan sRGB membaca / menulis konversi (Baca Hanya).
Enable Mip Maps Aktifkan properti ini untuk memungkinkan Tekstur Render untuk menggunakan mipmaps.
Auto generate Mip Maps Aktifkan properti ini untuk secara otomatis menghasilkan mipmaps.
Wrap Mode Tentukan bagaimana Tekstur berperilaku ketika ubin.
     Repeat Tekstur mengulangi dirinya sebagai ubin.
     Clamp Unity meregangkan tepi Tekstur.
Filter Mode Tentukan bagaimana filter Unity Tekstur ketika diregangkan oleh transformasi 3D.
     Point Tekstur menjadi terblokir dekat.
     Bilinear Tekstur menjadi kabur dekat.
     Trilinear Seperti Bilinear, tetapi Tekstur juga kabur antara tingkat mip yang berbeda.
Aniso LevelTingkat penyaringan anisotropic (AF) tekstur. Memungkinkan Anda untuk meningkatkan kualitas tekstur saat melihat tekstur pada sudut curam. Baik untuk tekstur lantai dan tanah. More info
Lihat di Glossary
Meningkatkan kualitas tekstur saat melihat tekstur pada sudut curam. Baik untuk tekstur lantai dan tanah.

Tekstur kustom:

Properti ini eksklusif untuk Tekstur Render Kustom. Parameter Tekstur khusus dipisahkan menjadi tiga kategori:

  • Material: Tentukan warna apa yang digunakan untuk memperbarui tekstur.

  • Initialization: Mengontrol bagaimana tekstur diinisialisasi sebelum naungan melakukan pembaruan apa pun.

  • Update: Mengontrol bagaimana naungan memperbarui tekstur.

Property: Fungsi:
MaterialAset yang menentukan bagaimana permukaan harus diberikan. More info
Lihat di Glossary
Bahan yang digunakan Unity untuk memperbarui Tekstur Render Kustom.
     Shader Pass Shader Pass yang menggunakan Unity untuk memperbarui Tekstur Render Kustom. Drop-down menunjukkan semua umpan yang tersedia dalam Bahan Anda.
Initialization Mode Tingkat di mana Unity menginisialisasi tekstur.
     OnLoad Meminimalkan tekstur setelah penciptaan.
     Realtime Meminimalkan tekstur setiap bingkai.
     OnDemand Meminimalkan tekstur atas permintaan dari script.
Source Bagaimana tekstur Unity menginisialisasi tekstur.
Tekstur dan warna Unity menggunakan tekstur yang dikalikan dengan warna untuk menginisialisasi tekstur.
Warna Awalisasi Mendefinisikan warna yang menggunakan Unity untuk menginisialisasi Tekstur Render Kustom. Jika Anda juga menyediakan Initialization Texture, Unity menggunakan multiplikasi warna dan tekstur untuk menginisialisasi Tekstur Render Kustom.
Tekstur Awalisasi Tentukan tekstur yang digunakan Unity untuk menginisialisasi Tekstur Render Kustom. Jika Anda juga menyediakan Initialization Color, Unity menggunakan multiplikasi warna dan tekstur untuk menginisialisasi Tekstur Render Kustom.
     Material Unity menggunakan Bahan untuk menginisialisasi tekstur.
Bahan Awalisasi Mendefinisikan Bahan yang digunakan Unity untuk menginisialisasi Tekstur Render Kustom.
Update Mode Tingkat di mana naungan memperbarui Tekstur Render Kustom.
     OnLoad Naungan memperbarui tekstur setelah penciptaan.
     Realtime Naungan memperbarui tekstur setiap bingkai.
     OnDemand Naungan memperbarui tekstur atas permintaan dari skrip.
Period Jumlah waktu dalam hitungan detik di mana Unity memperbarui tekstur real-time. Nilai 0,0 pembaruan setiap bingkai. Properti ini hanya tersedia ketika properti Update Mode diatur ke Realtime.
Double Buffered Dua-buffers tekstur. Setiap pembaruan swaps dua penyangga. Hal ini memungkinkan Anda untuk membaca hasil pembaruan awal di naungan.
Wrap Update Zones Aktifkan untuk memungkinkan zona pembaruan parsial untuk membungkus batas tekstur.
Cubemap Faces (Cubemap hanya) Seri toggle memungkinkan pengguna untuk mengaktifkan / menonaktifkan pembaruan pada setiap wajah peta kubus.
Update Zone Space Sistem koordinat di mana Unity mendefinisikan zona pembaruan.
     Normalized Semua koordinat dan ukuran antara 0 dan 1 dengan sudut kiri atas dimulai pada (0, 0).
     Pixel Semua koordinat dan ukuran dinyatakan dalam piksel terbatas oleh lebar dan tinggi tekstur. Sudut kiri atas dimulai pada (0, 0).
Update Zone List Daftar zona pembaruan untuk tekstur. Untuk informasi lebih lanjut, lihat Update Zones.

Mengekspor Tekstur Render Kustom ke file:

Anda dapat mengekspor Tekstur Render Kustom ke file PNG atau EXR (tergantung pada format tekstur) dalam menu Export.

Zona pembaruan:

Ketika Unity memperbarui Tekstur Render Kustom, menggunakan Bahan untuk memperbarui seluruh tekstur sekaligus secara default. Tekstur Render Kustom memungkinkan Anda untuk menentukan zona pembaruan parsial. Anda dapat menggunakan ini untuk menentukan banyak zona yang Anda inginkan dan pesanan di mana zona diproses.

Anda dapat menggunakan zona pembaruan untuk berbagai tujuan. Misalnya, Anda bisa memiliki beberapa zona kecil untuk menyisipkan air pada tekstur dan kemudian melakukan umpan penuh untuk mensimulasikan riak. Ini juga dapat digunakan sebagai optimasi ketika Anda tahu bahwa Anda tidak perlu untuk memperbarui tekstur penuh.

Memperbarui zona memiliki set properti mereka sendiri. Update Zone Space terlihat dalam tampilan. Koordinat tergantung pada Dimension tekstur: 2D untuk tekstur 2D dan Cube, atau 3D untuk tekstur 3D.

Property: Fungsi:
Center Koordinat pusat zona pembaruan..
Size Ukuran zona pembaruan.
Rotation Orientasi zona pembaruan dalam derajat (tidak tersedia untuk tekstur 3D).
Shader Pass Tentukan Shader Pass untuk digunakan untuk zona pembaruan ini. Jika Anda mengatur properti ini sebagai default, zona pembaruan ini menggunakan Shader Pass yang Anda didefinisikan dalam bagian utama dari inspektur. Jika tidak akan menggunakan Shader Pass yang Anda berikan.
Swap (Double Buffer) (Hanya untuk tekstur Buffer Ganda) Ketika Anda mengaktifkan properti ini, Unity swap penyangga sebelum memproses zona pembaruan ini.

Mengontrol Tekstur Render Kustom dari Script

Anda dapat mengakses sebagian besar fungsi Tekstur Render Khusus di API Scripting. Anda juga dapat mengubah parameter Material, memperbarui frekuensi, memperbarui zona, meminta pembaruan, dan lebih menggunakan skrip.

Ketika pembaruan Unity atau menginisialisasi Tekstur Render Kustom, menggunakan sifat saat ini untuk membuat bingkai berikutnya. Ini menjamin bahwa setiap Bahan yang menggunakan tekstur ini memiliki hasil terkini. Misalnya, dalam script Unity berikut melakukan dua pembaruan menggunakan array Update Zone kedua:

customRenderTexture.updateZones = updateZones1;

customRenderTexture.Update();

customRenderTexture.updateZones = updateZones2;

customRenderTexture.Update();

Sitemap Unity tidak memperbarui atau menginisialisasi Tekstur Render Khusus pada saat yang sama Anda menyebut Note: atau Update(). Ini karena Unity selalu memperbarui dan menginisialisasi Tekstur Render Kustom pada awal bingkai berikutnya.Initialize(). This is because Unity always updates and initializes a Custom Render Texture at the start of the next frame.

Tekstur Kustom Buffer Ganda

Anda dapat Tekstur Render Kustom dua-buffer. Untuk melakukan ini, aktifkan Double Buffered di Komponen Tekstur Render Kustom, atau gunakan.

Double-buffering berarti bahwa dalam satu Tekstur Render Kustom ada dua tekstur yang Unity dapat swap setelah setiap pembaruan. Ini memungkinkan Anda membaca hasil pembaruan terakhir sambil menulis hasil baru dalam Tekstur Render Kustom.

Double-buffering sangat berguna jika naungan perlu menggunakan konten Unity telah ditulis dalam tekstur tetapi tidak dapat mencampur nilai dengan mode campuran klasik. Ini juga diperlukan jika naungan harus mencicipi piksel yang berbeda dari hasil yang sebelumnya.

Performance warning: Saat ini dua-buffering melibatkan salinan tekstur pada setiap swap yang dapat menyebabkan penurunan kinerja tergantung pada frekuensi yang dilakukan dan resolusi tekstur.

Rantai Tekstur Render Kustom

Anda dapat rantai Tekstur Render Kustom bersama-sama. Untuk melakukan ini, gunakan Tekstur Render Khusus sebagai masukan untuk materi yang telah Anda berikan kepada Material atau Initialization Mode > Texture dalam Tekstur Render Kustom lainnya.

Anda dapat menggunakan Tekstur Render Khusus yang dichain untuk menghasilkan simulasi dengan beberapa langkah.

Tekstur Render Khusus Berrantai tergantung pada satu sama lain. Unity menghitung ketergantungan ini secara otomatis sehingga setiap pembaruan terjadi dalam urutan yang tepat. Ini melakukan ini dengan melihat bahan yang ditugaskan untuk sifat Material dan Initialization Mode > Texture di jendela inspektur Custom Render Textures.

Menulis naungan untuk Tekstur Render Kustom

Untuk memperbarui Tekstur Render Kustom secara manual, Anda dapat menulis naungan Tekstur Render Kustom khusus.

Untuk membantu Anda menulis warna Tekstur Render Kustom Anda, berikut adalah dua kerangka contoh yang mengandung fungsi utilitas dan variabel pendukung bawaan.

Contoh warna berikut mengisi tekstur dengan warna yang dikalikan dengan warna. Ketika Anda menulis naungan untuk Tekstur Render Kustom, Anda harus melakukan berikut:

  • #include "UnityCustomRenderTexture.cginc".
  • Gunakan Vertex ShaderProgram yang berjalan pada setiap simpul model 3D ketika model sedang diberikan. More info
    Lihat di Glossary
    CustomRenderTextureVertexShader.
  • Gunakan struktur input yang disediakan v2f_customrendertexture untuk naungan pixel.
Shader "CustomRenderTexture/Simple"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _Tex("InputTex", 2D) = "white" {}
     }

     SubShader
     {
        Lighting Off
        Blend One Zero

        Pass
        {
            CGPROGRAM
            #include "UnityCustomRenderTexture.cginc"
            #pragma vertex CustomRenderTextureVertexShader
            #pragma fragment frag
            #pragma target 3.0

            float4      _Color;
            sampler2D   _Tex;

            float4 frag(v2f_customrendertexture IN) : COLOR
            {
                return _Color * tex2D(_Tex, IN.localTexcoord.xy);
            }
            ENDCG
            }
    }
}

Contoh berikut adalah naungan untuk bahan yang dapat Anda gunakan untuk menginisialisasi Tekstur Render Kustom. Ketika Anda menulis naungan untuk bahan awalisasi, langkah-langkah berikut wajib:

  • #include "UnityCustomRenderTexture.cginc"

  • Gunakan Vertex Shader CustomRenderTextureVertexShader yang disediakan

  • Gunakan struktur input yang disediakan v2f_customrendertexture untuk naungan pixel.

Shader "CustomRenderTexture/CustomTextureInit"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _Tex("InputTex", 2D) = "white" {}
    }

    SubShader
    {
        Lighting Off
        Blend One Zero

        Pass
        {
            CGPROGRAM
            #include "UnityCustomRenderTexture.cginc"

            #pragma vertex InitCustomRenderTextureVertexShader
            #pragma fragment frag
            #pragma target 3.0

            float4      _Color;
            sampler2D   _Tex;

            float4 frag(v2f_init_customrendertexture IN) : COLOR
            {
                return _Color * tex2D(_Tex, IN.texcoord.xy);
            }
            ENDCG
        }
    }
}

#include "UnityCustomRenderTexture.cginc" memberi Anda akses ke set nilai bawaan. Ini termasuk nilai global, nilai dari struktur v2f_customrendertexture dan nilai dari struktur v2f_init_customrendertexture.

Struktur v2f_customrendertexture menerima input berikut:

Name Type Value
localTexcoord float3 Tekstur koordinat relatif terhadap zona pembaruan saat ini diproses.
globalTexcoord float3 Tekstur koordinat relatif terhadap Tekstur Render Kustom itu sendiri
primitiveID uint Indeks zona pembaruan saat ini diproses.
direction float3 Untuk Tekstur Render Kustom Cube, arah piksel saat ini di dalam cubemapKoleksi enam tekstur persegi yang dapat mewakili refleksi di lingkungan atau skybox yang digambar di balik geometri Anda. Enam kotak membentuk wajah kubus imajiner yang mengelilingi objek; setiap wajah mewakili pandangan di sepanjang arah sumbu dunia (hingga, kiri, kanan, ke depan dan belakang). More info
Lihat di Glossary
.

Struktur v2f_init_customrendertexture menerima input berikut:

Name Type Value
texcoord float3 Tekstur koordinat relatif terhadap Tekstur Render Kustom itu sendiri.

Struktur berikut adalah nilai global:

Name Type Value
_CustomRenderTextureWidth float Lebar Tekstur Kustom dalam piksel
_CustomRenderTextureHeight float Tinggi Tekstur Kustom dalam piksel
_CustomRenderTextureDepth float Kedalaman Tekstur Kustom dalam piksel (hanya untuk tekstur 3D, jika tidak akan selalu sama dengan 1).
_CustomRenderTextureCubeFace float Indeks kubus saat ini menghadapi proses Unity (-X, + X, -Y, +Y, -Z, + Z). Ini hanya berlaku untuk peta kubus.
_CustomRenderTexture3DSlice float Indeks irisan 3D saat ini diproses. Ini hanya berlaku untuk tekstur 3D.
_SelfTexture2D Sampler2D Untuk tekstur penyangga ganda: Tekstur yang mengandung hasil pembaruan terakhir sebelum swap terakhir.
_SelfTextureCube SamplerCUBE Untuk tekstur penyangga ganda: Tekstur yang mengandung hasil pembaruan terakhir sebelum swap terakhir.
_SelfTexture3D Sampler3D Untuk tekstur penyangga ganda: Tekstur yang mengandung hasil pembaruan terakhir sebelum swap terakhir.

  • 2017–05–18 Sitemap

  • Fitur baru dalam Unity 2017.1 NewIn20171

Render Tekstur
Tekstur Film