Jaka jest różnica między duchem a teksturą?


27

Mam zadanie do wykonania na uniwersytecie, a moim zadaniem jest omówienie tekstur używanych w grach wideo i ich ewolucji.

Moje główne pytanie brzmi: jaka jest podstawowa różnica między używaniem duszka lub innymi metodami tekstury?

Po przeprowadzeniu drobnych badań sam wydaje mi się, że skłaniam się do tego, by Duszki zapisały obrazy w jednym pliku i mogły być używane do animacji itp. I były powszechnie używane ze starszymi grami wideo, generalnie wykorzystując duszki jako całość ich wizualizacji. Teraz, w przypadku nowoczesnych gier, duszki wydają się być mniej używane w miarę postępu technologicznego i dostępne są inne tekstury, takie jak mapowanie nierówności. Chociaż duszki są nadal używane do dostosowania takich funkcji, jak pasek zdrowia lub tekstury na duże odległości.

Ale jakie są główne zalety korzystania z tekstur nad duchami?



5
Jeden jest drinkiem, a drugi nie (przepraszam za ten żart)
97

Odpowiedzi:


37

Pod koniec dnia duszki i tekstury to tylko obrazy - bloki danych kolorów rastrowych (chociaż czasami przesuwamy nieco granice, aby umieścić w nich dane inne niż obrazy). Różnica polega głównie na tym, jak je wykorzystujemy.

Zwykle nazywamy obraz (lub część obrazu, który zawiera wiele oddzielnych elementów) „duchem”, jeśli jego zamierzonym celem renderowania jest narysowanie bezpośrednio na siatce 2D ekranu, bez zniekształceń perspektywy. Tak więc to, co widzisz w uruchomionej grze, jest w zasadzie tym, co widzisz w samym pliku obrazu (oprócz barwienia kolorów / zamiany palet / efektów przezroczystości). Dotyczy to kafelków tła i postaci / obiektów interaktywnych w grach 2D, kart „billboardowych”, takich jak cząstki i starsze style renderowania drzew i krzewów, a także elementów interfejsu użytkownika i ikon w grach 3D.

I odwrotnie, jeśli używamy obrazu do zapewnienia szczegółów powierzchni dla wielokątów obiektu 3D, które mogą być rysowane w perspektywie, zwykle nazywamy ten obraz „teksturą”. Ta nazwa została przeniesiona na inne zastosowania danych obrazu w celu modulowania renderowania czegoś innego, nawet jeśli nie dotyczą już tekstury w takim sensie, jak można to wyczuć opuszkami palców - takie jak odbicia, mapy zniekształceń, nakładki, maski lub dowolne ogólne wykorzystanie obrazów, których nie chcemy nazwać bardziej szczegółowo, ma tendencję do zlepiania się pod „teksturą” w naszej luźnej nomenklaturze.

To sprawia, że ​​granice między tymi dwoma rozmytymi nie są szczególnie ścisłe. Jeśli mam obraz zawierający sekwencję pióropuszów ognia i dymu do wykorzystania przy rysowaniu billboardowanych cząstek w celu uzyskania efektu wybuchu, mógłbym nazwać to „arkuszem sprite” lub „teksturą flipbook” zamiennie. Lub jeśli mam obraz zestawu klocków zawierający wszystkie kafelki tła dla gry 2D, mógłbym dziś nazwać to „atlasem tekstur”, analogicznie do tekstur atlasu opracowanych dla gier 3D, mimo że jego dane i użycie w mojej grze 2D są nie do odróżnienia z tego, co ktoś inny nazwałby arkuszem sprite. Jeśli mam prostokąt geometrii, którego celem jest przedstawienie pojedynczego obrazu na ekranie, mógłbym nazwać to „teksturowanym quadem” lub „duszka” w zależności od tego, co chcę podkreślić na temat jego użycia.

(Zwróć uwagę tutaj w tym ostatnim przykładzie, że „duszek” oznacza zarówno segment obrazu źródłowego w naszych zasobach gry, jak i instancję renderowanej encji gry, która korzysta z tego segmentu obrazu - w inny sposób używamy tej terminologii nieco niekonsekwentnie)

