niedziela, 13 lutego 2011

VirtualGL+TurboVNC - grafika (gry:-) 3D na odległość

Problem
Chcemy uruchomić aplikację wymagającą sprzętowej akceleracji na komputerze jej nie posiadającym.

Rozwiązanie
Renderowanie z wykorzystaniem VirtualGL na zdalnym serwerze. Nie będę się rozpisywał o tym czym jest VirtualGL, jak go zainstalować i uruchomić. Napisano bardzo dobrą dokumentację. Może pracować samodzielnie lub wraz z TurboVNC.

Przykład
Dwa komputery połączone kawałkiem skrętki: serwer z akceleracją 3D (790GX) i dwurdzeniowym Athlonem II, klient tylko z akceleracją 2D (Via VN896) i jednordzeniowym Celeronem M. Oba napędzane przez Ubuntu 10.04. Aplikacje obciążają procesor i układ graficzny serwera, ale są wyświetlane na ekranie klienta.

Screeny
Amnesia The Dark Descent (gra)

Enemy Territory: Quake Wars Demo (gra)

ET: QW otwarte z wykorzystaniem przeglądarki (aplet Javy)

Obciążenia procesora serwera

Obciążenie procesora klienta


Problemy

  1. TurboVNC na spółkę z VirtualGL rozwiązuje tylko kwestie grafiki. Pozostaje problem dźwięku.
  2. TurboVNC pozamieniał mi całkowicie położenie klawiszy (układ klawiatury). Nie mam pojęcia dlaczego.
  3. Prędkość generowania grafiki była ~2 razy mniejsza niż przy bezpośrednim uruchomieniu gier. Co ciekawe procesory obu komputerów były obciążone w ok. 80% (być może sieć była wąskim gardłem). 
  4. Transfer sieciowy przy 1024x768 i 10-20 fps wynosił 2,5-4,5 MiB/s. 
Hardcore
Jest też ambitniejsze zastosowanie VirtualGL - programowa alternatywa dla SLI/Crossfire/Hydry

piątek, 4 lutego 2011

Gamepad z supermarketu - podłączasz i działa

Misja: zdobyć jakiegoś pada współpracującego z Linuksem i emulatorem Mupen64Plus.
Wybór: pierwszy lepszy z półki, za 30 zł.
Efekt: działa od wsadzenia w USB. Po prostu.

Mupen64Plus widzi zarówno samego pada jak i trzepaczkę (Rumble Pak/Force Feedback).

Pad zgłasza się nie jako Tracer a jakiś DragonRise:)

Gałki analogowe działają (o ile nie zapomni się wcisnąć przełącznika na środku pada:), Force Feedback równo trzepie (szczególnie gdy ma się do czynienia z kałachem w Goldeneye). Jedyne zastrzeżenia budzi dozowalność gałek przy małych wychyłach.

Dla porządku, fragment /var/log/messages:
Feb  4 18:13:44 adi-desktop kernel: [  938.556084] usb 4-1: new low speed USB device using ohci_hcd and address 3
Feb  4 18:13:44 adi-desktop kernel: [  938.724198] usb 4-1: configuration #1 chosen from 1 choice
Feb  4 18:13:44 adi-desktop kernel: [  938.786189] input: DragonRise Inc.   Generic   USB  Joystick   as /devices/pci0000:00/0000:00:12.1/usb4/4-1/4-1:1.0/input/input6
Feb  4 18:13:44 adi-desktop kernel: [  938.786363] dragonrise 0003:0079:0006.0002: input,hidraw1: USB HID v1.10 Joystick [DragonRise Inc.   Generic   USB  Joystick  ] on usb-0000:00:12.1-1/input0
Feb  4 18:13:44 adi-desktop kernel: [  938.786385] dragonrise 0003:0079:0006.0002: Force Feedback for DragonRise Inc. game controllers by Richard Walmsley