Dlaczego tak ważne jest, aby obiekty renderowania miały ten sam rozmiar bitów?

10

Obecnie zastanawiam się, jakiego rodzaju GBuffer potrzebuję do odroczonego cieniowania, dlatego starałem się również udokumentować w Internecie, że są najbardziej popularne i ich format.

Większość GBuffer, które widziałem, używa tego samego rozmiaru bitów dla każdego celu renderowania, co często prowadzi do nieużywanych kanałów. Jednak, jak się domyślam dla mojego GBuffera, na papierze potrzebuję dwóch 24-bitowych celów i dwóch 32-celowych lub trzech 24-i jeden 32-bitowych.

Rozumiem, że mając ten sam „rozmiar” każdy załącznik można lepiej wyrównać, ale praktycznie mówiąc, czy lepiej jest marnować kanały (lub rezerwować je do przyszłego użytku) i mieć wszystkie RT tej samej wielkości, czy powinienem użyć tylko tego, co potrzebne? W pierwszym przypadku, dlaczego jest to taka zaleta, czy 24-bitowe i tak zostaną uzupełnione do 32?

CIFZ
źródło

Odpowiedzi:

9

Rozumiem, że mając ten sam „rozmiar” każdy załącznik można lepiej wyrównać, ale praktycznie mówiąc, czy lepiej jest marnować kanały (lub rezerwować je do przyszłego użytku) i mieć wszystkie RT tej samej wielkości, czy powinienem użyć tylko tego, co potrzebne?

Posiadanie ujednoliconych 32-bitowych obiektów renderowania jest lepsze, nawet jeśli oznacza to „marnowanie” pamięci. Będzie to o wiele szybsze niż posiadanie nie 32-bitowej pamięci wyrównanej. Ponadto nie będziesz mieć problemu z obsługą wielu typów buforów, kopiowanie i łączenie buforów będzie łatwiejsze, ponieważ nie będziesz musiał konwertować między wieloma typami buforów.

32bit jest natywny dla procesorów graficznych i procesorów, dlatego zmniejszysz liczbę wymaganych cykli odczytu pamięci. Procesory graficzne w naturalny sposób spróbują odczytać 32 bity, jeśli próbujesz odczytać nieprzypisany adres pamięci, taki jak wyrównanie 24 bitów, procesory graficzne odczytują 32 bity, a następnie przesuwają niechciane bajty.

Oto szczegółowy artykuł wyjaśniający, dlaczego wyrównanie pamięci ma znaczenie (chociaż mówi o procesorach, a nie procesorach graficznych, koncepcja wysokiego poziomu nadal obowiązuje).

Czy te 24-bitowe zostaną uzupełnione do 32?

Niektóre procesory graficzne będą go wypełniać, ale nie można tego zagwarantować, więc leży ono w obszarze wdrażania sterownika / GPU. Musisz więc profilować i sprawdzać wyniki.

PS: 32-bitowy lub 64-bitowy w zależności od architektury.

concept3d
źródło
5
a jeśli wszystkie mają ten sam rozmiar bitów, możesz je zepsuć bez konieczności konwersji
maniak ratchet