Message
par Titan » 10 Jan 2014 09:18
Salut, un peut à la bourre sur ce topic.
Déjà di toi que même si tu avais assez de registre, il te faudrait un rack de 20 cartes graphiques en SLI pour espérer faire tourner ton shader en 1080p, rappelle toi que ton code doit être exécuté pour chaque pixel de ton écran!
maintenant pour le problème j'avais pas mal galéré à l'époque où je bossais sur un prototype de RTS, ma connerie à été de prendre le problème à l'envers, j'ai voulu mettre un mesh au dessus de mon terrain alors qu'il faut placer un mesh devant la camera, si tu saisi la nuance.
Concrètement tu a 2 possibilité, travailler avec les vertex color ou travailler avec une texture, les rendu sont légèrement différent, (Starcraft 2 utilise visiblement une texture tandis que League of legend utilise les vertex, si tu veux voir la différence), la texture est évidement plus gourmande.
pour résumé, tu stock un tableau 2D de 64x64 qui va représenter l'état de tes vertices, pour éviter d'avoir à décaler toute tes variable quand tu bouge la camera, tu fait un tableau circulaire et tu encapsule sont accès avec un mask binaire et un offset, tu n'a plus qu'a refresh l'état de tes vertices occasionnellement, par exemple 2 ou 3 lignes par frame, en testant uniquement la position des unités proches grâce à un quadtree (ou un truc plus crade^^). ensuite tu n'a qu'a reconstruire ton mesh à chaque frame à partir de ton tableau.
Ensuite le shader a juste besoin d'une ligne qui affiche le vertex color.
Je te conseil d'essayer ça déjà, avec une texture tu peut très facilement ruiner tes perfs si c'est mal codé imo, et il faudrait absolument une itération sur les unités plutôt que sur les pixels de la texture.
____________________________________________
Hop Boy