O nowinkach u Charibo słów kilka

•czerwiec 15, 2009 • Komentarzy: 7

Hej!

Oto minęły dwa miesiące od poprzedniej notki, licznik odwiedzin spada nieubłaganie w dół, więc trzeba coś na ten temat poradzić ( ;) ). NIe pisałem z dwóch powodów. Po pierwsze, nie miałem o czym. Po drugie zaś, w związku z końcem roku szkolnego (oraz, naturalnie, początkiem wakacji) cierpię na brak czasu. Wyjazdy, spotkania ze znajomymi i tzw. life sprawiły, że od dobrych pięciu weekendów nie miałem czasu przysiąść nad kodem, ani nad komputerem w ogólności. Tym niemniej, napisałem nową część kursu Direct3D – Staje się jasność – implementacja modeli oświetlenia – traktującą o implementacji oświetlenia diffuse, oraz specular (wg. Phonga i Blinna).

Drugą nowością jest fakt, iż zrezygnowałem z funkcji redaktora WMaga. Nie jest mi szczególnie przykro, że zostałem o to poproszony, a wręcz przeciwnie – cieszę się, że pismo się rozwija. Patrząc zaś na dzieło Capada, widzę że ekipa nie próżnuje, a Mag dostał “kopa”, mówiąc kolokwialnie.

Mój brak czasu spowodowany był też, tutaj muszę się przyznać, graniem w gry kiedy tylko miałem chwilę czasu. Spowodowane było to zakupem XBoxa 360 – konsola podoba mi się bardzo, a komfort grania na telewizorze, siedząc na kanapie, czasami z rodziną, z padem w ręku jest znacznie większy niż na klawiaturze, przed monitorem. Poza tym, XBox Live to marzenie – dema gier, wypożyczalnia filmów – wszystko na telewizorze, bez kombinowania; właśnie tak jak być powinno.

Na koniec tej i tak przykrótkiej notki wypadałoby wrzucić cokolwiek. Wrzucam więc starego screena, z bardzo-testowej-wersji programiku nad którym pracowałem kiedy jeszcze miałem czas:

 

image

Trochę pracy, trochę rozrywki i duży fail.

•kwiecień 11, 2009 • Komentarzy: 2

Hej!

Witam was wszystkich po kolejnej długiej przerwie. Licznik odwiedzin per dzień nieubłaganie idzie w dół, więc oto mam dla was, drodzy czytelnicy kolejną porcję nudnych jak flaki z olejem przemyśleń.

Tak oto pojechałem, wraz ze szkolną wymianą, do kraju tulipanów, wiatraków i używek – Holandii. Dane na szczęście mi było podziwiać jedynie tulipany i wiatraki, przy czym to pierwsze głównie na obrazkach (pory kwitnienia itd.). Ale głównym powodem, dla którego kogokolwiek mogłyby te bzdety interesować jest WMag. Wyjeżdżając, zostawiłem opiekę nad zinem innym. Niestety, przez parę zawirowań oraz zbiegów okolicznośći, które wyjaśniam dokładnie w tym[1][2] wątku forum, magazyn przechodzi przez trudny okres.  Dość powiedzieć, że marcowy WMag nie ukazał się, a przyszłość pisemka nadal jest dla mnie mglista, z powodu braku etatowego składacza.

Poza tym, zająłem się trochę silnikiem. Przede wszystkim, przepisałem cały renderer na Deferred Shading. Dałem się skusić, głównie prezentacją NecroVisioN na tegorocznym IGK. Jak dotąd jestem z rozwiązania zadowolony (chociaż jeszcze nie walczyłem z jednym z większych problemów – Antialiasingiem ;P ). Trochę sztucznie ograniczam target do Shader Model 3 (MRT, oraz ogólna zasobożerność technologii), jednak wydaje mi się to do przeżycia, skoro i tak jak dotąd piszę ten silnik dla siebie.  Przy okazji udowodniłem sobie, że architektura mojego tworu jest całkiem dobrze przemyślana – zmiana renderera wymagała jedynie kosmetycznych zmian w API (głównie w części jego odpowiedzialnej za postprocessing – znacznie się to uprościło).

