Jak gry 3D są tak wydajne? [Zamknięte]


188

Jest coś, czego nigdy nie zrozumiałem. Jak świetna, wielka gra na PC, taka jak GTA IV, może wykorzystywać 50% mojego procesora i działać z prędkością 60 klatek na sekundę, podczas gdy demo DX obracającego się czajnika @ 60 klatek na sekundę używa aż 30%?


124
Nie rozumiem, co jest nie tak z tym pytaniem - to zupełnie naturalne, że ciekawi mnie, jak inni programiści osiągnęli pewne rzeczy. Powinniśmy zachęcać do tego rodzaju ciekawości, nie karając jej bliskimi głosami.
John Feminella,

2
@ user146780: kto zadał pytanie ... Najlepsi programiści, których spotkałem, pracowali w CGI. Guru z SGI, ludzie pracujący nad paraliżowaniem Adobe Photoshop itp. Ludzie tutaj nie zdają sobie sprawy z tego, jak skomplikowane jest pisanie nowoczesnej gry ani jak wykwalifikowani są ci koderzy. Jeśli chcesz upokarzających wrażeń, zobacz, co zrobili Niemcy z Cryotech z silnikiem Crysis. Są filmy na Youtube. Po prostu nie uwierzysz. Nie chodzi tylko o „używanie oktetów”. Zazwyczaj ci programiści są po prostu znacznie bardziej wykwalifikowani niż przeciętni programiści. I możesz się założyć, że kodery GT4 są bardzo dobre.
Składnia T3rr0r

2
masz GTA4 z prędkością 60 klatek na sekundę !? GW! gta4 to POS, który działa dość słabo, słyszałem też, że Force unleashed też. Powiedziałbym, że winowajcą jest Euforia. szczerze mówiąc, „użycie procesora” jest bardzo kiepskim sposobem na porównanie, po prostu odczekaj liczbę klatek na sekundę i zobacz, który z nich działa najszybciej, to właściwy sposób na zrobienie tego. pamiętaj też, że ta „skomplikowana gra” może wprawdzie renderować wiele rzeczy, ale wciąż jest tylko ekran warty rzeczy, a jeśli jest renderowany we właściwej kolejności, możesz skończyć z prawie taką samą ilością pikseli, jak Twoja „prosta” wersja demo, a działanie pikseli naprawdę ją zabija.
mat

8
Potrzebujesz profilera, który pokazuje, ile zużywa procesor graficzny (Graphics Processing Unit). Założę się, że GTA IV pokazuje ~ 99%, a wersja demo 3%.
0scar

Z doświadczenia wynika, że ​​około 10% programistów gier, z którymi pracowałem, było w porządku, reszta w najlepszym razie była przeciętna. Niektórzy byli całkowicie niekompetentni.
Skizz

Odpowiedzi:


69

Ogólnie rzecz biorąc, ponieważ

  1. Gry są optymalne pod względem tego, co muszą renderować, oraz
  2. W szczególny sposób korzystają z twojego sprzętu.

Na przykład jedna łatwa optymalizacja, którą możesz wykonać, polega na tym, że nie próbuję narysować rzeczy, których nie widać. Rozważ złożoną scenę, taką jak pejzaż miejski z Grand Theft Auto IV . Mechanizm renderujący w rzeczywistości nie renderuje wszystkich budynków i konstrukcji. Zamiast tego renderuje tylko to, co widzi kamera. Gdybyś mógł latać na tyły tych samych budynków, twarzą do oryginalnego aparatu, zobaczyłbyś częściowo zbudowaną wydrążoną konstrukcję skorupy. Każdy punkt, którego kamera nie widzi, nie jest renderowany - ponieważ go nie widzisz, nie musisz próbować mu tego pokazywać.

Co więcej, zoptymalizowane instrukcje i specjalne techniki istnieją podczas opracowywania w oparciu o określony zestaw sprzętu, aby umożliwić jeszcze lepsze przyspieszenie.

