Irrlicht 2.0 - What's in store for the future!

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.
CuteAlien
Admin
Posts: 9634
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by CuteAlien »

Depends on how it has to be shipped. Irrlicht's zlib license must also accompany the sources. So having a license file beside a bmp file might be fine (this bmp is not in media but in source - so most people never copy it). And when the bmp is in source format we can add the license to that source itself. So as long as it doesn't need attribution (in credits of game etc - like the jpg stuff) that should be fine.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
hendu
Posts: 2600
Joined: Sat Dec 18, 2010 12:53 pm

Re: Irrlicht 2.0 - What's in store for the future!

Post by hendu »

With the binary.
CuteAlien
Admin
Posts: 9634
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by CuteAlien »

Hmpf. Guess I better start learning to draw fonts then?
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
ent1ty
Competition winner
Posts: 1106
Joined: Sun Nov 08, 2009 11:09 am

Re: Irrlicht 2.0 - What's in store for the future!

Post by ent1ty »

I found a 14pt TTF font that you should be to use, the WTFPL license is quite permitting :)

Oh and don't tell me that WTFPL is not recognised in Germany and you can't use it or some-such :D


edit: lol phpBB doesn't have strike-through text by default
Last edited by ent1ty on Thu Apr 30, 2015 3:57 pm, edited 2 times in total.
irrRenderer 1.0
Height2Normal v. 2.1 - convert height maps to normal maps

Step back! I have a void pointer, and I'm not afraid to use it!
CuteAlien
Admin
Posts: 9634
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by CuteAlien »

ent1ty: Thanks, I just assume it's fine ^^
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
CuteAlien
Admin
Posts: 9634
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by CuteAlien »

Ah - the kind of things you notice when you try to change something. The font is additionally used as a kind of spritebank for certain icons.
When will I learn there's nothing ever easy to change in software :-/
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Foaly
Posts: 142
Joined: Tue Apr 15, 2014 8:45 am
Location: Germany

Motion trail effect

Post by Foaly »

(I write this here, because I'm not sure whether this is worth it's own thread.)

