Bojkar\'s dev blog
kwi 15
Nowy feature
icon1 admin | icon2 projekty | icon4 04 15th, 2009| icon31 Comment »

Witam po krótkiej przerwie. Ostatnio postanowiÅ‚em dodać do edytora dość ciekawy feature a mianowicie animacje kamery. Dość przydatna rzecz np. do robienie cutscenek w grach czy do efektów w demach scenowych. WczeÅ›niej w starszych wersjach silnika animacjÄ™ kamery tworzyÅ‚em w zewnÄ™trznym programie 3D np. Lightwave i nastÄ™pnie zapisywaÅ‚em w jakimÅ› formacie i wczytywaÅ‚em już wczeÅ›niej zapisane key-e i tylko je “odgrywaÅ‚em”. Teraz postanowiÅ‚em zrobić obsÅ‚ugÄ™ animacji kamery we wÅ‚asnym edytorze. Narazie udaÅ‚o mi siÄ™ tylko zrobić prostÄ… kontrolkę  “timeline”, oraz interpolacje liniowÄ… key-ów (czyli tÄ… najprostszÄ… :) ). OczywiÅ›cie na tym nie pozostanÄ™. Już powoli pracuje nad interpolacja na krzywych, dokÅ‚adnie Hermite’a, ale o tym już innym razem. Dodatkowo umieszczam filmik, na którym można zobaczyć jak to teraz dziaÅ‚a. Czekam na opinie.

mar 17

Teraz jak już mam obsÅ‚ugÄ™ shaderów to grzechem by byÅ‚o nie wykorzystać ich do post processingu. Ale do tego brakowaÅ‚o mi jeszcze jednej rzeczy: szybkiego renderowania do tekstury. WczeÅ›niej już to robiÅ‚em ale za pomocÄ… wolnych sposobów takich jak np. glCopyPixels. Na szczęście OpenGL wprowadziÅ‚ coÅ› o wiele szybszego, mianowicie: Frame Buffer Object. Rozszerzenie te daje nam możliwość “off screen” ‘owego renderowania sceny do tekstury ale nie tylko. Możliwy jest również zapis bufora głębokoÅ›ci czy stencil’a. UdaÅ‚o mi siÄ™ to zaimplementować do mojego renderera, a przy okazji napisaÅ‚em do testów, trzy proste efekty post processing’owe: bloom, grayscale i sephia. Poniżej zamieszczam screeny prezentujÄ…ce ten efekt (w lewym dolnym rogu jest renderowania scena przy pomocy FBO do maÅ‚ego kwadracika, w którym te efekty widać, a w tle scena renderowana “normalnie”)

mar 12

Jako, że ostatnio podłączyłem do silnika shadery, postanowiłem znaleźć jakieś wygodne narzędzie do ich tworzenia. Postanowiłem przetestować kilka programów: Typhoon ShaderDesigner 1.5.9.4, Nvidia Fx Composer 2.5 oraz AMD RenderMonkey 1.82. Głównymi cechami które bym chciał aby taki program posiadał, są: oczywiście obsługę GLSL, szybkość działania, prosty lecz posiadający sporo możliwości (zmiana mesha, dodawanie zmiennych, zarządzanie materiałami, itp), podpowiadanie składni.

Zacznijmy wiÄ™c od pierwszego programu czyli Typhoon ShaderDesigner w wersji 1.5.9.4. To byÅ‚ mój pierwszy program do tworzenia shaderów z jakim siÄ™ spotkaÅ‚em. Z caÅ‚ej trójki, program ten może siÄ™ pochwalić najlżejszÄ… instalkÄ…, która “waży” tylko 10mb. Niestety wiąże siÄ™ to z kilkoma minusami ale o tym za chwile. Program odpala siÄ™ w miarÄ™ szybko, zaraz po uruchomieniu ukazujÄ™ siÄ™ nam na pierwszy rzut oka proste i intuicyjne GUI. Niestety jak siÄ™ zagłębimy okaże siÄ™, że dodanie uniformów, czy tekstur już nie jest takie intuicyjne a wrÄ™cz dość ‘dzikie”. Wszystkie okna sÄ… oczywiÅ›cie dokowane, ale zmiana ich organizacji jest strasznie toporna, a do tego po zmianie i ponownym odpaleniu programu, uÅ‚ożenie jest dalej standardowe. Samo pisanie kodu oraz modifikacja materiałów jest bardzo fajna. Edytor posiada podpowiadanie skÅ‚adni, które dziaÅ‚a delikatnie mówiÄ…c dziwne, żyje swoim życiem, czasami zadziaÅ‚a a czasami nie. Jako meshe mamy kilka gotowych obiektów oraz możemy dodać wÅ‚asny ale niestety w ich wÅ‚asnym formacie (*.gsd) co w sumie dyskwalfikuje tÄ… opcjÄ™. Dużym minusem tej aplikacji jest to, że nie jest już po prostu rozwijana. PodsumowujÄ…c: proste, toporne, do napisania na szybko czegoÅ› prostego ale do ciekawszej zabawy imho nie bardzo.

