Czytałem dużo o renderowaniu wielowątkowym. Ludzie proponują różne dziwne i cudowne schematy przesyłania prac do procesora graficznego z wątkami, aby przyspieszyć ich liczbę klatek na sekundę i uzyskać więcej materiałów, ale mam z tym problem koncepcyjny. myślałem, że poprowadzę to tutaj przez guru, żeby zobaczyć, co myślisz.Renderowanie wielowątkowe D3D/OpenGL/Cokolwiek
O ile mi wiadomo, podstawową jednostką współbieżności na GPU jest osnowa. Oznacza to, że jest on mniejszy na poziomie piksela, niż wyższy na poziomie przesyłania geometrii. Biorąc pod uwagę, że jednostką współbieżności na GPU jest osnowa, sterownik musi być zablokowany dość ciasno za pomocą muteksów, aby zapobiec zerwaniu nawzajem wielu wątków. W takim przypadku nie widzę korzyści, jakie przynosi kodowanie wielowymiarowych prymitywów D3D lub OpenGL.
Z pewnością najskuteczniejsza metoda wykorzystania procesora graficznego w scenariuszu wielowątkowym znajduje się na wyższym, abstrakcyjnym poziomie, na którym zbierasz razem zadania do wykonania przed ich przesłaniem? Mam na myśli raczej niż losowe przeplatanie poleceń z wielu wątków, pomyślałbym, że pojedynczy blok akceptuje pracę z wielu wątków, ale z niewielką inteligencją wewnątrz, aby upewnić się, że rzeczy są zamówione dla lepszej wydajności przed przesłaniem do renderera przed, byłoby znacznie większym zyskiem, gdybyś chciał pracować z wieloma wątkami.
Więc, gdzie wielowątkowe renderowanie D3D/OpenGL obsługuje interfejs API?
Pomóż mi z moim zmieszaniem!
Co masz na myśli przez "renderowanie wielowątkowe"?Ponieważ żaden interfejs API nie zezwala na wielowątkowe * renderowanie *. –
Listy poleceń D3D11 na różnych wątkach i "współbieżnych obiektach na różnych wątkach", w OpenGL niezliczone blogi i posty z osobami próbującymi "zrobić ich rendery wielowątkowe" - za dużo do zliczenia :). – Robinson