March 20, 2019, 03:59:44 AM

Author Topic: OpenB3DMax Roapmap  (Read 6588 times)

Offline markcwm

  • Sr. Member
  • ****
  • Posts: 351
OpenB3DMax Roapmap
« on: June 23, 2017, 11:43:28 PM »
My intention is for OpenB3dMax to be a stable OpenGL 1.4+ engine similar to Minib3d and Blitz3d, I have no plans to add GL 3+ features. It is still in beta so you may find bugs, if you do then please post a report and I will try to fix it ASAP.

Future

This is an incomplete list of my future plans. Post suggestions here and I will edit this.

* Quaternion math functions
* Copy of standard Blitz3d docs
* Copy of Blitz3d examples
* Terrain shader
* Soft shadow shader/s
* Better bumpmap shader
* Nice water shader
* DDS stream loader
* MD3 stream loader
* OpenAL sound module
* Spline-based replay system
* Tree/grass system

* Maybe Also...
* Animated 3d model support with Assimp
* Support for Android
* Quad system for stars, asteroids, trees, candle lights
* Scenegraph or Quadtree
* Open Simplex Noise implementation
* Physics with Newton

* Probably Not...
* PBR
* Split Shadow mapping
* Hardware skinning
* VR Headset

Downloads

The most active, up-to-date version is openb3dmax.mod, which is using OpenB3d 1.25.
This contains all the fixes made by DruggedBunny (b3dsound & EntityName for GetChild, but no Doxygen), all the features added by Spinduluz (DDS & file streams, FreeShader & FreeStencil), and all the changes in Brucey's version (Newton in openb3dlibs.mod & compatible with SDL).
The latest OpenB3d library by Angros is 1.25 minib3d/files.

INSTALL: You need GCC to build modules, see the first two steps in this install guide.
To use NG the best way to start is to get the latest release, for the latest source you need to follow the full install guide.

NOTE: All modules or apps should be built with the same GCC version or you'll get mysterious errors. The latest Win NG release has GCC 7.2 in a folder, this currently breaks the wrapper so use the older GCC 5.1 from NG release 0.87, it's folder is MinGW32, copy this in and rename MinGW32x64 and x86 so they will be ignored.

PS: I recommend using the Terminal or Cmd to build modules, but if you do use MaxIDE keeping Quick Build on will avoid rebuilding everything. To build in 64-bit with overload warnings on (note that it will error if you don't):
Code: [Select]
bmk makemods -d -w -g x64 openb3dmaxOr for BRL (legacy) BlitzMax:
Code: [Select]
bmk makemods -d openb3dmax
Related Topics

MiniB3d for FreeBasic, Wrapper Part 4, Wrapper Part 3, Wrapper Part 2, Wrapper.

Offline Naughty Alien

  • Hero Member
  • *****
  • Posts: 560
Re: Openb3d Roapmap
« Reply #1 on: June 24, 2017, 04:32:29 AM »
-Hardware skinning
-FBX support(both static and animated, making OpenB3D widely open to variety of modeling tools)
-Bullet physics
-Integrate RakNet (its free now?)
-PBR
-Split Shadow mapping

I would recommend to make updates rock solid on existing platforms OpenB3D runs already, before any new target is introduced..

Offline markcwm

  • Sr. Member
  • ****
  • Posts: 351
Re: Openb3d Roapmap
« Reply #2 on: June 25, 2017, 04:18:58 AM »
Yes, Raknet is free, have you used it? I've never looked at it. Do you mean Brucey's mod or RepeatUntil and jimon's mod? I can see it's got great docs which Gnet lacks, Bnet has a nice tutorial by Eikon, BnetEx was changed but seems not to be an improvement.

Android is a high priority for me, it won't be unstable if Angros has done the GLES port right but I'll put out a release before I update to GLES.

I think I'll probably use Assimp for FBX support, it uses Boost which makes it big but I think you can choose not to use it.

Offline Naughty Alien

  • Hero Member
  • *****
  • Posts: 560
Re: Openb3d Roapmap
« Reply #3 on: June 25, 2017, 06:40:19 AM »
Oh..Assimp looks beautiful..that would be actually betetr than FBX alone..

..one question i never asked..is OpenB3D available for C++ ??

Offline markcwm

  • Sr. Member
  • ****
  • Posts: 351
Re: Openb3d Roapmap
« Reply #4 on: June 25, 2017, 05:11:23 PM »
There's no examples for C++ but Angros answered this http://wasted.nz/posts.php?topic=107042

Offline Krischan

  • Full Member
  • ***
  • Posts: 192
    • Krischan's Homepage
Re: Openb3d Roapmap
« Reply #5 on: June 25, 2017, 06:57:05 PM »
I'm still missing a unique logo for OpenB3D, so I created one for myself (for example for a title screen logo "Made with OpenB3D"). I tried to maintain the old Blitzplus/Blitz3D/Blitzmax logo and color style but with a noticable difference: an enclosed "B3D" text in a rounded triangle with a free levitating "Open" above it to emphasize that it has to do with OpenGL or Open Source instead of the old circle in the background. The used font is the free "Monkirta Pursuit NC" font which looks quite similar to the old one, is futuristic and has a good readability. The logo aspect is 2:1 and it is available in resolutions up to 2048x1024. Oh, and because I've only used a few colors and color stepping the compression, scaling and readability is very good even in low resolutions ;D

What do you think?

Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
My Blitzbasic Archive | Extrasolar Project

Offline Krischan

  • Full Member
  • ***
  • Posts: 192
    • Krischan's Homepage
Re: Openb3d Roapmap
« Reply #6 on: June 25, 2017, 07:07:15 PM »
For the wishlist:

- what about TBatchsprites?
- a Quad system for stars, asteroids, trees, candle lights
- a Scenegraph or Quadtree
- a subdivided spherized cube algorithm for seamless orbit to planet surface transition
- open Simplex Noise implementation, which is very fast and free to use
- a BSP loader ;-) ok I nearly completed my own but without patches/VIS calculation
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
My Blitzbasic Archive | Extrasolar Project

