view Renderer/Engine/spe/DrawSpan.h @ 594:20166ecb1a78

add light
author yutaka@henri.cr.ie.u-ryukyu.ac.jp
date Wed, 04 Nov 2009 15:57:23 +0900
parents 735f76483bb2
children 360032cc500e
line wrap: on
line source

#ifndef INCLUDED_TASK_DRAW_SPAN
#define INCLUDED_TASK_DRAW_SPAN

#include "SchedTask.h"
#include "Tapestry.h"
#include "SpanPack.h"

typedef struct {
    int *linebuf;
    float *zRow;
    TileListPtr tileList;
    int doneWrite;
} G, *Gptr; 

static    int* linebuf_init(SchedTask *smanager, int width, int height, int rgb);
static    float* zRow_init(SchedTask *smanager, int width, int height);
// static    TilePtr set_rgb(memaddr addr, int wait_tag);
// static    void set_rgbs(memaddr addr, uint32 *max_addr, int wait_tag);
static    uint32 get_rgb(int tx, int ty, TilePtr tile);
// static    TilePtr isAvailableTile(memaddr addr);
static    memaddr getTile(int tx, int ty, int tw, memaddr tex_addr_top);
static    int getTexBlock(int tx, int ty, int twidth);
static    void writebuffer(SchedTask *smanager, Gptr g, unsigned int display, 
	    int width, int height, int screen_width);
static    void updateBuffer(Gptr g, float zpos, int rangex, int x, int y,
                      int tex_x, int tex_y, float normal_x, float nomral_x, float normal_z, TilePtr tile);


// static    void reboot(SpanPackPtr spack, int cur_span_x);

static    int drawDot1(SchedTask *smanager, Gptr g, SpanPtr span, int startx, int endx, int wait_tag);
//static    void drawDot2(SchedTask *smanager, SpanPtr span, int startx, int endx, int js, int wait_tag);
static    int drawLine1(SchedTask *smanager, Gptr g, SpanPtr span, int startx, int endx, int wait_tag);
// static    void drawLine2(SchedTask *smanager, SpanPtr span, int startx, int endx, int js, int wait_tag);
static    int infinity_light_calc(int color,float normal_x, float normal_y, float normal_z);

typedef struct {
    uint32 display;
    int screen_width;
    int rangex_start;
    int rangex_end;
    int rangey;
} DrawSpanArg, *DrawSpanArgPtr;

#endif