Jak 5-krotnie skrócić czas renderowania. Pierwsze wrażenia z renderowania na GPU.

Data publikacji: 19-05-2020  |  Data aktualizacji: 04-04-2024  | Autor: Mateusz Ciećwierz

Chcesz przyspieszyć czas renderowania na starym komputerze? Poznaj moje wskazówki! Wystarczy, że dokupisz dodatkową kartę graficzną (w moim przypadku NVidia) i upewnisz się, że karta jest wykrywana przez 3ds Max. Następnie przejdź do przeliczania sceny GPU. Ogromną zaletą renderowania GPU jest możliwość tworzenia dobrej jakości wizualizacji nawet na dość starych komputerach. W razie potrzeby możesz dodawać kolejne karty i zwiększać w ten sposób moc obliczeniową. Pamiętaj jednak, że renderowanie dużych scen wymaga znacznej ilości pamięci. Przeczytaj artykuł i zobacz porównanie wizualizacji GPU i CPU na przykładzie tej samej sceny.

Jak 5-krotnie skrócić czas renderowania. Pierwsze wrażenia z renderowania na GPU.


Początkowo planowałem zatytułować ten tekst “Jak przyśpieszyć 5-krotnie renderowanie na 7-letnim komputerze za 3070 zł?”, ale z czasem uznałem, że część osób zainteresowanych liczeniem na GPU może nie wiedzieć, że w dużej mierze o tym jest ten tekst.

Poprzedni tytuł  był oczywiście trochę clickbaitowy, ale w moim wypadku wcale nie było w nim aż tak dużej manipulacji ;).

Zastanawiasz się pewnie, czy w Twoim wypadku też możliwe jest uzyskanie takiego rezultatu? Zaraz opiszę jak to wyglądało u mnie i przekonasz się, czy to rozwiązanie również sprawdzi się u Ciebie.

Na początek kilka informacji. Pracuję na 3ds MaxieV-rayem Next. Mój komputer (i7 4930k) może nie ma aż 7 lat, ale ponad 6,5 roku. Zakupiłem go w roku 2014 w listopadzie, więc jak na sprzęt tego typu, to już wieczność :). Nie był to wcale komputer z najwyższej półki na tamte czasy, ale służył mi w stopniu wystarczającym przez wiele lat.

Jednak dłuższe czasy renderowania coraz bardziej dają się we znaki. O ile nie przeszkadza mi czekanie na finalny render kilka godzin ponieważ zawsze staram się puszczać cięższe sceny na noc, o tyle w wypadku robienia wielu szybszych testów jest to jednak odczuwalne.

Jak przyspieszyć renderowanie na starym komputerze?

Co w takim razie można zrobić w wypadku, gdy nie chcemy/możemy wydać 10, 15, 20 tys na nowy komputer? Okazuje się, że prostym i skutecznym sposobem w moim wypadku było dokupienie nowej karty graficznej oraz przerzucenie się na liczenie na GPU.

Dotychczas jedyna karta jaką posiadałem to wysłużony Radeon R9 290. Dodatkowo wcześniej nigdy nie liczyłem nic na GPU. Ograniczałem się do liczenia na CPU z kilku powodów: z przyzwyczajenia oraz z faktu, że moja karta jest raczej na to za słaba. Dodatkowo na kartach AMD z tego co wiem po prostu nie można liczyć korzystając z V-raya GPU :).

Aby móc liczyć na GPU potrzebujemy karty firmy NVidia. Wybór padł zatem na kartę 2080 Super, która kosztowała mnie 3073.81 zł. Nie musiałem wprowadzać żadnych dodatkowych modyfikacji w swoim komputerze, aby z niej skorzystać. Mam dość mocny zasilacz 850 W, który bez problemu poradzi sobie z zasileniem dwóch kart i reszty komputera.

Może nie dla wszystkich jest to jasne, ale nie wymieniłem wcale swojej starej karty R9 na nowszą. Dołożyłem do komputera po prostu dodatkowo kartę 2080 Super. Dzięki takiemu rozwiązaniu starsza karta służy mi do wyświetlania tak jak dotychczas ekranów, a nowsza czeka tylko spokojnie aż przydzielę jej jakieś zadanie :). Dzięki takiemu rozwiązaniu możemy wykorzystać całą moc karty do obliczeń i nadal swobodnie korzystać z komputera. 

Dodatkowo jest ono bardzo proste w realizacji. Wystarczy kupić kartę, włożyć, podłączyć dwa kable zasilające, zainstalować sterowniki i gotowe!

