Czy renderujesz biliony „atomów” zamiast wielokątów?


9

Właśnie widziałem film o tym, co wydawcy nazywają „kolejnym ważnym krokiem po wynalezieniu 3D”. Według osoby mówiącej, używają ogromnej ilości atomów pogrupowanych w chmury zamiast wielokątów, aby osiągnąć poziom nieograniczonej liczby szczegółów .

Starali się, aby film był zrozumiały dla osób nie znających żadnych technik renderowania, dlatego też lub w innych celach pominięto wszystkie szczegóły dotyczące działania ich silnika.

Poziom szczegółowości ich wideo wydaje mi się imponujący.

  • Jak można renderować sceny przy użyciu niestandardowych atomów zamiast wielokątów na obecnym sprzęcie? (Prędkość, pamięć)
  • Jeśli to prawda, to dlaczego nikt jeszcze o tym nie myślał?

Jako deweloper OpenGL bardzo mnie to dziwi i bardzo chciałbym usłyszeć, co mają do powiedzenia eksperci. Dlatego też nie chcę, aby wyglądało to jak tania reklama i będzie zawierać link do filmu tylko na żądanie, w sekcji komentarzy.


7
Cóż, wymyślili najbardziej rewolucyjną rzecz od początku grafiki komputerowej, ale nie wiedzą, ile milimetrów mieści się w calach, co to mówi.

2
Są tak ograniczone w szczegółach (wybaczcie kalambur) na temat swojej technologii, że dyskusja jest trudna. Z tego, co rozumiem na podstawie filmu, jest to 20 kl./sw oprogramowaniu. Widzę dużo geometrii statycznej, całą masę instancji i nie wiem, ile danych jest wstępnie obliczanych lub generowanych w locie. Nadal ciekawe. Nie chciałbym nazywać shenanigan całkowicie. Nie z pozyskanymi funduszami, choć nie znaczy to wiele.
Bart

8
Zawsze jest podejrzane, że ktoś wysuwa fantastyczne roszczenia i pokazuje tylko materiał z czegoś zupełnie niezwiązanego (np. Crysis). Tym bardziej, jeśli istnieją takie twierdzenia, jak „technologia stosowana w medycynie / podróżach kosmicznych” i mieszanie kilku rzeczy, które nie mają ze sobą nic wspólnego. Z pewnością możliwe jest wytworzenie (prawie) nieskończonych szczegółów proceduralnie i z pewnością jest to możliwe. Co z tego, każde demo mandelbrot z 1984 roku może to zrobić. Twierdzi się jednak, że renderują obiekty takie jak ten słoń w nieskończonych szczegółach. A to tylko pierdoły, bo nie mogą.

8
„Twoja grafika ma się polepszyć 100 razy.” Roszczenia nadzwyczajne wymagają nadzwyczajnych dowodów.
Brad Larson

11
Notch napisał dwa posty na blogu o tym filmie.
Kevin Yap

Odpowiedzi:


11

Łatwo to zrobić. Używając Octtree, po prostu dzielisz świat na stopniowo mniejsze części, aż osiągniesz wymagany poziom szczegółowości. Może to być na przykład rozmiar ziarna piasku. Pomyśl, że Minecraft doprowadził do skrajności.

Co więc renderujesz? Jeśli szczegół jest wystarczająco mały, możesz rozważyć renderowanie bloków - węzłów liści octree. Inne opcje obejmują kule, a nawet prymityw geometryczny. Kolor i normalna mogą być przechowywane w każdym węźle, a dla zredukowanego LOD można przechowywać złożone informacje na wyższych poziomach drzewa.

Jak możesz zarządzać tak dużą ilością danych? Jeśli drzewo jest faktyczną strukturą danych, możesz mieć wiele wskaźników odnoszących się do tych samych poddrzewa, podobnie jak ponowne użycie tekstury, ale obejmuje również geometrię. Sztuką jest, aby uzyskać jak najwięcej możliwości ponownego wykorzystania na wszystkich poziomach. Na przykład, jeśli połączysz 4 oktany w układzie czworościennym wszystkie z tym samym węzłem potomnym na wszystkich poziomach, możesz zrobić bardzo duży fraktal sierpinsky'ego 3d prawie bez pamięci. Rzeczywista scena będzie oczywiście znacznie większa.

Problem polega na tym, że będzie działać tylko w przypadku geometrii statycznej, ponieważ rzeczywista animacja wymagałaby manipulacji wszystkimi tymi danymi w każdej klatce. Renderowanie jednak, zwłaszcza ze zmienną LOD, nie stanowi problemu.

Jak renderować coś takiego? Jestem wielkim fanem ray tracingu i radzi sobie całkiem dobrze z tego typu procesorami i bez nich.

