Baru-baru ini saya menambahkan paket tekstur ke proyek saya yang akan mengemas sejumlah tekstur menjadi satu, seperti ini:
Jadi misalnya yang ini berukuran 582x1023 piksel. Tujuan menambahkan tekstur yang dikemas ini jelas untuk meningkatkan kinerja jadi saya ingin mencari ukuran tekstur optimal untuk tekstur OpenGL (menggunakan LWJGL). Hal-hal yang saya temukan adalah bahwa banyak didukung ukuran maksimum tekstur tampaknya menjadi 1024x1024, menurut ini misalnya. Ini menurut saya aneh karena jelas banyak tekstur saja yang akan lebih besar dari itu, jadi apa yang terjadi dengan itu? Saya cukup yakin sebagian besar kartu grafis mendukung tekstur lebih besar dari itu. Dapatkah saya mengharapkan sebagian besar kartu grafis untuk menangani misalnya tekstur 4096x4096 (atau mungkin lebih besar dari itu)?
Untuk sampai pada poin kedua saya (saya harap ini masih dianggap sebagai satu pertanyaan, tetapi pada dasarnya bermuara pada masalah yang sama): Haruskah tekstur berukuran hingga kekuatan 2 (256x256, 512x512, 1024x1024, 2048x2048, ..) dan haruskah Saya pad tekstur dikemas lebih kecil dari itu ke kekuatan berikutnya 2? Menurut pertanyaan ini dari tahun 2011 ini bukan persyaratan tetapi dapat meningkatkan kinerja dan menghindari bug kecil dan yang satu ini dari 2012 mengatakan bahwa Anda pasti harus membalut tekstur. Jadi saya menyadari bahwa pertanyaan-pertanyaan ini telah ditanyakan sebelumnya tetapi mereka diberi tanggal yang wajar untuk jawaban telah berubah dan selanjutnya mereka masing-masing hanya sebagian menjawab pertanyaan saya. Bagaimana proyek lain / menangani ini?
TL; DR: Ukuran tekstur apa yang dapat saya harapkan dari sebagian besar kartu grafis? Berapa ukuran tekstur yang optimal (atau ada)? Haruskah saya menempelkan lebar tekstur ke kekuatan 2 berikutnya?
sumber
Jawaban:
Saya akan mencoba menjawab ini, meskipun YMMV. Saya menggunakan Survei Perangkat Keras Steam ( http://store.steampowered.com/hwsurvey?platform=pc ) untuk menentukan berapa RAM video (VRAM) yang tersedia di sebagian besar komputer. Melihat hasil pada 2015-10-13 (hari ini), hampir 85% orang memiliki VRAM 1024 MB.
Pertanyaan Anda sangat luas, karena tidak menyatakan perangkat keras target (konsol, PC, perangkat genggam, perangkat seluler?) Saya akan berbicara tentang PC dan Anda dapat memperkirakan untuk platform lain berdasarkan spesifikasi perangkat keras.
Dengan asumsi 32 bit warna + alpha per pixel yaitu 4 bypes per pixel, 1 GB VRAM dapat secara maksimal menampung ~ 256 juta piksel. Ini sama dengan 256 1K oleh 1K tekstur. Ini mengasumsikan (secara tidak benar) bahwa Anda hanya ingin menahan tekstur dalam VRAM Anda, sementara akan ada banyak hal lain (mis. Data mesh, jika Anda bekerja dalam 3D) yang perlu Anda tinggalkan. Anda juga mungkin ingin memberi lebih banyak ruang untuk memetakan mip tekstur, yang biasanya paling baik jika tekstur Anda adalah kekuatan dua.
Konsol modern (XBOX One dan PS4) memiliki 4-8 GB RAM terpadu, sebagian besar perangkat genggam dan perangkat seluler memiliki 1 - 2 GB RAM terpadu, dengan batasan berapa banyak yang dapat Anda alokasikan sebagai VRAM.
Saya biasanya akan membuat tekstur 2K sehingga berfungsi pada kebanyakan PC, memungkinkan opsi untuk menurunkan untuk perangkat ujung bawah. Jika Anda sedang menulis game 2D dan ingin menargetkan tampilan resolusi yang lebih tinggi (4K, retina iPad, dll) Anda dapat menggunakan tekstur 4K untuk latar belakang, tetapi untuk sebagian besar bagian lain, itu mungkin berlebihan.
Semoga ini bisa membantu dan tidak mengeruhkan air.
sumber