Ik houd van software rendering

Ik houd van software rendering. De beste DOS-ervaring die ik in lange tijd heb gehad, was Quake in de software renderer op 800×600, draaiend op een vaste 60fps op mijn Dell OptiPlex 380. Het is een van de mooiste dingen die ik een DOS-game heb zien doen.

Dat is niet hoe de meeste mensen zich het uiterlijk van die games herinneren. In de jaren 90 draaide je ze ofwel via software in een lage resolutie, of je kocht een 3D-kaart en speelde de versnelde versie. Vandaag de dag is er een derde optie: de software renderer draaien op een machine die snel genoeg is om resoluties aan te kunnen die destijds voor niemand bruikbaar waren.

Wat software rendering is

In een game met software rendering tekent de CPU elke pixel. Er is geen 3D-kaart bij betrokken: de game berekent elk frame in de eigen code en schrijft dit rechtstreeks naar het videogeheugen. Doom, Duke Nukem 3D, Blood en de originele Quake werken op deze manier.

Toen 3D-kaarten verschenen, kregen veel games versnelde versies. GLQuake kwam na Quake, en Blood en Tomb Raider kregen 3dfx-modi. Deze versies besteden het tekenwerk uit aan de videokaart, en ze zien er anders uit.

Waarom ik van de look houd

  • Het is scherp. Software renderers samplen texturen over het algemeen pixel voor pixel, waardoor elke texel een scherp vierkantje blijft. Vroege 3D-kaarten maakten texturen vloeiender met bilinear filtering, wat in 1997 indrukwekkend oogde, maar in mijn ogen nu alles zacht en wazig maakt.
  • Het is rauw. De meeste van deze games draaiden in 256 kleuren, waarbij de belichting werd gedaan via opzoektabellen in dat palet. Schaduwen lopen af in zichtbare stappen in plaats van vloeiende gradiënten. Technisch gezien is dat colour banding, een beperking. In de praktijk geeft het de games een ruwe, vuile textuur die ik erg mooi vind, en die hardware rendering wegpoetst.
  • Het is zoals de games zijn gebouwd. Quake werd uitgebracht met zijn software renderer, en GLQuake volgde later. Doom en de games van de Build-engine waren vanaf het begin ontworpen rond hun software renderers.

Het is niet altijd de betere optie. Toen ik een Voodoo 2 werkend kreeg in een moderne pc, draaide Blood snel in de 3dfx-modus, maar de VESA software-modi waren de mooiste optie. Tomb Raider werkte andersom: de onderwatersecties zien er merkbaar beter uit met versnelling dan in de DOS software renderer. Het is dus een kwestie van voorkeur, geen regel. Maar voor de meeste games waar ik om geef, zou ik kiezen voor de software renderer.

Het is overigens niet alleen nostalgie. Ion Fury, een Build-engine game uit 2019, wordt nog steeds geleverd met een software renderer.

Het addertje: er is een snelle pc voor nodig

Software rendering schaalt met de CPU. Elke extra pixel is werk voor de processor, waardoor de hoge VESA-resoluties die veel late DOS-games boden, ver buiten het bereik van de hardware van die tijd lagen.

Moderne hardware kan dit grotendeels aan. Op de OptiPlex 380 houdt Quake op 800×600 een vaste 60fps vast. Maar de zwaarste games pushen zelfs zeer snelle machines tot het uiterste. In zijn video over de Portwell RUBY-9719 laat Rasteri zien dat Build-engine games bij hoge resoluties veel meer kracht nodig hebben, tot het punt waarop zelfs een 3.3GHz quad-core Xeon "niet helemaal genoeg is om Shadow Warrior op een volledige 1600 bij 1200 te draaien".

Als je deze games dus op hun best wilt zien, heb je de snelst mogelijke machine nodig die ze nog steeds ondersteunt.

Waarom het op native DOS moet draaien

Er zijn andere manieren om software rendering op een moderne pc te krijgen. Source ports van Doom en Quake draaien software renderers op Windows, en Ion Fury draait native op Windows. Die zijn geweldig.

Waar ik echter naar op zoek ben, zijn de originele DOS-versies die draaien zoals ze zijn uitgebracht, op echte hardware. DOSBox is het voor de hand liggende alternatief, maar sommige DOS-titels hebben moeite in DOSBox, terwijl ze op echte hardware precies zo werken als bedoeld.

Dat laat nog één probleem over: geluid. Een snelle machine die native DOS draait, heeft een geluidskaart nodig waarmee de games kunnen communiceren, en moderne pc's hebben die niet. Dat is een verhaal op zich.

Games die het proberen waard zijn

  • Quake, in software op 800×600 of hoger
  • Duke Nukem 3D en Blood (de Build-engine games), op hoge VESA-resoluties
  • Screamer