PostProcessing.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package eu.tankernn.gameEngine.postProcessing;
  2. import org.lwjgl.opengl.Display;
  3. import org.lwjgl.opengl.GL11;
  4. import org.lwjgl.opengl.GL20;
  5. import org.lwjgl.opengl.GL30;
  6. import eu.tankernn.gameEngine.gaussianBlur.HorizontalBlur;
  7. import eu.tankernn.gameEngine.gaussianBlur.VerticalBlur;
  8. import eu.tankernn.gameEngine.models.RawModel;
  9. import eu.tankernn.gameEngine.renderEngine.Loader;
  10. public class PostProcessing {
  11. private static final int blurFactor = 1;
  12. private static final float[] POSITIONS = {-1, 1, -1, -1, 1, 1, 1, -1};
  13. private static RawModel quad;
  14. private static ContrastChanger contrastChanger;
  15. private static HorizontalBlur hBlur[] = new HorizontalBlur[blurFactor];
  16. private static VerticalBlur vBlur[] = new VerticalBlur[blurFactor];
  17. public static void init(Loader loader) {
  18. quad = loader.loadToVAO(POSITIONS, 2);
  19. contrastChanger = new ContrastChanger();
  20. for (int i = 0; i < blurFactor; i++) {
  21. int temp = i + 1;
  22. hBlur[i] = new HorizontalBlur(Display.getWidth() / temp, Display.getHeight() / temp);
  23. vBlur[i] = new VerticalBlur(Display.getWidth() / temp, Display.getHeight() / temp);
  24. }
  25. }
  26. public static void doPostProcessing(int colorTexture) {
  27. start();
  28. int currentTexture = colorTexture;
  29. for (int i = 0; i < blurFactor; i++) {
  30. hBlur[i].render(currentTexture);
  31. vBlur[i].render(hBlur[i].getOutputTexture());
  32. currentTexture = vBlur[i].getOutputTexture();
  33. }
  34. contrastChanger.render(currentTexture);
  35. end();
  36. }
  37. public static void cleanUp() {
  38. contrastChanger.cleanUp();
  39. for (int i = 0; i < blurFactor; i++) {
  40. hBlur[i].cleanUp();
  41. vBlur[i].cleanUp();
  42. }
  43. }
  44. private static void start() {
  45. GL30.glBindVertexArray(quad.getVaoID());
  46. GL20.glEnableVertexAttribArray(0);
  47. GL11.glDisable(GL11.GL_DEPTH_TEST);
  48. }
  49. private static void end() {
  50. GL11.glEnable(GL11.GL_DEPTH_TEST);
  51. GL20.glDisableVertexAttribArray(0);
  52. GL30.glBindVertexArray(0);
  53. }
  54. }