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 ... 76 77 78 79 80 ... 150 >

# Moje zdjęcia z Warszawy

Sun
13
Jul 2008

Wrzuciłem do Galerii zdjęcia, które zrobiłem dotychczas w Warszawie.

Comments | #gallery Share

# Pracuję w Metropolis Software

Sat
12
Jul 2008

Dawno nie pisałem tu nic konkretnego. Co u mnie nowego? Właściwie wszystko. Mieszkam teraz w Warszawie i pracuję jako programista w Metropolis Software. Nie jest tajemnicą, że projekt który obecnie tworzymy to strzelanka zatytułowana They.

Comments | #life Share

# Wygrałem konkurs na blog IT miesiąca

Fri
11
Jul 2008

Zająłem pierwsze miejsce w konkursie na blog IT miesiąca. Kompletnie się tego nie spodziewałem. To nie było głosowanie internetowe, blogi oceniało jury na podstawie określonych kryteriów. Liczyły się tylko wpisy z czerwca tego roku. Nie wiem wprawdzie jak duża była konkurencja, ale zapisałem się do niego ot tak, z ciekawości. Wcale nie blogowałem specjalnie pod konkurs. Byłem przekonany, że ze swoją egzotyczną tematyką programowania gier nie mam szans z blogami na tematy internetowo-bazodanowe związane z Java, C#, PHP itp., których pełno w sieci i które zwykle mamy na myśli mówiąc "IT". A jednak stało się i wygrałem książkę... "Aplikacje Windows Forms .Net w C#" :) Drugie miejsce w konkursie zajął Xion.

Comments | #web #homepage Share

# Moja praca mgr online

Tue
01
Jul 2008

Za pozwoleniem promotora udostępniam do pobrania moją pracę magisterską w formacie PDF: Architektura i implementacja silnika grafiki trójwymiarowej. Praca opisuje mój silnik graficzny The Final Quest. Zawiera przegląd literatury, opis architektury silnika (z jakch warstw, modułów, klas i pól się składa) oraz szczegóły implementacyjne (organizacja procesu renderowania, omówienie kodu shaderów, obliczenia animacji szkieletowej, realizacja efektów cząsteczkowych, format plików modeli i inne).

Jednym słowem, zbiera dużą część mojej wiedzy na tematy silnikologiczne, jaką miałem w czasie jej pisania. Ma 165 stron. Zawiera też obszerny spis literatury - ciekawych artykułów na konkretne tematy. Powinna być zrozumiała dla tych wszystkich, którzy znają już podstawy programowania, biblioteki graficznej 3D oraz shaderów.

Comments | #productions #rendering #engine #studies Share

# Blender 2.46

Sat
28
Jun 2008

W maju ukazała się nowa wersja Blendera - najlepszego darmowego programu do grafiki 3D. Lista nowości wersji 2.46 jest imponująca, w tym m.in.:

Jednego tylko twórcy uparcie nie chcą zmienić - koszmarnego interfejsu użytkownika. Wręcz przeciwnie - jest coraz gorzej. Oto przykład: Jesteśmy w UV/Image Editor, chcemy wczytać plik tekstury. Klikamy w menu Image > Open... i pokazuje się File Browser. Jak wybrać teksturę za pomocą nowego Image Browser? Trzeba wejść do menu Image i kliknąć polecenie Open... z przytrzymanym klawiszem CTRL! Nowy rekord absurdu został pobity.

Comments | #graphics #software Share

# Tablice 2D

Mon
23
Jun 2008

Mieliśmy ostatnio w tym wątku forum dyskusję na temat tablic 2D w C++. Sposobów na to jest kilka. Ten najbardziej oczywisty to podwójny wskaźnik, czyli tablica tablic:

int **Tab = new int*[SizeX];
for (int x = 0; x < SizeX; x++)
  Tab[x] = new int[SizeY];
Tab[x][y] // Odwołanie

