December 2007

Uwaga! Informacje na tej stronie mają ponad 3 lata. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

16:20
Sun
30
Dec 2007

Prezentacja o J2ME

Właśnie skończyłem pisanie mojej pracy egzaminacyjnej na jeden z przedmiotów na studiach. Jest to prezentacja do wykładu na temat J2ME, czyli programowania w języku Java midletów na komórki. Omawia bardziej lub mniej dokładnie wszystkie moduły wchodzące w skład standardu MIDP 2.0. Ma 98 slajdów. Nie wiem, czy z samej prezentacji - nie słysząc wykładu - można się dużo nauczyć, ale zapraszam do przeglądania:

Comments (0) | Tags: productions studies mobile java teaching | Author: Adam Sawicki | Share

14:21
Fri
28
Dec 2007

The Final Quest 7 - Kod źródłowy na GNU GPL

Oto spóźniony prezent świąteczny - upubliczniam kod źródłowy mojego silnika na licencji GNU GPL. Nic mi przecież od tego nie ubędzie :)

To nie jest kompletny kod i nie skompiluje się tak po prostu, ale są tam prawie wszystkie klasy silnika, a także źródło i binarka konsolowego narzędzia do przetwarzania tekstur, map i modeli, pełna dokumentacja wszystkich formatów plików i inne rzeczy.

Mam nadzieję, że nikt nie będzie używał tego kodu nielegalnie w zamkniętej produkcji ani tym bardziej twierdził, że sam jest jego autorem. Tym nie mniej nie pogniewam się, jeśli ktoś "pożyczy" sobie z niego jakieś drobne funkcje albo podpadtrzy jakieś sprytne rozwiązania. Chociaż tyle będzie z niego pożytku :)

Pobierz plik: TFQ7_1-1_src.zip (1005.78 KB)
Pełna lista tego co zawiera pakiet: TUTAJ

Comments (0) | Tags: productions rendering engine | Author: Adam Sawicki | Share

15:08
Tue
25
Dec 2007

Komórki, J2ME, M3G

Dobra, poddaję się. Nie chce mi się już zajmować programowaniem na komórki. To jest fajne, ale mam też inne rzeczy w planach. Poznałem MIDP 2.0 i M3G dość dokładnie, zwłaszcza od strony teoretycznej. W praktyce dobił mnie problem z siatką o aktualizowanej dynamicznie geometrii (początkowo ma wszystkie wierzchołki w (0,0,0)), która na emulatorze działa dobrze, a na moim telefonie znika, kiedy tylko punkt (0,0,0) przestaje być w polu widzenia.

Z tego mojego "zajmowania się" pozostaną dwie pożyteczne rzeczy. Pierwsza to CapsViewer - mały midlet do pokazywania możliwości sprzętowych telefonu, na którym działa (parametry wyświetlacza, ilość pamięci, możliwości grafiki 3D itd.).

Druga to diagramy klas, który pomogły mi wyobrazić sobie organizację API M3G. Ta biblioteka jest przemyślana, przyjemna, obiektowa i wysokopoziomowa, ale co za tym idzie składa się z bardzo wielu drobnych, powiązanych ze sobą klas. Może komuś kiedyś przydadzą się te diagramy...


Wszystko


Same agregacje


Same dziedziczenia

Comments (0) | Tags: rendering java mobile | Author: Adam Sawicki | Share

16:21
Sun
23
Dec 2007

Wesołych Świąt

Chciałbym ułożyć jakieś ładne życzenia, ale nie potrafię, a nie chcę kopiować gotowych. Dlatego życzę wam wszystkim po prostu WESOŁYCH ŚWIĄT I SZCZĘŚLIWEGO NOWEGO ROKU !!!

Comments (0) | Tags: life events | Author: Adam Sawicki | Share

19:55
Fri
21
Dec 2007

Nauka M3G

