Ini mungkin tampak bodoh, tapi itu menggangguku. Dari apa yang saya mengerti, multitexturing hanya menggunakan lebih dari 1 tekstur per shader (biasanya untuk membaurkannya entah bagaimana). Jadi alih-alih membuat 1 tekstur, saya membuat 2 atau lebih yang ... cukup jelas!
Kenapa ada istilah khusus untuk itu? Apakah ada yang lebih dari sekadar "menggunakan lebih dari 1 tekstur"? Apakah saya melewatkan sesuatu?
Jawaban:
Istilah khusus ini berkaitan dengan evolusi kartu grafis dan API grafik waktu nyata daripada menjadi istimewa. Misalnya pemrosesan gambar dan rendering grafik offline memiliki fitur ini jauh sebelum tersedia dalam API grafik waktu nyata dan perangkat keras tingkat konsumen.
Sejak OpenGL 1.1 (fungsi tetap) multitexturing diperkenalkan sebagai status baru ke API. Alih-alih hanya mengikat satu tekstur, itu memberi Anda kemampuan untuk mengikat banyak tekstur; satu untuk setiap unit tekstur dan kemudian menyatu di antara mereka menggunakan salah satu parameter lingkungan tekstur, campuran, memodulasi..etc 1
Kemudian combiners tekstur diperkenalkan, itu memberi kemampuan menggabungkan satu set tekstur menggunakan operasi yang lebih fleksibel, dengan memberi Anda cara untuk melewati parameter ke set operasi tetap (anggap itu sebagai shader tetapi dengan set params tetap), ini adalah lebih fleksibel daripada "combiners" asli.
Dengan diperkenalkannya shader, penggabung sebelumnya menjadi mubazir sampai secara resmi tidak digunakan lagi. Akhirnya menjadi sepele (karena perangkat keras dan API yang sesuai berevolusi) untuk memberikan sampler tekstur ke shader dan membiarkan GPU melakukan operasi sewenang - wenang (shader Anda) pada tekstur Anda, lebih fleksibel terhadap apa yang sebelumnya.
Intinya di sini; bahkan jika itu menjadi sepele, istilah tersebut bertahan sebagai istilah umum untuk setiap operasi yang menggambarkan pengambilan sampel dan konvolusi beberapa tekstur.
1 Saya menggunakan memori saya untuk mengingat fungsi tetap OpenGL memperbaiki saya jika saya melewatkan sth.
sumber
Alasan historisnya adalah "multitekstur" adalah kata kunci pemasaran seperti "perangkat keras TnL" pada suatu waktu. Karena itu adalah fitur yang membedakan kartu baru, perlu ada kata untuk menjualnya.
Alasan teknisnya adalah multitekstur tidak hanya membuat dan menggunakan dua tekstur, bukan satu. Jika Anda hanya menggunakan dua tekstur (atau tiga, atau nomor apa saja), Anda bisa juga hanya menggunakan satu tekstur, karena hanya ada satu fragmen output. Itu tidak ada bedanya (apa pun inputnya, outputnya hanya bisa satu atau yang lain), jadi tidak akan ada yang istimewa.
Perbedaannya bukan bahwa Anda dapat membuat beberapa tekstur, tetapi Anda menggabungkan dua atau lebih tekstur. Misalnya, Anda dapat mencampurnya berdasarkan alpha atau pada beberapa faktor campuran interpolasi per-verteks, atau Anda dapat menambahkannya, atau sesuatu yang berbeda.
Jumlah konfigurabilitas / programabilitas telah sangat berkembang selama dekade terakhir, tetapi satu perbedaan besar tetap bahwa Anda entah bagaimana dapat menggabungkan dua atau lebih input menjadi satu output.
sumber
Pada awalnya ada cahaya
Pencahayaan OpenGL, untuk lebih spesifik, yang menentukan operasi matematika tertentu untuk diterapkan pada sebuah fragmen, yang kemudian dikombinasikan dengan tekstur untuk memperoleh warna akhir.
Dan kemudian ada Gempa
Gempa tidak menggunakan pencahayaan semacam ini untuk banyak objek itu. Alih-alih itu menggunakan tekstur kedua untuk mewakili pencahayaan, yang dikalikan dengan (atau "dimodulasi dengan) tekstur objek untuk memperoleh warna akhir.
Namun, perangkat keras saat itu tidak mendukung ini dalam satu operasi. Jadi Quake perlu menggambar objek pemandangan itu dua kali:
Ini tentu saja lambat; tidak hanya semua geometri perlu diubah dan dipotong dua kali (yang pada waktu itu adalah operasi CPU), tetapi setiap piksel di layar akhirnya disentuh dua kali selama rendering.
Masukkan multitexture
Multitexture adalah solusi untuk ini, dan awalnya diekspos melalui ekstensi GL_SGIS_multitexture, yang hanya ada pada kartu 3DFX konsumen tertentu. Awalnya itu hanya memungkinkan pencampuran dua tekstur (dan dengan serangkaian mode campuran yang terbatas).
Mengutip dari readme GLQuake asli :
Penting untuk diingat bahwa pada saat ini efek seperti pemetaan normal, jenis pencahayaan per-pixel lainnya, bahkan shader, dan sebagainya tidak ada (baik memang ada, tetapi terutama hanya dalam makalah akademik dan proyek penelitian, dan tidak dianggap layak untuk digunakan dalam rendering waktu-nyata).
Dan sampai sekarang
Dari sini cukup banyak seperti yang dijelaskan dalam jawaban lain. Multitexturing menjadi fitur standar dari waktu ke waktu, dengan lebih banyak mode campuran tersedia, akhirnya memberi jalan pada kode shader sewenang-wenang.
Tetapi yang penting untuk keperluan pertanyaan Anda adalah ini: pada awalnya fungsi standar hanya bisa menggunakan satu tekstur pada saat rendering. Mampu menggunakan lebih dari satu adalah fungsionalitas tambahan yang hanya didukung oleh perangkat keras kelas atas, dan karenanya diperlukan sebuah nama. Nama itu bisa saja "dual-texturing" (karena implementasi pertama hanya mendukung dua tekstur) tetapi dengan satu mata di masa depan nama "multitexture" dipilih.
Bacaan lebih lanjut tentang sejarah semua ini tersedia di sini , dan penulisan sejarah yang baik (dari konteks yang lebih luas, dan bagian multitekstur yang dimainkan di dalamnya) pada jawaban Programmers.SE ini .
sumber