2010-08-04 7 views

Répondre

0

Un peu en retard, mais cela semble faire l'affaire:

<languageVersion : 1.0;> 

kernel Darken 
< namespace : "omino"; 
    vendor : "omino"; 
    version : 1; 
    description : "darken the right part of an image"; 
> 
{ 
    input image4 src; 
    output pixel4 dst; 

    parameter float leftEdgeOfEffect <minValue: 0.0 ; maxValue: 2000.0; defaultValue: 200.0;>; 
    parameter float darkness <minValue: 0.0 ; maxValue: 1.0; defaultValue: 0.75;>; 

    void 
    evaluatePixel() 
    { 
     float2 co = outCoord(); 
     pixel4 p = sampleNearest(src,co); 
     if(co.x >= leftEdgeOfEffect) 
      p.rgb = p.rgb * (1.0 - darkness); 
     dst = p; 
    } 
} 

La manipulation réelle des pixels se produit ici: p.rgb = p.rgb * (1,0 - obscurité);

Il ne fait qu'obscurcir le R, le G et le B. Vous pourriez être plus compliqué ici pour des effets plus intéressants.

+0

merci, j'ai utilisé un code similaire. –

1

Y a-t-il une raison pour laquelle cela doit être fait dans Pixel Bender? Vous pourriez probablement obtenir le même effet en couvrant la moitié de l'image avec un rectangle noir réglé à environ 80% d'opacité. Si vous avez besoin d'un ajustement supplémentaire de l'effet, appliquer un mode de fusion au remplissage fonctionnerait probablement.

+0

pouvez-vous poster un échantillon de cette idée? –

Questions connexes