選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 

41 行
850 B

  1. [vert.glsl]
  2. #version 120
  3. void main()
  4. {
  5. gl_Position = gl_Vertex;
  6. gl_TexCoord[0] = gl_MultiTexCoord0;
  7. }
  8. [frag.glsl]
  9. #version 120
  10. uniform sampler2D texture;
  11. uniform vec2 screen_size;
  12. uniform float time;
  13. uniform vec2 offset;
  14. uniform float noise;
  15. uniform vec3 retrace;
  16. float rand(in vec2 p,in float t,in float v)
  17. {
  18. return fract(sin(dot(p+mod(t,2.0),vec2(12.9898,78.2333)))*v);
  19. }
  20. void main(void)
  21. {
  22. vec2 p = gl_FragCoord.xy/screen_size.xy;
  23. float r1 = rand(p,time,43758.5453);
  24. float r2 = rand(p,time,70425.2854);
  25. vec2 o = (offset-offset*2.0*r1)/screen_size;
  26. vec3 c = texture2D(texture,p+o).xyz; // offset
  27. c *= 1.0+(noise-noise*2.0*r1); // noise
  28. c -= retrace.x*0.01*mod(p.y*retrace.y+time*retrace.z,1.0); // retrace
  29. gl_FragColor = vec4(c,1.0);
  30. }