From af423b142e851e5a2c1af1986eb6148a1808e1bb Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 7 Nov 2025 14:47:14 -0800 Subject: [PATCH] gl shear --- src/render/opengl/generated/render_opengl.meta.h | 6 +++++- src/render/opengl/render_opengl.mdesk | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/render/opengl/generated/render_opengl.meta.h b/src/render/opengl/generated/render_opengl.meta.h index dc8709d1..1ed1de8d 100644 --- a/src/render/opengl/generated/render_opengl.meta.h +++ b/src/render/opengl/generated/render_opengl.meta.h @@ -32,7 +32,7 @@ str8_lit_comp( "in vec4 c2v_colors_2;\n" "in vec4 c2v_colors_3;\n" "in vec4 c2v_corner_radii;\n" -"in vec4 c2v_style; // x: border_thickness_px, y: softness_px, z: omit_texture, w: unused\n" +"in vec4 c2v_style; // x: border_thickness_px, y: softness_px, z: omit_texture, w: shear\n" "\n" "out vec2 v2p_sdf_sample_pos;\n" "out vec2 v2p_texcoord_pct;\n" @@ -51,10 +51,14 @@ str8_lit_comp( " // rjf: constants\n" " vec2 vertices[] = vec2[](vec2(-1, -1), vec2(-1, +1), vec2(+1, -1), vec2(+1, +1));\n" " \n" +" // rjf: unpack shears\n" +" float shears[] = float[](0, 0, c2v_style.w, c2v_style.w);\n" +" \n" " // rjf: find dst position\n" " vec2 dst_half_size = (c2v_dst_rect.zw - c2v_dst_rect.xy) / 2;\n" " vec2 dst_center = (c2v_dst_rect.zw + c2v_dst_rect.xy) / 2;\n" " vec2 dst_position = vertices[gl_VertexID] * dst_half_size + dst_center;\n" +" dst_position.y += shears[gl_VertexID];\n" " \n" " // rjf: find src position\n" " vec2 src_half_size = (c2v_src_rect.zw - c2v_src_rect.xy) / 2;\n" diff --git a/src/render/opengl/render_opengl.mdesk b/src/render/opengl/render_opengl.mdesk index 9bfd735c..909c7054 100644 --- a/src/render/opengl/render_opengl.mdesk +++ b/src/render/opengl/render_opengl.mdesk @@ -57,7 +57,7 @@ in vec4 c2v_colors_1; in vec4 c2v_colors_2; in vec4 c2v_colors_3; in vec4 c2v_corner_radii; -in vec4 c2v_style; // x: border_thickness_px, y: softness_px, z: omit_texture, w: unused +in vec4 c2v_style; // x: border_thickness_px, y: softness_px, z: omit_texture, w: shear out vec2 v2p_sdf_sample_pos; out vec2 v2p_texcoord_pct; @@ -76,10 +76,14 @@ void main(void) // rjf: constants vec2 vertices[] = vec2[](vec2(-1, -1), vec2(-1, +1), vec2(+1, -1), vec2(+1, +1)); + // rjf: unpack shears + float shears[] = float[](0, 0, c2v_style.w, c2v_style.w); + // rjf: find dst position vec2 dst_half_size = (c2v_dst_rect.zw - c2v_dst_rect.xy) / 2; vec2 dst_center = (c2v_dst_rect.zw + c2v_dst_rect.xy) / 2; vec2 dst_position = vertices[gl_VertexID] * dst_half_size + dst_center; + dst_position.y += shears[gl_VertexID]; // rjf: find src position vec2 src_half_size = (c2v_src_rect.zw - c2v_src_rect.xy) / 2;