Shadow Cascades
jendela pencahayaan

Masalah bayangan

Performa bayangan

Bayangan real-time memiliki overhead rendering yang cukup tinggi; setiap GameObjectsObjek 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
yang mungkin melemparkan bayangan harus pertama diberikan ke peta bayangan dan kemudian peta itu akan digunakan untuk membuat objek yang mungkin menerima bayangan.

bayangan lembut memiliki overhead rendering yang lebih besar daripada bayangan keras, tetapi ini hanya mempengaruhi GPU dan tidak menyebabkan banyak pekerjaan CPU ekstra.

Jika rendering bayangan real-time untuk geometri kompleks sangat mahal, pertimbangkan menggunakan jala LODTeknik Tingkat Detail (LOD) adalah optimasi yang mengurangi jumlah segitiga yang dimiliki Unity untuk membuat GameObject ketika jaraknya dari kamera meningkat. More info
Lihat di Glossary
rendah atau bahkan primitif untuk melemparkan bayangan.

Jika ini terlalu intensif sumber daya, Anda dapat bayangan palsu menggunakan tekstur blurred yang diterapkan pada 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
sederhana atau di bawah karakter Anda, atau dapat membuat bayangan blob dengan naungan kustom.quadObjek primitif yang menyerupai pesawat tetapi tepinya hanya satu unit panjang, hanya menggunakan 4 simpul, dan permukaan berorientasi pada pesawat XY ruang koordinat lokal. More info
Lihat di Glossary
underneath your characters, or can create blob shadows with custom shaders.

Bayangan jerawat

Permukaan langsung diterangi oleh Cahaya kadang-kadang muncul sebagian di bayangan. Ini karena pixels yang harus tepat pada jarak yang ditentukan dalam peta bayangan kadang-kadang dihitung sebagai lebih jauh (ini adalah konsekuensi dari menggunakan penyaringan bayangan, atau gambar resolusi rendah untuk peta bayangan). Hasilnya adalah pola sewenang-wenang dari piksel di bayangan ketika mereka harus menyala, memberikan efek visual yang dikenal sebagai "bayeng jerawat".

Shadow acne in the form of false self-shadowing artifacts
Bayangan jerawat dalam bentuk artefak berbentuk diri palsu

Pengaturan bias ringan

Untuk mencegah jerawat jerawat, Anda dapat menyesuaikan pengaturan light bias.

Anda dapat menambahkan bias ke jarak di peta bayangan untuk memastikan bahwa piksel di garis perbatasan melewati perbandingan, atau Anda dapat menetapkan geometri sedikit di sepanjang normal.

Pada 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
Built-in, Anda dapat mengatur nilai-nilai ini dengan sifat Bias dan Normal Bias di jendela Light% ketika bayangan diaktifkan.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
window when shadows are enabled.

Jangan mengatur nilai Bias terlalu tinggi, karena daerah di sekitar bayangan dekat GameObject casting kadang-kadang diterangi secara palsu. Hasil ini dalam bayangan terputus, membuat tampilan GameObject seolah-olah terbang di atas tanah.

A high Bias value makes the shadow appear disconnected from the GameObject
Nilai Bias tinggi membuat bayangan muncul "dikoneksikan" dari GameObject

Demikian juga, mengatur nilai Normal Bias terlalu tinggi membuat bayangan tampak terlalu sempit untuk GameObject:

A high Normal Bias value makes the shadow shape too narrow
Nilai Normal Bias tinggi membuat bentuk bayangan terlalu sempit

Dalam beberapa situasi, Normal Bias dapat menyebabkan efek yang tidak diinginkan disebut "pendarahan ringan", di mana cahaya dikelok melalui geometri terdekat ke daerah yang harus dibahas. Solusi potensial adalah membuka Mesh RendererKomponen mesh yang mengambil geometri dari Filter Mesh dan render di posisi yang ditentukan oleh komponen Transform objek. More info
Lihat di Glossary
GameObject dan mengubah properti Cast Shadows menjadi Two Sided. Ini kadang-kadang dapat membantu, meskipun dapat lebih intensif sumber daya dan meningkatkan kinerja overhead ketika rendering SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
.

Nilai bias untuk Cahaya mungkin perlu rendam untuk memastikan bahwa efek yang tidak diinginkan tidak terjadi. Hal ini umumnya lebih mudah untuk mengukur nilai yang tepat oleh mata daripada mencoba menghitungnya.

A low Shadow near plane offset value create the appearance of holes in shadows
Bayangan rendah dekat nilai offset pesawat menciptakan penampilan lubang di bayangan
Correct shadowing
bayangan yang benar

Shadow pancaking