Uczę się ostatnio M3G (Mobile 3D Graphics API). To jest biblioteka do mobilnej grafiki 3D wspierana przez niektóre komórki. Oprócz możliwości rysowania wprost oteksturowanych trójkątów posiada również API wysokopoziomowe z grafem sceny zawierającym siatki, kamery i światła. Wspiera animację na klatkach kluczowych oraz szkieletową. Ogólnie jest bardzo przyjemna.

Ma własny format pliku potrafiący przechowywać cały graf sceny wraz z teksturami. Długo szukałem sposobu na wyeksportowanie do niego czegoś z Blendera. Byłem nawet gotów napisać własny eksporter. Na szczęście dzisiaj po rozmowie na IRC-u z ludźmi z kanału #blendercoders przejrzałem źródło istniejącego eksportera M3G do Blendera i udało mi się go wreszcie nakłonić do prawidłowego działania. Tajemnicą nakłonienia go do eksportowania koordynatów tekstur jest, jak się okazuje, zaznaczenie w ustawieniach materiału niepozornego przycisku TexFace.

Co do samego midletu, na razie napisałem tyle :)

Comments (1) | Tags: rendering java mobile | Author: Adam Sawicki | Share

20:28
Mon
17
Dec 2007

Bloom jest wszędzie

Efekt zwany Bloom jest wszędzie, nie tylko w nowoczesnych grach komputerowych. Ostatnio widziałem go nawet na tle jakiejś prezentacji PowerPoint. Nic dziwnego - jest fajny, bo pozwala pokazać, że coś jest "jaśniejsze niż białe". To trochę rekompensuje wąski zakres jasności możliwy do odwzorowania na monitorze w porównaniu z zakresem, jaki widzimy w realnym świecie (HDR). Tak jak w tym moim prostym eksperymencie:

Comments (1) | Tags: rendering graphics | Author: Adam Sawicki | Share

12:07
Sat
15
Dec 2007

AMD CodeAnalyst

Właściwie to używam go od dawna, ale teraz pomyślałem, że warto go "zareklamować" tym którzy jeszcze go nie znają. AMD CodeAnalyst to daromwy profiler. Instaluje się go, uruchamia, a następnie z jego poziomu odpala swoją aplikację i przez jakiś czas pozwala jej działać. Potem dostaje się statystyki, które pomagają stwierdzić, co zabiera najwięcej czasu. Na procesorach firmy AMD program ma co prawda większe możliwości, ale na Intelach również działa podstawowa funkcjonalność profilowania. Oto efekt:


Które moduły zabierają najwięcej czasu


Które funkcje wybranego modułu zabierają najwięcej czasu


Które linijki wybranej funkcji zabierają najwięcej czasu

Comments (2) | Tags: tools software | Author: Adam Sawicki | Share

20:14
Thu
13
Dec 2007

Visual C++ a procesor dwurdzeniowy

Jako szczęśliwy posiadacz maszyny z dwurdzeniowym procesorem postanowiłem pomyśleć o przyspieszeniu kompilacji w Visual C++ 2005 i oto, do czego doszedłem po "dialogu" z Google.

Po pierwsze zła wiadomość: Visual C++ nie potrafi kompilować równolegle wielu plików. Właściwie to potrafi (za liczbę równoległych kompilacji odpowiada ustawienie Tools > Options > Projects and Solutions > Build and Run > maximum number of parallel project builds), ale tylko kiedy kompilujemy na raz wiele projektów z jednej solucji.

Po drugie, znalzłem coś takiego: IncrediBuild. Niestety, to jest program płatny, a w dodatku służy raczej do rozpraszania kompilacji na wiele komputerów. Nie o to nam chodzi.

Po trzecie, istnieje mały i darmowy dodatek do Visual C++ zrównoleglający kompilację na wiele plików jednocześnie - MPCL. Wypróbowałem go.

Po czwarte i najważniejsze, istnieje przełącznik kompilacji /MP, który sprawia, że Visual C++ automatycznie zrównolegla kompilację pojedynczego pliku znacznie ją przyspieszając. Nie znajdziesz tego przełącznika jako pozycji na listach opcji projektu. Musisz go ręcznie dopisać w C/C++ > Command Line > Additional Options. Też go sprawdziłem.

