Dawoodoz / DFPSR

Fast realtime softare rendering library for C++14 using SSE/AVX/NEON. 2D, 3D and isometric rendering with minimal system dependencies.
https://dawoodoz.com/dfpsr.html
83 stars 6 forks source link

Create an editor for scalable parametric images and component themes #10

Open Dawoodoz opened 4 years ago

Dawoodoz commented 4 years ago

The media machine is a virtual machine with fixed-point precision for full determinism. Registers hold scalars and whole images. Most of the instructions are planar image operations. A user-defined function in the virtual machine can process or generate images. It's currently used to generate scalable graphics for visual components, but could also be used for scripting vector animations using a time variable.

Currently, there's only a default theme coded by hand in the virtual media machine's assembly language and a method for changing theme (window_applyTheme in guiAPI.h), but no theme API nor tool for creating new themes.

There should be ways to compile parametric scalable images into virtual assembly code and link them together to create different themes. A graph based programming tool might be the most powerful, so that normalizing multiplications can take additional parameters. Infix syntax would not be capable of utilizing cache-efficient compound-operations and automatic optimization doesn't work on saturated intermediate images because removing a saturation step would not be equivalent.

Dawoodoz commented 2 years ago

Can probably start by creating a compiler for the media machine, so that one does not have to write in virtual machine assembler to edit the files manually.

Dawoodoz commented 1 year ago

The written language did not add enough clarity to justify the additional step, so I'm scrapping the first prototype compiler.

Maybe just focus on loading input images, selecting regions and previewing each scalable image using pre-defined or handwritten media functions. Then tools for graphical programming and animation could be used to extend it for other usecases.