Kolejna aplikacją, którą testowałem był Fx Composer firmy Nvidia. Jest to najcieższą aplikacja z całej trójki (waga instalki 230mb), co również widać po szybkości odpalania aplikacji. Na moim już lekko leciwym sprzęcie potrafi się odpalać dobre pare sekund co nie jest fajne. Jak już poczekamy te kilka sekund ukazuje się nam całą aplikacja, od razu widać, że mamy do czynienia z czymś poważniejszym niż ShaderDesigner GUI jest dość mocno rozbudowane a przy tym w miarę intuicyjne. Tutaj również posiadamy dokujące się okna ale ich konfiguracja jest o wiele łatwiejsza i dokładniejsza, bez problemu ułożymy sobie układ do własnych potrzeb. Na pierwszy rzut oka widać rozbudową listę assetów (światła, meshe, tekstury itp), rozbudowane edytory materiałów oraz tekstur. Przejdźmy do najważniejszej rzeczy czyli edytora kodu. Kolorowanie składni oraz numerowanie linii kodu jest niemal identyczne jakie mamy w Visual Studio, czyli ładne i czytelne. Edytor posiada podpowiadanie składni i w przeciwieństwie do ShaderDesignera działa bardzo dobrze. Jednak mimo wielu zalet program ma jeden duży minus, który go dyskwalfikuję w moim przypadku: brak standardowej obsługi GLSL. Dlatego też postanowiłem spróbować jeszcze jednego programu:

AMD RenderMonkey. Powiem szczerze, że fimie Nvidia bardziej cenie od firmy ATI i majac nie za dobre doÅ›wiadczenie ze sterownikami ATI oraz ich kartami graficznymi za którymi również nie za bardzo przepadam, myÅ›laÅ‚em że ich soft jest sporo gorszy od Fx Composera. Ale pozory mogÄ… mylić i tak byÅ‚o w tym przypadku. Waga instalki jest po Å›rodku reszty programów – 99mb, czyli do “przeÅ‚kniÄ™cia”. Minusem jest to, że trzeba mieć konto (darmowe) na amd aby móc pobrać program (dodatkowo nie wiem czemu ale z ich serwerów Å›ciÄ…gaÅ‚o mi Å›rednio tylko 30kb/s). Program odpala siÄ™ równie szybko jak ShaderDesigner. Interfejs graficzny przypomina mi GUI z Visual Studio 6.0 czyli bez polotu ale użytecznie. Tutaj również mamy okna dokowalne, czyli mamy dowolnÄ… możliwość zmiany poÅ‚ożenia oraz rozmiaru gui.  Na pierwszy rzut oka mamy maÅ‚o opcji, ale na szczęście to tylko zÅ‚udzenie. W prosty i intuicyjny sposób możemy dodać tekstury, modele (tutaj możemy dodać dowolny mesh w popularnych formatach, np: 3ds, obj), zmienne, itp. Niestety można trochÄ™ ponarzekać na edytor kodu. Pierwsza rzecz to kolorowanie skÅ‚adni. SÅ‚owa kluczowe sÄ… Å‚adnie kolorowane, podobnie jak w Visual studio na kolor morski, ale nie które staÅ‚e takie jak np. gl_Position kolorowane na różowo to trochÄ™ przesada… co najgorsze nie udaÅ‚o mi siÄ™ znaleźć opcji zmiany kolorów kolorowania, także musimy żyć z tym różowym kolorem. Podpowiadanie skÅ‚adni jest niestety też nie za najlepsze. Ogólnego podpowiadania nie udaÅ‚o mi siÄ™ uruchomić, natomiast podpowiadanie skÅ‚adowych obiektów dziaÅ‚a już ok.  Brakuje mi też numerowania linii kodu, i też nie udaÅ‚o mi siÄ™ znaleść w opcjach włączenie tego.

