2011-08-30

Przejście z double na float

Dotychczas wszystkie obliczenia przeprowadzałem na double. Wraz z dodaniem korekcji gamma do sceny okazało się, że tektury najlepiej przechowywać po zdekodowaniu gamma. Z uwagi na błędy trzeba zrezygnować z bajtu jako pojemnika na składowe RGB i przejść na int. Ponieważ w obliczeniach posługuję się liczbami z zakresu 0 do 1, tak że 0 to czerń, a jeden to biel naturalnym pojemnikiem okazał się float. Przechowywanie tekstur na bajtach i ich dekodowanie w trakcie obliczeń okazało się wprowadzać znaczące spowolnienie renderowania.

Przechodząc na float w teksturach, uznałem, że nie będę już ich nigdy przechowywał w bajtach i posłałem w otchłań odpowiednie bajtowe pojemniki. A w zasadzie skonwertowałem je na float. Podobnie jak z pojemnikiem na teksturę postąpiłem z pojemnikiem na wartości (np. na mapę wypukłości).

Zużycie pamięci wzrosło czterokrotnie ale ciągle jest to akceptowalne dla mnie. Być w może w przyszłości trzeba będzie przywrócić bajtowe pojemniki by oszczędzać pamięć kosztem prędkości renderowania.

No niejako przy okazji przeniosłem wszelkie obliczenia z double na float.

Jeśli chodzi o jakość renderowanych scen to jest ona bardzo podobna (plus minus 1/255 głównie w niektórych miejscach). Jeśli chodzi o prędkość to nie zmieniła się ona. I to jest zastanawiające.

Brak komentarzy:

Prześlij komentarz