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 ... 94 95 96 97 98 ... 150 >

# Shadery a sprawa preprocesora

Sun
19
Aug 2007

Fakt nr 1 - shadery warto pisać w HLSL albo innym tego typu języku. Kompilatory generują dobry kod, więc nie ma sensu babrać się w czystym asemblerze. Fakt nr 2 - shaderów potrzeba wiele. Najlepiej, żeby można było generować nowe shadery z różnych kombinacji jakiś swoich ustawień. Niektórzy radzą sobie bez tego, ale ja nie wyobrażam sobie jak. Shadery zastępują przecież niektóre ustawienia renderowania z dawnego nieprogramowalnego potoku i tak też na nie patrzę - jak na własny potok sterowany ustawieniami. Mają przy tym tą zaskakującą na początku nauki cechę, że nie można ich łączyć - na raz może być ustawiony jeden shader, który musi zawierać wszystko, co jest do zrobienia na wierzchołku albo pikselu.

Rozwiązaniem jest dołączenie do gry źródła shadera (np. pliku FX) i jego kompilacja w czasie ładowania albo w czasie samej gry, w razie potrzeby, z odpowiednimi ustawieniami. Jak odwzorować to w kodzie shadera? Opcje są dwie, a nawet trzy.

Ta, która dla mnie odpada natychmiast to skorzystanie z instrukcji warunkowych Static Branching. Po co marnować cenny czas na instrukcje sprawdzania warunku, który zawsze będzie niespełniony, jeśli można wygenerować osobny shader, który danego kodu po prostu nie zawiera?

Opcja pierwsza to wstawienie do kodu dyrektyw warunkowych preprocesora typu #ifdef (OPCJA == 1), gdzie OPCJA będzie makrem przekazywanym jako parametr podczas kompilacji shadera. Opcja druga to wstawienie do kodu warunków typu if (OPCJA == 1), gdzie OPCJA również będzie makrem. Obydwa rozwiązania wygenerują równie dobry kod. To drugie wydaje się przy tym bardzie eleganckie.

Niestety ma jedną wadę. O ile fragmenty kodu można objąć w if (OPCJA == 1), o tyle czegoś takiego nie można napisać dla pól struktury definiującej dane przekazywane z VS do PS. Tam natomiast muszą występować różne pola, niektóre nieużywane, zależnie od parametrów kompilacji danego shadera. Każde takie pole natomiast, nawet jeśli nieużywane, musi być wypełniane przez VS, choćby samymi zerami (swoją drogą - cóż za bzdura! - to powinno generować ostrzeżenie a nie błąd kompilacji), a to kosztuje dodatkową, niepotrzebną instrukcję w VS.

Toteż pozostaje objąć te nie zawsze wykorzystywane pola struktury w dyrektywy #ifdef. Skoro przy niektórych wartościach makr w ogóle ich nie będzie, to nie można też ich wtedy używać w kodzie. Tak więc warunki w kodzie też trzeba wtedy objąć w #ifdef zamiast w if. Co Należało Dowieść :) Tak też mam zrobione u siebie.

Comments | #rendering #directx Share

# Zdałem FCE :D

Fri
17
Aug 2007

Od dziś mogę się legitymować zdanym egzaminem FCE - First Certificate in English. Otrzymałem ocenę B. To potwierdzenie mojej znajomości języka angielskiego w stopniu wystarczającym nie tylko do "czytania dokumentacji technicznej".

Comments | #life Share

# Sortowanie wg typu

Fri
17
Aug 2007

Mamy wektor wskaźników na obiekty różnych typów dziedziczących ze wspólnej klasy bazowej. Jak posortować go wg typu? Właśnie wymyśliłem, że do porównywania elementów wektora można wtedy użyć takiego uniwersalnego funktora:

template <typename T>
struct TypeCompare
{
  bool operator () (const T *o1, const T *o2)
  {
    return &typeid(*o1) < &typeid(*o2);
  }
};

Przykładowy program: Sortowanie_wg_typu.cpp.

Comments | #c++ #algorithms Share

# Kultowe książki

Wed
15
Aug 2007

