les batchs ; tres simple. Imaginons que tu veuilles rendre 200 triangles.
choix 1) tu rends tes triangles 1 par 1 ; une primitive pour chaque triangle. Ca marche, c´est super simple a programmer. Probleme : c´est aussi extrement lent, c´est un des perf-killer les plus courants. Ton appli passera plus de temps dans les couches drivers a faire transiter les appels et transmettre les donnees, plutot qu´a vraiment afficher.
choix 2) tu fais par ex. une primitive "liste de triangles" dans laquelle tu colles toutes tes donnees de tes 200 triangles. Tu rends donc ca en une seule fois, en un seul bloc. C´est BCP plus rapide ! Il est bcp rapide de rendre 1000 triangles batches que 100 triangles non batches.
Idealement,les batchs devraient avoir qq milliers d´entrees ; en dessous, c´est un perf killer a cause du nombre de primitives a rendre, et du temps passe dans les drivers ; au dessus, c´est contre performant en comparaison de la taille des caches.
Tu peux etudier ca en details avec les outils fournis par les fabricants de cartes pour les developpeurs (ie. avec le NVPerfHud, tu peux visualiser tout ca en temps reel, et identifer facilement les bottlenecks)
pour les shaders, jette un oeil a la doc Cg de Nvidia, et a leurs slides ; ca te donnera un bon apercu, ensuite embraye sur l´HLSL, et les outils tels que FX Composer et RenderMonkey
pour le glow, tu peux faire ca aisement en post-processing a grand de convolutions (filtre Kawase donne de bons resultats) ; pour du glow selectif, combine plusieurs render target ; un premier exemple est l´article sur Gamasutra traitant du glow dans Tron 2.0 . Ca devrait te donner les bases.
Apres, tu peux directement passer au "full HDR", ou la le glow n´est qu´une consequence de la technique de rendu