Inną częścią twojego pytania jest to, dlaczego demo wykorzystuje tak dużo procesora:

... podczas gdy demo DX obracającego się czajnika @ 60 fps używa aż 30%?

Dema graficznych interfejsów API (takich jak dxdemo) często wracają do tak zwanego renderera oprogramowania, gdy twój sprzęt nie obsługuje wszystkich funkcji potrzebnych do pokazania ładnego przykładu. Funkcje te mogą obejmować takie cienie, odbicie, śledzenie promieni, fizykę i tak dalej.

Naśladuje to działanie w pełni funkcjonalnego urządzenia sprzętowego, które prawdopodobnie nie będzie istnieć, aby pokazać wszystkie funkcje API. Ale ponieważ sprzęt tak naprawdę nie istnieje, zamiast tego działa na twoim procesorze. Jest to o wiele bardziej nieefektywne niż delegowanie na kartę graficzną - stąd duże zużycie procesora.


3
Demo DX również używa twojego sprzętu. Więc co jest „specjalnego”?
tur1ng

3
ale jest mało prawdopodobne, aby wersja demo była optymalna.
µBio

2
@ tur1ng, na przykład, demo czajnika mogło włączyć odbicia , cienie i inne efekty.
Nick Dandoulakis,

2
Czajnik może mieć więcej wielokątów niż scena GTA4. Faktem jest, że obecne wąskie gardło w renderowaniu graficznym to więcej efektów tekstur, takich jak techniki pochodne mapowania wypukłości w celu dodania szczegółów i innych efektów po renderowaniu.
Klaim

5
Tekstury - czajniczek powstaje z dużej liczby pojedynczych trójkątów, wszystkie z normalnymi i interakcjami świetlnymi. To, co wygląda w niesamowicie złożonym świecie 3D w grze, to często dość proste duże bloki pokryte szczegółowym obrazem. Dużo „3d” to sprytne efekty artystyczne cienia i perspektywy na statycznym obrazie 2D narysowanym na kształcie 3d
Martin Beckett

96

Cierpliwość, umiejętności techniczne i wytrzymałość.

Po pierwsze, demo DX jest przede wszystkim pomocą dydaktyczną, więc robi się to dla przejrzystości, a nie szybkości wykonania.

Jest to dość duży temat, który może ulec kondensacji, ale tworzenie gier polega przede wszystkim na zrozumieniu danych i ścieżek wykonania w prawie patologicznym stopniu.

  1. Kod tworzony jest wokół dwóch rzeczy - danych i docelowego sprzętu.
  2. Najszybszy kod to kod, który nigdy nie zostanie wykonany - posortuj dane na partie i wykonuj tylko kosztowne operacje na danych, których potrzebujesz
  3. Sposób przechowywania danych jest kluczowy - dążenie do ciągłego dostępu pozwala na szybkie przetwarzanie wsadowe.
  4. Parellise wszystko, co możesz
  5. Nowoczesne procesory są szybkie, nowoczesna pamięć RAM jest bardzo wolna. Chybienia w pamięci podręcznej są śmiertelne.
  6. Wciśnij tyle GPU, ile możesz - ma szybką pamięć lokalną, dzięki czemu możesz przeglądać dane, ale musisz pomóc, organizując dane poprawnie.
  7. Unikaj wykonywania wielu przełączników stanu renderowania (ponownie grupuj podobne dane wierzchołków razem), ponieważ powoduje to zatrzymanie GPU
  8. Zmieniaj tekstury i upewnij się, że mają potęgę dwóch - to poprawia wydajność pamięci podręcznej tekstur na GPU.
  9. Używaj jak najwięcej poziomów szczegółowości - wersje modeli 3D o niskiej / średniej / wysokiej wartości i przełączaj w zależności od odległości od odtwarzacza - nie ma sensu renderować wersji wysokiej rozdzielczości, jeśli ma tylko 5 pikseli na ekranie.

