Lightmapping and shaders
Cahayamap UVs pengenalan

Cahayamap UVs pengenalan

Kedua sistem Realtime Global IlluminationKelompok teknik yang model pencahayaan langsung dan tidak langsung untuk memberikan hasil pencahayaan yang realistis.
Lihat di Glossary
dan sistem Penerangan Global Baked menggunakan lightmaps, dan karenanya membutuhkan UV lightmapTekstur 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
.

Unity menggunakan set terpisah UV lightmap untuk sistem Penerangan Global Realtime dan sistem Penerangan Global Baked. Ada dua alasan untuk ini:

  • Tidak ada korespondensi langsung dalam kelompok kasus antara peta cahaya real-time dan panggang; contoh yang berada di peta cahaya real-time yang sama mungkin dalam dua peta cahaya panggang yang berbeda, dan sebaliknya.
  • Mesh yang muncul pada skala yang berbeda berbagi lightmap UV di baked lightmaps, tetapi tidak berbagi UV dalam peta cahaya real-time.

Baked lightmap UV

Login UV adalah per-mesh: semua kasus meshGrafik utama primitif Unity. Mesh membuat sebagian besar dunia 3D Anda. Unity mendukung mesh poligon triangulat atau Quadrangulasi. Nurbs, Nurms, permukaan Subdiv harus dikonversi ke poligon. More info
Lihat di Glossary
yang sama berbagi UV peta cahaya panggang yang sama. Unity dapat menghitung UV untuk peta cahaya panggang ketika Anda mengimpor model, atau Anda dapat menyediakan data Anda sendiri.

Toko unity baked lightmap UV di jalanya di saluran Mesh.uv2. Saluran ini peta ke TEXCOORD1 shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
semantik, dan biasanya disebut "UV1".

Jika Baked Global Illumination diaktifkan dan diberikan MeshRenderer menerima iluminasi global dari lightmaps, Unity menggunakan data di saluran Mesh.uv2 untuk peta dengan benar peta peta peta peta peta peta cahaya panggang ke jala.

Sitemap Jika Anda ingin menggunakan Note: untuk tujuan lain dalam mesh tertentu, Anda harus memastikan bahwa semua komponen MeshRenderer yang menggunakan mesh menerima iluminasi global dari Mesh.uv2 daripada lightmaps. Mengubah ini dengan Light Probesprobe cahaya menyimpan informasi tentang bagaimana cahaya melewati ruang di tempat kejadian Anda. Koleksi probe cahaya yang diatur dalam ruang tertentu dapat meningkatkan pencahayaan pada objek bergerak dan pemandangan LOD statis dalam ruang itu. More info
Lihat di Glossary
, atau API Komponen Renderer Mesh Inspektur.MeshRenderer.receiveGI API.

Untuk informasi lebih lanjut, lihat Menghasilkan UV peta cahaya.

Real-time lightmap UVs

Real-time lightmap UV adalah per-Mesh Renderer: semua kasus mesh yang sama berbagi data input yang sama, tetapi instance yang berbeda dari Mesh RenderersKomponen mesh yang mengambil geometri dari Filter Mesh dan render di posisi yang ditentukan oleh komponen Transform objek. More info
Lihat di Glossary
dapat menggunakan UV peta cahaya real-time yang berbeda pada waktu runtime. Unity menghitung UV untuk sistem Penerangan Global Realtime selama tahap prakomputer. Perhitungan ini mengambil UV per-mesh sebagai inputnya, dan menggunakan data untuk membuat per-Mesh Renderer UVs. Unity dapat menghasilkan input per-mesh UV ketika Anda mengimpor model, atau Anda dapat menyediakan data Anda sendiri.

