A 3d fps game made in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Symmetry/src/game/material.h

69 lines
1.4 KiB

#ifndef MATERIAL_H
#define MATERIAL_H
#include "../common/linmath.h"
#include "../common/num_types.h"
#include "../common/variant.h"
#include "../common/limits.h"
struct Static_Mesh;
struct Uniform
{
int location;
int type;
};
enum Mat_Type
{
MAT_BLINN = 0,
MAT_UNSHADED,
MAT_MAX
};
enum Mat_Model_Param
{
MMP_DIFFUSE_TEX = 0,
MMP_DIFFUSE_COL,
MMP_DIFFUSE,
MMP_SPECULAR_STRENGTH,
MMP_SPECULAR,
MMP_UV_SCALE,
MMP_MAX
};
enum Mat_Pipeline_Param
{
MPP_MODEL_MAT = 0,
MPP_INV_MODEL_MAT,
MPP_VIEW_MAT,
MPP_MVP,
MPP_FOG_MODE,
MPP_FOG_DENSITY,
MPP_FOG_START_DIST,
MPP_FOG_MAX_DIST,
MPP_FOG_COLOR,
MPP_CAM_POS,
MPP_TOTAL_LIGHTS,
MPP_AMBIENT_LIGHT,
MPP_MAX
};
struct Material
{
int type;
int shader;
struct Static_Mesh* registered_static_meshes[MAX_MATERIAL_REGISTERED_STATIC_MESHES];
bool lit;
struct Uniform model_params[MMP_MAX];
struct Uniform pipeline_params[MPP_MAX];
};
bool material_init(struct Material* material, int material_type);
void material_reset(struct Material* material);
bool material_register_static_mesh(struct Material* material, struct Static_Mesh* mesh);
void material_unregister_static_mesh(struct Material* material, struct Static_Mesh* mesh);
#endif