Plazma sayı 4, sayfa 26

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 26

Skate: ( Ben o dönemde Turbo Assembler bile kullanmıyordum henüz. :) ) Bu efektlerin ardından, bir diğer oldukça büyük ve hızlı bir vektör görüyoruz, bir uzay gemisi.. Filled vektörlerle ilgili sırrın nedir? Poligonları nasıl çiziyordun ve ekranı nasıl temizliyordun? Eğer senin için problem değilse 10 yıldan fazla bir sürenin ardından bunları bizimle paylaşır mısın? :) Elbette ki geçen yıllar içerisinde daha hızlı vektörler elit programcılar tarafından yapıldı. Ama senin vektörlerin hala ilk 10'a girer, orası kesin.

Ouiss: Filled vektör'de kullandığım yöntemler şunlardı:

Tüm köşe koordinatları PC üzerinde önceden hesaplanmış ve olabildiğince çok sıkıştırılmış bir veri yapısının içinde saklanıyordu.

Tüm fill işlemleri için XOR-Filler kullanıyordum ("konkav" (içbükey) objeler için bile XOR-Filler kullanıyordum ki normalde bu yalnızca "konveks" (dışbükey) objeler için mümkündür). Köşe koordinatlarının ön hesaplanması oldukça masraflıydı. Aslında, aynı şey C64 assembler kullanarak BSP tree implementasyonuyla realtime olarak da mümkün olabilir (tercihen, Floppy içinde çalışarak |Skate: burada kastettiği şey 1541 ve benzeri modellerde yer alan 2 KB'lık hafıza ve drive'ın işlemcisinin asenkron bir şekilde kullanılması|). Ancak o yıllarda BSP tree'ler hakkında bilgi sahibi değildim.

Ah, ve her şey için XOR-fill kullanılıyordu. Ekranı temizlemek zorunda değildin. Yalnızca çizgilerin yer aldığı tampon belleği silmek yeterli oluyordu.

PC'im üzerinde 3D efektlerin birçok farklı implementasyonu yer almaktaydı. Birçoğu hiçbir zaman su yüzüne çıkmadı çünkü yeterince "sıkı" gözükmüyorlardı (gölgesi düşen bir obje, Z ekseninde clip edilen bir obje vs. de bunlara dahil olmak üzere). Demolarda kullandıklarım hesaplamaları en masraflı olanlar değil, en güzel görünenlerdi (Radio Napalm'daki uzay gemisi ya da shaded küp gibi)

Şekil 17.

Ah, implementasyonla ilgili son bir nokta: Köşe koordinatlarının hesaplanması için poligonlar PC'de bir painter algoritması kullanılarak bitmap dosyalarına yazılıyorlardı. Daha sonra "ters" XOR kullanılarak çizgiler elde ediliyordu ve köşe koordinatlarını elde etmek için bütün önceden çizilmiş poligon dış hatları geriye doğru takip ediliyordu. Dediğim gibi, o zamanlar henüz BSP treeleri bilmiyordum... ;)

Skate: 1995 yılı için bir diğer çılgın efekt, Gouraud shaded küp. C64 üzerindeki ilk Gouraud shaded vektör bu muydu? O dönemde başka Gouraud shaded vektörler de yapıldığını hatırlıyorum ancak hangisi ilkti emin değilim.

Ouiss: Ben de emin değilim. Sanırım Oxyron'dan TTS de bir tane yapmıştı ama hangimizinki önceydi bilemiyorum (Ed: Evet TTS ilkti). Ancak bildiğim bir şey varsa O ilk "komplex" (konkav) objeyi bir demoda kullanan adamdır.

Hafızamda kalmış olan bir diğer mevzu ise Gouraud shaded küpün gerçek zamanlı, konkav poligonlar çizebilen, daha üstün bir versiyonunu önceden yapmış olduğumdur. Ancak gerçekten de sıkıcı bir görüntüsü vardı (yalnızca 128x128 boyutundaydı ve biraz yavaştı), dolayısıyla da hiçbir zaman yayınlanmadı. Hem teknik olarak ilginç, hem de iyi görünen bir demo bölümü yazmak her zaman zor olmuştur (Özellikle de demo yarışmalarında oy veren ve çoğunluğu oluşturanların PC'ciler olduğunu göz önünde bulundurursak). Küpün amacına ulaşması beni mutlu etmişti. :) Bir de özellikle Oxyron'dan Graham (zamanının çok sağlam bir programcısıydı (Skate: hala öyle)) beni arayıp, efekti kendisinin de çok beğendiğini söyleyip, tebrik ettiği zaman inanılmaz derecede gurur duymuştum.

Skate: Ve senin bir diğer buluşun. Sonsuz chessboard zoomer. Bu benim favorilerimden biriydi. Efekti bitirdikten hemen sonra sonucu izlemek tahmin ediyorum çok keyifli olmuştur, haksız mıyım?

Şekil 18.

Ouiss: Ben o efekti gece çok geç bir saatte bitirmiştim, dolayısıyla daha fazla izleyemedim çünkü gözlerim yeterince açılamayacak durumdaydı. :) Fikir bir PC 4k introsundan alınmaydı. Ancak PC'dekinden biraz daha gelişmiş bir versiyondu benimki, çünkü izleyicinin PC versiyonunda olduğu gibi çirkin bir clipping oluşturarak içi dolu parçalardan değil de yalnızca boşluklardan ilerleyerek uçmasını sağlamaya ekstra efor sarf edilmişti. (Bu tür bir uçuş bölümü hazırlamak (gerekli veriler C64 üzerinde "siyah ekran" bölümü boyunca hesaplanıyordu) yine sabaha kadar ayakta kalmama neden olmuştu, çünkü uçuşu hazırlamak chessboard'un kendisini çizmekten çok daha karmaşıktı ki chessboard'u çizmek yalnızca her raster satırında VIC registerlarını değiştirmekten ibaretti)

Klavyeyle gezinmek için ← ve → tuşları.