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 ... 102 103 104 105 106 ... 150 >

# Wiadomości strategiczne

Sat
19
May 2007

Grałem ostatnio w Command & Conquer 3 Tiberium Wars i gorąco polecam wszystkim tą nową grę strategiczną. Jakkolwiek zawsze byłem większym fanem RTS-ów ze stajni Blizzarda niż tych z serii C&C (i nadal jestem), muszę przyznać, że w nowego C&C3 gra się bardzo przyjemnie. Udane połączenie serowania znanego z serii Warcraft/Starcraft z tym Command-and-conquerowym, ciekawa fabuła, pierwszorzędna grafika... Ogólnie polecam :)

Inna dobra wiadomość "strategiczna" to oficjalne już potwierdzenie że strony Blizzarda prac nad StarCraft 2. Premiera pewnie nieprędko, ale jest na co czekać :) Więcej info:

NOWE: Jeśli jeszcze tego nie zrobiłeś, wejdź na stronę StarCraft II - Movies i pobierz opublikowany 21 maja Gameplay Video. Ten ponad-20-minutowy film po prostu trzeba zobaczyć. Jest niesamowity :)

Comments | #games #web Share

# SCMP TechDemo 1.2

Thu
17
May 2007

Nowa wersja mojego dema poprawia trzy problemy:

Zachęcam do pobrania: TFQ_SCMP_TechDemo_1-2.rar (1.36 MB). Przetestujcie i powiedzcie, czy jest już znośne i czy można iść dalej z robotą :)

Comments | #productions #rendering #engine Share

# Konwencja nazywania identyfikatorów

Mon
14
May 2007

Istnieje kilka różnych sposobów nadawania nazw funkcjom, zmiennym, poleceniom, znacznikom i wszelkim identyfikatorom. Można je podzielić na:

Który z nich jest najlepszy, tego nie można jednoznacznie powiedzieć. Zamiast tego spróbuj pomyśleć, który jest najgorszy ;)

Comments | #philosophy #software engineering Share

# INF-y i NAN-y

Sun
13
May 2007

Liczby zmiennoprzecinkowe typu float czy double mogą przyjmować pewne specjalne wartości, m.in. oznaczające nieskończoność, nazywane -INF i +INF, a osiągalne w C++ za pomocą nagłówka <limits> i wywołania std::numeric_limits<float>::infinity(). Ciekawe jest, że w przeciwieństwie do liczb całkowitych dzielenie zmiennoprzecinkowe przez zero nie powoduje "wywalenia" programu, ale daje w wyniku takie właśnie nieskończoności.

Z mojego doświadczenia wynika, że zachowują się one absolutnie sensownie. -(+INF) daje -INF, -INF jest mniejsze od każdej liczby a +INF jest większe, -INF jest mniejsze od +INF, +INF - 2.f daje +INF, -INF * -2.f daje +INF itd. Zastanawia mnie więc, dlaczego wszyscy tych specjalnych wartości tak się boją, a nikt ich nie stosuje w swoim kodzie? Ostatnio znalazłem na to kolejny przykład - programiści nVidia w swoich przykładowych kodach używają liczby 1e32f jako wartości specjalnej.

Comments | #c++ #math Share

# Pakowanie Shadow Mapy do A8R8G8B8

Sat
12
May 2007

Dzisiaj dopisałem nowy tryb Shadow Mappingu, w którym używam tekstury w formacie A8R8G8B8. To już nie ma prawa nie działać :) Wartość głębokości pakuję do składowych RGB. Składowa A pozostaje do wykorzystania przez Alpha Testing. Zresztą kodując liczbę typu float i tak nie uzyskałbym dokładności większej niż 24 bity, a nawet 16 wystarczy do tego celu.

Jak to się dokładnie robi? Niełatwo znaleźć konkretne informacje na ten temat. Pomogły mi dwa tematy forum: ten i ten. Ostatecznie mój kod wygląda tak:

// Kodowanie
float v = In.ShadowMapZW.x / In.ShadowMapZW.y; // Tak naprawdę to zw
Out = v * float4( 256*256, 256, 1, 0 );
Out = frac(Out);
//Out -= Out.rrgb * float4( 0, 1.0/256.0, 1.0/256.0, 0 );

// Dekodowanie
const float4 Factors = float4(1/256/256, 1/256, 1, 0);
sample = dot(Factors, tex2D(s, t));
itd...

Ta ostatnia linijka w kodowaniu jest zakomentowana, ponieważ choć na forum zalecali ją jako niezbędna do pozbycia się artefaktów, a w moim przypadku właśnie jej usunięcie doprowadziło cienie do porządku. Rozchodzi się tutaj tak naprawdę o pytanie, czy kodując wychodzącą z Pixel Shadera wartość rzeczywistą 0.0 .. 1.0 do całkowitoliczbowego bajtu 0, 1, ..., 255 karta pozostałą część ułamkową obcina czy też zaokrągla? Ayufan twierdzi że obcina i moje doświadczenie też to potwierdza. Ale czy tak jest zawsze? Czy to jest zdefiniowane, czy zależne od konkretnej karty? Tego chyba trudno będzie się dowiedzieć...

Comments | #rendering Share

# Walczący z błędami

Sat
12
May 2007

Dzięki kolegom z Warsztatu (pozdro!), którzy w tym temacie forum odpowiedzieli na moją prośbę, znalazło się całe stado błędów w moim demie. Opisałem je pokrótce tutaj i teraz spróbuję niektóre naprawić.

Comments | #productions #warsztat Share

# The Final Quest - SCM&P TechDemo

Thu
10
May 2007

Skończyłem to nad czym pracowałem przez ostatnie tygodnie czy nawet miesiące, czyli:

Efekt można obejrzeć i wypróbować na własne oczy pobierając i uruchamiając moje nowe demo techniczne - SCMP TechDemo 1.0. Oby działało bez zarzutów na różnym sprzęcie...

Comments | #rendering #productions #engine Share

# Visual C++ - debugger wchodzi do źródeł biblioteki standardowej

Fri
04
May 2007

Ano wchodzi... Jest to szczególnie niewygodne w przypadku używania STL. Wystarczy, że podając parametry do jakiejś funkcji czy metody robimy coś przy okazji, na przykład:

Funkcja(string("Łańcuch"), MojWektor[2]);

Zadałem o tym pytanie na forum i rozwiązanie się znalazło. Trzeba otóż:

  1. Zalogować się na konto o uprawnieniach admina.
  2. Wejść do Rejestru Windows.
  3. Wejść do klucza:
    • Visual C++ 2005 Professional: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver
    • Visual C++ 2005 Express: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\8.0\NativeDE\StepOver
  4. Utworzyć nową "wartość ciągu". Nazwa dowolna.
  5. Jako jej dane wpisać wyrażenie regularne oznaczające symbole, do których debugger ma nie wchodzić, np. jedno krótkie acz potężne: std\:\:.*

Ponowne uruchomienie Visuala nie jest konieczne - wystarczy nowa sesja debugowania (F5).

Nowa wersja tego wpisu (po angielsku) znajduje się TUTAJ.

Comments | #c++ #visual studio Share

Pages: > 1 ... 102 103 104 105 106 ... 150 >

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