Jestem nowy zarówno w gamedev, jak i Blender, i jest coś, czego nie mogę się trząść:
W Blenderze pojedynczy rendering (nawet przy użyciu bardziej zaawansowanego renderera cykli) może potrwać do 45 sekund na moim komputerze. Ale oczywiście w grze możesz mieć niesamowitą grafikę, więc renderowanie odbywa się oczywiście w sposób ciągły, wiele razy na sekundę w czasie rzeczywistym.
Zastanawiam się również, czym jest rozłączność, jeśli chodzi o to, jak „wolne” renderowanie Blendera wydaje się w porównaniu do tego, w jaki sposób silniki gier osiągają renderowanie w czasie rzeczywistym (lub prawie w czasie rzeczywistym).
Odpowiedzi:
Renderowanie w czasie rzeczywistym, nawet nowoczesne renderowanie w czasie rzeczywistym, to chwyt sztuczek, skrótów, hacków i przybliżeń.
Weźmy na przykład cienie.
Nadal nie mamy w pełni dokładnego i niezawodnego mechanizmu renderowania cieni w czasie rzeczywistym z dowolnej liczby świateł i dowolnie złożonych obiektów. Mamy wiele wariantów technik mapowania cieni, ale wszystkie one cierpią z powodu dobrze znanych problemów z mapami cieni, a nawet „poprawki” dla nich są tak naprawdę tylko zbiorem obejść i kompromisów (z reguły jeśli widzisz terminy „odchylenie głębi” lub „przesunięcie wielokąta” w czymkolwiek, to nie jest to solidna technika).
Innym przykładem techniki stosowanej przez renderery w czasie rzeczywistym jest wstępne obliczanie. Jeśli coś (np. Oświetlenie) jest zbyt wolne, aby obliczyć w czasie rzeczywistym (i może to zależeć od używanego systemu oświetlenia), możemy to wstępnie obliczyć i zapisać, a następnie możemy użyć wstępnie obliczonych danych w czasie rzeczywistym - czas na zwiększenie wydajności, które często odbywa się kosztem efektów dynamicznych. Jest to zwykła kompromis między pamięcią a obliczeniami: pamięć jest często tania i obfita, obliczenia często nie, więc spalamy dodatkową pamięć w zamian za oszczędność na obliczeniach.
Z kolei renderery offline i narzędzia do modelowania skupiają się bardziej na poprawności i jakości. Ponadto, ponieważ pracują z dynamicznie zmieniającą się geometrią (taką jak budowany model), muszą często przeliczać rzeczy, podczas gdy renderer w czasie rzeczywistym działałby z ostateczną wersją, która nie ma tego wymagania.
źródło
Obecna odpowiedź bardzo dobrze wyjaśniła ogólne związane z tym problemy, ale wydaje mi się, że brakuje w niej ważnego szczegółu technicznego: silnik renderujący „Cykle” Blendera jest innym rodzajem silnika niż to, z którego korzysta większość gier.
Zazwyczaj gry są renderowane poprzez iterowanie wszystkich wielokątów w scenie i rysowanie ich indywidualnie. Odbywa się to poprzez „rzutowanie” współrzędnych wielokąta przez wirtualną kamerę w celu uzyskania płaskiego obrazu. Technika ta jest wykorzystywana w grach, ponieważ nowoczesny sprzęt jest zaprojektowany wokół tej techniki i można ją wykonywać w czasie rzeczywistym przy stosunkowo wysokim poziomie szczegółowości. Zainteresowanie tą techniką zastosował również poprzedni silnik renderujący Blendera, zanim Blender Foundation zrzuciła stary silnik na rzecz silnika Cycles.
Z drugiej strony cykle to tak zwany silnik raytracingu. Zamiast patrzeć na wielokąty i renderować je indywidualnie, rzuca wirtualne promienie światła na scenę (jeden na każdy piksel na końcowym obrazie), odbija tę wiązkę światła od kilku powierzchni, a następnie wykorzystuje te dane, aby zdecydować, jaki kolor ma piksel Powinien być. Raytracing to bardzo kosztowna obliczeniowo technika, która sprawia, że jest niepraktyczny do renderowania w czasie rzeczywistym, ale jest używany do renderowania obrazów i filmów, ponieważ zapewnia dodatkowy poziom szczegółowości i realizmu.
Proszę zauważyć, że moje krótkie opisy raytracingu i renderowania wielokątów są bardzo uproszczone ze względu na zwięzłość. Jeśli chcesz dowiedzieć się więcej o technikach, zalecamy skorzystanie z dogłębnego samouczka lub książki, ponieważ podejrzewam, że jest bardzo wielu ludzi, którzy napisali lepsze wyjaśnienia, niż mogłem zebrać.
Należy również pamiętać, że istnieje wiele technik renderowania 3D, a niektóre gry faktycznie używają odmian raytracku do niektórych celów.
źródło