effects_pipeline.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "effects_pipeline.h"
  2. #include "../backend.h"
  3. #include "../shader_cache.h"
  4. #include <QDebug>
  5. #include <qglobal.h>
  6. namespace Render::GL::BackendPipelines {
  7. auto EffectsPipeline::initialize() -> bool {
  8. if (m_shaderCache == nullptr) {
  9. qWarning() << "EffectsPipeline::initialize: null ShaderCache";
  10. return false;
  11. }
  12. m_basicShader = m_shaderCache->get("basic");
  13. m_gridShader = m_shaderCache->get("grid");
  14. if (m_basicShader == nullptr) {
  15. qWarning() << "EffectsPipeline: Failed to load basic shader";
  16. }
  17. if (m_gridShader == nullptr) {
  18. qWarning() << "EffectsPipeline: Failed to load grid shader";
  19. }
  20. cacheUniforms();
  21. return is_initialized();
  22. }
  23. void EffectsPipeline::shutdown() {
  24. m_basicShader = nullptr;
  25. m_gridShader = nullptr;
  26. }
  27. void EffectsPipeline::cacheUniforms() {
  28. cacheBasicUniforms();
  29. cacheGridUniforms();
  30. }
  31. auto EffectsPipeline::is_initialized() const -> bool {
  32. return m_basicShader != nullptr && m_gridShader != nullptr;
  33. }
  34. void EffectsPipeline::cacheBasicUniforms() {
  35. if (m_basicShader == nullptr) {
  36. return;
  37. }
  38. m_basicUniforms.mvp = m_basicShader->uniformHandle("u_mvp");
  39. m_basicUniforms.model = m_basicShader->uniformHandle("u_model");
  40. m_basicUniforms.texture = m_basicShader->uniformHandle("u_texture");
  41. m_basicUniforms.useTexture = m_basicShader->uniformHandle("u_useTexture");
  42. m_basicUniforms.color = m_basicShader->uniformHandle("u_color");
  43. m_basicUniforms.alpha = m_basicShader->uniformHandle("u_alpha");
  44. }
  45. void EffectsPipeline::cacheGridUniforms() {
  46. if (m_gridShader == nullptr) {
  47. return;
  48. }
  49. m_gridUniforms.mvp = m_gridShader->uniformHandle("u_mvp");
  50. m_gridUniforms.model = m_gridShader->uniformHandle("u_model");
  51. m_gridUniforms.gridColor = m_gridShader->uniformHandle("u_gridColor");
  52. m_gridUniforms.lineColor = m_gridShader->uniformHandle("u_lineColor");
  53. m_gridUniforms.cellSize = m_gridShader->uniformHandle("u_cellSize");
  54. m_gridUniforms.thickness = m_gridShader->uniformHandle("u_thickness");
  55. }
  56. } // namespace Render::GL::BackendPipelines