Multitexturing gerçekten sadece “birden fazla doku kullanmak” mıdır?


10

Bu aptalca görünebilir, ama beni rahatsız ediyor. Anladığım kadarıyla, çoklu enjeksiyon sadece gölgelendirici başına 1'den fazla doku kullanıyor (genellikle bir şekilde karıştırmak için). Yani 1 doku oluşturmak yerine, 2 veya daha fazlasını yaratırım ki bu oldukça açıktır!

Bunun için neden özel bir terim var? Sadece "1'den fazla doku kullanmak" dan daha fazlası var mı? Bir şey mi kaçırıyorum?


Bir noktada, özellikle gerçek zamanlı 3d grafiklerde, bir doku (dağınık harita) kullanmak çok yaygındı. Bu nedenle ad, birden fazla doku kullandığınızı göstermek için kullanıldı. Sorunu görmüyorum. Çok dişli gibi
AturSams

Ancak çoklu kullanım özel API, tamamen farklı program tasarımı vb. Gerektirir. Birçok yönden farklıdır. Sorum, çoklu-görüntülemenin doku sayısından farklı bir şeye sahip olmadığı gerçeğinden kaynaklanıyor. Ve bu bir sorun değil, sadece bir soru.
NPS

Özel bir API gerektirmez. Bu uygulamaya bağlı olacaktır. Ben multitexture "unitexture" gibi davranır gibi bazı araçlar kullanın;)
AturSams

@concept Hangi bölüm? Başlık?
Anko

Yanıtlar:


16

Özel terim, çok özel olmaktan ziyade grafik kartlarının ve gerçek zamanlı grafik API'lerinin evrimi ile ilgilidir. Örneğin, görüntü işleme ve çevrimdışı grafik oluşturma, gerçek zamanlı grafik API'lerinde ve tüketici düzeyinde donanımda bulunmadan çok önce bu özelliğe sahiptir.

OpenGL 1.1 (sabit işlevsellik) beri çoklu içerik API'sine yeni bir durum olarak tanıtıldı. Sadece bir dokuyu bağlamak yerine, size birden fazla dokuyu bağlama yeteneği verdi; Her doku birimi için bir tane ve daha sonra doku ortamı parametrelerinden birini kullanarak aralarında karıştırın, karıştırın, modüle edin ... vb. 1

Daha sonra doku birleştiriciler tanıtıldı, sabit bir işlem kümesine parametreler geçirmeniz için bir yol vererek daha esnek işlemler kullanarak bir dizi doku birleştirebilme yeteneği verdi (gölgelendiriciler olarak düşünün, ancak sabit parametrelerle), orijinal "birleştiricilerden" daha esnek.