Oto wyniki moich eksperymentów. W trybie Release kompilacja trwa o wiele dłużej, bo dochodzi stały, duży czas linkowania, którego nie da się zrównoleglić.

Wnioski: 1. Użycie przełącznika /MP daje duże przyspieszenie kompilacji. 2. Użycie programu MPCL nie daje dalszego przyspieszenia, choć zastosowanie jego samego, bez przełącznika /MP, również przyspiesza kompilację tak jak ten przełącznik.

Wniosek wniosków: Programu MPCL nie warto instalować, natomiast warto zawsze stosować przełącznik /MP, bo znacznie przyspiesza kompilację na maszynie wielordzeniowej.

Comments (0) | Tags: visual studio c++ | Author: Adam Sawicki | Share

10:23
Tue
11
Dec 2007

GPU ShaderAnalyzer

Chyba zrobę sobie teraz przerwę na zabawę i poznawanie różnych nowych technologii. Pierwsze do testów wziąłem małe narzędzie firmy ATI/AMD - GPU ShaderAnalyzer. Okazuje się to być program, któremu można wrzucić źródło shadera, a on kompiluje go i pokazuje kod w asemblerze oraz kilka przydatnych informacji statystycznych. Akceptuje zarówno shadery DirectX, jak i OpenGL, łącznie z Shader Model 4 (no wiecie - GeForce 8000, Vista i te sprawy :) Można mu też podać makra preprocesora. Jako wyjście otrzymujemy kod shadera w asemblerze, liczbę użytych instrukcji, rejestrów itp., oraz - co w zamierzeniu ma być najważniejsze - wyliczone statystyki na temat ile shader ma instrukcji arytmetycznych, a ile samplujących teksturę, ile czasu zajmie jego wykonywanie i w efekcie co stanowi w nim wąskie gardło. Niestety tylko dla wybranych modeli kart graficznych z serii Radeon.

Ogólnie program może się przydać tym, którzy chcą stuningować swoje shadery do granic możliwości. Co również istotne, jest mały, prosty i napisany w kodzie natywnym, a nie w .NET. Pewnie dlatego działa szybko, czego nie można powiedzieć o FX Composer 2. Jako edytora z podświetlaniem składni autorzy użyli zdaje się kontrolki Scintilla. Program zawiera właściwie tylko tyle, ile pokazuje ten jeden screen:

Comments (1) | Tags: rendering tools software | Author: Adam Sawicki | Share

11:11
Mon
10
Dec 2007

RIMP 401

Niektóre prace magisterskie są naprawdę ciekawe. Na przykład dwójka moich kolegów - Damian i Tomek - zajmują się w ramach swojej pracy robotem przemysłowym RIMP 401. Zrobili dla tego projektu stronę internetową, a na niej umieścili już sporo zdjęć i filmik.

Comments (0) | Tags: studies | Author: Adam Sawicki | Share

14:05
Sun
09
Dec 2007

Warto wyłączyć plik wymiany

Plik wymiany to taki nieszczęsny wynalazek, przez który system przenosi na dysk twardy dane z pamięci operacyjnej i kiedy znowu są potrzebne, musi je z dysku z powrotem przeczytać. Oczywiście nikomu nie trzeba przypominać, że dysk jest o całe rzędy wielkości wolnieszy od pamięci RAM. Teoretycznie system powinien to robić dopiero kiedy nie wystarcza mu pamięci fizycznej. W praktyce robi to często np. kiedy jakiś program jest od dłuższego czasu nieużywany (specjalistą od tego jest wirtualna maszyna Javy) albo kiedy kopiujemy duże pliki czy nagrywamy płytę DVD (wymyśla sobie wtedy, że potrzebne mu są setki MB pamięci na bufory dyskowe i to jest dla niego ważniejsze, niż uruchomione programy).