Kiedy już miałem dosyć kodu renderera (a było parę takich chwil :P ), zajmowałem się edytorem. Nie jest to szczyt techniki, ale jest to mój pierwszy tool tego typu. Jest on napisany w, modny ostatnio sposób, jako klient do serwera – gry (a więc gra po prostu renderuje w oknie edytora, całą logikę zostawiając po stronie własnego kodu) Wykorzystuję komunikację opartą o Named Pipes. Rozwiązanie to podoba mi się, chociaż nie jest pozbawione wad. Zaletą jest to, że nie duplikuje się żaden kod między edytorem a grą.

Jak dotąd, napisane mam jedynie prosty edytor konfiguracji (widoczny z prawej), oraz równie prosty edytor shaderów (jak dotąd jest to edytor raw plików .fx. Docelowo nie będzie to tak wyglądać. :P). Oczywiście, jeśli potrzebujemy, każdą zakładkę możemy zamknąć lub schować, dzięki użyciu DockPanel Suite. Jednakowoż, mimo że całość jest nieskomplikowana, narzędzie znacznie ułatwia debugowanie – możliwość dostrajania parametrów aplikacji oraz edytowanie shaderów w realtime w trakcie działania programu znacznie przyśpiesza cały proces.

Na koniec, mały screen z owego edytora. Grafika to stworzona w Milkshape 3D sfera, oteksturowana przykładowymi kamyczkami z DX SDK, oświetlona jednym światłem punktowym Blinna.

image

Compoty i IGK

•marzec 16, 2009 • Komentarzy: 5

Hej!

Ostatnimi czasy odbyły się dwa Compo, w których brałem udział. Pierwszym jest Scene.pl Code Compo. Napisałem na nie intro. Planowałem, że będzie to 4k, oryginał trwał coś ponad półtorej minuty, było parę różnych scen, trochę pracy kamerą – całość ważyła ~3kb. Niestety, nie zdążyłem napisać synthu, więc w ostatni dzień tego konkursu postanowiłem obciąć intro do 2k – w których to karygodny brak dźwięku jest w miarę wybaczalny.

Efekt jest mizerny, dlatego nazwałem swoją pracę CheckerFAIL ;). W każdym razie, cięcie rozmiaru zabrało parę ciekawych scen; nie miałem również czasu na dobre zsynchronizowanie, dlatego przejścia są – delikatnie mówiąc – biedne. W każdym razie, dla tych którzy naprawdę mają ochotę, moja praca (jak również całą reszta) do ściągnięcia tu. :)

Poza tym, odbyło się 3h Compo w serwisie gamedev.pl. Tutaj frekwencja była aż porażająca, bo doszło aż 28 prac. W takim tłoku również nie liczę na żadne punkty, ale krótkie Compo to frajda co nie miara, więc cieszę się że wziąłem udział. :) Jestem również szczególnie dumny z tego, że udało mi się narysować dosyć fajne krowy i świnie – własnoręcznie – oraz dograć samemu improwizowaną melodyjkę na gitarze. :D

Trzecim punktem tej notki (może tego nie widać, bo to czwarty akapit) jest konferencja IGK. Tutaj właściwie wszystko co mogło być napisane zostało napisane na innych blogach i na innych serwisach, od siebię tylko powiem, że serdecznie zapraszam. :) Ja oczywiście wybieram się, a ewentualnie zainteresowani wspólnym wyjazdem poznaniacy niechaj wiedzą, że razem z bs.mechanikiem wyjeżdżamy z P-ńa w nocy z czwartek na piątek, pociągiem relacji Poznań – Terespol o 2:20. :)

Na zakończenie po screenie z moich prac na Compo. :)

image  image

image

Trawa

•luty 27, 2009 • Komentarzy: 8

Hej!

Skoro założyłem sobie, iż będę pisał o największych nawet bzdurach, byleby pisać jakiekolwiek notki, oto jest – trzecia notka w Lutym. :P

Tak więc przez ostatnie parę dni pracowałem nad trawą. Pomyślałem sobie, że trawę chciałem napisać od dawna, a jednak wydawała mi się prosta i zawsze odkładałem te plany. Wczoraj jednak wziąłem się w garść – tak powstało coś takiego:

image