Gölgelendiricilerin tanıtılmasıyla, önceki birleştiriciler resmi olarak kullanımdan kaldırılana kadar gereksiz hale geldi. Sonunda gölgelendiriciye bir doku örnekleyici geçirmek ve GPU'nun dokularınız üzerinde daha önce olduğu gibi daha esnek bir şekilde (shader'ınız) keyfi işlemler yapmasına izin vermek (donanım ve buna göre API'ler geliştikçe) önemsiz hale geldi .

Buradaki nokta; önemsiz hale gelse bile, bu terim, çoklu dokuların örneklenmesini ve evrişimini tanımlayan herhangi bir işlem için genel bir terim olarak kaldı.

1 Hafızamı OpenGL sabit fonksiyonelliğini hatırlamak için kullanıyorum, eğer sth'i kaçırırsam beni düzeltin.


5

Tarihsel neden, "çoklu-görüntülemenin" bir zamanlar "donanım TnL" gibi bir pazarlama kelimesi olmasıdır. Yeni kartların ayırt edici bir özelliği olduğundan, satması için bir kelime olması gerekiyordu.

Teknik neden, çoklu-görüntülemenin sadece bir yerine iki doku oluşturmak ve kullanmak değil . Yalnızca iki doku (veya üç veya herhangi bir sayı) kullandıysanız, yalnızca bir doku kullanabilirsiniz, çünkü yalnızca bir çıktı parçası vardır. Bu hiçbir fark yaratmaz (giriş ne olursa olsun, çıktı sadece biri veya diğeri olabilir), bu yüzden özel bir şey olmazdı.

Fark, birkaç doku oluşturabilmeniz değil, iki veya daha fazla dokuyu birleştirmenizdir . Örneğin, bunları alfaya veya köşe başına enterpolasyonlu bazı karışım faktörlerine göre karıştırabilir veya bunları veya farklı bir şeyi ekleyebilirsiniz.
Yapılandırılabilirlik / programlanabilirlik miktarı son on yılda büyük ölçüde gelişmiştir, ancak büyük fark, bir şekilde iki veya daha fazla girişi bir çıkışta birleştirebilmenizdir.


2

Başlangıçta ışık vardı

Bir fragmana uygulanacak belirli matematiksel işlemleri belirten OpenGL aydınlatması, daha sonra nihai bir renk elde etmek için dokularla birleştirildi.

Ve sonra Quake vardı

Deprem olmadı bu tür bir aydınlatmayı birçok nesnesi için kullanmadı. Bunun yerine, nihai bir renk elde etmek için nesne dokusuyla çarpılan (veya "modüle edilen) aydınlatmayı temsil etmek için ikinci bir doku kullandı.

Ancak, zamanın donanımı tek bir işlemde bunu desteklemedi. Bu yüzden Quake'in sahne nesnelerini iki kez çizmesi gerekiyordu:

  • Temel dokuları döşemek için her şeyi bir kez çizin.
  • Modülasyonlu bir karışım modu ayarlayın.
  • Aydınlatma dokularını uygulamak için her şeyi ikinci kez çizin.

Bu elbette yavaştı; tüm geometrilerin sadece iki kez dönüştürülmesi ve kırpılması gerekmiyordu (bu günlerde bir CPU işlemi idi), ancak ekrandaki her piksele oluşturma sırasında iki kez dokunuldu.

Çok katlı girin

Multitexture bunun çözümüydü ve başlangıçta sadece belirli tüketici 3DFX kartlarında bulunan GL_SGIS_multitexture uzantısıyla ortaya çıktı. Başlangıçta sadece iki dokuyu karıştırmaya izin verdi (ve sınırlı sayıda karışım modu ile).

Orijinal GLQuake benioku dosyasından alıntı yapmak için :

GL_SGIS_multitexture
Multitextures desteği, bazı donanımların dünyayı iki yerine bir geçişte oluşturmasına olanak tanır. GLQuake biri dünya dokuları, diğeri dokularla harmanlanmış ışık haritaları için iki geçiş kullanır. Bazı donanımlarda, GL_SIGS_multitexture destekli OpenGL uygulamasıyla, bu tek geçişte yapılabilir. Bunu destekleyen donanımda, kare hızında% 60 ila% 100 artış elde edersiniz. Şu anda, yalnızca 3DFX çift TMU kartları (Obsidian 2220 gibi) bu uzantıyı desteklemektedir, ancak yakında diğer donanımlar da gelecektir.

Şu anda normal haritalama, piksel başına herhangi bir diğer aydınlatma, hatta gölgelendirici ve benzeri gibi etkilerin sadece mevcut olmadığını (iyi yaptıklarını, ancak esas olarak sadece akademik makalelerde ve araştırma projelerinde) ve gerçek zamanlı oluşturmada kullanım için uygun görülmedi).

Ve bugüne kadar

Buradan hemen hemen diğer cevaplarda anlatıldığı gibi. Çoklu kurgu zaman içinde standart bir özellik haline geldi, daha fazla karışım modu mevcut hale geldi ve sonunda rasgele gölgelendirici koduna yol açtı.

Ancak sorunuzun amaçları için önemli olan şudur: başlangıçta standart işlevsellik, renderleme sırasında her seferinde tek bir doku kullanabiliyordu . Birden fazla kullanabilmek, yalnızca ileri teknoloji donanımların desteklediği ek işlevlerdi ve bu nedenle bir ad gerektiriyordu. Bu isim "çift doku" olabilirdi (ilk uygulamalar iki dokuyu desteklediğinden), ancak bir gözü gelecekte "çok doku" adı seçildi.

Tüm bunların tarihi hakkında daha fazla okuma burada ve bu Programcılar'da iyi bir tarihsel yazı (daha geniş bağlam ve çok bölümlü oynatma kısmı) mevcuttur .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.