Voxel Space
Voxel Space için web demosu
Tarihçe
- 1992 yılında CPU'lar günümüzdekinden 1000 kat daha yavaştı ve GPU hızlandırması ya yaygın değildi ya da çok pahalıydı.
- 3D oyunlar yalnızca CPU'da hesaplanıyordu ve render motorları tek renkli poligonları işliyordu.
- 1991'de MicroProse'in Gunship 2000 oyunuyla, 1992'de NovaLogic'in Comanche oyunu piyasaya çıktı.
- Comanche, dönemine göre çok iyi grafikler sunuyor, doku, gölgeleme ve gölgeleri gösteriyordu.
Render algoritması
- Comanche, Voxel Space adlı bir teknoloji kullandı; bu teknoloji, ray casting ile benzer bir fikre dayanır.
- Voxel Space motoru 2.5D bir motordur ve tipik bir 3D motorunun sunduğu tüm serbestliği sunmaz.
Yükseklik haritası ve renk haritası
- En basit şekilde araziyi temsil etmenin yolu yükseklik haritası ve renk haritası kullanmaktır.
- Comanche oyununda 1024 x 1024 boyutunda, 1 baytlık yükseklik haritası ve renk haritası kullanılmıştır.
- Bu haritalar periyodik olmakla birlikte, karmaşık yapıları temsil edemez; ancak renk haritası zaten gölgeleme ve gölgeleri içerdiğinden render sürecinde aydınlatma hesaplamaya gerek kalmaz.
Temel algoritma
- 3D motorun render algoritması oldukça basittir.
- Voxel Space motoru, yükseklik ve renk haritalarını rasterleştirerek dikey çizgiler çizer.
- Ekranı temizler ve arka plandan öne render ederek örtüşmeyi (gizlemeyi) garanti eder.
- Gözlemciden olan optik uzaklığa karşılık gelen harita çizgilerini belirler.
- Çizgiyi rasterleştirip ekranın kolon sayısına uydurur.
- 2D haritadaki çizgi segmentlerine karşılık gelen yüksekliği ve rengi alır.
- Yükseklik koordinatına perspektif projeksiyonu uygular.
- Perspektif projeksiyonundan alınan yüksekliği ve ilgili rengi kullanarak dikey çizgileri çizer.
Rotasyon ekleme
- Yukarıdaki algoritmayla yalnızca kuzeye bakılabilir.
- Farklı açılarda bakmak için koordinatları döndüren birkaç satır koda ihtiyaç vardır.
Performans iyileştirme
- Performansı artırmak için çeşitli hileler vardır.
- Arka plandan öne doğru çizmek yerine, önden arkaya doğru çizim yapılabilir.
- Gizlemeyi garanti etmek için ek bir y-buffer gerekir.
- Ayrıntı düzeyini ayarlayarak yakın bölgelerde daha fazla, uzak bölgelerde daha az ayrıntı render edilir.
Bağlantılar
- Web proje demo sayfası
- Voxel arazi motoru tanıtımı
- Kişisel web sitesi
Harita
Lisans
- Yazılım kısmı MIT lisansı kapsamındadır.
- Voxel Space teknolojisi bazı ülkelerde hâlâ patentli olabilir.
- Renk ve yükseklik haritaları Comanche oyunundan tersine mühendislikle elde edildiği için lisans kapsamı dışında bırakılmıştır.
1 yorum
Hacker News Yorumları
Geçmişin özgün ve zarif algoritmalarının sihirli bir deneyim sunduğu günleri özlüyorum. Donanım kaynaklarının kısıtlı olduğu dönemde geliştiriciler, oyunları geliştirmek için yeni teknikler ve yaratıcılıklarını ortaya koydu.
mars.com adlı programa ait videolar çok ilginç.
Bu renderleme yöntemi ilgi çekici olsa da, rastgele bir hacmi renderlayamadığı için bunu voxel olarak sınıflandırmak zor. Aslında bu, çok iyi yapılmış bir yükseklik haritası renderlayıcısı.
Başlıkta 2020 veya 2017 tartışmalarına atıf olması mümkün. 2021'de de aynı repoda buna dair bir tartışma vardı.
Programlamayı ilk öğrenmeye başladığımda QBasic ile bir arazi yükseklik haritası üreten ve izometrik bir stilde renderlayan bir program yazmıştım. Bu, programlamaya devam etmemi sağlayan etkenlerden biriydi.
Bu teknikle Adventure Game Studio'da bir oyun geliştirdim. Motorun eski sürümünde optimize edilmemişti ama bir gün güncelleyeceğim.
Çoğu modern oyunda dağlar boşken, bu yöntem onları daha sağlam gösteriyor.
Comanche oyununu ilk oynadığımda hissettiğim heyecanı hatırlıyorum. Gelecekte ya da bir filmden çıkmış gibi bir his veriyordu.
Yazılım renderlayıcısı projeleri eğlenceli ve hafta sonu projeleri için ideal. Benzer bir algoritmayı geçmişte uygulamıştım, ama şu andaki uygulama çok daha güçlü ve daha basit.
GPU'lar voxel tabanlı alternatif bir zaman çizgisinde yaşamak isterim