Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

36 řádky
1018 B

  1. #version 450 core
  2. const float GLOW_STEP_0 = 0.480; // inner (min = 0.0)
  3. const float GLOW_STEP_1 = 0.975; // outer (max = 0.5)
  4. const float GLOW_PULSE_SIZE_0 = 0.010; // inner (+/-)
  5. const float GLOW_PULSE_SIZE_1 = 0.025; // outer (+/-)
  6. const float GLOW_PULSE_TIME = 2.000;
  7. in FragmentData {
  8. vec2 texCoords;
  9. } data;
  10. layout (std140, binding = 2) uniform Global {
  11. float time;
  12. } global;
  13. layout(location = 3) uniform vec4 glowColor;
  14. uniform sampler2D tex;
  15. out vec4 color;
  16. void main() {
  17. vec2 texCoords = data.texCoords - vec2(0.5);
  18. float radius = length(texCoords);
  19. float bgPulse = sin(GLOW_PULSE_TIME * global.time);
  20. float alpha = 1.0 - smoothstep(
  21. GLOW_STEP_0 + GLOW_PULSE_SIZE_0 * bgPulse,
  22. GLOW_STEP_1 + GLOW_PULSE_SIZE_1 * bgPulse,
  23. radius);
  24. vec4 tex = texture(tex, data.texCoords);
  25. vec4 glow = vec4(glowColor.rgb, glowColor.a * alpha);
  26. color = tex * tex.a + glow * (1.0 - tex.a);
  27. }