Changeset 1874


Ignore:
Timestamp:
Sep 4, 2012, 3:12:25 AM (7 years ago)
Author:
rez
Message:

added border x/y in setup

Location:
trunk/tools/neercs/video
Files:
2 edited

Legend:

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

    r1873 r1874  
    110110vec4 postfx_scanline_v(0.75f,-0.25f,2.0f,0.0f); // horizontal scanline [base,variable,repeat x,repeat y]
    111111vec2 postfx_corner(0.75f,0.95f);      // corner [radius,blur]
     112/* text variable */
     113ivec2 ratio_2d(2,4);            // 2d ratio
     114ivec2 map_size(256,256);        // texture map size
     115ivec2 font_size(8,8);           // font size
     116ivec2 canvas_char(0,0);         // canvas char number
     117ivec2 canvas_size(0,0);         // caca size
    112118/* window variable */
    113 ivec2 border;              // border width
    114 /* text variable */
    115 ivec2 ratio_2d(2,4);       // 2d ratio
    116 ivec2 map_size(256,256);   // texture map size
    117 ivec2 font_size(8,8);      // font size
    118 ivec2 canvas_char(45,16);  // canvas char number
    119 ivec2 canvas_size(0,0);    // caca size
     119ivec2 border = 18 * ratio_2d;   // border width
    120120/* setup variable */
    121121bool setup_switch = false;      // switch [option/item]
     
    134134ivec2 setup_color(0x678,0x234); // color [foreground,background]
    135135char const *setup_text[] = {
    136     "theme",
    137         "default",
    138         "ye olde monitor",
    139         "green screen",
    140         "",
     136    "main",
     137        "2d ratio w",
     138        "2d ratio h",
     139        "border w",
     140        "border h",
    141141        "",
    142142        "",
     
    172172    "screen",
    173173        "enable",
    174         "char number w",
    175         "char number h",
    176174        "deform ratio",
    177175        "zoom base",
     
    179177        "corner blur",
    180178        "vignetting",
     179        "",
     180        "",
    181181    "color",
    182182        "filter red",
     
    225225        "v repeat y"
    226226    };
     227
    227228vec4 setup_var[]={ // setup variable [start,end,step,value]
    228     vec4(0), /* theme */
    229         vec4(0),
    230         vec4(0),
    231         vec4(0),
    232         vec4(0),
     229    vec4(0), /* main */
     230        vec4( 1,  8, 1, ratio_2d.x),
     231        vec4( 1,  8, 1, ratio_2d.y),
     232        vec4( 0, 64, 1, border.x / ratio_2d.x),
     233        vec4( 0, 64, 1, border.y / ratio_2d.y),
    233234        vec4(0),
    234235        vec4(0),
     
    264265    vec4(0), /* screen */
    265266        vec4( 0, 1, 1, 1),
    266         vec4( 0.0f, 80.0f, 1.0f, canvas_char.x),
    267         vec4( 0.0f, 50.0f, 1.0f, canvas_char.y),
    268267        vec4( 0.0f, 1.0f, 0.05f, postfx_deform.x),
    269268        vec4( 0.5f, 0.7f, 0.01f, postfx_deform.y),
     
    271270        vec4( 0.0f, 1.0f, 0.05f, postfx_corner.y),
    272271        vec4(-1.0f, 1.0f, 0.10f, postfx_vignetting),
     272        vec4(0),
     273        vec4(0),
    273274    vec4(0), /* color */
    274275        vec4(0.0f, 1.0f, 0.05f, color_filter.x),
     
    321322void Render::UpdateVar()
    322323{
    323     int k = 1; /* theme */
    324     k += 9; /* remanency */
     324    int k = 1; /* main */
     325    //ratio_2d = vec2(setup_var[k].w, setup_var[k + 1].w);
     326    k += 2;
     327    border = vec2(setup_var[k].w, setup_var[k + 1].w) * ratio_2d; k += 2;
     328    k += 5; /* remanency */
    325329    m_shader_remanency = (setup_var[k].w == 1) ? true : false; k++;
    326330    buffer = vec2(setup_var[k].w, setup_var[k + 1].w); k += 2;
     
    336340    k += 6; /* screen */
    337341    m_shader_postfx = (setup_var[k].w == 1) ? true : false; k++;
    338     canvas_char = vec2(setup_var[k].w, setup_var[k + 1].w); k += 2;
    339342    postfx_deform = vec2(setup_var[k].w, setup_var[k + 1].w); k += 2;
    340343    postfx_corner = vec2(setup_var[k].w, setup_var[k + 1].w); k += 2;
    341344    postfx_vignetting = setup_var[k].w; k++;
    342     k += 1; /* color */
     345    k += 3; /* color */
    343346    color_filter = vec3(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w); k += 3;
    344347    color_color = vec3(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w); k += 3;
     
    359362    postfx_scanline_v = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4;
    360363
     364    UpdateSize();
     365}
     366
     367void Render::UpdateSize()
     368{
     369    screen_size = Video::GetSize();
     370    //border.y = border.x; // enabled to get same border everywhere
     371    canvas_char = (screen_size - border * 2) / (font_size * ratio_2d);
     372    canvas_size = canvas_char * font_size * ratio_2d;
     373
     374    border = (screen_size - canvas_size) / 2;
     375
    361376    caca_set_canvas_size(m_caca, canvas_char.x, canvas_char.y);
     377
     378    setup_p = (canvas_char - setup_size.xy) / 2;
    362379}
    363380
     
    425442TextRender *text_render;
    426443
    427 void fs_quad()
     444void Render::TraceQuad()
    428445{
    429446    glLoadIdentity();
     
    431448}
    432449
    433 void draw_shader_simple(FrameBuffer *fbo_output, int n)
     450void Render::ShaderSimple(FrameBuffer *fbo_output, int n)
    434451{
    435452    shader_simple->Bind();
    436453    shader_simple->SetUniform(shader_simple_texture, fbo_output->GetTexture(), n);
    437     fs_quad();
     454    TraceQuad();
    438455    shader_simple->Unbind();
    439 }
    440 
    441 void rectangle(int x, int y, int w, int h)
    442 {
    443     glLoadIdentity();
    444     glBegin(GL_QUADS);
    445         glVertex2i(x+w, y  );
    446         glVertex2i(x  , y  );
    447         glVertex2i(x  , y+h);
    448         glVertex2i(x+w, y+h);
    449     glEnd();
    450456}
    451457
     
    528534int Render::CreateGLWindow()
    529535{
    530     screen_size = Video::GetSize();
    531     border = 18 * ratio_2d;
    532     border.y = border.x; // enabled to get same border everywhere
    533     canvas_char = (screen_size - border * 2) / (font_size * ratio_2d);
    534     canvas_size = canvas_char * font_size * ratio_2d;
    535 
    536     border = (screen_size - canvas_size) / 2;
    537 
    538     caca_set_canvas_size(m_caca, canvas_char.x, canvas_char.y);
    539 
    540     setup_p = (canvas_char - setup_size.xy) / 2;
    541     setup_n = calc_item_length();
    542 
     536    UpdateSize();
    543537    InitDraw();
    544538    return true;
     
    583577    {
    584578        m_setup = !m_setup;
     579        if (m_setup) setup_n = calc_item_length();
    585580        sync_flag = true;
    586581        sync_angle = main_angle;
     
    723718            setup_var[setup_item_key].w -= setup_var[setup_item_key].z;
    724719            if (setup_var[setup_item_key].w < setup_var[setup_item_key].x) setup_var[setup_item_key].w = setup_var[setup_item_key].x;
    725             Render::UpdateVar();
     720            UpdateVar();
    726721        }
    727722    }
     
    732727            setup_var[setup_item_key].w += setup_var[setup_item_key].z;
    733728            if (setup_var[setup_item_key].w > setup_var[setup_item_key].y) setup_var[setup_item_key].w = setup_var[setup_item_key].y;
    734             Render::UpdateVar();
     729            UpdateVar();
    735730        }
    736731    }
     
    740735        {
    741736            setup_var[setup_item_key].w = setup_var[setup_item_key].x;
    742             Render::UpdateVar();
     737            UpdateVar();
    743738        }
    744739    }
     
    748743        {
    749744            setup_var[setup_item_key].w = setup_var[setup_item_key].y;
    750             Render::UpdateVar();
     745            UpdateVar();
    751746        }
    752747    }
     
    872867                caca_printf(m_caca, setup_p.x + setup_size.x - 4, y, "%4.2f", setup_var[setup_item_key].w);
    873868                caca_draw_line(m_caca, x, y, x - bar_x + bar_w * setup_var[setup_item_key].y, y,'.');
    874                 if(setup_var[setup_item_key].w != setup_var[setup_item_key].x) caca_draw_line(m_caca, x, y, x - bar_x + bar_w * setup_var[setup_item_key].w, y,'x');
     869                if (setup_var[setup_item_key].w != setup_var[setup_item_key].x) caca_draw_line(m_caca, x, y, x - bar_x + bar_w * setup_var[setup_item_key].w, y,'x');
    875870            }
    876871            else
    877872            {
    878                 caca_put_str(m_caca, setup_p.x + setup_size.x - 3, y, (setup_var[setup_item_key].w == setup_var[setup_item_key].y)?"YES":" NO");
     873                if (setup_var[setup_item_key] != vec4(0))
     874                {
     875                    caca_put_str(m_caca, setup_p.x + setup_size.x - 3, y, (setup_var[setup_item_key].w == setup_var[setup_item_key].y)?"YES":" NO");
     876                }
    879877            }
    880878        }
     
    883881    int h = caca_get_canvas_height(m_caca);
    884882    caca_set_color_argb(m_caca, 0xfff, 0x000);
    885     caca_printf(m_caca, 1, 1, "W=%i*%i", w, h);
     883    caca_printf(m_caca, 0, 0, "%i*%i", w, h);
    886884    }
    887885
     
    946944        shader_copper->SetUniform(shader_copper_time, fx_angle);
    947945        shader_copper->SetUniform(shader_copper_copper, copper);
    948         fs_quad();
     946        TraceQuad();
    949947        shader_color->Unbind();
    950948        fbo_tmp->Unbind();
    951949        // shader simple
    952950        fbo_back->Bind();
    953         draw_shader_simple(fbo_tmp, 0);
     951        ShaderSimple(fbo_tmp, 0);
    954952        fbo_back->Unbind();
    955953    }
     
    963961        shader_remanency->SetUniform(shader_remanency_buffer, fbo_buffer->GetTexture(), 1);
    964962        shader_remanency->SetUniform(shader_remanency_mix, remanency);
    965         fs_quad();
     963        TraceQuad();
    966964        shader_remanency->Unbind();
    967965        fbo_tmp->Unbind();
    968966        // shader simple
    969967        fbo_back->Bind();
    970         draw_shader_simple(fbo_tmp, 0);
     968        ShaderSimple(fbo_tmp, 0);
    971969        fbo_back->Unbind();
    972970        // save previous fbo
     
    976974        shader_remanency->SetUniform(shader_remanency_buffer, fbo_buffer->GetTexture(), 1);
    977975        shader_remanency->SetUniform(shader_remanency_mix, buffer);
    978         fs_quad();
     976        TraceQuad();
    979977        shader_remanency->Unbind();
    980978        fbo_tmp->Unbind();
    981979        // shader simple
    982980        fbo_buffer->Bind();
    983         draw_shader_simple(fbo_tmp, 0);
     981        ShaderSimple(fbo_tmp, 0);
    984982        fbo_buffer->Unbind();
    985983    }
     
    993991        shader_blur_h->SetUniform(shader_blur_h_texture, fbo_back->GetTexture(), 0);
    994992        shader_blur_h->SetUniform(shader_blur_h_radius, glow_large / screen_size.x);
    995         fs_quad();
     993        TraceQuad();
    996994        shader_blur_h->Unbind();
    997995        fbo_blur_h->Unbind();
     
    1001999        shader_blur_v->SetUniform(shader_blur_v_texture, fbo_blur_h->GetTexture(), 0);
    10021000        shader_blur_v->SetUniform(shader_blur_v_radius, glow_large / screen_size.y);
    1003         fs_quad();
     1001        TraceQuad();
    10041002        shader_blur_v->Unbind();
    10051003        fbo_blur_v->Unbind();
     
    10091007        shader_blur_h->SetUniform(shader_blur_h_texture, fbo_blur_v->GetTexture(), 0);
    10101008        shader_blur_h->SetUniform(shader_blur_h_radius, glow_small / screen_size.x);
    1011         fs_quad();
     1009        TraceQuad();
    10121010        shader_blur_h->Unbind();
    10131011        fbo_blur_h->Unbind();
     
    10171015        shader_blur_v->SetUniform(shader_blur_v_texture, fbo_blur_h->GetTexture(), 0);
    10181016        shader_blur_v->SetUniform(shader_blur_v_radius, glow_small / screen_size.y);
    1019         fs_quad();
     1017        TraceQuad();
    10201018        shader_blur_v->Unbind();
    10211019        fbo_blur_v->Unbind();
     
    10261024        shader_glow->SetUniform(shader_glow_source, fbo_back->GetTexture(), 1);
    10271025        shader_glow->SetUniform(shader_glow_mix, glow_mix);
    1028         fs_quad();
     1026        TraceQuad();
    10291027        shader_glow->Unbind();
    10301028        fbo_front->Unbind();
     
    10341032        // shader simple
    10351033        fbo_front->Bind();
    1036         draw_shader_simple(fbo_back, 0);
     1034        ShaderSimple(fbo_back, 0);
    10371035        fbo_front->Unbind();
    10381036    }
     
    10481046        shader_color->SetUniform(shader_color_color, color_color);
    10491047        shader_color->SetUniform(shader_color_flash, flash_value);
    1050         fs_quad();
     1048        TraceQuad();
    10511049        shader_color->Unbind();
    10521050        fbo_tmp->Unbind();
    10531051        // shader simple
    10541052        fbo_front->Bind();
    1055         draw_shader_simple(fbo_tmp, 0);
     1053        ShaderSimple(fbo_tmp, 0);
    10561054        fbo_front->Unbind();
    10571055    }
     
    10681066        shader_noise->SetUniform(shader_noise_noise, noise_noise);
    10691067        shader_noise->SetUniform(shader_noise_retrace, noise_retrace);
    1070         fs_quad();
     1068        TraceQuad();
    10711069        shader_noise->Unbind();
    10721070        fbo_tmp->Unbind();
    10731071        // shader simple
    10741072        fbo_front->Bind();
    1075         draw_shader_simple(fbo_tmp, 0);
     1073        ShaderSimple(fbo_tmp, 0);
    10761074        fbo_front->Unbind();
    10771075    }
     
    10841082        shader_blur_h->SetUniform(shader_blur_h_texture, fbo_front->GetTexture(), 0);
    10851083        shader_blur_h->SetUniform(shader_blur_h_radius, blur / screen_size.x);
    1086         fs_quad();
     1084        TraceQuad();
    10871085        shader_blur_h->Unbind();
    10881086        fbo_tmp->Unbind();
     
    10921090        shader_blur_v->SetUniform(shader_blur_v_texture, fbo_tmp->GetTexture(), 0);
    10931091        shader_blur_v->SetUniform(shader_blur_v_radius, blur / screen_size.y);
    1094         fs_quad();
     1092        TraceQuad();
    10951093        shader_blur_v->Unbind();
    10961094        fbo_front->Unbind();
     
    11151113        shader_postfx->SetUniform(shader_postfx_corner, postfx_corner);
    11161114        shader_postfx->SetUniform(shader_postfx_sync, (float)fabs(sync_value*cosf((main_angle-sync_angle)*6.0f)));
    1117         fs_quad();
     1115        TraceQuad();
    11181116        shader_postfx->Unbind();
    11191117    }
     
    11211119    {
    11221120        // shader simple
    1123         draw_shader_simple(fbo_front, 0);
     1121        ShaderSimple(fbo_front, 0);
    11241122    }
    11251123
  • trunk/tools/neercs/video/render.h

    r1836 r1874  
    2424    int CreateGLWindow();
    2525    int InitDraw();
     26    void ShaderSimple(FrameBuffer *fbo_output, int n);
     27    void TraceQuad();
    2628    void Pause();
    2729    void Shader();
    2830    void UpdateVar();
     31    void UpdateSize();
    2932
    3033    caca_canvas_t *m_caca;
Note: See TracChangeset for help on using the changeset viewer.