[Pdmtl] GLSL, chainage de shader et alpha
Mathieu Bouchard
matju at artengine.ca
Wed Apr 8 16:59:30 EDT 2009
On Wed, 8 Apr 2009, Oli44 wrote:
> il s'agit de faire un rattrapage de trapèze, un effet qui doit jouer en
> permanence donc, pour avoir une image plane même lorsque la
> vidéo-projection n'est pas exactement dans l'axe de l'écran. Il s'agit
> d'une simple correction pas d'un effet à proprement parler. Pour être
> plus explicite, j'ai inséré un petit svg qui explicite la manipulation.
Un trapèze ça a deux côtés parallèles. Donc tu veux qqchose pour les
quadrilatères quelconques. Ça se fait mais c'est plus complexe qu'avec
un trapèze.
Dans le cas d'un trapèze, disons avec deux côtés le long des x, alors on
peut exprimer les deux autres côtés en tant que fonctions de y:
x0(y) = a0*y + b0 (gauche)
x1(y) = a1*y + b1 (droite)
et alors si on dit u,v pour dire les x,y originaux, et que y=v (càd on
change pas les y), et que u=0...1, alors
x(u,y) = u*(x1(y)-x0(y)) + x0(y)
donc on voit qu'il y a un facteur d'étirement de x1(y)-x0(y) qu'il faut
compenser en mettant un facteur d'étirement inverse 1/(x1(y)-x0(y)) avant
de projeter. Ça fait que les deux côtés non-horizontaux deviennent courbes
(en fait, ce sont des morceaux d'hyperboles).
Dans le cas d'un quadrilatère quelconque, il faut faire varier y en
fonction de v, et donc les formules doivent absolument utiliser v en
tant que variable et non y, et tous les côtés deviennent courbes.
Mais que ce soit le cas trapèzoïdal ou le cas quelconque, faut pas se
leurrer: la déformation est pas uniforme du tout (quoique si elle est
petite, il est possible qu'elle ne paraisse pas beaucoup).
_ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec
More information about the Pdmtl
mailing list