Książki można podzielić na grube i cienkie tudzież dobre i kiepskie. Pośród książek z interesującej nas dziedziny dodatkowo można wyróżnić takie kategorie jak książki na jeden konkretny temat (np. matematyka, fizyka) oraz takie, których autor próbuje kompleksowo i od podstaw nauczyć programowania gier (niektórym nawet się to udaje dzięki dostatecznie dużej objętości książki).

Jest jeszcze kategoria książek - tym ze słowem "Gems" w tytule, które stanowią tak naprawdę zbiór krótkich i niezależnych, ale bardzo wartościowych i na wysokim poziomie artykułów na dany temat. Większość z nich jest wprawdzie niedostępna w Polsce, ich kupowanie za granicą jest drogie, a ściąganie z eMule nielegalne, ale wypada przynajmniej znać kultowe serie takie jak:

Comments | #literature #rendering Share

# Gry a świat rzeczywisty

Tue
14
Aug 2007

To, czego ludzie najbardziej boją się w grach komputerowych, to pomieszanie świata rzeczywistego z grami. Ponieważ ze swoimi fobiami trzeba się oswajać, proponuję obejrzenie amatorskich filmików, które celowo mieszają realia rzeczywiste i wirtualne tworząc tzw. rzeczywistość wzbogaconą (ang. Augmented Reality) w oparciu o gry:

Osoby o nierozwiniętej albo spaczonej psychice nie powinny tego oglądać, a wszyscy oczywiście muszą pamiętać, żeby traktować je z dużym przymróżeniem oka :) Jeśli kogoś mimo wszystko bulwersują, to ma świetną okazję uświadomić sobie absurdalność takich fobii - w końcu to tylko filmiki, a prawdziwe filmy już nie takie rzeczy pokazywały i nikogo to nie dziwi.

Comments | #video #web #humor Share

# Wieści o StarCraft 2

Mon
13
Aug 2007

Dużo się dzieje w kwestii nowych wieści na temat mającego się ukazać w bliżej nieokreślonej przyszłości StarCraft 2. Pojawiają się nowe screeny, filmiki i różne informacje - Blizzard nie szczędzi szczegółów na temat przygotowywanej produkcji. Na szczęście nie muszę zebrać tutaj linków do wszystkich ciekawszych materiałów - systematycznie robi to gemGreg na swoim blogu poświęconym StarCraft 2.

Comments | #web #games Share

# Obrysowanie modelu

Sun
12
Aug 2007

Drobiazg przydatny do zaznaczania - efekt obrysowania modelu. Do wykonania potrzebny jest model oraz dodatkowy przebieg renderowania przed tym właściwym. W dodatkowym przebiegu kolejno:

To drugie przesunięcie najlepiej chyba wpleść pomiędzy przekształcenie widoku a projekcji.

Ten efekt jest pewnie gdzieś opisany i jakoś mądrze się nazywa, ale ja wymyśliłem go wczoraj i napisałem w RenderMonkey tylko tak na szybko, przy okazji.

Comments | #rendering Share

# Giertych a gry

Sat
11
Aug 2007

Gra wstępna - materiał TVN, w którym pada pod adresem gier stwierdzenie: "ludzie, którzy myślą, potrafią znaleźć znacznie ciekawsze rozrywki". Zawsze myślałem że TVN to stacja liberalna...

Giertych chce zakazać brutalnych gier komputerowych. Może najpierw niech zakaże brutalnych filmów, a kiedy już upadną wszystkie stancje telewizyjne z wyjątkiem TV Trwam, wtedy dopiero zabierze się za branżę gier? Potem niech jeszcze zabroni muzyki, tańca i będziemy mieli polski Taliban, jak w Afganistanie :)

Minister edukacji stwierdził, że "gry uczą sadyzmu i zachęcają do przemocy, również na tle seksualnym". Ciekawe o którą grę mu chodziło. Jedyna jaka przychodzi mi na myśl to szachy - w końcu tam nie tylko jest wiele przemocy, ale w dodatku bije się konia i posuwa królową :P

Comments | #games #web #politics Share

Pages: > 1 ... 94 95 96 97 98 ... 150 >

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