diff options
Diffstat (limited to 'dat.h')
-rw-r--r-- | dat.h | 75 |
1 files changed, 75 insertions, 0 deletions
@@ -0,0 +1,75 @@ +typedef Point Triangle[3]; +typedef struct VSparams VSparams; +typedef struct FSparams FSparams; +typedef struct SUparams SUparams; +typedef struct Shader Shader; +typedef struct Framebuf Framebuf; +typedef struct Framebufctl Framebufctl; + +/* shader params */ +struct VSparams +{ + SUparams *su; + Point3 *p; + Point3 *n; + uint idx; +}; + +struct FSparams +{ + SUparams *su; + Memimage *frag; + Point p; + Point3 bc; + uchar *cbuf; +}; + +/* shader unit params */ +struct SUparams +{ + Framebuf *fb; + OBJElem **b, **e; + int id; + Channel *donec; + + double var_intensity[3]; + + uvlong uni_time; + + Point3 (*vshader)(VSparams*); + Memimage *(*fshader)(FSparams*); +}; + +struct Shader +{ + char *name; + Point3 (*vshader)(VSparams*); + Memimage *(*fshader)(FSparams*); +}; + +struct Framebuf +{ + Memimage *cb; + Memimage *zb; + double *zbuf; + Lock zbuflk; + Memimage *nb; /* XXX DBG */ + Rectangle r; +}; + +struct Framebufctl +{ + Framebuf *fb[2]; + uint idx; + Lock swplk; + + void (*draw)(Framebufctl*, Memimage*, int); + void (*swap)(Framebufctl*); + void (*reset)(Framebufctl*); +}; + +typedef struct Stats Stats; +struct Stats +{ + uvlong min, avg, max, acc, n, v; +}; |