@@ -149,7 +149,6 @@ void Term::TickGame(float seconds) | |||||
if (m_debug) | if (m_debug) | ||||
{ | { | ||||
m_time += seconds; | |||||
DrawFancyShit(); | DrawFancyShit(); | ||||
} | } | ||||
#else | #else | ||||
@@ -186,7 +185,7 @@ static uint32_t hex_color(float r, float g, float b) | |||||
void Term::DrawFancyShit() | void Term::DrawFancyShit() | ||||
{ | { | ||||
/* draw something awesome */ | /* draw something awesome */ | ||||
int bg_color = 0x222; | |||||
int bg_color = 0x000; | |||||
int w = caca_get_canvas_width(m_caca); | int w = caca_get_canvas_width(m_caca); | ||||
int h = caca_get_canvas_height(m_caca); | int h = caca_get_canvas_height(m_caca); | ||||
@@ -221,13 +220,9 @@ void Term::DrawFancyShit() | |||||
int logo_y = h / 2 - 2; | int logo_y = h / 2 - 2; | ||||
caca_set_color_argb(m_caca, 0xbac, bg_color); | caca_set_color_argb(m_caca, 0xbac, bg_color); | ||||
//caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * lol::cos(m_time * 3 ), 0.5f, 0.5f + 0.25f * lol::sin(m_time * 3 )), bg_color); | |||||
caca_put_str(m_caca, logo_x + 3, logo_y ,"__ _________ ______ ______ ______ ______"); | caca_put_str(m_caca, logo_x + 3, logo_y ,"__ _________ ______ ______ ______ ______"); | ||||
//caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * 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); | |||||
caca_put_str(m_caca, logo_x + 2, logo_y + 1, "/ \\/ / __ > __ > __ > ___// ___/ \x0a9"); | caca_put_str(m_caca, logo_x + 2, logo_y + 1, "/ \\/ / __ > __ > __ > ___// ___/ \x0a9"); | ||||
//caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * 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); | |||||
caca_put_str(m_caca, logo_x + 1, logo_y + 2, "/ / ____/ ____/ __ < <____\\___ \\"); | caca_put_str(m_caca, logo_x + 1, logo_y + 2, "/ / ____/ ____/ __ < <____\\___ \\"); | ||||
//caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * 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); | |||||
caca_put_str(m_caca, logo_x , logo_y + 3, "/__/\\__/\\_______________/ \\________________\\"); | caca_put_str(m_caca, logo_x , logo_y + 3, "/__/\\__/\\_______________/ \\________________\\"); | ||||
caca_set_color_argb(m_caca, 0x269, bg_color); | caca_set_color_argb(m_caca, 0x269, bg_color); | ||||
caca_put_str(m_caca, logo_x + 5, logo_y + 5, "ALL YOUR TERMINALS ARE BELONG TO US"); | caca_put_str(m_caca, logo_x + 5, logo_y + 5, "ALL YOUR TERMINALS ARE BELONG TO US"); | ||||
@@ -246,22 +241,19 @@ void Term::DrawFancyShit() | |||||
| :D | / | | :D | / | ||||
|______|/ | |______|/ | ||||
*/ | */ | ||||
/* | |||||
int lolcube_x = w - 12; | |||||
int lolcube_y = h - 8; | |||||
int lolcube_x = w / 2 - 5 + (w - 10) * lol::cos(m_time / 2); | |||||
int lolcube_y = h - 5 - abs ((h - 5) * lol::sin(m_time * 4)); | |||||
caca_set_color_argb(m_caca, hex_color(0.5f + 0.5f * lol::sin(m_time * 2), 0.5f + 0.5f * lol::cos(m_time * 3), 0.5f + 0.5f * lol::sin(m_time * 5)), bg_color); | |||||
caca_set_color_argb(m_caca, 0x777, bg_color); | |||||
caca_put_str(m_caca, lolcube_x + 2, lolcube_y , "_______"); | caca_put_str(m_caca, lolcube_x + 2, lolcube_y , "_______"); | ||||
caca_put_str(m_caca, lolcube_x + 1, lolcube_y + 1, "/ /|"); | caca_put_str(m_caca, lolcube_x + 1, lolcube_y + 1, "/ /|"); | ||||
caca_put_str(m_caca, lolcube_x , lolcube_y + 2, "/______/ |"); | caca_put_str(m_caca, lolcube_x , lolcube_y + 2, "/______/ |"); | ||||
caca_put_str(m_caca, lolcube_x , lolcube_y + 3, "| | |"); | caca_put_str(m_caca, lolcube_x , lolcube_y + 3, "| | |"); | ||||
caca_put_str(m_caca, lolcube_x , lolcube_y + 4, "| :D | /"); | caca_put_str(m_caca, lolcube_x , lolcube_y + 4, "| :D | /"); | ||||
caca_put_str(m_caca, lolcube_x , lolcube_y + 5, "|______|/"); | caca_put_str(m_caca, lolcube_x , lolcube_y + 5, "|______|/"); | ||||
*/ | |||||
caca_set_color_argb(m_caca, 0x777, bg_color); | caca_set_color_argb(m_caca, 0x777, bg_color); | ||||
caca_put_str(m_caca, 0, 0, "rez@lol:~/ sudo -s"); | |||||
caca_put_str(m_caca, 0, 1, "[sudo] password for rez:"); | |||||
caca_put_str(m_caca, 0, 2, "root@lol:~/ echo LOL"); | |||||
caca_put_str(m_caca, 0, 3, "LOL"); | |||||
caca_put_str(m_caca, 0, 4, "root@lol:~/"); | |||||
} | |||||
caca_put_str(m_caca, 0, 0, "rez@lol:~/code/neercs/"); | |||||
} |
@@ -22,10 +22,10 @@ void main(void) | |||||
vec3 s = texture2D(texture, p).xyz; | vec3 s = texture2D(texture, p).xyz; | ||||
vec3 c = vec3(0.0); | vec3 c = vec3(0.0); | ||||
if(p.x < mirror.x) c += (texture2D(texture, vec2(mirror.x + (mirror.x - p.x) * mirror.w, p.y * (0.8 + 2.0 * p.x) + 0.1 - 1.0 * p.x)).xyz) * (mirror.z / mirror.x * p.x); | |||||
if(p.x > 1.0 - mirror.x) c += (texture2D(texture, vec2(- mirror.x - (mirror.x + p.x) * mirror.w, p.y * (0.8 + 2.0 * (1.0 - p.x)) + 0.1 - 1.0 * (1.0 - p.x))).xyz) * (mirror.z / mirror.x * (1.0 - p.x)); | |||||
if(p.y < mirror.y) c += (texture2D(texture, vec2(p.x * (0.8 + 2.0 * p.y) + 0.1 - 1.0 * p.y, mirror.y + (mirror.y - p.y) * mirror.w)).xyz) * (mirror.z / mirror.y * p.y); | |||||
if(p.y > 1.0 - mirror.y) c += (texture2D(texture, vec2(p.x * (0.8 + 2.0 * (1.0 - p.y)) + 0.1 - 1.0 * (1.0 - p.y), - mirror.y - (mirror.y + p.y) * mirror.w)).xyz) * (mirror.z / mirror.y * (1.0 - p.y)); | |||||
if(p.x < mirror.x) c += texture2D(texture, vec2(mirror.x + (mirror.x - p.x) * mirror.w, p.y * (0.8 + 2.0 * p.x) + 0.1 - 1.0 * p.x)).xyz * (mirror.z / mirror.x * p.x); | |||||
if(p.x > 1.0 - mirror.x) c += texture2D(texture, vec2(- mirror.x - (mirror.x + p.x) * mirror.w, p.y * (0.8 + 2.0 * (1.0 - p.x)) + 0.1 - 1.0 * (1.0 - p.x))).xyz * (mirror.z / mirror.x * (1.0 - p.x)); | |||||
if(p.y < mirror.y) c += texture2D(texture, vec2(p.x * (0.8 + 2.0 * p.y) + 0.1 - 1.0 * p.y, mirror.y + (mirror.y - p.y) * mirror.w)).xyz * (mirror.z / mirror.y * p.y); | |||||
if(p.y > 1.0 - mirror.y) c += texture2D(texture, vec2(p.x * (0.8 + 2.0 * (1.0 - p.y)) + 0.1 - 1.0 * (1.0 - p.y), - mirror.y - (mirror.y + p.y) * mirror.w)).xyz * (mirror.z / mirror.y * (1.0 - p.y)); | |||||
gl_FragColor = vec4(s + c, 1.0); | gl_FragColor = vec4(s + c, 1.0); | ||||
} | } |
@@ -19,6 +19,7 @@ uniform float time; | |||||
uniform vec2 deform; | uniform vec2 deform; | ||||
uniform vec4 ghost1; | uniform vec4 ghost1; | ||||
uniform vec4 ghost2; | uniform vec4 ghost2; | ||||
uniform vec4 glass; | |||||
uniform float vignetting; | uniform float vignetting; | ||||
uniform float aberration; | uniform float aberration; | ||||
uniform vec4 moire_h; | uniform vec4 moire_h; | ||||
@@ -29,9 +30,9 @@ uniform vec3 corner; | |||||
uniform float sync; | uniform float sync; | ||||
uniform float beat; | uniform float beat; | ||||
vec2 screen(in vec2 p,in float radius) | |||||
vec2 screen(in vec2 p,in float bend,in float radius) | |||||
{ | { | ||||
float d=deform.x+sync*0.0625+beat*0.0375; | |||||
float d=bend+sync*0.0625+beat*0.0375; | |||||
return p*(1.5-(radius*cos(p.x*d)+radius*cos(p.y*d)))-0.5; | return p*(1.5-(radius*cos(p.x*d)+radius*cos(p.y*d)))-0.5; | ||||
} | } | ||||
@@ -50,18 +51,22 @@ void main(void) | |||||
vec2 q=gl_FragCoord.xy/screen_size.xy; | vec2 q=gl_FragCoord.xy/screen_size.xy; | ||||
vec2 p=-1.0+2.0*gl_FragCoord.xy/screen_size.xy; | vec2 p=-1.0+2.0*gl_FragCoord.xy/screen_size.xy; | ||||
p.y+=0.025*sync; | p.y+=0.025*sync; | ||||
vec2 z=screen(p,deform.y); | |||||
vec2 z1=screen(p,deform.y+ghost1.z*0.01); | |||||
vec2 z2=screen(p,deform.y+ghost2.z*0.01); | |||||
vec2 z=screen(p,deform.x,deform.y); | |||||
vec2 z1=screen(p,deform.x,deform.y+ghost1.z); | |||||
vec2 z2=screen(p,deform.x,deform.y+ghost2.z); | |||||
vec2 z3=screen(p,glass.w,deform.y+glass.x-glass.y); | |||||
vec2 z4=screen(p,glass.w,deform.y+glass.x+glass.y); | |||||
float mask=q.x*(6.0-q.x*6.0)*q.y*(6.0-q.y*6.0); | float mask=q.x*(6.0-q.x*6.0)*q.y*(6.0-q.y*6.0); | ||||
vec3 source=get_color(texture,z); | vec3 source=get_color(texture,z); | ||||
vec3 g1=get_color(texture,z1-ghost1.xy*0.01); | |||||
vec3 g2=get_color(texture,z2-ghost2.xy*0.01); | |||||
vec3 g1=get_color(texture,z1-ghost1.xy); | |||||
vec3 g2=get_color(texture,z2-ghost2.xy); | |||||
vec3 g3=get_color(texture,z3); | |||||
vec3 g4=get_color(texture,z4); | |||||
vec3 c=source+g1*ghost1.w+g2*ghost2.w; // mix | vec3 c=source+g1*ghost1.w+g2*ghost2.w; // mix | ||||
float v=aberration/float(screen_size.x/ratio_2d.x);//+aberration/float(screen_size.x)*(2.0-mask); | |||||
float v=aberration/float(screen_size.x/ratio_2d.x); //+aberration/float(screen_size.x)*(2.0-mask); | |||||
vec3 ca1=get_color(texture,vec2(z.x-v,z.y)); | vec3 ca1=get_color(texture,vec2(z.x-v,z.y)); | ||||
vec3 ca2=get_color(texture,vec2(z.x+v,z.y)); | vec3 ca2=get_color(texture,vec2(z.x+v,z.y)); | ||||
c+=vec3(ca1.x,c.y,ca2.z); // chromatic aberration | c+=vec3(ca1.x,c.y,ca2.z); // chromatic aberration | ||||
@@ -88,5 +93,6 @@ void main(void) | |||||
c+=r*0.05; // reflection | c+=r*0.05; // reflection | ||||
c*=mix(1.0,mask,vignetting); // vignetting | c*=mix(1.0,mask,vignetting); // vignetting | ||||
c*=letterbox(z,corner.x+2.0,corner.y,corner.z); // corner | c*=letterbox(z,corner.x+2.0,corner.y,corner.z); // corner | ||||
c+=(g3+g4)*glass.z; // glass | |||||
gl_FragColor=vec4(c,1.0); | gl_FragColor=vec4(c,1.0); | ||||
} | } |
@@ -112,13 +112,14 @@ float postfx_vignetting = 0.5f; // vignetting strength | |||||
float postfx_aberration = 4.0f; // chromatic aberration | float postfx_aberration = 4.0f; // chromatic aberration | ||||
vec4 postfx_ghost1(1.0f,0.0f,0.0f,-0.25f); // ghost picture 1 [position x,position y,position z,strength] | vec4 postfx_ghost1(1.0f,0.0f,0.0f,-0.25f); // ghost picture 1 [position x,position y,position z,strength] | ||||
vec4 postfx_ghost2(1.5f,0.0f,0.0f,0.25f); // ghost picture 2 [position x,position y,position z,strength] | vec4 postfx_ghost2(1.5f,0.0f,0.0f,0.25f); // ghost picture 2 [position x,position y,position z,strength] | ||||
vec4 postfx_glass(8.0f,0.25f,0.75f,0.2f); // glass [depth,thickness,strength,deform ratio] | |||||
vec4 postfx_moire_h(0.75f,-0.25f,0.0f,1.0f); // vertical moire [base,variable,repeat,shift] | vec4 postfx_moire_h(0.75f,-0.25f,0.0f,1.0f); // vertical moire [base,variable,repeat,shift] | ||||
vec4 postfx_moire_v(0.75f,-0.25f,1.0f,1.5f); // horizontal moire [base,variable,repeat,shift] | |||||
vec4 postfx_moire_v(0.75f,-0.25f,1.0f,2.0f); // horizontal moire [base,variable,repeat,shift] | |||||
vec4 postfx_scanline_h(1.0f,0.0f,0.0f,0.0f); // vertical scanline [base,variable,repeat,shift] | vec4 postfx_scanline_h(1.0f,0.0f,0.0f,0.0f); // vertical scanline [base,variable,repeat,shift] | ||||
vec4 postfx_scanline_v(0.75f,-0.25f,2.0f,0.0f); // horizontal scanline [base,variable,repeat,shift] | vec4 postfx_scanline_v(0.75f,-0.25f,2.0f,0.0f); // horizontal scanline [base,variable,repeat,shift] | ||||
vec3 postfx_corner(0.0f,0.8f,0.96f); // corner [width,radius,blur] | vec3 postfx_corner(0.0f,0.8f,0.96f); // corner [width,radius,blur] | ||||
vec4 mirror(0.95f,0.9f,0.4f,4.0f); // mirror [width,height,strength,ratio] | vec4 mirror(0.95f,0.9f,0.4f,4.0f); // mirror [width,height,strength,ratio] | ||||
vec4 radial(4.0f,0.9f,16,0.5f); // radial [distance,fade ratio,iteration,strength] | |||||
vec4 radial(4.0f,0.9f,16,0.25f); // radial [distance,fade ratio,iteration,strength] | |||||
/* text variable */ | /* text variable */ | ||||
ivec2 ratio_2d(2,3); // 2d ratio | ivec2 ratio_2d(2,3); // 2d ratio | ||||
ivec2 map_size(256,256); // texture map size | ivec2 map_size(256,256); // texture map size | ||||
@@ -132,7 +133,7 @@ int setup_n = 0; // item/option number | |||||
int setup_h = 8; // height | int setup_h = 8; // height | ||||
int setup_cursor = 0; // cursor position | int setup_cursor = 0; // cursor position | ||||
int setup_option_i = 0; // selected option | int setup_option_i = 0; // selected option | ||||
int setup_option_n = 13; // option number | |||||
int setup_option_n = 14; // option number | |||||
int setup_option_p = 0; // option position | int setup_option_p = 0; // option position | ||||
int setup_item_i = 0; // selected item | int setup_item_i = 0; // selected item | ||||
int setup_item_n = 8; // item number | int setup_item_n = 8; // item number | ||||
@@ -223,6 +224,15 @@ char const *setup_text[] = { | |||||
"front y", | "front y", | ||||
"front z", | "front z", | ||||
"front strength", | "front strength", | ||||
"glass", | |||||
"depth", | |||||
"thickness", | |||||
"strength", | |||||
"deform ratio", | |||||
"", | |||||
"", | |||||
"", | |||||
"", | |||||
"moire", | "moire", | ||||
"h base", | "h base", | ||||
"h variable", | "h variable", | ||||
@@ -343,6 +353,15 @@ vec4 setup_var[]={ // setup variable [start,end,step,value] | |||||
vec4(-2.0f, 2.0f, 0.10f, postfx_ghost2.y), | vec4(-2.0f, 2.0f, 0.10f, postfx_ghost2.y), | ||||
vec4(-2.0f, 2.0f, 0.10f, postfx_ghost2.z), | vec4(-2.0f, 2.0f, 0.10f, postfx_ghost2.z), | ||||
vec4(-1.0f, 1.0f, 0.05f, postfx_ghost2.w), | vec4(-1.0f, 1.0f, 0.05f, postfx_ghost2.w), | ||||
vec4(0), /* glass */ | |||||
vec4(0.0f, 16.0f, 0.50f, postfx_glass.x), | |||||
vec4(0.0f, 1.0f, 0.05f, postfx_glass.y), | |||||
vec4(0.0f, 2.0f, 0.05f, postfx_glass.z), | |||||
vec4(0.0f, 1.0f, 0.05f, postfx_glass.w), | |||||
vec4(0), | |||||
vec4(0), | |||||
vec4(0), | |||||
vec4(0), | |||||
vec4(0), /* moire */ | vec4(0), /* moire */ | ||||
vec4( 0.5f, 1.0f, 0.05f, postfx_moire_h.x), | vec4( 0.5f, 1.0f, 0.05f, postfx_moire_h.x), | ||||
vec4(-0.5f, 0.5f, 0.05f, postfx_moire_h.y), | vec4(-0.5f, 0.5f, 0.05f, postfx_moire_h.y), | ||||
@@ -420,7 +439,9 @@ void Render::UpdateVar() | |||||
k += 2; /* ghost */ | k += 2; /* ghost */ | ||||
postfx_ghost1 = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | postfx_ghost1 = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | ||||
postfx_ghost2 = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | postfx_ghost2 = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | ||||
k += 1; /* moire */ | |||||
k += 1; /* glass */ | |||||
postfx_glass = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | |||||
k += 5; /* moire */ | |||||
postfx_moire_h = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | postfx_moire_h = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | ||||
postfx_moire_v = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | postfx_moire_v = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; | ||||
k += 1; /* scanline */ | k += 1; /* scanline */ | ||||
@@ -499,6 +520,7 @@ ShaderUniform shader_postfx_texture, | |||||
shader_postfx_deform, | shader_postfx_deform, | ||||
shader_postfx_ghost1, | shader_postfx_ghost1, | ||||
shader_postfx_ghost2, | shader_postfx_ghost2, | ||||
shader_postfx_glass, | |||||
shader_postfx_vignetting, | shader_postfx_vignetting, | ||||
shader_postfx_aberration, | shader_postfx_aberration, | ||||
shader_postfx_moire_h, | shader_postfx_moire_h, | ||||
@@ -600,6 +622,7 @@ int Render::InitDraw(void) | |||||
shader_postfx_deform = shader_postfx->GetUniformLocation("deform"); | shader_postfx_deform = shader_postfx->GetUniformLocation("deform"); | ||||
shader_postfx_ghost1 = shader_postfx->GetUniformLocation("ghost1"); | shader_postfx_ghost1 = shader_postfx->GetUniformLocation("ghost1"); | ||||
shader_postfx_ghost2 = shader_postfx->GetUniformLocation("ghost2"); | shader_postfx_ghost2 = shader_postfx->GetUniformLocation("ghost2"); | ||||
shader_postfx_glass = shader_postfx->GetUniformLocation("glass"); | |||||
shader_postfx_vignetting = shader_postfx->GetUniformLocation("vignetting"); | shader_postfx_vignetting = shader_postfx->GetUniformLocation("vignetting"); | ||||
shader_postfx_aberration = shader_postfx->GetUniformLocation("aberration"); | shader_postfx_aberration = shader_postfx->GetUniformLocation("aberration"); | ||||
shader_postfx_moire_h = shader_postfx->GetUniformLocation("moire_h"); | shader_postfx_moire_h = shader_postfx->GetUniformLocation("moire_h"); | ||||
@@ -1309,8 +1332,9 @@ void Render::Draw3D() | |||||
shader_postfx->SetUniform(shader_postfx_ratio_2d, (vec2)ratio_2d / 2); | shader_postfx->SetUniform(shader_postfx_ratio_2d, (vec2)ratio_2d / 2); | ||||
shader_postfx->SetUniform(shader_postfx_time, fx_angle); | shader_postfx->SetUniform(shader_postfx_time, fx_angle); | ||||
shader_postfx->SetUniform(shader_postfx_deform, postfx_deform); | shader_postfx->SetUniform(shader_postfx_deform, postfx_deform); | ||||
shader_postfx->SetUniform(shader_postfx_ghost1, postfx_ghost1); | |||||
shader_postfx->SetUniform(shader_postfx_ghost2, postfx_ghost2); | |||||
shader_postfx->SetUniform(shader_postfx_ghost1, vec4(postfx_ghost1.x * 0.01, postfx_ghost1.y * 0.01, postfx_ghost1.z * 0.01, postfx_ghost1.w)); | |||||
shader_postfx->SetUniform(shader_postfx_ghost2, vec4(postfx_ghost2.x * 0.01, postfx_ghost2.y * 0.01, postfx_ghost2.z * 0.01, postfx_ghost2.w)); | |||||
shader_postfx->SetUniform(shader_postfx_glass, vec4(postfx_glass.x * 0.01, postfx_glass.y * 0.01, postfx_glass.z * 0.1, postfx_glass.w)); | |||||
shader_postfx->SetUniform(shader_postfx_vignetting, postfx_vignetting); | shader_postfx->SetUniform(shader_postfx_vignetting, postfx_vignetting); | ||||
shader_postfx->SetUniform(shader_postfx_aberration, postfx_aberration); | shader_postfx->SetUniform(shader_postfx_aberration, postfx_aberration); | ||||
shader_postfx->SetUniform(shader_postfx_moire_h, postfx_moire_h); | shader_postfx->SetUniform(shader_postfx_moire_h, postfx_moire_h); | ||||