BlitzMax 3d

Everyone want a 3d module for BlitzMax language.

Many attempt to create wrapper for other engine exists (and maybe something is still around, sorry but I have no time – and bandwidth! – to test everything!)

The only one 3d engine still working is … MiniB3d! Yes… the old engine created to mimic Blitz3D syntax and features.

Of course it works very well.

But today, when you speak of 3d engine, you NEED something more than Loading mesh, change texture and so on. The very BASIC need for a *modern* engine are (in my opinion of course):

  • shadows
  • physic
  • shader support (for little on screen effects… like heat, glowing lights and so on)

Some of the above things (like bloom filter) could be obtained faking a little bit… just take a ‘screenshot’ of the current rendering, apply it on a quad in front of a camera and so on. Of course even with the newest hardware this is not a costless option. Shader – probably – are faster.

Physic is another *big* thing. Minib3d has a basic collision system: you can do interesting thing, but a ‘real’ physic system should manage everything automatically behind the curtain. You can always write your own physic engine in plain BlitzMax… but speed in this case could be a limiting factor.

Shadows… I found (in the time) different approach. Klepto did an own version of MiniB3d (called ‘Extended‘) that included shadows and shader support.
Shadows are ‘shadow volume’ (I think)… a way to create a ‘projected mesh’ (like in nature) to consider in ‘shadow’ everything.

It works well, but it has some limits: you need a mesh without ‘holes’, you need to create the ‘volume’ everyframe, the shadow volume itself is a mesh and must have some limits and so on.

Today this solution is deprecated, because shaders can create stencil shadow in a easier and faster way.

Another solution is OpenB3D: someone took the source code (released as open source) of Blitz3dsdk (but I could be wrong!) and compiled it in a .dll to be used in various languages. And of course there is a wrapper for BlitzMax.

Syntax is very BLITZ3D-style. No object/type at all! Everything is an INT! Old days!

Moreover OpenB3d has volume-shadow integrated (with the same limit explained above), an octree system built in, an interesting ‘build-a-mesh’ function (you can add, subtract different mesh to create a new one! this is very interesting!)

And today we have another option: MiniB3dPlus.

This is a module for minib3d (yes it sounds strange!). BlaBZ user created some interesting function to allow MiniB3D to make a step forward in this century 😀

Actually it support

  • shadow
  • Screen Space Ambient Occlusion
  • bloom fx
  • antialiasing

all via shaders.

BlaBZ did a great work to support any (relative modern) hardware (ATI machines – of course I have ATI… – behave in a different way and aliasing was a problem).

So at the moment we have a MiniB3d that has shadow support and shaders! AT LEAST!

MiniB3dPlus

A little dark image created to test shadows and other FX in MiniB3d.

I really hope that this project will not be abandoned!

PS:

I forgot to mention other past solution for 3d in BlitzMax.

Leadwerks Engine… the current (3.x) version is no more (I think) usable directly in BlitzMax… you need to move to C++

Max3d: the long awaited 3d-engine created by Mark Sibly (the Blitz3d-BlitzMax-Monkey deus-ex-machina), immediately released as open-source, then abandoned and now… disappeared in the sand of time! I discovered a git repository where to find the source (not sure it is the last Mark’s update…)… I tried even to recompile everything on my computer to have the DLL and the wrapper. But no luck… I’m not an expert in C and adding manually ODE and ASSIMP to compile it is over my skill!)

 

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close