Autor Wątek: Kryteria porównania silników / frameworków graficznych  (Przeczytany 2576 razy)

Offline kulesz

  • Użytkownik

# Listopad 24, 2011, 15:59:32
Hej,

Ostatnio zająłem się zagadnieniem porównania wydajności modułów graficznych (przy czym przez pojęcie "moduł" rozumiem kompletny silnik w stylu Torque lub framwork a'la Ogre) dla Windowsa. W przypadku silników zaznaczam, że chodzi o samą warstwę renderującą - sieć, dźwięk, edytory itp. pomijam).

Osobiście myślałem o przygotowaniu kilku programów, wykonujących to samo zadanie w tej samej technologi, np: wyświetlanie sceny o określonej ilości geometrii, efekty z wykorzystaniem wbudowanych i własnych shaderów (czas wykonania), wydajność w zależności od ilości materiałów/meshy na scenie, prównanie ewentualnych identycznych funkcjonalności (np. LOD terenu)  itp. Oczywiście obie aplikacje musiałby robić to w możliwie identyczny sposób.

Czy znacie/moglibyście zaproponować jakieś kryteria (testy), względem których możnaby miarodajnie porównać dwa silniki graficzne (ich wydajność)?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline quaikohc

  • Użytkownik

# Listopad 24, 2011, 16:41:18
pomysl fajny - co prawda jako cwiczenie bardziej, bo imo zbyt miarodajnie sie tego zrobic nie da i nie ma to zadnego sensu,

wracajac do pytania sprawdzac mozesz jak zachowuje sie wydajnosc renderera przy:
- zwiekszaniu ilosci geometrii
- zwiekszaniu ilosci draw calli
- zwiekszaniu ilosci roznych shaderow, materialow, render states (+obiekty przezroczyste)
- zwiekszaniu ilosci roznych swiatel
-  rozne ustawieniach aa
- koszt roznych postprocessow + koszt particli

btw: to naprawde nie ma sensu, nie bedzie to nigdy miarodajne ani uzyteczne, poza tym musialbys mierzyc ta wydajnosc w oderwaniu od mozliwosci jakie daje renderer, bo porownujesz wspolny zestaw featurow kazdego z nich, czyli z tych bardziej zlozonych wybierasz tylko ten ich zestaw featurow ktory jest wspolny z tym najubozszym, a wtedy porownanie przestaje miec sens
« Ostatnia zmiana: Listopad 24, 2011, 16:43:33 wysłana przez quaikohc »

Offline Kuba D.

  • Użytkownik

# Listopad 24, 2011, 16:50:35
Ciezko bedzie takie porownanie zrobic. Zwlaszcza, ze te silniki dosyc sie roznia jesli chodzi o mozliwosci. O ile silniki fizyczne mozna latwo porownac bo wiekszosc z nich ma takie same mozliwosci to z silnikami graf bedzie problem - jedne sa lepsze do scen typu indoor - inne dla outdoor, maja inne mozliwosci a sama predkosc renderowanie geometrii, particli czy swiatel jest malo istotna - liczy sie calosc. Innymi slowy - da sie je porownac na sile ale wyniki nie beda miarodajne i rzetelne.
Inna sprawa, ze tak naprawde to nie ma zbyt wielu silnikow graf do porownywania. Do tych z czolowki komercyjnych raczej dostepu tez nie ma - pomijam Id Tech 4, UE3 czy CE ale ich chyba nikt nie bedzie porownywac np. z Ogre ;)
Tak jak kolega wyzej napisal - to nie ma sensu. Jedynie mozesz sprawdzic ktory z nich bedzie najlepszy dla Twoich celow.

Offline quaikohc

  • Użytkownik

# Listopad 24, 2011, 17:02:50
Do tych z czolowki komercyjnych raczej dostepu tez nie ma - pomijam Id Tech 4, UE3 czy CE ale ich chyba nikt nie bedzie porownywac np. z Ogre ;)

??? a to dlaczego?

Offline Oti

  • Użytkownik

# Listopad 24, 2011, 17:11:11
??? a to dlaczego?
Czy przed zakupem ferrari dla porównania wsiadasz najpierw do malucha?

Offline kulesz

  • Użytkownik

# Listopad 24, 2011, 23:27:21
Owszem, miarodajne nie zawsze będzie w 100%, jednak chcę jak najbardziej zbliżyć to do sensownego porównania.
Pod uwagę biorę tylko narzędzia z obsługą natywnego C++, więc wszystkie Unity itp. odpadają :-) (ale takie Esenthele, Ogry, Torque i Open Scene Graphy nie).

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Listopad 25, 2011, 00:53:40
Jedyne sensowne i jako-tako miarodajne porównanie wydajności takich silników to porównanie subiektywne. Dwie drogi:
1) tworzymy bardzo podobnie wyglądającą scenę (najlepiej z animacją, polecam zobaczyć test wydajności z World in Conflict) i mierzymy czystą wydajność.
2) tworzymy scenę wg. danego klucza (możliwie podobną do docelowej) z zachowaniem wydajności na poziomie ustalonym (30/60FPS) i subiektywnie oceniamy wygląd.

Wtedy można porównywać nawet irrlicht z Frostbite 2 ;)

Offline laggyluk

  • Użytkownik
    • twitter

# Listopad 25, 2011, 01:35:49
Owszem, miarodajne nie zawsze będzie w 100%, jednak chcę jak najbardziej zbliżyć to do sensownego porównania.
Pod uwagę biorę tylko narzędzia z obsługą natywnego C++, więc wszystkie Unity itp. odpadają :-) (ale takie Esenthele, Ogry, Torque i Open Scene Graphy nie).
szkoda, chętnie bym zobaczył wynik pojedynku unity vs udk na ios ;)

Offline Dab

  • Redaktor
    • blog

# Listopad 25, 2011, 02:26:48
Asmodeusz:

3) liczmy ile czasu poszło na zrobienie takiej sceny :)

Offline kulesz

  • Użytkownik

# Listopad 25, 2011, 08:29:37
szkoda, chętnie bym zobaczył wynik pojedynku unity vs udk na ios ;)
No niestety :-) Może w sieci coś takiego już jest...

1) tworzymy bardzo podobnie wyglądającą scenę (najlepiej z animacją, polecam zobaczyć test wydajności z World in Conflict) i mierzymy czystą wydajność.

Ten pomysł miałem na myśli w pierwszej chwili, tzn. opracować dwie identyczne sceny i mierzyć wydajność. Zdaję sobie przy tym sprawę, że będzie trzeba korzystać tylko z elementów dostępnych w obu silnikach - jednak taki jest plan, żeby utworzyć pewną "część wspólną" wszystkich aplikacji i tylko do tego się odnosić.
Tylko nie do końca rozumiem Twój drugi zaproponowany sposób - chodzi Ci o założenie sobie pewnej wydajności na okreslonej scenie i stopniowe dokładanie elementów dla każdego silnika, aż do uzyskania granicy?

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Listopad 25, 2011, 14:51:47
@Dab: też istotne ;)

@kulesz: zakładasz sobie jakąś "idealną scenę", np. zmontowaną w 3ds max i tam wyrenderowaną. Później - trzymając się granicy wydajności montujesz w silniku scenę możliwie do niej zbliżoną (wyrenderowane wideo z 3ds max traktujesz jako referencję). Jak już masz taką scenę w silniku działającą z założoną płynnością, porównujesz z wideo referencyjnym i oceniasz (subiektywnie) jak ma się jakość obrazu z silnika do obrazu z 3ds. Najlepiej pokazać oba filmiki laikowi i niech porówna o ile jeden lepszy od drugiego ;)