This commit is contained in:
Tom Englund 2026-04-27 00:48:53 +02:00 committed by GitHub
commit ce99313a4e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 16 deletions

View file

@ -5,7 +5,7 @@
inline HANDLE PHANDLE = nullptr;
struct SGlobalState {
SShader trailShader;
CShader trailShader;
wl_event_source* tick = nullptr;
};

View file

@ -85,13 +85,7 @@ int onTick(void* data) {
void initGlobal() {
g_pHyprRenderer->makeEGLCurrent();
GLuint prog = CreateProgram(QUADTRAIL, FRAGTRAIL);
g_pGlobalState->trailShader.program = prog;
g_pGlobalState->trailShader.uniformLocations[SHADER_PROJ] = glGetUniformLocation(prog, "proj");
g_pGlobalState->trailShader.uniformLocations[SHADER_TEX] = glGetUniformLocation(prog, "tex");
g_pGlobalState->trailShader.uniformLocations[SHADER_COLOR] = glGetUniformLocation(prog, "color");
g_pGlobalState->trailShader.uniformLocations[SHADER_POS_ATTRIB] = glGetAttribLocation(prog, "pos");
g_pGlobalState->trailShader.uniformLocations[SHADER_GRADIENT] = glGetUniformLocation(prog, "snapshots");
g_pGlobalState->trailShader.createProgram(QUADTRAIL, FRAGTRAIL);
g_pGlobalState->tick = wl_event_loop_add_timer(g_pCompositor->m_wlEventLoop, &onTick, nullptr);
wl_event_source_timer_update(g_pGlobalState->tick, 1);

View file

@ -134,7 +134,7 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
g_pHyprOpenGL->blend(true);
glUseProgram(g_pGlobalState->trailShader.program);
glUseProgram(g_pGlobalState->trailShader.program());
glMatrix.transpose();
g_pGlobalState->trailShader.setUniformMatrix3fv(SHADER_PROJ, 1, GL_FALSE, glMatrix.getMatrix());
@ -246,16 +246,16 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
sc<float>((PWINDOW->m_realPosition->value().y - pMonitor->m_position.y) / pMonitor->m_size.y),
sc<float>((PWINDOW->m_realPosition->value().x + PWINDOW->m_realSize->value().x) / pMonitor->m_size.x),
sc<float>((PWINDOW->m_realPosition->value().y + PWINDOW->m_realSize->value().y) / pMonitor->m_size.y)};
glUniform4f(g_pGlobalState->trailShader.uniformLocations[SHADER_GRADIENT], thisboxopengl.x, thisboxopengl.y, thisboxopengl.w, thisboxopengl.h);
glUniform4f(g_pGlobalState->trailShader.uniformLocations[SHADER_COLOR], COLOR.r, COLOR.g, COLOR.b, COLOR.a);
//glUniform4f(g_pGlobalState->trailShader.getUniformLocation(SHADER_GRADIENT), thisboxopengl.x, thisboxopengl.y, thisboxopengl.w, thisboxopengl.h); //#TODO this shader is missing a uniform 'gradient' in shaders.hpp
glUniform4f(g_pGlobalState->trailShader.getUniformLocation(SHADER_COLOR), COLOR.r, COLOR.g, COLOR.b, COLOR.a);
CBox transformedBox = monbox;
transformedBox.transform(Math::wlTransformToHyprutils(Math::invertTransform(g_pHyprOpenGL->m_renderData.pMonitor->m_transform)), g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.x,
g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.y);
transformedBox.transform(Math::wlTransformToHyprutils(Math::invertTransform(g_pHyprOpenGL->m_renderData.pMonitor->m_transform)),
g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.x, g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.y);
glVertexAttribPointer(g_pGlobalState->trailShader.uniformLocations[SHADER_POS_ATTRIB], 2, GL_FLOAT, GL_FALSE, 0, (float*)points.data());
glVertexAttribPointer(g_pGlobalState->trailShader.getUniformLocation(SHADER_POS_ATTRIB), 2, GL_FLOAT, GL_FALSE, 0, (float*)points.data());
glEnableVertexAttribArray(g_pGlobalState->trailShader.uniformLocations[SHADER_POS_ATTRIB]);
glEnableVertexAttribArray(g_pGlobalState->trailShader.getUniformLocation(SHADER_POS_ATTRIB));
if (g_pHyprOpenGL->m_renderData.clipBox.width != 0 && g_pHyprOpenGL->m_renderData.clipBox.height != 0) {
CRegion damageClip{g_pHyprOpenGL->m_renderData.clipBox.x, g_pHyprOpenGL->m_renderData.clipBox.y, g_pHyprOpenGL->m_renderData.clipBox.width,
@ -275,7 +275,7 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
}
}
glDisableVertexAttribArray(g_pGlobalState->trailShader.uniformLocations[SHADER_POS_ATTRIB]);
glDisableVertexAttribArray(g_pGlobalState->trailShader.getUniformLocation(SHADER_POS_ATTRIB));
glClearStencil(0);
glClear(GL_STENCIL_BUFFER_BIT);