LineSegmentsGeometry class Geometry

A batch of thick, disconnected line segments, each expanded into a camera-facing quad of a fixed world-space width in the vertex shader and drawn in a single instanced call.

Native line primitives render one pixel wide on every backend; LineSegmentsGeometry is the styled alternative for bulk segment sets, a model wireframe from MeshData.extractEdges, debug visualization, or any large set of independent segments. The expansion runs on the GPU, so the segments cost no per-frame CPU work (PolylineGeometry remains the choice for connected paths that need joins, caps, and dashes).

Pair it with any material; the expanded ribbon carries the standard vertex outputs (camera-facing normals, u along each segment and v across it, white vertex color). Segment endpoints are in the geometry's local space and the owning node's transform places the whole batch.

When the source LineSegmentData carries normals, normalOffset pushes each endpoint off the surface along them at construction, which keeps a wireframe overlay from z-fighting the mesh it traces.

Inheritance

Constructors

LineSegmentsGeometry(LineSegmentData segments, {double width = 0.01, double normalOffset = 0.0})
Creates a segment batch from segments.

Properties

bindsModelTransformInstance bool
Whether the color encoder should bind the node's model transform as a one-element instance-rate buffer at the slot after this geometry's vertex streams.
no setter
hashCode int
The hash code for this object.
no setterinherited
instancedVertexLayout → VertexLayoutDescriptor?
The explicit pipeline vertex layout this geometry's vertex shader expects, or null for the shader bundle's default interleaved layout.
no setter
isDoubleSided bool
Whether this geometry should be drawn without back-face culling.
no setter
isReadable bool Geometry
Whether this geometry retains CPU-side vertex data, making extractMeshData available.
no setterinherited
localBoundingSphere → Sphere?
Local-space bounding sphere paired with localBounds. Same nullability semantics.
no setterinherited
localBounds → Aabb3?
Local-space axis-aligned bounding box of this geometry's vertex positions, or null if bounds are unknown. Computed by uploadVertexData for procedural geometry, populated from baked scene-package bounds for imported geometry, and (for the advanced setVertices path where the caller manages its own GPU buffer) left null unless the caller assigns it via setLocalBounds.
no setterinherited
materialVertexVariant String
The .fmat vertex-variant key for this geometry's mesh type, used to select a custom material's generated vertex shader (see Material.materialVertexShader). Unskinned geometry is 'unskinned'; SkinnedGeometry overrides this to 'skinned'.
no setter
primitiveType ↔ PrimitiveType
How the vertex/index data is assembled into primitives when drawn.
getter/setter pairinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
segmentCount int
The number of segments drawn.
no setter
vertexShader Shader
The vertex shader used when rendering this geometry.
no setterinherited
width double
The ribbon's world-space width. Takes effect on the next frame.
getter/setter pair

Methods

bind(RenderPass pass, TransientWriter transientsBuffer, Matrix4 modelTransform, Matrix4 cameraTransform, Vector3 cameraPosition, {Shader? shaderOverride}) → void
Binds vertex/index buffers and per-frame uniforms onto pass in preparation for a draw call.
override
draw(RenderPass pass, {int instanceCount = 1}) → void
Emits this geometry's draw call after bind has prepared the render pass.
override
extractMeshData() MeshData Geometry
Copies this geometry's retained CPU vertex/index data out as an isolate-transferable MeshData snapshot.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
setCustomAttribute(String name, Float32List data, {required int components}) → void Geometry
Attaches a custom per-vertex attribute stream named name, matching a material's attributes entry (and the generated shader's in <name>).
inherited
setIndices(BufferView indices, IndexType indexType) → void
Binds an already-uploaded index buffer view, with element width determined by indexType.
inherited
setJointsTexture(Texture? texture, int width) → void
Hook for skinned geometries to receive the joints texture computed by Skin.getJointsTexture.
inherited
setLocalBounds(Aabb3? aabb, Sphere? sphere) → void
Override the bounds. Useful for callers driving setVertices from a caller-managed gpu.DeviceBuffer who want to participate in bounds-driven scene queries (e.g. frustum culling).
inherited
setVertexShader(Shader shader) → void
Assigns the vertex shader used when this geometry is drawn.
inherited
setVertexShaderName(String name) → void
Assigns the vertex shader by name from baseShaderLibrary.
inherited
setVertices(BufferView vertices, int vertexCount) → void
Binds an already-uploaded vertex buffer view as this geometry's vertex source.
inherited
toString() String
A string representation of this object.
inherited
uploadVertexData(ByteData vertices, int vertexCount, ByteData? indices, {IndexType indexType = gpu.IndexType.int16}) → void
Allocates a gpu.DeviceBuffer and uploads vertices (and optional indices) into it in one step.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited