Vertex
Description
Section titled “Description”A single vertex with a required position (2D or 3D) and optional properties like uv and color.
Example
Section titled “Example”use fragmentcolor::mesh::Vertex;let v = Vertex::new([0.0, 0.0, 0.0]).set("uv", [0.5, 0.5]);
import { Vertex } from "fragmentcolor";const v = new Vertex([0.0, 0.0, 0.0]).set("uv", [0.5, 0.5]);
from fragmentcolor import Vertexv = Vertex([0.0, 0.0, 0.0]).set("uv", [0.5, 0.5])
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Methods
Section titled “Methods”Vertex::new
Section titled “Vertex::new”Construct a Vertex from a position (2D or 3D).
Example
Section titled “Example”use fragmentcolor::mesh::Vertex;let v = Vertex::new([0.0, 0.0]);
import { Vertex } from "fragmentcolor";const v = new Vertex([0.0, 0.0]);
from fragmentcolor import Vertexv = Vertex([0.0, 0.0])
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Vertex::set
Section titled “Vertex::set”Attach an arbitrary property to the vertex.
Locations and mapping:
- When you call
set(key, value)
for the first time for a given key, the Vertex assigns the next available@location(N)
to that property (starting after position). Subsequent calls reuse the same location. - At render time, shader vertex inputs (declared with
@location(N)
) are derived from the Shader and matched to Vertex/Instance properties by:- explicit location (instance first, then vertex), then
- name (instance first, then vertex).
- There is no special-case for location(0) in the mapping; position is just another vertex attribute exposed as
position
with a 2- or 3-component format depending on how you constructed the Vertex.
Planned explicit control:
- You will be able to pin a property to a specific location using a fluent API:
vertex.set(key, value).at(index)
. - Vertex construction may also support
Vertex::from_shader(&Shader)
to derive an initial layout directly from the shader AST.
Example
Section titled “Example”use fragmentcolor::mesh::{Vertex, VertexValue};let v = Vertex::new([0.0, 0.0, 0.0]).set("weight", 1.0).set("color",[1.0, 0.0, 0.0]);
import { Vertex } from "fragmentcolor";const v = new Vertex([0.0, 0.0, 0.0]).set("weight", 1.0).set("color",[1.0, 0.0, 0.0]);
from fragmentcolor import Vertexv = Vertex([0.0, 0.0, 0.0]).set("weight", 1.0).set("color",[1.0, 0.0, 0.0])
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP
Vertex::create_instance
Section titled “Vertex::create_instance”Create an Instance from this Vertex by cloning all of its properties
Example
Section titled “Example”use fragmentcolor::mesh::Vertex;let v = Vertex::new([0.0, 0.0]);let inst = v.create_instance();1 collapsed line
_ = inst;
import { Vertex } from "fragmentcolor";const v = new Vertex([0.0, 0.0]);const inst = v.createInstance();
from fragmentcolor import Vertexv = Vertex([0.0, 0.0])inst = v.create_instance()
// Swift placeholder: bindings WIP
// Kotlin placeholder: bindings WIP