Skip to content

Release notes

Sammy Fatnassi edited this page Dec 30, 2023 · 14 revisions

To do

  • Support of additional texture formats
  • Handle Linear/sRGB vertex color format
  • Add logging information to NetImgui Server Application
  • Add new Dear ImGui multi windows support (docking branch)
  • Commands to assign custom backgrounds
  • Add compression to data between Client and Server
  • Support of monitor DPI
  • Add copy/paste support

Version 1.10

(2023/12/30)

  • API Changes
    • ConnectToApp() and ConnectFromApp() functions now accept a callback to be used by the NetImgui Server when wanting to update the font to a specific DPI scale.
      • Can be left untouched, with null used by default.
      • Without a callback, we apply the text scaling to ImGuiIO.FontGlobalScale instead of requesting the generation of a new font with increased pixel size.
      • Using ImGuiIO.FontGlobalScale gives a blurier text result than recreating the font with the exact DPI needed.
      • See SampleFontDPI for more info.
    • SendDataTexture() now support a new texture format kTexFmtCustom.
      • It requires that the dataSize parameter is specified since we can't deduce it anymore (but not used for other formats)
      • It allows user to send a texture command with custom data that also needs to be added to NetImguiServer codebase.
      • This could be used for movie streaming, etc...
      • See SampleTexture for more info.
  • Upgraded Dear ImGui support to 1.90
  • Added monitor DPI support
    • The Server now scale the text up on a high resolution monitor, so it can still be read
    • The Server font atlas is regenerated with a higher pixel size to match the resolution
    • The Client connected will be asked to regenerate their font atlas if they provided a callback when connecting
      • When this callback is received, the client codebase should regenerate the font atlas using the provided scale
      • When no callback has been assigned, the client automatically relies on ImGuiIO.FontGlobalScale when drawing (blurier results)
      • See SampleFontDPI for more info.
  • Added Clipboard support
    • Can now seamlessly use text clipboard between Client and Server!
    • Text copied on the Server PC is now sent over to the NetImgui Clients and can be pasted inside their Dear ImGui content
    • Text copied inside the Client's Dear ImGui content is now received by the Server PC and can be used on it
  • Shared Client configs
    • When adding a Client configuration on the NetImgui Server application, the property Shared can now be specified
    • When enabled, it will save the config in a User Directory instead of the current Working Directory
    • This means that user can have NetImgui Server applications in various locations, but they can all still share the same Client Configs.
    • Note: Requires that the function HAL_GetUserSettingFolder() is implemented in the NetImgui Server codebase. It has been done for Windows.
  • Various small changes and fixes
    • When the NetImgui Server config file netImgui.cfg is detected readonly, now tries to create a second one. This should help if user submit the default config file to perforce but still want to add new Clients.
    • Quickly typed text was dropping characters when received by Client
    • DirectX textures error when quickly recreating them

Version 1.9

(2023/05/04)

  • API Changes
    • None
  • Upgraded Dear ImGui support to 1.89.5
  • Various small changes and fixes

Version 1.8

(2022/07/18)

  • API Changes
    • None
  • Dear ImGui 1.87 input event support
    • Input handling refactored to handle new Dear ImGui input event system (thanks to @lemantisee)
    • Added gamepad support
  • Compatibility tests
    • Now compile simple compatibility app for each Dear ImGui version supported
    • Allows to make sure the NetImgui Server works properly against any Dear ImGui version
  • Other Changes
    • 32bits support bugs fix in client code
    • NetImgui server popup now centered on main window
    • Some OpenGL fixes
    • Visual Studio 2022 LLVM support fix

Version 1.7.5

(2022/01/31)

  • API Changes
    • None
  • Bug fixes
    • NetImgui Server memory leak fix

Version 1.7.4

(2022/01/30)

  • API Changes
    • Removed the bWait parameter from Shutdown()
      • Always wait for Shutdown completion before returning now
      • This prevents multithread data release issues
    • Added a NETIMGUI_API define prefix to functions exported in NetImgui_Api.h
      • Similar to IMGUI_API, allows library user to control dll import/export
      • Takes the same value as IMGUI_API by default
  • Bug fixes
    • Compression feature causing some out of sync issue with NetImgui Server
    • 32bits index support crash

Version 1.7

