Wydajność WebGL
Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał
Jak już wspomniałem w moich planach na 2023 rok, znajdzie się trochę czasu na programowanie grafiki. Dawno temu zgłębiałem OpenGL, ale to było bardzo dawno. Teraz myślę o wypróbowaniu czegoś dużo prostszego i bardziej przystępnego, jak na przykład WebGL. Ta biblioteka opiera się na JavaScripcie w warstwie logiki i na OpenGL ES w warstwie prezentacji. Jest więc akcelerowana sprzętowo.
Z tą akceleracją są jednak pewne problemy. Na niektórych komputerach można w BIOS/UEFI wybrać konkretne GPU. Nie na każdym komputerze jest to jednak możliwe. Na początek spróbowałem na Lenovo ThinkPad T420s z NVIDIA NVS 4200M. Testując na demie z akwarium (które można znaleźć tutaj), uzyskuję stabilne 37 FPS przy 5 tys. elementów i obciążeniu na poziomie około 95 – 99%. Czasami wydajność spada i liczba FPS schodzi nawet do 10. Temperatura GPU i CPU pokazuje tę samą wartość 95 stopni C. To zdecydowanie za dużo. Ten komputer ma dużą przewagę nad innymi, bo ma funkcję NVIDIA Optimus, która daje mi możliwość przełączania się między układami graficznymi lub pozwala sprzętowi samemu wybrać, które GPU powinno być w danej chwili używane.
Moja druga maszyna, czyli Dell G15, nie ma takiej funkcji, a Ubuntu 22 wybiera zintegrowany układ Intel UHD 10. generacji zamiast mocnego NVIDIA GeForce RTX 3050 Ti. Na tym zintegrowanym układzie mamy więc stabilne 45 FPS, ale bez żadnych spadków wydajności. Mogę uruchomić przeglądarkę Firefox na „grafice dedykowanej”, ponieważ mam własnościowy sterownik, ale daje mi to tylko 50 FPS, czyli zaledwie 5 więcej niż na zintegrowanej. nvidia-smi pokazuje tylko 30% obciążenia, więc karta niewiele robi. Powiem więcej: przy 30 tys. elementów zintegrowane GPU daje więcej FPS (20 wobec 15). Nie do końca rozumiem, co tu się dzieje.
Wciąż testuję to na różnych innych konfiguracjach sprzętowych i daje to coraz dziwniejsze, nieoczekiwane wyniki.