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 ... 103 104 105 106 107 ... 150 >

# Zewnętrzny logger/monitor - genialny pomysł?

Fri
04
May 2007

Wpadłem dzisiaj na taki oto pomysł: A gdyby tak napisać zewnętrzną aplikację okienkową, na przykład w C#, która łączyłaby się z moim silnikiem poprzez jakąś komunikację międzyprocesową? Mogłaby spełniać wiele przydatnych funkcji (niektóre z nich to pomysły zaczerpnięte z artykułu o loggerze w GPG4):

Taki program miałby liczne zalety:

Każdy pomysł w pierwszej chwili wydaje się genialny. W końcu jednak górę wzięło moje lenistwo (to jednak duża rzecz i wymagałaby sporo pracy, a i komunikacji międzyprocesowej nie znam) i argument dostępu podczas pracy na pełnym ekranie. Ostatecznie postanowiłem więc zrobić wszystko In-Game - szczególnie, że mam przecież własny system GUI. Napisałem więc swój własny, prosty Property Grid:

Mój własny Property Grid

Przy okazji ciekawostka: 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 - kto wie o co chodzi, ten wie :) Jest o tym nawet piosenka - Oh Nine, Eff Nine.

Comments | #ideas #tools Share

# Accidental Complexity, Essential Complexity

Thu
03
May 2007

Accidental Complexity i Essential Complexity to pojęcia, których użył Fred Brooks w swojej książce "Mityczny osobomiesiąc" oraz artykule "No Silver Bullet". Pisząc w skrócie, złożoność każdego programu jest sumą Accidental Complexity - nadmiernej złożoności, której da się uniknąć oraz Essential Complexity - złożoności która musi być, bo, jak mówią, jeśli program ma robić 30 rzeczy, to te 30 rzeczy trzeba zaprogramować.

Pomyślałem sobie dzisiaj, że tych dwóch pojęć, oprócz udowadniania dlaczego Srebrna Kula nie istnieje i nie może istnieć, możnaby też użyć do mierzenia jakości interfejsu API bibliotek (a może też podobnie interfejsu użytkownika programów?). Polegałoby to na tym, aby:

Comments | #philosophy #software engineering Share

# Wchodząc w szczegóły

Thu
03
May 2007

Kot zadał na forum - w temacie Narzut BeginPass / EndPass - ciekawe pytanie dotyczące jak najlepszej (oczywiście z punktu widzenia wydajności) organizacji procesu renderowania obiektów w silniku, w którym wykorzystujemy mechanizm efektów FX. Temat jest o tyle ciekawy, że mnie również dotyczy :) Dlatego wszelkie odpowiedzi mile widziane.

Przy okazji padł link do ciekawego znaleziska - ktoś napisał sobie swoje My own little DirectX FAQ z kilkoma ciekawymi informacjami.

Jeszcze mały off-topic: Wszystkim kolegom piszącym w tym roku maturę życzę powodzenia i ocen dostatecznie wysokich, żeby dostali się na swoje wymarzone studia - bo w takim momencie chyba to jest dla młodego kodera najważniejsze. GL & HF :)

Comments | #rendering #directx Share

# Singletony precz!

Tue
01
May 2007

W ramach porządków w kodzie pozbyłem się dzisiaj wszystkich singletonów zamieniając je na zwykłe, globalne zmienne wskaźnikowe. Tak, wiem co sobie teraz pomyślą wszyscy obrońcy programowania obiektowego... Ja nie mam nic do OOP ani nawet do wzorców projektowych, ale jednak krócej niż res::ResManager::GetInstance().Cośtam jest napisać res::g_ResManager->Cośtam. Poza tym to działa szybciej, bo mówcie co chcecie, ale sprawdzać czy obiekt już istnieje tysiące razy na klatkę to nie jest zerowy narzut czasu.

Przede wszystkim jednak mam teraz kontrolę nad tym, kiedy obiekt powstaje i kiedy jest niszczony, bo... robię to sam. Mogę więc powiedzieć dokładnie, czy w pewnej chwili to czy tamto jest utworzone, w jakiej kolejności jest alokowane i zwalniane oraz zagwarantować, że w danym momencie dany obiekt na pewno istnieje. Słowem - mam w pełni formalnie zdefiniowany czas życia obiektów. To rozwiązało problem, który miałem podczas finalizacji różnych modułów, a z którym nie sposób było inaczej sobie poradzić. Co za ulga! A już zaczynałem wierzyć, że singletony są OK...

Comments | #c++ #philosophy #software engineering Share

