Dzięki OpenGL i tym podobnym mogę renderować niesamowite rzeczy w czasie rzeczywistym w 60 FPS. Jeśli jednak spróbuję nagrać wideo z tej samej sceny, powiedzmy Maya, lub 3ds Max, renderowanie byłoby dużo DUŻO dłuższe, mimo że ma tę samą rozdzielczość i liczbę klatek na sekundę.
Dlaczego te dwa typy renderowania wymagają różnych okresów czasu dla tego samego rezultatu?
Uwaga: Tak, zdaję sobie sprawę, że oprogramowanie do animacji 3D może wytwarzać obrazy o lepszej jakości niż w czasie rzeczywistym. Ale w przypadku tego pytania mam na myśli scenę o jednakowej złożoności.
rendering
performance
J.Doe
źródło
źródło
Odpowiedzi:
Główną różnicą byłoby to, że z OpenGL powiedzmy, że w grze wideo masz proces zwany rasteryzacją, który w zasadzie zajmuje się określeniem, którą część sceny widzisz.
Musi być szybki, abyśmy mogli doświadczyć go w czasie rzeczywistym.
Dlatego algorytm wykonuje kilka prostych kroków.
sprawdź, czy jakaś część sceny jest moim zdaniem
sprawdź, czy coś jest przed nim, co może wymagać późniejszego renderowania za pomocą bufora głębokości
uporządkuj znalezione obiekty
Z drugiej strony oprogramowanie do renderowania (Blender / Max / Maya / ...) najprawdopodobniej używa pewnego rodzaju raytracingu
Wymaga to dużo więcej matematyki, aby osiągnąć wyższy stopień realizmu. Zasadniczo działa w ten sam sposób:
…
Przestałem tutaj wymieniać, ponieważ od tego momentu startuje raytracing.
Zamiast sprawdzać tylko, czy punkt został trafiony, większość raytracer zaczyna teraz obliczać:
Istnieje mnóstwo technik o różnym stopniu realizmu, które można wykorzystać do obliczenia światła określonego punktu na scenie.
TL; DR Istotą jest to, że raytracer próbuje przede wszystkim być fizycznie dokładny, jeśli chodzi o oświetlenie, i dlatego ma dużo więcej obliczeń na piksel (czasami strzelać tysiące promieni), a z drugiej strony gry uzyskują prędkość rysowanie większych fragmentów ekranu za pomocą prostszych obliczeń światła i wielu sztuczek cieniujących, które pozwalają mu wyglądać realistycznie.
źródło
Porównujesz jabłka do pomarańczy
Gra przypomina port widokowy w aplikacji do modelowania. Możesz użyć rzutni do renderowania i uzyskasz te same prędkości 60 klatek na sekundę.
Nie ma powodu, dla którego nie można uzyskać grafiki w czasie rzeczywistym, która byłaby bardzo dobra z oprogramowania do modelowania, takiego jak Maya lub 3DS Max. Wyniki, które są na równi z wieloma grami. Mają shadery rzutni, tak jak gry. Istnieje również opcja renderowania rzutni, która dzieli klatki na dysk tak szybko, jak to pozwala (zrobiłem rendery Full HD przy 30 fps od Maya). Wszystko, co musisz zrobić, to przestać korzystać z dostarczonego oprogramowania raytracers.
Istnieją jednak pewne różnice. Główną różnicą jest to, że jako użytkownik nie optymalizujesz rzeczy tak bardzo, jak robią to twórcy gier (optymalizacja wykorzystuje wszystkie sztuczki opisane w książce). Po drugie, prymitywy animacji działają na procesorze, ponieważ potrzebujesz elastyczności. W grach można sobie pozwolić na optymalizacje. W sumie płacisz za to, że nie masz obok siebie zespołu programistów.
Wiele rzeczy mogło być wcześniej obliczonych, więc nie są one o wiele szybsze, tylko lepiej zorganizowane. Pieczenie twojego pośredniego oświetlenia będzie bić codziennie nieprzygotowane rezultaty.
Dlaczego raytracery działają wolniej?
Nie są *, jeden po prostu wykonuje więcej pracy na ray tracerze, ponieważ jest to łatwe. Cecha po funkcji nie są znacznie wolniejsze w cyklach obliczeniowych. Na przykład nie ma potrzeby, aby promień promieniowy rzucał promienie wtórne (odbicia życia w tym przypadku promień promieniowy wytrąci geometrię, a nawet jej nie załaduje, w rzeczywistości promień mentalny właśnie to robi). Zwykle robi się to, ponieważ jest to trywialne i jest to wyraźna zaleta ray tracerów. Możesz nawet skonfigurować je tak, aby działały na procesorze w niektórych przypadkach. Są po prostu zoptymalizowane pod kątem różnych rzeczy:
Emisja danych na dysk, nie tylko ramki, ale wszystkie dane. Coś, co natychmiast przerwałoby większość gier.
Praca na ogólnym sprzęcie. Procesor graficzny jest znacznie szybszy w przypadku niektórych rzeczy po zoptymalizowaniu go pod kątem GPU. Ale to nie działa dla wszystkich obciążeń, w rzeczywistości procesor Intel jest szybszy w obliczeniach ogólnie niż GPU. Procesor graficzny jest po prostu masywnie równoległy, co nie jest procesorem. Architektura wygrywa, jeśli możesz pozostać w GPU i zminimalizować transfer i zoptymalizować pod kątem architektury GPU.
Płacisz więc za elastyczność i łatwość użytkowania. Ale tak źle przyznam, że zarówno Maya, jak i Max cierpią z powodu skrajnej starości. Aby mogli być szybsi.
TL; DR Różnica polega głównie na optymalizacji (przeczytanie wielu sztuczek) i dostępnych zasobach zewnętrznych.
PS: Istnieje błędne przekonanie, że dzieje się tak, ponieważ jest to bardziej poprawne fizycznie. Z pewnością może być, ale ray tracer nie jest z natury bardziej poprawny fizycznie niż przeciętna gra lub inne obliczenia. W rzeczywistości wiele gier używa naprawdę dobrych modeli, podczas gdy całkiem wielu modelarzy tego nie robi.
* Patrz http://www.graphics.cornell.edu/~bjw/mca.pdf
źródło
Podgląd w czasie rzeczywistym
Pracując po stronie VFX w branży, jeśli mówisz o podglądach rzutni w czasie rzeczywistym, a nie renderowaniu produkcyjnym, to Maya i 3DS Max zazwyczaj również używają OpenGL (lub ewentualnie DirectX - prawie tak samo).
Jedną z głównych różnic koncepcyjnych między oprogramowaniem animacji VFX a grami jest poziom założeń, jakie mogą poczynić. Na przykład w oprogramowaniu VFX często zdarza się, że artysta ładuje pojedynczą, bezszwową siatkę znaków obejmującą setki tysięcy do milionów wielokątów. Gry najczęściej optymalizują się w przypadku dużej sceny składającej się z mnóstwa prostych, zoptymalizowanych siatek (każda z tysięcy trójkątów).
Renderowanie produkcji i śledzenie ścieżek
Oprogramowanie VFX kładzie również nacisk nie na podgląd w czasie rzeczywistym, ale na renderowanie produkcyjne, w którym promienie świetlne są symulowane pojedynczo. Podgląd w czasie rzeczywistym często jest po prostu „podglądem” wyników produkcji o wyższej jakości.
Gry wykonują ostatnio piękną robotę, zbliżając wiele z tych efektów, takich jak głębia ostrości w czasie rzeczywistym, miękkie cienie, rozproszone odbicia itp., Ale należą one do kategorii aproksymacji o dużej wytrzymałości (np. Rozmyte mapy kostek do rozproszenia odbicia zamiast faktycznie symulujących promienie świetlne).
Zawartość
Wracając do tego tematu, założenia treści między oprogramowaniem VFX a grą są bardzo różne. Oprogramowanie VFX koncentruje się przede wszystkim na tworzeniu wszelkiego rodzaju treści (przynajmniej jest to ideał, chociaż w praktyce często nie ma go blisko). Gry koncentrują się na treściach z dużo cięższymi założeniami (wszystkie modele powinny być w zakresie tysięcy trójkątów, normalne mapy powinny być stosowane do fałszywych szczegółów, nie powinniśmy mieć 13 miliardów cząstek, postacie nie są animowane przez mięśnie platformy i mapy napięć itp.).
Ze względu na te założenia silniki gier często łatwiej stosują techniki przyspieszania, takie jak ubijanie fragmentów, które umożliwiają utrzymanie wysokiej, interaktywnej liczby klatek na sekundę. Mogą zakładać, że niektóre treści będą statyczne, z góry upieczone. Oprogramowanie VFX nie może łatwo przyjąć takich założeń, biorąc pod uwagę znacznie większy stopień elastyczności w tworzeniu treści.
Gry Zrób to lepiej
To może być trochę kontrowersyjny pogląd, ale przemysł gier jest znacznie bardziej dochodowym przemysłem niż oprogramowanie VFX. Ich budżety na jedną grę mogą sięgać setek milionów dolarów i mogą sobie pozwolić na wydawanie silników nowej generacji co kilka lat. Ich wysiłki badawczo-rozwojowe są niesamowite, a setki tytułów gier są wydawane przez cały czas.
Z drugiej strony oprogramowanie VFX i CAD nie jest tak lukratywne. Badacze pracujący w środowisku akademickim często zlecają prace badawczo-rozwojowe, a wiele firm często wdraża techniki opublikowane wiele lat wcześniej, jakby to było coś nowego. Oprogramowanie VFX, nawet pochodzące od firm tak dużych jak AutoDesk, często nie jest tak „najnowocześniejsze” jak najnowsze silniki do gier AAA.
Mają też znacznie dłuższą spuściznę. Na przykład Maya to 17-letni produkt. Został bardzo odnowiony, ale jego podstawowa architektura jest nadal taka sama. Może to być analogiczne do próby pobrania Quake 2 i aktualizowania go aż do 2015 roku. Wysiłki mogą być świetne, ale prawdopodobnie nie będą pasować do Unreal Engine 4.
TL; DR
Tak czy inaczej, to trochę z tej strony tematu. Nie mogłem się zorientować, czy mówisz o podglądach w czasie rzeczywistym w rzutniach, czy renderowaniu produkcyjnym, więc starałem się opisać trochę obu.
źródło