FCare / Kronos

Kronos is a Sega Saturn emulator.
http://fcare.github.io
232 stars 21 forks source link

[Sega Rally Championship] "trous" sur les bords de route #527

Closed barbudreadmon closed 4 years ago

barbudreadmon commented 5 years ago

Screenshot provenant de la version "Plus Netlink Edition (USA)", mais le problème se produit sur toutes les versions testées. Le bug disparaît et réapparaît au gré des commits : Sega Rally Championship Plus Netlink Edition (USA)-190610-091731 Le bord n'est pas régulier, il y a des sortes de trous, le problème est encore plus visible en augmentant la résolution. Sur ce screenshot il y a également un bug sur les vitres de la voiture, qui semblent être représentés sous forme de lignes horizontales au lieu du "mesh" habituel, ce bug-ci est nouveau.

PS : le bug avait été signalé pour la première fois dans https://github.com/FCare/Kronos/issues/341#issuecomment-437681503 par @Tatsuya79, sa première apparition connue date du commit https://github.com/FCare/Kronos/commit/1c1755b5d9f35c4e205a6cd20a70eb5ffd64db5b

FCare commented 5 years ago

Les bords sont dus al'extension des geometry. Le probleme c'est que le sol est plein de surfaces. Il faudrait reussir a trouver celles sur le bord pour voir ce qui ne va pas.

Pour le mesh, le test de reference, c'est Megaman X4, c'est plus simple a reproduire et a voir. Est ce que MX4 a egalement ce pb de lignes sur les surfaces mesh?

fafling commented 5 years ago

Les "trous" dans le bord de la route existent sur la console et sont dus au chevauchement d'un pixel entre les polygones de la route et ceux des bords. Les polygones sont rendus alternativement route-bord-route-bord en allant du fond vers l'avant. En fonction de l'angle, des pixels des polygones de la routes peuvent écraser ceux des bord déjà dessinés, à leur extrémité (commune à 2 polygones de bord et 2 de route), sans être tous recouverts par le polygone de bord suivant.

Exemple sur console : Capture_sega_rally_vcdecide

Le noyau OpenGL accentue le phénomène avec l'expansion des polygones.

En noyau compute shader (1ère WIP du 03/09), il y a certains problèmes de jointure de polygone (peut-être dépendants du hardware, voir #598 ), mais les trous dans le bord de route sont corrects.

Capture_sega_rally_trous_bord_route_CS_20190903

Sinon, un truc marrant : le jeu utilise les mêmes textures pour la route et les bords verts, avec une palette différente !

fafling commented 5 years ago

La ligne verticale noire visible en travers du phare est probablement un autre exemple du problème #616. Comme dans Tomb raider, la texture est à peu près tournée à 90°.

barbudreadmon commented 4 years ago

Le rendu en noyau CS est ok, idéalement il faudra simplement réaligner l'expand avec yabasanshiro pour le noyau opengl, pas utile de garder cette issue ouverte, donc je ferme.