Toch zul je, op een zeker moment, een API/interface aan willen bieden die de abstractie voor de programmeur aanbied op een niveau á la: "hey, dit is makkelijk en productief", maar toch, door middel van een driver, net zoals D3D onafhankelijk is van de hardware. En daar wil ik dus eigenlijk mee zeggen dat RayTracing, hoewel een typische "OpenCL" taak op dit moment, nog helemaal niet volwassen is.
Er ís geen OpenRT of DirectRT, je hebt wel DX11 DirectCompute, OpenCL, CUDA en Stream, maar dat zijn allemaal in feite "reken" modules. Pure, raytrace graphics zijn nog onontgonnen gebied. Laat er eerst maar eens een standaard opgelegd worden. Helaas, als het op graphics aankomt, is het de praktijk dat de Khronos group (van OpenGL) net iets té veel stokpaardjes-poetsers in de gelederen heeft, waardoor bijvoorbeeld de CAD wereld het ene prioriteit geeft, en nVidia/AMD allemaal hun eigen extensies aan het toevoegen zijn (Carmack is haast zo ver dat hij, tenminste, las ik ooit ergens, helemaal aan het begin van z'n engines een mooie: IF (nvidia) THEN (engine1), ELSEIF (amd) THEN (engine2) ELSE (engine3) neerzet (of gewoon 3 binaries aanbieden). Dat is de praktijk van OpenGL.
Microsoft is wat meer dictatoriaal, en zegt: dit is een graphics bibliotheek voor de massa. OpenGL zitten de hardware makers en de CAD makers in, daar kunnen we toch niet tegen op. En hoewel het een Windows-only dingetje is (ik geef ze daar de schuld niet van), is DirectX in feite de oorzaak geweest van een booming game-industrie op de PC, die snel innoveren kan en waardoor hardware fabrikanten duidelijk konden afbakenen (DXversiezoveel ondersteund door deze kaart!) wat hun speeltjes ondersteunen.
Wat dat betreft zie ik Raytracing nog wel opgepikt worden op net zo'n manier, en waarschijnlijk zal het een onderdeel worden ván D3D. Transparant voor de programmeur, onafhankelijk van hardware. Zeker nu ARM ook steeds meer een factor wordt náást X86 (en X86-64), en het tijdperk van de "app" op de desktop ook aanbreekt: XNA kan daar handig op inspringen door een nóg transparantere Raytracer aan te bieden. Nadeel echter van zo'n API, en dat is iets wat DirectX dus ook heeft met de hardware truukjes, is dat er altijd iets nieuws komt. Kijk bijvoorbeeld maar eens goed naar het eerste filmpje... mij valt het volgende op:
* Niet heel veel particles
* Tearing in het filmpje. Not done voor demo's
Nou zou tearing iets zijn wat met VSync op te lossen is, een techniek die je eigenlijk alleen uit hoort te zetten als je e-peen wilt vergelijken met je FPS, maar is dat iets wat in een raytrace engine/API zit? (Persoonlijk vind ik: dat moet de API oplossen) Een framerate-limiter en een scan-syncer is in feite wat je moet hebben dus. Dat wil zeggen: monitor-refresh uitlezen, timing vaststellen, en zorgen dat er per signal-refresh er maximaal één beeldje uitkomt. Dus niet 5 verschillende beelden naar een monitor pompen die er maar 2 in die tijd kan weergeven en dus wat vreemd knutselwerk gaat doen. Maar particles? Tsja, dan kom je weer bij physics. En er moeten dus IETS van model-parameters worden aangemaakt. Anders kun je niet raytracen

. Allemaal van die dingetjes... tsja... daar kan op geinnoveerd worden.
Dus ik denk dat het geven van vrijheid aan de programmeur goed is, maar je maakt het jezelf moeilijk als je jezelf vastlegt. Er moet ALTIJD een API zijn, anders krijg je het resultaat dat een game in feite een stuk OS gaat schrijven, en dat WIL je niet hebben. Laat het OS, Windows bijvoorbeeld, een uniforme bibliotheek aanbieden waar games op kunnen zitten, en zorg dat die bibliotheek ALTIJD hetzelfde is, of tenminste kan. Zoals D3D misschien wel soms geoptimaliseerd is omdat NV soms net wat sneller X doet dan dat AMD dat doet (en andersom), maar in essentie is het DX11 "keurmerk" iets wat goed is, en dat WIL je juist met raytracing. Geen grens van verbeelding van de programmeur, want dan heb je een marketing man die zegt: 80% van de klanten kan dit niet weergeven met hun IGP