Amiga.org
Operating System Specific Discussions => Other Operating Systems => Topic started by: TextureMind on August 13, 2024, 02:05:13 PM
-
Hi, this is my first post here. I'm a developer with many years of experience who started programming with Amiga.
I'm creating a remake of Amiga Breathless for PC with modern GPUs. My idea started about 3 years ago when I
programmed an importer from the original GLD format.
You can see it in action in this youtube video:
https://www.youtube.com/watch?v=aXn-zKJpKaE
The remake is implemented in C++ / Vulkan with my own framework, which is called TextureMind Framework and
it's used to create applications for PC / Windows (even if I have in my roadmap to port it into various operating
systems, including Amiga OS 4).
Recently, I decided to continue this project, with a small update. I introduced shader programs into my material
system. They can be imported from shadertoy and used for rendering a material node.
In this video, the shader program is used for rendering endless animated textures:
https://www.youtube.com/watch?v=mfL4TI2L1ZI
I hope it's of your interest. Thanks for your attention.
-
Hi!
If you want to port it to other platforms ("including AmigaOS 4") then Vulkan is a really bad choice for your framework.
Vulkan is done in a way that it cannot really be ported to Big-Endian platforms and a port of a Vulkan-Game would be really massive work (Endian-ness is really problematic here).
Why don't you use GLES ? GLES exists on both PC and AmigaOS 4, and you don't have the problems with porting on non-Little-Endian-platforms. Large parts of the code could probably
just be recompiled in case of GLES.
Best regards,
Steffen Haeuser
-
Thanks for your answer. Having Vulkan in the framework is not a problem for the porting into other platforms. The framework has an abstraction layer for the component used for graphics rendering. Adding GLES is a matter of programming a single component. For other reasons, that component will be programmed also for supporting Direct3D in the future. There is already a variant for 2D graphics with Cairo libraries, probably I will implement another version for 3D graphics with software rendering too.
Regards.
-
Thanks for your answer. Having Vulkan in the framework is not a problem for the porting into other platforms. The framework has an abstraction layer for the component used for graphics rendering. Adding GLES is a matter of programming a single component. For other reasons, that component will be programmed also for supporting Direct3D in the future. There is already a variant for 2D graphics with Cairo libraries, probably I will implement another version for 3D graphics with software rendering too.
This sounds like a clever approach to me. Do you use Shaders ? If yes, be aware Vulkan and GLES use different shader languages.. GLES uses GLSL, while Vulkan uses SPIR-V.
On Amiga you basically have the following options for 3D:
- GLES (GL4ES): Available as a static linked library, available for OS4-capable systems with RadeonHD or RadeonRX graphics cards
- MiniGL: Available as a library, available for older systems (non RadeonHD/RX), cannot do Shaders, only oldstyle OpenGL, available for 68k and PPC systems
- Warp3D: Old 3D API, the basis for MiniGL, available for 68k and PPC, 68k version does not include all options
- Warp3DNova: GLES-oriented Amiga native API, requires RadeonHD/RX, basis for the Amiga GLES implementation
Best regards,
Steffen
-
Thanks for the information. About:
> Do you use Shaders ? If yes, be aware Vulkan and GLES use different shader languages.. GLES uses GLSL, while Vulkan uses SPIR-V.
In my implementation, the SPIR-V shader is obtained from GLSL shader with shaderc libraries. The glsl shader is generated from the
expression nodes material, with this sequence:
material / material nodes -> GLSL shader -> SPIR-V shader
So basically it should fit well the GLES scenario.
As additional information, the HLSL for Direct3D will be generated in place of GLSL. Since I mentioned shader programs inside the
material system, the base language for the materials will be GLSL and eventually converted into HLSL for Direct3D compatibility.
Eventually, a material can be specialized with an extra program for HLSL, but not in place of compatible GLSL. This because the
conversion from HLSL to GLSL may be lossy, while the opposite seems to fit very well. Forced conversions from HLSL to GLSL will
be still possible but considered a 'warning' at log level.
Regards.
-
Impressive. You clearly know what you do.
Do you btw do this framework only for yourselves
or also provide it to others? I assume might
be interesting to others.
Thanks for the information!
-
> Do you btw do this framework only for yourselves
> or also provide it to others? I assume might
> be interesting to others.
The framework has been created in more than 10 years and mainly oriented to the production of
professional commercial products, even though it will be used to create lot of freeware as well.
For now I want to try to use it to create my own products and to launch my own activity.
I don't exclude that in the future the framework, or part of it, will be released as opensource,
but not for now.
In the meanwhile, I have in my road map to release other opensource projects around the framework.
First, there is the plugin system. I want to release the SDK to create plugins and some other plugins
as opensource. I want to create an opensource project for a cross-platform software rendering library
that will be used in my framework in placement of Cairo libraries, but that can be used everywhere.
I want to create an environment for the creation of software, that can be used to access the main
features of the framework, with different programming languages.
Anyways, for now, I finished the porting of my framework to Linux. In this video, you can see an
update, where there is also Breathless starting for the first time on Ubuntu 24:
https://www.youtube.com/watch?v=aXn-zKJpKaE
I am really intent on porting the framework to at least Amiga OS 4.1 in the future. That would be
an interesting experiment.
-
You sir, are a master of your craft!
-
Small update. I completed the porting of my framework on Linux, I uploaded a build of PC Breathless for Linux / Ubuntu 24:
https://www.texturemind.com/post1543/
I need to do additional work for supporting more distros. Regards.
-
Another small update. I extended the support for Linux, not it can start on any Linux distro from glibc 2.17 onwards.
So far I tested on CentOS 7, CentOS 8, Ubuntu 20 and Ubuntu 24. I still need more testing and bug fixing.
I already uploaded the new version:
https://www.texturemind.com/post1543/