bearbecueLe 13/02/2012 à 22:43
par passe, j'entendais pas drawcall hein, evidemment... mais serie de drawcalls dans un framebuffer.
a chaque passe ==> switch de framebuffer.
donc la, mettons t'as 100 objets visibles, et 30 lights visibles:
dans le cas du forward:
passe 1:
3000 drawcalls, 30 rendus par objet, 1 pour chaque light, 100 objets. rendu dans la rendertarget finale.
(ok tu peux diminuer un peu si tu gere plusieurs lights par shader, mais c'est vachement plus chiant a gerer, et en plus ca te fait des shaders super lourds...)
dans le cas du deffered shading:
passe 1:
100 drawcalls, 1 pour chaque objet, rendu dans le G-Buffer
passe 2:
30 drawcalls, 1 pour chaque light, rendu dans la rendertarget finale <- lighting + shading
dans le cas du deffered lighting:
passe 1:
100 drawcalls, 1 pour chaque objet, rendu dans le G-Buffer
passe 2:
30 drawcalls, 1 pour chaque light, rendu dans le light-buffer (ce que j'appelle l'irradiance cache dans les screens d'au dessus) <- lighting
passe 3:
100 drawcalls, 1 pour chaque objet, rendu dans la rendertarget finale. <- shading