UnionBytes Engine

Everything related to 3D programming
applePi
Addict
Addict
Posts: 1404
Joined: Sun Jun 25, 2006 7:28 pm

Re: UnionBytes Engine

Post by applePi »

just a preliminary evaluation for the demo:
at first i have used a screen res 800X600 (my original res is 640X480), the light and its reflections on the materials are surely wonderful. i don't know what to do, so i have used the w-a-s-d-space and the mouse to move. entering a room with a fog , the fog are also wonderful. and somehow i have entered a room with a gun, i take the gun and can shoot light balls by left click.
the balls are too speedy, i can't notice that it is a balls or not until it sticks on the walls. also the speed of cola cans are too much you should make it less speedy. if you make the balls speed like that in the purebasic example first person in 3D section will be great.
there should be a small cross to aim the gun, and the gun are too much on the extreme right of the screen and i can't see it, and it should be slightly toward the right. if possible the game screen to be adjustable to the user screen resolution .
if there is a waving clothes (that big flag) will be great.
also if we can change the view so we can see the player from a small distance.
i like the transparent window in which we can see the stars and the galaxy.
i have exited the demo to try it in 1024X768 screen res, so i find how to play instructions but at the extreme top right and only part of it. this time i can't find the gun, and i am lost. i have exited to try it again later.
in general i think your engine are very promising, certainly you have made a big effort on lights and materials. and i can move easily on my slow desktop pc
i wonder what the physics engine you have used.

my system
windows xp. Geforce GT 520, Asus pc 2006, Pentium D 3 GHz, ram 3 GByte.

Edit:
i just want to note that the prefix UBE_ are too big, and wonder if it is necessary at all, since it is hindering the function names in my opinion. this is also true for the MP_ prefix in the mp3d engine. also many other engines which are using prefixes. if the function name are unique then i think the prefix are not necessary
and programming without the prefixes makes the programming act more enjoyable, this is my opinion. may be other users have other opinions
UUICEO
User
User
Posts: 57
Joined: Tue Mar 10, 2009 9:09 pm
Location: Shakopee, Minnesota. USA

Re: UnionBytes Engine

Post by UUICEO »

Your engine is looking great guys. Keep up the great work!
Windows 7 Ultimate x64 / PureBasic 5.21 LTS / ProGUI Platinum / PureVision / http://www.linkedin.com/groups/PureBasi ... =&trk=tyah
User avatar
luis
Addict
Addict
Posts: 3893
Joined: Wed Aug 31, 2005 11:09 pm
Location: Italy

Re: UnionBytes Engine

Post by luis »

applePi wrote: i just want to note that the prefix UBE_ are too big, and wonder if it is necessary at all, since it is hindering the function names in my opinion. this is also true for the MP_ prefix in the mp3d engine. also many other engines which are using prefixes. if the function name are unique then i think the prefix are not necessary
and programming without the prefixes makes the programming act more enjoyable, this is my opinion. may be other users have other opinions
Prefixes are almost a necessity for a flat API IMO. I use them as well in my sgl lib (sgl_funcname).

I found them useful for the following reasons:

1) using autocomplete, you type sgl_ and you have a list of all the possible commands in that lib

2) when you have hundreds of new commands, name collisions are very probable depending on some factors (a plot is a plot, a resize is a resize a load is a load, maybe not a problem if you are writing something extremely specific or esoteric)

3) pushing the same concept one step further, you can keep your subsystems ordered and easy to filter as well. For example sgl_texture_* let you to filter just the commands relative to the texture sublibrary.

I found this approach useful and reasonable when you can't (won't) use a hierarchy of real objects.
"Have you tried turning it off and on again ?"
A little PureBasic review
gnasen
Enthusiast
Enthusiast
Posts: 282
Joined: Wed Sep 24, 2008 12:21 am

Re: UnionBytes Engine

Post by gnasen »

runs smooth on my machine (AMD Radeon HD 7800 Series, 8gb ram, i5) and looks really good. Only thing I noticed was that the vending machines have been flickering.
pb 5.11
User avatar
eddy
Addict
Addict
Posts: 1479
Joined: Mon May 26, 2003 3:07 pm
Location: Nantes

Re: UnionBytes Engine

Post by eddy »

smooth (core i5, HD graphic 4600, 8GB ram)
Imagewin10 x64 5.72 | IDE | PB plugin | Tools | Sprite | JSON | visual tool
User avatar
Samuel
Enthusiast
Enthusiast
Posts: 755
Joined: Sun Jul 29, 2012 10:33 pm
Location: United States

Re: UnionBytes Engine

Post by Samuel »

It seems to run nice and smooth. I also noticed the vending machine flicker that gnasen mentioned.
One thing you might want to consider adding to the demo is an FPS display.

[Windows] Windows 7 x64
[CPU] AMD Phenom II x4 965 Processor 3.40 GHz
[GPU] ATI FireGL V7600
[RAM] 8.00 GB

I really liked the goop gun thingamabob. :D
Keep up the good work.
User avatar
AndyLy
Enthusiast
Enthusiast
Posts: 228
Joined: Tue Jan 04, 2011 11:50 am
Location: GRI

Re: UnionBytes Engine

Post by AndyLy »

Lighting liked. Colors are very rich. Soft particles very well look.
Runs too fast. :)
Win 7 (32) // intel i3, 3.3 GHz // Ram 4 G // GeForce GT 640
'Happiness for everybody, free, and no one will go away unsatisfied!'
SMsF town: http://www.youtube.com/watch?v=g6RRKYf_Pd0
SMf locations module (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI
Artus
Enthusiast
Enthusiast
Posts: 104
Joined: Wed Feb 25, 2009 10:29 pm
Location: Germany
Contact:

Re: UnionBytes Engine

Post by Artus »

Hey all,
first, sorry that I answer so late, but I was until today on a business trip.

Thank you all very much for testing the demo and the feedback. It will help us to improve the performance of the engine.

@applePi: The physic engine is programmed by us, mostly by STARGATE he makes his Master in Physics at the moment. I’m responsible for all OpenGL related code, graphics and managing the development.
At the moment we still have a few problems with the physic engine, if the FPS to low, sometimes objects falling through the floor, but STARGATE is working on it.
And as luis already explained, the prefix is necessary.

@Gnasen and Samuel: Yeah^^ it looks like this problem exist only on ATI cards, this is the reason I didn’t noticed it. ;) I will modify the shaders, to prevent it.

Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
Artus
Enthusiast
Enthusiast
Posts: 104
Joined: Wed Feb 25, 2009 10:29 pm
Location: Germany
Contact:

Re: UnionBytes Engine

Post by Artus »

Hey all,

I implemented a Water, Glass and heat hazel Shader, I am really happy about the result, so I want to share it with you, . Of course it needs a few optimizations, but I like already the basic result. (It looks better in realtime [animated])
And I fixed the flickering (bug) of the vending machines selection.

Soon (maybe next week) I will update the demo.

Click on the Screenshots to enlarge:

ImageImage

Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
User avatar
luis
Addict
Addict
Posts: 3893
Joined: Wed Aug 31, 2005 11:09 pm
Location: Italy

Re: UnionBytes Engine

Post by luis »

The water looks nice (the space station needs a plumber) !
Could you post a list of the commands just to have an idea of what is available, how is organized, etc.
I know I could look at the demo's source, but maybe not all are used there ?
Or maybe you have a list organized in some way, or with some documentation about each command.
Well, if you have something like that good: if not, I suppose it will come in time :wink:
"Have you tried turning it off and on again ?"
A little PureBasic review
applePi
Addict
Addict
Posts: 1404
Joined: Sun Jun 25, 2006 7:28 pm

Re: UnionBytes Engine

Post by applePi »