39

Gry 3D świetnie oszukują twoje oczy. Na przykład istnieje technika zwana okluzją otoczenia przestrzeni ekranu (SSAO), która zapewni bardziej realistyczne wrażenie poprzez zacienianie tych części sceny, które są bliskie nieciągłości powierzchni. Jeśli spojrzysz na narożniki ściany, zobaczysz, że wydają się one nieco ciemniejsze niż centra w większości przypadków.

Ten sam efekt można osiągnąć za pomocą radia opartego na dość dokładnej symulacji. Radość będzie również uwzględniać więcej efektów odbijających się świateł itp., Ale jest kosztowna obliczeniowo - to technika śledzenia promieni.

To tylko przykład. Istnieją setki algorytmów do grafiki komputerowej w czasie rzeczywistym i są one zasadniczo oparte na dobrych przybliżeniach i zwykle przyjmują wiele założeń. Na przykład sortowanie przestrzenne musi być wybierane bardzo ostrożnie w zależności od prędkości, typowego położenia kamery, a także ilości zmian w geometrii sceny.

Te „optymalizacje” są ogromne - możesz skutecznie zaimplementować algorytm i sprawić, by działał 10 razy szybciej, ale wybranie inteligentnego algorytmu, który daje podobny wynik („oszustwo”), może sprawić, że przejdziesz z O (N ^ 4) na O ( log (N)).

Optymalizacja rzeczywistej implementacji sprawia, że ​​gry są jeszcze bardziej wydajne, ale jest to tylko optymalizacja liniowa.


30

Eeeeek!

Wiem, że to pytanie jest stare, ale ekscytujące, że nikt nie wspomniał o VSync !!! ???

Porównywałeś użycie procesora w grze przy 60 klatkach na sekundę do użycia procesora w demonstracji czajnika przy 60 klatkach na sekundę.

Czy nie jest oczywiste, że oba działają (mniej więcej) dokładnie przy 60 klatkach na sekundę? To prowadzi do odpowiedzi ...

Obie aplikacje działają z włączoną funkcją vsync! Oznacza to (stępiony), że liczba klatek na sekundę renderowania jest zablokowana na „pionowym przedziale pustych przestrzeni” monitora. Sprzęt graficzny (i / lub sterownik) będzie renderowany tylko z maksymalną prędkością. 60 klatek na sekundę 60 klatek na sekundę = 60 Hz (Hz = na sekundę) częstotliwość odświeżania. Prawdopodobnie używasz raczej starego, migoczącego CRT lub zwykłego wyświetlacza LCD. Na CRT pracującym z częstotliwością 100 Hz prawdopodobnie zobaczysz szybkość klatek do 100 Hz. VSync stosuje się również w podobny sposób jak wyświetlacze LCD (zwykle mają częstotliwość odświeżania 60 Hz).

Tak więc demo czajnika może działać znacznie wydajniej! Jeśli zużywa 30% czasu procesora (w porównaniu do 50% czasu procesora w GTA IV), to prawdopodobnie zużywa mniej czasu procesora na każdą ramkę i po prostu dłużej czeka na następny pionowy interwał zerowy. Aby porównać obie aplikacje, wyłącz vsync i zmierz ponownie (zmierzysz znacznie więcej FPS dla obu aplikacji).

Czasami można wyłączyć vsync (większość gier ma opcję w ustawieniach). Czasami zobaczysz „artefakty łzawiące”, gdy vsync jest wyłączony.

Możesz znaleźć szczegółowe informacje na temat tego i dlaczego jest on używany na wikipedii: http://en.wikipedia.org/wiki/Vsync


