Je veux savoir quelles options (ou shaders) définir pour que mon jeu OpenGL ressemble au jeu Playstation 1. Je sais que cela ne peut probablement pas être atteint à 100% parce que la télévision utilisée par PSX et la télévision rendent différemment ce moniteur. Merci. :)
13
Réponses:
À mon avis, les bits les plus importants pour faire ressembler une scène OpenGL à une scène PSX seraient de s'assurer que le filtrage est désactivé (PS1 n'avait qu'un voisin le plus proche), et de désactiver la mise en mémoire tampon Z (il n'y en avait pas) et de rendre votre scène avec l'algorithme des peintres.
L'éclairage était uniquement par sommet, en fait il n'y avait en fait pas de matériel d'éclairage seulement une coloration de vertex ombrée gouraud. L'éclairage était piloté par logiciel afin que vous puissiez faire n'importe quoi dans les limites du temps CPU, dont il n'y avait pas beaucoup de rechange pour des choses avancées intelligentes comme "l'éclairage". :) Nous avons réussi à devenir spéculaire à un moment donné, mais comme c'était par sommet, cela a rendu la scène étincelante, nous l'avons donc abandonnée. Nous n'avons jamais réussi à faire spéculaire pour travailler avec des maillages à peau comme des mélanges de normales, puis les utiliser prenait trop de temps.
La PS1 a également eu un peu de texture, je ne sais pas comment vous implémenteriez cela avec OpenGL, mais si vous recherchez une expérience authentique, essayez peut-être simplement de faire la décomposition des UV lorsqu'ils sont près du bord de l'écran donnerait une approximation raisonnable.
Je vous recommande également de regarder les transformations de vertex: la PS1 n'avait pas de flotteurs, donc le rendu a eu lieu avec des pipelines à point fixe, c'est la cause du mouvement instable lors de la lecture des animations. Il n'y avait que tant de positions qu'un sommet pouvait être, et à un point fixe de 16 bits, ce n'était même pas autant de positions. Regardez quelques vidéos YouTube PS1 pour avoir une idée de la façon dont cela a affecté le jeu, http://www.youtube.com/watch?v=RSV4IBa1pMIvous pouvez voir ici que cela signifie que les lignes droites tremblent lorsque la caméra est proche de l'horizontale. Je pense qu'un bon moyen d'émuler cela serait de transformer votre monde en logiciel (tout comme la PS1) et de toujours afficher les coordonnées de l'écran en nombre entier à la taille de l'écran émulé (ce qui était l'une des principales raisons pour lesquelles les polys tremblaient, ils n'a pas pu être rendu en sous-pixels).
ÉDITER
La nage de la texture était due au fait que la PS1 n'avait AUCUNE interpolation 3D. Comme mentionné par user712092, le rendu affine ne pouvait qu'interpoler dans l'espace d'écran, nous nous sommes donc retrouvés avec nos diagonales tout à fait erronées. Cela peut être implémenté en activant
noperspective
vos qualificatifs d'interpolation, ou émulé à la main en transformant la scène et en supprimant la valeur Z finale dans votre sommet après avoir divisé les coordonnées d'écran x et y par cette valeur zla source