Drag n drop Gui editors always sucked. Like no everyone made a good Gui using android studio editor, java swing editor, qt editor, or things like this
@DrVektorАй бұрын
Is it possible to make a Linux distribution with Texturemind Framework? Applications can use this interface and services can run? For example, a terminal interface, a video player, an internet browser, a file explorer, etc.
@texturemindАй бұрын
@@DrVektor that would be ambitious, I take it as a big compliment. For now, the framework is oriented for the creation of cross-platform application. But, I do not exclude it for the future.
@DrVektorАй бұрын
Congratulations man. Great work. I wish you continued success. I support you. You are great.
@ChengduLittleA2 ай бұрын
Im curious about how your binary format compatibility thing you mentioned towards the end. Its like dna system of blender. How complex is the back end of that implementation? Do you need to write a lot of definitions for each new structures you want to save so the system could descibe it? I have a implementarion of a similar design as well so i could transfer data and save them seamelessly without much hassle, but the definition is kinda lengthy and not auromaric
@texturemind2 ай бұрын
You only need to add a small "boiler plate" code for reading and writing variables in your class. Let's assume you have a uint32_t variable called m_framerate, you only need to do: reading: __readSingleVariable(uint32_t, "framerate", m_framerate); writing: __writeSingleVariable(uint32_t, "framerate", m_framerate, TRUE); __readSingleVariable and __writeSingleVariable are predefined macros containing a small portion of code with the serialization abstraction layer. The last boolean is set to "TRUE" is used to flag the variable as "attribute" if the serialization is done with a markup language (like xml) and ignored if the format is binary. Unlike protobuf, you don't have to write external .proto files and additional code to handle the serialization in your project. This is what I do to serialize a 3D vector class: template <class T> bool_t tmf::Vector3<T>::readSerialized_This(IDeserializer *p_deserializer) { __readSingleVariable(T, "x", m_x); __readSingleVariable(T, "y", m_y); __readSingleVariable(T, "z", m_z); return TRUE; } template <class T> bool_t tmf::Vector3<T>::writeSerialized_This(ISerializer *p_serializer, bool_t p_markupAttributeTurn, bool_t p_headerTurn, bool_t &p_hasObject) { __writeSingleVariable(T, "x", m_x, TRUE); __writeSingleVariable(T, "y", m_y, TRUE); __writeSingleVariable(T, "z", m_z, TRUE); return TRUE; } You can read / write entire data structures, but also unknown objects derived from the class Object, which is an entire system similar to COM. You can serialize also strings, constants, arrays, lists, hash maps and so on. My serialization system supports also automatic compression in zip and lz4, which can be extended to other formats. There is also an abstraction layer to export / import from native formats.
@texturemind2 ай бұрын
I want to give you a gift. With my framework you can do beautiful stuff like this: tmf::IImageTexture2D *imageTexture = createImageTexture2DFromFiles("TestImage", "gfx\\test_image.png", "gfx\\test_image_alpha.png"); if (imageTexture == NULL) { tmf_error("Unable to load image:%s", "gfx\\test_image.png"); return 1; } tmf::IImage *internalImage = (tmf::IImage *)imageTexture->getImageData(); tmf::IJpegFormatInfo *colorFormatInfo = tmf_createObject<tmf::IJpegFormatInfo>(); colorFormatInfo->setFormatName("jpg"); colorFormatInfo->setQuality(80); internalImage->setColorDataFormatInfo(colorFormatInfo); colorFormatInfo->release(); tmf::ILz4CompressionInfo *alphaFormatInfo = tmf_createObject<tmf::ILz4CompressionInfo>(); alphaFormatInfo->setFormatName("lz4"); internalImage->setAlphaDataFormatInfo(alphaFormatInfo); alphaFormatInfo->release(); tmf::IZipCompressionInfo *compressionInfo = tmf_createObject<tmf::IZipCompressionInfo>(); compressionInfo->setFormatName("zip"); internalImage->setCompressionInfo(compressionInfo); compressionInfo->release(); internalImage->setDeferredFile("test_image.tmg"); tmf_saveToFile(internalImage, "test_image_meta.xml", "xml", TRUE, ""); The application is doing this: - Create a texture 2D with color and alpha channels, loaded from "test_image.png" and "test_image_alpha.png" - Get the internal image used for the texture - Set a jpeg format for the color channel - Set a lz4 compression format for the alpha channel - Compress further the entire object with zip format - Save the image content into a separate file named "test_image.tmg" in binary format - Save the image into a "test_image_meta.xml" file with xml format There is also an interface for saving the native file without changing the data during serialization / deserialization process. For example, you can keep a music in protracker format along the author's comments and converting it into audio track for playing it: the original data is kept untouched inside the file along other variables and stuff.
@ChengduLittleA2 ай бұрын
This looks pretty performant!
@texturemind2 ай бұрын
In the video, I tested on GeForce RTX 3070 8 GB. I tested also on some EC2 instances, like g4dn.xlarge, g5.xlarge and g6.xlarge, and it works fine.
@ChengduLittleA2 ай бұрын
@@texturemindPretty cool stuff! What would be your intended use for this framework? Looks like it is good for doing pixel intense works like image editing/streaming, but I still don't quite understand the whole thing 😅 maybe it's still a bit experimental?
@texturemind2 ай бұрын
@@ChengduLittleA basically, the framework can be used to create anything, from pixel intensive applications, to editors or video games. In the video, you see a test program created with the framework for testing remoting protocols like RDP or VNC. The program creates frames with a number associated to them. Frames with the same number will have always the same pixels, even if the test is executed in different moment on different machines. The test is executed in the host machine and a client is connected into it. The entire desktop is observed in the client window through a remoting protocol that makes use of image compression for the transmission. The frames on the client may be captured by a script in python and stored into the client machine. When the test is finished, the client is disconnected from the host and the test is executed again on the client machine by another script in python which compares the frames with the same numbers captured in the previous step. The image are compared with an application like imagemagik to calculate the PSNR. The PSNR is used to determine the overall quality of the network transmission. The framework makes it easy to create this kind of tests because the GUI is deterministic, and to evaluate the remoting protocol you need GUI like images to simulate a customer experience. I hope this explanation clarifies the video. I'm using the framework also to create a remoting protocol by myself, but it's very early stage and full of technical problems to solve (I know it because I worked in a remoting protocol for about 13 years). I hope soon to release the first demo on KZbin. Basically, a client which connects to a host machine and controls the desktop with the mouse. The compression for now will be performed with ffmpeg libraries, in the future I will optimize it for the GPU with NvEnc and AMF. This is the first step I want to achieve. I know it could sound confusing because I'm working on about 10 projects at the same time :-)
@ChengduLittleA3 ай бұрын
This GUI framework looks awesome!!
@nebularain33383 ай бұрын
How are you handling the platform collisions? Are you using a tile position array and looking ahead to see where the tile is in regard to the player's XY? Or is it a hard coded list of where the blocks are?
@texturemind3 ай бұрын
The first you said, tile position array, the same I use to draw the tiles on screen.
@SteliosSioulas4 ай бұрын
Hello there! Has any progress been made for this project?
@texturemind4 ай бұрын
Yes. This project is implemented with my own TextureMind Framework. In the last 4 months I continued the implementation of the framework, so this project can take benefits from the progresses implemented so far. I improved the resources system and most importantly I implemented all the audio part with OpenAL Soft, which was missing. As next step, I want to introduce physics engine, collision detection and animated textures with program shaders. I don't want to change too much in the original design, only small improvements, like Doom for RTX (in the future, I want to implement RTX rendering as well). Then it will be a porting for Linux and other platforms. Visit www.texturemind.com/post1543/ for more information and to test the old demo (you need a graphics card with the latest Vulkan libraries).
@SteliosSioulas4 ай бұрын
@@texturemind thank you very much for the update!
@ssg-eggunner6 ай бұрын
Resembles MSX like scrolling
@DrVektor9 ай бұрын
Will this be able to implement to linux kernel or reactos ? Is it usable with an application?
@texturemind9 ай бұрын
Hi. Thanks for your interest. The custom GUI will be used to create applications and video games. The current implementation is for Windows but I have in my plans to port the entire framework to Linux and MacOS, so the same for the GUI system. The framework has cross platform design, so it won't be difficult at all, it's something that I have already done in the past, since I have experience as Linux and MacOS. programmer as well. It's not excluded that it will be ported for other operating systems.
@texturemind Жыл бұрын
After lot of optimizations (in particular system to GPU memory transfer), now this model runs at 3000 fps. I think I should remake this video.
@VividNation Жыл бұрын
cool! hows the Breathless conversion is coming along ? :3
@texturemind Жыл бұрын
Brethless conversion is part of the framework so it's not an abandoned project. It is a visual studio project inside the framework solution (along other applications and tests), so I'm currently using it to debug and evolve the framework itself (i did it on purpose to avoid abandoned stuff). Currently I'm working on the GUI side of the framework, so I had no time for the other 3D projects. Breathless will be continued when I'll return back to the graphics engine. I'm planning to implement PBR (Physical Based Rendering) in my 3D engine, so all the projects will benefit from it , including Breathless. I will use GLSL program shader for some animated textures. I'm planning also to implement realtime raytracing with my GeForce RTX 3700, so it will become something like RTX Doom! i'm really greedy for results this time so it won't pass years to see something on screen. ps: I said visual studio but the framework has a strong cross-platform architecture, so in the future it will be ported for other OS / Platforms, like Linux, MacOS, Emscripten, Android, iOS, Raspberry Pi OS and probably AmigaOS.
@AndreaPastoreMrDVG Жыл бұрын
È un peccato che questo progetto non sia stato completato, ma la comunità Amstrad è molto attiva (francesi e spagnoli per lo più) e magari rilasciando il codice sorgente qualcuno potrebbe riprendere in mano il progetto e portarlo a termine! Se vuoi posso fare da intermediario e fornire il codice a chi di dovere!😊
@texturemind Жыл бұрын
In realtà la colpa è di tutti gli impegni che ho avuto in questi anni, ma il progetto non è stato abbandonato. Avevo pensato di riprenderlo tra qualche mese, magari cambiando la grafica che non può essere distribuita per motivi di copyright. L'ideale sarebbe quello di rilasciare un game creator.
@AndreaPastoreMrDVG Жыл бұрын
@@texturemind Si, la Nintendo è famosa per questo genere di attività "persecutoria" nei confronti di chi sviluppa/converte giochi per macchine ormai morte commercialmente, ma c'è sempre la possibilità di fare qualcosa...l'idea di cambiare grafica non è male, ma sicuramente questo comporterà una notevole perdita di tempo. Detto questo, qualsiasi posizione vorrai prendere in merito a questo progetto sarà ben accolta, sono sempre a disposizione per quello che posso fare!😊
@EdgyNumber1 Жыл бұрын
Your use of dithering is genius.
@ntsys3526 Жыл бұрын
Cool❤
@КимЧенОрк Жыл бұрын
wxWidgets?! 🤔🙃 Vulkan is the best
@noveltyman67232 жыл бұрын
Are you gonna publish the source code?
@elcyrille2 жыл бұрын
CRTC 03 -> Only CPC+ ?
@trocoloco Жыл бұрын
in any CPC, Edge Grinder uses R3 for example
@Mark-pr7ug2 жыл бұрын
Any thoughts about creating an rsx command to scroll the screen for us humble cpc veteran owners to play around with?
@holy-del2 жыл бұрын
Wow! UI's with rotations! Looks awesome, but what about UX of this solution?
@texturemind2 жыл бұрын
It's just a technical show case, user experience won't be changed I guess. I wish to use the UI for my future projects. I will change the skin, that currently is based on windows xp (check other videos).
@VividNation2 жыл бұрын
PLEEAASE TEll me you kept working on it!
@texturemind2 жыл бұрын
Hi, thanks. Yes, I didn't continue the project in the last year because I had health problems (heart issues, fortunately nothing serious), but I will continue it in a near future. I'm refactoring the hardware abstraction layer of the 3D engine to support plugin modules for the supported graphics libraries, I want to extend the future support of the engine also for Direct3D and not only Vulkan. I want also to add effects like dynamic lights, shadows and program shaders, maybe with support for raytracing. Then I think that I could release more videos and a playable demo.
@VividNation2 жыл бұрын
@@texturemind If you need any help from Texture Artist like me im willing to help!
@samsungmountiesoft92452 жыл бұрын
How did you make this?
@texturemind2 жыл бұрын
C++ and Vulkan libraries, with VS 2017 Community edition. It's part of an entire framework.
@samsungmountiesoft92452 жыл бұрын
Oh, well done. I want to make one too, please help me with how to make this.
@syntaxed22 жыл бұрын
3 movable quads - THIS IS A FUCKING REVOLUTION! :p
@texturemind2 жыл бұрын
Your comment shows only your low grade of education. This video shows only a feature of an entire framework with a 2D / 3D engine that can handle programmable materials with visual expression nodes and scalable hardware abstraction layer with Vulkan and Cairo library implementations (virtually it can be ported for any driver or operating system). The GUI has been programmed from scratch and it's built on top of the 2D engine with support for modern program shaders. But naturally, you can see only 3 movable quads. Probably if you look at Guernica of Picasso you see only deformed shapes instead of art concept. Compliments.
@kevinmarriott86982 жыл бұрын
Always thought this kind of graphic style would have been good for Lemmings- use all three colours for the sprites (minus background) and use the same ones (maybe combinations like this) for the background. Would've looked much nicer.
@hereticstanlyhalo69162 жыл бұрын
Woah! This is very impressive.
@johneygd2 жыл бұрын
This is shocking,just mind blowing.
@DrVektor3 жыл бұрын
Is it possible to implement vulkan on linux as a desktop environment like wayland and x11?
@texturemind3 жыл бұрын
Wayland is already a replacement for X11 and you can implement your own compositor. There is already a Wayland compositor in Vulkan that is Swvkc, anyway it's not the purpose of this framework. I started this framework years ago as a collection of code written by me in C++ for the development of applications. For now, it runs on Windows, but I used cross-platform principles, so it won't be difficult to port it for Linux or other platforms. Thanks for your interest.
@DrVektor3 жыл бұрын
@@texturemind Actually, I thank you for informing and giving life to such a beautiful project. i hope someday it will can hopefully it will work as responsive as windows wayland soon and without input lag.
@DrVektor3 жыл бұрын
is possible to inplementing to linux desktop. For example linux desktop environment using so many compsitors kwin, wayland, x11 etc. But why no one consantrade to vulkan directx. is that possible. Maybe it can be run some games.
@xanvision3 жыл бұрын
Great job! keep working on it!
@wildthing723 жыл бұрын
Who is playing the piano in the background? Very talented 👏 😁😁😆
@gianlucatroiano25973 жыл бұрын
Impressive job and legendary game! Congrats
@marcofe823 жыл бұрын
Veramente spettacolare! Ma perche' non spieghi magari come implementarlo? Ciao, sempre molto bravo.
@texturemind3 жыл бұрын
Grazie! Sarebbe difficile fare un tutorial step by step perché non è uno tra i tanti demo dove si carica il modello 3D e lo si disegna con le Vulkan, il lavoro fa parte di un intero engine 3D con una precisa architettura interna, diversi strati di astrazione e una pipeline di rendering. Forse un giorno scriverò anche il layer di rendering per DirectX e OpenGL, così come il porting verso altre piattaforme. L'intero lavoro è una rivisitazione in chiave moderna di un altro lavoro che mi trascino dietro da circa 20 anni. Dovrei scrivere una serie di documenti tecnici sulle componenti interne, sul formato delle mesh e in generale sul framework che ho scritto e sul formato di serializzazione. Per l'implementazione, un giorno forse rilascerò il codice open source. Potrei anche scrivere un paio di tutorial sulle Vulkan.
@2002budokan2 жыл бұрын
@@texturemind So, in short it's useless.
@TextureMindVlogs Жыл бұрын
@@2002budokan So, in short, you didn't understand a damn thing. I've said in italian that the engine cannot be explained as a "step by step" tutorial, because it's part of a complex work with an abstraction layer to support multiple graphics libraries, like DirectX and OpenGL. How in your puny understanding an abstraction layer can be useless?
@SteliosSioulas3 жыл бұрын
Fantastic job! Although i have finished the game more times than i can count both in actual amiga back in the day (unexpanded and playing in a 192x124 window 2x2 resolution) and also in winuae in the latter years, i would very much like to play the game again with decent graphics! Congratulations, i will be following your progress!
@texturemind3 жыл бұрын
Thanks. The most difficult challenge was to load the maps from the original Amiga format (GLD) and convert them from raycasting into polygons. I want to create something similar to Doom Remake 4 and I feel like I have the instruments for doing it. The 3D engine is part of a bigger work programmed by me that is called TextureMind Framework. Even if you cannot see it in this video, in that engine I have reprogrammed the same material system of Unreal Engine 4, with some improvements. For instance, I can take one shader from ShaderToys and use it as a texture for one of the materials. I have also a system to handle 3D characters with skinned meshes, bones and animations (check my other videos). The animations can be imported from many formats with the library AssImp, so I want to replace the old flat 2D sprites with modern 3D characters. I'm looking also to RTX for real-time raytracing effects.
@SteliosSioulas3 жыл бұрын
@@texturemind I have little underestanding of what you are saying but you seem very talented from the end result.. congratulations again! The amiga gaming industry was once built with the help of talented programmers like yourself..
@alb06134 жыл бұрын
Hey! Great job ! It's cool to see Breathless in very high resolution at that speed ! I wonder if it makes sense to remake Breathless for PC in 2020, unless you do it for fun or for the few Amiga aficionados. Cool job anyway, thank you!
@texturemind4 жыл бұрын
Thanks for the answer, I'm glad to read the comment from the developer of Amiga Breathless. I already have a solid job (SDE2 for Amazon), so I can dedicate myself to these activities in my spare time without the need of becoming a celebrity on youtube or to make money, but only for the pleasure of doing it. The creation of a remake / clone of Breathless was an old dream of when I was 14, along other titles like Gloom, Alien Breed 3D, Super Stardust, Mario 64 and so on. This work is part of another bigger project that is called TextureMind Framework, developed for these kinds of tasks, games, demos, presentations and so on. Probably I'll create also clones of past Amiga demos, like Lech by the Freezers or Fruit Kitchen by the Silents, ported into modern GPU rendering. I will upload videos along my progresses, it can be Breathless or other projects around this framework.
@alb06134 жыл бұрын
@@texturemind It's a nice project indeed. Keep me posted on your progresses !
@axiss59734 жыл бұрын
:0 that is so phenomenal (¬‿¬)
@pisdkrasp19514 жыл бұрын
Whats happend?
@Mark-pr7ug4 жыл бұрын
Cool. Keep up the good work.
@jpndpersonalchannel4 жыл бұрын
Good Job👍👏👏👏
@ismaelarab17714 жыл бұрын
Animo y acabalo, lo que has hecho es muy grande.
@user-cz9ss4yq4x5 жыл бұрын
In ANSI C89! That's quite an accomplishment. Can you please release the source code on GitHub? I'm very interested
@texturemind5 жыл бұрын
Hi, thanks for the comment. This is a very old project and I don't have the entire source code anymore. Today I'm very busy with my job (SDE II for AWS, so you can imagine) but in my spare time I'm developing a new framework in C++ with more advanced features, I'm creating new 3D engine that will have advanced features like Vulkan and ray tracing support. As soon as possible I wish to create a series of videos on youtube to show this work. Even if this is an amateur project, I' don't know if it will be open source one day because of my job position, but I can release some closed-source demos and videos so you can continue to follow this channel to have more information about it. Regards.
@user-cz9ss4yq4x5 жыл бұрын
@@texturemind I appreciate that! Looking forward to the series.
@Jeansowaty5 жыл бұрын
Looks very good! Continue this project, seriously. The more ports of Super Mario Bros, the merrier ;)
@cristianmurgociu45696 жыл бұрын
How about a link for the demo? *Please*
@galemanno7756 жыл бұрын
Is it possible to build up a title screen to this demo? Later, this game must be coded to a real cpc hardware.
@laurentoliva47356 жыл бұрын
Congrats for the amazing job you did ! I had a cpc when i was kid. It makes me nostalgic and it reminds me the project i wanted to do....it was to make mega man 2 on cpc... I m unix admin now but making a game is slightly a different job :-) Perhaps i will try it in a few months. But i think it might be hard
@chupachupins7 жыл бұрын
Keep up the good work, really faithfull to the NES!
@respergu137 жыл бұрын
Is this a hoax?
@texturemind7 жыл бұрын
No, it's not. The tiles are taken from the original SMB and converted to 4 dithered colors (mode 1). The resolution is 256x192, which covers 16x12 tiles on screen (enough to draw World 1-1). The horizontal scrolling (and so the update of the screen) is realized drawing only two columns of bytes on the right of the screen and shifting the screen by 1 character (8 pixels = 2 bytes) changing the offset of CRTC R12 and R13 (in a recent implementation, I made a smoother scrolling changing also the CRTC R3). The physics of Mario was more complicated. I found online indications for the gravity and the acceleration, that may vary on the base of the action.