Assembler

fire

Mój pierwszy program w assemblerze x86. Algorytm zaczerpnięty z jednego z numerów legendarnego czasopisma C&A. Ze względu na kiepską procedurę losującą sam ogień jest raczej monotonny. Dużo ciekawiej prezentują się płonące litery.

flare

Wariacje na temat oświatlania bitmapy przez flarę. Właściwie to próbowałem zrobić bumpa i efekty te uzyskałem niejako przy okazji, niemniej jednak wyglądają co najmniej interesująco.

line

Mój start w 3D. Zwykły druciak, nawet bez zasłaniania powierzchni niewidocznych. Za to cała matematyka zaimplementowana na koprocesorze.

flat

Cieniowanie FLAT (każda ściana (face) wypełniana jest tylko jednym kolorem). Kolor ustalany na podstawie głębokości. Sortowanie RADIX po współrzędnej Z i zasłanianie płaszczyzn niewidocznych.

gouraud

Cieniowanie GOURAUD'a (kolory wierzchołków są interpolowane liniowo na powierzchni każdego face'a). Kolor ustalany na podstawie głębokości. Algorytm sortowania zmieniony na QSORT (na koprocesorze). Dodałem licznik klatek.

texture

Teksturowanie (powierzchnia każdego face'a pokrywana jest wzorem z bitmapy). Tekstura jest nakładana jednakowo na wszystkie face'y obiektu (ten sam fragment tekstury na każdym trójkącie).

env

Mapowanie środowiskowe (tekstura owija obiekt, współrzędne tekstury dla face'a wyliczane są w locie). Przy obracanych wersorach obiekt rozciąga rzutowaną frontalnie teksturę (daje to interesujący efekt metalicznych odblasków).

light

Tymczasowo mój najbardziej zaawansowany efekt 3D. Cieniowanie GOURAUD'a, kolor na podstawie wektora światła (którym można poruszać), paleta PHONG'a (nieliniowy rozkład barw od ciemnej do jasnej). Sortowanie tylko widocznych face'ów.

bump

Znalazłem trochę czasu i tak oto powstał, bazujący na efekcie z flarą, bump mapping z prawdziwego zdarzenia. Nie jest to typowy bump ze względu na obcinanie do flary, ale może dlatego właśnie warto rzucić okiem.