Ho un'applicazione opengl che carica un dxf e lo disegna sullo schermo, ogni volta che ho bisogno di calcolare le normali. c'è un modo per calcolare le normali in GPU invece di CPU? se é cosi, come ?posso calcolare le normali in gpu?
risposta
Sì, è possibile. Avrai bisogno di conoscere Shaders in Cg.
Dai un'occhiata allo glEnable(GL_AUTO_NORMAL)
.
È possibile calcolare le normali "piatte ombreggiate" (una normale per facciata) all'interno dello shader della geometria. Uno per ogni triangolo, "al volo", usando i prodotti trasversali. Non è possibile generare normali "lisce" in questo modo, perché GS non ha informazioni sui vicini.
Se la mesh è parametrica (ad esempio, metaball), la normale può essere calcolata campionando alcuni valori di funzione vicini. Questo può essere fatto anche su GPU.
È anche possibile calcolare le normali in shader se la mesh è basata su heightmap o qualcosa di simile.
Se la GPU supporta CUDA, OpenCL o qualcosa di simile, E se può processare array arbitrari di dati, probabilmente si possono anche calcolare le normali sulla GPU, usando tecniche tradizionali.
Inoltre, penso che 5 anni fa (o giù di lì) ho visto un documento intitolato "normale livellamento su GPU" o "normale generazione su GPU". Sulla prima pagina aveva un cuore poligonale riflettente con ombreggiatura piatta. Sfortunatamente, non riesco a trovare quel documento, e non sono esattamente sicuro che esistesse (o dove l'ho visto). Potrebbe essere possibile trovarlo (se esiste) nei documenti GDC, nei documenti SIGGRAPH, ATI SDK o NVidia SDK.
Dovrai usare gli shader.
È possibile utilizzare uno shader di geometria GLSL. Ecco la versione GLSL per le normali del viso. I valori normali dei vortici richiedono più lavoro dal momento che devono prendere in considerazione i vertici vicini.
- Assicurati che la tua scheda grafica supporti gli ombreggiatori geometrici! Utilizzare ad esempio GPU Caps Viewer.
- Taglia e incolla qualsiasi esercitazione per incorporare uno shader di geometria nella tua app.
- Lo shader dovrebbe essere simile a questo:
//glsl shader
#version 120
#extension GL_EXT_geometry_shader4 : enable
void main(void)
{
// Compute per-face normal
vec4 d1 = gl_PositionIn[1] - gl_PositionIn[0];
vec4 d2 = gl_PositionIn[2] - gl_PositionIn[0];
gl_Normal = cross(d1,d2);
// Emit all input vertices
for(i=0; i< gl_VerticesIn; i++){
gl_Position = gl_PositionIn[i];
EmitVertex();
}
EndPrimitive();
}
- 1. Devo calcolare le matrici sulla GPU o sulla CPU?
- 2. Tracciare le normali distribuzioni
- 3. FbxSDK interrompe le normali
- 4. Come calcolare k i maggiori valori di autovalore sulla GPU?
- 5. Come utilizzare le normali classi di distribuzione?
- 6. Installazioni normali in Visual Studio
- 7. Dove le istruzioni SSE superano le normali istruzioni
- 8. Le normali ruotano in modo errato quando l'oggetto viene ruotato
- 9. Aggiustamenti immagine HSL su GPU
- 10. Come posso leggere la carica della GPU?
- 11. punto di intersezione 2 curve normali
- 12. Posso calcolare exp (1 + 2j) in python?
- 13. MPI + GPU: come mescolare le due tecniche
- 14. Posso utilizzare core in GPU da C# SENZA cambiare codice?
- 15. Perché non utilizzare le GPU come CPU?
- 16. Come calcolare le percentuali in LESS CSS?
- 17. Come posso risolvere 'esaurito la memoria gpu' in TensorFlow
- 18. Three.js: Come sfogliare le normali dopo la scala negativa
- 19. Multi-GPU Computazione Cuda
- 20. Matlab che calcola le normali di superficie errate?
- 21. Perché Mathematica interromperà le normali regole di scoping nel modulo?
- 22. Posso/devo eseguire questo codice su una GPU?
- 23. Le normali funzioni monadiche funzionano con l'equivalente del trasformatore monade
- 24. GPU trasparenteImageView?
- 25. Le mappe normali possono essere generate da una trama?
- 26. Intensità immagine somma in GPU
- 27. Variazione GPU default in tensorflow
- 28. Ci sono differenze tra le nostre variabili definite e le normali variabili globali in Perl?
- 29. Come posso calcolare quanto tempo impiega una funzione in jQuery?
- 30. Come convertire caratteri speciali in caratteri normali?
Le normali dovrebbero essere calcolate in geometry shader, non frammentare. – ext