madswint
Topic Author
Posts: 3
Joined: 23 Mar 2026, 15:00

Boot-up time

19 May 2026, 19:32

Hi, I'm running a custom engine trying out Noesis for some time now and I'm more or less convinced to go with it.
However with no hot reload in my engine, I have to restart semi-often when developing. This was never an issue as I've been decent at keeping it somewhat optimised, but with Noesis it adds 10+ seconds to boot up, which on paper sounds ridiculous to complain about, but it's really adding up. I disabled the inspector listener thinking that'd do it, but no difference.
Is this normal for Noesis or is it purely on my end?

And on another note, I read the post asking about a Linux Inspector and the reply saying mid-late this year. Is this when work will start or can one expect a linux version this year? If not, are there any timeframe for this?

Thanks in advance, great product.
 
User avatar
jsantos
Site Admin
Posts: 4829
Joined: 20 Jan 2012, 17:18
Contact:

Re: Boot-up time

19 May 2026, 20:56

The Noesis boot-up takes 10 seconds? That’s totally unexpected, and something is definitely wrong.

Are you seeing the same behavior in our samples?

Regarding the inspector for Unity, our current priorities are Noesis 4.0 and Studio. After that, we can start organizing the next set of priorities.
 
madswint
Topic Author
Posts: 3
Joined: 23 Mar 2026, 15:00

Re: Boot-up time

19 May 2026, 21:07

No, will try tinkering a little again

Sorry I messed up the naming, I meant Noesis Studio not the inspector - right now I see it only as a .exe
 
madswint
Topic Author
Posts: 3
Joined: 23 Mar 2026, 15:00

Re: Boot-up time

19 May 2026, 21:35

Hmm regarding the boot time, when not querying the inspector, last log from me is

[WARNING] [NOESIS] [TRIAL] No license detected. Noesis views will stop rendering after 10 minutes
[WARNING] [NOESIS] [TRIAL] More info at https://noesisengine.com/trial

Is it normal with the trial then? Does it hang for a few sec by design?

Edit: For some reason not providing a font fixes this but obviously wont show any readable text then. Not sure the about the correlation
Edit2: Ok spent some hours on this and I have no clue how to go about it. I'm currently loading my font with:
...
  static void SetupFonts()
    {
        const char* fonts[] = {"GeistMono Nerd Font"};
        GUI::SetFontFallbacks(fonts, 1);
        GUI::SetFontDefaultProperties(15.0f, FontWeight_Normal, FontStretch_Normal, FontStyle_Normal);
    }
    
    ...
class LocalFontProvider : public Noesis::CachedFontProvider
{
public:
    LocalFontProvider(const char* rootPath) : mRoot(rootPath) {}

protected:
    void ScanFolder(const Noesis::Uri& folder) override
    {
        RegisterFont(folder, "GeistMonoNerdFont-Black.otf");
    }

    Noesis::Ptr<Noesis::Stream> OpenFont(const Noesis::Uri& folder, const char* filename) const override
    {
        Noesis::FixedString<512> path;
        folder.GetPath(path);
        std::string fullPath = mRoot + "/" + path.Str() + "/" + filename;
        return Noesis::OpenFileStream(fullPath.c_str());
    }

private:
    std::string mRoot;
};
And I've zeroed it to definitely be caused by this. If it finds a font it takes a long time, if no font is found I'm instantly loading again. Any advice on why this is causing such long load times for a font?

Edit 3: Morning after I fixed it, if anyone gets stuck at the same I did a silly mistake by not reading the header files thoroughly enough.. I set my font provider
        GUI::SetFontProvider(MakePtr<LocalFontProvider>("res/fonts/"));
but the fonts fallback was given
const char* fonts[] = {"GeistMono Nerd Font"};
        GUI::SetFontFallbacks(fonts, 1);
This caused it to search through my system for fonts and it eventually does locate it, but obviously takes a long time.
Just had to add (which I thought I already tried..)
const char* fonts[] = {"/#GeistMono Nerd Font"};
It's stated at the method in IntegrationAPI.h, but perhaps it could be more explicit for junior devs using noesis. I assume both 'Tahoma' and 'Verdana' would be scanned wrong here like I did though?
/// Sets the family names to be used by the global font fallback mechanism. These fonts are used
/// whenever the FontFamily of an element does not contain needed glyphs. Fallback sequence can
/// specify font locations, for example { "./Fonts/#Pericles Light", "Tahoma", "Verdana" }
NS_GUI_CORE_API void SetFontFallbacks(const char** familyNames, uint32_t numFamilies);
 
User avatar
jsantos
Site Admin
Posts: 4829
Joined: 20 Jan 2012, 17:18
Contact:

Re: Boot-up time

22 May 2026, 19:27

Thanks for the feedback and for taking the time to investigate this.

Any font URI that does not contain a “#” prefix or does not include a directory is considered a system font:
  • Tahoma => System font
  • #Tahoma => System font
  • ./#Tahoma => Local font
I know this is a bit obscure, but we decided to inherit this from WPF for backward compatibility.

On Linux, we currently scan system fonts the first time a font is requested. This is not efficient and should be improved.

Please create a ticket for this.

Who is online

Users browsing this forum: No registered users and 10 guests