void ObjectRenderer::RenderUsingGPU(unsigned first_obj_id, unsigned last_obj_id)
{
unsigned first_index = 0;
void ObjectRenderer::RenderUsingGPU(unsigned first_obj_id, unsigned last_obj_id)
{
unsigned first_index = 0;
PixelBounds bounds(CPURenderBounds(objects.bounds[m_indexes[i]], view, target));
// Using bresenham's lines now mainly because I want to see if they work
PixelBounds bounds(CPURenderBounds(objects.bounds[m_indexes[i]], view, target));
// Using bresenham's lines now mainly because I want to see if they work
PixelBounds bounds(CPURenderBounds(objects.bounds[m_indexes[i]], view, target));
int64_t centre_x = bounds.x + bounds.w / 2;
int64_t centre_y = bounds.y + bounds.h / 2;
PixelBounds bounds(CPURenderBounds(objects.bounds[m_indexes[i]], view, target));
int64_t centre_x = bounds.x + bounds.w / 2;
int64_t centre_y = bounds.y + bounds.h / 2;
//Debug("Centre is %d, %d", centre_x, centre_y);
//Debug("Bounds are %d,%d,%d,%d", bounds.x, bounds.y, bounds.w, bounds.h);
//Debug("Windos is %d,%d", target.w, target.h);
//Debug("Centre is %d, %d", centre_x, centre_y);
//Debug("Bounds are %d,%d,%d,%d", bounds.x, bounds.y, bounds.w, bounds.h);
//Debug("Windos is %d,%d", target.w, target.h);
- double dx = 2.0*(double)(x - centre_x)/(double)(bounds.w);
- double dy = 2.0*(double)(y - centre_y)/(double)(bounds.h);
+ Real dx(2); dx *= Real(x - centre_x)/Real(bounds.w);
+ Real dy(2); dy *= Real(y - centre_y)/Real(bounds.h);
{
target.pixels[index+0] = 0;
target.pixels[index+1] = 0;
target.pixels[index+2] = 0;
target.pixels[index+3] = 255;
{
target.pixels[index+0] = 0;
target.pixels[index+1] = 0;
target.pixels[index+2] = 0;
target.pixels[index+3] = 255;
Rect bounds(CPURenderBounds(objects.bounds[m_indexes[i]], view, target));
PixelBounds pix_bounds(bounds);
Rect bounds(CPURenderBounds(objects.bounds[m_indexes[i]], view, target));
PixelBounds pix_bounds(bounds);
Real invblen(1); invblen /= blen;
Debug("Using %li lines, inverse %f", blen, Double(invblen));
for (int64_t j = 1; j <= blen; ++j)
Real invblen(1); invblen /= blen;
Debug("Using %li lines, inverse %f", blen, Double(invblen));
for (int64_t j = 1; j <= blen; ++j)
m_bezier_coeffs.Resize(objects.beziers.size()*sizeof(GPUBezierCoeffs));
BufferBuilder<GPUBezierCoeffs> builder(m_bezier_coeffs.Map(false, true, true), m_bezier_coeffs.GetSize());
m_bezier_coeffs.Resize(objects.beziers.size()*sizeof(GPUBezierCoeffs));
BufferBuilder<GPUBezierCoeffs> builder(m_bezier_coeffs.Map(false, true, true), m_bezier_coeffs.GetSize());
- Float(bez.x0), Float(bez.y0),
- Float(bez.x1 - bez.x0), Float(bez.y1 - bez.y0),
- Float(bez.x2 - bez.x0), Float(bez.y2 - bez.y0)
+ Float(bez->x0), Float(bez->y0),
+ Float(bez->x1 - bez->x0), Float(bez->y1 - bez->y0),
+ Float(bez->x2 - bez->x0), Float(bez->y2 - bez->y0)
Warn("Shader is invalid (objects are of type %d)", m_type);
unsigned first_index = 0;
Warn("Shader is invalid (objects are of type %d)", m_type);
unsigned first_index = 0;