@@ -170,8 +170,8 @@ def __init__(
170170 self .shape_rectangle_filled_unbuffered_program = self .load_program (
171171 vertex_shader = ":system:shaders/shapes/rectangle/filled_unbuffered_vs.glsl" ,
172172 fragment_shader = ":system:shaders/shapes/rectangle/filled_unbuffered_fs.glsl" ,
173- geometry_shader = ":system:shaders/shapes/rectangle/filled_unbuffered_geo.glsl" ,
174173 )
174+
175175 # Atlas shaders
176176 self .atlas_resize_program : Program = self .load_program (
177177 # NOTE: This is the geo shader version of the atlas resize program.
@@ -253,9 +253,36 @@ def __init__(
253253 )
254254 # rectangle filled
255255 self .shape_rectangle_filled_unbuffered_buffer = self .buffer (reserve = 8 )
256+ # fmt: off
256257 self .shape_rectangle_filled_unbuffered_geometry : Geometry = self .geometry (
257- [BufferDescription (self .shape_rectangle_filled_unbuffered_buffer , "2f" , ["in_vert" ])]
258+ [
259+ # Instanced quad (triangle strip)
260+ BufferDescription (
261+ self .buffer (
262+ data = array (
263+ "f" ,
264+ [
265+ - 0.5 , + 0.5 , # Upper left
266+ - 0.5 , - 0.5 , # lower left
267+ + 0.5 , + 0.5 , # upper right
268+ + 0.5 , - 0.5 , # lower right
269+ ],
270+ )
271+ ),
272+ "2f" ,
273+ ["in_vert" ],
274+ ),
275+ # Per instance data
276+ BufferDescription (
277+ self .shape_rectangle_filled_unbuffered_buffer ,
278+ "2f" ,
279+ ["in_instance_pos" ],
280+ instanced = True
281+ ),
282+ ],
283+ mode = self .TRIANGLE_STRIP ,
258284 )
285+ # fmt: on
259286 self .geometry_empty : Geometry = self .geometry ()
260287
261288 self ._atlas : TextureAtlasBase | None = None
0 commit comments