Saya memiliki tugas untuk Universitas, dan tugas saya adalah membahas tekstur yang digunakan dalam video game, dan bagaimana mereka berkembang.
Pertanyaan utama saya adalah, apa perbedaan mendasar antara menggunakan sprite, atau menggunakan metode tekstur lainnya?
Setelah melakukan sedikit riset sendiri, saya sepertinya cenderung bahwa Sprite menyimpan gambar dalam satu file, dan dapat digunakan untuk animasi dll. Sekarang, dengan permainan modern, sprite yang saya percaya cenderung kurang digunakan seiring kemajuan teknologi dan tekstur lain yang tersedia seperti pemetaan benjolan. Meskipun sprite masih digunakan sampai sekarang untuk mengakomodasi fitur seperti bar kesehatan atau tekstur jarak jauh.
Tapi apa keuntungan utama menggunakan tekstur, dibandingkan sprite?
sumber
Jawaban:
Pada akhirnya, sprite dan tekstur hanyalah gambar - blok data warna raster (meskipun kadang-kadang kita sedikit mendorong batas untuk memasukkan data non-gambar ke dalamnya). Perbedaannya terletak pada bagaimana kita menggunakannya.
Kami biasanya menyebut gambar (atau bagian dari gambar yang mengandung banyak bagian terpisah) sebagai "sprite" jika tujuan render yang dimaksudkan akan ditarik langsung ke kisi 2D layar, tanpa distorsi perspektif. Jadi apa yang Anda lihat dalam permainan yang berjalan pada dasarnya adalah apa yang Anda lihat dalam file gambar itu sendiri (terlepas dari efek pewarnaan / pertukaran warna / transparansi). Ini berlaku untuk ubin latar belakang dan karakter / objek interaktif dalam game 2D, kartu "papan iklan" seperti partikel dan gaya rendering pohon & semak yang lebih lama, dan juga elemen antarmuka pengguna dan ikon di game 3D juga.
Sebaliknya, jika kita menggunakan gambar untuk memberikan detail permukaan untuk poligon dari objek 3D yang mungkin digambarkan dalam perspektif, kita biasanya menyebut gambar itu sebagai "tekstur." Nama itu telah terbawa ke penggunaan lain dari data gambar untuk memodulasi rendering sesuatu yang lain, bahkan jika mereka tidak lagi tentang tekstur dalam arti yang dapat Anda rasakan dengan ujung jari Anda - hal-hal seperti refleksi, peta distorsi, overlay, masker, atau penggunaan umum untuk tujuan gambar yang tidak kami rasa penamaannya lebih khusus cenderung disamakan dengan "tekstur" dalam nomenklatur longgar kami.
Itu membuat batas antara keduanya kabur dan tidak terlalu ketat. Jika saya memiliki gambar yang mengandung urutan api dan asap untuk digunakan dalam menggambar partikel papan reklame untuk efek ledakan, saya bisa menyebutnya "spritesheet" atau "tekstur flipbook" secara bergantian. Atau jika saya memiliki gambar tileset yang terdiri dari semua ubin latar belakang untuk game 2D, saya dapat menyebutnya "tekstur atlas" hari ini, dengan analogi dengan tekstur atlas yang dikembangkan untuk game 3D, meskipun data dan penggunaannya dalam game 2D saya tidak bisa dibedakan. dari apa yang orang lain sebut sebagai spritesheet. Jika saya memiliki persegi panjang geometri yang tujuannya adalah untuk menyajikan satu gambar ke layar, saya dapat menyebutnya "quad bertekstur" atau "sprite" tergantung pada apa yang ingin saya tekankan tentang penggunaannya.
(Catat di sini dalam contoh terakhir ini bahwa "sprite" adalah singkatan dari kedua segmen gambar sumber dalam aset game kami, dan contoh entitas permainan yang diberikan yang menggunakan segmen gambar ini - cara lain kami menggunakan terminologi ini sedikit tidak konsisten)
Anda akan menemukan beberapa mesin dan perpustakaan menyandikan perbedaan ini dalam memberikan maksud ke dalam nomenklatur mereka sendiri. Misalnya, di Unity, Anda dapat memilih untuk mengimpor aset gambar sebagai "Sprite" - ini memungkinkan serangkaian opsi tambahan yang umumnya diinginkan untuk gambar UI atau aset game 2D, seperti pengiris & pengepakan spritesheet, dan kemampuan untuk referensi bagian gambar sebagai entitas diskrit dalam pengaturan adegan dan objek Anda. Dalam kasus ini "Sprite" sering berarti "gambar (tekstur) ditambah metadata " - tetapi itu tetap sama dengan tekstur biasa di bawah tenda. Kemasan tambahan adalah kenyamanan sehingga kita tidak perlu melakukan micromanage UV offset dan sejenisnya di mana-mana kita ingin menggunakan gambar;
sumber
Sprite adalah peninggalan dari sejarah game komputer. Pikirkan 8-bit Ataris sekitar ca. 1980. Gambar kecil, biasanya dengan bitmask cakupan (atau warna "transparan" khusus) yang memiliki posisi di layar dan digabungkan ke layar dengan cara tertentu. Dengan lubang di mana ada "lubang" di sprite, sesuai peta cakupan. Biasanya dengan cara "hanya berfungsi", dan dengan cara yang memungkinkan ilusi hal-hal bergerak, biasanya dengan menyimpan dan mengembalikan piksel layar asli yang ditimpa.
Dulu sprite adalah fitur perangkat keras pada komputer, dulu Anda bisa menggambar / undraw dengan konten layar yang disimpan secara otomatis, dulu Anda hanya bisa memiliki jumlah yang sangat terbatas (dan tidak tumpang tindih, ya!) , dan dulunya mereka sangat kecil (seperti 16x16) dan terbatas.
Kursor mouse adalah yang paling dekat dengan sprite saat ini (dan dulunya adalah sprite aktual pada beberapa sistem sampai beberapa ~ 10-15 tahun yang lalu).
Saat ini, tidak ada hal yang benar-benar ada, tetapi kata itu tetap ada. Sprite pada dasarnya adalah gambar 2D kecil yang Anda gambar (komposit) di suatu tempat. Biasanya dengan menggambar quad bertekstur kecil.
Tekstur, di sisi lain, adalah konsep gambar yang dapat dibaca yang digunakan dalam API grafik yang agak lebih modern. Atau, lebih tepatnya, wilayah memori ("buffer" dalam hal API modern) dengan beberapa data tambahan terkait seperti ukuran, yang dapat diambil sampelnya dari beberapa cara. Biasanya, tetapi tidak harus dengan shader yang berjalan pada unit pemrosesan grafis. Biasanya, tetapi tidak harus, dengan koordinat dinormalisasi, dan biasanya tetapi tidak harus dengan penyaringan (dan pemetaan, dan beberapa mode perbatasan tertentu, dan, dan, dan ...).
Dengan demikian, tekstur dapat menjadi sumber data yang Anda gunakan untuk menggambar sprite.
sumber
A00D
/AOOC
opcode pastinya merupakan jenis pengubah framebuffer draw / undraw. BOB, ya, itu ada juga, hal Amiga yang khas. Itu adalah hal yang paling dekat dengan tekstur masa kini, saya kira (ukuran apa pun, unggah ke prosesor grafis satu kali, gambar berkali-kali).Ini semacam perbandingan apel dan jeruk. Tekstur hanyalah gambar, sedangkan sprite adalah gambar dan cara penggunaannya.
Kami masih menggunakan sprite untuk game 2d, dan mereka muncul di game 3d dalam efek partikel. Saat ini, sprite umumnya merujuk pada jenis quad bertekstur tertentu, atau (jarang, saya pikir) sebuah segitiga tunggal. Bahkan elemen UI sering masih quads bertekstur - yang saya sebut sprite.
Dulu kasus sprite dimuat ke dalam memori dan dibulatkan (byte-untuk-byte mem-disalin) ke titik-titik di layar (secara harfiah, memori layar), seperti perangko. Di satu sisi, kami masih melakukan itu. Untuk animasi sprite, kami sering mengubah koordinat sampel tekstur sumber untuk menyalin segmen dari tekstur yang akan dirender ke paha depan. Efek shader, seperti pemetaan benjolan, sampel dari tekstur dengan cara yang sama dan dengan demikian masih dapat digunakan untuk, katakanlah, efek cahaya pada sprite.
Lebih khusus untuk game 2d, ini adalah pilihan gaya. Misalnya, seseorang dapat membuat karakter yang digambar tangan atau dicat dalam permainan menggunakan sprite. Game South Park akan menjadi contohnya, secara teknis.
Jadi, Anda tidak dapat benar-benar menggunakan hanya tekstur sebagai pengganti sprite.
sumber
Ini jawaban singkat dan sederhana. Saya biasanya menganggap sprite sebagai keseluruhan objek itu sendiri di samping fungsi dan tekstur apa pun yang telah diterapkan padanya. Sedangkan untuk tekstur, saya cukup menganggapnya hanya gambar yang bisa diterapkan pada sesuatu.
sumber