Changeset 1806 for trunk/tools
- Timestamp:
- Aug 24, 2012, 3:21:53 AM (11 years ago)
- Location:
- trunk/tools/neercs
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/neercs/Makefile.am
r1656 r1806 12 12 video/text-render.cpp video/text-render.h \ 13 13 video/simple.lolfx \ 14 video/blurh.lolfx video/blurv.lolfx \15 video/remanency.lolfx video/ glow.lolfx video/postfx.lolfx video/radial.lolfx\14 video/blurh.lolfx video/blurv.lolfx video/glow.lolfx video/radial.lolfx \ 15 video/remanency.lolfx video/noise.lolfx video/postfx.lolfx\ 16 16 video/text.lolfx 17 17 neercs_CPPFLAGS = @LOL_CFLAGS@ @PIPI_CFLAGS@ @CACA_CFLAGS@ -Iold -
trunk/tools/neercs/neercs.vcxproj
r1656 r1806 79 79 </ItemGroup> 80 80 <ItemGroup> 81 <LolFxCompile Include="video\simple.lolfx" /> 82 <LolFxCompile Include="video\text.lolfx" /> 81 83 <LolFxCompile Include="video\blurh.lolfx" /> 82 84 <LolFxCompile Include="video\blurv.lolfx" /> 83 85 <LolFxCompile Include="video\glow.lolfx" /> 84 <LolFxCompile Include="video\postfx.lolfx" />85 86 <LolFxCompile Include="video\radial.lolfx" /> 86 87 <LolFxCompile Include="video\remanency.lolfx" /> 87 <LolFxCompile Include="video\ simple.lolfx" />88 <LolFxCompile Include="video\ text.lolfx" />88 <LolFxCompile Include="video\noise.lolfx" /> 89 <LolFxCompile Include="video\postfx.lolfx" /> 89 90 </ItemGroup> 90 91 <PropertyGroup Label="Globals"> -
trunk/tools/neercs/neercs.vcxproj.filters
r1656 r1806 115 115 </ItemGroup> 116 116 <ItemGroup> 117 <LolFxCompile Include="video\simple.lolfx"> 118 <Filter>video</Filter> 119 </LolFxCompile> 120 <LolFxCompile Include="video\text.lolfx"> 121 <Filter>video</Filter> 122 </LolFxCompile> 117 123 <LolFxCompile Include="video\blurh.lolfx"> 118 124 <Filter>video</Filter> … … 124 130 <Filter>video</Filter> 125 131 </LolFxCompile> 126 <LolFxCompile Include="video\postfx.lolfx">127 <Filter>video</Filter>128 </LolFxCompile>129 132 <LolFxCompile Include="video\radial.lolfx"> 130 133 <Filter>video</Filter> … … 133 136 <Filter>video</Filter> 134 137 </LolFxCompile> 135 <LolFxCompile Include="video\ simple.lolfx">138 <LolFxCompile Include="video\noise.lolfx"> 136 139 <Filter>video</Filter> 137 140 </LolFxCompile> 138 <LolFxCompile Include="video\ text.lolfx">141 <LolFxCompile Include="video\postfx.lolfx"> 139 142 <Filter>video</Filter> 140 143 </LolFxCompile> -
trunk/tools/neercs/video/postfx.lolfx
r1786 r1806 21 21 uniform vec3 filter; 22 22 uniform vec3 color; 23 uniform vec3 retrace;24 uniform vec2 offset;25 uniform float noise;26 23 uniform float aberration; 27 24 uniform vec4 moire_h; … … 34 31 uniform float sync; 35 32 36 const float PI=3.14159265358979323846;37 38 33 vec2 screen(in vec2 p,in float radius) 39 34 { … … 45 40 { 46 41 return texture2D(tex,clamp(p,-1.0,0.0)).xyz; 47 }48 49 float rand(in vec2 p)50 {51 return fract(sin(dot(p,vec2(12.9898,78.233)))*43758.5453);52 42 } 53 43 … … 67 57 float mask=q.x*(6.0-q.x*6.0)*q.y*(6.0-q.y*6.0); 68 58 69 vec2 rnd=vec2(rand(vec2(p.x+time,p.y-time)),rand(vec2(p.x-time,p.y+time))); 70 71 vec2 o=(offset-offset*2.0*rnd.x)/screen_size; // offset 72 vec3 source=get_color(texture,z+o); // offset added to source 59 vec3 source=get_color(texture,z); 73 60 vec3 g1=get_color(texture,z1-ghost1.xy); 74 61 vec3 g2=get_color(texture,z2-ghost2.xy); … … 77 64 78 65 vec3 ca; 79 ca.x=get_color(texture,vec2(z.x +o.x-v,z.y+o.y)).x;80 ca.y=get_color(texture,vec2(z.x +o.x ,z.y+o.y)).y;81 ca.z=get_color(texture,vec2(z.x+ o.x+v,z.y+o.y)).z;66 ca.x=get_color(texture,vec2(z.x-v,z.y)).x; 67 ca.y=get_color(texture,vec2(z.x ,z.y)).y; 68 ca.z=get_color(texture,vec2(z.x+v,z.y)).z; 82 69 83 70 vec3 c=source+g1*g1*ghost1.w+g2*g2*ghost2.w; // mix … … 92 79 c+=flash; // flash 93 80 c+=ca; // chromatic aberration 94 c-=retrace.x*mod(z.y*retrace.y+time*retrace.z,1.0); // retrace95 c-=(vec3(rnd.x-rnd.y))*noise; // noise96 81 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 97 82 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 -
trunk/tools/neercs/video/render.cpp
r1803 r1806 32 32 #include "text-render.h" 33 33 34 extern char const *lolfx_simple; 35 extern char const *lolfx_remanency; 34 36 extern char const *lolfx_blurh; 35 37 extern char const *lolfx_blurv; 36 extern char const *lolfx_remanency;37 38 extern char const *lolfx_glow; 39 extern char const *lolfx_radial; 40 extern char const *lolfx_noise; 38 41 extern char const *lolfx_postfx; 39 extern char const *lolfx_radial;40 extern char const *lolfx_simple;41 42 42 43 #define PID M_PI/180.0f // pi ratio … … 92 93 vec2 glow_small(1.0f,1.0f); // small glow radius [center,corner] 93 94 vec2 blur(0.25f,0.5f); // glow radius [center,corner] 94 vec2 postfx_deform(0.7f,0.54f); // deformation [ratio,zoom] 95 vec2 noise_offset(3.0f,3.0f); // random line [horizontal,vertical] 96 float noise_noise = 0.15f; // noise 97 vec3 noise_retrace(0.05f,2.0f,4.0f); // retrace [strength,length,speed] 98 vec2 postfx_deform(0.7f,0.54f); // deformation [ratio,zoom] 95 99 vec3 postfx_filter(0.8f,0.9f,0.4f); // color filter [red,green,blue] 96 100 vec3 postfx_color(1.8f,1.5f,0.5f); // color modifier [brightness,contrast,grayscale] 97 101 vec2 postfx_corner(0.75f,0.95f); // corner [radius,blur] 98 102 float postfx_vignetting = -0.5f; // vignetting strength 99 vec3 postfx_retrace(0.05f,2.0f,4.0f); // retrace [strength,length,speed]100 vec2 postfx_offset(3.0f,3.0f); // random line [horizontal,vertical]101 float postfx_noise = 0.15f; // noise102 float postfx_aberration = 4.0f; // chromatic aberration103 103 vec4 postfx_ghost1(0.01f,0.0f,0.1f,-0.4f); // ghost picture 1 [position x,position y,position z,strength] 104 104 vec4 postfx_ghost2(0.02f,0.0f,0.1f,0.4f); // ghost picture 2 [position x,position y,position z,strength] 105 float postfx_aberration = 4.0f; // chromatic aberration 105 106 vec4 postfx_moire_h(0.75f,-0.25f,0.0f,1.0f); // vertical moire [base,variable,repeat x,repeat y] 106 107 vec4 postfx_moire_v(0.75f,-0.25f,1.0f,1.5f); // horizontal moire [base,variable,repeat x,repeat y] … … 180 181 "contrast", 181 182 "grayscale", 182 " ",183 "aberration", 183 184 "", 184 185 "noise", … … 186 187 "offset v", 187 188 "noise", 188 "aberration",189 189 "retrace strength", 190 190 "retrace length", 191 191 "retrace speed", 192 "", 192 193 "", 193 194 "ghost", … … 272 273 vec4(0.0f, 4.0f, 0.1f, postfx_color.y), 273 274 vec4(0.0f, 1.5f, 0.1f, postfx_color.z), 274 vec4(0 ),275 vec4(0.0f, 8.0f, 0.5f, postfx_aberration), 275 276 vec4(0), 276 277 vec4(0), /* noise */ 277 vec4(0.0f, 4.0f, 0.50f, postfx_offset.x),278 vec4(0.0f, 4.0f, 0.50f, postfx_offset.y),279 vec4(0.0f, 1.0f, 0.05f, postfx_noise),280 vec4(0.0f, 8.0f, 0.50f, postfx_aberration),281 vec4(0.0f, 0.2f, 0.01f, postfx_retrace.x),282 vec4(0.0f, 8.0f, 0.50f, postfx_retrace.y),283 vec4(0 .0f, 4.0f, 0.25f, postfx_retrace.z),278 vec4(0.0f, 4.0f, 0.50f, noise_offset.x), 279 vec4(0.0f, 4.0f, 0.50f, noise_offset.y), 280 vec4(0.0f, 1.0f, 0.05f, noise_noise), 281 vec4(0.0f, 0.2f, 0.01f, noise_retrace.x), 282 vec4(0.0f, 8.0f, 0.50f, noise_retrace.y), 283 vec4(0.0f, 4.0f, 0.25f, noise_retrace.z), 284 vec4(0), 284 285 vec4(0), 285 286 vec4(0), /* ghost */ … … 336 337 postfx_filter = vec3(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w); k += 3; 337 338 postfx_color = vec3(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w); k += 3; 338 k += 3; /* noise */339 postfx_offset = vec2(setup_var[k].w, setup_var[k + 1].w); k += 2;340 postfx_noise = setup_var[k].w; k++;341 339 postfx_aberration = setup_var[k].w; k++; 342 postfx_retrace = vec3(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w); k += 3; 343 k += 2; /* ghost */ 340 k += 2; /* noise */ 341 noise_offset = vec2(setup_var[k].w, setup_var[k + 1].w); k += 2; 342 noise_noise = setup_var[k].w; k++; 343 noise_retrace = vec3(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w); k += 3; 344 k += 3; /* ghost */ 344 345 postfx_ghost1 = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; 345 346 postfx_ghost2 = vec4(setup_var[k].w, setup_var[k + 1].w, setup_var[k + 2].w, setup_var[k + 3].w); k += 4; … … 365 366 366 367 Shader *shader_simple; 367 Shader *shader_blur_h, *shader_blur_v; 368 Shader *shader_remanency, *shader_glow, *shader_radial, *shader_postfx; 368 Shader *shader_remanency; 369 Shader *shader_blur_h, *shader_blur_v, *shader_glow, *shader_radial; 370 Shader *shader_noise, *shader_postfx; 369 371 // shader variables 370 372 ShaderUniform shader_simple_texture; … … 372 374 shader_remanency_buffer, 373 375 shader_remanency_mix; 374 ShaderUniform shader_glow_glow,375 shader_glow_source,376 shader_glow_mix;377 376 ShaderUniform shader_blur_h_texture, 378 377 shader_blur_h_radius, 379 378 shader_blur_v_texture, 380 379 shader_blur_v_radius; 380 ShaderUniform shader_glow_glow, 381 shader_glow_source, 382 shader_glow_mix; 381 383 ShaderUniform shader_radial_texture, 382 384 shader_radial_screen_size, … … 385 387 shader_radial_value2, 386 388 shader_radial_color; 389 ShaderUniform shader_noise_texture, 390 shader_noise_screen_size, 391 shader_noise_time, 392 shader_noise_offset, 393 shader_noise_noise, 394 shader_noise_retrace; 387 395 ShaderUniform shader_postfx_texture, 388 396 shader_postfx_texture_2d, … … 396 404 shader_postfx_corner, 397 405 shader_postfx_vignetting, 398 shader_postfx_retrace,399 shader_postfx_offset,400 shader_postfx_noise,401 406 shader_postfx_aberration, 402 407 shader_postfx_moire_h, … … 480 485 shader_radial_value2 = shader_radial->GetUniformLocation("value2"); 481 486 shader_radial_color = shader_radial->GetUniformLocation("color"); 487 // shader noise 488 shader_noise = Shader::Create(lolfx_noise); 489 shader_noise_texture = shader_noise->GetUniformLocation("texture"); 490 shader_noise_screen_size = shader_noise->GetUniformLocation("screen_size"); 491 shader_noise_time = shader_noise->GetUniformLocation("time"); 492 shader_noise_offset = shader_noise->GetUniformLocation("offset"); 493 shader_noise_noise = shader_noise->GetUniformLocation("noise"); 494 shader_noise_retrace = shader_noise->GetUniformLocation("retrace"); 482 495 // shader postfx 483 496 shader_postfx = Shader::Create(lolfx_postfx); … … 493 506 shader_postfx_corner = shader_postfx->GetUniformLocation("corner"); 494 507 shader_postfx_vignetting = shader_postfx->GetUniformLocation("vignetting"); 495 shader_postfx_retrace = shader_postfx->GetUniformLocation("retrace"); 496 shader_postfx_offset = shader_postfx->GetUniformLocation("offset"); 497 shader_postfx_noise = shader_postfx->GetUniformLocation("noise"); 498 shader_postfx_aberration = shader_postfx->GetUniformLocation("aberration"); 508 shader_postfx_aberration = shader_noise->GetUniformLocation("aberration"); 499 509 shader_postfx_moire_h = shader_postfx->GetUniformLocation("moire_h"); 500 510 shader_postfx_moire_v = shader_postfx->GetUniformLocation("moire_v"); … … 538 548 m_shader_glow(true), 539 549 m_shader_blur(true), 550 m_shader_noise(true), 540 551 m_shader_postfx(true) 541 552 { … … 572 583 glPolygonMode(GL_FRONT, polygon_fillmode); 573 584 } 574 if (Input::WasPressed(Key::F3))575 {576 m_shader_glow = !m_shader_glow;577 m_shader_blur = !m_shader_blur;578 }579 if (Input::WasPressed(Key::F4))580 {581 m_shader_postfx = !m_shader_postfx;582 }583 if (Input::WasPressed(Key::F5))584 {585 Pause();586 }587 585 if (Input::WasPressed(Key::Tab)) 588 586 { … … 674 672 } 675 673 } 674 if (Input::WasPressed(Key::Home)) 675 { 676 if (m_setup && setup_switch) 677 { 678 setup_var[setup_item_key].w = setup_var[setup_item_key].x; 679 Render::UpdateVar(); 680 } 681 } 682 if (Input::WasPressed(Key::End)) 683 { 684 if (m_setup && setup_switch) 685 { 686 setup_var[setup_item_key].w = setup_var[setup_item_key].y; 687 Render::UpdateVar(); 688 } 689 } 676 690 if (Input::WasPressed(Key::Return)) 677 691 { 678 sync_flag = true;679 sync_angle = main_angle;692 fade_flag = true; 693 fade_angle = main_angle; 680 694 } 681 695 … … 958 972 } 959 973 974 if (m_shader_noise) 975 { 976 // shader noise 977 fbo_ping->Bind(); 978 shader_noise->Bind(); 979 shader_noise->SetUniform(shader_noise_texture, fbo_front->GetTexture(), 0); 980 shader_noise->SetUniform(shader_noise_screen_size, (vec2)screen_size); 981 shader_noise->SetUniform(shader_noise_time, fx_angle); 982 shader_noise->SetUniform(shader_noise_offset, noise_offset); 983 shader_noise->SetUniform(shader_noise_noise, noise_noise); 984 shader_noise->SetUniform(shader_noise_retrace, noise_retrace); 985 fs_quad(); 986 shader_noise->Unbind(); 987 fbo_ping->Unbind(); 988 // shader simple 989 fbo_front->Bind(); 990 draw_shader_simple(fbo_ping, 0); 991 fbo_front->Unbind(); 992 } 993 960 994 if (m_shader_postfx) 961 995 { … … 972 1006 shader_postfx->SetUniform(shader_postfx_corner, postfx_corner); 973 1007 shader_postfx->SetUniform(shader_postfx_vignetting, postfx_vignetting); 974 shader_postfx->SetUniform(shader_postfx_retrace, postfx_retrace);975 shader_postfx->SetUniform(shader_postfx_offset, postfx_offset);976 shader_postfx->SetUniform(shader_postfx_noise, postfx_noise);977 1008 shader_postfx->SetUniform(shader_postfx_aberration, postfx_aberration); 978 1009 shader_postfx->SetUniform(shader_postfx_moire_h, postfx_moire_h); -
trunk/tools/neercs/video/render.h
r1736 r1806 37 37 bool m_shader_blur; 38 38 bool m_shader_glow; 39 bool m_shader_radial; 40 bool m_shader_noise; 39 41 bool m_shader_postfx; 40 42 }; -
trunk/tools/neercs/video/simple.lolfx
r1582 r1806 4 4 5 5 void main() 6 {7 8 9 }6 { 7 gl_Position = gl_Vertex; 8 gl_TexCoord[0] = gl_MultiTexCoord0; 9 } 10 10 11 11 -- GLSL.Frag -- … … 16 16 17 17 void main(void) 18 { 19 gl_FragColor = texture2D(texture, gl_TexCoord[0].xy); 20 } 21 18 { 19 gl_FragColor = texture2D(texture, gl_TexCoord[0].xy); 20 }
Note: See TracChangeset
for help on using the changeset viewer.