PSX grafiklerini OpenGL ile nasıl taklit edebilirim?


13

Hangi seçenekleri (veya gölgelendiricileri) ayarlayacağımı bilmek istiyorum, böylece OpenGL oyunum Playstation 1 oyununa benziyor. Muhtemelen% 100 elde edilemeyeceğini biliyorum çünkü PSX televizyon kullandı ve televizyon bu monitörü farklı şekilde oluşturuyor. Teşekkürler. :)


1
Wiki sayfasında bazı yararlı donanım bilgileri bulabilirsiniz.
Jonathan Connell

2
Son zamanlarda LCD monitörlü bir PC'de SNES oyunlarının CRT hissini çoğaltmak için gölgelendiriciler yaratan birine bir bağlantı olduğunu hatırlıyorum. İkna oldum. altdevblogaday.com/2011/07/18/…
dascandy

Yanıtlar:


24

Bence, bir OpenGL sahnesini bir PSX sahnesine benzetmek için en önemli bitler, filtrelemenin kapalı olduğundan emin olmak (PS1'in en yakın komşusu vardı) ve Z arabelleğini (hiç yoktu) kapatmak ve işlemek ressam algoritması ile sahne.

Aydınlatma sadece köşe başınaydı, aslında herhangi bir aydınlatma donanımı sadece guraud gölgeli köşe rengi yoktu. Aydınlatma yazılım odaklıydı, böylece "aydınlatma" gibi akıllı gelişmiş şeylere fazla yedek bulunmayan CPU zamanının sınırlamaları dahilinde herhangi bir şey yapabildiniz. :) Biz bir noktada speküler olsun başardı, ama köşe başına olduğu gibi sahne sparkley görünmesini yaptı, bu yüzden onu düşürdü. Tenli ağlarla harmanlayan normaller olarak çalışmak için hiçbir zaman spekülasyon yapmayı başaramadık ve sonra bunları kullanmak çok fazla zaman aldı.

PS1 ayrıca biraz doku yüzmeye sahipti, bunu OpenGL ile nasıl uygulayacağınızdan emin değilim, ancak otantik bir deneyimin peşindeyseniz, belki de ekran kenarına yakınken UV'lerin bozulmasını sağlamaya çalışıyorsunuz makul bir yaklaşım verecekti.

Ayrıca köşe dönüşümlerine bakmanızı da öneririm: PS1'in yüzmesi yoktu, bu yüzden oluşturma sabit nokta boru hatlarıyla gerçekleşti, bu animasyonları oynatırken jittery hareketinin sebebidir. Bir tepe noktasının olabileceği çok fazla pozisyon vardı ve 16bit sabit noktada, bu kadar çok pozisyon bile değildi. Oyunu nasıl etkilediğine dair bir fikir edinmek için birkaç PS1 youtube videosunu izleyin, http://www.youtube.com/watch?v=RSV4IBa1pMIburada kamera yatay konuma yakın olduğunda düz çizgilerin titrediğini görebilirsiniz. Bunu taklit etmenin iyi bir yolunun, dünyanızı yazılımda dönüştürmek (tıpkı PS1'in yaptığı gibi) ve her zaman tam sayı ekran koordinatlarını taklit ekran boyutuna (polys'in etrafta sarsılmasının başlıca nedenlerinden biri) dönüştürmek olduğunu düşünüyorum. alt piksellere dönüştürülemedi).

DÜZENLE

Doku yüzmesi, PS1'in hiç 3D enterpolasyonu olmaması nedeniyle oldu. User712092 tarafından belirtildiği gibi, yakın çekim oluşturucu yalnızca ekran alanında enterpolasyon yapabilirdi, bu yüzden çaprazlamalarımız yanlış. Bu, noperspectiveenterpolasyon niteleyicilerinizi açarak veya sahneyi elle dönüştürerek ve x ve y ekran koordinatlarını bu z değerine böldükten sonra tepe noktanızdaki son Z değerini atarak uygulanabilir.


Nice insight;)
Jonathan Connell

@Richard Doku yüzmek? Öyle mi perspektif düzeltme kısmen veya tamamen eksikliği ? Örneğin, Quake her N pikseli perspektif düzeltmesi yaptı.
user712092

@Richard Yani a) 16 bit sabit noktayı taklit etmek için köşe gölgelendiricilerine başvurmak zorunda olduğum anlamına gelir b) glVertex3s'ün çözüp çözmediğinden emin değil c) bazı sabit nokta OpenGL kütüphaneleri var.
user712092

3
Vay. Bütün bunları nasıl biliyorsun?
ashes999

@ ashes999 10 yıldan fazla süredir profesyonel bir oyun geliştiricisiyim.
Richard Fabian
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.