Podsumowując wybrałem RenderMonkeya. Po pierwsze obsługują dobrze GLSL, działa dość szybko (w przeciwieństwie do Fx Composera), jest prosty a zarazem posiada dużo potrzebnych opcji. Ma dobrze rozbudowane dodawanie tekstur oraz zmiennych. Ten program zrobił na mnie największe wrażenie i będę go używał.

P.S. Namawiam wszystkich koderów do brania udziału w SCENE.PL Code Compo. Ja też postaram się wziąść udział i na pewno pochwale się swoja produkcją. Szczegóły: http://www.scene.pl/

mar 1

Wczoraj udało mi się podpiąć shadery. Do ich pisania będę używał języka GLSL, podpięcie obługi glsl-a okazało się bajecznie proste. Teraz w końcu będzie można dodać jakieś ciekawe efekty do renderera. Poniżej przykładowy screen z przykładowym shaderem.

Wczoraj dostałem od kolegi fajne porównanie na temat Javy:

“Mówienie, że Java jest dobra, bo dziaÅ‚a na wszystkich systemach jest jak mówienie, że seks analny jest dobry, bo dziaÅ‚a u obu pÅ‚ci.”

lut 28
Demoscena
icon1 admin | icon2 demoscena | icon4 02 28th, 2009| icon3No Comments »

Demoscena… Zapewne każdy coÅ› nie coÅ› o niej sÅ‚yszaÅ‚ lub miaÅ‚ okazjÄ™ brać czynny udziaÅ‚ w tym “przedsiÄ™wziÄ™ciu”, ja na szczęście zaliczam siÄ™ do tej drugiej grupy. DemoscenÄ… interesowaÅ‚em siÄ™ od dawien dawna, niestety mój dorobek scenowy jest mizerny. ByÅ‚o spowodowane to tym, iż gdy byÅ‚o dużo osób, którym siÄ™ chciaÅ‚o (graficy, muzycy, itp) to ja miaÅ‚em za maÅ‚e umiejetnoÅ›ci na jakieÅ› demko czy intro natomiast gdy mi wzrosÅ‚y umiejÄ™tnoÅ›ci to już tych ludzi nie bylo. DobrÄ… stronÄ… tego wszystkiego jest to, że w tym czasie polska scena jeszcze żyÅ‚a peÅ‚nÄ… piersiÄ… (no dobra 3/4 piersi), powstawaÅ‚o sporo magów (BudyÅ„, The Beast, itp), demek, interek, kanaÅ‚ ircowy #polishcene byÅ‚ opanowany przez sporÄ… liczbÄ™ ludzi a nie jak teraz botów, ba nawet byÅ‚o radio scenowe (scene fm) prowadzone przez Urala, nawet mam gdzieÅ› jeszcze na hdd zgrane audycje (jeÅ›li ktoÅ› jest zainteresowany, prosze o kontakt). Jeszcze udaÅ‚o mi siÄ™ nawet zaÅ‚apać na snailowanie, do dzisiaj w szafie mam pudeÅ‚ko ze snailami, poklejonymi kopertami i coverami. Ten czas wspominam bardzo miÅ‚o, tym bardziej że od tamtej pory zaczÄ…Å‚em siÄ™ mocno interesować programowaniem grafiki. PamiÄ™tam jak dziÅ› jak wchodziÅ‚em na #polishscene i zagadaÅ‚em do kodera, niejakiego Nethera (niestety kontaktu już z kolega nie mam, a tego na 99.999% nie czyta), które później mÄ™czyÅ‚em mniej lub wiÄ™cej gÅ‚upimi pytaniami o OpenGl-u. Aż siÄ™ Å‚ezka w oku krÄ™ci…

Podczas mojego “scenowania” z tego co pamietam udaÅ‚o mi sie wypuÅ›cić dwie prodki: demo 16a (tak byÅ‚o takie compo), oraz music diska. Z tego udaÅ‚o mi siÄ™ zachować tylko demo16s (screeny i download poniżej), a music disk niestety gdzieÅ› przepadÅ‚ (jeÅ›li znajdÄ™ na pewno tutaj wrzucÄ™). Warto zaznaczyć, że ten music disk byÅ‚ mojÄ… pierwszÄ… produkcjÄ… scenowÄ… i napisanÄ… jeszcze w Delphi!

,

Link do ściągniecia demka: tutaj

lut 27
Chwila przerwy…
icon1 admin | icon2 projekty | icon4 02 27th, 2009| icon35 Comments »

