shader.mod 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. MODULE shader;
  2. FROM tigr IMPORT TigrPtr, tigrWindow, tigrFree, tigrClosed, tigrClear,
  3. tigrUpdate, tigrPrint, tfont, TK_ESCAPE, tigrKeyDown,
  4. tigrSetPostShader, tigrSetPostFX, tigrTime;
  5. FROM helper IMPORT tigrRGB;
  6. CONST
  7. fxShader = "void fxShader(out vec4 color, in vec2 uv) {vec2 tex_size = vec2(textureSize(image, 0));vec4 c = texture(image, (floor(uv * tex_size) + 0.5 * sin(parameters.x)) / tex_size);color = c;}";
  8. VAR
  9. screen : TigrPtr;
  10. duration, phase : SHORTREAL;
  11. p : SHORTREAL;
  12. BEGIN
  13. screen := tigrWindow(320, 240, "Shady", 0);
  14. tigrSetPostShader(screen, fxShader, HIGH(fxShader));
  15. duration := 1.0;
  16. phase := 0.0;
  17. WHILE (NOT (tigrClosed(screen) > 0)) AND (NOT (tigrKeyDown(screen, TK_ESCAPE) > 0)) DO
  18. phase := phase + tigrTime();
  19. WHILE phase > duration DO
  20. phase := phase - duration
  21. END;
  22. p := 6.28 * phase / duration;
  23. tigrSetPostFX(screen, p, 0.0, 0.0, 0.0);
  24. tigrClear(screen, tigrRGB(80H, 90H, 0A0H));
  25. tigrPrint(screen, tfont, 120, 110, tigrRGB(0FFH, 0FFH, 0FFH),
  26. "Shady business");
  27. tigrUpdate(screen);
  28. END;
  29. tigrFree(screen);
  30. END shader.