simvx.graphics.renderer.vertex_layouts

Single source of the 3D mesh vertex-buffer binding layouts (vertex stream split, D5).

Every mesh pipeline declares its vertex input from the constants below; no pass hand-rolls stride/attribute tables. The streams (one GPU buffer each, uploaded by MeshRegistry from a :class:~simvx.graphics.types.VertexStreams):

====== ======================================== ====== ================= binding contents stride shader locations ====== ======================================== ====== ================= 0 position float3 12 B 0 1 normal float3 + uv float2 20 B 1, 2 2 tangent float4 + colour unorm8x4 28 B 3, 4, 5 + uv2 float2 (optional) 3 joints uint16x4 + weights float4 24 B 3, 4 (skinned only) ====== ======================================== ====== =================

Locations 0/1/2 are the stable ShaderMaterial user ABI. The extras stream’s locations 3/4/5 overlap the skin stream’s 3/4: no pipeline consumes both today (skinned pipelines do not read tangent/colour/uv2); a combined variant is a future decision, not a latent bug.

Depth-only passes (shadow, point shadow, depth prepass, pick) declare

data:

POSITION_ONLY_BINDINGS and bind just the position buffer, so their vertex fetch touches 12 bytes per vertex instead of 32.

Module Contents

Data

API

simvx.graphics.renderer.vertex_layouts.__all__

[‘POSITION_BINDING’, ‘SHADING_BINDING’, ‘SHADING_UV_BINDING’, ‘EXTRAS_BINDING’, ‘SKIN_BINDING’, ‘MES…

simvx.graphics.renderer.vertex_layouts.POSITION_BINDING: simvx.graphics.gpu.pipeline.VertexBinding

(0, 12, ((0,),))

simvx.graphics.renderer.vertex_layouts.SHADING_BINDING: simvx.graphics.gpu.pipeline.VertexBinding

(1,)

simvx.graphics.renderer.vertex_layouts.SHADING_UV_BINDING: simvx.graphics.gpu.pipeline.VertexBinding

(1,)

simvx.graphics.renderer.vertex_layouts.EXTRAS_BINDING: simvx.graphics.gpu.pipeline.VertexBinding

(2,)

simvx.graphics.renderer.vertex_layouts.SKIN_BINDING: simvx.graphics.gpu.pipeline.VertexBinding

(3,)

simvx.graphics.renderer.vertex_layouts.MESH_BINDINGS: tuple[simvx.graphics.gpu.pipeline.VertexBinding, ...]

()

simvx.graphics.renderer.vertex_layouts.SKINNED_MESH_BINDINGS: tuple[simvx.graphics.gpu.pipeline.VertexBinding, ...]

()

simvx.graphics.renderer.vertex_layouts.POSITION_ONLY_BINDINGS: tuple[simvx.graphics.gpu.pipeline.VertexBinding, ...]

()

simvx.graphics.renderer.vertex_layouts.POSITION_UV_BINDINGS: tuple[simvx.graphics.gpu.pipeline.VertexBinding, ...]

()