Browse Source

setup menu improved, now you can change (some) variable

master
parent
commit
3429b24cb6
2 changed files with 112 additions and 51 deletions
  1. +111
    -49
      neercs/video/render.cpp
  2. +1
    -2
      neercs/video/render.h

+ 111
- 49
neercs/video/render.cpp View File

@@ -93,15 +93,17 @@ ivec2 font_size(8,8); // font size
ivec2 canvas_char(0,0); // canvas char number ivec2 canvas_char(0,0); // canvas char number
ivec2 canvas_size(0,0); // caca size ivec2 canvas_size(0,0); // caca size
/* setup variable */ /* setup variable */
bool setup_switch=false; // switch [option/item]
int setup_option=0; // selected option int setup_option=0; // selected option
int setup_option_n=6; // option number int setup_option_n=6; // option number
int setup_item=-1; // selected item
int setup_item=0; // selected item
int setup_item_n=8; // item number int setup_item_n=8; // item number
ivec2 setup_p(1,1); // position [x,y] ivec2 setup_p(1,1); // position [x,y]
ivec3 setup_size(30,0,12); // size [w,h,split] ivec3 setup_size(30,0,12); // size [w,h,split]
ivec2 setup_color(0x678,0x234); // size [w,h] ivec2 setup_color(0x678,0x234); // size [w,h]
char const *setup_text[] = { char const *setup_text[] = {
"remanency", "remanency",
"enable",
"buffer new frame", "buffer new frame",
"buffer old frame", "buffer old frame",
"source", "source",
@@ -109,16 +111,15 @@ char const *setup_text[] = {
"", "",
"", "",
"", "",
"",
"blur/glow",
"blur center",
"blur corner",
"glow/blur",
"glow enable",
"glow large center", "glow large center",
"glow large corner", "glow large corner",
"glow small center", "glow small center",
"glow small corner", "glow small corner",
"",
"",
"blur enable",
"blur center",
"blur corner",
"color", "color",
"filter red", "filter red",
"filter green", "filter green",
@@ -161,10 +162,10 @@ float value, angle, radius, scale, speed;
/* shader variable */ /* shader variable */
vec2 buffer(0.75f,0.25f); // [new frame mix,old frame mix] vec2 buffer(0.75f,0.25f); // [new frame mix,old frame mix]
vec2 remanency(0.25f,0.75f); // remanency [source mix,buffer mix] vec2 remanency(0.25f,0.75f); // remanency [source mix,buffer mix]
vec2 blur(0.25f,0.75f); // glow radius [center,corner]
vec2 glow_mix(0.5f,0.5f); // glow mix [source mix,glow mix] vec2 glow_mix(0.5f,0.5f); // glow mix [source mix,glow mix]
vec2 glow_large(2.0f,2.0f); // large glow radius [center,corner] vec2 glow_large(2.0f,2.0f); // large glow radius [center,corner]
vec2 glow_small(1.0f,1.0f); // small glow radius [center,corner] vec2 glow_small(1.0f,1.0f); // small glow radius [center,corner]
vec2 blur(0.25f,0.75f); // glow radius [center,corner]
//vec3 radial(2.0f,0.8f,0); // radial [mix,strength,color mode] //vec3 radial(2.0f,0.8f,0); // radial [mix,strength,color mode]
//------------------------------// [IDEAS] http://www.youtube.com/watch?v=d1qEP2vMe-I //------------------------------// [IDEAS] http://www.youtube.com/watch?v=d1qEP2vMe-I
float postfx_deform = 0.625f; // deformation ratio float postfx_deform = 0.625f; // deformation ratio
@@ -180,22 +181,46 @@ vec4 postfx_moire_v(0.75f,-0.25f,1.0f,1.5f);
bool postfx_scanline = true; // scanline bool postfx_scanline = true; // scanline
vec4 postfx_scanline_h(0.75f, 0.25f,0.0f,2.0f);// vertical scanline [base,variable,repeat x,repeat y] vec4 postfx_scanline_h(0.75f, 0.25f,0.0f,2.0f);// vertical scanline [base,variable,repeat x,repeat y]
vec4 postfx_scanline_v(0.75f,-0.25f,2.0f,0.0f);// horizontal scanline [base,variable,repeat x,repeat y] vec4 postfx_scanline_v(0.75f,-0.25f,2.0f,0.0f);// horizontal scanline [base,variable,repeat x,repeat y]
//------------------------------//
//00:29 <@sam> Array<vec4> toto;
//00:29 <@sam> toto << vec4(1.f, 2.f, 3.f, 4.f);
vec4 setup_var[]={
vec4(0), /* remanency */
vec4(0, 1, 1, 1),
vec4(0.0f, 1.0f, 0.1f, buffer.x),
vec4(0.0f, 1.0f, 0.1f, buffer.y),
vec4(0.0f, 1.0f, 0.1f, remanency.x),
vec4(0.0f, 1.0f, 0.1f, remanency.y),
vec4(0),
vec4(0),
vec4(0),
vec4(0), /* glow/blur */
vec4(0, 1, 1, 0),
vec4(0.0f, 8.0f, 0.1f, glow_large.x),
vec4(0.0f, 8.0f, 0.1f, glow_large.y),
vec4(0.0f, 4.0f, 0.1f, glow_small.x),
vec4(0.0f, 4.0f, 0.1f, glow_small.y),
vec4(0, 1, 1, 0),
vec4(0.0f, 2.0f, 0.1f, blur.x),
vec4(0.0f, 2.0f, 0.1f, blur.y),
vec4(0) /* color */
};


Shader *shader_simple; Shader *shader_simple;
Shader *shader_blur_h, *shader_blur_v; Shader *shader_blur_h, *shader_blur_v;
Shader *shader_remanency, *shader_glow, *shader_radial, *shader_postfx; Shader *shader_remanency, *shader_glow, *shader_radial, *shader_postfx;
// shader variables // shader variables
ShaderUniform shader_simple_texture; ShaderUniform shader_simple_texture;
ShaderUniform shader_blur_h_texture,
shader_blur_h_radius,
shader_blur_v_texture,
shader_blur_v_radius;
ShaderUniform shader_remanency_source, ShaderUniform shader_remanency_source,
shader_remanency_buffer, shader_remanency_buffer,
shader_remanency_mix; shader_remanency_mix;
ShaderUniform shader_glow_glow, ShaderUniform shader_glow_glow,
shader_glow_source, shader_glow_source,
shader_glow_mix; shader_glow_mix;
ShaderUniform shader_blur_h_texture,
shader_blur_h_radius,
shader_blur_v_texture,
shader_blur_v_radius;
ShaderUniform shader_radial_texture, ShaderUniform shader_radial_texture,
shader_radial_screen_size, shader_radial_screen_size,
shader_radial_time, shader_radial_time,
@@ -269,14 +294,6 @@ int Render::InitDraw(void)
// shader simple // shader simple
shader_simple = Shader::Create(lolfx_simple); shader_simple = Shader::Create(lolfx_simple);
shader_simple_texture = shader_simple->GetUniformLocation("texture"); shader_simple_texture = shader_simple->GetUniformLocation("texture");
// shader blur horizontal
shader_blur_h = Shader::Create(lolfx_blurh);
shader_blur_h_texture = shader_blur_h->GetUniformLocation("texture");
shader_blur_h_radius = shader_blur_h->GetUniformLocation("radius");
// shader blur vertical
shader_blur_v = Shader::Create(lolfx_blurv);
shader_blur_v_texture = shader_blur_v->GetUniformLocation("texture");
shader_blur_v_radius = shader_blur_v->GetUniformLocation("radius");
// shader remanency // shader remanency
shader_remanency = Shader::Create(lolfx_remanency); shader_remanency = Shader::Create(lolfx_remanency);
shader_remanency_source = shader_remanency->GetUniformLocation("source"); shader_remanency_source = shader_remanency->GetUniformLocation("source");
@@ -287,6 +304,14 @@ int Render::InitDraw(void)
shader_glow_glow = shader_glow->GetUniformLocation("glow"); shader_glow_glow = shader_glow->GetUniformLocation("glow");
shader_glow_source = shader_glow->GetUniformLocation("source"); shader_glow_source = shader_glow->GetUniformLocation("source");
shader_glow_mix = shader_glow->GetUniformLocation("mix"); shader_glow_mix = shader_glow->GetUniformLocation("mix");
// shader blur horizontal
shader_blur_h = Shader::Create(lolfx_blurh);
shader_blur_h_texture = shader_blur_h->GetUniformLocation("texture");
shader_blur_h_radius = shader_blur_h->GetUniformLocation("radius");
// shader blur vertical
shader_blur_v = Shader::Create(lolfx_blurv);
shader_blur_v_texture = shader_blur_v->GetUniformLocation("texture");
shader_blur_v_radius = shader_blur_v->GetUniformLocation("radius");
// shader radial // shader radial
shader_radial = Shader::Create(lolfx_radial); shader_radial = Shader::Create(lolfx_radial);
shader_radial_texture = shader_radial->GetUniformLocation("texture"); shader_radial_texture = shader_radial->GetUniformLocation("texture");
@@ -347,10 +372,9 @@ Render::Render(caca_canvas_t *caca)
m_setup(true), m_setup(true),
m_shader(true), m_shader(true),
m_shader_remanency(true), m_shader_remanency(true),
m_shader_glow(true),
m_shader_blur(true),
m_shader_fx(true),
m_shader_postfx(true),
m_shader_glow(false),
m_shader_blur(false),
m_shader_postfx(false),
m_border(false) m_border(false)
{ {
text_render = new TextRender(m_caca, font_size); text_render = new TextRender(m_caca, font_size);
@@ -387,8 +411,8 @@ void Render::TickDraw(float seconds)
} }
if (Input::GetButtonState(284/*SDLK_F3*/) && (timer - timer_key > timer_key_repeat)) if (Input::GetButtonState(284/*SDLK_F3*/) && (timer - timer_key > timer_key_repeat))
{ {
m_shader_blur = !m_shader_blur;
m_shader_glow = !m_shader_glow; m_shader_glow = !m_shader_glow;
m_shader_blur = !m_shader_blur;
timer_key = timer; timer_key = timer;
} }
if (Input::GetButtonState(285/*SDLK_F4*/)&&(timer-timer_key>timer_key_repeat)) if (Input::GetButtonState(285/*SDLK_F4*/)&&(timer-timer_key>timer_key_repeat))
@@ -402,40 +426,66 @@ void Render::TickDraw(float seconds)
} }
if (Input::GetButtonState(273/*SDLK_UP*/)&&(timer-timer_key>timer_key_repeat)) if (Input::GetButtonState(273/*SDLK_UP*/)&&(timer-timer_key>timer_key_repeat))
{ {
if (setup_item == -1)
if (m_setup)
{ {
setup_option--;
if (setup_option < 0) setup_option = setup_option_n - 1;
}
else
{
setup_item--;
if (setup_item < 0) setup_item = setup_item_n - 1;
if (!setup_switch)
{
setup_option--;
if (setup_option < 0) setup_option = setup_option_n - 1;
setup_item = 0;
}
else
{
setup_item--;
if (setup_item < 0) setup_item = setup_item_n - 1;
}
} }
timer_key = timer; timer_key = timer;
} }
if (Input::GetButtonState(274/*SDLK_DOWN*/)&&(timer-timer_key>timer_key_repeat)) if (Input::GetButtonState(274/*SDLK_DOWN*/)&&(timer-timer_key>timer_key_repeat))
{ {
if (setup_item == -1)
{
setup_option++;
if (setup_option > setup_option_n - 1) setup_option = 0;
}
else
if (m_setup)
{ {
setup_item++;
if (setup_item > setup_item_n - 1) setup_item = 0;
if (!setup_switch)
{
setup_option++;
if (setup_option > setup_option_n - 1) setup_option = 0;
setup_item = 0;
}
else
{
setup_item++;
if (setup_item > setup_item_n - 1) setup_item = 0;
}
} }
timer_key = timer; timer_key = timer;
} }
if (Input::GetButtonState(276/*SDLK_LEFT*/)&&(timer-timer_key>timer_key_repeat)) if (Input::GetButtonState(276/*SDLK_LEFT*/)&&(timer-timer_key>timer_key_repeat))
{ {
setup_item = -1;
if (m_setup && setup_switch)
{
int k = setup_option * (setup_item_n + 1) + 1 + setup_item;
setup_var[k].w -= setup_var[k].z;
if (setup_var[k].w < setup_var[k].x) setup_var[k].w = setup_var[k].x;
}
timer_key = timer; timer_key = timer;
} }
if (Input::GetButtonState(275/*SDLK_RIGHT*/)&&(timer-timer_key>timer_key_repeat)) if (Input::GetButtonState(275/*SDLK_RIGHT*/)&&(timer-timer_key>timer_key_repeat))
{ {
setup_item = 0;
if (m_setup && setup_switch)
{
int k = setup_option * (setup_item_n + 1) + 1 + setup_item;
setup_var[k].w += setup_var[k].z;
if (setup_var[k].w > setup_var[k].y) setup_var[k].w = setup_var[k].y;
}
timer_key = timer;
}
if (Input::GetButtonState(13/*SDLK_RETURN*/)&&(timer-timer_key>timer_key_repeat))
{
if (m_setup)
{
setup_switch = !setup_switch;
}
timer_key = timer; timer_key = timer;
} }


@@ -510,7 +560,7 @@ void Render::TickDraw(float seconds)
{ {
int y = setup_p.y + 1 + i; int y = setup_p.y + 1 + i;
int k = i * (setup_item_n + 1); int k = i * (setup_item_n + 1);
if (setup_option != i)
if (setup_option != i || setup_switch)
{ {
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); caca_set_color_argb(m_caca, setup_color.x, setup_color.y);
caca_put_str(m_caca, setup_p.x + 1, y, setup_text[k]); caca_put_str(m_caca, setup_p.x + 1, y, setup_text[k]);
@@ -527,7 +577,7 @@ void Render::TickDraw(float seconds)
{ {
int y = setup_p.y + 1 + i; int y = setup_p.y + 1 + i;
int k = setup_option * (setup_item_n + 1) + 1; int k = setup_option * (setup_item_n + 1) + 1;
if (setup_option != i)
if (setup_item != i || !setup_switch)
{ {
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); caca_set_color_argb(m_caca, setup_color.x, setup_color.y);
caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k + i]); caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k + i]);
@@ -535,10 +585,22 @@ void Render::TickDraw(float seconds)
else else
{ {
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); caca_set_color_argb(m_caca, setup_color.y, setup_color.x);
caca_draw_line(m_caca, setup_p.x + setup_size.z + 1, y, setup_p.x + setup_size.x, y,' ');
caca_draw_line(m_caca, setup_p.x + setup_size.z, y, setup_p.x + setup_size.x, y,' ');
caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k + i]); caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k + i]);
} }
} }
/* display variable */
int y = setup_p.y + setup_size.y;
caca_set_color_argb(m_caca, setup_color.y, setup_color.x);
caca_draw_line(m_caca, setup_p.x, y, setup_p.x + setup_size.x, y,' ');
if (setup_switch)
{
int k = setup_option * (setup_item_n + 1) + 1 + setup_item;
int w = setup_size.x - 3 - 4;
caca_printf(m_caca, setup_p.x + setup_size.x - 4, y, "%4.2f", setup_var[k].w);
caca_draw_line(m_caca, setup_p.x + 1, y, setup_p.x + 1 + w, y,'-');
if(setup_var[k].w > setup_var[k].x) caca_draw_line(m_caca, setup_p.x + 1, y, setup_p.x + 1 + int(w / (setup_var[k].y - setup_var[k].x) * setup_var[k].w), y,'X');
}
} }


