Lightmaps: Informasi teknis
Cahayamap UVs pengenalan

Lightmapping and shaders

Halaman ini berisi informasi tentang cara membuat shadersProgram yang berjalan di GPU. More info
Lihat di Glossary
kompatibel dengan Unity lightmappersAlat dalam Unity yang bakes lightmap sesuai dengan pengaturan lampu dan geometri di tempat kejadian Anda. More info
Lihat di Glossary
.

The Meta Pass

Meta Pass adalah lulusan Shader yang menyediakan nilai albedo dan emisi ke sistem Global IlluminationKelompok teknik yang model pencahayaan langsung dan tidak langsung untuk memberikan hasil pencahayaan yang realistis.
Lihat di Glossary
. Nilai-nilai ini terpisah dari mereka yang digunakan dalam rendering real-time, yang berarti bahwa Anda dapat menggunakan Meta Pass untuk mengontrol bagaimana GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary
terlihat dari sudut pandang sistem baking pencahayaan tanpa mempengaruhi penampilannya tepat waktu.

Contoh ketika ini akan berguna adalah jika Anda menginginkan mos hijau di tebing untuk menghasilkan cahaya tidak langsung hijau yang berlebihan di lightmapsTekstur pra-render yang mengandung efek sumber cahaya pada objek statis di tempat kejadian. Lightmaps dilalui atas geometri adegan untuk menciptakan efek pencahayaan. More info
Lihat di Glossary
Anda, tetapi Anda tidak ingin mengubah warna 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
dalam waktu nyata dari naungan.

Semua Bahan bawaan Unity memiliki Meta Pass, dan Standar Shader mengandung Meta pass. Jika Anda menggunakan ini, Anda tidak perlu melakukan apa pun untuk mengaktifkan Meta Pass. Jika Anda menggunakan Shader kustom, Anda dapat menambahkan Meta Pass Anda sendiri.

Sitemap Contoh Shader dengan Meta lulus Example Shader with a Meta pass

Shader di bawah ini memungkinkan Anda untuk menentukan warna albedo dan albedo Tekstur yang hanya digunakan oleh sistem baking pencahayaan, tanpa mempengaruhi munculnya Material pada runtime. Dalam contoh ini, emisi diambil dari UV; tetapi nilai apa pun dapat digunakan untuk mengontrolnya.

Shader "Custom/metaPassShader"{

    Properties {
        _Color ("Color", Color)=(1,1,1,1)
        _MainTex ("Albedo (RGB)",2D)="white"{}
        _Glossiness ("Smoothness", Range(0,1))=0.5
        _Metallic ("Metallic", Range(0,1))=0.0

        _GIAlbedoColor ("Color Albedo (GI)", Color)=(1,1,1,1)
        _GIAlbedoTex ("Albedo (GI)",2D)="white"{}
    }

    SubShader {
    // ------------------------------------------------------------------
    // Extracts information for lightmapping, GI (emission, albedo, ...)
    // This pass is not used during regular rendering.
        Pass
        {
            Name "META"
            Tags {"LightMode"="Meta"}
            Cull Off
            CGPROGRAM

            #include"UnityStandardMeta.cginc"

            sampler2D _GIAlbedoTex;
            fixed4 _GIAlbedoColor;
            float4 frag_meta2 (v2f_meta i): SV_Target
            {
                // We're interested in diffuse & specular colors
                // and surface roughness to produce final albedo.

                FragmentCommonData data = UNITY_SETUP_BRDF_INPUT (i.uv);
                UnityMetaInput o;
                UNITY_INITIALIZE_OUTPUT(UnityMetaInput, o);
                fixed4 c = tex2D (_GIAlbedoTex, i.uv);
                o.Albedo = fixed3(c.rgb * _GIAlbedoColor.rgb);
                o.Emission = Emission(i.uv.xy);
                return UnityMetaFragment(o);
            }

            #pragma vertex vert_meta
            #pragma fragment frag_meta2
            #pragma shader_feature _EMISSION
            #pragma shader_feature _METALLICGLOSSMAP
            #pragma shader_feature ___ _DETAIL_MULX2
            ENDCG
        }

        Tags {"RenderType"="Opaque"}
        LOD 200

        CGPROGRAM
        // Physically-based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard fullforwardshadows nometa
        // Use Shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input {
            float2 uv_MainTex;
        };

        half _Glossiness;
        half _Metallic;
        fixed4 _Color;

        void surf (Input IN,inout SurfaceOutputStandard o){
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex)* _Color;
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Alpha = c.a;
        }
        ENDCG
    }

    FallBack "Diffuse"
}

Meta Pass informasi teknis

Enlighten Realtime Global Illumination dan lightmapping menggunakan Meta Pass Unity untuk mengekstrak nilai albedo dari permukaan dan menangani angkutan sendiri dengan menggunakan albedo permukaan pada setiap bouncing.

Permukaan metalik dengan hitam (atau hampir hitam) albedo sangat sedikit cahaya redup. Karena lightmappers hanya menangani angkutan cahaya diffuse, ini berarti bahwa Anda dapat melihat cahaya yang sangat sedikit beruncing dari jenis permukaan ini. Akun Meta Passes bawaan unity untuk ini dengan menyediakan versi yang ditingkatkan dari warna hue logam bukan albedo yang benar secara fisik. Ini berarti bahwa Anda mendapatkan beberapa bounce bahkan dari bahan logam. Jika Anda ingin perilaku yang berbeda, Anda dapat membuat lulus meta kustom.

Built-in Meta Passes tidak menangani refleksi spektral.

Catatan: Jika Anda menggunakan EnlightenSistem pencahayaan oleh Geomerics yang digunakan dalam Unity untuk lightmapping dan untuk Mencerahkan Penerangan Global Realtime. More info
Lihat di Glossary
Realtime Global Illumination, Meta lulus di Pemain tidak secepatnya, tetapi lebih fleksibel karena Anda tidak terbatas pada warna tunggal.

Transparansi RGB kustom

Secara default, naungan dalam penggunaan Unity transparansi monokrom. Ini berarti bahwa Unity menggunakan saluran alfa warna material atau tekstur albedo untuk mengevaluasi transmisi cahaya melalui bahan.

Selama lightmapping, Anda dapat menggunakan transparansi RGB kustom sebagai gantinya. Ini berarti bahwa Unity menggunakan nilai tekstur yang diberikan untuk mengevaluasi transmisi cahaya melalui bahan. Ini berguna ketika Anda ingin transparansi berbasis warna yang independen dari warna material atau tekstur albedo; misalnya, jika Anda ingin memanggang pencahayaan yang mensimulasikan perilaku cahaya bersinar melalui jendela kaca patri.

Untuk menggunakan transparansi RGB kustom selama lightmapping, tambahkan garis berikut ke kode ShaderLabBahasa Unity untuk mendefinisikan struktur benda-benda Shader. More info
Lihat di Glossary
Anda:

_TransparencyLM ("Transmissive Texture", 2D) = "white" {}

Ini menciptakan bahan properti yang muncul dalam Bahan 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
dengan nama " Tekstur yang diizinkan". Menetapkan tekstur yang diinginkan ke bidang ini.

Lightmaps: Informasi teknis
Cahayamap UVs pengenalan