Secondo me, i bit più importanti per far sembrare una scena OpenGL simile a una scena PSX sarebbero assicurarsi che il filtro fosse disattivato (PS1 avesse solo il vicino più vicino) e disattivare il buffering Z (non ce n'era) e renderizzare la tua scena con l'algoritmo dei pittori.
L'illuminazione era solo per vertice, in realtà in realtà non c'era nessun hardware di illuminazione solo una colorazione del vertice sfumata di gouraud. L'illuminazione era guidata da un software in modo da poter fare qualsiasi cosa entro i limiti del tempo della CPU, di cui non c'era molto di più per cose avanzate intelligenti come "l'illuminazione". :) Siamo riusciti a diventare speculari a un certo punto, ma dato che era per vertice ha reso la scena scintillante, quindi l'abbiamo lasciata cadere. Non siamo mai riusciti a diventare speculari per lavorare con mesh skined come normali di fusione e poi il loro utilizzo ha richiesto troppo tempo.
La PS1 ha anche avuto un po 'di nuotata nella trama, non sono sicuro di come lo implementeresti con OpenGL, ma se stai cercando un'esperienza autentica, forse stai solo cercando di abbattere i raggi UV quando sono vicino al bordo dello schermo darebbe una ragionevole approssimazione.
Ti consiglio anche di guardare le trasformazioni dei vertici: la PS1 non aveva float, quindi il rendering ha avuto luogo con pipeline a punto fisso, questa è la causa del movimento nervoso durante la riproduzione di animazioni. C'erano solo così tante posizioni in cui un vertice poteva trovarsi, e a un punto fisso a 16 bit, non c'erano nemmeno così tante posizioni. Guarda alcuni video di YouTube per PS1 per avere un'idea di come ha influenzato il gioco, http://www.youtube.com/watch?v=RSV4IBa1pMIpuoi vedere qui che significa che le linee rette oscillano quando la fotocamera è vicina all'orizzontale. Penso che un buon modo per emulare questo sarebbe trasformare il tuo mondo in software (proprio come ha fatto la PS1) e trasmettere sempre coordinate dello schermo di numero intero alla dimensione dello schermo emulato (che è stata una delle ragioni principali per cui i polizi si sono mossi, non è stato possibile renderizzare in pixel secondari).
MODIFICARE
La nuotata delle texture era dovuta al fatto che PS1 non aveva alcuna interpolazione 3D. Come menzionato dall'utente712092, il renderer affine poteva solo interpolare nello spazio dello schermo, quindi abbiamo finito con le nostre diagonali sbagliate. Questo può essere implementato noperspective
attivando i qualificatori di interpolazione o emulando trasformando la scena a mano e scartando il valore Z finale nel vertice dopo aver diviso le coordinate dello schermo xey per quel valore z