aboutsummaryrefslogtreecommitdiff
path: root/mons_3d/include/shader.h
blob: 553c6e475b2ad689e34603fd8a3f2466aea3e27f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef MONS_SHADER_H
#define MONS_SHADER_H

#include <glad/gl.h>
#include <stdbool.h>

typedef unsigned int mons_shader;
typedef unsigned int mons_program;

typedef enum mons_shader_type {
    MONS_SHADER_TYPE_VERTEX = GL_VERTEX_SHADER,
    MONS_SHADER_TYPE_FRAGMENT = GL_FRAGMENT_SHADER,
} mons_shader_type;

struct mons_vec2;
struct mons_vec3;
struct mons_vec4;
struct mons_mat4;

mons_shader mons_create_shader(mons_shader_type type, char *source, int len);
mons_program mons_create_program(mons_shader vertex_shader, mons_shader fragment_shader);
void mons_shader_set_float(mons_program shader, char *uniform_name, float value);
void mons_shader_set_vec2(mons_program shader, char *uniform_name, struct mons_vec2 value);
void mons_shader_set_vec3(mons_program shader, char *uniform_name, struct mons_vec3 value);
void mons_shader_set_vec4(mons_program shader, char *uniform_name, struct mons_vec4 value);
void mons_shader_set_mat4(mons_program shader, char *uniform_name, struct mons_mat4 value, bool transpose);

void mons_shader_set_float_global(char *uniform_name, float value);
void mons_shader_set_vec2_global(char *uniform_name, struct mons_vec2 value);
void mons_shader_set_vec3_global(char *uniform_name, struct mons_vec3 value);
void mons_shader_set_vec4_global(char *uniform_name, struct mons_vec4 value);
void mons_shader_set_mat4_global(char *uniform_name, struct mons_mat4 value, bool transpose);
void mons_shader_apply_global_uniforms(mons_program shader);

#endif