Zgadzam się, aby uzyskać lepsze porównanie, powinieneś wyłączyć vsync. Jednak sedno problemu nadal istnieje. 30% dla czajnika w porównaniu do 50% wykorzystania procesora w grze jest mniejszą różnicą, niż można by się normalnie spodziewać. Ale pamiętam na początku, kiedy mapowanie środowiska zaczęło być popularne, a fajne demo nVidii w tym czasie było wirującym czajnikiem z mapą środowiska. Te dema zwykle nawet nie osiągnęłyby 60 fps w ciągu dnia. Chodzi mi o to, że te dema czajników często przekraczają granice nowego efektu wizualnego.
Steve Wortham

25

Podczas gdy wiele odpowiedzi tutaj stanowi doskonałe wskazówki, jak zamiast tego odpowiem na prostsze pytanie, dlaczego

Być może najlepszym przykładem (z pewnością jednym z najbardziej znanych) jest oprogramowanie Id. Bardzo wcześnie zdali sobie sprawę, w czasach komandora Keena (na długo przed 3D), że wymyślenie sprytnego sposobu na osiągnięcie czegoś 1 , nawet jeśli opierał się na nowoczesnym sprzęcie (w tym przypadku karcie graficznej EGA!), Który był lepszy od grafiki konkurencja, dzięki której Twoja gra będzie się wyróżniać. Było to prawdą, ale dalej zdali sobie sprawę, że zamiast samodzielnie wymyślać nowe gry i treści, mogliby licencjonować tę technologię, uzyskując w ten sposób dochód od innych, jednocześnie będąc w stanie opracować silnik nowej generacji i tym samym ponownie przeskoczyć konkurencję .

Umiejętności tych programistów (w połączeniu z doświadczeniem biznesowym) uczyniły ich bogatymi.

To powiedziawszy, niekoniecznie pieniądze motywują takich ludzi. Prawdopodobnie tyle samo pragnienia do osiągnięcia, do osiągnięcia. Pieniądze, które zarobili na początku, po prostu oznaczają, że mają teraz czas, aby poświęcić się temu, co lubią. I podczas gdy wielu ma interesy zewnętrzne, prawie wszyscy nadal programują i próbują znaleźć sposoby na osiągnięcie lepszego efektu niż ostatnia iteracja.

Mówiąc wprost, osoba, która napisała demo czajnika, prawdopodobnie miała jeden lub więcej z następujących problemów:

  • mniej czasu
  • mniej zasobów
  • mniejsza motywacja do nagrody
  • mniej konkurencji wewnętrznej i zewnętrznej
  • mniejsze cele
  • mniej talentu

Te ostatnie mogą brzmieć ostro 2, ale najwyraźniej są tacy, którzy są lepsi od innych, krzywe dzwonowe czasami mają ekstremalne końce i zwykle przyciągają je odpowiednie krańcowe końce tego, co dzieje się z tą umiejętnością.

Głównym powodem są prawdopodobnie mniejsze cele. Demo czajnika było właśnie tym celem. Ale nie demonstracja umiejętności programistów 3 . Byłaby to wersja demonstracyjna jednego małego aspektu (dużego) systemu operacyjnego, w tym przypadku renderowania DX.

Dla tych, którzy oglądają demo, nie ma znaczenia, że ​​zużywa znacznie więcej procesora niż jest to wymagane , o ile wygląda wystarczająco dobrze. Nie byłoby zachęty do eliminowania odpadów, gdyby nie było beneficjenta. Dla porównania, gra chciałaby mieć wolne cykle dla lepszego AI, lepszego dźwięku, więcej wielokątów, więcej efektów.


  1. w takim przypadku płynne przewijanie na komputerze
  2. Prawdopodobnie bardziej niż ja, więc jesteśmy tego pewni
  3. Ściśle mówiąc, byłby to również demo dla jego / jej menedżera, ale znowu napędem byłby czas i / lub jakość wizualna.

17

Z kilku powodów

  • Silniki gier 3D są wysoce zoptymalizowane
  • większość pracy wykonuje karta graficzna
  • 50% Hm, zgaduję, że masz podwójny rdzeń i używany jest tylko jeden rdzeń ;-)

