Noot: al deze foto's werden uiteraard in HDR genomen.
Dan de software zelf uiteraard. De volledige pipeline voor de environmentbelichting is ondertussen up and running. Maar nog niet bugfree spijtig genoeg.
Een eerste probleem dat ik tegen gekomen ben is dat ik views berekend heb voor een elevation angle tussen 0 en 90°. Maar als deze hoek berekend wordt zijn er natuurlijk ook regio's waar die hoek groter dan 90° is. Het diffuse gedeelte kan wel gespiegeld worden, maar hoe dit met het speculaire gedeelte zit is op dit moment nog een beetje wazig. Ter illustratie hieronder een theepot waarbij het gele stuk elevation angle [0-90°] en het magenta gedeelte is elevation angle (90-180°] Zoals in de verdere images te zien is zijn deze stukken op dit moment nog gewoon zwart.
Vervolgens staat er in de paper van Green et al. dat zij de gewichten, standaarddeviaties en µ-waarden in een texture steken om deze zo door te geven aan de shader. Ik heb enige problemen gehad met dat effectief te laten werken en heb er daarom voor geopteerd om deze door te geven als matrices. Deze kunnen ook heel efficient aangesproken worden binnen de shader en het komt goed uit aangezien er voor 15 views 16 waarden zijn per parameter. Dit komt dus net op een 4*4 matrix.
Hieronder een screenshot van een eerste test om een geconvolueerde environmentmap mappen op de theepot. Dit is gewoon gebruikmakend van de theta en phi hoek afgeleid uit de relfectievector.
Uiteraard is dit niet echt de bedoeling, dus toen heb ik dan de hele interpolatie pipeling geïmplementeerd. Iets wat sneller zou kunnen gaan moest ik tex2Dlod gebruiken, maar voorlopig wil ik alles goed kunnen volgen om dingen die fout gaan snel te kunnen spotten en isoleren. Het gevolg van renderen met specular en diffuse stukken apart staat hieronder. Eerst het specular gedeelte en de 2de is het diffuse stuk. Het valt natuurlijk direct op dat het magenta stuk uit het image hierboven nu nog zwart is. Andere dingen die hier nog fout waren zijn het zwarte gebied op de voorgrond en het ring effect aan de zijkanten.
Een combinatie van specular en diffuse stukken staat hieronder, eerst onder het toepassen van de scalering met gewichten, dan mét.
Het toepassen van de gewichten lost het probleem van het grote zwarte gebied in het midden al gedeeltelijk op, maar nog niet helemaal. (er moet hier ook wel vermeld worden dat er nog geen tonemapping is toegepast hier) Dus ben ik op zoek gegaan naar de plaatsen waar het fout loopt. Op dit moment zijn de problemen die ik gevonden heb:
- De theta waarden groter dan 90°
- Het laden van het .exr image. De variatie van de kleuren in de Y-richting (theta) is logisch maar er loopt iets serieus mis in de X-richting (phi)
No comments:
Post a Comment