awsm-renderer 0.1.7

awsm-renderer
Documentation

struct Transforms {
    world_model: mat4x4<f32>,
    world_normal: mat3x3<f32>,
}

fn get_transforms(material_mesh_meta: MaterialMeshMeta) -> Transforms {
    let world_model = model_transforms[material_mesh_meta.transform_offset / 64u]; // 64 bytes per mat4x4<f32>

    let normal_matrix_offset = material_mesh_meta.normal_matrix_offset / 4u; // 4 bytes per float
    let world_normal = mat3x3<f32>(
        vec3<f32>(
            normal_matrices[normal_matrix_offset + 0u],
            normal_matrices[normal_matrix_offset + 1u],
            normal_matrices[normal_matrix_offset + 2u],
        ),
        vec3<f32>(
            normal_matrices[normal_matrix_offset + 3u],
            normal_matrices[normal_matrix_offset + 4u],
            normal_matrices[normal_matrix_offset + 5u],
        ),
        vec3<f32>(
            normal_matrices[normal_matrix_offset + 6u],
            normal_matrices[normal_matrix_offset + 7u],
            normal_matrices[normal_matrix_offset + 8u],
        ),
    );

    return Transforms(world_model, world_normal);
}