Advertisement
Guest User

Factorio Perspective zoom-to-world.glsl

a guest
May 9th, 2017
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.16 KB | None | 0 0
  1. uniform sampler2D gameview; // "diffuse" texture
  2. uniform sampler2D lightmap;
  3.  
  4. uniform vec4 nv_color;
  5. uniform float nv_intensity;
  6. uniform vec4 nv_desaturation_params;
  7. uniform vec4 nv_light_params;
  8. uniform vec4 ztw_params; // zoom-to-world parameters
  9.  
  10. uniform float darkness;
  11. uniform float timer;
  12. uniform bool render_darkness;
  13.  
  14. bool use_nightvision = nv_intensity > 0.0;
  15.  
  16. float hmix(float a, float b)
  17. {
  18.   // Not stolen at all
  19.   return fract(sin(a * 12.9898 + b) * 43758.5453);
  20. }
  21.  
  22. float hash3(float a, float b, float c)
  23. {
  24.   float ab = hmix(a, b);
  25.   float ac = hmix(a, c);
  26.   float bc = hmix(b, c);
  27.  
  28.   return hmix(ab, hmix(ac, bc));
  29. }
  30.  
  31. vec3 getnoise3(vec2 p)
  32. {
  33.   return vec3(hash3(p.x, p.y, floor(timer / 3.)));
  34. }
  35.  
  36. void main()
  37. {
  38.   vec2 uv = gl_TexCoord[0].xy;
  39.   vec2 st = uv - vec2(0.5, 0.5);
  40.   st.x /= (1.15 - 0.3 * st.y);
  41.   st.y /= (1.15 - 0.3 * st.y);
  42.   uv = st + vec2(0.5, 0.5);
  43.  
  44.  
  45.   vec4 color = texture2D(gameview, uv);
  46.  
  47.   //gl_FragColor = color; return;
  48.  
  49.   //vec3 noise = getnoise3(uv);
  50.   //color.rgb += noise.rgb * ztw_params.x + ztw_params.y;
  51.  
  52.   //float stripe = 0;
  53.   //if (sin(timer * 0.02 + uv.y) > 0.99999)
  54.   //  stripe = 0.1;
  55.   //
  56.   //color.rgb += stripe.xxx;
  57.  
  58.   //float vigAmt = 2.; //+.3*sin(tm + 5.*cos(tm*5.));
  59.   //float vignette = (1.-vigAmt*(uv.y-.5)*(uv.y-.5))*(1.-vigAmt*(uv.x-.5)*(uv.x-.5));
  60.   //color.rgb *= vignette;
  61.   vec4 light = texture2D(lightmap, uv);
  62.  
  63.   if (use_nightvision)
  64.   {
  65.     float luminance = dot(color.rgb, vec3(0.299, 0.587, 0.114));
  66.     float lightLuminance = max(light.r, max(light.g, light.b));
  67.     vec3 grayscale = vec3(luminance * nv_intensity); // * nv_color.a * nv_color.rgb;
  68.     float lightIntensity = smoothstep(nv_desaturation_params.x, nv_desaturation_params.y, lightLuminance) * nv_desaturation_params.z + nv_desaturation_params.w;
  69.  
  70.     color.rgb = mix(grayscale, color.rgb, lightIntensity);
  71.     lightIntensity = smoothstep(nv_light_params.x, nv_light_params.y, lightLuminance) * nv_light_params.z + nv_light_params.w;
  72.     gl_FragColor = vec4(color.rgb * lightIntensity , color.a);
  73.   }
  74.   else
  75.   {
  76.     color.rgb = color.rgb * light.rgb;
  77.     gl_FragColor = vec4(color.rgb, color.a);
  78.   }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement