Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shaders + Matrix: Added mat3 and mat4 #36

Merged
merged 3 commits into from
Jan 23, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions include/core/matrix.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#pragma once

typedef float* mat3;
typedef float* mat4;
8 changes: 4 additions & 4 deletions include/modern_pipeline/Shaders.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include "../core/tint.h"
#include "../core/Error.h"
#include "../core/vector.h"
#include "../core/matrix.h"
#include <stdio.h>
#include <stdlib.h>

Expand All @@ -29,10 +30,9 @@ MZ_API void upload_shader_float(shader_program program, const char* var, float v
MZ_API void upload_shader_vec2(shader_program program, const char* var, vec2 value);
MZ_API void upload_shader_vec3(shader_program program, const char* var, vec3 value);
MZ_API void upload_shader_vec4(shader_program program, const char* var, vec4 value);

// TODO: Add upload_shader matrix3, matrix4
// Reference code for implementing matrix types: https://github.com/raysan5/raylib/blob/master/src/raylib.h#L217
MZ_API void upload_shader_mat3(shader_program program, const char* var, mat3 value);
MZ_API void upload_shader_mat4(shader_program program, const char* var, mat4 value);

MZ_API void attach_shader_program(shader_program shader);
MZ_API void unload_shader_program(shader_program shader);
MZ_API void detach_shader_program();
MZ_API void detach_shader_program();
34 changes: 28 additions & 6 deletions src/Shaders.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ shader_program link_shader(shader vertex, shader fragment)

void upload_shader_int(shader_program program, const char* var, int value)
{
int uniform_location = glGetUniformLocation(program, var);
GLuint uniform_location = glGetUniformLocation(program, var);
glUseProgram(program);
glUniform1i(uniform_location, value);

Expand All @@ -100,7 +100,7 @@ void upload_shader_int(shader_program program, const char* var, int value)

void upload_shader_float(shader_program program, const char* var, float value)
{
int uniform_location = glGetUniformLocation(program, var);
GLuint uniform_location = glGetUniformLocation(program, var);
glUseProgram(program);
glUniform1f(uniform_location, value);

Expand All @@ -111,7 +111,7 @@ void upload_shader_float(shader_program program, const char* var, float value)

void upload_shader_vec2(shader_program program, const char* var, vec2 value)
{
int uniform_location = glGetUniformLocation(program, var);
GLuint uniform_location = glGetUniformLocation(program, var);
glUseProgram(program);
glUniform2f(uniform_location, value.x, value.y);

Expand All @@ -122,7 +122,7 @@ void upload_shader_vec2(shader_program program, const char* var, vec2 value)

void upload_shader_vec3(shader_program program, const char* var, vec3 value)
{
int uniform_location = glGetUniformLocation(program, var);
GLuint uniform_location = glGetUniformLocation(program, var);
glUseProgram(program);
glUniform3f(uniform_location, value.x, value.y, value.z);

Expand All @@ -133,7 +133,7 @@ void upload_shader_vec3(shader_program program, const char* var, vec3 value)

void upload_shader_vec4(shader_program program, const char* var, vec4 value)
{
int uniform_location = glGetUniformLocation(program, var);
GLuint uniform_location = glGetUniformLocation(program, var);
glUseProgram(program);
glUniform4f(uniform_location, value.x, value.y, value.z, value.w);

Expand All @@ -142,6 +142,28 @@ void upload_shader_vec4(shader_program program, const char* var, vec4 value)
#endif
}

void upload_shader_mat3(shader_program program, const char* var, mat3 value)
{
GLuint uniform_location = glGetUniformLocation(program, var);
glUseProgram(program);
glUniformMatrix3fv(uniform_location, 1, 0, value);

#ifdef MUZZLE_VERBOSE
log_status(STATUS_INFO, "Uploaded mat3 to shader");
#endif
}

void upload_shader_mat4(shader_program program, const char* var, mat value)
{
GLuint uniform_location = glGetUniformLocation(program, var);
glUseProgram(program);
glUniformMatrix3fv(uniform_location, 1, 0, value);

#ifdef MUZZLE_VERBOSE
log_status(STATUS_INFO, "Uploaded mat4 to shader");
#endif
}

void attach_shader_program(shader_program shader)
{
glUseProgram(shader);
Expand All @@ -155,4 +177,4 @@ void unload_shader_program(shader_program shader)
void detach_shader_program()
{
glUseProgram(0);
}
}