7092e7ea775b9132928abe2f7345c66b50f22000
[gbajam22] / src / voxscape.h
1 #ifndef VOXSCAPE_H_
2 #define VOXSCAPE_H_
3
4 #include <stdint.h>
5
6 enum {
7         VOX_NEAREST,
8         VOX_LINEAR
9 };
10
11 struct voxscape;
12
13 extern int vox_quality;
14
15 struct voxscape *vox_create(int xsz, int ysz, uint8_t *himg, uint8_t *cimg);
16 void vox_free(struct voxscape *vox);
17
18 /* data argument can be null */
19 uint8_t *vox_texture(struct voxscape *vox, uint8_t *data);
20 uint8_t *vox_heightmap(struct voxscape *vox, uint8_t *data);
21
22 void vox_fog(struct voxscape *vox, int zstart, uint8_t color);
23 int vox_height(struct voxscape *vox, int32_t x, int32_t y);
24
25 void vox_filter(struct voxscape *vox, int hfilt, int cfilt);
26
27 void vox_framebuf(struct voxscape *vox, int xres, int yres, void *fb, int horizon);
28 /* negative height for auto at -h above terrain */
29 void vox_view(struct voxscape *vox, int32_t x, int32_t y, int h, int32_t angle);
30 void vox_proj(struct voxscape *vox, int fov, int znear, int zfar);
31
32 void vox_render(struct voxscape *vox);
33
34 void vox_begin(struct voxscape *vox);
35 void vox_render_slice(struct voxscape *vox, int n);
36
37 void vox_sky_solid(struct voxscape *vox, uint8_t color);
38 void vox_sky_grad(struct voxscape *vox, uint8_t chor, uint8_t ctop);
39
40 #endif  /* VOXSCAPE_H_ */