From: <nik...@cl...> - 2001-06-28 21:52:40
|
sp=E9cial pour Toche : d=E9sol=E9, j'ai pas eu le tps de commiter je t'envoie juste les .inl de toute fa=E7on, j'ai rien modifi=E9, par manque de tps, et aussi parceq= ue je sais pas quoi faire pour le ProcessShader en fait, je pense que c'est une bonne id=E9e que ce soit le shader qui de= ssine le mesh. je m'explique : dans la mesure ou c'est le shader qui d=E9cide comment le= s vertex sont trait=E9s, c vraiment trop lourd d'obliger les mesh =E0 checker son shader... un moment, j'utilisait des fonctions pour chaque shader du style NeedsAnotherPass, c'est cool, mais =E7a permet que de faire des op=E9rations simplistes, du genre refai= re une passe ... et pour le bump shader, je me suis trouv=E9 obliger de renverser les r=F4= les, vu que le bump a besoin de se construire un rep=E8re local face par face ... sans compter qu'avec les nouveaux shaders qu'on va =E9crire (si si), =E7a= ne peux qu'aller en se complexifiant. comment je vois les choses : garder la m=EAme architecture, mais la rendr= e plus propre, cad. que le shader n'a pas besoin de savoir a qui il a a faire, ni comment les donn=E9es son= t stock=E9e derrieres. par ex., toutes les classes d=E9sirant =EAtre "shad=E9es" doivent h=E9rit= er de OR_Shaderizable, et impl=E9menter des m=E9thodes pour faire du rendu face par face ( par exemple avec possibiliter de cre= er un iterateur, de looper sur les faces, et de faire un ProcessFace() ), ou bien pour ttes les faces d'un coup ProcessAllFace ) l'avantage, c qu'on pourra impl=E9menter de nouvelles fonctions propremen= t si de nouveaux shader en ont besoin (par exemple pour du per pixel), et surtout homog=E9n=E9iser la fa=E7on d= ont sont traiter les objet : les mesh, isosurfaces et cie pourront impl=E9menter leurs propre fonctions de shaderization. le hic, c que =E7a devient plus complexe quand il s'agit de ne tracer qu'= une partie des faces (typiquement pour le skinning ou bien l'alpha-pipeline), donc il faut aussi pouvoir configu= rer facilement le OR_Shaderizable (genre 1ere face =E0 dessiner, derniere face =E0 dessiner, sp=E9cifier un= vecteur de faces =E0 dessiner par le prochain shader ...). en gros, le OR_Shaderizable devient une sorte de machine =E0 =E9tat, dont= le set-up est effectu=E9e par le mesh, et l'utilisation par le shader. je check l'etude de march=E9 de viabilit=E9 de cette solution, je coderai= s tout =E7a demain d'ailleurs, si tu veux qu'on se voit demain soir, pas de pbm ! gab |