Witam wszystkich. Pewnie część z Was myślała, że już nie będę robił wiecej wpisów ze względu na przerwę w postach, niestety była ona spowodowana pracą, uczelnią, sesją, lenistwem i kilkoma innymi rzeczami. Jako, że miałem wieczór mogłem również się zająć moim drugim hobby czyli motocyklem. Jeszcze tylko czeka mnie wymiana opon oraz czekanie na wiosne, już nie mogę się doczekac.

Przez czas w którym nie pisaÅ‚em, popracowaÅ‚em chwilkÄ™ nad edytorem, dodaÅ‚em prosty lecz fajny efekt jakim jest flara oraz dodaÅ‚em kilka ulepszeÅ„. Dodatkowo PaweÅ‚ zrobiÅ‚ mi scene, na której powstanie swego rodzaju techdemo silnika. Tu co na screenie możecie zobaczycz to “zajawka” mapy, oraz edytora. Oprócz tego do portolio w dziale web-developing dodaÅ‚em 2 nowe pozycje.

Dzisiaj w pracy znalazÅ‚em bardzo ciekawego linka o jeszcze ciekawszym tytule: “Microsoft Excel: Revolutionary 3D Game Engine?”. MyÅ›le, że tytuÅ‚ mówi sam za siebie, link do strony: http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php?page=1

lut 7
Szycie techa…
icon1 admin | icon2 projekty | icon4 02 7th, 2009| icon3No Comments »

Bardzo maÅ‚o czasu niestety mogÄ™ poÅ›wiecić na “szycie techa” do silnika, a co bÄ™dzie jak przyjdzie wiosna i bedÄ™ mógÅ‚ w koÅ„cu SV-ke wyprowadzić z garażu? Nic może dziewczyna zrozumie jak bÄ™dÄ™ do niej później przyjeżdzaÅ‚ ;) UdaÅ‚o mi siÄ™ na szczęści napisanie podstawowych rzeczy takich jak serializacja, RTTI (to jeszcze muszÄ™ dopracować) oraz ostatnio properties’ow. C++ jest dobrym jÄ™zykiem, jednak trochÄ™ starym i (nie)stety nie ma wbudowanych tych mechanizmów (no dobra RTTI jako takie ma). Teraz całą mapÄ™ zapisujÄ™ w kilku linijkach a nie jak wczeÅ›niej gdy zapisywaÅ‚em mape do wÅ‚asnego tekstowego formatu i zajmowaÅ‚o to trochÄ™ wiÄ™cej niż kilka linijek :)

void bMap::Save(string path)
{

bArchive arch;
arch.CreateArchive(path, bArchive::M_WRITE);


Write<bActor>(&arch, m_actors);

arch.CloseArchive();
}

A uzupełnienie property grida w edytorze wygląda w ten sposób (oczywiście wcześniej zmienne musze zarejestować):

void bMainWindow::UpdatePropertyGrid()
{
bActor *selectedActor = m_opengl->m_map.GetSelectedActor();if(selectedActor != NULL)
{
PropertiesMap properties = selectedActor->m_properties.GetProperties();

PropertiesMap::iterator it;

for (it = properties.begin(); it != properties.end(); it++ )
{
string name = (*it).first;
string value = (*it).second->GetValue();
m_propertyGridManager1->SetPropertyValue(name, value);
}

}
}

Jak widać teraz wygląda to o wiele bardziej elegancko, a co najważniejsze wiele dodatkowych rzeczy mogę zrobić o wiele szybciej.

P.S. Coś wordpress źle formatuje kod.. Na szczęście nie długo bę™dą™ mógł kod prezentować w owiele lepszej formie, ale o tym w następnym poście.

lut 2
Projekt 1.
icon1 admin | icon2 projekty | icon4 02 2nd, 2009| icon3No Comments »

Witam ponownie. Jako każdy szanujÄ…cy sie programista grafiki tak i ja tworze wÅ‚asny “silnik” do gier. Jest to mój gÅ‚owny projekt i w zasadzie jedyny. Aktualnie to już chyba 4 czy 5 jego wersja. Silnik pisany jest w C++, do renderowania używam OpenGL (oczywiÅ›cie jest możliwość bezproblemowego rozszerzenia renderera o DirectX), jako silnik fizyczny doskonaÅ‚ego PhysX, do dźwiÄ™ku OpenAL a GUI do edytorów tworze w wxWidgets. Jako “przedsmak” wrzucam Wam screena z edytora. W kolejnych notkach postaram siÄ™ coÅ› wiecej o tym napisać.

Editor