PImage img; float a,b; int xpos; int ypos; int opacity; void setup() { size(250,250,P3D); img=loadImage("test4.png"); // img.mask(img); xpos=0; ypos=0; a=0; b=0; opacity=255; } void additiveTintedBlend(PImage img, float locx, float locy,int mask,int opacity) { PImage tmp=new PImage(img.width,img.height); tmp.loadPixels(); img.loadPixels(); opacity=constrain(opacity,0,255); for(int i=0;i255) opacity=255; loadPixels(); for(int i=0;i>16; int tmpb=(tmp&0x0000FF00)>>8; int tmpg=(tmp&0x000000FF); tmpr=constrain(tmpr+x,0,255); tmpg=constrain(tmpg+x,0,255); tmpb=constrain(tmpb+x,0,255); pixels[i]=0xFF000000+(tmpr<<16)+(tmpb<<8)+tmpg; } updatePixels(); } void draw() { a+=random(0.001,0.01); b=noise(a,3.2345345*a); b*=1.4; b-=0.4; b=constrain(b,0,1); // b=random(0,0.6); background(0,0,0); // blend(img,0,0,img.width,img.height,20,20,img.width,img.height,ADD); opacity=180-(int)(180*b); // additiveTintedBlend(img,xpos,ypos,0xFFFFFFFF^((opacity<<16)+(opacity<<8)+opacity)); additiveTintedBlend(img,xpos,ypos+15*b,0xFFFF0000,opacity); additiveTintedBlend(img,xpos+15*b,ypos,0xFF00FF00,opacity); additiveTintedBlend(img,xpos-15*b,ypos,0xFF0000FF,opacity); // filter(POSTERIZE,9); snow(255-opacity); if(frameCount%100==99) println(frameCount+":"+framerate); }