Znajdziesz niektóre silniki i biblioteki, które kodują to rozróżnienie, wyrażając zamiar we własnej nomenklaturze. Na przykład w Unity możesz zaimportować zasób obrazu jako „Sprite” - umożliwia to dodatkowy zestaw opcji, które są zwykle pożądane dla obrazów interfejsu użytkownika lub zasobów gry 2D, takich jak wycinanie i pakowanie arkuszy sprite, oraz możliwość odniesienia części obrazu jako odrębne byty w scenie i ustawieniach obiektu. W takich przypadkach „Sprite” często oznacza „obraz (teksturę) plus metadane ” - ale nadal jest renderowany tak samo jak zwykłe tekstury pod maską. Dodatkowe opakowanie to wygoda, więc nie musimy mikromanalizować przesunięć UV i tym podobnych wszędzie tam, gdzie chcemy użyć obrazu;


Czy „tekstury” zazwyczaj zawierają przezroczyste piksele? Pomyślałbym o obiekcie, który zachowuje się jak płaska powierzchnia odwzorowana w pikselach, zawierająca przezroczyste piksele jako „duszek”, niezależnie od tego, czy powierzchnia jest prostopadła do osi kamery.
supercat,

2
Z pewnością mogą, nie rezygnując z tytułu „tekstury”. Często zdarza się, że ludzie odnoszą się do obrazu do renderowania, powiedzmy, liści lub ogrodzenia z ogniwa łańcucha, jako „teksturę liści” lub „teksturę ogrodzenia”, nawet jeśli są renderowane z przezroczystością alfa / testem przezroczystości lub mieszaniem alfa . Możemy również nazwać skrzynkę liścia „duchem liści”, jeśli jest renderowana jako billboard skierowany w stronę kamery, ale stosowanie nazwy duszka byłoby niezwykłe, gdyby było używane w geometrii perspektywy, takiej jak ogrodzenie 3D.
DMGregory

Podczas renderowania nieprzezroczystych obiektów odwzorowanych na tekstury silnik renderujący nie musi martwić się o to, jak będzie wyglądać ich wnętrze, ponieważ nieprzezroczysta powierzchnia ukryje wnętrze. Pomyślałbym, że coś w rodzaju ogrodzenia z drzewa lub ogniwa łańcucha najlepiej byłoby renderować, wykonując nieprzezroczyste części, a następnie renderując częściowo przezroczyste części jako dyskretne częściowo przezroczyste powierzchnie. Chociaż mogą nie pasować do tego, co niektórzy nazywają „duszkami”, jeśli nie staną przed kamerą, nie będą też takie same jak „normalne” obiekty.
supercat

Rzeczywiście tak zwykle się dzieje. Geometria słupków i pni ogrodzenia jest renderowana w nieprzejrzystym przejściu, a następnie geometria rozpiętości ogrodzenia i liści / gałązek zostaje renderowana w teście alfa lub przejściu z mieszaniem alfa.
DMGregory

1
Zwykle słyszę „przezroczystą teksturę” lub „teksturę alfa” / „teksturę z alfa” - może czasami „wycinanie” / „wycinanie tekstury”, jeśli jest to przezroczysta krawędź / testowana alfa.
DMGregory

7

Duszek to relikt z historii gier komputerowych. Pomyśl o 8-bitowym Atarisie około ca. 1980. Mały obraz, zwykle z maską bitową pokrycia (lub specjalnym „przezroczystym” kolorem), który ma pozycję na ekranie i jest łączony na ekranie w określony sposób. Z dziurami, w których znajdują się „dziury” w ikonce, zgodnie z mapą zasięgu. Zwykle w sposób „po prostu działa” i sposób, który z łatwością pozwala na iluzję poruszających się rzeczy, zwykle poprzez zapisywanie i przywracanie oryginalnych pikseli ekranu.

Kiedyś duszki były funkcją sprzętową na komputerach, kiedyś można było je rysować / cofać rysowanie, a zawartość ekranu była zapisywana automatycznie, dawniej można było mieć ich bardzo ograniczoną liczbę (i nie nakładają się, tak!) i kiedyś były dość małe (jak 16 x 16) i ograniczone.

