Changeset 1694


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

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

Location:
trunk/tools/neercs/video
Files:
2 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        }
  • trunk/tools/neercs/video/render.cpp

    r1686 r1694  
    106106float postfx_deform = 0.625f;   // deformation ratio
    107107vec3 postfx_filter(0.875f,0.75f,1.0f);// color filter [red,green,blue]
     108vec3 postfx_color(1.75f,1.75f,0.5f);  // color modifier [brightness,contrast,gray]
    108109vec3 postfx_retrace(0.025f,2.0f,4.0f);// retrace [color,length,speed]
    109110vec2 postfx_offset(3.0f,3.0f);  // random line [horizontal,vertical]
     
    111112float postfx_aberration = 3.0f; // chromatic aberration
    112113bool postfx_moire = true;       // moire
    113 vec4 postfx_moire_h(0.75f,-0.25f,1.0f,2.0f);
    114 vec4 postfx_moire_v(0.75f,-0.25f,0.0f,1.0f);
     114vec4 postfx_moire_h(0.75f,-0.25f,0.0f,1.0f);
     115vec4 postfx_moire_v(0.75f,-0.25f,1.0f,1.5f);
    115116bool postfx_scanline = true;    // scanline
    116 vec4 postfx_scanline_h(0.75f,-0.25f,2.0f,0.0f);// vertical scanline [base,variable,repeat]
    117 vec4 postfx_scanline_v(0.75f, 0.25f,0.0f,2.0f);// horizontal scanline [base,variable,repeat]
    118 vec2 postfx_smoothstep(0.025f,0.625f);// smoothstep [lower,upper]
     117vec4 postfx_scanline_h(0.75f, 0.25f,0.0f,2.0f);// vertical scanline [base,variable,repeat x,repeat y]
     118vec4 postfx_scanline_v(0.75f,-0.25f,2.0f,0.0f);// horizontal scanline [base,variable,repeat x,repeat y]
    119119
    120120Shader *shader_simple;
     
    145145              shader_postfx_deform,
    146146              shader_postfx_filter,
     147              shader_postfx_color,
    147148              shader_postfx_retrace,
    148149              shader_postfx_offset,
     
    155156              shader_postfx_scanline_h,
    156157              shader_postfx_scanline_v,
    157               shader_postfx_smoothstep,
    158158              shader_postfx_flash,
    159159              shader_postfx_sync;
     
    240240    shader_postfx_deform = shader_postfx->GetUniformLocation("deform");
    241241    shader_postfx_filter = shader_postfx->GetUniformLocation("filter");
     242    shader_postfx_color = shader_postfx->GetUniformLocation("color");
    242243    shader_postfx_retrace = shader_postfx->GetUniformLocation("retrace");
    243244    shader_postfx_offset = shader_postfx->GetUniformLocation("offset");
     
    250251    shader_postfx_scanline_h = shader_postfx->GetUniformLocation("scanline_h");
    251252    shader_postfx_scanline_v = shader_postfx->GetUniformLocation("scanline_v");
    252     shader_postfx_smoothstep = shader_postfx->GetUniformLocation("smooth");
    253253    shader_postfx_flash = shader_postfx->GetUniformLocation("flash");
    254254    shader_postfx_sync = shader_postfx->GetUniformLocation("sync");
     
    323323        timer_key = timer;
    324324        }
    325     if (Input::GetButtonState(286/*SDLK_F5*/)&&(timer-timer_key>timer_key_repeat))
     325    if (Input::GetButtonState(286/*SDLK_F5*/))
    326326        {
    327327        Pause();
    328         timer_key = timer;
    329328        }
    330329
     
    560559        shader_postfx->SetUniform(shader_postfx_deform, postfx_deform);
    561560        shader_postfx->SetUniform(shader_postfx_filter, postfx_filter);
     561        shader_postfx->SetUniform(shader_postfx_color, postfx_color);
    562562        shader_postfx->SetUniform(shader_postfx_retrace, postfx_retrace);
    563563        shader_postfx->SetUniform(shader_postfx_offset, postfx_offset);
     
    570570        shader_postfx->SetUniform(shader_postfx_scanline_h, postfx_scanline_h);
    571571        shader_postfx->SetUniform(shader_postfx_scanline_v, postfx_scanline_v);
    572         shader_postfx->SetUniform(shader_postfx_smoothstep, postfx_smoothstep);
    573572        shader_postfx->SetUniform(shader_postfx_flash, flash_value);
    574573        shader_postfx->SetUniform(shader_postfx_sync, (float)fabs(beat_value*cosf((main_angle-beat_angle)*8.0f)));
Note: See TracChangeset for help on using the changeset viewer.