Renderer: rewrite render scheduling (#8683)

This rewrites renderer scheduling. Occlusion is now unified in a new Pass type.
This commit is contained in:
Vaxry 2024-12-22 17:12:09 +01:00 committed by GitHub
parent 1cc1a46c2e
commit e536b02248
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
42 changed files with 1576 additions and 775 deletions

36
src/render/pass/Pass.hpp Normal file
View file

@ -0,0 +1,36 @@
#pragma once
#include "../../defines.hpp"
#include "PassElement.hpp"
class CGradientValueData;
class CRenderPass {
public:
bool empty() const;
bool single() const;
bool needsIntrospection() const;
void add(SP<IPassElement> elem);
void clear();
CRegion render(const CRegion& damage_);
private:
CRegion damage;
struct SPassElementData {
CRegion elementDamage;
SP<IPassElement> element;
bool discard = false;
};
std::vector<SP<SPassElementData>> m_vPassElements;
SP<IPassElement> currentPassInfo = nullptr;
void simplify();
float oneBlurRadius();
friend class CHyprOpenGLImpl;
};