Ich möchte wissen, welche Optionen (oder Shader) eingestellt werden müssen, damit mein OpenGL-Spiel wie Playstation 1-Spiel aussieht. Ich weiß, dass es wahrscheinlich nicht zu 100% erreicht werden kann, weil PSX Fernsehen verwendet und Fernsehen anders rendert als der Monitor. Vielen Dank. :)
13
Antworten:
Meiner Meinung nach besteht das Wichtigste, um eine OpenGL-Szene wie eine PSX-Szene aussehen zu lassen, darin, sicherzustellen, dass die Filterung deaktiviert ist (PS1 hatte nur den nächsten Nachbarn) und die Z-Pufferung zu deaktivieren (es gab keine) und zu rendern Ihre Szene mit Maleralgorithmus.
Die Beleuchtung erfolgte nur per Scheitelpunkt, tatsächlich gab es keine Beleuchtungshardware, sondern nur gouraud-schattierte Scheitelfarben. Die Beleuchtung war softwaregesteuert, so dass Sie alles innerhalb der Grenzen der CPU-Zeit tun konnten, von denen es nicht viel Ersatz für clevere fortgeschrittene Dinge wie "Beleuchtung" gab. :) Wir haben es geschafft, an einem Punkt spiegelnd zu werden, aber da es sich um einen Scheitelpunkt handelte, sah die Szene so funkelnd aus, dass wir sie fallen ließen. Wir haben es nie geschafft, mit skinned meshes als Mischnormalen zu arbeiten, und dann dauerte es zu lange, sie zu verwenden.
Die PS1 hatte auch ein bisschen Texturschwimmen, ich bin nicht sicher, wie Sie das mit OpenGL implementieren würden, aber wenn Sie nach einer authentischen Erfahrung suchen, versuchen Sie vielleicht nur, die UV-Strahlen aufzubrechen, wenn sie sich dem Bildschirmrand nähern würde eine vernünftige Annäherung geben.
Ich würde auch empfehlen, dass Sie sich die Vertex-Transformationen ansehen: Die PS1 hatte keine Floats, daher fand das Rendern mit Festkomma-Pipelines statt. Dies ist die Ursache für die unruhige Bewegung beim Abspielen von Animationen. Es gab nur so viele Positionen, an denen sich ein Scheitelpunkt befinden konnte, und bei einem 16-Bit-Fixpunkt waren das noch nicht einmal so viele Positionen. Schauen Sie sich ein paar PS1-YouTube-Videos an, um eine Vorstellung davon zu erhalten, wie sich dies auf das Spiel ausgewirkt hat: http://www.youtube.com/watch?v=RSV4IBa1pMISie können hier sehen, dass es bedeutet, dass gerade Linien herum jittern, wenn sich die Kamera in der Nähe der Horizontalen befindet. Ich denke, ein guter Weg, dies zu emulieren, wäre, Ihre Welt in Software umzuwandeln (genau wie die PS1) und immer ganzzahlige Bildschirmkoordinaten auf die emulierte Bildschirmgröße auszugeben (was einer der Hauptgründe war, warum die Polys herumzitterten) konnte nicht auf Subpixel gerendert werden).
BEARBEITEN
Das Texturschwimmen war darauf zurückzuführen, dass die PS1 überhaupt keine 3D-Interpolation aufwies. Wie von user712092 erwähnt, konnte der affine Renderer nur im Bildschirmbereich interpolieren, sodass wir alle falschen Diagonalen erhalten haben. Dies kann implementiert werden, indem Sie
noperspective
Ihre Interpolationsqualifizierer einschalten oder indem Sie die Szene von Hand transformieren und den endgültigen Z-Wert in Ihrem Scheitelpunkt verwerfen, nachdem Sie die x- und y-Bildschirmkoordinaten durch diesen z-Wert geteilt habenquelle