+struct erb_rend *erb_create(void);
+void erb_destroy(struct erb_rend *erb);
+
+int erb_allocframe(struct erb_rend *erb, int width, int height);
+float *erb_getframe(struct erb_rend *erb);
+
+/* clears the framebuffer and sample counters to begin rendering a new frame */
+void erb_begin(struct erb_rend *erb);
+/* finalizes the frame, averaging samples (optional) */
+float *erb_end(struct erb_rend *erb);
+
+void erb_queue_frame(struct erb_rend *erb);
+void erb_queue_block(struct erb_rend *erb, int x, int y, int width, int height);
+void erb_wait(struct erb_rend *erb);
+
+void erb_primary_ray(struct erb_rend *erb, struct erb_ray *ray, int sample);
+void erb_sample_ray(struct erb_rend *erb, struct erb_ray *ray, float *col);