@Artus , you said realtime water , do mean something like this
http://www.youtube.com/watch?v=-GMNAMBV3dQ
ie respond to actions or such as dropping a stone in it will make waves ??
whether real time or not it looks good. and every thing can be added during the time
i believe your engine will add more users to PureBasic itself on the long run. i say on the long run, because in the short run a little will know about it or try it, but with time and the youtube many demonstrations will be more attractive and famous like the exponential curve.
Artus
Enthusiast
Enthusiast
Posts: 104
Joined: Wed Feb 25, 2009 10:29 pm
Location: Germany
Contact:

Re: UnionBytes Engine

Post by Artus »

Hey guys,

i´m sorry for answering so late, but the last weeks were like hell at work, a lot of work and extra hours. But now I found a bit time to answer and add some new shaders and functions to the engine.

I add a Parallax-Shader and optimized the Water, see the screenshots at the end of the Post, click on it to enlarge it. STARGATE added the Joy pad \ Xbox-Controller functions.

@applePi: Unfortunately not now, with real-time refraction I meant the animation of the waves.
@luis: A lift of the current available commands is under the screenshots. But it didn’t contain 100 % of all available commands.

Screenshots:
ImageImageImage


Commands:

Code: Select all

;| Declarations |;

;- Math
Declare      UBE_m4fDebug( *m4fSource.UBE_MATRIX4f )
DeclareDLL.f UBE_fRandom( fMaximum.f = 1.0, fMinimum.f = 0.0)
DeclareDLL.f UBE_fRangeRandom( *Range.UBE_RANGEf )
DeclareDLL.i UBE_iClamp( Value.i, Min.i, Max.i )
DeclareDLL.f UBE_fClamp( Value.f, Min.f, Max.f )
DeclareDLL.i UBE_iMin( fValue1.i, fValue2.i, fValue3.i=$7FFFFFFF)
DeclareDLL.i UBE_iMax( fValue1.i, fValue2.i, fValue3.i=-$80000000)
DeclareDLL.f UBE_fMin( fValue1.f, fValue2.f, fValue3.f=1e100)
DeclareDLL.f UBE_fMax( fValue1.f, fValue2.f, fValue3.f=-1e100)
DeclareDLL.i UBE_v2iSet( *v2lTarget.UBE_VECTOR2l, X.i, Y.i )
DeclareDLL.i UBE_v2iAdd( *v2iTarget.UBE_VECTOR2i, *v2iSource.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iAddition( *v2iTarget.UBE_VECTOR2i, *v2iSource1.UBE_VECTOR2i, *v2iSource2.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iSubtract( *v2iTarget.UBE_VECTOR2i, *v2iSource.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iSubtraction( *v2iTarget.UBE_VECTOR2i, *v2iSource1.UBE_VECTOR2i, *v2iSource2.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iScale( *v2iTarget.UBE_VECTOR2i, iValue.i )
DeclareDLL.i UBE_v2iLength( *v2iSource.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iDot( *v2iSource1.UBE_VECTOR2i, *v2iSource2.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iNormalize( *v2iTarget.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iDistance( *v2iSource1.UBE_VECTOR2i, *v2iSource2.UBE_VECTOR2i )
DeclareDLL.i UBE_v2iCrossing( *v2iSource1.UBE_VECTOR2i, *v2iSource2.UBE_VECTOR2i )
DeclareDLL.i UBE_v2fSet( *v2fTarget.UBE_VECTOR2f, X.f, Y.f )
DeclareDLL.i UBE_v2fAdd( *v2fTarget.UBE_VECTOR2f, *v2fSource.UBE_VECTOR2f )
DeclareDLL.i UBE_v2fAddition( *v2fTarget.UBE_VECTOR2f, *v2fSource1.UBE_VECTOR2f, *v2fSource2.UBE_VECTOR2f )
DeclareDLL.i UBE_v2fSubtract( *v2fTarget.UBE_VECTOR2f, *v2fSource.UBE_VECTOR2f )
DeclareDLL.i UBE_v2fSubtraction( *v2fTarget.UBE_VECTOR2f, *v2fSource1.UBE_VECTOR2f, *v2fSource2.UBE_VECTOR2f )
DeclareDLL.i UBE_v2fScale( *v2fTarget.UBE_VECTOR2f, fValue.f )
DeclareDLL.f UBE_v2fLength( *v2fSource.UBE_VECTOR2f )
DeclareDLL.f UBE_v2fDot( *v2fSource1.UBE_VECTOR2f, *v2fSource2.UBE_VECTOR2f )
DeclareDLL.i UBE_v2fNormalize( *v2fTarget.UBE_VECTOR2f )
DeclareDLL.f UBE_v2fDistance( *v2fSource1.UBE_VECTOR2f, *v2fSource2.UBE_VECTOR2f )
DeclareDLL.f UBE_v2fCrossing( *v2fSource1.UBE_VECTOR2f, *v2fSource2.UBE_VECTOR2f )
DeclareDLL.i UBE_v3fSet( *v3fTarget.UBE_VECTOR3f, X.f, Y.f, Z.f )
DeclareDLL.s UBE_v3fStr( *v3fTarget.UBE_VECTOR4f, sSeparator.s=", " )
DeclareDLL.i UBE_v3fAdd( *v3fTarget.UBE_VECTOR3f, *v3fSource.UBE_VECTOR3f )
DeclareDLL.i UBE_v3fAddition( *v3fTarget.UBE_VECTOR3f, *v3fSource1.UBE_VECTOR3f, *v3fSource2.UBE_VECTOR3f )
DeclareDLL.i UBE_v3fSubtract( *v3fTarget.UBE_VECTOR3f, *v3fSource.UBE_VECTOR3f )
DeclareDLL.i UBE_v3fSubtraction( *v3fTarget.UBE_VECTOR3f, *v3fSource1.UBE_VECTOR3f, *v3fSource2.UBE_VECTOR3f )
DeclareDLL.i UBE_v3fScale( *v3fTarget.UBE_VECTOR3f, fValue.f )
DeclareDLL.f UBE_v3fLength( *v3fSource.UBE_VECTOR3f )
DeclareDLL.f UBE_v3fDot( *v3fSource1.UBE_VECTOR3f, *v3fSource2.UBE_VECTOR3f )
DeclareDLL.i UBE_v3fNormalize( *v3fTarget.UBE_VECTOR3f )
DeclareDLL.f UBE_v3fDistance( *v3fSource1.UBE_VECTOR3f, *v3fSource2.UBE_VECTOR3f )
DeclareDLL.f UBE_v3fSqrDistance( *v3fSource1.UBE_VECTOR3f, *v3fSource2.UBE_VECTOR3f )
DeclareDLL.i UBE_v3fCrossing( *v3fTarget.UBE_VECTOR3f, *v3fSource1.UBE_VECTOR3f, *v3fSource2.UBE_VECTOR3f )
DeclareDLL.i UBE_v3fNormalFormVertices( *v3fTarget.UBE_VECTOR3f, *v3fVertex1.UBE_VECTOR3f, *v3fVertex2.UBE_VECTOR3f, *v3fVertex3.UBE_VECTOR3f )
DeclareDLL.f UBE_v3fTangentFormVertices( *v3fTarget.UBE_VECTOR3f, *v3fVertex1.UBE_VECTOR3f, *v3fVertex2.UBE_VECTOR3f, *v3fVertex3.UBE_VECTOR3f, *v2fTex1.UBE_VECTOR2f, *v2fTex2.UBE_VECTOR2f, *v2fTex3.UBE_VECTOR2f )
DeclareDLL.i UBE_v3fMultiplyByMatrix4f( *v3fTarget.UBE_VECTOR3f, *m4fSource.UBE_MATRIX4f )
DeclareDLL.i UBE_v4fSet( *v4fTarget.UBE_VECTOR4f, X.f, Y.f, Z.f, W.f = 1.0 )
DeclareDLL.s UBE_v4fStr( *v4fTarget.UBE_VECTOR4f, sSeparator.s=", " )
DeclareDLL.i UBE_v4fCopy( *v4fTarget.UBE_VECTOR4f, *v4fSource.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fPush( X.f, Y.f, Z.f, W.f = 1.0 )
DeclareDLL.i UBE_v4fPushCopy( *v4fSource.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fPop( iCount.i = 1 )
DeclareDLL.i UBE_v4fAdd( *v4fTarget.UBE_VECTOR4f, *v4fSource.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fAddition( *v4fTarget.UBE_VECTOR4f, *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fSubtract( *v4fTarget.UBE_VECTOR4f, *v4fSource.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fSubtraction( *v4fTarget.UBE_VECTOR4f, *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fMultiply( *v4fTarget.UBE_VECTOR4f, *v4fSource.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fMultiplikation( *v4fTarget.UBE_VECTOR4f, *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fDivision( *v4fTarget.UBE_VECTOR4f, *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fChange( *v4fTarget.UBE_VECTOR4f, *v4fSource.UBE_VECTOR4f, fFactor.f )
DeclareDLL.i UBE_v4fScale( *v4fTarget.UBE_VECTOR4f, fValue.f )
DeclareDLL.i UBE_v4fScaling( *v4fTarget.UBE_VECTOR4f, *v4fSource.UBE_VECTOR4f, fValue.f )
DeclareDLL.f UBE_v4fLength( *v4fSource.UBE_VECTOR4f )
DeclareDLL.f UBE_v4fDot( *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fNormalize( *v4fTarget.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fCrossing( *v4fTarget.UBE_VECTOR4f, *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fTangential( *v4fTarget.UBE_VECTOR4f, *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.f UBE_v4fDistance( *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fMultiplyByMatrix4f( *v4fTarget.UBE_VECTOR4f, *m4fSource.UBE_MATRIX4f )
DeclareDLL.i UBE_v4fEqual( *v4fSource1.UBE_VECTOR4f, *v4fSource2.UBE_VECTOR4f )
DeclareDLL.i UBE_v4fMultiplyAdd( *v4fTarget.UBE_VECTOR4f, *v4fSourceAdd.UBE_VECTOR4f, *v4fSourceMultiply.UBE_VECTOR4f)
DeclareDLL.i UBE_v4fMultiplySubtract( *v4fTarget.UBE_VECTOR4f, *v4fSourceAdd.UBE_VECTOR4f, *v4fSourceMultiply.UBE_VECTOR4f)
DeclareDLL.i UBE_m4fIdentity( *m4fTarget.UBE_MATRIX4f )
DeclareDLL.i UBE_m4fBias( *m4fTarget.UBE_MATRIX4f )
DeclareDLL.i UBE_m4fSet( *m4fTarget.UBE_MATRIX4f, X.f, Y.f, Z.f, RotationX.f, RotationY.f, RotationZ.f, ScaleX.f, ScaleY.f, ScaleZ.f )
DeclareDLL.i UBE_m4fFromVector4f( *m4fTarget.UBE_MATRIX4f, *v4fSource.UBE_VECTOR4f )
DeclareDLL.i UBE_m4fFromRandomSolidAngle( *m4fTarget.UBE_MATRIX4f, fAngle.f )
DeclareDLL.i UBE_m4fTranspose( *m4fTarget.UBE_MATRIX4f )
DeclareDLL.i UBE_m4fInverse( *m4fTarget.UBE_MATRIX4f )
DeclareDLL.i UBE_m4fInvertation( *m4fTarget.UBE_MATRIX4f, *m4fSource.UBE_MATRIX4f )
DeclareDLL.i UBE_m4fUnsign( *m4fTarget.UBE_MATRIX4f, *m4fSource.UBE_MATRIX4f )
DeclareDLL.i UBE_m4fMultiply( *m4fTarget.UBE_MATRIX4f, *m4fSource.UBE_MATRIX4f)
DeclareDLL.i UBE_m4fMultiplication( *m4fTarget.UBE_MATRIX4f, *m4fSource1.UBE_MATRIX4f, *m4fSource2.UBE_MATRIX4f )
DeclareDLL.i UBE_m4fToVector4f( *m4fSource.UBE_MATRIX4f, *v4fTarget.UBE_VECTOR4f )
DeclareDLL.i UBE_m4fToMatrix3f( *m4fSource.UBE_MATRIX4f, *m3fTarget.UBE_MATRIX3f )
DeclareDLL.i UBE_m4fToMatrix4x3f( *m4fSource.UBE_MATRIX4f, *m3fTarget.UBE_MATRIX4X3f )
DeclareDLL.i UBE_m4fToTransposedMatrix3f( *m4fSource.UBE_MATRIX4f, *m3fTarget.UBE_MATRIX3f )
DeclareDLL.i UBE_m4fPerspective( *m4fTarget.UBE_MATRIX4f, FOV.f, Aspect.f, Near.f, Far.f )
DeclareDLL.i UBE_m4fFrustum( *m4fTarget.UBE_MATRIX4f, Mode.i, Left.f, Right.f, Bottom.f, Top.f, Near.f, Far.f )
DeclareDLL.i UBE_qSet( *qTarget.UBE_QUATERNION, X.f, Y.f, Z.f, W.f )
DeclareDLL.i UBE_qFromEuler( *qTarget.UBE_QUATERNION, X.f, Y.f, Z.f, Mode.i = #UBE_DEGREE )
DeclareDLL.i UBE_qMultiply( *qTarget.UBE_QUATERNION, *qSource.UBE_QUATERNION )
DeclareDLL.i UBE_qToMatrix4f( *qSource.UBE_QUATERNION, *m4fTarget.UBE_MATRIX4f )
DeclareDLL 	 UBE_RectCollision( X1.i, Y1.i, W1.i, H1.i, X2.i, Y2.i, W2.i, H2.i )
DeclareDLL.i UBE_LookAtMatrix4x4( *Matrix.UBE_MATRIX4f, *Eye.UBE_VECTOR3f, *Target.UBE_VECTOR3f, *Up.UBE_VECTOR3f = #Null )

;- Definition
Declare.s    UBE_Definition_Trim( sString.s )
Declare.i    UBE_Definition_AddNode( *Definition.UBE_DEFINITION, sName.s = "", sValue.s = "" )
Declare.i    UBE_Definition_Parser( *Definition.UBE_DEFINITION, *Memory.UBE_CHARACTERARRAY, bSubList.i = #False )
Declare      UBE_DebugDefinition( *Definition.UBE_DEFINITION, iLevel.i = 0 )
DeclareDLL.i UBE_FreeDefinition( *Definition.UBE_DEFINITION, bFromRoot.i = #False )
DeclareDLL.i UBE_CatchDefinition( *Memory, sPath.s="" )
DeclareDLL   UBE_CloseDefinition()
DeclareDLL.i UBE_LoadDefinitionFile( sFile.s )
DeclareDLL.i UBE_ParseDefinition( *Definition.UBE_DEFINITION, iTypes.i = #UBE_DEFINITION_ALL )
DeclareDLL.i UBE_ParseDefinitionFiles( sPathOrFile.s, iTypes.i = #UBE_DEFINITION_ALL )
DeclareDLL.i UBE_FindDefinition( *Definition.UBE_DEFINITION, sNameOrPath.s, sValue.s = "")
DeclareDLL.i UBE_ParentDefinition( *Definition.UBE_DEFINITION )
DeclareDLL.i UBE_ChildDefinition( *Definition.UBE_DEFINITION, iIndex.i = 0 )
DeclareDLL.i UBE_NextDefinition(*Definition.UBE_DEFINITION)
DeclareDLL.i UBE_PreviousDefinition(*Definition.UBE_DEFINITION)
DeclareDLL.s UBE_DefinitionName( *Definition.UBE_DEFINITION )
DeclareDLL.s UBE_DefinitionLocation( *Definition.UBE_DEFINITION )
DeclareDLL.s UBE_DefinitionString( *Definition.UBE_DEFINITION, sDefault.s = "" )
DeclareDLL.i UBE_DefinitionInteger( *Definition.UBE_DEFINITION, iDefault.i = 0 )
DeclareDLL.f UBE_DefinitionFloat( *Definition.UBE_DEFINITION, fDefault.f = 0.0 )
DeclareDLL.i UBE_DefinitionColor( *Definition.UBE_DEFINITION, *Color.UBE_COLOR4f, DefaultColor.l = $00000000 )
DeclareDLL.i UBE_DefinitionVector( *Definition.UBE_DEFINITION, *v3fVector.UBE_VECTOR3f, DefaultX.f = 0.0, DefaultY.f = 0.0, DefaultZ.f = 0.0 )
DeclareDLL.i UBE_DefinitionRange( *Definition.UBE_DEFINITION, *Range.UBE_RANGEf, DefaultMin.f = 0.0, DefaultMax.f = #UBE_IGNORE )
DeclareDLL.i UBE_DefinitionChildCount( *Definition.UBE_DEFINITION, sName.s = "" )


;- EngineControl
Declare			 UBE_Init()
DeclareDLL	 UBE_ASync( bEnable.i = #True )
DeclareDLL	 UBE_BackFaceCulling( bEnable.i = #True )
DeclareDLL	 UBE_BlendingMode( lOutputMode.l = #UBE_BLENDMODE_SRC_ALPHA, lTargetMode.l = #UBE_BLENDMODE_ONE_MINUS_SRC_ALPHA )
DeclareDLL   UBE_ClearScreen()
DeclareDLL	 UBE_ClearScreenColor( lColor.l )
DeclareDLL	 UBE_DepthTest( bEnable.i = #True )
DeclareDLL   UBE_RotateSkyBox( X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE )
DeclareDLL	 UBE_DisplaySkyBox()
DeclareDLL   UBE_FlipBuffers()
DeclareDLL.f UBE_FPS()
DeclareDLL 	 UBE_Free()
DeclareDLL   UBE_FreeMemory( *Memory.INTEGER )
DeclareDLL	 UBE_GenerateSkyBox( fSize.f = 100.0 )
DeclareDLL.l UBE_GetColor( *Color.UBE_COLOR4f )
DeclareDLL.i UBE_GetScreenTitlePointer()
DeclareDLL.i UBE_GetWindow()
DeclareDLL.i UBE_OpenScreen( iWidth.i, iHeight.i, iDepth.i, sTitle.s, iFlags.i, bFullScreen.i = #False )
DeclareDLL.i UBE_OpenWindowedScreen( iWindow.i, X.i, Y.i, iWidth.i, iHeight.i, iDepth.i )
DeclareDLL	 UBE_ResizeScreen( iWidth.i, iHeight.i )
DeclareDLL.i UBE_ScreenHeight()
DeclareDLL.i UBE_ScreenWidth()
DeclareDLL.i UBE_SetColor( *v4fColor.UBE_COLOR4f, lColor.l )
DeclareDLL	 UBE_SetScreenTitle( sTitle.s )
DeclareDLL	 UBE_ShowLogo ( bShow.i = #True )
DeclareDLL.i UBE_SizeOfMemory( *Memory.INTEGER )
DeclareDLL.f UBE_TimeFactor()
DeclareDLL.i UBE_WindowEvent()
DeclareDLL	 UBE_WireframeMode( bEnable.i = #True )

;- Control
Declare.l 	 UBE_WndProc( hWnd.l, lMessage.l, wParam.l, lParam.l )
DeclareDLL   UBE_ExamineKeyboard()
DeclareDLL   UBE_ExamineMouse()
DeclareDLL.i UBE_IsMouseInArea( X.i, Y.i, iWidth.i, iHeight.i )
DeclareDLL.i UBE_IsMouseInRange( X.i, Y.i, fRange.f )
DeclareDLL.i UBE_KeyboardDown( Key.i )
DeclareDLL.i UBE_KeyboardPushed( Key.i )
DeclareDLL.i UBE_KeyboardReleased( Key.i )
DeclareDLL 	 UBE_LockMouse( bShowCursor.i = #False)
DeclareDLL.i UBE_MouseButtonDown( Button.i )
DeclareDLL.i UBE_MouseButtonPushed( Button.i )
DeclareDLL.i UBE_MouseButtonReleased( Button.i )
DeclareDLL.i UBE_MouseDeltaX()
DeclareDLL.i UBE_MouseDeltaY()
DeclareDLL 	 UBE_MousePosition( X.i, Y.i )
DeclareDLL.i UBE_MouseWheel()
DeclareDLL.i UBE_MouseX()
DeclareDLL.i UBE_MouseY()
DeclareDLL 	 UBE_UnLockMouse( bShowCursor.i = #True)

;- Joystick
Declare UBE_InitJoysticks()
DeclareDLL.i UBE_ExamineJoysticks()
DeclareDLL.s UBE_JoystickName(iJoystick.i)
DeclareDLL.f UBE_JoystickAxis(iJoystick.i, iAxis.i, fPrecision.f=0.0)
DeclareDLL.f UBE_JoystickAxisDeadzone(iJoystick.i, iAxis.i, fValue.f)
DeclareDLL.f UBE_JoystickPointOfView(iJoystick.i)
DeclareDLL.i UBE_JoystickButtonEvent(iJoystick.i, iButton.i)
DeclareDLL.i UBE_JoystickButtonPushed(iJoystick.i, iButton.i)
DeclareDLL.i UBE_JoystickButtonReleased(iJoystick.i, iButton.i)


;- Camera
Declare      UBE_UpdateCameraMatrix()
Declare			 UBE_InitCamera()
DeclareDLL.f UBE_CameraDirectionX()
DeclareDLL.f UBE_CameraDirectionY()
DeclareDLL.f UBE_CameraDirectionZ()
DeclareDLL.f UBE_CameraPositionX()
DeclareDLL.f UBE_CameraPositionY()
DeclareDLL.f UBE_CameraPositionZ()
DeclareDLL.f UBE_CameraRotationX()
DeclareDLL.f UBE_CameraRotationY()
DeclareDLL.f UBE_CameraRotationZ()
DeclareDLL.f UBE_GetCameraAspect()
DeclareDLL.i UBE_GetCameraDirection()
DeclareDLL.f UBE_GetCameraFar()
DeclareDLL.f UBE_GetCameraFov()
DeclareDLL.f UBE_GetCameraNear()
DeclareDLL.i UBE_GetCameraPosition()
DeclareDLL.i UBE_GetCameraRotation()
DeclareDLL.i UBE_GetProjectionMode()
DeclareDLL	 UBE_MoveCamera( X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL	 UBE_RotateCamera( X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL	 UBE_SetCameraAspect( fAspect.f )
DeclareDLL	 UBE_SetCameraFar( fFar.f )
DeclareDLL	 UBE_SetCameraFov( fFov.f )
DeclareDLL	 UBE_SetCameraNear( fNear.f )
DeclareDLL	 UBE_SetCameraPosition( *v3fVector.UBE_VECTOR3f )
DeclareDLL	 UBE_SetCameraRotation( *qQuaternion.UBE_QUATERNION )

;- Drawing
Declare			 UBE_InitDrawing()
Declare			 UBE_Drawing()
DeclareDLL	 UBE_SetDrawingLineWidth( fLineWidth.f = 1.5 )
DeclareDLL.f UBE_GetDrawingLineWidth()
DeclareDLL	 UBE_Draw3DLine( X1.f, Y1.f, Z1.f, X2.f, Y2.f, Z2.f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DVectorLine( *v3fVertex1.UBE_VECTOR3f, *v3fVertex2.UBE_VECTOR3f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DCross( X.f, Y.f, Z.f, fSize.f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DVectorCross( *v3fVertex.UBE_VECTOR3f, fSize.f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DBox( X1.f, Y1.f, Z1.f, X2.f, Y2.f, Z2.f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DVectorBox( *v3fVertex1.UBE_VECTOR3f, *v3fVertex2.UBE_VECTOR3f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DTrianle( X1.f, Y1.f, Z1.f, X2.f, Y2.f, Z2.f, X3.f, Y3.f, Z3.f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DVectorTrianle( *v3fVertex1.UBE_VECTOR3f, *v3fVertex2.UBE_VECTOR3f, *v3fVertex3.UBE_VECTOR3f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DSphere( X.f, Y.f, Z.f, fRadius.f, lColor.l = $FFFFFFFF )
DeclareDLL	 UBE_Draw3DVectorSphere( *v3fVertex.UBE_VECTOR3f, fRadius.f, lColor.l = $FFFFFFFF )

;- Textures
Declare.i     UBE_ImageToTexture( Image.i )
Declare.i		  UBE_CreateTextureListEntry( *iTexture.INTEGER, sName.s )
DeclareDLL.i UBE_CatchTexture( iTexture.i, *Memory.INTEGER, iFilter.i = #UBE_IGNORE, sName.s = "" )
DeclareDLL   UBE_ClipTexture( iTexture.i, X.i = 0, Y.i = 0, lWidth.l = #UBE_DEFAULT, lHeight.l = #UBE_DEFAULT )
DeclareDLL.i UBE_ConvertTextureToImage( iImage.i, iTexture.i )
DeclareDLL.i UBE_CreateEmptyTexture( iTexture.i , lWidth.l, lHeight.l, iFilter.i = #UBE_IGNORE, sName.s = "" )
DeclareDLL.i UBE_CreateTextureFromTO( iTexture.i , glTextureObject.i, lWidth.l, lHeight.l, sName.s = "" )
DeclareDLL.i UBE_CreateTexture( iTexture.i, iImage.i, iFilter.i = #UBE_IGNORE, sName.s = "" )
DeclareDLL   UBE_FreeTexture( iTexture.i )
DeclareDLL.i UBE_GetTextureFilter()
DeclareDLL.i UBE_IsTexture( iTexture.i )
DeclareDLL.i UBE_LoadSkyBoxTexture( iSide.i, sFile.s, iFilter.i = #UBE_IGNORE )
DeclareDLL.i UBE_LoadTexture( iTexture.i, sFile.s, iFilter.i = #UBE_IGNORE, iMipmaps.i = 0 )
DeclareDLL.i UBE_LoadTextureDefinition( iTexture.i, *Definition.UBE_DEFINITION, sName.s = "")
DeclareDLL.i UBE_Texture( sName.s )
DeclareDLL.i UBE_ReadTextureFromMemory( iTexture.i, *Memory.INTEGER, lTextureWidth.l, lTextureHeight.l, iFilter.i = #UBE_IGNORE, sName.s = "" )
DeclareDLL   UBE_SaveTexture( sFile.s, iTexture.i , iFormat.i = #PB_ImagePlugin_PNG )
DeclareDLL	 UBE_SetTextureFilter( iFilter.i = #UBE_TEXTURE_FILTER_NONE )
DeclareDLL	 UBE_StartRenderToTexture( iTexture.i, iMode.i = #UBE_PROJECTIONMODE_2D )
DeclareDLL	 UBE_StopRenderToTexture( iMode.i = #UBE_PROJECTIONMODE_2D )
DeclareDLL.i UBE_TextureObject( iTexture.i )
DeclareDLL.l UBE_TextureHeight( iTexture.i )
DeclareDLL.i UBE_TextureID( iTexture.i )
DeclareDLL.l UBE_TextureWidth( iTexture.i )
DeclareDLL.i UBE_WriteTextureToMemory( iTexture.i )

;- Octrees
DeclareDLL.i UBE_IsInsideOctree( *pOctreeNode.UBE_OCTREENODE, *v4fPosition.UBE_VECTOR4f )
DeclareDLL.i UBE_IsOctreeInterdection( *pOctreeNode.UBE_OCTREENODE, *v4fPosition.UBE_VECTOR4f, fRange.f )
DeclareDLL.i UBE_CreateOctree(fSize.f, iMaxDepth.i=8)
DeclareDLL.i UBE_SubdivideOctreeNode( *pOctreeNode.UBE_OCTREENODE )
DeclareDLL.i UBE_OctreeDepth( *pOctreeNode.UBE_OCTREENODE )
DeclareDLL.i UBE_CountOctreeNodeFullIntersectionItems( *pOctreeNode.UBE_OCTREENODE )
DeclareDLL.i UBE_FindOctreeNode( *pOctreeNode.UBE_OCTREENODE, *v4fPosition.UBE_VECTOR4f )
Declare.s 	 UBE_OctreeNodePath( *pOctreeNode.UBE_OCTREENODE )
DeclareDLL   UBE_AddOctreeLight(*pOctreeNode.UBE_OCTREENODE, *pLight.UBE_LIGHT)
DeclareDLL   UBE_DrawOctree(*pOctreeNode.UBE_OCTREENODE)
DeclareDLL   UBE_DisplayOctree(*pOctreeNode.UBE_OCTREENODE)

;- Light
Declare.i	 	 UBE_UpdateLightMatrix( *Light.UBE_LIGHT )
DeclareDLL.i UBE_CreateLight( iLight.i, X.f, Y.f, Z.f, iType.i = #UBE_LIGHT_POINT )
DeclareDLL.i UBE_CurrentLight()
DeclareDLL   UBE_FreeLight( iLight.i )
DeclareDLL.i UBE_GetAmbientColor()
DeclareDLL.i UBE_GetLightColor( iLight.i )
DeclareDLL.f UBE_GetLightRange( iLight.i )
DeclareDLL.f UBE_GetLightHeight( iLight.i )
DeclareDLL.f UBE_GetLightIntensity( iLight.i )
DeclareDLL.i UBE_GetLightStatus( iLight.i )
DeclareDLL.i UBE_GetSunColor()
DeclareDLL.i UBE_IsLight( iLight.i )
DeclareDLL.i UBE_LightID( iLight.i )
DeclareDLL   UBE_MoveLight( iLight.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL.f UBE_LightX( iLight.i )
DeclareDLL.f UBE_LightY( iLight.i )
DeclareDLL.f UBE_LightZ( iLight.i )
DeclareDLL.i UBE_NextLight()
DeclareDLL.i UBE_ResetLightList()
DeclareDLL   UBE_RotateLight( iLight.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL	 UBE_SetAmbientColor( iColor.i = $FF000000 )
DeclareDLL   UBE_SetLightColor( iLight.i, iColor.i = $FFFFFFFF )
DeclareDLL   UBE_SetLightRange( iLight.i, fRange.f )
DeclareDLL   UBE_SetLightDirection( iLight.i, X.f, Y.f, Z.f )
DeclareDLL   UBE_SetLightIntensity( iLight.i, fIntensity.f )
DeclareDLL	 UBE_SetLightStatus( iLight.i, bEnable.i = #True )
DeclareDLL	 UBE_SetLightConeAngle( iLight.i, fConeAngle.f = 1.0 )
DeclareDLL   UBE_SetSunStatus( bEnable.i = #True )
DeclareDLL   UBE_SetSunIntensity( fIntensity.f = 1.0 )
DeclareDLL   UBE_SetSunColor( iColor.i = $FFFFFFFF )
DeclareDLL   UBE_SetSunDirection( X.f = -0.5 , Y.f = -0.5 , Z.f = -1.0 )
DeclareDLL	 UBE_UpdateLights( iMode.i = #UBE_PROJECTIONMODE_3D_PERSPECTIVE )
DeclareDLL 	 UBE_DisplayLights( bRange.i = #True)


;- Shader
Declare.i		 UBE_CreateShaderListEntry( *iShader.INTEGER, iType.i, sName.s )
Declare.s 	 UBE_ShaderCompileProtocol( glShaderObject.i )
Declare 		 UBE_ShaderDefaultID( iShader.i, iID.i )
Declare.i		 UBE_InitShaderBuffers()
Declare 		 UBE_Init3DShader()
Declare		 	 UBE_Init2DShader()
Declare	 		 UBE_InitShader()
DeclareDLL	 UBE_ActivateBBShaderSizeAttribute( iShader.i )
DeclareDLL	 UBE_ActivateBBShaderNormalAttribute( iShader.i )
DeclareDLL	 UBE_ActivateBBShaderTangentAttribute( iShader.i )
DeclareDLL	 UBE_ActivateBBShaderTexCoord0Attribute( iShader.i )
DeclareDLL	 UBE_ActivateBBShaderTexCoord1Attribute( iShader.i )
DeclareDLL	 UBE_ActivateBBShaderColorAttribute( iShader.i )
DeclareDLL	 UBE_Activate3DShaderNormalAttribute( iShader.i )
DeclareDLL	 UBE_Activate3DShaderTangentAttribute( iShader.i )
DeclareDLL	 UBE_Activate3DShaderTexCoord0Attribute( iShader.i )
DeclareDLL	 UBE_Activate3DShaderTexCoord1Attribute( iShader.i )
DeclareDLL	 UBE_Activate3DShaderColorAttribute( iShader.i )
DeclareDLL	 UBE_BindRenderTreeShader( *pShader.UBE_SHADER )
DeclareDLL	 UBE_BindRenderTreeMaterial( *pMaterial.UBE_MATERIAL )
DeclareDLL	 UBE_BindShader( *Material.UBE_MATERIAL, *ModelMatrix.UBE_MATRIX4f = #Null, *pOctreeNode.UBE_OCTREENODE = #Null )
DeclareDLL	 UBE_CatchFragmentShader( iShader.i, *MemoryStart.INTEGER, *MemoryEnd.INTEGER )
DeclareDLL	 UBE_CatchVertexShader( iShader.i, *MemoryStart.INTEGER, *MemoryEnd.INTEGER )
DeclareDLL.i UBE_CreateShader( iShader.i, iType.i, sName.s = "" )
DeclareDLL.i UBE_CreateShaderBuffer( iBuffer.i, iSize.i, *Pointer.INTEGER, iPointerOffset.i = #Null, bDynamic.i = #True )
DeclareDLL   UBE_FreeShader( iShader.i )
DeclareDLL   UBE_FreeShaderBuffer( iBuffer.i )
DeclareDLL.i UBE_GetShaderBufferOffset( iBuffer.i )
DeclareDLL.i UBE_GetShaderBufferPointer( iBuffer.i )
DeclareDLL.i UBE_GetShaderUniformPointer( iShader.i, iIndex.i )
DeclareDLL.i UBE_GetShaderUniformPointerOffset( iShader.i, iIndex.i )
DeclareDLL.i UBE_IsShader( iShader.i )
DeclareDLL	 UBE_LinkShader( iShader.i )
DeclareDLL.i UBE_LoadFragmentShader( iShader.i, File.s )
DeclareDLL	 UBE_LoadVertexShader( iShader.i, File.s )
DeclareDLL.i UBE_MaxShaderBuffer()
DeclareDLL	 UBE_SetShaderBufferLocation( iShader.i, iBuffer, sName.s )
DeclareDLL	 UBE_SetShaderBufferOffset( iBuffer.i, iOffset.i )
DeclareDLL	 UBE_SetShaderBufferPointer( iBuffer.i, *Pointer.INTEGER, iPointerOffset.i = #Null )
DeclareDLL.i UBE_SetShaderUniformLocation( iShader.i, iUniformType.i, sName.s, iIndex.i, *Pointer.INTEGER = #Null, iPointerOffset.i = #Null, iSize.i = 1 )
DeclareDLL.i UBE_SetShaderUniformPointer( iShader.i, iIndex.i, *Pointer.INTEGER, iPointerOffset.i = #Null, iSize.i = 1 )
DeclareDLL.i UBE_Shader( sName.s )
DeclareDLL.i UBE_ShaderID( iShader.i )
DeclareDLL	 UBE_UpdateShaderBuffer( iBuffer.i )

;- Materials
Declare.i		 UBE_CreateMaterialListEntry( *iMaterial.INTEGER, sName.s )
DeclareDLL.i UBE_CopyMaterial( iSourceMaterial.i, iDestinationMaterial.i )
DeclareDLL.i UBE_CreateMaterial( iMaterial.i, iTexture.i = 0, iDefaultShader.i = #UBE_SHADER_3D_NONE, sName.s = "" )
DeclareDLL   UBE_FreeMaterial( iMaterial.i )
DeclareDLL.i UBE_GetMaterialColor( iMaterial.i )
DeclareDLL.f UBE_GetMaterialHardness( iMaterial.i )
DeclareDLL.f UBE_GetMaterialReflection( iMaterial.i )
DeclareDLL.i UBE_GetMaterialShader( iMaterial.i )
DeclareDLL.f UBE_GetMaterialShine( iMaterial.i )
DeclareDLL.i UBE_GetMaterialShineColor( iMaterial.i )
DeclareDLL.i UBE_GetMaterialTexture( iMaterial.i, iIndex.i )
DeclareDLL.i UBE_IsMaterial( iMaterial.i )
DeclareDLL.i UBE_LoadMaterialDefinition( iMaterial.i, *Definition.UBE_DEFINITION, sName.s="" )
DeclareDLL	 UBE_LoadAllMaterials( *Pointer.INTEGER = #Null )
DeclareDLL.i UBE_Material( sName.s )
DeclareDLL.i UBE_MaterialID( iMaterial.i )
DeclareDLL.i UBE_NumberOfMaterialDefinitions()
DeclareDLL	 UBE_SetMaterialBlendingMode( iMaterial.i, lOutputMode.l = #UBE_BLENDMODE_SRC_ALPHA, lTargetMode.l = #UBE_BLENDMODE_ONE_MINUS_SRC_ALPHA )
DeclareDLL	 UBE_SetMaterialColor( iMaterial.i, iColor.i = $FFFFFFFF )
DeclareDLL	 UBE_SetMaterialHardness( iMaterial.i, fHardness.f = 1.0 )
DeclareDLL	 UBE_SetMaterialReflection( iMaterial.i, fReflection.f = 1.0 )
DeclareDLL 	 UBE_SetMaterialSurfaceScattering( iMaterial.i, fSurfaceScattering.f = 0.0 )
DeclareDLL	 UBE_SetMaterialDefaultShader( iMaterial.i, iDefaultShader.i = #UBE_SHADER_3D_NONE )
DeclareDLL	 UBE_SetMaterialShader( iMaterial.i, iShader.i )
DeclareDLL	 UBE_SetMaterialShine( iMaterial.i, fShine.f = 1.0 )
DeclareDLL	 UBE_SetMaterialShineColor( iMaterial.i, iColor.i = $FFFFFFFF )
DeclareDLL	 UBE_SetMaterialTexture( iMaterial.i, iIndex.i, iTexture.i = 0 )
DeclareDLL	 UBE_SetMaterialValue( iMaterial.i, iIndex.i, fValue.f = 0 )


;- Sprites
Declare.i 	 UBE_UpdateSpriteMatrix( *Sprite.UBE_SPRITE )
DeclareDLL   UBE_ClipSprite( iSprite.i, X.f, Y.f, fWidth.f, fHeight.f )
DeclareDLL   UBE_ClipSpriteInPixel( iSprite.i, X.i, Y.i, iWidth.i, iHeight.i )
DeclareDLL.i UBE_CreateSprite( iSprite.i, iMaterial.i, iMode.i = #UBE_SPRITE_ALIGNMENTPOINT_CENTER, bTextureObject.i = #False )
DeclareDLL   UBE_DisplaySprite( iSprite.i, X.f, Y.f )
DeclareDLL   UBE_FreeSprite( iSprite.i )
DeclareDLL.f UBE_GetSpriteDepth( iSprite.i )
DeclareDLL.i UBE_GetSpriteMaterial( iSprite.i )
DeclareDLL.f UBE_GetSpriteHeight( iSprite.i )
DeclareDLL.f UBE_GetSpriteRotation( iSprite.i )
DeclareDLL.f UBE_GetSpriteWidth( iSprite.i )
DeclareDLL.i UBE_IsSprite( iSprite.i )
DeclareDLL	 UBE_SetSpriteDepth( iSprite.i, fDepth.f = 0.0 )
DeclareDLL	 UBE_SetSpriteMaterial( iSprite.i, iMaterial.i )
DeclareDLL   UBE_SetSpriteRotation( iSprite.i, fRotation.f, iMode.i = #UBE_ABSOLUTE )
DeclareDLL.f UBE_SpriteHeight( iSprite.i )
DeclareDLL.i UBE_SpriteID( iSprite.i )
DeclareDLL.f UBE_SpriteWidth( iSprite.i )
DeclareDLL 	 UBE_TransformSprite( iSprite.i, X1.f, Y1.f, X2.f, Y2.f, X3.f, Y3.f, X4.f, Y4.f )
DeclareDLL   UBE_ZoomSprite( iSprite.i, fWidth.f, fHeight.f )

;- Mesh
Declare.i		 UBE_CreateMeshListEntry( *iMesh.INTEGER, sName.s )
DeclareDLL	 UBE_AddMeshData( iMesh.i, iSourceMesh.i, X.f, Y.f, Z.f, RX.f = 0.0,  RY.f = 0.0,  RZ.f = 0.0, SX.f = 1.0, SY.f = 1.0, SZ.f = 1.0 )
DeclareDLL.i UBE_CalculateMeshTangents( iMesh.i )
DeclareDLL.i UBE_CreateMesh( iMesh.i, sName.s = "" )
DeclareDLL.i UBE_CreatePlaneMesh( iMesh.i, fSize.f = 1.0, sName.s = "" )
DeclareDLL	 UBE_FinishMesh( iMesh.i )
DeclareDLL   UBE_FreeMesh( iMesh.i )
DeclareDLL.i UBE_GetMeshFaceCount( iMesh.i )
DeclareDLL.i UBE_GetMeshIndicesCount( iMesh.i )
DeclareDLL.i UBE_GetMeshNormal( iMesh.i, iIndex.i )
DeclareDLL.i UBE_GetMeshTexCoord( iMesh.i, iIndex.i )
DeclareDLL.i UBE_GetMeshVector( iMesh.i, iIndex.i )
DeclareDLL.i UBE_GetMeshVertexCount( iMesh.i )
DeclareDLL.i UBE_IsMesh( iMesh.i )
DeclareDLL.i UBE_LoadMesh( iMesh.i, sFile.s, sName.s = "", bInvertVertices.i = #False )
DeclareDLL.i UBE_LoadOBJMesh( iMesh.i, sFile.s, sName.s = "" )
DeclareDLL.i UBE_Mesh( sName.s )
DeclareDLL.i UBE_MeshID( iMesh.i )
DeclareDLL	 UBE_SaveMesh( iMesh.i, sFile.s, sName.s = "" )
DeclareDLL	 UBE_SetMeshFace( iMesh.i, iIndex.i, Vertex1.i, Vertex2.i, Vertex3.i )
DeclareDLL.i UBE_SetMeshFaceCount( iMesh.i, iFaceCount.i )
DeclareDLL.i UBE_SetMeshIndicesCount( iMesh.i, iIndicesCount.i )
DeclareDLL   UBE_SetMeshNormals( iMesh.i, iIndex.i, X.f, Y.f, Z.f )
DeclareDLL   UBE_SetMeshTexCoord( iMesh.i, iIndex.i, U.f, V.f )
DeclareDLL   UBE_SetMeshVertex( iMesh.i, iIndex.i, X.f, Y.f, Z.f, W.f = 1.0 )
DeclareDLL.i UBE_SetMeshVertexCount( iMesh.i, iVertexCount.i )
DeclareDLL	 UBE_UpdateMesh( iMesh.i )

;- Objects
Declare.i    UBE_CreateObjectListEntry( *iObject.INTEGER, sName.s )
Declare.i    UBE_UpdateObjectMatrix( *Object.UBE_OBJECT )
Declare.i    UBE_MultiplyParentObjectMatrix(*m4fTarget.UBE_MATRIX4f, *pObject.UBE_OBJECT)
DeclareDLL.i UBE_CreateObject( iObject.i, iMesh.i, iMaterial.i, sName.s = "" )
DeclareDLL   UBE_FreeObject( iObject.i )
DeclareDLL.i UBE_GetObjectPosition( iObject.i )
DeclareDLL.f UBE_GetObjectPositionX( iObject.i )
DeclareDLL.f UBE_GetObjectPositionY( iObject.i )
DeclareDLL.f UBE_GetObjectPositionZ( iObject.i )
DeclareDLL.f UBE_GetObjectRotationX( iObject.i )
DeclareDLL.f UBE_GetObjectRotationY( iObject.i )
DeclareDLL.f UBE_GetObjectRotationZ( iObject.i )
DeclareDLL.f UBE_GetObjectScalingX( iObject.i )
DeclareDLL.f UBE_GetObjectScalingY( iObject.i )
DeclareDLL.f UBE_GetObjectScalingZ( iObject.i )
DeclareDLL.i UBE_GetObjectState( iObject.i )
DeclareDLL.i UBE_IsObject( iObject.i )
DeclareDLL   UBE_MoveObject( iObject.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL.i UBE_Object( sName.s )
DeclareDLL.i UBE_ObjectID( iObject.i )
DeclareDLL   UBE_RotateObject( iObject.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL   UBE_ScaleObject( iObject.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE )
DeclareDLL   UBE_SetObjectMaterial( iObject.i, iMaterial.i )
DeclareDLL   UBE_SetObjectMesh( iObject.i, iMesh.i )
DeclareDLL   UBE_SetObjectPosition( iObject.i, *v4fPosition.UBE_VECTOR4f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL   UBE_SetObjectShadow( iObject.i, bEnable.i = #True )
DeclareDLL   UBE_SetObjectState( iObject.i, bEnable.i = #True )

;- Scene
Declare.i		 UBE_AddShaderToRenderTree( iBranch.i, *pShader.UBE_SHADER )
Declare.i	   UBE_AddMaterialToRenderTree( *pMaterial.UBE_MATERIAL )
Declare.i		 UBE_AddObjectToRenderTree( *pObject.UBE_OBJECT )
Declare.i		 UBE_DeleteShaderFromRenderTree( *pShader.UBE_SHADER )
Declare.i		 UBE_DeleteMaterialFromRenderTree( *pMaterial.UBE_MATERIAL )
Declare.i		 UBE_DeleteObjectFromRenderTree( *pObject.UBE_OBJECT )
Declare.i		 UBE_ResetObjectListFromRenderTree( *pMaterial.UBE_MATERIAL )
Declare.i		 UBE_NextObjectListFromRenderTree( *pMaterial.UBE_MATERIAL )
DeclareDLL.i UBE_GetGlowStatus()
DeclareDLL.f UBE_GetGlowSize()
DeclareDLL	 UBE_RenderScene()
DeclareDLL 	 UBE_SetGlowStatus( bStatus.i = #UBE_ON )
DeclareDLL 	 UBE_SetGlowSize( fSize.f = 2.5 )



;- Physics









;| Declares: Font |;
Declare		 	 UBE_Font_Create( Font.i, *CharacterSet.UBE_FONTCHARACTERSET = #Null )
Declare.i 	 UBE_Font_KerningAmount( *Font.UBE_FONT, CharacterPair.q )
Declare.i 	 UBE_Font_Frame( *Font.UBE_FONT, *Character.UBE_CHARACTERARRAY, Size.f, *Width.FLOAT = #Null, *Height.FLOAT = #Null )
Declare			 UBE_Font_AddKerningPair( *Font.UBE_FONT, LeftCharacter.c, RightCharacter.c, Amount.i )
Declare.i		 UBE_Font_Catch_TF( *Font.UBE_FONT, *Memory.UBE_FONTCHUNK )
Declare		 	 UBE_Font_TransformVertices( *Font.UBE_FONT, *Vertices.UBE_FONTVERTICES )
Declare 		 UBE_Font_BendVertices( *Font.UBE_FONT, *Vertices.UBE_FONTVERTICES, X.f, Y.f )
DeclareDLL.i UBE_FontID( Font.i )
DeclareDLL.i UBE_IsFont( Font.i )
DeclareDLL.i UBE_FreeFont( Font.i )
DeclareDLL.i UBE_CopyFont( SourceFont.i, Font.i )
DeclareDLL.i UBE_CatchFont( Font.i, *Memory, Path.s = "" )
DeclareDLL.i UBE_LoadFont( Font.i, FileName.s )
DeclareDLL	 UBE_FontReset( Font.i )
DeclareDLL	 UBE_FontWordWrap( Font.i, Width.f = 0.0 )
DeclareDLL	 UBE_FontColor( Font.i, Color.i )
DeclareDLL	 UBE_FontSpace( Font.i, LetterSpace.f = #UBE_IGNORE, WordSpace.f = #UBE_IGNORE )
DeclareDLL	 UBE_FontSize( Font.i, Size.f, Mode.i = #UBE_RELATIVE )
DeclareDLL	 UBE_FontRotation( Font.i, Roll.f, Yaw.f = 0.0, Pitch.f = 0.0 )
DeclareDLL	 UBE_FontBendRadius( Font.i, BendRadius.f )
DeclareDLL	 UBE_FontItalic( Font.i, Italic.f )
DeclareDLL	 UBE_FontAlign( Font.i, AlignH.f, AlignV.f = #UBE_DEFAULT )
DeclareDLL	 UBE_FontOrigin( Font.i, X.f = 0, Y.f = 0, Z.f = #UBE_FONT_TRANSLATIONZ )
DeclareDLL	 UBE_FontKerning( Font.i, State.i )
DeclareDLL	 UBE_FontDimension( Font.i, *Character.UBE_CHARACTERARRAY, *Width.FLOAT = #Null, *Height.FLOAT = #Null, Size.f = #UBE_IGNORE )
DeclareDLL.f UBE_FontWidth( Font.i, Text.s, Size.f = #UBE_IGNORE )
DeclareDLL.f UBE_FontHeight( Font.i, Text.s, Size.f = #UBE_IGNORE )
DeclareDLL   UBE_DisplayFont( Font.i, X.f, Y.f, Text.s, Color.i = #UBE_IGNORE, Size.f = #UBE_IGNORE, Italic.f = #UBE_IGNORE )


;- Particles
Declare.i     UBE_UpdateParticleEmitterMatrix( *ParticleEmitter.UBE_PARTICLE_EMITTER )
DeclareDLL.i UBE_CountParticles( iParticleEmitter.i = #UBE_ALL )
DeclareDLL.i UBE_CreateParticleEmitter( iParticleEmitter.i, iMaterial.i, iMaxParticles = 256 )
DeclareDLL   UBE_DisplayParticles()
DeclareDLL   UBE_ExamineParticleEmitters()
DeclareDLL   UBE_FreeParticleEmitter( iParticleEmitter.i )
DeclareDLL.i UBE_GetParticleEmitterMaterial( ParticleEmitter.i )
DeclareDLL.i UBE_LoadParticleEmitter( iParticleEmitter.i, sFile.s, iMaxParticles = 256 )
DeclareDLL   UBE_MoveParticleEmitter( ParticleEmitter.i, X.f, Y.f, Z.f, Mode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL.i UBE_ParticleEmitterDefinition( iParticleEmitter.i, *Definition.UBE_DEFINITION, Path.s = "" )
DeclareDLL.i UBE_ParticleEmitterID( iParticleEmitter.i )
DeclareDLL   UBE_RotateParticleEmitter( iParticleEmitter.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL	 UBE_SetParticleEmitterStatus( ParticleEmitter.i, bEnable.i = #True )


;- Sounds
Declare.i    UBE_CreateSoundListEntry( *iSound.INTEGER, sName.s )
Declare.i    UBE_CreateSound( iSound.i, sName.s, iSource.i, iMode.i = #UBE_SOUND_DEFAULT )
Declare      UBE_UpdateSoundMatrix( *Sound.UBE_SOUND )
DeclareDLL.i UBE_CatchSound( iSound.i, *Memory, iLength.i, iMode.i = #UBE_SOUND_DEFAULT, sName.s = "" )
DeclareDLL.i UBE_ExamineSounds()
DeclareDLL   UBE_FreeSound( iSound.i )
DeclareDLL.f UBE_GetSoundPosition( iSound.i )
DeclareDLL.i UBE_IsSound( iSound.i )
DeclareDLL.i UBE_LoadSound( iSound.i, sName.s)
DeclareDLL.i UBE_LoadSoundDefinition( iSound.i, *Definition.UBE_DEFINITION, sPath.s="" )
DeclareDLL.i UBE_LoadSoundFile( iSound.i, sFile.s, iMode.i = #UBE_SOUND_DEFAULT, sName.s = "" )
DeclareDLL   UBE_MoveSound( iSound.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL.i UBE_PlaySound( iSound.i, iMode.i = #UBE_IGNORE )
DeclareDLL   UBE_RotateSound( iSound.i, X.f, Y.f, Z.f, iMode.i = #UBE_ABSOLUTE|#UBE_PARENT )
DeclareDLL   UBE_SetSoundPosition( iSound.i, fPosition.f )
DeclareDLL   UBE_SoundCone( iSound.i, fMin.f, fMax.f )
DeclareDLL   UBE_SoundDirection( iSound.i, X.f, Y.f, Z.f )
DeclareDLL   UBE_SoundFrequency( iSound.i, fFrequency.f )
DeclareDLL.i UBE_SoundID( iSound.i )
DeclareDLL.f UBE_SoundLength( iSound.i )
DeclareDLL   UBE_SoundRange( iSound.i, fMin.f, fMax.f )
DeclareDLL   UBE_SoundVolume( iSound.i, fVolume.f )
DeclareDLL   UBE_StopSound( iSound.i )
Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
User avatar
Samuel
Enthusiast
Enthusiast
Posts: 755
Joined: Sun Jul 29, 2012 10:33 pm
Location: United States

Re: UnionBytes Engine

Post by Samuel »

Very nice screenshots and a nice list of commands as well. :D
Keep up the good work.

EDIT:
Does anyone think this topic should be moved to the Applications or Announcement section.
I mean it is 3D related, but I'm not sure if this is the proper place for it. The MP3D engine is in Applications Feedback and Discussion and I wonder if this one should be too.
Just my two cents.
applePi
Addict
Addict
Posts: 1404
Joined: Sun Jun 25, 2006 7:28 pm

Re: UnionBytes Engine

Post by applePi »

i agree nice pictures
my opinion is that MP3D engine and UnionBytes Engine and the glfw wrapper by luis should be fixed at the top of the either 3D section or Applications section or inside a sub folder at the top of the 3D section can be seen by everyone with a title such as Other 3D engines. because they are a proof of the power of the purebasic since they are developed by it and can spread more the usage of the purebasic even if they turn commercial since they can't be used but inside the purebasic. also this can attract more and more the users to the 3D kingdom . and of course the Ogre engine remains with its respected value as the intuitive 3D engine. so the users have a broad spectrum with choices using what is suitable for a specific task.
Artus
Enthusiast
Enthusiast
Posts: 104
Joined: Wed Feb 25, 2009 10:29 pm
Location: Germany
Contact:

Re: UnionBytes Engine

Post by Artus »

Hio,
@ ApplePi and Samuel: Thanks

I implemented the basics for ShadowMaps and wrote a ModelViewer, to see how the Models look in the UBE Engine and to see the Texturing Mistakes better.
It’s all still on the start, but I am happy to have the basic for ShadowMaps. And now I’m really happy to have deferred shading, it makes the things with Shadows much easier.

Screenshots (Click to enlarge):
Image

Edit: Link is now ok!

Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
Post Reply