[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