Je viens donc d'apprendre récemment sur le Compute Shader et il ressort de ce que j'ai repris la même idée que la programmation parallèle que vous feriez avec CUDA ou OpenCL, mais dans le pipeline de shader.
Si je veux dessiner un million de cubes dans une scène, dois-je utiliser une méthode plutôt que l'autre ou les deux? Si les deux comment divisez-vous cela pour que le GPU n'essaie pas de calculer simultanément le shader et un autre processus en même temps
compute-shader
opencl
cuda
FrickeFresh
la source
la source
Réponses:
Aujourd'hui, il n'est pas tout à fait correct de penser que les shaders de calcul sont "dans le pipeline de shaders" dans le même sens que vos vertex et fragments shaders sont littéralement connectés à un pipeline. Les shaders de calcul ne sont pas "connectés" à quoi que ce soit actuellement, ne peuvent pas piloter la pixellisation ou consommer directement les sorties de la pixellisation.
Ce qu'il vous permet de faire, cependant, est de consommer et de produire des ressources mémoire également utilisées par les appels de tirage d'une manière relativement efficace. OpenCL rend cela plutôt difficile (voir par exemple https://software.intel.com/en-us/articles/opencl-and-opengl-interoperability-tutorial ). Cela vous permet d'intégrer efficacement les passes de calcul dans votre moteur de rendu, mais il n'est pas intégré dans le pipeline de rendu
la source