Forumowi specjaliści piszą, że metoda z jednowymiarową tablicą jest lepsza, bo wszystko jest w jednym kawałku pamięci, co zapewnia lepszą spójność cache i mniejsze ryzyko wystąpienia problemów ze stronnicowaniem. Co ciekawe, odwołania do takiej tablicy wcale nie są wolniejsze ze względu na mnożenie, bo w kodzie powyżej mnożenie też zachodzi, skoro elementy pierwszej tablicy nie mają przecież wielkości 1 bajtu.

int *Tab = new int[SizeX*SizeY];
Tab[y*SizeX + x] // Odwołanie

Możliwa jest jeszcze inna metoda, ale ona jest już przekombinowana, a poza tym zadziała tylko kiedy drugi wymiar tablicy jest stały.

int (*Tab)[16];
Tab = new int[16][16];
Tab[x][y] // Odwołanie

Comments | #algorithms #c++ Share

# Kasowanie linijki w konsoli

Sun
22
Jun 2008

Konsola systemowa, używana przez funkcje C (jak printf) lub C++ (jak std::cout) pozwala tylko wypisywać na wyjście i pobierać na wejściu znaki lub całe łańcuchy. Dopiero Windows API umożliwia bardziej niskopioziomowe reagowanie na klawiaturę, myszkę i swobodne rysowanie znakami po dowolnych miejscach konsoli, także z użyciem kolorów. Zawsze zastanawiało mnie, jak bez WinAPI radzą sobie twórcy programów konsolowych, którzy kasują bieżącą linijkę zamiast tylko dopisywać nowe informacje, jak wtedy kiedy następuje odliczanie 10%, 20%, 30% itd.

Ostatnio znalazłem rozwiązanie. Jest nim magiczny znak "\r", który użyty samodzielnie (a nie jako część końca wiersza "\r\n") powoduje powrót karetki na początek linii umożliwiając napisanie w jej miejscu czegoś nowego. Na przykład:

for (unsigned i = 0; i < 10; i++)
{
  std::cout << "\rLiczba: " << i;
  Sleep(500);
}
std::cout << std::endl;

Comments | #c++ #stl #algorithms Share

# Liczby losowe o rozkładzie normalnym

Sat
21
Jun 2008

Osobnym zagadnieniem jest generowanie liczb o rozkładzie normalnym. Dotychczas używałem do tego algorytmu Box-Muller, który jednak jest wolny, bo wykorzystuje cosinus, pierwiastek i logarytm naturalny. Szybciej działa jego odmiana biegunowa, która bierze dwie liczby o rozkładzie równomiernym 0..1 i generuje na raz dwie liczby o rozkładzie normalnym w ten sposób:

float x1, x2, w;
do {
  x1 = 2.0f * RandFloat() - 1.0f;
  x2 = 2.0f * RandFloat() - 1.0f;
  w = x1 * x1 + x2 * x2;
} while (w >= 1.0f);
w = sqrtf((-2.0f * logf(w)) / w);
Result1 = x1 * w;
Result2 = x2 * w;

Jeszcze inna metoda, opisana w dostępnej za darmo książce The Scientist and Engineer's Guide to Digital Signal Processing, opiera się na obserwacji, że suma 12 liczb losowych 0..1 o rozkładzie równomiernym ma rozkład normalny ze średnią 6 i oschyleniem standardowym 1. Wystarczy więc 1) Zsumować 12 liczb losowych 0..1, 2) Odjąć 6, 3) Pomnożyć przez żądane odchylenie standardowe, 4) Dodać żądaną średnią. Mój pomiar wykazał jednak jasno, że ta metoda z sumą 12 generowań nie będzie szybsza od pokazanego wyżej kodu, nawet mając szybki i sprytnie napisany generator o rozkładzie równomiernym 0..1.

Comments | #math Share

Pages: > 1 ... 76 77 78 79 80 ... 150 >

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