diff options
author | chai <chaifix@163.com> | 2020-07-18 03:43:19 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-07-18 03:43:19 +0800 |
commit | 4deff343b5fd928ae9475eedcf9b6add34b31ae2 (patch) | |
tree | d9108f5fedc9f0dd57bf964763edc508983c80c5 /src/core/device.c | |
parent | 4984946caf0397a13da7605bc1ee406ea7354628 (diff) |
-uniform collection
Diffstat (limited to 'src/core/device.c')
-rw-r--r-- | src/core/device.c | 24 |
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*/ |