EDYCJA: Aby podać kilka liczb

2,8 Ghz Athlon-64 z procesorem graficznym NV-6800. Wyniki są następujące:

  • Procesor: 72,78 Mflops
  • GPU: 2440,32 Mflops

@stacker: czy sugerujesz, że wszystkie obliczenia, które mają miejsce w najlepszych grach 3D, które nie są wykonywane przez GPU, są w rzeczywistości jednowątkowe i mogłyby przypadkowo wypełnić 100% procesora? Czyli gry będą powiązane z jednym rdzeniem innym niż GPU? Uważam, że bardzo trudno uwierzyć.
SyntaxT3rr0r

4
Nie oznacza to, że program jest monowątkowy - po prostu implikuje, że co najmniej jeden wątek rozwija się tak szybko, jak to możliwe. Co jest rozsądne, ponieważ dlaczego miałbyś chcieć działać wolniej? Z drugiej strony wiele gier jest prawie w całości mono-wątkowych. Bardzo trudno jest pisać skomplikowane symulacje w efektywny sposób podczas wielowątkowości, ponieważ typowa sytuacja w systemach współbieżnych / rozproszonych polegająca na akceptowaniu nieco większego opóźnienia w celu zakupu większej przepustowości nie jest dobra dla gry, która ma reagować.
Kylotan

8

Czasami scena może mieć więcej niż się wydaje. Na przykład, obracany czajniczek z tysiącami wierzchołków, mapowaniem środowiska, mapowaniem wypukłości i innymi złożonymi modułami cieniującymi piksele, które są renderowane jednocześnie, wymaga dużej ilości przetwarzania. Wiele razy te demo czajników mają po prostu pokazać jakiś efekt specjalny. Nie zawsze mogą też najlepiej wykorzystywać procesor graficzny, gdy absolutna wydajność nie jest celem.

W grze możesz zobaczyć podobne efekty, ale zwykle są one wykonywane w sposób kompromisowy, aby zmaksymalizować liczbę klatek na sekundę. Te optymalizacje obejmują wszystko, co widzisz w grze. Powstaje pytanie: „Jak możemy stworzyć najbardziej spektakularną i realistyczną scenę przy minimalnej mocy obliczeniowej?” To sprawia, że ​​programiści gier są jednymi z najlepszych optymalizatorów.


4
  1. Zarządzanie scenami. kd-drzewa, frustrum ubijanie, bsps, heirarchiczne obwiednie, zestawy częściowej widoczności.
  2. LOD. Zamieniając wersje z niższymi szczegółami, aby zastąpić odległe obiekty.
  3. Oszuści. Jak LOD, ale nawet obiekt nie jest tylko obrazem czy „billboardem”.
  4. SIMD.
  5. Niestandardowe zarządzanie pamięcią. Wyrównana pamięć, mniej fragmentacji.
  6. Niestandardowe struktury danych (tj. Brak STL, względnie minimalne szablony).
  7. Montaż w miejscach, głównie na SIMD.

4

Przy wszystkich udzielonych kwalifikowanych i dobrych odpowiedziach wciąż brakuje jednej ważnej: Licznik wykorzystania procesora w systemie Windows nie jest bardzo niezawodny. Myślę, że to proste demo czajnika po prostu wywołuje funkcję renderowania w swojej bezczynnej pętli, blokując wymianę bufora.

Teraz licznik wykorzystania procesora w systemie Windows sprawdza tylko, ile czasu procesora jest poświęcane w ramach każdego procesu, ale nie w jaki sposób ten czas procesora jest wykorzystywany. Spróbuj dodać

Sleep(0);

zaraz po powrocie z funkcji renderowania i porównaj.


