Entries for tag "rendering", ordered from most recent. Entry count: 187.
# 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.
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):
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:
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
# Substractive Particles
Fri
13
Apr 2007
Efekty cząsteczkowe rysuje się zwykle addytywnie - czyli z BlendOp=ADD, SrcBlend=SRCALPHA, DestBlend=ONE. Chcąc uzyskać inne efekty niż świecenie, np. dym albo kurz, uciekamy się czasem do zwykłego alfa-blendingu, czyli BlendOp=ADD, SrcBlend=SRCALPHA, DestBlend=INVSRCALPHA. Wtedy jednak cząstki trzeba sortować wg odległości od kamery.
Ja wymyśliłem sobie kiedyś, że możnaby rysować cząstki subtraktywnie, czyli z BlendOp=REVSUBTRACT, SrcBlend=SRCALPHA, DestBlend=ONE. Odejmowanie tak jak dodawanie jest przemienne, więc nie trzeba niczego sortować (tylko nie łapcie mnie za słówka - tu jest grafika nie matematyka :) a wygląda to, jak się okazuje, całkiem nienajgorzej. Może się przydać do robienia wspomianego dymu, kurzu oraz wszelkich cząstek "mrocznej magii". Trzeba tylko pamiętać że tekstura używana przy takim blendingu musi mieć *odwrócone* kolory - na przykład ta tutaj, żeby wyglądać jak ciemnobrązowa, w oryginale jest jasnoniebieska.
# HLSL + Point Sprites
Thu
12
Apr 2007
Point Sprites to fajny mechanizm. Dzięki niemu możemy rysować D3DPT_POINTLIST, a każdy wierzchołek automagicznie zamienia się w oteksturowany quad zwrócony zawsze przodem do kamery. To jest doskonałe do pisania efektów cząsteczkowych (dopóki nie chcemy mieć wielkich albo obracających się cząsteczek).
Ostatnio zmuszony byłem (przez brak dostępu do osobnych macierzy widoku i rzutowania) zaprzęc do pracy HLSL i wreszcie udało mi się dojść do tego, jak połączyć shader z Point Sprites. Tutaj macie przykład: HLSL_PointSprites.fx. Tak więc:
float Size : PSIZE, np. wg wzoru z
DirectX SDK, rozdział "Point Sprites" (ja stosuję A=0, B=0, C=1).
float2 Tex : TEXCOORD0.
DIFFUSE.
# Evaldraw
Wed
11
Apr 2007
Widziałeś wiele filmików, dem i myślisz, że nic cię już nie zdziwi? Zobacz Evaldraw! Kim jest jego autor - Ken Silverman - nie trzeba chyba wyjaśniać. Dość powiedzieć, że to autor silnika Build Engine napędzającego m.in. Duke Nukem 3D oraz autor innowacyjnego silnika wokselowego Voxlap.
Wykorzystana w tym problemie biblioteka Evallib (też oczywiście jego autorstwa), dostępna dla C++ pod Windows w postaci biblioteki OBJ+H (niestety bez źródeł), przyjmuje łańcuch znaków z kodem w specjalnym języku wzorowanym na C, a zwraca... wskaźnik do funkcji skompliowanej do najprawdziwszego kodu natywnego, którą można normalnie wykonywać i która działa niezwykle szybko.
Evaldraw natomiast to program... do wszystkiego. Początkowo podchodziłem do niego sceptycznie obawiając się o jakość jego interfejsu użytkownika albo dokumentacji. Teraz jestem jednak naprawdę zachwycony jego możliwościami jak i wykonaniem. Choć potrafi się czasami wysypać, działa nieźle i przede wszystkim bardzo wydajnie. Mimo własnego interfejsu jest też całkiem intuicyjny. Jest jednocześnie tak potężny, że możnaby o nim napisać długi tutorial gdyby nie to, że... tutaj nie ma się czego uczyć! Całość jego obsługi i możliwości można opanować w ciągu 1-2 godzin.
Spośród możliwości dostęnych z poziomu wbudowanego języka wymienić warto: Rysowanie funkcji 1, 2, 3, 4 zmiennych (jako wykres, kolory na płaszczyźnie, a także woksele w przestrzeni - niestety nie ma siatek) - także animowanych, wczytywanie dźwięków WAVE i obrazków w różnych formatach graficznych (jako funkcje które można swobodnie próbkować), obsługa klawiatury i myszy, bezpośrednie rysowanie grafiki 2D i 3D (OpenGL), synteza dźwięku, wykorzystanie systemowego syntezatora mowy i wiele, wiele innych.
Warto przejrzeć wszystkie 97 dołączonych przykładów, by przekonać się np. jak wygląda Snake 3D, a także zobaczyć jak można napisać niezwykły efekt czy nawet małą grę w kilkudziesięciu liniach kodu. Oprócz zabawy i wywoływania opadu szczęki Evaldraw może się przydać np. do modelowania różnych funkcji. Zawsze brakowało mi dobrego, darmowego programu do rysowania wykresów.
Comments | #rendering #tools #software Share
# Raytracer w SADOL-u
Tue
03
Apr 2007
Nigdy bym się nie spodziewał, że znajdzie się ktoś tak zakręcony żeby pisać w ezoterycznym języku SADOL, który wymyślił nooga, a zaimplementowałem ja jako interpreter Badly Developed SADOL Machine 2. Okazuje się, że nooga nie tylko poprawił błędy w mojej maszynie i napisał translator do języka o trochę znośniejszej składni, ale i napisał w SADOL-u... raytracer. Zobaczcie sami:
Comments | #humor #rendering #warsztat Share
# DirectX Ops
Fri
16
Mar 2007
W skład pakietu DirectX SDK wchodzi m.in. ciekawe narzędzie, któremu dziś przyjrzałem się bliżej, a z którego chyba niewiele osób korzysta. Chodzi o dxops.exe. Ten napisany w C#, konsolowy programik "karmi się" skryptami zapisanymi w plikach tekstowych w prostym języku, w którym kolejne instrukcje mogę wczytywać, zapisywać oraz przetwarzać tekstury (we wszelkich obsługiwanych przez D3DX formatach) oraz siatki (w formacie X). Pośród możliwości programu warto wymienić:
Nie jest to w sumie nic ponad możliwości dostępne z poziomu funkcji D3DX, ale ich udostępnienie jako narzędzia nie wymagającego pisania kodu czyni ten program godnym uwagi.
Niestety z nieznanych mi przyczyn dxops źle generuje normalne dla moich siatek eksportowanych do formatu X z Blendera. Pozostaje więc NVMeshMender, który niestety też nie jest idealny (co pokazałem na załączonym zrzucie ekranu).