PlayStation 1 byla výjimečná svými limity. Tři z nich definovaly její vzhled víc než cokoliv jiného. V CLEARANCE je rekreujeme záměrně.
1. Vertex jitter
PS1 počítala pozice vrcholů v celočíselné aritmetice. Když se kamera hnula, vrcholy “skákaly” mezi pixely. V shaderu to napodobíme zaokrouhlením clip-space pozice na mřížku:
float4 snapped = floor(clip * gridSize) / gridSize;
Výsledek: vibruje úplně všechno. Hlavně blízké modely.
2. Affine texture mapping
PS1 neuměla perspektivně korigovat texturové souřadnice. Textury na šikmých polygonech se “vlnily”. V moderním shaderu to vynutíme pomocí noperspective interpolace.
3. Fog
Limit dohledu nebyl estetické rozhodnutí — bylo to nutné kvůli draw distance. My ho použijeme jako narativní nástroj: ve Středisku Š-7 málokdy vidíte víc než 8 metrů dopředu.
Co dál
Příští devlog: audio. Jak nahráváme magnetofonové pásky a proč jsme koupili 30 let starý Tesla B-115.