Miałem demo czajnika DX, który zawsze zużywał 25% mojego procesora. Okazało się, że to dlatego, że byłem na quadzie i aby zablokować pętlę gry przy 60 fps, miałem pętlę „Jesteśmy tam jeszcze”, która ciągle sprawdzała czas. Zmieniłem go na tryb uśpienia (timeToNextFrame), a użycie procesora spadło prawie do zera
Jonathan Pierce

3

Ponadto istnieje wiele wielu sztuczek z artystycznego punktu widzenia w celu oszczędzania mocy obliczeniowej. W wielu grach, zwłaszcza starszych, cienie są wstępnie obliczane i „wypiekane” bezpośrednio do tekstur mapy. Wiele razy artyści próbowali używać samolotów (dwóch trójkątów) do reprezentowania rzeczy takich jak drzewa i efekty specjalne, kiedy wyglądałyby w większości tak samo. Mgła w grach jest łatwym sposobem na uniknięcie renderowania odległych obiektów i często gry miałyby wiele rozdzielczości każdego obiektu dla widoków dalekich, średnich i bliskich.


1

Trzon każdej odpowiedzi powinien być taki - Transformacje, które wykonują silniki 3D, są najczęściej określane w dodatkach i mnożeniach (algebra liniowa) (bez rozgałęzień lub skoków), operacje rysowania pojedynczej klatki są często określane w taki sposób, że wielokrotność takie zadania add-mula można wykonywać równolegle. Rdzenie GPU są bardzo dobrymi dodatkami i mają dziesiątki lub setki dodatków.

Procesorowi pozostawia się wykonywanie prostych czynności - takich jak sztuczna inteligencja i inna logika gry.


1

Jak świetna, wielka gra na PC, taka jak GTA IV, może wykorzystywać 50% mojego procesora i działać z prędkością 60 klatek na sekundę, podczas gdy demo DX obracającego się czajnika @ 60 klatek na sekundę używa aż 30%?

Chociaż GTA jest prawdopodobnie bardziej wydajna niż wersja DX, pomiar wydajności procesora w ten sposób jest zasadniczo zepsuty. Wydajność można określić np. Przez ilość pracy wykonanej w danym czasie. Prosty kontrprzykład: spawnuj jeden wątek na logiczny procesor i pozwól na uruchomienie prostej nieskończonej pętli. Otrzymasz zużycie procesora w 100%, ale nie jest to wydajne, ponieważ nie wykonuje się żadnej użytecznej pracy.

To także prowadzi do odpowiedzi: jak gra może być wydajna? Podczas programowania „świetnych dużych gier” poświęcony jest wielki wysiłek, aby zoptymalizować grę we wszystkich aspektach (co obecnie zwykle obejmuje również optymalizację wielordzeniową). Jeśli chodzi o wersję demonstracyjną DX, jej celem nie jest szybkie działanie, ale raczej demonstrowanie koncepcji.


1

Myślę, że powinieneś przyjrzeć się wykorzystaniu GPU zamiast procesora ... Założę się, że karta graficzna jest znacznie bardziej obciążona w GTA IV niż w próbce Teapot (powinna być praktycznie bezczynna).

Może możesz użyć czegoś takiego jak ten monitor, aby sprawdzić, czy:

http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html

Warto również rozważyć liczbę klatek na sekundę, być może próbka czajnika działa z pełną prędkością (może 1000 fps), a większość gier jest ograniczona do częstotliwości odświeżania monitora (około 60 fps).


1

Spójrz na odpowiedź na vsync; dlatego działają z tą samą liczbą klatek na sekundę.

Po drugie, procesor nie trafia w grę. Uproszczone wyjaśnienie jest takie, że główna pętla gry jest po prostu nieskończoną pętlą:

while(1) { 
  update();
  render();
}

Nawet jeśli twoja gra (lub w tym przypadku czajnik) nie robi wiele, wciąż zjadasz procesor w swojej pętli.

