/ / Animazione e normali scheletrici GPU. C'è un modo veloce per ottenere la trasposizione (inversa (m))? - opengl, glsl, shader, normali, animazione scheletrica

GPU: animazione e normali scheletrici. C'è un modo veloce per ottenere la trasposizione (inversa (m))? - opengl, glsl, shader, normali, animazione scheletrica

Scrittura di skin per il mio gioco e necessità di animare anche le normali. Da questa articolo Ho imparato che di solito per trasformare le normali hai bisogno di qualcosa del genere:

transformed_normal = transpose(inverse(bone[i])) * normal;

Non posso passare il secondo set di calcoli precalcolatitrasporre (inverso (ossa)) a shader tramite uniformi perché non ho abbastanza uniformi per questo. Quindi devo calcolare questa trasposizione (inversa (bone [i])) in vertex shader (ancora e ancora per ogni migliaia di vertici), non è vero? C'è un modo più veloce per farlo? Qualche approssimazione economica e sporca di questa operazione?

Modificare: Ho trovato questa soluzione interessante https://stackoverflow.com/a/46518010/9173149

risposte:

4 per risposta № 1

Il modo tipico per gestirlo è quello di non ridimensionare le matrici ossee. Se le trasformazioni ossee hanno solo rotazione e traslazione, non è necessario eseguire l'inverso / la trasposizione.