Ignore:
Timestamp:
Aug 5, 2012, 3:24:54 AM (11 years ago)
Author:
rez
Message:

added parametrable hue/brightness/contrast to postfx and found a pretty decent scanline scheme

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/neercs/video/postfx.lolfx

    r1685 r1694  
    1818uniform float deform;
    1919uniform vec3 filter;
     20uniform vec3 color;
    2021uniform vec3 retrace;
    2122uniform vec2 offset;
     
    2829uniform vec4 scanline_h;
    2930uniform vec4 scanline_v;
    30 uniform vec2 smooth;
    3131uniform float flash;
    3232uniform float sync;
     
    6868        vec2 rnd=vec2(rand(vec2(p.x+time,p.y-time)),rand(vec2(p.x-time,p.y+time)));
    6969
    70         vec2 o=(offset-offset*2.0*rnd.x)/screen_size;                                   // offset
    71         vec3 source=get_color(texture,z+o);                                                             // offset added to source
     70        vec2 o=(offset-offset*2.0*rnd.x)/screen_size;                   // offset
     71        vec3 source=get_color(texture,z+o);                                             // offset added to source
    7272        vec3 glass1=get_color(texture,z1);
    7373        vec3 glass2=get_color(texture,z2);
     
    8080        ca.z=get_color(texture,vec2(z.x+o.x+v,z.y+o.y)).z;
    8181
    82         vec3 color=source+glass1*glass1*0.25+glass2*glass2*0.25;
     82        vec3 c=source+glass1*glass1*0.25+glass2*glass2*0.25;
    8383
    84         color*=filter;                                                                                                  // filter
    85         color=smoothstep(smooth.x,smooth.y,color);                                              // smoothstep
    86         color+=flash;                                                                                                   // flash
    87         color+=ca;                                                                                                              // chromatic aberration
    88         color-=retrace.x*mod(z.y*retrace.y+time*retrace.z,1.0);                 // retrace
    89         color-=(vec3(rnd.x-rnd.y))*noise;                                                               // noise
     84        float a=(c.x+c.y+c.z)/3.0;
     85        vec3 g=vec3(a,a,a);
     86        c=mix(c,g,color.z);                                                                             // gray
     87        c*=filter;                                                                                              // filter
     88        c*=color.x;                                                                                             // brightness
     89        c=0.5+(c-0.5)*color.y;                                                                  // contrast
     90
     91        c+=flash;                                                                                               // flash
     92        c+=ca;                                                                                                  // chromatic aberration
     93        c-=retrace.x*mod(z.y*retrace.y+time*retrace.z,1.0);             // retrace
     94        c-=(vec3(rnd.x-rnd.y))*noise;                                                   // noise
    9095        if(moire)
    9196                {
    92                 color*=moire_h.x+moire_h.y*sin(z.y*float(screen_size.y*moire_h.z))*sin(0.5+z.x*float(screen_size.x*moire_h.w)); // moire h
    93                 color*=moire_v.x+moire_v.y*sin(z.x*float(screen_size.x*moire_v.z))*sin(0.5+z.y*float(screen_size.y*moire_v.w)); // moire v
     97                c*=moire_h.x+moire_h.y*sin(z.y*float(screen_size.y*moire_h.z))*sin(0.5+z.x*float(screen_size.x*moire_h.w));     // moire h
     98                c*=moire_v.x+moire_v.y*sin(z.x*float(screen_size.x*moire_v.z))*sin(0.5+z.y*float(screen_size.y*moire_v.w));     // moire v
    9499                }
    95100        else
    96101                {
    97                 color*=(moire_h.x+moire_v.x)*0.5;
     102                c*=(moire_h.x+moire_v.x)*0.5;
    98103                }
    99104        if(scanline)
    100105                {
    101                 color*=scanline_h.x+scanline_h.y*cos(z.y*float(screen_size.y*scanline_h.z+scanline_h.w));       // scanline h
    102                 color*=scanline_v.x+scanline_v.y*cos(z.x*float(screen_size.x*scanline_v.z+scanline_v.w));       // scanline v
     106                c*=scanline_h.x+scanline_h.y*cos(z.y*float(screen_size.y*scanline_h.z+scanline_h.w));   // scanline h
     107                c*=scanline_v.x+scanline_v.y*cos(z.x*float(screen_size.x*scanline_v.z+scanline_v.w));   // scanline v
    103108                }
    104109        else
    105110                {
    106                 color*=(scanline_h.x+scanline_v.x)*0.5;
     111                c*=(scanline_h.x+scanline_v.x)*0.5;
    107112                }
    108         color*=mask;                                                                                                    // vignetting
    109         color*=letterbox(z,-0.75,0.95);                                                                 // letnoiseterbox
    110         gl_FragColor=vec4(color,1.0);
     113        c*=mask;                                                                                                // vignetting
     114        c*=letterbox(z,-0.75,0.95);                                                             // letnoiseterbox
     115        gl_FragColor=vec4(c,1.0);
    111116        }
Note: See TracChangeset for help on using the changeset viewer.