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 WIPMethods
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 WIPVertex::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
positionwith 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 WIPVertex::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