# Ostatni efekt

Sun
29
Apr 2007

Trochę filozofii: Mówi się, że koniec końców wszystko w komputerze sprowadza się do zer i jedynek. Wg mnie na takim poziomie, na jakim piszemy w językach wysokiego poziomu, wszystko (a przynajmniej dużo) sprowadza się do funkcji. Czy to będzie funkcja jednej czy wielu zmiennych, czy będzie operowała na liczbach czy całych wektorach, czy wielkości będą opisywały pozycję, kierunek, kolor, rozmiar czy jakieś zależności czasowe... Umiejętność opisania zależności wzorami to moim zdaniem klucz do programowania wszelkich efektów. W modelowaniu funkcji o takim kształcie, jaki akurat jest potrzebny bardzo pomaga Evaldraw.

Wracając na Ziemię: Wczoraj skończyłem ostatni efekt - Heat Haze, czyli falowanie powietrza pod wpływem ciepła. Zostaje teraz troche prac porządkowych i połączenie tego wszystkiego razem.

Heat Haze

Comments | #rendering #gallery Share

# Dalsze prace

Fri
27
Apr 2007

Dwa nowe efekty. Pierwszy to Feedback, czyli sprzężenie zwrotne. Dzięki niemu (zależnie od ustawionych parametrów) można uzyskać na przykład efekt upojenia alkoholowego (bardziej moim zdaniem realistyczny, niż stosowany najczęściej w grach Blur, czyli rozmycie) albo też Motion Blur (rozmycie ruchu):

Feedback - Motion Blur

Drugi to Lens Flare, czyli odblask od Słońca na soczewkach wirtualnej kamery. W przeciwieństwie do niespatchowanego Gothic 3 u mnie Słońce nie prześwituje przez teren i inne obiekty :)

Comments | #rendering #engine #productions #gallery Share

# Długi weekend

Wed
25
Apr 2007

Od dzisiaj mam (bardzo) długi weekend. Dawno nic nie pisałem... To znaczy tutaj nie pisałem, bo nowego kodu powstało sporo. Skończyłem materiały, światła i cienie. Jest oświetlenie Per Vertex i Per Pixel, jest Bump Mapping i kilka innych rzeczy, jest nawet Environmental Mapping. Nie ma tylko Parallax Mapping (stwierdziłem że jednak go nie zrobię), a cienie (Shadow Mapping) wyszły tak średnio (zwłaszcza LiSPSM, którego używam do świateł kierunkowych, trochę szwankuje).

Postanowiłem teraz wziąć się za Post Processing. Na pierwszy ogień poszły proste efekty zamalowania całego ekranu na jakiś kolor albo jakąś teksturą. Dzisiaj natomiast zrobiłem Bloom:

Bloom

Jeszcze jedno: Jeśli kiedyś rysując na całym ekranie quada albo jeszcze coś innego będziecie zachodzić w głowę dlaczego nie działa Vertex Shader, zamiast stracić godzinę na szukaniu błędu tak jak ja dzisiaj zapamiętajcie, że Vertex Shader po prostu nie uruchamia się, kiedy używamy wierzchołków przetransformowanych XYZRHW.

Comments | #rendering #engine #productions #gallery Share

# Poisson Disc Generator

Mon
23
Apr 2007

Poisson Disc is one of the best methods for determining places from which to sample some data, next to Grid, Random or Jittered methods. It prevents aliasing thanks to random distribution while preserving minimum distance between sample positions not to focus too many samples in a particular region. Unfortunately, an algorithm for generating such samples is slow and we don't know how many points we will manage to generate with specified minimum distance.

That's why I thought it would be useful to have an array of many numbers, each defining new Poisson Disc sample in the way that the more first samples you take, you still have a correct Poisson Disc samples but with more points and smaller minimum distance. I've coded a small console application for generating such arrays of 1D, 2D or 3D points in 0..1 range. I've also generated ready 1000-element arrays. Here you can find the details: PoissonDiscGenerator.

I've called it "Progressive Poisson Disc", described it in my master thesis [PDF, pl], used in my The Final Quest engine [pl] and also integrated into Math module of my CommonLib library.

Update 2023-11: As my colleague pointed out, taking only a small number of first samples (e.g. 16) from the array I generated doesn't make a good uniform distribution across the surface, so for that, I recommend to use some other method (e.g. samples from a grid + random jitter) or make your own implementation of this idea of "progressive Poisson Disc".

Comments | #productions #math #algorithms Share

Pages: > 1 ... 103 104 105 106 107 ... 150 >

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