Changeset 1986
- Timestamp:
- Oct 8, 2012, 12:48:14 AM (11 years ago)
- Location:
- trunk/tools/neercs/video
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/neercs/video/mirror.lolfx
r1978 r1986 22 22 vec3 source = texture2D(texture, p).xyz; 23 23 24 vec3 color = vec3(0.0,0.1,0.0); 24 vec3 color = vec3(0.0); 25 if(p.x < mirror.x) color = (texture2D(texture, vec2(mirror.x - (1.0 - mirror.x * mirror.w + p.x * mirror.w), p.y)).xyz) * (mirror.z / mirror.x * p.x); 26 if(p.x > 1.0 - mirror.x) color = (texture2D(texture, vec2(mirror.x - (1.0 - mirror.x * mirror.w + p.x * mirror.w), p.y)).xyz) * (mirror.z / mirror.x * (1.0 - p.x)); 25 27 26 gl_FragColor = vec4(source +color, 1.0);28 gl_FragColor = vec4(source + color, 1.0); 27 29 } -
trunk/tools/neercs/video/render.cpp
r1978 r1986 116 116 vec4 postfx_scanline_v(0.75f,-0.25f,2.0f,0.0f); // horizontal scanline [base,variable,repeat,shift] 117 117 vec3 postfx_corner(0.0f,0.75f,0.95f); // corner [width,radius,blur] 118 vec4 mirror(0. 0f,0.0f,0.0f,0.0f); //118 vec4 mirror(0.7f,0.7f,0.5f,4.0f); // mirror [width,height,strength,ratio] 119 119 /* text variable */ 120 120 ivec2 ratio_2d(2,3); // 2d ratio … … 124 124 ivec2 canvas_size(0,0); // caca size 125 125 /* window variable */ 126 ivec2 border = vec2( 3,2) * ratio_2d * font_size; // border width126 ivec2 border = vec2(2,1) * ratio_2d * font_size; // border width 127 127 /* setup variable */ 128 128 bool setup_switch = false; // switch [option/item] … … 242 242 "mirror", 243 243 "enable", 244 " param 1",245 " param 2",246 " param 3",247 " param 4",244 "width", 245 "height", 246 "strength", 247 "ratio", 248 248 "", 249 249 "", … … 298 298 vec4(0), 299 299 vec4(0), /* copper */ 300 vec4( 300 vec4(0, 1, 1, 1), 301 301 vec4(0.0f, 1.0f, 0.05f, copper_copper.x), 302 302 vec4(0.0f, 1.0f, 0.05f, copper_copper.y), … … 316 316 vec4( 0.0f, 8.0f, 0.50f, postfx_aberration), 317 317 vec4(0), /* noise */ 318 vec4( 318 vec4(0, 1, 1, 1), 319 319 vec4(0.0f, 4.0f, 0.50f, noise_offset.x), 320 320 vec4(0.0f, 4.0f, 0.50f, noise_offset.y), … … 352 352 vec4( 0.0f, 4.0f, 0.50f, postfx_scanline_v.w), 353 353 vec4(0), /* mirror */ 354 vec4( 355 vec4( 0.0f, 1.0f, 0.1f, mirror.x),356 vec4( 0.0f, 1.0f, 0.1f, mirror.y),357 vec4( 0.0f, 1.0f, 0.1f, mirror.z),358 vec4( 0.0f, 1.0f, 0.1f, mirror.w),354 vec4(0, 1, 1, 1), 355 vec4(0.0f, 2.0f, 0.05f, mirror.x), 356 vec4(0.0f, 2.0f, 0.05f, mirror.y), 357 vec4(0.0f, 1.0f, 0.05f, mirror.z), 358 vec4(1.0f, 4.0f, 0.25f, mirror.w), 359 359 vec4(0), 360 360 vec4(0), … … 489 489 shader_mirror_mirror; 490 490 491 FrameBuffer *fbo_back, *fbo_front, *fbo_buffer; 492 FrameBuffer *fbo_blur_h, *fbo_blur_v, *fbo_tmp; 491 FrameBuffer *fbo_back, *fbo_front, *fbo_screen; 492 FrameBuffer *fbo_blur_h, *fbo_blur_v; 493 FrameBuffer *fbo_tmp, *fbo_buffer; 493 494 494 495 void Render::TraceQuad() … … 514 515 /* initialise framebuffer objects */ 515 516 fbo_back = new FrameBuffer(screen_size); 517 fbo_screen = new FrameBuffer(screen_size); 516 518 fbo_front = new FrameBuffer(screen_size); 517 519 fbo_buffer = new FrameBuffer(screen_size); … … 1147 1149 fbo_tmp->Bind(); 1148 1150 shader_remanence->Bind(); 1149 shader_remanence->SetUniform(shader_remanence_source, fbo_ front->GetTexture(), 0);1151 shader_remanence->SetUniform(shader_remanence_source, fbo_screen->GetTexture(), 0); 1150 1152 shader_remanence->SetUniform(shader_remanence_buffer, fbo_buffer->GetTexture(), 1); 1151 1153 shader_remanence->SetUniform(shader_remanence_mix, buffer); … … 1195 1197 fbo_blur_v->Unbind(); 1196 1198 // shader glow 1197 fbo_ front->Bind();1199 fbo_screen->Bind(); 1198 1200 shader_glow->Bind(); 1199 1201 shader_glow->SetUniform(shader_glow_glow, fbo_blur_v->GetTexture(), 0); … … 1202 1204 TraceQuad(); 1203 1205 shader_glow->Unbind(); 1204 fbo_ front->Unbind();1206 fbo_screen->Unbind(); 1205 1207 } 1206 1208 else 1207 1209 { 1208 1210 // shader simple 1209 fbo_ front->Bind();1211 fbo_screen->Bind(); 1210 1212 ShaderSimple(fbo_back, 0); 1211 fbo_ front->Unbind();1213 fbo_screen->Unbind(); 1212 1214 } 1213 1215 … … 1217 1219 fbo_tmp->Bind(); 1218 1220 shader_color->Bind(); 1219 shader_color->SetUniform(shader_color_texture, fbo_ front->GetTexture(), 0);1221 shader_color->SetUniform(shader_color_texture, fbo_screen->GetTexture(), 0); 1220 1222 shader_color->SetUniform(shader_color_screen_size, (vec2)screen_size); 1221 1223 shader_color->SetUniform(shader_color_filter, color_filter); … … 1226 1228 fbo_tmp->Unbind(); 1227 1229 // shader simple 1228 fbo_ front->Bind();1230 fbo_screen->Bind(); 1229 1231 ShaderSimple(fbo_tmp, 0); 1230 fbo_ front->Unbind();1232 fbo_screen->Unbind(); 1231 1233 } 1232 1234 … … 1236 1238 fbo_tmp->Bind(); 1237 1239 shader_noise->Bind(); 1238 shader_noise->SetUniform(shader_noise_texture, fbo_ front->GetTexture(), 0);1240 shader_noise->SetUniform(shader_noise_texture, fbo_screen->GetTexture(), 0); 1239 1241 shader_noise->SetUniform(shader_noise_screen_size, (vec2)screen_size); 1240 1242 shader_noise->SetUniform(shader_noise_time, fx_angle); … … 1246 1248 fbo_tmp->Unbind(); 1247 1249 // shader simple 1248 fbo_ front->Bind();1250 fbo_screen->Bind(); 1249 1251 ShaderSimple(fbo_tmp, 0); 1250 fbo_ front->Unbind();1252 fbo_screen->Unbind(); 1251 1253 } 1252 1254 … … 1256 1258 fbo_tmp->Bind(); 1257 1259 shader_blur_h->Bind(); 1258 shader_blur_h->SetUniform(shader_blur_h_texture, fbo_ front->GetTexture(), 0);1260 shader_blur_h->SetUniform(shader_blur_h_texture, fbo_screen->GetTexture(), 0); 1259 1261 shader_blur_h->SetUniform(shader_blur_h_radius, blur / screen_size.x); 1260 1262 TraceQuad(); … … 1262 1264 fbo_tmp->Unbind(); 1263 1265 // shader blur vertical 1264 fbo_ front->Bind();1266 fbo_screen->Bind(); 1265 1267 shader_blur_v->Bind(); 1266 1268 shader_blur_v->SetUniform(shader_blur_v_texture, fbo_tmp->GetTexture(), 0); … … 1268 1270 TraceQuad(); 1269 1271 shader_blur_v->Unbind(); 1270 fbo_ front->Unbind();1272 fbo_screen->Unbind(); 1271 1273 } 1272 1274 … … 1274 1276 { 1275 1277 // shader postfx 1276 fbo_ tmp->Bind();1278 fbo_front->Bind(); 1277 1279 shader_postfx->Bind(); 1278 shader_postfx->SetUniform(shader_postfx_texture, fbo_ front->GetTexture(), 0);1280 shader_postfx->SetUniform(shader_postfx_texture, fbo_screen->GetTexture(), 0); 1279 1281 shader_postfx->SetUniform(shader_postfx_screen_size, (vec2)screen_size); 1280 1282 shader_postfx->SetUniform(shader_postfx_time, fx_angle); … … 1289 1291 shader_postfx->SetUniform(shader_postfx_scanline_v, postfx_scanline_v); 1290 1292 shader_postfx->SetUniform(shader_postfx_corner, postfx_corner); 1291 shader_postfx->SetUniform(shader_postfx_sync, (float)fabs(sync_value *cosf((main_angle-sync_angle)*6.0f)));1292 shader_postfx->SetUniform(shader_postfx_beat, (float)fabs(beat_value *cosf((main_angle-beat_angle)*6.0f)));1293 shader_postfx->SetUniform(shader_postfx_sync, (float)fabs(sync_value * cosf((main_angle - sync_angle) * 6.0f))); 1294 shader_postfx->SetUniform(shader_postfx_beat, (float)fabs(beat_value * cosf((main_angle - beat_angle) * 6.0f))); 1293 1295 TraceQuad(); 1294 1296 shader_postfx->Unbind(); 1297 fbo_front->Unbind(); 1298 } 1299 else 1300 { 1301 // shader simple 1302 fbo_front->Bind(); 1303 ShaderSimple(fbo_screen, 0); 1304 fbo_front->Unbind(); 1305 } 1306 1307 if (m_shader_mirror) 1308 { 1309 // shader mirror 1310 fbo_tmp->Bind(); 1311 shader_mirror->Bind(); 1312 shader_mirror->SetUniform(shader_mirror_texture, fbo_front->GetTexture(), 0); 1313 shader_mirror->SetUniform(shader_mirror_screen_size, (vec2)screen_size); 1314 shader_mirror->SetUniform(shader_mirror_mirror, vec4(mirror.x * 0.1f, mirror.y * 0.1f, mirror.z, mirror.w)); 1315 TraceQuad(); 1316 shader_mirror->Unbind(); 1295 1317 fbo_tmp->Unbind(); 1296 1318 // shader simple … … 1300 1322 } 1301 1323 1302 if (m_shader_mirror)1303 {1304 // shader mirror1305 fbo_tmp->Bind();1306 shader_mirror->Bind();1307 shader_mirror->SetUniform(shader_mirror_texture, fbo_front->GetTexture(), 0);1308 shader_mirror->SetUniform(shader_mirror_screen_size, (vec2)screen_size);1309 shader_mirror->SetUniform(shader_mirror_mirror, mirror);1310 TraceQuad();1311 shader_mirror->Unbind();1312 fbo_tmp->Unbind();1313 }1314 1315 1324 // shader simple 1316 ShaderSimple(fbo_ tmp, 0);1325 ShaderSimple(fbo_front, 0); 1317 1326 1318 1327 glDisableClientState(GL_VERTEX_ARRAY);
Note: See TracChangeset
for help on using the changeset viewer.