All Blog Entries

All blog entries, ordered from most recent. Entry count: 1198.

Uwaga! Informacje na tej stronie mają ponad 6 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: > 1 ... 78 79 80 81 82 ... 150 >

# Oren-Nayar

Fri
06
Jun 2008

Trafiłem przypadkowo na hasło oświetlenia wg modelu Orena-Nayara i sobie go na szybko skodziłem z pomocą tego artykułu. Jest to model oświetlenia rozproszonego (Diffuse) uogólniający stosowane powszechnie prawo Lamberta na powierzchnie o współczynniku chropowatości 0..1. Nie chodzi o żadne mapowanie nierówności takie jak Normal Mapping, a raczej tylko o odpowiednie "spłaszczenie" funkcji liczącej oświetlenie. Fajnie to wygląda, ale niestety jest skomplikowane obliczeniowo. Dlatego wartoby poszukać jakiejś prostej aproksymacji tej funkcji albo zakodować ją w jakiejś teksturze przeglądowej.

Oren-Nayar

Comments | #rendering Share

# HDR i Glare

Fri
06
Jun 2008

Na czym to ja skończyłem... Miałem mapę i Deferred Shading, dopisałem HDR i miałem zrobić Tone Mapping. W ramach HDR akumuluję oświetlenie sceny kolejnymi światłami do Render Targeta o formacie zmiennoprzecinkowym. Już samo to znacznie poprawia kolorystykę sceny. Żeby było pełne HDR, wypada potem mierzyć średnią jasność sceny i zależnie od tego robić Tone Mapping. Nie udało mi się jednak znaleźć takiego wzoru, któryby dał ładny wygląd.

HDR, Glare

Kolejną rzeczą jest rozbłysk od źródeł światła. To nie jest żaden Bloom, tylko zwykłe quady zwrócone przodem do kamery, pokryte odpowiednią teksturą. One są rysowane z wyłączonym Z-buforem, ale tylko wtedy, kiedy liczony na CPU test kolizji promienia od kamery do światła nie wykaże żadnej przeszkody po drodze. Odpowiednią teksturę wyliczyłem na podstawie wzoru, który znam od Krzyśka K. i wrzuciłem ją też do pobrania:

Glare - tekstura narzędziowa

Comments | #rendering Share

# Ostatni artykuł - Zaawansowana kamera 3D

Thu
05
Jun 2008

Mój nowy artykuł nosi tytuł Zaawansowana kamera 3D. Jest bardzo długi i opisuje kilka zagadnień programistyczno-matematycznych dotyczących grafiki 3D: koncepcję kamery i jej implementację jako zestaw klas, rysowanie prostokątów zwróconych przodem do kamery (Billboard), w tym efektów cząsteczkowych, testowanie kolizji obiektów z polem widzenia kamery w celu nierysowania tego co niewidoczne (Frustum Culling) oraz testowanie kolizji promienia celem sprawdzania, który obiekt 3D gracz wskazał myszką (Picking). Dołączony kod zawiera spory kawałek mojej biblioteki matematycznej.

Na tym kończę maraton pisania artykułów i wracam do kodu :) Nie zrealizowałem nawet połowy z listy pomysłów na artykuły, ale myślę, że wybrałem te najlepsze.

Comments | #rendering #math #productions Share

# Praca magisterska o silniku 3D

Fri
30
May 2008

Wiem o istnieniu trzech prac dyplomowych poświęconych silnikowi 3D, jakie dotychczas były obronione w Polsce:

Wkrótce do tego grona dołączy moja praca magisterska:

Właśnie dotarłem do kolejnego kamienia milowego w jej przygotowaniu - praca została wydrukowana i oprawiona :)

Moja praca magisterska

Comments | #rendering #engine #studies Share

# Nowy artykuł - Szybki alokator FreeList

Wed
28
May 2008

Mój następny artykuł nosi tytuł Szybki alokator FreeList. Opisuje przykład implementacji mechanizmu zwanego Free List. Jest to samodzielne zarządznie pamięcią polegające na utrzymywaniu listy wolnych elementów, z której można przydzielać elementy dużo szybciej, niż to robi alokacja pamięci ze sterty standardowym operatorem new. Mój kod oparty jest na artykułach z książek "Game Programming Gems", a przeprowadzony test pokazuje, że faktycznie osiąga on bardzo dobrą wydajność.

Comments | #productions #c++ #algorithms Share

# Nowy artykuł - Preprocesor w shaderach HLSL

Thu
22
May 2008

W następnym artykule opisałem, jak używa się preprocesora w języku shaderów HLSL. Pisząc coś bardziej skomplikowanego niż pojedyncze efekty graficzne - np. silnik - na vertex shader i pixel shader trzeba czasem spojrzeć jak na zestaw ustawień, tak jak w starym dobrym Fixed Function Pipeline. Pojawia się taki problem, że każda kombinacja ustawień to powinien być osobny shader. W artykule przedstawiłem jedno z rozwiązań - kompilowanie kodu HLSL z użyciem proprocesora (#if itp.), z ustawieniami wpisanymi jako wartości makr. Zapraszam do lektury: Preprocesor w shaderach HLSL.

Comments | #rendering #productions #directx Share

# Nowy artykuł - Unicode w Visual C++

Wed
21
May 2008

Mój kolejny artykuł to Unicode w Visual C++. Jest prosty - wymaga tylko znajomości podstaw programowania w C++. Wszystkim tym, którzy kodują pod Windows i z użyciem Visual C++, może pomóc zacząć używać w swoich projektach kodowania znaków Unicode. Trzeba jednak przyznać, że to nie zawsze ma sens - przynosi korzyści tylko jeśli program ma używać plików tekstowych Unicode albo będzie tłumaczony na różne języki. W przeciwym razie szkoda zachodu :)

Comments | #productions #c++ #visual studio Share

# Nowy artykuł - Kwaterniony w praktyce

Tue
20
May 2008

Mój następny artykuł nosi tytuł Kwaterniony w praktyce. Przeznaczony jest dla tych, którzy znają już podstawy matematyki potrzebnej w programowaniu grafiki 3D (wektory, macierze), ale dotychczas omijali temat kwaternionów szerokim łukiem myśląc, że są bardzo trudne. Artykuł pokazuje (mam nadzieję), że nie ma w nich żadnej czarnej magii - są po prostu wygodnym narzędziem do zapisywanie obrotów i orientacji w 3D, z którego można się nauczyć korzystać bez rozumienia, że kwaternion to rozszerzenie liczb zespolonych mające trzy pierwiastki urojone :) Zamiast wzorów pokazałem fragmenty kodu C++.

Comments | #productions #math Share

Pages: > 1 ... 78 79 80 81 82 ... 150 >

[Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2026