Irrlicht itself already has some simple effects, like the particles and simple water.
What I think, Irrlicht still needs, is a simple way to create motion trail effects. (And other chained billboard effects, like lightnings)
This kind of effect need very few cpu power, so you can have hundreds of motion trails in your scene without affecting the framerate (of course if you use a fancy shader on them, it will run slower).
If the developers agree, I will write that for you (I have done a similar thing with C# already here.

I will completely rewrite it then, with these features:
*Facing types: -towards camera (e.g. lightning, fire trail) -towards camera with a locked axis -custom facing direction per segment (e.g. sword motion trail)
*Length types: -time based(e.g. lightning) -maximum length based (e.g. a ribbon)
*Fade types: -shrink towards end -clamp end to maximum length
*Interpolation types (for texture coords / vertex colors): -linear -quadratic -root -smoothstep(sine) -custom
*Generated texture coords
*Vertex colors (center/outer, tip/end)
*Optional center vertex (2 or 3 verts per segment)
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by christianclavet »

Hi, Foaly.

If this doesnt go directly in Irrlicht it could go in IRRext (Irrlich extensions)
Foaly
Posts: 142
Joined: Tue Apr 15, 2014 8:45 am
Location: Germany

Re: Irrlicht 2.0 - What's in store for the future!

Post by Foaly »

christianclavet wrote:If this doesnt go directly in Irrlicht it could go in IRRext (Irrlich extensions)
It could of course.
But in my opinion that kind of effect is just very basic and should be included in Irrlicht itself.
I also want this to be available to the Lime(the .Net-wrapper) users, which would not be possible with an external library. (Lime does only wrap the main irrlicht and doesn't add features.)
Though wrapping IRRext for C# would be nice, it is pretty hard, because of the way Lime is written.
CuteAlien
Admin
Posts: 9634
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by CuteAlien »

I guess the effect might be useful. It's pretty much the same for all patches. If it's useful and easy to apply it has a good chance to get in. So:
- Must work.
- Add a test to show it works (I sometimes write those myself when I find time, but thatoften takes weeks/months/years until I get to it)
- Use Irrlicht coding style
- Doesn't change unnecessary stuff (like doing code-cleanups in a feature-patch)

Maybe describe first how you plan to implement that - then you can get feedback from others.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Foaly
Posts: 142
Joined: Tue Apr 15, 2014 8:45 am
Location: Germany

MotionTrailSceneNode

Post by Foaly »

CuteAlien wrote:Add a test to show it works (I sometimes write those myself when I find time, but thatoften takes weeks/months/years until I get to it)
A real test or an example?

CuteAlien wrote:Maybe describe first how you plan to implement that - then you can get feedback from others.
The Motion trail will be a linked chain of billboards, where each of them can only rotate around a certain axis. The segment count will have a maximum value (no dynamic array).
Wireframe example: Left image shows usual behavior, right image is with enabled shrinking towards the end.
The green dots are the user specified segments, the rest is calculated based on settings like width. Note that the mesh ends before the last segment, because it takes the maximum length in account.
Image

So the IMotionTrailSceneNode interface will look like this:
create: necessary parameters: time/length based, face direction (camera (+locked) / custom), relative/global coordinates, segment count
addSegment: segmentPosition, currentTime (if time based, will log warning if missing), custom facing direction (if enabled, will log warning if missing)
This method will be called every frame for a usual motion trail, for adding the current position of the object it belongs to. Either the newest or oldest segment will be removed (The oldest when it gets too long.)
setSegment: like addSegment, but it doesn't take care of the maximum length and doesn't alter the other segments. Useful for non-motion trail stuff like lightnings, where every segment changes position every frame.
animate: fades out segments, based on time (only for time based trails)
render: builds the mesh (if necessary, uses caching if possible, e.g. for custom normals or locked axis) and renders
getBoundingBox: builds the bounding box (if necessary, caching is used in every case, since it doesn't matter, in which direction the billboards face.
(getter and setter methods): for all the appearance settings like thickness, vertex color, fade options

Implementation detail
Uses 3 fixed size arrays (1 for segment center, 1 for segment time, 1 for custom segment direction). Only the arrays which are needed will be allocated.
In order to keeping them fast, they will be used as if they where cyclic.

Animators
The interface will provide some static methods which will set up a motion trail scene node for doing a certain task.
createTrail(ISceneNode attach, vector3df offset, ...): Allows the user to attach a trail directly to a scene node. Works by creating a special scene node animator and adding it.
createShortLightning(vector3df start, vector3df end, uint lifetime, ...): Creates a lightning which appears for a short time and fades out. Deletes itself after that using a delete animator
createLightning(vector3df start, vector3df end, ...): Creates a lightning which stays and 'flickers', so it changes every frame.
Other pre-made effects are possible and it will also be easy to code them for users of Irrlicht with just a few lines.
CuteAlien
Admin
Posts: 9634
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by CuteAlien »

Example that shows that it works is fine. You can't use the current billboard class for this, but I guess you didn't mean to. Be careful with naming - 'create' has a special meaning in Irrlich. Functions starting with 'create' will create an object which has be de-allocated with drop(). Use some other words (make, set, add,... check what other classes do use) if you don't mean that.

Using arrays as wif they were cyclic - I guess you mean as ringbuffer? Makes sense here. Didn't read in detail - but on first view sounds OK. Thought would be worth own topic - maybe I'll move this in an own thread in the evening :-)
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Foaly
Posts: 142
Joined: Tue Apr 15, 2014 8:45 am
Location: Germany

Re: Irrlicht 2.0 - What's in store for the future!

Post by Foaly »

CuteAlien wrote:You can't use the current billboard class for this, but I guess you didn't mean to.
Yes, it will have it's own render code.
CuteAlien wrote:Be careful with naming - 'create' has a special meaning in Irrlich. Functions starting with 'create' will create an object which has be de-allocated with drop(). Use some other words (make, set, add,... check what other classes do use) if you don't mean that.
Yeah, I think it should be created using a method like addMotionTrailSceneNode in SceneManager like the other SceneNodes. I just wanted to show, which parameters could go in the constructor.
CuteAlien wrote:Using arrays as wif they were cyclic - I guess you mean as ringbuffer? Makes sense here. Didn't read in detail - but on first view sounds OK. Thought would be worth own topic - maybe I'll move this in an own thread in the evening :-)
Yes, that's what I meant.
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: Irrlicht 2.0 - What's in store for the future!

Post by devsh »

the billboard chain should really be done on GPU with a custom vertex format input and custom vertex format output into a feedback transform buffer using geometry shaders

If you're going to do it on CPU at least use simd vectors
Foaly
Posts: 142
Joined: Tue Apr 15, 2014 8:45 am
Location: Germany

Re: Irrlicht 2.0 - What's in store for the future!

Post by Foaly »

devsh wrote:the billboard chain should really be done on GPU with a custom vertex format input and custom vertex format output into a feedback transform buffer using geometry shaders

If you're going to do it on CPU at least use simd vectors
First of all I'm going to code it for CPU. When that works, I might add GPU support as well. (Is the billboard scene node even using shaders?)

Though this effect isn't heavy. I expect it not to affect the framerate at all.

I'm not sure how to use smid vectors. I will use the regular crossProduct and getLength methods of vector3df. If these don't use optimiztions and the compiler doesn't as well, I won't do it.
Post Reply