I'm very excited to announce all the future plans for TextureMind Framework. 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 for programming languages. The parser will be capable of parsing a source code 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 the source code, 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 shaders from shadertoy and make them 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.
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, to save money. 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.
Script execution
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.
Cross-platform
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, modern consoles and probably AmigaOS 4!
Web-browser
There will be also a port for web assembly / emscripten 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. The other components will be re-implemented or adapted to make the port possible.
Applications
I want to create a series of applications which make use of my framework. Some of these applications will be softwares to create applications and graphics.
IdealMind
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.
ShaderMind
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.
MultiEdge Paint
How can I call myselfy texturemind without a painter in my products? My painter implements advanced features for painting and for seamless textures creation. It will make use of generative AI to create new images or modify existing images, with the latest features like txt-to-img, inpainting and outpainting, with the chance to setup the environment locally (not a remote service, it will require a powerful GPU) and download the checkpoints directly from civitai.com . It is called "multi-edge" to resemble the horizontal, vertical and temporal loop, but basically it can loop in multiple "edges" of the images, handling multiple layers and maps at the same time.
OutVideoWork
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.
RetroMind
Another ambitious project is RetroMind, an entire suite for creating 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.
Other projects
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.
DWorkSim
It stands for Deterministic Workflow Simulator, it's an application to produce a workflow to test remotization software and graphics drivers.