Fisika dalam Unity 5.0
Catatan Upgrade Lainnya untuk Unity 5.0

Panah di Unity 5.0

Catatan ini menyadari ketika proyek upgrade dari Unity 4 ke Unity 5, jika proyek Anda menggunakan kode shaderProgram yang berjalan di GPU. More info
Lihat di Glossary
kustom.

Shaders tidak lagi menerapkan intensitas cahaya 2x

Shaders tidak lagi menerapkan intensitas cahaya 2x. Alih-alih lampu secara otomatis ditingkatkan menjadi dua kali lebih terang. Ini menciptakan lebih konsistensi dan kesederhanaan dalam rig cahaya. Misalnya lampu directional bersinar pada permukaan redup putih akan mendapatkan warna yang tepat dari cahaya. Peningkatan tidak mempengaruhi animasi, sehingga jika Anda memiliki nilai intensitas cahaya animasi Anda harus mengubah kode skrip animation curvesMemungkinkan Anda untuk menambahkan data ke klip impor sehingga Anda dapat menghidupkan waktu item lain berdasarkan keadaan animator. Misalnya, untuk set permainan dalam kondisi icy, Anda dapat menggunakan kurva animasi ekstra untuk mengontrol tingkat emisi sistem partikel untuk menunjukkan napas kondensor pemain di udara dingin. More info
Lihat di Glossary
atau Anda dan membuat mereka 2x sebesar untuk mendapatkan tampilan yang sama.

Dalam kasus naungan kustom di mana Anda mendefinisikan fungsi pencahayaan Anda sendiri, Anda perlu menghapus * 2 diri Anda.

// A common pattern in shader code that has this problem will look like this
c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten * 2);
// You need to fix the code so it looks more like this
c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten);

Peningkatan interpolator dan instruksi menghitung untuk beberapa warna permukaan

Pipa pencahayaan built-in dalam Unity 5 dapat dalam beberapa kasus menggunakan interpolator berkoordinasi lebih tekstur atau hitungan instruksi matematika (untuk mendapatkan hal-hal seperti skala mesh non-uniform, GI dinamis dll bekerja). Beberapa surface shadersCara merampingkan naungan menulis untuk Pipeline Render Built-in. More info
Lihat di Glossary
Anda yang ada mungkin berjalan ke dalam koordinasi tekstur atau batas instruksi ALU, terutama jika mereka menargetkan model naungan 2.0 (standar). Menambahkan "#pragma target 3.0" dapat bekerja di sekitar masalah ini. Lihat referensi.

Skala mesh non-uniform harus dipertimbangkan dalam warna

Dalam Unity 5.0, mesh non-uniform tidak “dinilai” pada CPU lagi. Ini berarti bahwa vektor normal & tangen dapat tidak dinormalkan dalam vertex shaderProgram yang berjalan pada setiap simpul model 3D ketika model sedang diberikan. More info
Lihat di Glossary
. Jika Anda melakukan perhitungan pencahayaan manual di sana, Anda harus menormalkannya. Jika Anda menggunakan naungan permukaan Unity, maka semua kode yang diperlukan akan dihasilkan untuk Anda.

Penanganan fog berubah

