Czy można użyć modułu cieniującego do obliczenia niektórych wartości, a następnie zwrócić je do ponownego wykorzystania?Używanie modułu cieniującego do obliczeń
Na przykład wysyłam siatkę do procesora graficznego, z niektórymi parametrami dotyczącymi sposobu modyfikacji (zmieniać położenie wierzchołków) i odbierać wynikową siatkę? Widzę to raczej niemożliwe, ponieważ nie widziałem żadnej zmiennej do komunikacji z shaderów do CPU. Używam GLSL, więc są tylko mundury, atrybuty i różne. Czy powinienem użyć atrybutu lub jednolitego, czy po renderowaniu będą nadal prawidłowe? Czy mogę zmienić wartości tych zmiennych i odczytać je z powrotem w CPU? Istnieją metody mapowania danych w GPU, ale czy byłyby one zmienione i poprawne?
Tak myślę o tym, choć może być inny sposób, który nie jest mi znany. Byłbym szczęśliwy, gdyby ktoś mógł mi to wyjaśnić, ponieważ właśnie przeczytałem kilka książek o GLSL, a teraz chciałbym zaprogramować bardziej złożone shadery i nie chciałbym zwolnić metod, które są obecnie niemożliwe.
Dzięki
Jak napisał testalino, CUDA jest specyficzna dla nVidii. Jako że korzystam z Radeona, czy nie powinienem cierpieć z powodu spowolnienia, czy nawet można uruchomić CUDA na Radeonie? Czy OpenCL jest mniej efektywny lub dlaczego nie polecasz go jako pierwszego? – Raven
@Raven Tak, CUDA jest całkowicie specyficzna dla nVidia.Gdybym miał wybrać, wolałbym CUDA + nVidia. Ponieważ masz ATI, musisz wybrać OpenCL. O ile wiem, CUDA jest bardziej dojrzała, narzędzia są lepsze, itp. Pod względem wydajności nie sądzę, że jest znacząca różnica. – Andrey
@Raven, wybrałbym Direct Compute, jeśli korzystałem już z Direct X, Open CL, jeśli używałem Open GL. Nigdy nie używałbym CUDA z podanego powodu. Nie możesz się upewnić, że wszyscy korzystający z Twojej aplikacji mają kartę NVIDIA. – testalino