UnionBytes Engine
Re: UnionBytes Engine
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
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
Re: UnionBytes Engine
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
Re: UnionBytes Engine
Prefixes are almost a necessity for a flat API IMO. I use them as well in my sgl lib (sgl_funcname).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
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
A little PureBasic review
Re: UnionBytes Engine
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
Re: UnionBytes Engine
smooth (core i5, HD graphic 4600, 8GB ram)

Re: UnionBytes Engine
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.
Keep up the good work.
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.

Keep up the good work.
Re: UnionBytes Engine
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
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
SMsF town: http://www.youtube.com/watch?v=g6RRKYf_Pd0
SMf locations module (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI
Re: UnionBytes Engine
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
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.

Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
Re: UnionBytes Engine
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:


Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
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:


Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
Re: UnionBytes Engine
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
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

"Have you tried turning it off and on again ?"
A little PureBasic review
A little PureBasic review
Re: UnionBytes Engine
@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.
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.
Re: UnionBytes Engine
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:



Commands:
Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
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:



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 )
UnionBytes http://www.unionbytes.de/ (German)
Arthur
Re: UnionBytes Engine
Very nice screenshots and a nice list of commands as well.
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.

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.
Re: UnionBytes Engine
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.
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.
Re: UnionBytes Engine
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):

Edit: Link is now ok!
Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur
@ 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):

Edit: Link is now ok!
Greetings from Germany
UnionBytes http://www.unionbytes.de/ (German)
Arthur