nx10 / unigd

Unified graphics device
https://nx10.github.io/unigd/
21 stars 3 forks source link

GPU rendering #5

Open nx10 opened 3 years ago

nx10 commented 3 years ago

Is your proposal related to a problem?

Raster graphics rendering is currently only possible via Cairo, which is CPU based. While there is a OpenGL based backend for Cairo it seems to be difficult to compile on Windows and not very optimized.

Describe the solution you'd like

Implement a custom low-level GPU renderer to accelerate raster graphics generation. OpenGL 3.x should have the best adoption rate with acceptable features. (Vulkan would be great but is definitely out of scope for now.)

Describe alternatives you've considered

Additional context

It might make sense to encapsulate the low level code in a seperate package to keep the httpgd repository smaller.

nx10 commented 2 years ago

Brief update:

Actively working on a prototype for this.

I am using modern OpenGL (3.3) + Harfbuzz & Freetype for text shaping and rasterization. Currently using GLFW for window creation and GLM for some math but will replace both with my own implementations after the prototype is done. Harfbuzz and Freetype will stay as I am not a madman (and we already depend on them anyway).

There is still a lot (!) to do but I wanted to share some very early screenshots of some of the first R plots rendered directly on a GPU (to my knowledge). Seeing R graphics in wireframe mode feels fun to me:

rsession-utf8_3P3bESjOXY rsession-utf8_faMrMnum5g

rsession-utf8_3WOWfFkPJV rsession-utf8_6uCIdDJVqj