88 lines
2.0 KiB
C
88 lines
2.0 KiB
C
/**
|
|
* Copyright (c) 2026 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "shaderlist.h"
|
|
#include "display/screen/screen.h"
|
|
#include "assert/assert.h"
|
|
|
|
shaderlistdef_t SHADER_LIST_DEFS[SHADER_LIST_SHADER_COUNT] = {
|
|
[SHADER_LIST_SHADER_UNLIT] = {
|
|
.shader = &SHADER_UNLIT,
|
|
.definition = &SHADER_UNLIT_DEFINITION
|
|
},
|
|
};
|
|
|
|
errorret_t shaderListInit() {
|
|
mat4 view, proj, model;
|
|
glm_lookat(
|
|
(vec3){ 0.0f, 0.0f, 1.0f },
|
|
(vec3){ 0.0f, 0.0f, 0.0f },
|
|
(vec3){ 0.0f, 1.0f, 0.0f },
|
|
view
|
|
);
|
|
|
|
glm_perspective(
|
|
glm_rad(45.0f),
|
|
SCREEN.aspect,
|
|
0.1f,
|
|
100.0f,
|
|
proj
|
|
);
|
|
|
|
glm_mat4_identity(model);
|
|
|
|
for(shaderlistshader_t i = 0; i < SHADER_LIST_SHADER_COUNT; i++) {
|
|
if(i == SHADER_LIST_SHADER_NULL) {
|
|
continue;
|
|
}
|
|
|
|
assertNotNull(
|
|
SHADER_LIST_DEFS[i].shader, "Shader cannot be null"
|
|
);
|
|
assertNotNull(
|
|
SHADER_LIST_DEFS[i].definition, "Shader definition cannot be null"
|
|
);
|
|
|
|
errorChain(shaderInit(
|
|
SHADER_LIST_DEFS[i].shader, SHADER_LIST_DEFS[i].definition
|
|
));
|
|
errorChain(shaderBind(SHADER_LIST_DEFS[i].shader));
|
|
errorChain(shaderSetMatrix(
|
|
SHADER_LIST_DEFS[i].shader, SHADER_UNLIT_PROJECTION, proj
|
|
));
|
|
errorChain(shaderSetMatrix(
|
|
SHADER_LIST_DEFS[i].shader, SHADER_UNLIT_VIEW, view
|
|
));
|
|
errorChain(shaderSetMatrix(
|
|
SHADER_LIST_DEFS[i].shader, SHADER_UNLIT_MODEL, model
|
|
));
|
|
errorChain(shaderSetTexture(
|
|
SHADER_LIST_DEFS[i].shader, SHADER_UNLIT_TEXTURE, NULL
|
|
));
|
|
errorChain(shaderSetColor(
|
|
SHADER_LIST_DEFS[i].shader, SHADER_UNLIT_COLOR, COLOR_WHITE
|
|
));
|
|
}
|
|
|
|
errorOk();
|
|
}
|
|
|
|
errorret_t shaderListDispose(void) {
|
|
for(shaderlistshader_t i = 0; i < SHADER_LIST_SHADER_COUNT; i++) {
|
|
if(i == SHADER_LIST_SHADER_NULL) {
|
|
continue;
|
|
}
|
|
|
|
assertNotNull(
|
|
SHADER_LIST_DEFS[i].shader, "Shader cannot be null"
|
|
);
|
|
|
|
errorChain(shaderDispose(SHADER_LIST_DEFS[i].shader));
|
|
}
|
|
errorOk();
|
|
}
|