Dlatego warto całkowicie wyłączyć plik wymiany. Aby to zrobić (chociaż to pewnie każdy wie), klikamy prawym klawiszem na My computer, wybieramy Properties, dalej na zakładce Advanced w sekcji Performance klikamy przycisk Settings, w nowym oknie znów zakłada Advanced, przycisk Change i wreszcie w ostatnim już oknie wybieramy dla każdego dysku opcję No paging file. Jeszcze tylko restart komputera i gotowe.

Plik wymiany nie zawsze można wyłączyć. Niektóre programy i (zwłaszcza) gry potrzebują bardzo dużo pamięci. Na przykład dla Wiedźmina w Windows XP, 1 GB RAM-u to za mało i bez pliku wymiany wysypuje się. Dla Crysisa w Windows Vista nawet 2 GB pamięci to za mało. Jeszcze inne aplikacje, np. Photoshop, narzekają na brak pliku wymiany niezależnie, jak dużo pamięci jest w systemie. Jednak jeżeli tylko możesz, naprawdę gorąco zachęcam, wyłącz plik wymiany. Praca z systemem jest wtedy zupełnie inna.

Comments (2) | Tags: windows | Author: Adam Sawicki | Share

13:46
Sat
08
Dec 2007

CTFMON.EXE i zamulanie systemu

Nowe! Ponieważ niespodziewanie okazuje się, że ten wpis jest najpopularniejszy z całego mojego bloga (który w większej części jest poświęcony programowaniu, a nie sprawom takim jak ta), to jeśli trafiłeś tu przez Google szukając hasła "CTFMON", musisz wiedzieć, że najprawdopodobniej nie znalazłeś tego czego szukasz, a po prostu MASZ W SWOIM SYSTEMIE WIRUSA. Ctfmon.exe to plik systemowy, ale istnieje popularny wirus podszywający się pod tą samą nazwę.

Od dawna męczył mnie i moich kolegów używających Windows XP problem z zacinaniem się systemu (polegającym na niereagowaniu na żadne wejście z klawiatury ani z myszki przez całkiem długi ułamek sekundy) w momencie przełączania między uruchomionymi programami. Długo nie wiedziałem, co jest przyczyną. Obwiniałem m.in. sterownik do myszki A4Tech albo TortoiseSVN.

W czasie, kiedy nie nie miałem Neostrady, zacząłem drążyć ten temat wyłączając po kolei procesy działające w tle i poszukałem rozwiązania za pomocą komórki i Opera Mini. Oto, co się okazało: Otóż przyczyną tego wrednego błędu jest proces uruchamiany z pliku CTFMON.EXE. Różne strony podają na jego temat sprzeczne informacje, ale postaram się je tu zebrać. Tak czy owak, problem można zwalczyć.

Niektóre znalezione metody poradzenia sobie z nim:

Comments (1) | Tags: windows | Author: Adam Sawicki | Share

23:27
Fri
07
Dec 2007

Szarpanie gry

Szarpanie gry to wredny błąd. Długo nie wierzyłem w ogóle w jego istnienie - dopóki sam go nie doświadczyłem w swoim kodzie, najpierw na laptopie, a potem również na blaszaku. Chodzi o sytuację, kiedy FPS-ów jest dużo, ale mimo tego animacja "szarpie". Powiązany z tym może być jest błąd opóźniania się obrazu za wejściem z myszki, doświadczany przy pisaniu GUI. Rozwiązania są różnorodne:

Comments (1) | Tags: directx rendering algorithms | Author: Adam Sawicki | Share

20:28
Thu
06
Dec 2007

Mobile Galaxy

Nic nie pisałem od tak dawna, bo nie miałem dostępu do Internetu przez kilka dni. W tym czasie zacząłem z nudów uczyć się programowania w J2ME na komórki. Moja pierwsza produkcja to małe demo graficzne - Mobile Galaxy. Udostępniam je razem z kodem źródłowym.

Comments (1) | Tags: mobile java productions rendering | Author: Adam Sawicki | Share

STAT NO AD [Stat] [Admin] [STAT NO AD] [pub] [Mirror] Copyright © 2004-2017 Adam Sawicki
Copyright © 2004-2017 Adam Sawicki