Changeset 1634


Ignore:
Timestamp:
Jul 17, 2012, 12:54:18 AM (7 years ago)
Author:
rez
Message:

glsl letterbox and round corner & some new fancy animation!

Location:
trunk/tools/neercs
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/neercs/neercs.cpp

    r1629 r1634  
    7272    caca_clear_canvas(m_caca);
    7373
     74    caca_set_color_argb(m_caca, 0x234, bg_color);
     75    for(int i = 0; i < h; i++)
     76    {
     77        float a = M_PI / 180 * i * 16 + m_time * 4;
     78        float b = M_PI / 180 * i * 12;
     79        int x = w / 2  - 15 + h / 3 * lol::cos(a) + h / 4 * lol::sin(b);
     80        caca_put_str(m_caca, x, i, "LOL WUT! NEERCS SI TEH RULEZ!");
     81    }
     82
    7483    caca_set_color_argb(m_caca, 0x444, bg_color);
    75 
    76     int n = 16;
    77     int radius = 48;
    78     int speed = 1;
    79     int z = 1;
    80 
    81     for(int i = 0; i < n; i++)
     84    for(int i = 0; i < w; i++)
    8285    {
    83         //z -= speed;
    84         int r = (radius - i * 4) / z;
    85         int x1 = w / 2 + r * lol::cos(m_time * 2 - M_PI / 20);
    86         int y1 = h / 2 + r * lol::sin(m_time * 2 - M_PI / 20);
    87         int x2 = w / 2 + r * lol::cos(m_time * 2 + M_PI * 2 / 3 - M_PI / 20);
    88         int y2 = h / 2 + r * lol::sin(m_time * 2 + M_PI * 2 / 3 - M_PI / 20);
    89         int x3 = w / 2 + r * lol::cos(m_time * 2 + M_PI * 2 / 3 * 2 - M_PI / 20);
    90         int y3 = h / 2 + r * lol::sin(m_time * 2 + M_PI * 2 / 3 * 2 - M_PI / 20);
    91         caca_set_color_argb(m_caca, 0x642, bg_color);
    92         caca_draw_thin_line(m_caca, x1, y1, x2, y2);
    93         caca_draw_thin_line(m_caca, x2, y2, x3, y3);
    94         caca_draw_thin_line(m_caca, x3, y3, x1, y1);
     86        float a = m_time * 1 + M_PI / 180 * i * 8;
     87        float b = m_time * -2 + M_PI / 180 * i * 5;
     88        int y = h / 2 + h / 4 * lol::cos(a) + h / 4 * lol::sin(b);
     89        caca_draw_line(m_caca, i, y - 1, i, y + 1,'%');
    9590    }
    9691
     
    9893.___  __ ______ ______ ______  ______ ______,
    9994 \° \|  /° __  \° __  \° __  \/° ___//° ___/
    100  /   `  >  ____/  ____/  ,_  <  <____\___  \
    101 /__/\___\______\______\__| \__\_____________\
     95 /   `  >  ____/  ____/  ,_  <_ <____\___  \
     96/__/\___\______\______\__| \__/_____________\
    10297*/
    10398
    104     int logo_x = (w - 46) / 2;
     99    int logo_x = (w - 45) / 2;
    105100    int logo_y = h / 2 - 2;
    106101
    107     caca_set_color_argb(m_caca, hex_color(0.5f + 0.25f * lol::cos(m_time * 3               ),0.5f,0.5f + 0.25f * lol::sin(m_time * 3               )), bg_color);
     102    caca_set_color_argb(m_caca, hex_color(0.5f + 0.375f * lol::cos(m_time * 3               ),0.5f,0.5f + 0.25f * lol::sin(m_time * 3               )), bg_color);
    108103    caca_put_str(m_caca, logo_x, logo_y    ,".___  __ ______ ______ ______  ______ ______,");
    109     caca_set_color_argb(m_caca, hex_color(0.5f + 0.25f * lol::cos(m_time * 3 + M_PI / 4 * 1),0.5f,0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 1)), bg_color);
     104    caca_set_color_argb(m_caca, hex_color(0.5f + 0.375f * lol::cos(m_time * 3 + M_PI / 4 * 1),0.5f,0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 1)), bg_color);
    110105    caca_put_str(m_caca, logo_x, logo_y + 1, " \\° \\|  /° __  \\° __  \\° __  \\/° ___//° ___/");
    111     caca_set_color_argb(m_caca, hex_color(0.5f + 0.25f * lol::cos(m_time * 3 + M_PI / 4 * 2),0.5f,0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 2)), bg_color);
    112     caca_put_str(m_caca, logo_x, logo_y + 2, " /   `  >  ____/  ____/  ,_  <  <____\\___  \\");
    113     caca_set_color_argb(m_caca, hex_color(0.5f + 0.25f * lol::cos(m_time * 3 + M_PI / 4 * 3),0.5f,0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 3)), bg_color);
    114     caca_put_str(m_caca, logo_x, logo_y + 3, "/__/\\___\\______\\______\\__| \\__\\_____________\\");
     106    caca_set_color_argb(m_caca, hex_color(0.5f + 0.375f * lol::cos(m_time * 3 + M_PI / 4 * 2),0.5f,0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 2)), bg_color);
     107    caca_put_str(m_caca, logo_x, logo_y + 2, " /   `  >  ____/  ____/  ,_  <_ <____\\___  \\");
     108    caca_set_color_argb(m_caca, hex_color(0.5f + 0.375f * lol::cos(m_time * 3 + M_PI / 4 * 3),0.5f,0.5f + 0.25f * lol::sin(m_time * 3 + M_PI / 4 * 3)), bg_color);
     109    caca_put_str(m_caca, logo_x, logo_y + 3, "/__/\\___\\______\\______\\__| \\__/_____________\\");
    115110    caca_set_color_argb(m_caca, 0xdef, bg_color);
    116111    caca_put_str(m_caca, logo_x + 5, logo_y + 5, "ALL YOUR TERMINALS ARE BELONG TO US");
    117112
    118     caca_set_color_ansi(m_caca, 0x666, bg_color);
    119     caca_printf(m_caca, 1, h - 2, "W=%i H=%i", w, h);
    120     //caca_printf(m_caca, 1, h - 2, "2d ratio=%i*%i", ratio_2d.x, ratio_2d.y);
    121     caca_put_str(m_caca, w - 11, h - 2, "CACA RULEZ");
     113    caca_set_color_argb(m_caca, 0x666, bg_color);
     114    caca_put_str(m_caca, w - 10, h - 1, "CACA RULEZ");
     115    caca_printf(m_caca, 0, h - 2, "W=%i", w);
     116    caca_printf(m_caca, 0, h - 1, "H=%i", h);
    122117}
    123118
  • trunk/tools/neercs/video/postfx.lolfx

    r1622 r1634  
    2323
    2424const float PI=3.14159265358979323846;
    25 float lens=PI/(deform+sync*0.0625);
     25float lens=deform+sync*0.0625;
    2626
    2727vec2 zoom(in vec2 p,in float radius)
    2828        {
    29         float zoom=1.5-(radius*cos(p.x*PI/lens)+radius*cos(p.y*PI/lens));
     29        float zoom=1.5-(radius*cos(p.x*lens)+radius*cos(p.y*lens));
    3030        return vec2(p.x*zoom-0.5,p.y*zoom-0.5);
    3131        }
     
    3333vec3 get_color(in sampler2D tex,in vec2 p)
    3434        {
    35         //return (p.x<-1.0||p.x>0.0||p.y<-1.0||p.y>0.0)?vec3(0.0,0.0,0.0):texture2D(tex,p).xyz; /* old code */
    3635        return texture2D(tex,clamp(p,-1.0,0.0)).xyz;
    3736        }
     
    4241        }
    4342
    44 float rounded_square(in vec2 rect,in float r)
     43float letterbox(in vec2 p,in float radius,in float smooth)
    4544        {
    46         vec2 b=rect-vec2(r);
    47         vec2 p=vec2(gl_TexCoord[0].xy-screen_size.xy*0.5);
    48         return length(max(abs(p)-b,0.0))-r;
    49         }
    50 
    51 vec3 letterbox(in vec3 c)
    52         {
    53         vec2 rect=screen_size*0.49;
    54         float r=screen_size.x*0.1;
    55         float f=1.0-clamp(rounded_square(rect,r),0.0,1.0);
    56         return c*f;
     45        return 1.0-smoothstep(smooth,1.0,length(max(abs(p*2.0+1.0)+vec2(radius),0.0))-radius);
    5746        }
    5847
    5948void main(void)
    6049        {
    61         vec2 q=gl_TexCoord[0].xy;
    62         vec2 p=-1.0+2.0*gl_TexCoord[0].xy;
     50        vec2 q=gl_FragCoord.xy/screen_size.xy;
     51        vec2 p=-1.0+2.0*gl_FragCoord.xy/screen_size.xy;
    6352        p.y+=0.025*sync;
    6453        vec2 z =zoom(p,0.5250);
    6554        vec2 z1=zoom(p,0.5225);
    6655        vec2 z2=zoom(p,0.5275);
    67         float g=(2.0-cos(PI/lens/2.0+z.x*PI/lens)-cos(PI/lens/2.0+z.y*PI/lens))*32.0;
     56        float g=(2.0-cos(lens*0.5+z.x*lens)-cos(lens*0.5+z.y*lens))*32.0;
    6857
    6958        float rnd1=rand(vec2(p.x+time,p.y-time));
     
    8978        vec3 color=source+glass1*glass1*0.25+glass2*glass2*0.25+(scanline?noise:source);
    9079
    91         color+=flash;                                                                                                                           // flash
     80        color+=flash;                                                                                                   // flash
    9281        if(scanline)
    9382                {
    94                 color-=0.0125*mod(z.y*4.0+time*0.25,1.0);                                                               // electron beam
    95                 color-=(vec3(rnd1,rnd1,rnd1)-vec3(rnd2,rnd2,rnd2))*0.1;                                 // noise
    96                 color*=0.75+0.25*sin(z.x*float(screen_size.x*2));                                               // scanline w
     83                color-=0.0125*mod(z.y*4.0+time*0.25,1.0);                                       // electron beam
     84                color-=(vec3(rnd1,rnd1,rnd1)-vec3(rnd2,rnd2,rnd2))*0.1;         // noise
     85                color*=0.75+0.25*sin(z.x*float(screen_size.x*2));                       // scanline w
    9786                color*=0.90+0.10*cos(z.y*float(screen_size.y))*sin(0.5+z.x*float(screen_size.x));       // scanline h
    9887                }
     
    10190                color*=0.675;
    10291                }
    103         color=vec3(color.x*0.875,color.y*1.0,color.z*0.625);
    104         color*=q.x*(6.0-q.x*6.0)*q.y*(6.0-q.y*6.0);                                                                     // vignetting
    105         //color=vec3(1.0,1.0,1.0);
    106         //color=letterbox(color);                                                                                                               // letterbox
     92        color=vec3(color.x*0.875,color.y*1.25,color.z*0.5);
     93        color*=q.x*(6.0-q.x*6.0)*q.y*(6.0-q.y*6.0);                                             // vignetting
     94        //color*=2.0*letterbox(z,-0.75,0.125)*2.0;                                              // vignetting
     95        color*=letterbox(z,-0.75,0.975);                                                                // letterbox
    10796        gl_FragColor=vec4(color,1.0);
    10897        }
  • trunk/tools/neercs/video/render.cpp

    r1629 r1634  
    5353/* window variable */
    5454ivec2 screen_size;         // screen size
    55 vec3 screen_color = CR * vec3(48, 56, 64); // screen color
     55vec3 screen_color = CR * vec3(32, 32, 32); // screen color
    5656/* object variable */
    5757float main_angle = 0.0f;   // main angle
     
    230230{
    231231    screen_size = Video::GetSize();
    232     border = 10 * ratio_2d;
     232    border = 18 * ratio_2d;
    233233    border.y = border.x; // enabled to get same border everywhere
    234234    canvas_char = (screen_size - border * 2) / (font_size * ratio_2d);
     
    252252    m_shader_glow(true),
    253253    m_shader_fx(true),
    254     m_shader_postfx(true)
     254    m_shader_postfx(true),
     255    m_border(false)
    255256{
    256257    text_render = new TextRender(m_caca, font_size);
     
    376377    glMatrixMode(GL_MODELVIEW);
    377378    // draw border
    378     glDisable(GL_TEXTURE_2D);
    379     glDisable(GL_BLEND);
    380     glColor3f(1.0f,1.0f,1.0f);
    381     rectangle(border.x - ratio_2d.x, border.y - ratio_2d.y, canvas_size.x + ratio_2d.x * 2, ratio_2d.y);
    382     rectangle(border.x - ratio_2d.x, border.y, ratio_2d.x, canvas_size.y);
    383     rectangle(border.x + canvas_size.x, border.y, ratio_2d.x, canvas_size.y);
    384     rectangle(border.x - ratio_2d.x, border.y + canvas_size.y, canvas_size.x + ratio_2d.x * 2, ratio_2d.y);
    385     glEnable(GL_BLEND);
     379    if(m_border)
     380    {
     381        glDisable(GL_TEXTURE_2D);
     382        glDisable(GL_BLEND);
     383        glColor3f(1.0f,1.0f,1.0f);
     384        rectangle(border.x - ratio_2d.x, border.y - ratio_2d.y, canvas_size.x + ratio_2d.x * 2, ratio_2d.y);
     385        rectangle(border.x - ratio_2d.x, border.y, ratio_2d.x, canvas_size.y);
     386        rectangle(border.x + canvas_size.x, border.y, ratio_2d.x, canvas_size.y);
     387        rectangle(border.x - ratio_2d.x, border.y + canvas_size.y, canvas_size.x + ratio_2d.x * 2, ratio_2d.y);
     388        glEnable(GL_BLEND);
     389    }
    386390}
    387391
  • trunk/tools/neercs/video/render.h

    r1625 r1634  
    3535    bool m_shader_fx;
    3636    bool m_shader_postfx;
     37    bool m_border;
    3738};
    3839
Note: See TracChangeset for help on using the changeset viewer.