diff options
Diffstat (limited to 'src/core/rasterizer.c')
-rw-r--r-- | src/core/rasterizer.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/core/rasterizer.c b/src/core/rasterizer.c index c5745ba..55d4ad3 100644 --- a/src/core/rasterizer.c +++ b/src/core/rasterizer.c @@ -82,11 +82,12 @@ static void puttriangle(Vec2* A, Vec2* B, Vec2* C, Color c) { ssrR_putline(C->x, C->y, B->x, B->y, c); } +extern UniformCollection* g_uniforms ; + void ssrR_triangle( Vec4* CA, Vec4* CB, Vec4* CC, uint IA, uint IB, uint IC, Program* program, - UniformCollection* uniforms, bool early_culled ) { ssr_assert(CA && CB && CC && program); @@ -104,6 +105,8 @@ void ssrR_triangle( } } + UniformCollection* uniforms = g_uniforms; + Vec4 SA, SB, SC; internal_vec4_dividewnoz(CA, &SA); ssrU_viewport(&SA, &SA); internal_vec4_dividewnoz(CB, &SB); ssrU_viewport(&SB, &SB); @@ -186,7 +189,7 @@ void ssrR_triangle( /*interpolate varying variables*/ \ ssrS_solveregsbcp(&bc, IA, IB, IC); \ /*enter fragment shader*/ \ - discard = !frag_shader(uniforms, out_color[0]); \ + discard = !frag_shader(out_color[0]); \ discardif(discard); \ /*put point*/ \ ssr_blendandputpoint(p.x, p.y, blend); \ @@ -242,10 +245,9 @@ void ssrR_triangle( void ssrR_line( Vec4* CA, Vec4* CB, uint IA, uint IB, - Program* program, - UniformCollection* uniforms + Program* program ) { - ssr_assert(CA && CB && program && uniforms); + ssr_assert(CA && CB && program); Vec4 SA, SB; internal_vec4_dividewnoz(CA, &SA); ssrU_viewport(&SA, &SA); @@ -253,6 +255,8 @@ void ssrR_line( FragmentShader frag_shader = program->fragmentshader; + UniformCollection* uniforms = g_uniforms; + int x0 = SA.x, y0 = SA.y; int x1 = SB.x, y1 = SB.y; float wA = SA.w, wB = SB.w; @@ -318,7 +322,7 @@ void ssrR_line( discardif(!pass_depth_test || !pass_stencil_test); /*solve registers with lerp*/ ssrS_solveregslerp(t, IA, IB); - discard = !frag_shader(uniforms, out_color[0]); + discard = !frag_shader(out_color[0]); discardif(discard); /*put point*/ ssr_blendandputpoint(px, py, blend); @@ -333,11 +337,13 @@ void ssrR_line( #undef discardif } -void ssrR_point(Vec4* CA, uint IA, Program* program, UniformCollection* uniforms) { - ssr_assert(CA && program && uniforms); +void ssrR_point(Vec4* CA, uint IA, Program* program) { + ssr_assert(CA && program); FragmentShader frag_shader = program->fragmentshader; + UniformCollection* uniforms = g_uniforms; + Vec3 SA; internal_vec4_dividew(CA, &SA); ssrU_viewport(&SA, &SA); @@ -364,7 +370,7 @@ void ssrR_point(Vec4* CA, uint IA, Program* program, UniformCollection* uniforms } discardif(!pass_depth_test || !pass_stencil_test); ssrS_solveregscopy(IA); - discard = !frag_shader(uniforms, out_color[0]); + discard = !frag_shader(out_color[0]); discardif(discard); /*put point*/ ssr_blendandputpoint(px, py, blend); |