ambient_renderer 0.2.1

Ambient renderer. Host-only.
Documentation
struct MeshBase {
    position: vec3<f32>,
    normal: vec3<f32>,
    tangent: vec3<f32>,
    texcoord0: vec2<f32>,
}

struct MeshSkinned {
    joint: vec4<u32>,
    weights: vec4<f32>,
}

@group(GLOBALS_BIND_GROUP)
@binding(MESH_BASE_BINDING)
var<storage> mesh_base: array<MeshBase>;

@group(GLOBALS_BIND_GROUP)
@binding(MESH_SKIN_BINDING)
var<storage> mesh_skinned: array<MeshSkinned>;

@group(GLOBALS_BIND_GROUP)
@binding(SKINS_BINDING)
var<storage> skins: Mat4x4Buffer;


fn get_raw_mesh_position(vertex_index: u32) -> vec3<f32> {
    return mesh_base[vertex_index].position.xyz;
}

fn get_raw_mesh_uv(vertex_index: u32) -> vec2<f32> {
    return mesh_base[vertex_index].texcoord0;
}

fn get_mesh_base(mesh_id: u32, vertex_index: u32) -> MeshBase {
    return mesh_base[mesh_metadatas[mesh_id].base_offset + vertex_index];
}

fn get_mesh_skinned(mesh_id: u32, vertex_index: u32) -> MeshSkinned {
    return mesh_skinned[mesh_metadatas[mesh_id].skinned_offset + vertex_index];
}