Technically refactored.
This commit is contained in:
@ -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);
|
||||
|
@ -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
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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;
|
Reference in New Issue
Block a user