Volgens mij zouden de specs nog niet eens zo far off kunnen zijn.
Op GDC heb ik een DX9 preview/lezing gevolgd waar die Matrox kaart heel gelukkig displacement mapping zat te doen in realtime en door het DX-team werd gesproken over floating point accuracy in de pixel shaders (dit is waar iedereen het over heeft met 40 bit kleur enzo).
Op een ATi lezing die een collega heeft gevolgd werd verteld (en een demo gegeven) die laat zien dat de huidige Radeon 8500 al meer dan 8 bits precisie heeft, om wel te verstaan: 1.3.12 (1 bit sign, 3 bit integer, 12 bit fractie), wat neerkomt op 16 bit per component kleur. ATi heeft dit nooit aan de grote klok gehangen (i.e. 64 bit kleur intern), en ze zijn daarmee NVidia ver voor..
't verbaast me dus niet dat ATi meer van dat soort truukjes achter de hand heeft. En Matrox heeft al dingen in hardware lopen die NVidia (voorlopig) ook niet heeft, dus er is echt wel wat meer dan NVidia alleen (gelukkig).
En dan nog een persoonlijke rant over dat hele X-bit-color verhaal: de meeste mensen snappen er geen drol van.
Meer kleurdiepte is *niet* bedoeld om de directe kleurkwaliteit te verbeteren. Je ziet het verschil tussen 32 en 64 bit kleur *echt* *niet*. 40 bit kleur bestaat niet zover ik weer (dat is 2:10:10:10, dus je alpha kanaal word maar 2 bits, maar je hebt wel 10 bits / component, zelfde als wat scanners gebruiken).
Extra kleur precisie word gebruikt voor fotorealistische effecten. Een eindresultaat (plaatje op scherm of foto) heeft genoeg aan een het dynamisch bereik wat 32 bit bied, maar in de tussenresultaten wil je rekenen met veel meer precisie en bereik.
Neem een klassiek voorbeeld: Je rendert in een spel een zwarte auto die in een straat staat (denk de reflecties en fancy effects erbij), deze auto reflecteerd natuurlijk de lantarenpalen eromheen, maar is verder zwart. Meestal zeg je dan dat de auto 60% (of noem maar wat) de omgeving reflecteerd. Dan worden de witte straatlantarens opeens 60% * wit, dus een beetje grijzig. Dat klopt niet! De straatlantarens zijn namelijk niet 100% wit, maar bijvoorbeeld 500%, dus je moet wel een heel erg absorberend materiaal hebben wil je dat niet reflecteren..
Of denk eens aan het feit dat je een kamer binnenloopt (zeg, de gangkast), waar het enige licht een LED-lampje is van 't een of 't ander. Doe de deur dicht en je ziet helemaal niets, wacht effe 10 minuten en je kan vanalles om je heen zien.
De vraag naar meer precisie in interne blend-pipelines heeft te maken met het feit dat (naast het oplossen van afrondingsfouten en wat anders technisch geneuzel) het menselijk oog in staat is een aantal tinten over een *veel* *groter* bereik te zien. Dus je moet wel dat bereik kunnen representeren voordat je bepaald welk gedeelte ervan je gaat displayen.
Dan heb je nog allerlei andere zaken als interne precisie die nodig is bij allerhande berekeningen (ik kwam zelf een RGB -> YCrCb conversie probleem tegen waar ik echt 9 bit signed numbers nodig had), maar ook voor self-shadowing bumpmaps, etc. etc. heb je het nodig. Als het uiteindelijke resultaat 8 bit word en dat word geaccumuleerd uit die 8, 12 of 16 textures die je tegenwoordig en in de toekomst in een GPU kan vinden, dan mag je toch wel hopen dat er intern meer precisie is dan die 8 bit voor je het uiteindelijke resultaat afcropt, toch?
Anyway, hopelijk krijgt ATi 't voor elkaar dit keer op tijd goede drivers te leveren. Qua tech zijn ze erg goed, up to par met NVidia als je 't mij vraagt, maar ze weten het elke keer weer te verpesten met langzame en/of buggy drivers. Ohwell..