•  

    Hej,

    Chciałem podrzucić aktalizację rozwoju mojego silnika do gier #clusek. Silnik ma już prawie 3 miesiące, ale ilość nowy rzeczy, która została dodana do silnika od ostatniego wpisu jest bardzo duża. Od ostatniego wpisu grafika bardzo się poprawiła i zawdzięcza to zmianom, które zostały wprowadzone:
    - Dodano obsługę normal map;
    - Dodano renderowanie do tekstury;
    - Zaimplementowano wsparcie HDR;
    - Wprowadzono efekty post processingowe (kilka tone mapperów, korekcja gamma);
    - Dodano możliwość modyfikowania stosu efektów post processingowy z pliku lub z gui;
    - Stworzono skrypt do przygotowywania silnika w wersji do dystrybucji dla użytkownika końcowego;
    - Przebudowano wygląd GUI.

    Dodatkowo wydałem pierwszą wersję silnika w postaci wykonywalnej, która jest dostępna tutaj. Nie mniej nadal bardzo rekomendowane jest budowanie silnika z kodu źródłowego, który jest dostępny tutaj. Budowanie z kodu zapewnia to, że zawsze mamy ostanią, najbardziej aktualną wersję, ale jednocześnie rozumiem, że nie każdy ma na komputerze narzędzia do budowania projektów w C++.

    Od razu zaznaczam, że na zdjęciu widać scenę wyrenderowaną bez antyaliasingu. Chciałbym dodać ponownie dodać ten efekt, ale nie jest to takie proste, ponieważ nie współgra to tak dobrze z efektami post procesingowymi, które teraz dodawałem. Poza tym, że chciałbym przez kolejny miesiąc dodać brakujący antyaliasing, to chciałbym również zaimplementować PBR, które pozwoli wejść na dużo wyższy poziom renderera. Chcę użyć algorytmy z UE4 oraz dodać pełną kompatybilność materiałów z Unity. Dodatkowo staram się dobrać wartości tak, żeby uzyskać materiały z PBR na poziomie Uncharted. Osiągnięcie poziomu Uncharted nie jest proste, ale jest już zaimplementowany bardzo podobny tone mapper.

    Jeżeli ktoś ma jakieś pytanie to zapraszam do pytania w komentarzach. Jeżeli będę umiał to chętnie odpowiem. Dodatkowo, jeżeli ktoś chce coś skrytykować konstruktywnie to zapraszam, ponieważ to bardzo dużo daje. Staram się każdą uwagę przemyśleć i jeżeli jest dobra to zaimplementować. Oczywiście nie wszystko jest takie proste (np. wyłączenie obsługi wyjątków ze względu na biblioteki).

    #programowanie #gamedev #gry #directx #grafikakomputerowa #clusek
    pokaż całość

    źródło: clusek_wrzesien_wykop.png

  •  

    Hej,

    Zanim przejdę do meritum mojego wpisu, to chciałem bardzo wam bardzo podziękować. Pod moim poprzednim wpisem udało mi się zebrać od was równo 700 plusów oraz ponad 100 komentarzy. Dało mi to ogromną motywację do dalszej pracy. Jeszcze raz wam za to wielkie dzięki mirki oraz mirabelki. Pomyślałem, że skoro jest tak duże zainteresowanie tego typu tematyką to chyba te wpisy powinny trochę zmienić swoją formę. Od teraz regularnie (+/- co miesiąc) będę publikował wpisy na temat rozwoju silnika oraz tego co sprawiło mi problemy w implementacji oraz co nadal nie działa tak jak bym chciał. Dodatkowo w komentarzach, jeżeli ktoś będzie miał pytania odnośnie implementacji, którejś z tych rzeczy, które zrobiłem od ostatniego wpisu to chętnie odpowiem. Na inne pytania z silnika też chętnie odpowiem, bo chciałbym podzielić się tą wiedzą, ale wiadomo jak to jest z pamięcią, po prostu mogę czegoś nie pamiętać. Tak więc, jeżeli kogoś interesuje któraś rzecz jak została zaimplementowana to zapraszam do pytania, bo jestem tutaj, by na nie odpowiedzieć (o ile będę tylko umiał). Poza tym, jeżeli ktoś znajdzie czas to zapraszam do przejrzenia kodu i wyrażenia swojej opinii oraz rad. Chętnie wprowadzę zmiany, żeby kod był jak najlepszy, ale wiadomo jak to jest... nie zawsze mam pomysł, a jak spojrzy ktoś z większym doświadczeniem w pisaniu gier lub C++ (na pewno jest tutaj dużo takich osób) to będę po prostu lepszym programistą, bo nauczę się na swoich błędach. Jestem otwarty na krytykę o ile jest konstruktywna.

    Wystarczy jednak tego wstępu (wyszedł strasznie długi), ponieważ dzisiaj mijają dokładnie dwa miesiące od kiedy tworzę mój silnik gier CLUSEK. Od ostatniego wpisu mineło pół miesiąca, ale był to czas bardzo pracowity dla mnie, szczególnie ze względu na długi weekend. Przez ten czas udało mi się zaimplementować poniższe rzeczy w silniku:
    - Gruntownie zrefaktoryzowano kod;
    - Dodano pełne wsparcie kontrolera Xbox 360/One;
    - Dodano obsługę przeźroczystości;
    - Usunięto model Nanosuit oraz dodano model samochodu;
    - Zmieniono skybox z modelu kuli (wczytywanego z pliku .fbx) na generowany (z poziomu kodu) sześcian;
    - Zredagowano plik README.md;
    - Dodano poziomy loggera;
    - Dodano nowe menu dla stanu myszki, klawiatury oraz gamepada;
    - Dodano możliwość konfiguracji prędkości poruszania kamerą z pliku oraz dedykowanego menu;
    - Poprawiono obsługę tagów;

    Refaktorozycja kodu postępuje. Zastosowałem już część rzeczy o której pisali niektórz po "Code Review", ale nie wszystko. Niektóre rzeczy zaimplementuje w przyszłości, a niektóre raczej nie ze względu na czas oraz na optymailzację. Wolę kod troszkę mniej czytelny, ale za to dużo szybszy oraz gotowy na zrównoleglenie na wszystkie wątki (taki na razie jeszcze jest). Kolejna sprawa, która była dość czasochłonna to przeźroczystność. Jest to bardzo skomplikowany temat, który już czuję, że będzie mi się odbijał przez długi czas. W skrócie nadal nie jest tak jak powinno być i czasem powoduje to, że przez szybę w samochodzie można zobaczyć na prawdę dziwne rzeczy. Walczę z tym i pewnie przez najbliższy czas będę nad tym długo siedział. Ogólnie nie jestem fanem przeźroczystości w grach, ponieważ tworzy to sporo problemów od deferred renderingu po optymalizację. Przeźroczystość wymaga bardzo skomplikowanego renderera, żeby działała bez żadnych problemów. Nie chcę wchodzić w szczegóły, ale jeżeli kogoś to interesuje to najwyżej mogę poruszyć co jest takie problematyczne w komentarzu. Poza tym, dodałem model samochodu i usunąłem ten z Crysisa. To też jest lekka katastrofa, ponieważ nie mam rozbudowanego shadera i to dopiero uwypukla jak ubogi jest ten silnik. Myślałem nad zaimplementowaniem PBR'a, ale... to zajmie mi pewnie dużo czasu, ponieważ jest tam pod spodem dużo trudnej matematyki i fizyki, jak odpowiednie zachowanie energii, BRDF, czy setki innych rzeczy. Inne rzeczy raczej poszły raczej gładko, a nie chcę na każdą poświęcać w tym wpisie 3-4 zdań, bo ten wpis będzie miał długość pracy magisterskiej, a to nie o to chodzi.

    pokaż spoiler Jeszcze raz wielkie dzięki za 700 plusów pod poprzednim wpisem! I proszę bardziej doświadczonych programistów gier/silników/rendererów o analizę implementacji rozwiązań, które zastosowałem w moim silniku oraz o uwagi, co poprawić na lepsze.


    KOD ŹRÓDŁOWY

    #programowanie #gamedev #gry #directx #grafikakomputerowa #clusek
    pokaż całość

    źródło: clusek_xbox_wykop_photo.jpg

Ładuję kolejną stronę...

Archiwum tagów