Page 1 of 1

Let's rip Skylicht

Posted: Fri Apr 09, 2021 5:09 pm
by chronologicaldot
Browsing through Github, I discovered a 3D engine called Skylicht, which is built on top of Irrlicht but adds a number of new features.
https://github.com/skylicht-lab/skylicht-engine

It supports Android and HTML5 and even OpenGL4 and DirectX11, but it ditched support for Linux, OpenGL2, and other things.
A number of things have been removed from the Irrlicht code, including the GUI engine. It uses IMGUI, reminding me of GrafZahl's bindings ( http://irrlicht.sourceforge.net/forum/v ... =6&t=50986 ).

The Skylicht part of the code is very weird. Aside from the yucky use of #pragma once and dependency of CMake, the structure of Skylicht can be a bit confusing. For example, the 3D scene structure is dependent on Entity rather than ISceneNode, and thus I'll admit it's tricky to port things back.
(Edit: I found the implementations of the functions in Skylicht.h. Turns out I had a bad copy of Skylicht.cpp. Bad download I guess.)

That said, there's a bit of code in there we could probably port back to Irrlicht. Since Skylicht was created only a couple years ago (2019), the codebase shouldn't be too alien to our current one. (And it's still Irrlicht 1.9, hahahahaha)
There are things like Collada mesh import that includes animation. I don't recall Irrlicht having that for Collada, so it'd be nice to have.
There's also an audio engine, which would be nice to make optional in Irrlicht, though notably it uses standard library mutex etc.

The code isn't written in conventional irr style (it uses m_variablename instead of VariableName), so that could be changed.
The codebase uses the C++ standard library regularly (e.g. using for(MyType t : collection) { ... } ), so we'd have to remove those dependencies on porting.
Finally, there is a propensity of the engine's creator to use monads and global variables. e.g. in the audio library.

All that said, I think there are odds and ends we could hack out of it or use as inspiration for our code. The codebase is MIT licensed, so we shouldn't run into any licensing issues.

Re: Let's rip Skylicht

Posted: Sat Apr 10, 2021 7:53 am
by AReichl
- Nice thing about it, it compiles "out of the box" ( after many years i still cannot compile Irrlicht-BaW ).

- '#pragma once' is ok. Most / all compilers should support it by now.
The recommended way is '#pragma once' AND include guard:

#pragma once
#ifndef BLABLA
#define BLABLA
...
#endif

- C++ standard library: no reason anymore not to use it.
Speed? - bah! Readability is more important.

Re: Let's rip Skylicht

Posted: Sun Dec 12, 2021 7:54 am
by amziraro
Definitely want to see that Collada mesh importer with animations in main Irrlicht, especially since I don't think there's a way to export .b3d from modern Blender anymore. I might take a look at pilfering that, unfortunately I don't really know anything about how Irrlicht does model import so I'm not hopeful.

Re: Let's rip Skylicht

Posted: Thu Apr 13, 2023 2:56 am
by ethindp
Please don't switch the GUI system to use IMGUI. That'll just make implementing any kind of accessibility for individuals with disabilities like me impossible. From what I've seen, most of the easily-embeddable UI systems like IMGUI, Nuklear, etc., don't even have mechanisms for detecting the basic events such as focus acquired or lost, making implementing even basic accessibility impossible without drowning yourself in its inner workings first.