Dorzuciłem jeszcze parę drzewek ściągniętych (znaczy – ukradzionych) z jakieś strony internetowej, bo sama łąka pełna trawy wyglądała pusto. ;)

W każdym razie, sprawa okazała się nie tak banalna – ponieważ miałem problem projektowy. Na początku rysowałem trawę z włączonym Alpha Blendingiem i wyłączonym zapisem Z. Jednak wtedy trzeba sortować pojedyńcze kępki według odległości od kamery (od tył) – co też oznacza, że musimy rysować je osobnymi DIP-ami, albo pakować do dynamicznych VB/IB co klatkę. Oba rozwiązania średnio mi się podobały pod względem wydajnościowym. Jednak, jako że nie wpadłem na nic lepszego – pakuję wszystkie kępki do jednego bufora w preprocessie, a wyświetlam z wyłączonym blendingiem i włączonym ZWrite – używając jedynie Alpha Testu. Nie wygląda to gorzej, a lepszego pomysłu na rozwiązanie tego problemu nie mam. W arcie opisującym tworzenie trawy w GPU Gems w ogóle o tym zagadnieniu zaś nie piszą. :)

Na koniec notki, mała dygresja. Wzorując się na Gynvaelu zwracałem ostatnimi czasy na frazy pod jakimi wyszukiwarki podwały adres mojego bloga. Spośród wielu zwykłych, znajdują się dwie perełki – rysowanie urządzeń, oraz coś, co kompletnie mnie zaskoczyło: vertex shader za darmo. Oto pragnę uświadomić każdego, kto odwiedza mojego bloga a jeszcze o tym nie wie – jeśli kiedykolwiek płaciliście za możiwość pisania własnych vertex shaderów – zostaliście oszukani. :P

Compo 2h i Screen Tygodnia

•luty 21, 2009 • Komentarzy: 6

Hej!

Na początek mała dygresja – tą i poprzednią notką postanowiłem przełamać trochę konwencję tego bloga. Od dzisiaj nie będę pisał tu o tym, co działo się miesiąc temu jednocześnie oszukując was że nie miałem czasu pisać (no dobra, zazwyczaj nie oszukuję, po prostu nicnierobienie pożera cały mój czas i faktycznie go nie mam). :) Dlatego też możecie spodziewać się notek o tym, o czym tylko da się napisać. ;)

Oto więc mniej-więcej w połowie lutego meehav zorganizował Compo 2h. Szlachetna ta inicjatywa tym razem nie spaliła na panewce i udział wzięło 11 (!) osób. Mi przyszło zająć zaszczytne trzecie miejsce, wespół z naisho. Aby to osiągnąć wystarczyło D3DXCreateTeapot i trochę klepania kodu, którego nigdy w  życiu nikomu bym nie pokazał – z tej mieszanki wyszedł taki oto arkanoid:

image

Gra moja jest o tyle dopracowana i grywalna, że da się w nią przegrać – co nie jest wcale takie oczywiste. :)

scrn

Drugim niusem jakim chcę się podzielić jest to, że zaimplementowałem futro. Nie byłoby w tym nic ciekawego, gdyby nie to, że postanowiłem z tegoż futra wrzucić screen na Warsztat – w ciągu paru godzin uzyskał on 2k punktów stając się Screenem Tygodnia. Jako że screen jest w gruncie rzeczy brzydki, to czuję się zobligowany zaznaczyć, że nie mam z tym nic wspólnego ;P

Futro natomiast zaimplementowałem metodą Shells and Fins – polega ona na “wyciąganiu” geometrii wzdłuż normalnej, a następnie teksturowaniu jej odpowiednio spreparowaną teksturą wolumetryczną – to shells (nieudolne tłumaczenie – skorupki). Często dodaje się również tzw. fins, czyli żeberka. Są to “poprzeczne” trójkąty wystające z siatki, z nałożoną teksturą sierści. Mają one za zadanie maskować artefakty powstałe przez extrusion  geometrii.

Na koniec tej notki, dla porównania z efektem końcowym, pierwsza próba z futrem.

// Disclaimer: screen ma charakter humorystyczny. Jego biedność nie może być podstawą do naśmiewania się z autora. :P

image