Konversi PNG ke DDS dalam format DXT5 dan lihat hasilnya dengan menggunakan python

Jika Anda yakin bahwa Anda memahami apa yang diharapkan dari format DXT5, maka periksa diri Anda: di spoiler, animasi di sebelah kiri gambar PNG 4x4 piksel, di sebelah kanan - dikonversi ke DDS (DXT5)
Jika ini tidak mengejutkan Anda, silakan lanjutkan.

Ya, saya tahu persis bagaimana konversi ke DXT5 terjadi.
gambar

Jika Anda mencari alat atau kesempatan dengan cepat untuk melihat apa yang akan terjadi pada gambar PNG Anda setelah mengonversi ke DXT5 - selamat datang di artikel tersebut.

Tujuan


Gambaran umum format DXT5 dan alat yang memungkinkan Anda melihat hasil konversi dengan cepat.

Artikel ini tidak dirancang untuk pro, tetapi hanya untuk panduan.

Untuk siapa


  • Siapa yang tidak menghadapi penciptaan tekstur
  • Draw bitmap: pixelart / 2D
  • Siapa yang bertanya-tanya binatang seperti apa S3TC / DXT tersebut
  • Siapa yang tidak mencari cara mudah untuk membuat game
  • Siapa yang mencoba membuat game tanpa kerangka kerja yang terkenal (Unity, dll.)
  • Gunakan sistem UNIX (karena alat, yang akan kita pertimbangkan nanti, diuji hanya di bawah Ubuntu)

Apa itu S3TC / DXT


Secara singkat, ini adalah kompresi gambar sehingga: a) ia menggunakan lebih sedikit (v) RAM; b) dimuat lebih cepat dalam (v) RAM.

Di sini saya membiarkan diri saya meninggalkan tautan ke piring di mana ada ringkasan singkat dari format dan mengapa / kapan menggunakannya di sini .

Jika Anda ingin membaca secara lebih terperinci tentang bagaimana format ini dapat digunakan dalam permainan, maka inilah artikel dalam 4 bagian dalam bahasa Inggris, atau jika Anda lebih suka membaca apa rumus kompresi itu sendiri, maka di sini adalah artikel dalam bahasa Rusia , dalam bahasa Inggris .

Masalah


DXT5 (saya mengambilnya sebagai contoh, karena saya menggunakannya dalam proyek saat ini) adalah format kompresi lossy, jadi kami mengorbankan warna. Pertama, warnanya tidak akan berada dalam format RGB 8-bit, mis. bukan RGB888, tetapi dalam format RGB565. Masih ada setengah masalah dengan ini. Tetapi masalah utama (menurut saya) adalah bahwa dalam satu texel, yaitu 4 x 4 piksel, output akan memiliki maksimum 4 warna: 2 dasar dan 2 tambahan.

Bayangkan Anda adalah pengembang (atau desainer / artis) yang belum pernah mengalami pengembangan game sebelumnya (sebagai contoh) dan memutuskan untuk membuat sprite multi-warna yang indah dengan gaya pixelart / 2D, atau hanya gambar di latar belakang (lagi, bitmap, bukan vektor) .

Mengambil mouse / tablet, menggambar. Tampaknya indah (anggap saja itu indah).

gambar

Untuk mengubahnya menjadi DDS, Anda harus menggunakan GIMP, Photoshop dengan plugins, atau yang serupa. Tetapi Anda akan melihat hasilnya hanya setelah Anda membuka file yang dihasilkan.

Mari kita lihat apa yang terjadi (bayangkan kita hanya melihat sisi kanan gambar, dalam hal membuka file DDS dengan GIMP):

gambar

Gadis itu benar-benar sedih, bunga-bunga layu, diadem menjadi seutas tali. "Hmm," katamu. Sekarang, jika saya melihat apa yang terjadi sebelumnya ... Dan di sini alat yang saya kumpulkan untuk kebutuhan saya dapat membantu (bantuan bersyarat) - Pyglet PNG ke DDS editor

Mengapa


Untuk mengedit / mengedit file sumber, pemilihan warna perkiraan, persiapan palet perkiraan.

"Editor" ini on the fly mengubah gambar PNG menjadi DDS dan Anda dapat langsung melihat apa yang terjadi ketika mengonversi dan memasukkan sprite ke dalam gim.

Mengapa


Karena saya tidak menemukan alat yang memungkinkan Anda melihat dengan cepat seperti apa gambar / tekstur Anda nantinya.

Hanya itu semua


Pada tahap ini, ya. Banyak hal dapat ditambahkan ke "editor" seperti itu, tetapi semuanya memiliki waktu.

Saya ingin tahu lebih banyak dari komunitas: bagaimana Anda mengatasi situasi seperti itu ketika Anda perlu memeriksa apa yang akan terjadi pada tekstur di output.

PS: editor bekerja secara normal dengan gambar hingga 512 * 512. Mengalir dari memori, tetapi tidak terlalu banyak :) (dalam kode Anda dapat menemukan metode ini dengan komentar "!!! ACHTUNG !!!").

Source: https://habr.com/ru/post/id480214/


All Articles