Dzięki dostępności shaderów obliczeniowych zarówno dla DirectX, jak i OpenGL można teraz zaimplementować wiele algorytmów bez przechodzenia przez potok rasteryzacji i zamiast tego użyć obliczeń ogólnego przeznaczenia na GPU, aby rozwiązać problem.
W przypadku niektórych algorytmów wydaje się, że staje się to intuicyjnym rozwiązaniem kanonicznym, ponieważ z natury nie są oparte na rasteryzacji, a shadery oparte na rasteryzacji wydawały się obejściem dla wykorzystania mocy GPU (prosty przykład: tworzenie tekstury szumu. Tu nie trzeba rasteryzować quada ).
Biorąc pod uwagę algorytm, który można wdrożyć na dwa sposoby, czy istnieją ogólne (potencjalne) korzyści w zakresie wydajności w porównaniu do korzystania z shaderów obliczeniowych w porównaniu z normalną trasą? Czy są wady, na które powinniśmy uważać (na przykład czy istnieje jakiś niezwykły narzut związany z przełączaniem się z / w celu obliczania shaderów w czasie wykonywania)?
Czy są jakieś inne zalety lub wady do rozważenia przy wyborze między tymi dwoma?
źródło
Odpowiedzi:
Nie ma właściwej odpowiedzi, jeśli zamierzasz bezpośrednio skorzystać z obliczeń shadrsów obliczeniowych / GPGPU, jest to w dużym stopniu zależne od rodzaju wdrażanego algorytmu, shadery obliczeniowe i CUDA / OpenCL to bardziej ogólne podejście do pokonania niektórych ograniczeń włamania do starych języków cieniowania. najważniejsze korzyści, które otrzymasz:
Cóż, moim zdaniem , jeśli chcesz pójść drogą shaderów obliczeniowych, chociaż niektóre algorytmy mogą być bardziej odpowiednie, istnieją pewne względy, które należy wziąć pod uwagę:
Niemniej jednak jestem pewien, że będzie to świetne na przyszłość i będzie świetnym doświadczeniem edukacyjnym. Powodzenia!
źródło