mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-02 15:06:00 +01:00
fix transformed border thickness
This commit is contained in:
parent
afe688e6ab
commit
0db75852f3
3 changed files with 7 additions and 4 deletions
|
@ -237,6 +237,7 @@ void CHyprOpenGLImpl::initShaders() {
|
||||||
m_RenderData.pCurrentMonData->m_shBORDER1.topLeft = glGetUniformLocation(prog, "topLeft");
|
m_RenderData.pCurrentMonData->m_shBORDER1.topLeft = glGetUniformLocation(prog, "topLeft");
|
||||||
m_RenderData.pCurrentMonData->m_shBORDER1.bottomRight = glGetUniformLocation(prog, "bottomRight");
|
m_RenderData.pCurrentMonData->m_shBORDER1.bottomRight = glGetUniformLocation(prog, "bottomRight");
|
||||||
m_RenderData.pCurrentMonData->m_shBORDER1.fullSize = glGetUniformLocation(prog, "fullSize");
|
m_RenderData.pCurrentMonData->m_shBORDER1.fullSize = glGetUniformLocation(prog, "fullSize");
|
||||||
|
m_RenderData.pCurrentMonData->m_shBORDER1.fullSizeUntransformed = glGetUniformLocation(prog, "fullSizeUntransformed");
|
||||||
m_RenderData.pCurrentMonData->m_shBORDER1.radius = glGetUniformLocation(prog, "radius");
|
m_RenderData.pCurrentMonData->m_shBORDER1.radius = glGetUniformLocation(prog, "radius");
|
||||||
m_RenderData.pCurrentMonData->m_shBORDER1.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
|
m_RenderData.pCurrentMonData->m_shBORDER1.primitiveMultisample = glGetUniformLocation(prog, "primitiveMultisample");
|
||||||
m_RenderData.pCurrentMonData->m_shBORDER1.gradient = glGetUniformLocation(prog, "gradient");
|
m_RenderData.pCurrentMonData->m_shBORDER1.gradient = glGetUniformLocation(prog, "gradient");
|
||||||
|
@ -863,8 +864,8 @@ void CHyprOpenGLImpl::renderBorder(wlr_box* box, const CGradientValueData& grad,
|
||||||
const auto FULLSIZE = Vector2D(transformedBox.width, transformedBox.height);
|
const auto FULLSIZE = Vector2D(transformedBox.width, transformedBox.height);
|
||||||
|
|
||||||
glUniform2f(m_RenderData.pCurrentMonData->m_shBORDER1.topLeft, (float)TOPLEFT.x, (float)TOPLEFT.y);
|
glUniform2f(m_RenderData.pCurrentMonData->m_shBORDER1.topLeft, (float)TOPLEFT.x, (float)TOPLEFT.y);
|
||||||
//glUniform2f(m_RenderData.pCurrentMonData->m_shBORDER1.bottomRight, (float)BOTTOMRIGHT.x, (float)BOTTOMRIGHT.y);
|
|
||||||
glUniform2f(m_RenderData.pCurrentMonData->m_shBORDER1.fullSize, (float)FULLSIZE.x, (float)FULLSIZE.y);
|
glUniform2f(m_RenderData.pCurrentMonData->m_shBORDER1.fullSize, (float)FULLSIZE.x, (float)FULLSIZE.y);
|
||||||
|
glUniform2f(m_RenderData.pCurrentMonData->m_shBORDER1.fullSizeUntransformed, (float)box->width, (float)box->height);
|
||||||
glUniform1f(m_RenderData.pCurrentMonData->m_shBORDER1.radius, round);
|
glUniform1f(m_RenderData.pCurrentMonData->m_shBORDER1.radius, round);
|
||||||
glUniform1f(m_RenderData.pCurrentMonData->m_shBORDER1.thick, scaledBorderSize);
|
glUniform1f(m_RenderData.pCurrentMonData->m_shBORDER1.thick, scaledBorderSize);
|
||||||
glUniform1i(m_RenderData.pCurrentMonData->m_shBORDER1.primitiveMultisample, *PMULTISAMPLE);
|
glUniform1i(m_RenderData.pCurrentMonData->m_shBORDER1.primitiveMultisample, *PMULTISAMPLE);
|
||||||
|
|
|
@ -19,6 +19,7 @@ public:
|
||||||
GLint topLeft;
|
GLint topLeft;
|
||||||
GLint bottomRight;
|
GLint bottomRight;
|
||||||
GLint fullSize;
|
GLint fullSize;
|
||||||
|
GLint fullSizeUntransformed;
|
||||||
GLint radius;
|
GLint radius;
|
||||||
GLint primitiveMultisample;
|
GLint primitiveMultisample;
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ varying vec2 v_texcoord;
|
||||||
|
|
||||||
uniform vec2 topLeft;
|
uniform vec2 topLeft;
|
||||||
uniform vec2 fullSize;
|
uniform vec2 fullSize;
|
||||||
|
uniform vec2 fullSizeUntransformed;
|
||||||
uniform float radius;
|
uniform float radius;
|
||||||
uniform float thick;
|
uniform float thick;
|
||||||
uniform int primitiveMultisample;
|
uniform int primitiveMultisample;
|
||||||
|
@ -51,7 +52,7 @@ vec4 getColorForCoord(vec2 normalizedCoord) {
|
||||||
void main() {
|
void main() {
|
||||||
|
|
||||||
highp vec2 pixCoord = vec2(gl_FragCoord);
|
highp vec2 pixCoord = vec2(gl_FragCoord);
|
||||||
vec2 originalPixCoord = fullSize * v_texcoord;
|
vec2 originalPixCoord = fullSizeUntransformed * v_texcoord;
|
||||||
|
|
||||||
vec4 pixColor = getColorForCoord(v_texcoord);
|
vec4 pixColor = getColorForCoord(v_texcoord);
|
||||||
pixColor[3] *= alpha;
|
pixColor[3] *= alpha;
|
||||||
|
@ -96,9 +97,9 @@ void main() {
|
||||||
if (!done) {
|
if (!done) {
|
||||||
// distance to all straight bb borders
|
// distance to all straight bb borders
|
||||||
float distanceT = originalPixCoord[1];
|
float distanceT = originalPixCoord[1];
|
||||||
float distanceB = fullSize[1] - originalPixCoord[1];
|
float distanceB = fullSizeUntransformed[1] - originalPixCoord[1];
|
||||||
float distanceL = originalPixCoord[0];
|
float distanceL = originalPixCoord[0];
|
||||||
float distanceR = fullSize[0] - originalPixCoord[0];
|
float distanceR = fullSizeUntransformed[0] - originalPixCoord[0];
|
||||||
|
|
||||||
// get the smallest
|
// get the smallest
|
||||||
float smallest = min(min(distanceT, distanceB), min(distanceL, distanceR));
|
float smallest = min(min(distanceT, distanceB), min(distanceL, distanceR));
|
||||||
|
|
Loading…
Reference in a new issue