È possibile utilizzare lo shader per calcolare alcuni valori e quindi restituirli per un ulteriore utilizzo?Utilizzo dello shader per i calcoli
Ad esempio, invio mesh alla GPU, con alcuni parametri su come dovrebbe essere modificato (cambiare la posizione dei vertici) e riprendere la mesh risultante? Lo vedo piuttosto impossibile perché non ho visto alcuna variabile per la comunicazione dagli shader alla CPU. Sto usando GLSL quindi ci sono solo uniformi, attributi e varianti. Dovrei usare l'attributo o l'uniforme, sarebbero ancora validi dopo il rendering? Posso cambiare i valori di queste variabili e leggerle nella CPU? Esistono metodi per mappare i dati in GPU, ma quelli saranno modificati e validi?
Questo è il modo in cui sto pensando a questo, anche se potrebbe esserci un altro modo, che per me non è noto. Sarei felice se qualcuno potesse spiegarmi questo, dato che ho appena letto alcuni libri su GLSL e ora mi piacerebbe programmare shader più complessi, e non mi piacerebbe alleviare metodi che sono impossibili in questo momento.
Grazie
Come testalino ha scritto, CUDA è specifico per nVidia. Poiché sto eseguendo Radeon, non dovrei soffrire di rallentamenti, o è addirittura possibile eseguire CUDA su Radeon? OpenCL è meno efficace o perché non lo si consiglia di utilizzare come prima? – Raven
@Raven Sì, CUDA è completamente specifico per nVidia.Se dovessi scegliere preferirei CUDA + nVidia. Dato che hai ATI devi scegliere OpenCL. Per quanto ne so, CUDA è più maturo, gli strumenti sono migliori, ecc. In termini di prestazioni, non credo che ci sia una differenza significativa. – Andrey
@Raven, sceglierei Direct Compute se stavo già usando Direct X, Open CL se stavo usando Open GL. Non userei mai CUDA per la ragione dichiarata. Non è possibile assicurarsi che tutti quelli che utilizzano la propria applicazione abbiano una scheda NVIDIA. – testalino