summaryrefslogtreecommitdiff
path: root/src/core/device.c
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-07-18 03:43:19 +0800
committerchai <chaifix@163.com>2020-07-18 03:43:19 +0800
commit4deff343b5fd928ae9475eedcf9b6add34b31ae2 (patch)
treed9108f5fedc9f0dd57bf964763edc508983c80c5 /src/core/device.c
parent4984946caf0397a13da7605bc1ee406ea7354628 (diff)
-uniform collection
Diffstat (limited to 'src/core/device.c')
-rw-r--r--src/core/device.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/core/device.c b/src/core/device.c
index 8284315..ce13c72 100644
--- a/src/core/device.c
+++ b/src/core/device.c
@@ -61,6 +61,8 @@ static struct {
} state;
+UniformCollection* g_uniforms = &state.uniforms;
+
#define MATRIXTOP state.matrix_top[state.matrix_mode]
#define MATRIX state.matrices[state.matrix_mode][MATRIXTOP]
#define MATRIXSTACK state.matrices[state.matrix_mode]
@@ -538,7 +540,7 @@ static void render_prims_triangle(uint varying_flag) {
reset_active_reg = FALSE;
ssrS_setactiveregr();
}
- ssrR_triangle(c0, c1, c2, i0, i1, i2, state.program, &state.uniforms, early_culled);
+ ssrR_triangle(c0, c1, c2, i0, i1, i2, state.program, early_culled);
}
else {
if (!reset_active_reg) {
@@ -552,7 +554,7 @@ static void render_prims_triangle(uint varying_flag) {
vt2 = &clip_buffer.vertices[i + 1];
c0 = &vt0->clip_coord; c1 = &vt1->clip_coord; c2 = &vt2->clip_coord;
i0 = vt0->index; i1 = vt1->index; i2 = vt2->index;
- ssrR_triangle(c0, c1, c2, i0, i1, i2, state.program, &state.uniforms, early_culled);
+ ssrR_triangle(c0, c1, c2, i0, i1, i2, state.program, early_culled);
}
}
}
@@ -578,7 +580,7 @@ static void render_prims_line(uint varying_flag) {
reset_active_reg = FALSE;
ssrS_setactiveregr();
}
- ssrR_line(c0, c1, i0, i1, state.program, &state.uniforms);
+ ssrR_line(c0, c1, i0, i1, state.program);
}
else {
if (!reset_active_reg) {
@@ -592,7 +594,7 @@ static void render_prims_line(uint varying_flag) {
vt1 = &clip_buffer.vertices[i + 1];
c0 = &vt0->clip_coord; c1 = &vt1->clip_coord;
i0 = vt0->index; i1 = vt1->index;
- ssrR_line(c0, c1, i0, i1, state.program, &state.uniforms);
+ ssrR_line(c0, c1, i0, i1, state.program);
}
}
}
@@ -612,7 +614,7 @@ static void render_prims_point(uint varying_flag) {
clipped = clip_point(c0, i0, varying_flag, &clip_buffer);
if (!clipped) {
- ssrR_point(c0, i0, state.program, &state.uniforms);
+ ssrR_point(c0, i0, state.program);
}
else {
/*clipped*/
@@ -628,11 +630,11 @@ void ssr_draw(ssr_PrimitiveType primitive) {
/*set built-in uniforms*/
ssr_getmvp(&mvp);
ssr_getmv(&mv);
- state.uniforms.model = &GETMATRIX(MATRIX_MODEL);
- state.uniforms.view = &GETMATRIX(MATRIX_VIEW);
- state.uniforms.projection = &GETMATRIX(MATRIX_PROJECTION);
- state.uniforms.mvp = &mvp;
- state.uniforms.mv = &mv;
+ g_uniforms->model = &GETMATRIX(MATRIX_MODEL);
+ g_uniforms->view = &GETMATRIX(MATRIX_VIEW);
+ g_uniforms->projection = &GETMATRIX(MATRIX_PROJECTION);
+ g_uniforms->mvp = &mvp;
+ g_uniforms->mv = &mv;
uint varying_flag = state.program->varying_flag;
bool use_extra_varyings = (varying_flag & VARYING_ANY) != 0;
@@ -663,7 +665,7 @@ void ssr_draw(ssr_PrimitiveType primitive) {
if (use_extra_varyings) {
ssrS_setupregisterpointers(vert->index);
}
- vert_shader(&state.uniforms, vert, &clip_coords.coords[i]);
+ vert_shader(vert, &clip_coords.coords[i]);
}
/*set register pointer to frag-in*/