Sto lavorando su un involucro geometrico per un risolutore di impingement di scarico a getto di spazio. Una parte fondamentale della soluzione è determinare cosa il jet può "vedere" e quindi colpire. Il mio modello è raggruppato con nodi o griglie disposte su elementi a 3 o 4 lati che sono ulteriormente raggruppati in corpi. L'ombreggiatura per i corpi viene gestita attraverso le normali verso l'esterno e viene eseguita molto velocemente, cioè il rilevamento sul retro. L'ombreggiatura da corpo a corpo viene attualmente eseguita proiettando tutti i punti visibili sul piano di un elemento e ombreggia i punti contenuti all'interno del contorno di quell'elemento, purché il valore z sia maggiore della distanza dall'elemento. Questa operazione è lenta.
Il mio attuale benchmark sta elaborando solo circa 3000 elementi al secondo. So che ci devono essere terribili inefficienze nel mio codice, ma credo che questo sia dovuto a un approccio inadeguato. Fondamentalmente controllo ogni punto fino a quando non è ombreggiato o sono a corto di elementi, quindi è visibile. Loop all'interno di loop e un altro controllo di loop per auto-ombreggiamento.
Ho esaminato lo scafo convesso 3D e la visibilità diretta dei set di punti. Inoltre ho esaminato la rimozione di punti nascosti. Come previsto, la maggior parte della discussione riguarda le applicazioni di rendering 3D. Non ho questo. Tutte le informazioni vengono elaborate dalla CPU e mai rese.
Ho bisogno di suggerimenti su come costruire / avvicinare efficacemente un simile shader. Cosa funziona bene, cosa evitare. Non ho accesso all'hardware grafico sulle macchine che eseguiranno la soluzione finale. Se è importante, sto lavorando attualmente in C / C ++ su sistemi Linux.