Nu het academiejaar ook officieel onderweg is wordt het maar eens tijd dat ook dit thesisblog nuttig gevuld wordt. Voor de geintresseerde maar misschien minder geinformeerde lezers die hier toevallig op terecht komen misschien eerst een korte samenvatting van het onderwerp. Daarna zal ik een overzichtje geven van hetgene al gebeurd is in (vooral) de afgelopen anderhalve maand.
De probleemstelling.Een gekend probleem in computergraphics is de beperking die het RGB (of welk 3 waarden kleurmodel dan ook) oplegt aan de nauwkeurigheid van een kleurvoorstelling. Aangezien kleuren in feite een continue verdeling zijn over het hele golflengtespectrum gaat veel info verloren als we dit terug brengen naar enkel 3 waarden. We kunnen dan ook niet verwachten om uit bewerkingen met enkel deze 3 waarden exacte kleurresultaten te krijgen. Dit heeft als gevolg dat verschillende fysische fenomenen moeilijk gesimuleerd kunnen worden in de standaard renderingstechnieken. Voorbeeldjes zijn metamerisme, fluorescentie, dispersie, gepolarizeerd licht, etc.Het doel van deze thesis is dan ook om de volledige spectrale info zo lang mogelijk in het renderingsproces te bewaren om zodoende veel nauwkeuriger kleuren te bekomen. Meer in praktijk zou het resultaat gebruikt kunnen worden om bijvoorbeeld de reflecties van materialen onder verschillende belichtingen te vergelijken. Dit alles dient dan ook nog eens in realtime op het scherm getoverd te worden om zodoende een praktische viewer over te houden.
Reeds geleverd werk.
Na de examens in juni kreeg ik een thesis getiteld 'Multispectrale Rendering' in de handen geduwd en een hoop bronnen voor papers over graphics om van te starten. Die thesis geeft een mooi overzicht van enkele manieren om spectrale licht informatie voor te stellen alsook enkele effecten waarvoor spectrale gegevens broodnodig zijn. Er werden een viertal methodes om spectra voor te stellen besproken: bemonstering, getabuleerde bemonstering, fouriervoorstelling en een composietvoorstelling. Het opzoeken van hun referenties en andere bronnen leerde echter dat er heel wat lichte variaties bestaan op het voorstellen van een spectrum dmv basisfuncties. Dit is dan ook een eerste subprobleem, de meest efficiënte voorstelling vinden voor de spectra. Ik heb een aantal papers gelezen over dit onderwerp, sommige waren echter iets te geavanceerd, zeker in dit stadium van de thesis. De belanrijkste blijven de thesis over multispectrale rendering en 'A Composite Model for Representing Spectral Functions' door o.a Sun
. In deze laatste wordt het composiet model uitgewerkt. Andere papers die ik onlangs gelezen heb: 'Linear Color Representations for Full Spectral Rendering' en 'Interactive Full Spectral Rendering'. Beide van o.a M.S Peercy. De eerste geeft een voorstellingswijze van spectra op basis van een set basisfuncties wat het berekenen van resulterend licht terug brengt tot eenvoudige matrix berekeningen. Ook geeft hij een manier weer om aan deze basisfuncties te komen. De 2de gebruikt deze voorstelling om een renderen te maken, maar aangezien deze paper dateert van midden jaren '90 was de technologie toen nog lang niet zo geavanceerd en is het daarom minder relevant.
Het 2de subprobleem bevindt zich aan het ander einde van de renderingpipeline. Met name een High Dynaminc Range resultaat converteren naar een Low Dynamic Range versie voor weergave op bijvoorbeeld een scherm. Het probleem is namelijk dat in de 'echte wereld' de range waarin lichtintensiteit zich bevindt verspreid ligt van 10^-6 cd/m² tot 10^6 cd/m². Daar waar een gewone display slechts een fractie van die range kan weergeven. De oplossing hiervoor heet tonemapping waarbij de hele range van intensiteiten wordt terug gebracht binnen een beperkte range. Enekele van de relevante papers die ik hierover gelezen heb zijn 'Realtime HDR Rendering' van Christian Luksch, 'Perceptual Effects in Real-time Tone Mapping' van o.a G. Krawczyk. Ook zou ik het boek van E. Reinhard, '
High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting' moeten lezen, maar blijkbaar is Standaard Boekhandel niet echt geweldig snel in het leveren daarvan. Maar hopelijk komt het deze week toe zodat ik daar in kan duiken.
Het derde subprobleem is uiteraard hoe dit moet geimplementeerd worden zodat het in realtime kan weergegeven worden. Aangezien de meeste graphicsrekenkracht in de GPU zit is het logisch dat we rechtstreeks daarop zullen gana programmeren. Daarom ben ik dan ook begonnen met het leren van openGL en Cg. Een eenvoudige viewer in openGL en een simpele test van het concept vertexshader heb ik reeds gemaakt. Maar nog niks spectaculair genoeg om hier te tonen.
Dit was dan een klein overzicht van wat ik reeds gedaan heb. In de komende weken zal ik vooral meer moeten lezen, uitvissen hoe ik die spectrale voorstellingen naar Cg en openGL krijg en realtime tonemapping moeten bestuderen. En normaal gezien zal ik vanaf nu ook elke week een update trachten te geven van de vooruitgang die geboekt is.