nuclear@0: #include "rend.h" nuclear@0: #include "threadpool.h" nuclear@0: nuclear@0: static float *pixels; nuclear@0: static int width, height; nuclear@0: nuclear@0: static Matrix4x4 cam_matrix, inv_cam_matrix; nuclear@0: static float (*distfunc)(float, float, float); nuclear@0: nuclear@0: static ThreadPool tpool; nuclear@0: nuclear@0: nuclear@0: void set_framebuffer(int x, int y, float *pix) nuclear@0: { nuclear@0: pixels = pix; nuclear@0: width = x; nuclear@0: height = y; nuclear@0: } nuclear@0: nuclear@0: void set_distance_function(float (*dfunc)(float, float, float)) nuclear@0: { nuclear@0: distfunc = dfunc; nuclear@0: } nuclear@0: nuclear@0: void set_camera_matrix(const Matrix4x4 &xform) nuclear@0: { nuclear@0: cam_matrix = xform; nuclear@0: inv_cam_matrix = xform.inverse(); nuclear@0: } nuclear@0: nuclear@0: static void render_scanline(int y) nuclear@0: { nuclear@0: float *pptr = pixels + y * width * 4; nuclear@0: for(int i=0; i