Offline markcwm

  • Sr. Member
  • ****
  • Posts: 351
Re: Openb3d Roapmap
« Reply #7 on: June 25, 2017, 11:12:52 PM »
Hey thanks Krischan! 8) I've added it to my git readme now, it looks nice, good colors!

I think there is a sprite batch in there, I tried to make an example once but I didn't understand it.
The BSP loader would be nice.

Offline Krischan

  • Full Member
  • ***
  • Posts: 192
    • Krischan's Homepage
Re: Openb3d Roapmap
« Reply #8 on: June 26, 2017, 07:46:55 AM »
Wow, looks good there 8) For the BSP loader: when I've finished it I think I should create a more general and stripped version of it or split it into a separate TBSPlevel and a TBSPentity type first. The TBatchsprite should use a single surface Entity but still work like sprites. For the Quads I can provide an example later, same for the TScenegraph.

For the OpenSimplex Noise I started a thread in the old BB forum last year but unfortunately never got an answer, there is a C++ implementation linked to Github but I've never got it running in Blitzmax and I still don't know how to include it :-(

Oh, I forgot to mention the TBeat Type from the Code Archives, which is a useful addition, too:
Code: [Select]
' ------------------------------------------------------------------------------------------------
' Usage: Global MainBeat:TBeat = New TBeat.Create (Rand(10,200) , FunctionToExecute)
' ------------------------------------------------------------------------------------------------
Type TBeat

Field Length:Int ' Length of Beat in Milli seconds
Field Ticker:TTimer ' The actual Timer
Field MyEvent:TEvent = New TEvent ' The Event the Timer is tied to
Field BeatFunction(Caller:TBeat, event:TEvent) ' The Function to be called on Beat

Method Create:TBeat (Length:Int = 1000, BeatFunction(Caller:TBeat, event:TEvent) = Null)

Self.Length = Length ' Let the New Beat length = length
Local hertz:Float = 1000.0 / Length ' Stupid Bmx Hertz
AddHook EmitEventHook, EventHook, Self ' Start the Hook
Self.Ticker = CreateTimer (hertz) ' Create the timer
Self.BeatFunction = BeatFunction ' Set the Function to call
Return Self ' Return the New TBeat

End Method

Function EventHook:Object(id:Int, data:Object, context:Object)

If TBeat(context) TBeat(context).Ev TEvent(data) ;Return data

EndFunction

Method free()

' Release the Hook
RemoveHook EmitEventHook, EventHook

' Do Garbage Collection
GCCollect()

End Method

Method Ev(event:TEvent)

' See if the Event was A Beat
If event.id = EVENT_TIMERTICK And event.source = Ticker

' Pass control tothe right Function
BeatFunction(Self, event)

EndIf

End Method

Method HowManyTicks:Int ()

' Return the number of Ticks
Return TimerTicks(Ticker)

EndMethod

Method GetFrequancy:Float ()

' Return the Hertz
Return (1000.0 / Length)

End Method

End Type
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
My Blitzbasic Archive | Extrasolar Project

Offline Naughty Alien

  • Hero Member
  • *****
  • Posts: 560
Re: Openb3d Roapmap
« Reply #9 on: July 19, 2017, 04:20:33 AM »
..VR support ? (Oculus or any other??)

Offline angros47

  • Jr. Member
  • **
  • Posts: 11
Re: Openb3d Roapmap
« Reply #10 on: August 06, 2017, 04:36:20 PM »
Actually, the last version supports Emscripten. I haven't tested on Android, but in theory it should work (WebGL is a subset of GLES2, so any code made for WebGL should work on GLES2, while the opposite is not always true)

Offline markcwm

  • Sr. Member
  • ****
  • Posts: 351
Re: Openb3d Roapmap
« Reply #11 on: August 07, 2017, 04:27:01 PM »
Hi Angros, I thought v 1.15 was GLES2 not WebGL. Well good to know, thanks.

Offline angros47

  • Jr. Member
  • **
  • Posts: 11
Re: Openb3d Roapmap
« Reply #12 on: August 08, 2017, 10:10:14 PM »
WebGL is basically GLES2, with some restrictions (for example, using VBO is mandatory in WebGL, while it's not in GLES2).

Also, I just put online version 1.20: improved the shader part (it should be faster and more stable), fixed some bugs, and added an experimental multipass postprocessor; so, SSAO, bloom and similar things should be possible

Offline markcwm

  • Sr. Member
  • ****
  • Posts: 351
Re: Openb3d Roapmap
« Reply #13 on: August 09, 2017, 08:37:06 AM »
This is excellent news Angros, glad you are still updating the library. I'm looking forward to trying out the multipass shader stuff. 8)

So what I've been doing is trying to get Assimp working nicely which it is, now it just needs animations. I have added the 64-bit code, loading with koriolis.zipstream and updated from 3.1.1.to 3.2. After the update 3DS files completely stopped loading in windows, I'm happy though as FBX and BLEND had random crashes in 3.1.1.

I noticed 3.2 3DS loads fine in ubuntu (gcc 5.4) and Mac (*clang/llvm), so I realize it's time to drop tdm-gcc as they haven't updated 5.1 since 2013. I'm fairly sure it's impossible to update Assimp past 3.2 without updating gcc 5.1. The problem was an out-dated standard library header for "memory" this gets included by 3DS in 3.2, there are probably more issues.

* Mac uses llvm (low level virtual machine) as a compiler backend and clang as a frontend, gcc has it's own frontend and backend.

Edit:
Quote
The problem was an out-dated standard library header for "memory"
This is due to Assimp using later versions of GCC, I believe C++11 support.

Offline Kronos

  • Jr. Member
  • **
  • Posts: 10
Re: Openb3d Roapmap
« Reply #14 on: August 11, 2017, 06:40:51 PM »
Hi I have spent the last couple of days wrapping the OpenB3D.dll for C# using Angros47 freebasic as a guide however I am stuck on a couple of  commands which seem to call functions inside the calling functions.

declare sub FluidFunction cdecl alias "FluidFunction" (byval fluid as any ptr, ScalarField as Function(x as single, y as single, z as single) as single)
declare sub EmitterParticleFunction cdecl alias "EmitterParticleFunction" (byval emit as any ptr, EmitterFunction as Sub(ent as any ptr, life as integer))

Anyone know how I would wrap these?