Wszystko to oczywiście spekulacje. Nie mam konkretnych informacji na temat sprawy, o której mówisz. A teraz coś pokrewnego, ale innego:

Ogromna ilość renderowanych danych

EDYCJA I oto jedna, którą zrobiłem, ale celowo zmieniłem normalne, aby pola były bardziej widoczne:

Królik Stanforda w wokselach

Ta liczba klatek była na jednym rdzeniu IIRC. Podwojenie głębokości drzewa ogólnie zmniejsza szybkość klatek o połowę, a użycie wielu rdzeni będzie dobrze skalować. Zwykle trzymam prymitywy (trójkąty i tym podobne) w moim octree, ale dla uśmiechów postanowiłem w tym przypadku renderować węzły liści samego drzewa. Lepszą wydajność można uzyskać, optymalizując konkretną metodę.

Gdzieś na ompf jest samochód z wokselami, który jest naprawdę fantastyczny - poza tym, że jest statyczny. Teraz nie mogę go znaleźć ...


Zgadzam się z tą oceną: sam oglądałem wideo i byłem zaskoczony, jak statyczne są ich sceny (zabawne, gdy porównują je z trawą wielokątną; przynajmniej wieje wiatr, podczas gdy ich wyraźnie nie jest).
dzisiaj

1
Niestety linki są martwe.
Joachim Sauer

1
@ JoachimSauer Rzeczywiście, forum OMPF upadło jakiś czas temu. Bezpośrednia wymiana jest dostępna tutaj, ale nie wiem, czy jakakolwiek treść została poddana migracji.
Bart

Nie wygląda na to. Wyszukiwanie „króliczka” na tym forum nie daje mi żadnych wyników.
Joachim Sauer

pierwszy link otwiera okna wyskakujące i ostrzega o polu -1
NimChimpsky

6
  • Jak można renderować sceny przy użyciu niestandardowych atomów zamiast wielokątów na obecnym sprzęcie? (Prędkość, pamięć)

Po obejrzeniu filmu nic mi nie wskazuje, że użyto specjalnego sprzętu. W rzeczywistości stwierdzono, że działa to w oprogramowaniu przy 20 klatkach na sekundę, chyba że coś przeoczyłem.

Być może zdziwisz się, wiedząc, że wprowadzono wiele zmian w renderowaniu w czasie rzeczywistym przy użyciu różnych technologii, takich jak ray tracing, renderowanie wokseli i rozpryskiwanie powierzchni. Trudno jednak powiedzieć, co zostało użyte w tym przypadku. (Jeśli jesteś zainteresowany, zajrzyj na http://igad2.nhtv.nl/ompf2/, aby uzyskać świetne forum śledzenia promieni w czasie rzeczywistym, lub http://www.atomontage.com/, aby uzyskać interesujący silnik wokseli. Google „powierzchniowe rozpryski” dla świetnych linków na ten temat)

Jeśli spojrzysz na film, zauważysz, że cała geometria jest statyczna i chociaż jest szczegółowa, istnieje wiele powtórzeń obiektów, co może sugerować wystąpienie.

I najprawdopodobniej będzie dużo agresywnego uboju, poziomów szczegółowości i podziału przestrzeni.

Jeśli spojrzysz na jakość wizualną (nie na złożoność geometryczną), nie wygląda to aż tak imponująco. W rzeczywistości wygląda dość płasko. Pokazane cienie mogą zostać zapisane w danych i nie mogą być oceniane w czasie rzeczywistym.

Bardzo chciałbym zobaczyć demo z animowaną geometrią i dynamicznym oświetleniem.

  • Jeśli to prawda, to dlaczego nikt jeszcze o tym nie myślał?

O ile się całkowicie nie mylę (i nie byłby to mój pierwszy raz), moja pierwsza odpowiedź sugerowałaby (być może bardzo sprytne) wykorzystanie istniejącej technologii, być może zoptymalizowanej i rozbudowanej do stworzenia tego dema. Jednak przekształcenie go w prawdziwy silnik gry, z wszystkimi innymi zadaniami oprócz renderowania geometrii statycznej, która obejmuje, to zupełnie inna gra w piłkę.

Oczywiście wszystko to jest czystą spekulacją (co sprawia mi dużo zabawy). Mówię tylko, że niekoniecznie jest to podróbka (w rzeczywistości nie sądzę, że jest i nadal jestem pod wrażeniem), ale prawdopodobnie nie jest tak przełomowa, jak się wydaje.


5

Atomy te w rzeczywistości nie są tak magiczne / specjalne / obce w obecnym sprzęcie graficznym. To tylko rodzaj renderowania opartego na chmurze punktów lub wokselach. Zamiast trójkątów wyświetlają punkty lub ramki, co jest nieosiągalne przy obecnym sprzęcie.

Zostało to już zrobione i nie jest super wynalazkiem, ale może wymyślili bardziej wydajny sposób na zaoszczędzenie pamięci i czasu. Chociaż wygląda i brzmi dość interesująco, powinieneś wziąć ten film z odrobiną soli. Renderowanie 100 000 punktów zamiast w pełni teksturowanego wielokąta (który zajmuje już tylko kilka pikseli na ekranie) nie poprawia jakości grafiki o współczynnik 100 000.

A tak przy okazji, słyszałem, że oprogramowanie id wypróbowuje także przyspieszone renderowanie wokseli na GPU, ale mam większe zaufanie do Johna Carmacka niż do głośnika tego filmu :)