(2022/01/10)

  • API Changes
    • Added SetCompressionMode(...) / GetCompressionMode(), allow library user to manage the data compression feature
      • By default, Client relies on Server Setting
  • Data Compressions Support
    • Drawing data generated by the Client can now be compressed before being sent to Server
      • Greatly reduce the bandwidth between Client/Server at a negligible cost on the Client
      • Using Delta Compression. The draw data usually vary little from previous frame. Sending only the changed bytes produce great results at low overhead
    • Highly dynamic UI content lower improvements
    • A new sample (SampleCompression) demonstrate the use of data compression and its metrics
      • At 30 Fps, data rate send from client goes from ~ 3400 KB/s to ~ 22 KB/s (~ 160x improvement !)
      • Since it depends on static content, moving around a Window reduce the benefits
  • Other Changes
    • Added OpenGL3 support to NetImgui Server
      • Still DirectX11 by default
      • OpenGL3 support helps with the Server Application port to non Windows OS
      • To enable, set HAL_API_PLATFORM_GLFW_GL3 define to 1 and HAL_API_PLATFORM_WIN32_DX11 to 0
    • Added support for Visual Studio 2021
    • Support up to Dear ImGui 1.86 has been tested

Version 1.6

(2021/08/09)

  • API Changes
    • None
  • Other Changes
    • Mostly some small bug fixes
    • Fixed issue with keyboard input
    • Fixed 16/32bits index handling (NetImgui Server app now handle both case without recompiling)

Version 1.5

(2021/05/30)

  • API Changes
    • None
  • Other Changes
    • Mostly some small bug fixes
    • Reduced NetImgui server CPU/GPU usage
    • Better handling of NetImgui server's window move between 4K and lower resolution monitors

Version 1.4

(2021/03/13)

  • API Changes
    • Added SetBackground(...) letting user configure the client window background appearance
      • The new sample SampleBackground demonstrate its usage.
    • Removed support of empty API functions when NETIMGUI_ENABLED is false
      • Keeps NetImgui client code clutter to minimum.
  • New
    • Auto interception of Dear ImGui ImGui::NewFrame() / ImGui::Render()
      • Using Dear ImGui 1.81's Callbacks support, replacing theses Dear ImGui functions call with NetImgui::NewFrame() / NetImgui::EndFrame() can now be avoided
      • This means less changes to existing codebase wanting to use NetImgui, only requiring a single call to :
        • Startup
        • Shutdown
        • ConnectToApp or ConnectFromApp
      • However, calling directly NetImgui::NewFrame() / NetImgui::EndFrame() has the additional benefit of being able to skip drawing when not needed

Version 1.3

(2021/01/22)

  • API Changes

    • Removed parameter from NetImGui::ConnectToApp() / NetImGui::::ConnectFromApp() to clone the current context. NetImgui now only uses the Dear ImGui Context that was active when requesting a connection, without internally using other contexts.
  • New

    • Complete refactor of the NetImguiServer application.
      • Now relying on Dear ImGui's backend for the renderer and OS support.
      • Other platform's specific functions have all been cleanly abstracted.
      • This means that porting the server application to other platform should be straightforward.
      • Copy/paste from Server to Client support. From Client to Server is still up to the user engine.
    • Complete refactor of the NetImguiServer application UI.
      • Now relying on 'Dear ImGui' docking branch to draw the user interface.
      • Can display multiple connected client's windows at the same time, and they can be docked / moved around as user sees fit.
      • Can now specify a display refresh rate for the connected clients.
    • Single header include support.
      • For user wanting to minimize changes to their project, it is now possible to only include NetImgui_Api.h after declaring the define NETIMGUI_IMPLEMENTATION, and all needed source files will also be added for compilation.

Version 1.2

(2020/08/22)

  • API Changes
  • NetImGui::NewFrame() / NetImGui::EndFrame() should always be used, even when disconnected
  • NetImGui::ConnectToApp() / NetImGui::::ConnectFromApp() take a new parameter, telling netImgui to continue using the same context or use a duplicate
  • NetImgui::Connect() replaced by NetImgui::ConnectToApp() / NetImGui::ConnectFromApp()
  • NetImgui::IsRemoteDraw() renamed to NetImgui::IsDrawingRemote()
  • NetImgui::IsDrawing() added
  • NetImgui::IsConnectionPending() added
  • NetImgui::GetDrawData() added
  • NetImgui::GetRemoteContext() removed
  • New
  • Support for connection initiated from netImgui server application
  • GUI and save file support for Client configurations
  • Improved samples
  • Optional commandline parameter to specify Client's address for connection on netImgui Server launch
  • Launching a second netImgui Server forward commandline option to already running instance
  • netImgui Server application accepts Client's address request from a Windows 'named pipe'
  • Bugfix
  • Issue of text edition not recognizing special key strokes (navigation, delete, ...)

Version 1.1.001

(2020/07/02)

  • Added ImGui 1.77 support

Version 1.1

(2020/06/23)

  • Few fixes
  • Added support to Posix sockets (Unix/Mac/Android support)
  • Added texture format A8

Version 1.0

(2020/06/13)

  • Initial Release
  • netImgui server application
  • netImgui client code (for integration into external codebase)
Clone this wiki locally