Stokastiskt progressiv fotonmappning utan lokal fotonstatistik

2011-08-02 21:39:43.0 - [Permalink]   [1 Comments]

Stochastic progressive photon mapping without local photon statistics

Det har varit lite tyst om renderaren nu ett tag, men det är inte för att jag inte hållt på med den. Tvärtom. Jag har upptäckt en massa buggar men kanske främst kämpat med att göra om raytracern från sk "path tracing" som kräver sjukt mycket strålar för att bli brusfri, till en mer deterministisk/ordinär "Whitted raytracer". Istället för spekulärt djup där man terminerar strålgången efter ett antal studsar så gör jag istället så att jag avbryter när ljusintensiteten i strålen blivit så låg att den knappt ger något visuellt bidrag.

Raytracingsteget går lite långsammare, men i gengäld försvinner bruset helt och det blir likt originalidén med SPPM.

Denna förändring gjorde dock att det blir jäkligt knepigt med nästlade dielektriska material när en raytracead stråle blir ett fett strålträd som skapar en massa olika diffusa träffar, vilket gjorde kärnan i SPPM-beräkningen svåranvänd, eg omöjlig om jag får säga det. Originalidén är nämligen att man avbryter raytracingen vid en diffus träff och sparar en "hitpoint" med 3dpunkten, normalen och spektralfördelningen - men det blir jäkligt konstigt när en stråle bryts upp i flera när den både går igenom glas och reflekteras samtidigt. Strålen kommer träffa flera olika diffusa ytor, så första idén blev att spara alla dessa diffusa träffar. Efter några iterationer blev minnet fullt.

Efter en sömnlös natt med grubblande så mindes jag att jag läst om några som vidareutvecklat SPPM så att man slipper spara hitpointsen vilket ju då kringår hela problematiken helt. Det tog mig bara en förmiddag att implementera idén, och det mesta av implementeringen bestod egentligen av att skala bort delar av originalkärnan istället för att utöka den.

Avhandlingen heter "Progressive Photon Mapping: A Probabilistic Approach" av
Claude Knaus and Matthias Zwicker: http://www.cgg.unibe.ch/publications/2011/progressive-photon-mapping-a-probabilistic-approach

Mest av tiden har gått åt att debugga refraktionsindex och fresnelberäkningar samt att få Whittedraytracern att funka.

Jag har trott många gånger under de senaste veckorna att jag varit i hamn med raytracern. Precis som nu. Skillnaden nu är att jag har svårt att hitta visuella konstigheter och jag tycker koden blivit rejält mycket snyggare med en massa JUnit-test för refraktionsindexlistan som används för att ljusstrålen ska lista ut i vilket material den förnärvarande befinner sig i, implementerad enligt "Simple Nested Dielectrics In Ray Traced Image" av Charles M. Schmidt and Brian Budge: http://www.idav.ucdavis.edu/func/return_pdf?pub_id=772

Kommentarer

2011-08-15 15:37:00.0

Bzzzz.. Bzzzz..

Add new Comment

Månadsväljare

[2013-4]  [2013-3]  [2012-5]  [2012-3]  [2012-1]  [2011-12]  [2011-8]  [2011-5]  [2011-4]  [2011-3]  [2011-2]  [2011-1]  [2010-12]  [2010-11]  [2010-10]  [2010-9]  [2010-8]  [2010-7]  [2010-6]  [2010-5]  [2010-4]  [2010-3]  [2010-2]  [2010-1]  [2009-12]  [2009-11]  [2009-10]  [2009-9]  [2009-8]  [2009-7]  [2009-6]  [2009-5]  [2009-4]  [2009-3]  [2009-2]  [2009-1]  [2008-12]  [2008-11]  [2008-10]  [2008-9]  [2008-8]  [2008-7]  [2008-6]  [2008-5]  [2008-4]  [2008-3]  [2008-2]  [2008-1]  [2007-12]  [2007-11]  [2007-10]  [2007-9]  [2007-8]  [2007-7]  [2007-6]  [2007-5]  [2007-4]  [2007-3]  [2007-2]  [2007-1]  [2006-12]  [2006-11]  [2006-10]  [2006-9]  [2006-8]  [2006-7]  [2006-6]  [2006-5]  [2006-4]  [2006-3]  [2006-2]  [2006-1]  [2005-12]  [2005-11]  [2005-10]  [2005-9]  [2005-8]  [2005-7]  [2005-6]  [2005-5]  [2005-4]  [2005-3]  [2005-2]  [2005-1]  [2004-12]  [2004-11]  [2004-10]  [2004-9]  [2004-8]  [2004-7]  [2004-6]  [2004-5]  [2004-4]  [2004-3]  [2004-2]  [2004-1]  [2003-12]  [2003-11]  [2003-10]  [2003-9