2

To był oszustwo inwestycyjne.

Co do pomysłu, nie jest to możliwe na obecnym niewydzielonym sprzęcie. Liczba punktów, których trzeba by uniknąć, patrząc na coś z bliska, znacznie przewyższa liczbę punktów, które można strzelić w dzisiejszej pamięci RAM. Nawet jeśli nie znam żadnych struktur danych ani algorytmów wyszukiwania, które mogłyby dać cokolwiek w pobliżu wydajności pokazanej w wersji demonstracyjnej. I nawet jeśli w jakiś sposób możliwe było przeszukiwanie tych punktów w czasie rzeczywistym, brak pamięci podręcznej i przepustowość pamięci zapewniłyby, że nie możesz.

Nie wątpię w to, że takich obrazów nie można uzyskać w czasie rzeczywistym, tylko nie przy użyciu przedstawionej metody. Domyślam się, że wersje demonstracyjne zostały wykonane przy użyciu wokseli, które są używane od dziesięcioleci i mogą już generować dość wysokie szczegóły w czasie rzeczywistym: http://www.youtube.com/watch?v=BKEfxM6girI http://www.youtube .com / watch? v = VpEpAFGplnI


2
„To był oszustwo inwestycyjne” ... na czym się opierasz? Zwłaszcza biorąc pod uwagę ostatnio pozyskane środki i przesyłane dzisiaj filmy?
Bart

1
Jakie filmy Nie aktualizowali się od ponad roku.
Hannesh

1
youtube.com/user/EuclideonOfficial według posta OP w komentarzach.
Bart

1

Z tego, co widziałem, wygląda na to, że używają parametrycznych kształtów zamiast prostych kształtów wielokątów - innymi słowy zmieniają geometrię zgodnie z wymaganą rozdzielczością.

Można to zrobić za pomocą technik takich jak shadery geometrii i szum perlin.

Inną możliwością jest użycie GPGPU (np. CUDA) do renderowania sceny zawierającej elementy inne niż wielokąty oraz do wykonywania śledzenia promieni (dla kolejności Z i cieni). Inną możliwością jest niestandardowy sprzęt, który renderuje formuły zamiast trójkątów


0

Myślę o wszystkich ich twierdzeniach, że kompresja pamięci wydaje się przesadą, mogłem zrozumieć coś w rodzaju kompresji RLE, która ma wielki wpływ. W końcu myślę, że ten system będzie miał wiele „zalet”, ale wiele „wad”, podobnie jak raytracing lub renderowanie izo powierzchni z marszowymi kostkami.

Jeśli chodzi o oddawanie „trylionów” atomów; Nie sądzę, że tak mówią. Zamiast tego szukają atomów W * H, tj. Jednego atomu na piksel na ekranie. Można to osiągnąć na wiele powolnych, trudnych sposobów. Niektóre sposoby na przyspieszenie tego procesu to drzewa KD, drzewa BSP, ósemki itp. Ostatecznie jednak sortowanych jest wiele danych, a fakt, że ich demo najwyraźniej sortuje 1440 x 720 atomów, więcej niż raz na klatkę, ze względu na cienie / odbicia w demie, jest niesamowity. Cóż za cuda!


-1

sposób, w jaki działa, jest znacznie prostszy, niż mogłoby się wydawać, zamiast wstępnego ładowania powiedzieć, że poziom gry ładuje tylko jeden ekran, jeden lub kilka atomów na piksel na ekranie, nic więcej, gra / silnik następnie przewiduje, co kolejne klatki są i to jest jedyna ładowana rzecz, renderowana jest tylko część widocznego obiektu, a nie cały obiekt. Wady: tyle rozdzielczości i rozdzielczości, ile monitor może obsłużyć, niskie zużycie pamięci CONS: szybkość odczytu z dysku jest dość duża i może prowadzić do niskiej liczby klatek na sekundę.


wydaje się, że nie oferuje to nic istotnego w porównaniu z punktami przedstawionymi i wyjaśnionymi w poprzednich 7 odpowiedziach
gnat
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.