using System.Runtime.InteropServices;
namespace Raylib_cs;
/// 
/// Shader location index
/// 
public enum ShaderLocationIndex
{
    VertexPosition = 0,
    VertexTexcoord01,
    VertexTexcoord02,
    VertexNormal,
    VertexTangent,
    VertexColor,
    MatrixMvp,
    MatrixView,
    MatrixProjection,
    MatrixModel,
    MatrixNormal,
    VectorView,
    ColorDiffuse,
    ColorSpecular,
    ColorAmbient,
    MapAlbedo,
    MapMetalness,
    MapNormal,
    MapRoughness,
    MapOcclusion,
    MapEmission,
    MapHeight,
    MapCubemap,
    MapIrradiance,
    MapPrefilter,
    MapBrdf,
    VertexBoneIds,
    VertexBoneWeights,
    BoneMatrices,
    MapDiffuse = MapAlbedo,
    MapSpecular = MapMetalness,
}
/// 
/// Shader attribute data types
/// 
public enum ShaderAttributeDataType
{
    Float = 0,
    Vec2,
    Vec3,
    Vec4
}
/// 
/// Shader uniform data type
/// 
public enum ShaderUniformDataType
{
    Float = 0,
    Vec2,
    Vec3,
    Vec4,
    Int,
    IVec2,
    IVec3,
    IVec4,
    UInt,
    UIVec2,
    UIVec3,
    UIVec4,
    Sampler2D
}
/// 
/// Shader type (generic)
/// 
[StructLayout(LayoutKind.Sequential)]
public unsafe partial struct Shader
{
    /// 
    /// Shader program id
    /// 
    public uint Id;
    /// 
    /// Shader locations array (MAX_SHADER_LOCATIONS, int *)
    /// 
    public int* Locs;
}