Mam pytanie dotyczące modułów cieniujących Compute. są shadery obliczeniowe dostępne w DX 9? czy nadal byłoby możliwe użycie shadera obliczeniowego ze sterownikiem DX9, jeśli nie ma fragmentu modułu cieniującego Compute na GPU? (SGX 545 go nie ma, ale generacja SGX 6X będzie je miała), o ile mówi IMG. Chciałbym wiedzieć, czy mogę wykonać proste ogólne programowanie na GPU SGX z sterownikami DirectX9 lub OpenGL.Kompilacja ogólnego zastosowania z modułami cieniowania wierzchołków/pikseli (Open GL/DirectX)
Co więcej, czy w ogóle mogę korzystać z procesorów GPGPU w OpenGL? Oto, co myślę: Załaduję moje Matryce/dane do bufora wierzchołków i powiązam je z kontekstem programu. Załaduję kilka innych zmiennych statycznych do jednolitych zmiennych, a mój aktualny program obliczeniowy do vertex shader. Wydaje się, że jest to wykonalne do tego momentu (prawda?), Ale dane wyjściowe z modułu cieniującego werteksów będą przechodzić przez rasteryzację i będą dostarczane do shaderów fragmentów (zgodnie z tym, jak to wszystko wygląda w OpenGL). Czy mimo to mogę uniemożliwić przechodzenie danych przez całą linię pylącą grafiki, czy też mogę przechwycić po wykonaniu shadera werteksów przy wykonywaniu i jakoś odczytać wartości i czas potrzebny na wykonanie?
Jestem bardzo lubi tego podejścia siebie, ponieważ pozwala na dużo GPGPU rzeczy w nieoczekiwanych kontekstach (naprawdę znaczy _WebGL_). Jeśli możesz zbudować swój algorytm tak, aby działał dobrze w implementacjach, które nie obsługują celów renderowania zmiennoprzecinkowego, byłbyś zaskoczony, jak wiele urządzeń jest zdolnych do GPGPU. Ponieważ sprzężenie zwrotne transformacji nie jest możliwe w OpenGL ES 2.0, myślę, że jedynym sposobem, aby poradzić sobie z tym w sposób przenośny, jest wykorzystanie etapu cieniowania wierzchołków jako prostego przekazu, tak jak powiedziałeś, i wykonania pracy w shaderze fragmentów. –
Cóż, jest jedna wada, wykorzystując stan fragmentów do obliczeń: Nie pozwala na wykonywanie zapisów rozproszonych, co może być problemem dla niektórych algorytmów.W zależności od tego, co faktycznie chcesz zrobić, możesz użyć etapu shaderów wierzchołków, aby wykonać obliczenia "rozpraszania", emitując położenie punktów pojedynczego piksela i umożliwiając modułowi cieniującemu wykonywanie komplikacji zlokalizowanych. – datenwolf
@darius: Nadal można włączyć interpolację dla wybranych opcji. – datenwolf