Draw2D(); Draw2D();
@@ -636,7 +698,7 @@ void Render::Draw3D()
} }


// shader glow // shader glow
if (m_shader_fx && m_shader_glow)
if (m_shader_glow)
{ {
// shader blur horizontal // shader blur horizontal
fbo_blur_h->Bind(); fbo_blur_h->Bind();
@@ -688,7 +750,7 @@ void Render::Draw3D()
fbo_front->Unbind(); fbo_front->Unbind();
} }


if (m_shader_fx && m_shader_blur)
if (m_shader_blur)
{ {
// shader blur horizontal // shader blur horizontal
fbo_ping->Bind(); fbo_ping->Bind();
@@ -745,4 +807,4 @@ void Render::Draw3D()


Render::~Render() Render::~Render()
{ {
}
}

+ 1
- 2
neercs/video/render.h View File

@@ -32,10 +32,9 @@ private:
bool m_polygon; bool m_polygon;
bool m_setup; bool m_setup;
bool m_shader; bool m_shader;
bool m_shader_blur;
bool m_shader_remanency; bool m_shader_remanency;
bool m_shader_blur;
bool m_shader_glow; bool m_shader_glow;
bool m_shader_fx;
bool m_shader_postfx; bool m_shader_postfx;
bool m_border; bool m_border;
}; };


Loading…
Cancel
Save