Kursor myszy jest obecnie najbardziej zbliżony do duszka (i był to kiedyś duszek na niektórych systemach do około 10-15 lat temu).

W dzisiejszych czasach nic takiego nie istnieje, ale słowo pozostaje. Duszek to w zasadzie mały obraz 2D, który narysujesz (złożony) gdzieś. Zazwyczaj rysuje mały teksturowany quad.

Z drugiej strony tekstura jest koncepcją czytelnego obrazu stosowanego w nieco bardziej nowoczesnych interfejsach API grafiki. Lub ściślej region pamięci („bufor” pod względem współczesnych interfejsów API) z niektórymi powiązanymi dodatkowymi danymi, takimi jak rozmiar, z których można próbkować za pomocą różnych środków. Zwykle, ale niekoniecznie przez moduł cieniujący działający na procesorze graficznym. Zwykle, ale niekoniecznie, ze znormalizowanymi współrzędnymi i zwykle, ale niekoniecznie, z filtrowaniem (i mipmapowaniem, a także określonym trybem obramowania, i, i, i ...).

Zatem tekstura może być źródłem danych używanych do rysowania duszka.


3
Odpowiednie duszki są nakładane na sprzęt, więc dane wideo w pamięci nie zmieniają się i nawet nie muszą używać tego samego trybu (np. Na C64 możesz mieć duszki bitmapowe powyżej tła tekstowego). Obiekty renderowane przez zapisywanie mapy bitowej i zastępowanie danych są nazywane obiektami BOB (obiekty typu Blitter).
Simon Richter,

1
@ SimonRichter: Nie jestem obeznany z C64, wykonywany jako zabawka, ale Amiga też je miała, 8 z nich, jeśli dobrze pamiętam. Nie jestem pewien, jak to działało na poziomie sprzętowym, ale równie dobrze mogło to być bezpośrednie nakładanie (wydaje się prawdopodobne). Na ST, duszki A00D/ AOOCopcode były z pewnością rodzajem modyfikującym bufory ramek draw / undraw. BOB, tak, to też istniało, typowe dla Amigi. To chyba najbliższa współczesna tekstura (dowolny rozmiar, przesyłanie do procesora graficznego raz, rysowanie wiele razy).
Damon

4

To trochę porównanie jabłek i pomarańczy. Tekstura to tylko obraz, a duszek to obraz i sposób jego użycia.

Nadal używamy sprajtów do gier 2D, które pojawiają się w grach 3D w efektach cząsteczkowych. W dzisiejszych czasach duszki ogólnie odnoszą się do pewnego rodzaju teksturowanego kwadratu lub (rzadko, jak sądzę) pojedynczego trójkąta. Nawet elementy interfejsu są często wciąż teksturowanymi quadami - które nazwałbym duszkami.

Dawniej zdarzało się, że duszki były wstępnie ładowane do pamięci i przenoszone (kopiowane bajt po bajcie) do punktów na ekranie (dosłownie, pamięci ekranowej), jak znaczki. W pewnym sensie nadal to robimy. W przypadku animacji ikonek często zmieniamy przykładowe współrzędne tekstury źródłowej, aby skopiować segmenty z tekstur, które zostaną renderowane na quady. Efekty cieniowania, takie jak mapowanie wypukłości, próbki z tekstur w ten sam sposób, a zatem nadal są użyteczne do, powiedzmy, efektów poświaty u duszków.

Bardziej szczegółowo w grach 2d, jest to stylistyczny wybór. Można na przykład komponować ręcznie rysowane lub malowane postacie w grze, używając sprajtów. Technicznie byłyby to gry South Park.

Więc naprawdę nie można używać tylko tekstury zamiast ikonki.


3

Oto prosta i krótka odpowiedź. Zwykle myślę o ducha jako o całym obiekcie wraz z funkcjami i teksturami, które zostały do ​​niego zastosowane. Jeśli chodzi o teksturę, uważam, że jest to po prostu obraz, który można zastosować do czegoś.

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.