Ini berfungsi sebagai berikut:

  • Unity dapat menggunakan data dalam saluran Mesh.uv3 sebagai input untuk perhitungan UV lightmap real-time. Mesh.uv3 peta ke TEXCOORD2 naungan semantik, dan biasanya disebut "UV2".
  • Jika tidak ada data dalam Mesh.uv3 tetapi ada data dalam Mesh.uv2, Unity jatuh kembali untuk menggunakan data dalam Mesh.uv2 sebagai input untuk perhitungan UV lightmap real-time. Mesh.uv2 digunakan untuk baked lightmap UVs. Hal ini umum untuk menggunakan UV peta cahaya panggang sebagai data input untuk UV peta cahaya real-time.
  • Hasil perhitungan disimpan per-MeshRenderer, dalam MeshRenderer.enlightenVertexStream. Jika Penerangan Global Realtime diaktifkan dan komponen MeshRenderer yang diberikan berkontribusi pada iluminasi global dan menerima iluminasi global dari lightmaps, Unity secara otomatis melewati data di MeshRenderer.enlightenVertexStream ke TEXCOORD2 di naungan, bukan data di Mesh.uv3.

Sitemap Jika Anda ingin menggunakan Note: untuk tujuan lain dalam mesh yang menggunakan Penerangan Global Realtime, Anda harus memastikan bahwa semua komponen MeshRenderer yang menggunakan mesh menerima iluminasi global dari Light Probes daripada lightmaps. Mengubah ini dengan Mesh.uv3, atau API Komponen Renderer Mesh Inspektur.MeshRenderer.receiveGI API.

Untuk informasi lebih lanjut, lihat Menghasilkan UV peta cahaya.

Bagaimana Unity menghitung real-time lightmap UVs

Ini adalah apa yang terjadi ketika Unity mengambil input per-mesh UV dan memprosesnya menjadi per-Mesh Renderer output UV.

Packing

Unity repacks real-time lightmap UVs untuk memastikan bahwa setiap batas grafik jatuh di pusat texel di semua arah, dan kemudian menambahkan setengah-tekel padding di sekitar batas setiap grafik. Ini memastikan bahwa semua grafik memiliki texel penuh ruang antara mereka.

Ini karena resolusi peta cahaya real-time sangat rendah, untuk membuatnya layak untuk memperbaruinya secara real-time. Resolusi rendah tidak mempengaruhi kualitas grafis karena peta cahaya ini hanya menyimpan pencahayaan tidak langsung frekuensi rendah, tetapi dapat menyebabkan pendarahan ketika grafik berbagi texels. Repacking memastikan bahwa grafik tidak pernah berbagi texels. Hal ini menghindari masalah ini, dan juga memungkinkan Unity untuk efisien paket grafik di samping satu sama lain.

Sitemap Teknik pengepakan ini berarti bahwa UV yang dihitung tergantung pada resolusi skala dan peta ringan dari instance, yang mengapa lightmap real-time UVs adalah per-Mesh Renderer; Namun, Unity secara otomatis mengoptimalkan ini di mana mungkin dan Mesh Renderers yang menggunakan mesh yang sama dengan skala yang sama dan resolusi lightmap berbagi UV yang sama.Note: This packing technique means that the calculated UVs are dependent on the scale and lightmap resolution of the instance, which is why real-time lightmap UVs are per-Mesh Renderer; however, Unity automatically optimizes this where possible and Mesh Renderers that use the same mesh with the same scale and lightmap resolution share the same UVs.

Merging

Opsional, Anda dapat menginstruksikan Unity untuk menggabungkan grafik UV di mana mungkin selama proses ini. Ini mengurangi ukuran peta lampu, dan dapat meningkatkan penggunaan dan kinerja memori runtime.

Anda dapat mengaktifkan optimasi ini pada setiap 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
dengan komponen Mesh Renderer. Pada bagian Mesh Renderer Inspektur, arahkan ke bagian Lightmapping dan Optimize Realtime UVs.

Sitemap Fitur ini kadang-kadang membuat kesalahan tentang penghentian dalam pemetaan UV asli. Sebagai contoh, tepi yang tajam dapat disalahgunakan sebagai permukaan terus menerus. Jika ini terjadi, menonaktifkan fitur ini.Note: This feature sometimes makes mistakes about discontinuities in the original UV mapping. For example, an intentionally sharp edge may be misinterpreted as a continuous surface. If this happens, disable this feature.

Lightmapping and shaders
Cahayamap UVs pengenalan