Tworzenie zasobów do renderowania podpisanego pola odległości?

9

W tradycyjnej grafice komputerowej większość modeli 3D jest renderowana przez rasteryzację lub ray tracing na podzielonej siatce prymitywów, zwykle trójkątów lub quadów. Niedawno niektóre techniki w czasie rzeczywistym zostały oparte na śledzeniu promieni w stosunku do podpisanych pól odległości (SDF). Intuicyjnie te pola odległości nie mogą być tymi samymi trójkątami i quadami tradycyjnego renderowania i muszą być czymś w rodzaju prymitywów geometrycznych 3D (kostki, kule itp.), Aby uzyskać właściwe cieniowanie. Czy to prawda? Jeśli nie, to czy złożone sceny „tradycyjnych” modeli 3D można przedstawić za pomocą SDF? Jeśli to prawda, w jaki sposób artyści tworzą szczegółowe modele używane w rendererach SDF?

Mokosha
źródło

Odpowiedzi:

7

Podpisane pola odległości są popularne w minimalnych aplikacjach graficznych, takich jak scena demonstracyjna, w której interesujące obiekty można zsyntetyzować z kilku prostych prymitywów analitycznych, takich jak kule lub kostki. Jednak podpisane pola odległości nie są ograniczone do tych prostych obiektów i niekoniecznie muszą być zaprojektowane przez człowieka. Na przykład możesz zsyntetyzować analityczne pole odległości ze znakiem trójkąta bez interakcji artysty - SDF to po prostu odległość ze znakiem od najbliższego trójkąta, którą można łatwo obliczyć. Dzięki temu możesz nadal używać tradycyjnego potoku siatki, a także używać plików SDF w tle.

W przypadku silnika Unreal SDF jest wstępnie obliczany automatycznie dla wszystkich siatek statycznych, a następnie próbkowany do tekstury 3D o niskiej rozdzielczości. Można go następnie tanio ocenić wszędzie za pomocą prostego wyszukiwania tekstur, co pozwala im robić miękkie cienie i podobne w czasie wykonywania. Ta prezentacja Unreal na GDC 2011 krótko wspomina o teksturach 3D (slajd 27).

Benedikt Bitterli
źródło
1
Łatwo jest również wygenerować SDF z modelu wokseli.
Nathan Reed,
Istnieje artykuł na temat GPU Gems 3 na temat budowy podpisanych pól odległości dla dowolnych siatek za pomocą GPU, który jest dostępny bezpłatnie tutaj: http.developer.nvidia.com/GPUGems3/gpugems3_ch34.html
Matteo Bertello