Unity 5.0 membuat pekerjaan Fog built-in di Windows Phone dan konsol, tetapi untuk mencapai bahwa kita telah mengubah bagaimana Fog dilakukan sedikit. Untuk penanam permukaan dan naungan fungsi tetap, tidak ada kebutuhan tambahan yang harus dilakukan - kabut akan ditambahkan secara otomatis (Anda dapat menambahkan “nofog” ke permukaan naungan #pragma garis untuk secara eksplisit membuatnya tidak mendukung kabut).

Untuk naungan simpul/fragment yang ditulis secara manual, kabut tidak terjadi secara otomatis sekarang. Anda perlu menambahkan #pragma multi_compile_fog dan menangani makro ke kode naungan Anda. Periksa sumber naungan bawaan, misalnya Unlit-Normal bagaimana melakukannya.

Permukaan naungan alpha saluran perubahan

Secara default semua naungan permukaan buram output 1.0 ("putih") ke saluran alfa sekarang. Jika Anda ingin berhenti itu, gunakan opsi "keepalpha" di garis permukaan #pragma.

Semua naungan permukaan campuran alfa menggunakan komponen alfa yang dikompensasi oleh fungsi pencahayaan sebagai faktor campuran sekarang (padatan s.Alpha). Jika Anda menggunakan fungsi pencahayaan kustom, Anda mungkin ingin menambahkan sesuatu seperti "c.a = s.Alpha" ke ujungnya.

Sortasi dengan indeks material telah dihapus

Unity tidak lagi menyortir oleh indeks materi di renderloop maju. Ini meningkatkan kinerja karena lebih banyak objek dapat diberikan tanpa perubahan negara antara mereka. Ini memecahkan kompatibilitas untuk konten yang bergantung pada indeks material sebagai cara penyortiran. Dalam 4.x sebuah 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
dengan dua bahan akan selalu membuat bahan pertama terlebih dahulu, dan bahan kedua. Dalam Unity 5 ini bukan kasus, pesanan tergantung pada apa yang mengurangi perubahan sebagian besar negara untuk membuat 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
.

Fungsi tetap TexGen, matriks tekstur dan beberapa mode merger SetTexture dihapus

Unity 5.0 menghapus dukungan untuk fungsi tetap fungsi fungsi fungsi fungsi fungsi ini:

  • UV koordinat generasi (TexGen perintah).
  • Matrice transformasi UV (Matrix perintah pada properti tekstur atau di dalam Penyelesaian).
  • Mode merger SetTexture yang jarang digunakan: tanda tangan tambahkan (a +-b), multiply menandatangani add (ab+-c), multiply subtrak (ab-c), produk dot (dot3, dot3rgba).

Setiap di atas akan melakukan apa-apa sekarang, dan naungan 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
akan menunjukkan peringatan tentang penggunaan mereka. Anda harus menulis ulang naungan yang terkena menggunakan simpul + warnafragment yang dapat diprogram. Semua platform mendukung mereka saat ini, dan tidak ada kelebihan apa pun untuk menggunakan fungsi tetap warna.

Jika Anda memiliki versi lama dari Proyektor atau paket naungan air di proyek Anda, naungan mungkin ada menggunakan fungsi ini. Tingkatkan paket ke versi 5.0.

Mencampur bagian naungan fungsi yang dapat diprogram & tetap tidak diperbolehkan lagi

Mencampurkan fungsi tetap sebagian & warna yang dapat diprogram sebagian (misalnya fungsi tetap vertex pencahayaan & pixel shader; atau naungan simpul dan merger tekstur) tidak didukung lagi. Ini tidak pernah bekerja di ponsel, konsol atau DirectX 11 anyway. Ini diperlukan mengubah perilaku Legacy/Reflective/VertexLit naungan untuk tidak melakukan itu - itu kehilangan dukungan specular per-vertex; di sisi plus sekarang berperilaku konsisten antara platform.

D3D9 naungan kompilasi beralih dari Cg 2.2 ke HLSL

Sebagian besar ini harus transparan (hanya bug codegen lebih sedikit dan naungan yang sedikit lebih cepat). Namun kompilator HLSL dapat sedikit lebih memilih tentang sintaks. Beberapa contoh:

  • Anda perlu sepenuhnya menginisialisasi variabel output. Gunakan UNITY_INITIALIZE_OUTPUT helper makro, seperti yang Anda inginkan di D3D11.
  • "float3 (a_4_component_value)" konstruktor tidak bekerja. Gunakan "a_4_component_value.xyz" bukan.

variabel naungan "unity_Scale" telah dihapus

Sifat naungan "unity_Scale" telah dihapus. 4.x kesatuan_ Skala.w adalah 1 / seragam Timbangan transformasi, Unity 4.x hanya membuat model non-skala atau seragam. Timbangan lain dilakukan pada CPU, yang sangat mahal & memiliki overhead memori yang tak terduga.

Dalam Unity 5.0 semua ini dilakukan di GPU dengan cukup melewati matriks dengan skala non-uniform ke naungan. Jadi unity_Scale telah dihapus karena tidak dapat mewakili skala penuh. Dalam kebanyakan kasus di mana “unity_Scale” digunakan kami merekomendasikan untuk mengubah ruang dunia terlebih dahulu. Dalam kasus transformasi normal, Anda selalu harus menggunakan menormalkan pada perubahan normal sekarang. Dalam beberapa kasus ini menyebabkan sedikit lebih mahal kode di naungan simpul.

// Unity 4.x
float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal * unity_Scale.w);
// Becomes this in Unity 5.0
float3 norm = normalize(mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal));
// Unity 4.x
temp.xyzw = v.vertex.xzxz * unity_Scale.xzxz * _WaveScale4 + _WaveOffset;
 
// Becomes this in Unity 5.0
float4 wpos = mul (_Object2World, v.vertex);
temp.xyzw = wpos.xzxz * _WaveScale4 + _WaveOffset;

Bayangan, Tekstur Kedalaman dan pelacak bayanganCollector

Terus meneruskan bayangan lampu arah tidak terpisah “pengumpul lilin” melewati lagi. Sekarang mereka menghitung bayangan ruang layar dari tekstur kedalaman cameraKomponen yang menciptakan gambar sudut pandang tertentu di tempat kejadian Anda. Output ditarik ke layar atau ditangkap sebagai tekstur. More info
Lihat di Glossary
(seperti dalam pencahayaan yang rusak).

Ini berarti bahwa LightMode=ShadowCollector melewati naungan tidak digunakan untuk apa pun; Anda hanya dapat menghapusnya dari naungan Anda.

Tekstur kedalaman itu sendiri tidak dihasilkan menggunakan pengganti naungan lagi; itu diberikan dengan naungan bayanganCaster melewati. Ini berarti bahwa selama objek Anda dapat melemparkan bayangan yang tepat, maka mereka juga akan muncul dalam tekstur kedalaman kamera dengan benar (menjadi sangat sulit dilakukan sebelum, jika Anda ingin animasi simpul kustom atau pengujian alfa yang funky). Ini juga berarti bahwa Camera-DepthTexture. warna tidak digunakan untuk apa pun sekarang. Dan juga, semua naungan bayangan built-in yang digunakan tidak ada kusen backface; yang diubah untuk mencocokkan mode culling rendering biasa.

Fisika dalam Unity 5.0
Catatan Upgrade Lainnya untuk Unity 5.0