Pierwsze uruchomienie 3ds Maxa

Po kolejnym włączeniu 3ds Maxa przełączamy się w Assign Rednerer na V-ray GPU Next. W zakładce Preferences możemy rozwinąć zakładkę V-ray GPU Render Devices Select i sprawdzić czy widoczna jest nasza nowa karta. W moim wypadku nie było żadnego problemu z jej wykryciem. Możemy zatem przejść do renderowania.

Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 01

Testy GPU vs CPU

Postanowiłem, że najprościej będzie sprawdzić różnicę w czasie liczenia na starych scenach, które już mam. Poniżej możecie zobaczyć kilka przykładów scen, które przeliczyłem. Nie dokonywałem w nich praktycznie żadnych zmian. Jedyne co zrobiłem to przełączyłem sposób liczenia z Bucket na Progressive i ustawiłem Noise limit na 0,01 i sprawdzałem czasy liczenia poszczególnych scen. Celowo nie włączałem VrayDenoisera, aby wizualizacje nie były na koniec wygładzane.

Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 02Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 02Przykład: po lewej render liczony na CPU: 20 minut,  po prawej na GPU: 4,5 minuty

W niektórych przypadkach można zauważyć drobne różnice, ale przyznam, że nie zagłębiałem się do końca z czego one wynikały.

Niestety w przypadku niektórych scen jakość finalnych wizualizacji mimo ustawionego tego samego limitu Noise różniła się. Podczas liczenia na CPU wyglądało na to, że limit 0,01 został już dawno osiągnięty, ale proces liczenia nadal trwał. Nastomiast w wypadku GPU liczenie zakończyło się po teoretycznym osiągnięciu poziomu 0,01, a mimo tego render wydawał się nadal trochę za bardzo zaszumiony. Jednak miałem głównie taki problem w scenie z kuchnią, gdzie jest dużo niejednolitych powierzchni i tekstur, więc zakładam, że wynikało to z tego.

Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 03Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 03Przykład: po lewej render liczony na CPU: 56 minut,  po prawej na GPU: 13 minuty

Jak widzicie na przykładach, praktycznie w każdym wypadku liczenie na GPU trwało około aż 4-5x mniej czasu niż na CPU.

Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 04Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 04Przykład: po lewej render liczony na CPU: 60 min, po prawej na GPU: 10 minut.

Tak naprawdę licząc na CPU nadal jest możliwe uzyskanie podobnych czasów. Jednak w takim wypadku trzeba skorzystać ze sposobu obliczania - Irradiance Map, a nie Brute Force. Jeśli tak zrobimy to możemy uzyskać podobne czasy co GPU, ale jakość będzie zdecydowanie gorsza. Sami możecie zobaczyć na przykładzie poniżej.

Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 05Jak skrócić czas renderowania 5-krotnie. Pierwsze wrażenia z renderowania na GPU. - 05Przykład: po lewej liczony na GPU: 5 minut, po prawej liczony na CPU z Irradiance Map: 5 minut

Wady i zalety liczenia na GPU

Przyznam, że artykuł ten można potraktować bardziej jako “pierwsze wrażenia” niż dogłębną analizę porównawczą, ale część potencjalnych wad i zalet mogę już wskazać :)

Zalety liczenia z wykorzystaniem GPU:

  • Jak widać zupełnie nową kartę możemy wykorzystać nawet w naprawdę starym komputerze, dzięki czemu możemy w łatwy sposób poprawić jego osiągi. W wypadku procesorów nie mamy takiej wygody. Podstawki pod procesory zmieniają się raczej dość regularnie i procesora z obecnej generacji na pewno nie będziemy mogli włożyć do tak starej płyty głównej jak moja. Niestety jeśli komputer jest już leciwy, to nie będziemy mogli wykorzystać w 100% mocy nowej karty. W moim wypadku karta działa na około 85% swoich możliwości ponieważ ogranicza ją procesor.

    Tzw. bottleneck możecie sprawdzić np. na tej stronie - https://pc-builds.com/calculator/

  • Jeśli potrzebujemy więcej mocy obliczeniowej, to możemy rozbudować nasz komputer o kolejne karty. Prawdopodobnie do większości komputerów zmieszczą się bez problemu dwie karty, ale jeśli chcemy mieć 3 lub 4, to prawdopodobnie musimy wziąć to pod uwagę na samym początku gdy składamy komputer.

  • W razie, gdy pojawią się mocniejsze karty na rynku możemy wymienić kartę na nowszą i poprawić ponownie osiągi.

  • Finalny render na CPU jak i GPU wychodzi w większości przypadków identycznie. Nic nie stoi na przeszkodzie, aby przygotować scenę pod CPU i na koniec przełączyć się na GPU.

    Sam przygotowując kurs 3ds Max 2020 + V-ray Next - Wykonanie wizualizacji nowoczesnego wnętrza ustawiałem scenę pod CPU, a na koniec wszystko zostało przeliczone na GPU. Nie było żadnych problemów :)

  • Licząc na GPU nie musimy przejmować się takimi rzeczami jak plamy na renderach. Zasada w tym wypadku jest taka sama jak np. podczas korzystania z Corona Renderer, im dłużej pozwolimy się liczyć naszej wizualizacji tym lepszej jakości będzie. Światło oraz cienie będzie od samego początku poprawne, więc nie będzie żadnych dziwnych przepaleń oraz plam.

