Mini recenzja książki o renderingu
Obiecałem sobie już dawno, że napiszę o pewnej książce, którą mam przyjemność posiadać. Mowa jest o anglojęzycznej pozycji pt. “Physically Based Rendering: From Theory to Implementation”. Autorami są Matt Pharr oraz Greg Humphreys. Jest to najlepsza książka o renderingu, jaką miałem okazję trzymać w rękach. Piszę w rękach (a nie ręce), gdyż książka ma ponad 1000 stron (kredowy papier), a całość jest umieszczona w twardej oprawie. Nie jest to zatem zbyt “poręczna” pozycja. Na tym jednak jej wady się kończą.
O czym dokładnie jest książka?
Autorzy opisują wszelkie aspekty teoretyczne oraz praktyczne renderingu opartego na zasadach fizycznych. Książkę można uznać za nowoczesny podręcznik grafiki komputerowej. Jest napisana w bardzo przemyślany sposób, gdyż nawet osoba nie orientująca się w temacie, aczkolwiek posiadająca pewną wiedzę matematyczną, będzie mogła zrozumieć większość materiału. Materiału jest tak dużo, że ciężko jest go przedstawić ciągłym tekstem, więc posłużę się bardzo skrótową listą zagadnień. Oto ona:
- przekształcenia geometryczne (wektory, macierze, układy współrzędnych)
- reprezentacja brył w przestrzeni wraz z metodami ich obróbki (np. jak wyliczyć przecięcie kuli z linią)
- metody przyspieszania obliczeń, reprezentacja przestrzenna geometrii
- podstawowe zagadnienia związane z kolorem oraz radiometrią
- model kamery
- teoria próbkowania i rekonstrukcji obrazu z próbek (np. filtry)
- reprezentacja obrazu (dane o pikselach, zakres tonalny, HDR)
- lokalne modele odbicia światła (B*DF) oraz definicja materiałów
- tekstury oraz sposoby ich przetwarzania (mapowanie, filtrowanie, generacja)
- interakcja światła z otoczeniem (emisja, pochłanianie)
- źródła światła (światła punktowe, powierzchniowe i wiele innych)
- całkowanie numeryczne wielkości radiometrycznych metodą Monte-Carlo w grafice (2 dość rozbudowane rozdziały)
- metody renderingu opartego na LTE (light transport equation) czyli ray tracing, path tracing, dwukierunkowy path tracing
Książkę zatem można traktować jako kompendium wiedzy z zakresu ogólnie rozumianego raytracingu. Podejście fizyczne zapewnia ogromny realizm tworzonych obrazów za pomocą algorytmów opisanych w książce. Lektura tego wydawnictwa skłoniła mnie do próby napisania własnego silnika renderującego opartego na raytracingu (o czym niebawem). Mogę tylko napisać, że książka zawiera wszystko co jest potrzebne do tego niełatwego zadania. Warto wspomnieć, że autorzy obrali świetną formę książki, gdyż w czasie opisywania zagadnień równolegle tworzą w języku C++ pełnowartościowy raytracer. Do tego wszystkiego otrzymujemy płytę CD, która zawiera pełny kod renderera PBRT (tworzonego w książce) wraz z materiałami dodatkowymi (np. grafiki). Możemy zatem sami “pomajstrować na żywo” z kodem raytracera, np. rozszerzając go o dodatkowe możliwości. Warto wspomnieć także, że kod jest wieloplatformowy.
Na koniec
Chciałbym wszystkim, którym tematyka grafiki komputerowej nie jest obca, gorąco polecić opisywaną książkę. Gdyby nie to, że jest dostępna jedynie w języku angielskim byłaby doskonałym podręcznikiem akademickim na przedmiot “Grafika komputerowa” na naszych uczelniach. Żywię nadzieję, że kiedyś jedno z polskich wydawnictw pokusi się o tłumaczenie tej pozycji, aby zastąpić już wysłużonego Foleya (choć być może lepszym zamiennikiem byłaby książką Petera Shirleya o podstawach grafiki). Mam również nadzieję, że będzie troszkę tańsza niż oryginał (około 250 PLN) albo chociaż wydana w ten sam rewelacyjny sposób.
PS. Książkę można nabyć na amazon.com, ale taniej można ją kupić na amazon.co.uk – stan na 14 marca 2007.