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ı.
Sayfa 27
Şekil 19.
Skate: Evet, sıra geldi benim favori Reflex demom olan Mathematica'dan bahsetmeye. Öncelikle auto disk accessing, SID chip autodetection başlangıç olarak teknik açıdan bir harikaydı. Bunun ardından, ilk efekt olarak 5 adet hareket eden çember karşımıza çıkıyor. Daha sonra da bunlar dairelere dönüşüyorlar. Özellikle içi dolu olanları büyük boblardan ibaret de olsalar bu kadar hızlı yapmak oldukça güç. Sanırım zeki bir VIC hilesi kullandınız, öyle değil mi?
Şekil 20.
Ouiss: O bölüm Zorc tarafından programlanmıştı. Kendisi o bölüm için dehşet efor harcadı. Eğer doğru hatırlıyorsam, o bölümü bitirmesi aylarını almıştı. Bu arada giriş bölümü de onun tarafından hazırlanmıştı. Bu demoda O'nunla aynı ekipte yer almak gerçekten çok iyi bir şeydi, çünkü her zaman efektlerine maksimum derecede ayar çekerdi.
Skate: Gerçek zamanlı hesaplanan bir Julia Fraktal. Mathematica'dan önce ben yalnızca render edilen fraktallar görmüştüm. Bu gerçekten büyük bir yenilikti.
Şekil 21.
Ouiss: Şey, efekt alanı yalnızca 20x12 çözünürlüğündeydi (geri kalan pixeller interpole ediliyordu) ama kodlaması zevkli olmuştu. Fraktallar çok büyük bir buluş. Yakın bir zaman önce fraktal sıkıştırmasıyla (fractal compression) ilgili araştırmalar yapmıştım. Buradakiyle aynı şey, yalnızca olayın tersi. Bölüme geri dönecek olursak: Aynı zamanda bu bölüm oluşturduğum hızlı koduma JSR koyduğum ilk bölüm olma özelliğini taşıyor. Bu gerçekten kafamı kurcalamıştı. :)
Skate: Ve gelelim birbirinden hızlı iki ray casting engine'e. Yalnızca engine'lerin kendisi değil, aynı zamanda sunum biçimleri ve duvarlardaki, 2D sprite'lardaki efektler de muhteşemdi.
Şekil 22.
O engine'ler Rainer ve benim aramdaki bir yarışmanın ürünüdür. En iyi ray casting engine'i yapmak için kapışmıştık. Bu yüzden Rainer sprite'ı ekledi (ve de greeting yazılarını), ben de duvarlardaki efektleri. Efektin ilk "iterasyonlarında" duvarlardan başka bir şey yoktu. Bazen yarışmak sağlıklı sonuçlar verir. :)