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.

validate line thickness
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.709 seconds)

Gallery generated by Sphinx-Gallery