Lf.h 975 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef ANKI_RENDERER_LF_H
  2. #define ANKI_RENDERER_LF_H
  3. #include "anki/renderer/RenderingPass.h"
  4. #include "anki/gl/Gl.h"
  5. #include "anki/resource/Resource.h"
  6. #include "anki/resource/ShaderProgramResource.h"
  7. #include "anki/resource/TextureResource.h"
  8. namespace anki {
  9. /// Lens flare rendering pass
  10. class Lf: public OptionalRenderingPass
  11. {
  12. friend class MainRenderer;
  13. public:
  14. Lf(Renderer* r_)
  15. : OptionalRenderingPass(r_)
  16. {}
  17. ~Lf();
  18. void init(const RendererInitializer& initializer);
  19. void run();
  20. const Texture& getFai() const
  21. {
  22. return fai;
  23. }
  24. private:
  25. /// Pseudo lens flare program
  26. ShaderProgramResourcePointer pseudoProg;
  27. /// Real lens flare program
  28. ShaderProgramResourcePointer realProg;
  29. Texture fai;
  30. Fbo fbo;
  31. TextureResourcePointer lensDirtTex;
  32. U8 maxFlaresPerLight;
  33. U8 maxLightsWithFlares;
  34. Ubo flareDataUbo;
  35. const ShaderProgramUniformBlock* ublock;
  36. void initInternal(const RendererInitializer& initializer);
  37. };
  38. } // end namespace anki
  39. #endif