50% procesora w GTA jest „bardziej produktywne” niż 30% w wersji demo, ponieważ bardziej niż prawdopodobne, że w ogóle nie robi wiele; ale GTA aktualizuje mnóstwo szczegółów. Nawet dodanie do wersji demonstracyjnej „Sleep (10)” prawdopodobnie obniży wydajność procesora o tonę.

Na koniec spójrz na użycie GPU. Wersja demo prawdopodobnie zajmuje <1% na nowoczesnej karcie graficznej, podczas gdy GTA prawdopodobnie zdobędzie większość podczas gry.

Krótko mówiąc, twoje testy porównawcze i pomiary nie są dokładne.


1

Demo czajnika DX nie zużywa 30% procesora wykonującego użyteczną pracę. Jest zajęty, ponieważ nie ma nic innego do roboty.


0

Z tego, co wiem o serii Unreal, niektóre konwencje są łamane jak enkapsulacja. Kod jest kompilowany do kodu bajtowego lub bezpośrednio do kodu maszynowego w zależności od gry. Ponadto obiekty są renderowane i pakowane w postaci siatek, a rzeczy takie jak tekstury, oświetlenie i cienie są wstępnie obliczane, podczas gdy jako czysta animacja 3D wymaga tego w czasie rzeczywistym. Gdy gra jest uruchomiona, istnieją również pewne optymalizacje, takie jak renderowanie tylko widocznych części obiektu i wyświetlanie szczegółów tekstury tylko przy zbliżeniu. Wreszcie jest prawdopodobne, że gry wideo są zaprojektowane w taki sposób, aby jak najlepiej wykorzystać platformę w danym momencie (np .: Intelx86 MMX / SSE, DirectX, ...).


0

Myślę, że brakuje tutaj ważnej części odpowiedzi. Większość odpowiedzi mówi „Poznaj swoje dane”. Faktem jest, że musisz w ten sam sposób i z takim samym stopniem ważności znać także:

  • Procesor (zegar i pamięci podręczne)
  • Pamięć (częstotliwość i opóźnienie)
  • Dysk twardy (pod względem prędkości i czasu wyszukiwania)
  • GPU (liczba rdzeni, zegar i jego pamięć / pamięci podręczne)
  • Interfejsy: kontrolery Sata, wersje PCI itp.

ALE , ponadto, przy obecnych współczesnych komputerach, nigdy nie byłbyś w stanie odtwarzać prawdziwego wideo 1080p przy >> 30ftp (pojedynczy obraz 1080p w 64 bitach zająłby 15 000 Ko / 14,9 MB). Powodem tego jest próbkowanie / precyzja. Gra wideo nigdy nie używałaby podwójnej precyzji (64 bity) dla pikseli, obrazów, danych itp., Ale raczej używałaby niższej niestandardowej precyzji (~ 4-8 bitów), a czasami mniejszej precyzji przeskalowanej technikami interpolacji, aby umożliwić rozsądne obliczenia czas.

Istnieją również inne techniki, takie jak obcinanie danych (zarówno ze standardem OpenGL, jak i implementacją oprogramowania), kompresja danych itp. Należy również pamiętać, że obecne procesory graficzne mogą być> 300 razy szybsze niż obecne procesory pod względem możliwości sprzętowych. Jednak dobry programista może uzyskać współczynnik 10-20x, chyba że twój problem jest w pełni zoptymalizowany i całkowicie możliwy do zrównoleglenia (szczególnie zrównoleglenie zadania).

Z doświadczenia mogę powiedzieć, że optymalizacja jest jak krzywa wykładnicza. Aby osiągnąć optymalną wydajność, wymagany czas może być niezwykle ważny.

Aby wrócić do czajnika, powinieneś zobaczyć, w jaki sposób geometria jest reprezentowana, próbkowana i z jaką precyzją Vs widać w GTA 5, pod względem geometrii / tekstur i, co najważniejsze, szczegółów (precyzja, próbkowanie itp.)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.