Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 3d5e6b7

Browse files
committed
Apply projective coordinate before overriding the final depth in all shaders
1 parent 7325563 commit 3d5e6b7

15 files changed

+15
-1
lines changed

impeller/entity/shaders/blending/framebuffer_blend.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ out vec2 v_src_texture_coords;
2222

2323
void main() {
2424
gl_Position = frame_info.mvp * vec4(vertices, 0.0, 1.0);
25+
gl_Position /= gl_Position.w;
2526
gl_Position.z = frame_info.depth;
2627
v_src_texture_coords =
2728
IPRemapCoords(src_texture_coords, frame_info.src_y_coord_scale);

impeller/entity/shaders/blending/porter_duff_blend.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ out f16vec4 v_color;
2121

2222
void main() {
2323
gl_Position = frame_info.mvp * vec4(vertices, 0.0, 1.0);
24+
gl_Position /= gl_Position.w;
2425
gl_Position.z = frame_info.depth;
2526
v_color = f16vec4(color);
2627
v_texture_coords =

impeller/entity/shaders/border_mask_blur.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ out vec2 v_texture_coords;
1919

2020
void main() {
2121
gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
22+
gl_Position = / gl_Position.w;
2223
gl_Position.z = frame_info.depth;
2324
v_texture_coords =
2425
IPRemapCoords(texture_coords, frame_info.texture_sampler_y_coord_scale);

impeller/entity/shaders/clip.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ in vec2 position;
1414

1515
void main() {
1616
gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
17+
gl_Position /= gl_Position.w;
1718
gl_Position.z = frame_info.depth;
1819
}

impeller/entity/shaders/color_matrix_color_filter.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ out vec2 v_texture_coords;
1818

1919
void main() {
2020
gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
21+
gl_Position /= gl_Position.w;
2122
gl_Position.z = frame_info.depth;
2223
v_texture_coords =
2324
IPRemapCoords(position, frame_info.texture_sampler_y_coord_scale);

impeller/entity/shaders/glyph_atlas.vert

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void main() {
8181
}
8282

8383
gl_Position = frame_info.mvp * position;
84-
gl_Position = gl_Position / gl_Position.w;
84+
gl_Position /= gl_Position.w;
8585
gl_Position.z = frame_info.depth;
8686
v_uv = uv_origin + unit_position * uv_size;
8787
v_text_color = frame_info.text_color;

impeller/entity/shaders/gradient_fill.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ out vec2 v_position;
1818

1919
void main() {
2020
gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
21+
gl_Position /= gl_Position.w;
2122
gl_Position.z = frame_info.depth;
2223
v_position = IPVec2TransformPosition(frame_info.matrix, position);
2324
}

impeller/entity/shaders/linear_to_srgb_filter.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ out vec2 v_texture_coords;
1818

1919
void main() {
2020
gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
21+
gl_Position /= gl_Position.w;
2122
gl_Position.z = frame_info.depth;
2223
v_texture_coords =
2324
IPRemapCoords(position, frame_info.texture_sampler_y_coord_scale);

impeller/entity/shaders/position_color.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ out f16vec4 v_color;
1818

1919
void main() {
2020
gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
21+
gl_Position /= gl_Position.w;
2122
gl_Position.z = frame_info.depth;
2223
v_color = f16vec4(color);
2324
}

impeller/entity/shaders/rrect_blur.vert

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ out vec2 v_position;
1616

1717
void main() {
1818
gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
19+
gl_Position /= gl_Position.w;
1920
gl_Position.z = frame_info.depth;
2021
// The fragment stage uses local coordinates to compute the blur.
2122
v_position = position;

0 commit comments

Comments
 (0)