I'm very excited to announce all the future plans for TextureMind Framework, because there will be good news about it. First of all, let me tell you that I'm focusing all my energy on the development of the framework. I continued to develop for months now, without stopping. I'm trying to keep it consistent and reach important targets in no time. In the previous months, I refactored the entire system of class interfaces, serialization, graphics devices and the graphics user interface, implementing new widgets.
New language Parser
Now that everything looks perfect, I'm focusing my efforts on another important feature: a brand new parser of programming languages. The parser will be capable of parsing a source code text with given rules and produce an abstract syntax tree (AST). The AST will be used for many purposes. For instance, there will be the chance to give the AST to a writer and produce again a the source code text, as well as you can give the AST to an executor component and execute the instructions at runtime. The AST will be used also to feed an executor (like LLVM) and execute the instructions at just-in-time.
GPU / CPU shaders
The AST will be used also to cross compile GLSL shader from shadertoy and make it compatible with my internal material system. In this way, you can copy & paste shader from shadertoy and make it work directly on my framework without any further readaptation. Multiple GLSL shaders will be merged into a single GLSL / HLSL / SPIR-V shader without the need of ping-pong rendering: buffers will be converted into material nodes and channels will be converted into connections between material nodes. This is one of the most outstanding and absurd features I'm working on. Another feature is the possibility to execute shaders without the GPU, converting GLSL into Ansi C code executed by the CPU at just-in-time with multiple threads running in parallel in the same thread-pool.
The last news gave me inspiration to talk about another important feature, which is CPU rendering. Today no body cares about creating modern graphics applications which use CPU instead of the GPU, so it's a poorly developed aspect. However, some companies need to manage workflows on GPU-less virtual machines on the cloud, because the costs would be excessive otherwise. I thought about supporting CPU rendering to meet all these needs. Currently, the only CPU rendering component is the graphics device implementation with Cairo library to draw 2D shapes. In the future, there will be other 2 implementations: one with google Skia library for advanced 2D rendering and the other one with DFPSR library (still evaluating) for high-performance 3D rendering. I will add also support for shader rendering with the CPU.
If the parser is not enough, I'm enabling also the possibility to execute source code with alternative libraries, such as TinyC and Chai script. In particular, there will be an interoperability integration of the framework's functionality and the source code executed by the framework itself. For instance, there will be the chance of animating a 3D model or changing the material color directly from the source code, during the application execution. It can be used for many purposes, from pro-applications to scriptable video-games.
Currently, the framework has a cross-platform architecture but it's implemented only on Windows. My first effort will be to port the entire framework on other operating systems, like Linux , MacOS, Android and iOS. Then, there will be also minor ports for other operating systems and platforms, like Raspberry PI OS, consoles and probably AmigaOS 4.
There will be also a port for web assembly / emscripted environment to produce web-browser applications. For this feature, I will make an implementation of the graphics device with webgpu as alternative to Vulkan device. Also other components will be re-implemented or adapted to make this port possible.
The Mind series
Talking about applications, I want to create a series of applications which make use of my framework. Some of these applications will be part of the Mind series.
The main application will be called IdealMind and it will be used to create resources and other applications with the framework's functionality. With IdealMind, it will be possible to create any kind of application, from a simple window with a rectangle to an entire 3D game. You can create a new project, add resources like textures, materials, audio, project a new graphics interface, handle input events, render 3D models, execute scripts and so on. It can be used also to create tests and to handle graphics workflows.
Another application will be called ShaderMind, and it will be used to create new shaders with the fashion of shadertoy, but with my material system. It will be possible to copy & paste shaders from shadertoy and see them work on ShaderMind in no time, so the new shaders can be saved for the future and re-used for other projects, in the same way you can design new shaders and export them to shadertoy without additional efforts.
This application will be used for creating professional visual effects and for non-linear video montage. It will make use of ffmpeg library for the video and all the framework's feature for graphics, in particular the chance of programming effects with GPU shaders, creating animations with the advanced animation system or ray-tracing rendering.
Another ambitious project is RetroMind, an entire suite for creating basically video games for retro platforms, like Amiga, Commodore 64, Amstrad CPC, NES, SNES, Nintendo64 and so on. It will be possible to project the application with an editor, targetting a retro platform and deploy for that platform. For example, the source code used for Super Mario Bros demo for Amstrad CPC 464 will be part of the RetroMind project.
Amiga Breathless for PC
This project is still part of the framework's test cases and is currently developed along the framework, readapting the code to make it work with the latest changes. As the final product, my aim is to port a fully playable version of this game for PC, with enhanced graphics. The playable exe will be distributed without including material protected by copyrights, like maps and textures. The external material will be provided by the user (downloading it from Aminet) and then the application will be capable of re-interpreting the material, applying changes where required to deliver advanced graphics, like shader for the animated textures and 3D assets instead of some textures or skinned mesh for the animated characters.