Untuk lebih lanjut mencegah jerawat jerawat kita menggunakan teknik yang dikenal sebagai Shadow pancaking. Idenya adalah untuk mengurangi kisaran ruang cahaya yang digunakan ketika membuat peta bayangan sepanjang arah cahaya. Ini menyebabkan peningkatan presisi dalam peta bayangan, mengurangi jerawat.

A diagram showing the shadow pancaking principle
Diagram menunjukkan prinsip pancaking bayangan

Dalam diagram di atas:

  • light blue circles mewakili kasir bayangan
  • dark blue rectangle mewakili ruang cahaya asli
  • green line mewakili pesawat dekat yang dioptimalkan (tidak termasuk kasir bayangan tidak terlihat dalam pandangan frustum)

Menjepit kas bayangan ini ke dekat pesawat klip ruang yang dioptimalkan (dalam Vertex Shader). Perhatikan bahwa sementara ini bekerja dengan baik secara umum, itu dapat membuat artefak untuk segitiga yang sangat besar melintasi dekat pesawat klip:

Large triangle problem
Masalah segitiga besar

Dalam hal ini, hanya satu simpul segitiga biru di belakang dekat pesawat klip dan menjepitnya. Namun, ini mengubah bentuk segitiga, dan dapat membuat bayangan yang salah.

Anda dapat mengubah properti Shadow Near Plane Offset dari jendela Quality untuk menghindari masalah ini. Ini menarik kembali dekat pesawat klip. Namun, menetapkan nilai ini sangat tinggi akhirnya memperkenalkan jerawat bayangan, karena menaikkan kisaran bahwa peta bayangan perlu menutupi ke arah cahaya. Atau, Anda juga dapat menguji segitiga pengecoran bayangan yang bermasalah.

Bayangan tidak muncul

Jika Anda menemukan bahwa satu atau lebih objek tidak membuat bayangan maka Anda harus memeriksa poin berikut:

  • Bayangan real-time dapat dinonaktifkan sepenuhnya di jendela Quality. Pastikan bahwa Anda memiliki tingkat kualitas yang benar diaktifkan dan bayangan dimatikan untuk pengaturan itu.

  • Semua Mesh Renderers di tempat kejadian harus diatur dengan set tepat Receive Shadows dan Cast Shadows. Kedua diaktifkan secara default, tetapi periksa bahwa mereka belum dinonaktifkan secara tidak sengaja.

  • Hanya benda buram yang dilemparkan dan menerima bayangan, sehingga benda-benda yang menggunakan built-in Transparent atau Partikel naungan tidak akan dibuang atau diterima. Umumnya, Anda dapat menggunakan umbi Cutout Transparan bukan untuk objek dengan “gaps” seperti pagar, vegetasi, dll. Custom ShadersProgram yang berjalan di GPU. More info
    Lihat di Glossary
    harus pixel-lit dan gunakan Geometry render queue.

  • Objek yang menggunakan teduh VertexLit tidak dapat menerima bayangan, tetapi mereka dapat melemparkannya.

  • Unity tidak dapat menghitung bayangan untuk GameObjects yang memiliki bahan dengan "Unlit" jenis naungan. Unity hanya dapat menghitung bayangan untuk bahan dengan warna yang mendukung pencahayaan.

  • Di Pipeline Render Built-in, menggunakan Maju rendering jalur, beberapa warna hanya memungkinkan cahaya directional paling terang untuk melemparkan bayangan (khususnya, ini terjadi dengan naungan bawaan Unity dari versi 4.x). Jika Anda ingin memiliki lebih dari satu lampu bayangan-casting maka Anda harus menggunakan Deferred ShadingSebuah jalur rendering di Pipa Render Built-in yang tidak membatasi jumlah Lampu yang dapat mempengaruhi GameObject. Semua Lampu dievaluasi per-piksel, yang berarti bahwa mereka semua berinteraksi dengan peta normal dan sebagainya. Selain itu, semua Lampu bisa memiliki cookie dan bayangan. More info
    Lihat di Glossary
    rendering pathTeknik yang menggunakan pipa render untuk membuat grafik. Memilih jalur rendering yang berbeda mempengaruhi bagaimana pencahayaan dan pembentukan dihitung. Beberapa jalur rendering lebih cocok untuk berbagai platform dan perangkat keras daripada yang lain. More info
    Lihat di Glossary
    . Anda dapat mengaktifkan naungan Anda sendiri untuk mendukung "bayi penuh" dengan menggunakan ruang% fullforwardshadows%%.permukaan naunganCara merampingkan naungan menulis untuk Pipeline Render Built-in. More info
    Lihat di Glossary
    directive.

Shadow Cascades
jendela pencahayaan