Note
Go to the end to download the full example code
Lines with different thicknesses¶
The top line is drawn with the thin line material, a classic gl one-pixel line.
On the left are lines with increasing thickness, without aa, they don’t get thinner than one physical pixel.
On the right are lines with increasing thickness, with aa, really thin lines diminish with alpha.
Note that due to the set pixel_ratio, a thickness of 2 is 1 physical pixel.
import numpy as np
from wgpu.gui.auto import WgpuCanvas, run
import pygfx as gfx
canvas = WgpuCanvas(size=(800, 600))
renderer = gfx.WgpuRenderer(canvas, pixel_ratio=0.5, pixel_filter=False)
x = np.linspace(0, 4 * np.pi, 100)
y = np.sin(x)
positions = np.array([x, y, np.zeros_like(x)], np.float32).T.copy()
geometry = gfx.Geometry(positions=positions)
line0 = gfx.Line(
geometry,
gfx.LineThinMaterial(color=(1.0, 1.0, 1.0)),
)
scene = gfx.Scene()
scene.add(line0)
for aa in [False, True]:
y = 4
for thickness in [0.125, 0.25, 0.5, 1.0, 2.0, 4.0, 8.0]:
line = gfx.Line(
geometry,
gfx.LineMaterial(thickness=thickness, color=(1.0, 1.0, 1.0), aa=aa),
)
y += 2
line.local.y = -y
line.local.x = [-7, 7][aa]
scene.add(line)
camera = gfx.OrthographicCamera()
camera.show_object(scene, scale=0.7)
canvas.request_draw(lambda: renderer.render(scene, camera))
if __name__ == "__main__":
print(__doc__)
run()
Total running time of the script: (0 minutes 0.741 seconds)