Technically refactored.

This commit is contained in:
2021-11-14 22:42:10 -08:00
parent bf48712b63
commit f470b5cc5e
80 changed files with 1176 additions and 762 deletions

View File

@ -47,9 +47,7 @@ renderpass_t * renderListRenderPass(
}
void renderListRender(
renderlist_t *list, shader_t *shader,
shaderuniform_t uniformView, shaderuniform_t uniformProjection,
shaderuniform_t uniformModel, shaderuniform_t uniformTextures[]
renderlist_t *list, shader_t *shader, shaderuniform_t *uniforms
) {
camera_t camera;
int32_t i;
@ -64,21 +62,20 @@ void renderListRender(
// Set the shader
shaderUse(shader);
shaderUsePosition(shader, uniformModel, 0,0,0, 0,0,0);
shaderUseCamera(shader, uniformView, uniformProjection, &camera);
shaderUseCamera(shader, uniforms[0], uniforms[1], &camera);
shaderUsePosition(shader, uniforms[2], 0,0,0, 0,0,0);
// Render each pass.
for(i = 0; i < list->passCount; i++) {
pass = renderListGetPass(list, i);
shaderUseTexture(shader, uniformTextures[i], &pass->frame.texture);
shaderUseTexture(shader, uniforms[3+i], &pass->frame.texture);
primitiveDraw(&list->quad, 0, -1);
}
}
void renderListAsBackbuffer(
renderlist_t *list, engine_t *engine, shader_t *shader,
shaderuniform_t uniformView, shaderuniform_t uniformProjection,
shaderuniform_t uniformModel, shaderuniform_t uniformTexture
shaderuniform_t *uniforms
) {
camera_t camera;
@ -91,9 +88,9 @@ void renderListAsBackbuffer(
// Set up the shader.
shaderUse(shader);
shaderUseTexture(shader, uniformTexture, &list->frame.texture);
shaderUseCamera(shader, uniformView, uniformProjection, &camera);
shaderUsePosition(shader, uniformModel, 0,0,0, 0,0,0);
shaderUseCamera(shader, uniforms[0], uniforms[1], &camera);
shaderUsePosition(shader, uniforms[2], 0,0,0, 0,0,0);
shaderUseTexture(shader, uniforms[3], &list->frame.texture);
// Render the quad to the back buffer.
primitiveDraw(&list->quad, 0, -1);

View File

@ -86,15 +86,10 @@ renderpass_t * renderListRenderPass(
*
* @param list List to render.
* @param shader Shader to use while rendering.
* @param uniformView Shader uniform to receive the view matrix.
* @param uniformProjection Shader uniform to receive the projection matirx.
* @param uniformModel Shader uniform to receive the model matrix.
* @param uniformTextures Array of uniforms for each rendered pass as textures.
* @param uniforms Uniforms for the render list. [ view, proj, model, ...text ]
*/
void renderListRender(
renderlist_t *list, shader_t *shader,
shaderuniform_t uniformView, shaderuniform_t uniformProjection,
shaderuniform_t uniformModel, shaderuniform_t uniformTextures[]
renderlist_t *list, shader_t *shader, shaderuniform_t *uniforms
);
/**
@ -105,15 +100,11 @@ void renderListRender(
* @param list Render list to render to the backbuffer
* @param engine Engine to use when rendering.
* @param shader Shader to use to render to the backbuffer.
* @param uniformView Shader uniform to receive the view matrix.
* @param uniformProjection Shader uniform to receive the projection matirx.
* @param uniformModel Shader uniform to receive the model matrix.
* @param uniformTexture Shader uniform to receive the texture.
* @param uniforms Uniforms for the back buffer. [ view, proj, model, text ]
*/
void renderListAsBackbuffer(
renderlist_t *list, engine_t *engine, shader_t *shader,
shaderuniform_t uniformView, shaderuniform_t uniformProjection,
shaderuniform_t uniformModel, shaderuniform_t uniformTexture
shaderuniform_t *uniforms
);
/**

View File

@ -100,7 +100,17 @@ shaderuniform_t shaderGetUniform(shader_t *shader, char *name) {
for(i = 0; i < shader->uniformCount; i++) {
if(strcmp(shader->uniformNames[i], name) == 0) return i;
}
return (shaderuniform_t)-1;
return (shaderuniform_t)0xFFFFFFFF;
}
void shaderGetUniformArray(
shader_t *shader, shaderuniform_t *uniformSet,
char **uniforms, int32_t uniformCount
) {
int32_t i;
for(i = 0; i < uniformCount; i++) {
uniformSet[i] = shaderGetUniform(shader, uniforms[i]);
}
}
void shaderDispose(shader_t *shader) {
@ -183,4 +193,4 @@ void shaderUseCamera(
) {
shaderUseMatrix(shader, uniformView, &camera->view);
shaderUseMatrix(shader, uniformProjection, &camera->projection);
}
}

View File

@ -24,7 +24,7 @@ typedef GLuint shaderuniform_t;
*/
typedef struct {
/** Pointer to an uploaded vertex shader program */
shaderuniform_t shaderVertex;
GLuint shaderVertex;
/** Pointer to an uploaded fragment shader program */
GLuint shaderFrag;
@ -65,6 +65,19 @@ void shaderInit(shader_t *shader,
*/
shaderuniform_t shaderGetUniform(shader_t *shader, char *name);
/**
* Return an array of shaderuniform_t's into an array for a given string array.
*
* @param shader Shader to get the uniforms from.
* @param uniformSet Uniform array to get.
* @param uniforms Uniform strings to get.
* @param uniformCount Count of uniforms you're getting.
*/
void shaderGetUniformArray(
shader_t *shader, shaderuniform_t *uniformSet,
char **uniforms, int32_t uniformCount
);
/**
* Cleanup and unload a previously loaded shader.
* @param shader The shader to unload
@ -77,8 +90,6 @@ void shaderDispose(shader_t *shader);
*/
void shaderUse(shader_t *shader);
/**
* Attaches a texture to the shader.
*

View File

@ -15,7 +15,7 @@ typedef struct {
int16_t width;
int16_t height;
uint8_t scale;
} scaledtexturescale_t;
} texturescalescale_t;
typedef struct {
uint8_t channels;
@ -24,6 +24,6 @@ typedef struct {
int16_t baseWidth;
int16_t baseHeight;
scaledtexturescale_t scales[MANAGED_TEXTURE_SCALE_MAX];
texturescalescale_t scales[MANAGED_TEXTURE_SCALE_MAX];
uint8_t scaleCount;
} scaledtexture_t;
} texturescale_t;