Minusy liczenia z korzystaniem GPU

  • Musimy być ostrożniejsi jeśli chodzi o zużycie pamięci. W wypadku, gdy posiadamy kartę z 8GB pamięci to tylko ta pamięć będzie wykorzystywana. Pamięć RAM komputera w tym wypadku będzie pomijana.

  • Rendeorwanie dużych scen może okazać się niemożliwe na standardowych kartach z niewielką pamięcią. Istnieje jednak możliwość połączenie dwóch kart ze sobą za pomocą nVlinka dzięki czemu łącząc dwie karty 8GB uzyskamy (około) 16GB pamięci do wykorzystania.

    Istnieją również modele kart z dużo większą pamięcią, jak 16GB, 24GB, jak Titan, czy Tesla, ale kosztują już na tyle dużo, że do liczenia na nich renderów raczej nie opłaca się ich kupować :)

    Dodatkowo w V-rayu mamy bardzo przydatną opcję - On-demand mip-mapped. Dzięki, której tekstury, które nie są widoczne na renderze są pomijane, a te, które nie muszą być wykorzystane w pełnej rozdzielczości - są zmniejszane. Możemy w ten sposób zaoszczędzić bardzo dużo pamięci naszej karty.

    Przykład wykorzystania tej opcji możecie zobaczyć na animacji poniżej przygotowanej przez studio Dabarti. Musicie przyznać, że wyglada to naprawdę imponująco :)

  • Przez część osób może nie być to traktowane jako wada, ale wypada o tym wspomnieć. Obliczając rendery na GPU nie mamy możliwości skorzystania z Irradiance Map, a jedynie z Brute Force. Osobiście jednak nie traktowałbym tego jako minus ponieważ z Irradiance Map są bardzo często problemy i cienie są praktycznie zawsze dużo gorszej jakości.


  • Brak możliwości skorzystania części silników renderujacych. Np. nie ma możliwości obliczania na GPU renderów korzystając z Corona Renderer ponieważ jest to silnik korzystający jedynie z CPU

  • Możliwe, że nie wszystkie wtyczki, które działają pod CPU będą działać pod GPU

Komu polecam liczenie na GPU

Tak naprawdę, to pewnie wszystkim, którzy tylko mają odpowiednio wydajne karty graficzne i korzystają z silnika, który działa na GPU. Sądzę, że liczenie na kartach graficznych to przyszłość i prędzej czy później wszystkie osoby, które wykonują wizualizacje przesiądą się na ten sposób obliczeń.

Wg mnie głównym ograniczeniem jest wielkość scen, ale nie przeprowadzałem na razie zbyt wiele testów, więc może okazać się, że standardowa karta 8GB jest w stanie dużo więcej udźwignąć niż mi się wydaje.

Na pewno liczenie na GPU świetnie sprawdzi się wśród osób, które zajmują się wizualizacjami wnętrz, produktami i niewielką architekturą.

A jakie są wasze odczucia? Przygotowujecie swoje rendery  na GPU, czy nadal pozostajecie wierni CPU? :)

Autor

Mateusz Ciećwierz Architekt, grafik 3d

Absolwent Wydziału Architektury Politechniki Warszawskiej. Założyciel serwisu CG Wisdom. Autor ponad 25 kursów z oprogramowania 3ds Max i V-ray. Fan gier, komiksów i starych samochodów.

Przeczytaj o programie 3ds Max na naszym blogu

Chcesz poznać program 3ds Max? Sprawdź nasz darmowy kurs online!