2024

icon emscripten-ports
2024-10-07

Proudly announcing the release of a brand-new project emscripten-ports.

The goal of this project is to collect ports that are not part of Emscripten.

The first port released is for ImGui, a bloat-free Graphical User interface for C++ with minimal dependencies.

icon emscripten-glfw
2024-10-04

Released emscripten-glfw 3.4.0.20241004 with the following changes:

  • Implemented custom cursors (glfwCreateCursor)
    • uses a canvas to draw the cursor image into it and convert it into a URL (canvas.toDataURL())
    • uses the CSS property syntax: cursor: url(xxx) xhot yhot, auto when calling glfwSetCursor with a custom cursor
icon emscripten-glfw
2024-09-12

Published a blog post properly introducing emscripten-glfw.

You can read about the history of the project and some of the primary features.

An application built with emscripten-glfw

icon WebGPU Shader Toy
2024-09-08

Pushed WebGPU Shader Toy update: v2024.09.08

  • Added a History menu to undo/redo Shader level changes.
  • Added a Quick Export shortcut (Cmd + S / Ctrl + S).
  • Added the ability to reset the settings only.
  • Added a way to import a shader given a URL.
  • Moved some examples outside the code and imported via URL.
  • Added 2 examples: Fire and Marble.
icon emscripten-glfw
2024-09-07

Released emscripten-glfw 3.4.0.20240907 with the following changes:

  • Fixed Meta/Super key workaround to also handle the rare (but possible) use-case of having other keys down before pressing the Meta/Super key
icon WebGPU Shader Toy
2024-08-18

Pushed WebGPU Shader Toy update: v2024.08.18

  • Added support for macOS keyboard shortcuts.
  • Changed the “Compile Shader” shortcut to be Ctrl + D (resp. Cmd + D) as Cmd + Space is already taken.
  • Added an alternate way of rendering the shader in fullscreen mode: holding the Alt key preserves the size/ratio of the shader window.
  • Upgraded emscripten-glfw to v3.4.0.20240817 which enables using macOS shortcuts and copy/paste in any text field (not just the editor).
icon emscripten-glfw
2024-08-17

Released emscripten-glfw 3.4.0.20240817 with the following changes:

  • Major clipboard changes: the clipboard now uses the browser events to handle cut, copy and paste
  • Added a way to tweak the timeouts for the Super + Key workaround (Super is also known as Meta or Cmd)
  • Added a way to set which keys are allowed to be handled by the browser
  • Added a convenient API to open a URL (emscripten::glfw3::OpenURL)
  • Added a convenient API to detect if the runtime platform is Apple (emscripten::glfw3::IsRuntimePlatformApple), mostly used for keyboard shortcuts (Ctrl vs. Cmd).
  • Added GLFW/emscripten_glfw3_version.h with EMSCRIPTEN_GLFW_VERSION define for compilation time version detection
  • EMSCRIPTEN_USE_PORT_CONTRIB_GLFW3 port define now also contains the version

Breaking changes:

  • The clipboard async API has been removed.
  • Check the Clipboard support section for details on how to deal with the clipboard in your application.
icon emscripten-glfw
2024-08-04

Released emscripten-glfw 3.4.0.20240804 with the following changes:

  • Fixed nullptr issue when clipboard is empty
  • Fixed the internal clipboard being wiped on asynchronous callback error
icon WebGPU Shader Toy
2024-08-01

The source code for WebGPU Shader Toy is now available on github.

icon emscripten-glfw
2024-07-31

Released emscripten-glfw 3.4.0.20240731 with the following changes:

  • Added emscripten_glfw_get_clipboard_string the C version of emscripten::glfw3::GetClipboardString to retrieve the clipboard asynchronously
  • Added a helper class emscripten::glfw3::FutureClipboardString to greatly simplify the more frequent use-cases
  • GetClipboardString::value() now returns the internal clipboard in case of error, instead of throwing exception
  • Added optimizationLevel option to the emscripten port
icon WebGPU Shader Toy
2024-07-29

Pushed WebGPU Shader Toy update: v2024.07.29

  • Added the ability to swap the panes
icon emscripten-glfw
2024-07-27

Released emscripten-glfw 3.4.0.20240727 with the following release notes:

  • Introduced C++ API (namespace emscripten::glfw3) included with GLFW3/emscripten_glfw3.h:
    • provides a more correct API with sensible defaults (ex: std::string_view / std::optional<std::string_view> vs char const * which may or may not be nullptr)
    • allow for C++ only API (ex: std::future)
    • the C API is still available if you would rather stick to it
  • Implemented emscripten::glfw3::GetClipboardString (C++ only) which provides a way of fetching the global clipboard in a browser environment (glfwGetClipboardString is not the right API due to the asynchronous nature of the underlying platform API).
  • The cursor position is no longer clamped to the window size, and as a result, can have negative values or values greater than the window size. Note that GLFW implements a similar behavior on the macOS desktop platform.
  • Implemented glfwSetWindowPosCallback
  • Added support for GLFW Window Attribute GLFW_HOVERED
  • Fixed #6: emscripten_glfw_make_canvas_resizable does not clean up properly.
  • Fixed an issue with opacity: when using opacity, the handle is not working unless its z-index is higher than the canvas z-index
icon WebGPU Shader Toy
2024-07-21

Pushed WebGPU Shader Toy update: v2024.07.21

  • In automatic layout mode, added the ability to resize the two panes easily by clicking and dragging the space between them. Double-clicking will revert to an even split.
icon WebGPU Shader Toy
2024-07-19

Pushed WebGPU Shader Toy update: v2024.07.19

  • Added the ability to duplicate a shader (right-click on its name for a popup, or select the option in the Shader menu)
  • Handle error cases in dialogs (empty name, duplicate name, invalid size, etc…)
  • Added Ctrl + A and Ctrl + E shortcuts for beginning / end of line shortcuts (Select All is now Ctrl + Shift + A)</li>
icon WebGPU Shader Toy
2024-07-15

Pushed WebGPU Shader Toy update: v2024.07.15

  • Tweaked keyboard navigation: make sure that the editor always has preference
  • Limit the size of the error message window
  • Tweaked version number to make it more readable
icon WebGPU Shader Toy
2024-07-14

Pushed WebGPU Shader Toy update: v2024.07.14

  • Added the ability to take a screenshot
    • : take a screenshot instantly (use the previous/default format)
    • : open the menu to select a format and a filename
  • Added the ability to enable/disable shader rendering ()
icon WebGPU Shader Toy
2024-07-09

I am very happy to announce the release of WebGPU Shader Toy, a tool for experimenting with WebGPU fragment shaders and the WebGPU Shading Language (WGSL)

Screenshot

icon emscripten-glfw
2024-06-25

Released emscripten-glfw 3.4.0.20240625 with the following release notes:

  • Implemented workaround for #4: Using Super + “Key” on macOS results in “Key” not being released. Due to the broken state of javascript handling the Super/Meta key, there is no good solution. The workaround implemented, releases all keys when Super is released. Although not a perfect solution, it guarantees that the state is eventually consistent:
    • if “Key” was released while “Super” was held, then when “Super” gets released, “Key” is released (later than when actually released, final state is consistent: “Key” in Release state)
    • if “Key” is still held when “Super” is released, “Key” is released when “Super” gets released, but immediately gets a down event (Up/Down event, final state is consistent”: “Key” in Pressed state)
icon re-mock
2024-06-20

Released re-mock update: v1.6.0

  • Added support for device_categories in info.lua which was added as a new requirement with Reason 13
  • Deprecated automatic support for std::filesystem::path in fmt due to UTF8: use path.u8string() instead
icon RE Edit
2024-06-20

Released RE Edit update: 1.6.4:

  • Added support for device_categories which was added as a new requirement to Reason 13
icon re-cmake
2024-06-20

Released re-cmake update: v1.7.2

  • Updated re-mock version (added support for device_categories)
icon emscripten-glfw
2024-06-17

Released emscripten-glfw 3.4.0.20240617 with the following release notes:

  • Fixed #3: glfwGetKey must return one of GLFW_PRESS or GLFW_RELEASE
icon emscripten-glfw
2024-06-16

Released emscripten-glfw 3.4.0.20240616 with the following release notes:

  • Implemented glfwGetClipboardString. Note that due to the async (and restrictive) nature of the navigator.clipboard.readText call, this synchronous API returns whatever was set via a previous call to glfwSetClipboardString and ignores the external clipboard entirely.
icon emscripten-glfw
2024-06-01

Released emscripten-glfw 3.4.0.20240601 with the following release notes:

  • Fixed #2: Dynamically changing HiDPI awareness does not trigger content callback
icon emscripten-glfw
2024-05-24

Released emscripten-glfw 3.4.0.20240514 with the following release notes:

  • Implemented glfwSetClipboardString
icon emscripten-glfw
2024-05-01

Released emscripten-glfw 3.4.0.20240501 with the following release notes:

  • Fixed issue when calling glfwGetWindowContentScale with nullptr
  • Renamed javascript api/impl since these names are not unique to avoid potential conflicts
  • Added glfw3native.h to GLFW. Although not used (at this moment) by this implementation, this allows calling code to include it if necessary since it is part of a normal GLFW installation.
icon emscripten-glfw
2024-03-18

Released emscripten-glfw 3.4.0.20240318 with the following release notes:

  • Fixed joystick/gamepad code that was improperly mapping GLFW_GAMEPAD_AXIS_LEFT_TRIGGER GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER, GLFW_GAMEPAD_BUTTON_LEFT_THUMB and GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
  • GLFW_GAMEPAD_AXIS_LEFT_TRIGGER and GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER are now properly represented as an analog value in the range [-1.0, +1.0]
  • Please note the change in version numbering which from now on will be tied to the GLFW version implemented + date of release of this port to avoid confusion
icon emscripten-glfw
2024-02-29

I released emscripten-glfw 1.1.0 which implements GLFW 3.4 APIs:

  • Upgraded to GLFW 3.4
  • GLFW 3.4 features implemented
    • glfwGetPlatform and glfwPlatformSupported uses the GLFW_PLATFORM_EMSCRIPTEN constant defined in emscripten-glfw3.h (officially reserved value is 0x00060006)
    • glfwInitHint supports the new hint GLFW_PLATFORM
    • Supports all 10 cursors
    • Implemented glfwGetWindowTitle
    • Use GLFW_SCALE_FRAMEBUFFER to enable (resp. disable) Hi DPI support
    • Changed the functions that can report GLFW_FEATURE_UNAVAILABLE failure to report this error instead of a warning
  • GLFW 3.4 features not implemented
    • GLFW_MOUSE_PASSTHROUGH is not supported
    • GLFW_CURSOR_CAPTURED cursor input mode is not supported (not possible in a browser context)
    • glfwInitAllocator is implemented as noop (could be supported for the C++ part only if there is demand, not javascript)
    • GLFW_POSITION_X and GLFW_POSITION_Y are not supported (same as glfwSetWindowPos)
    • GLFW_ANGLE_PLATFORM_TYPE is not supported (no direct access in browser, but implementation is most likely using it anyway)
  • Since GLFW 3.4 introduces a proper constant to handle Hi DPI Awareness (GLFW_SCALE_FRAMEBUFFER), the prior constant used by this port (GLFW_SCALE_TO_MONITOR) is still accepted, but it is now deprecated. In addition, due to the fact that GLFW_SCALE_FRAMEBUFFER defaults to GLFW_TRUE, this port is now Hi DPI aware by default and needs to be explicitly turned off (glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE)) if this is the desired behavior.

Note: These changes are available in emscripten 3.1.56 (released on 2024/03/14) via the contrib port contrib.glfw3

icon emscripten-glfw
2024-02-19

I released emscripten-glfw 1.0.5 with a critical bug fix:

  • Fixed memory corruption with joystick

Note: These changes are available in emscripten 3.1.55 (released on 2024/03/01) via the contrib port contrib.glfw3

icon RE Edit
2024-02-12

Released 1.6.3:

  • Fixed issue with contrast not being saved
icon emscripten-glfw
2024-01-22

I am very happy to announce the 1.0 release of my new free and open source project emscripten-glfw which is a port of glfw written in C++ for the web/webassembly platform.

Check out the live demo. Screenshot

2023

icon B.P.O.D.
2023-12-06

Just released a new version of my Roku screensaver B.P.O.D.: 1.1.0

  • Added “Title” settings to control when the title of the image gets displayed
icon re-cmake
2023-09-16

New re-cmake update: v1.7.1

  • Fixes issue locating RE2DRender and RE2DPreview after SDK 4.4.0 final release
icon re-mock
2023-07-03

Just released a new re-mock updated: v1.5.0

  • Upgraded SDK to 4.4.0

Note that JukeboxTypes.h has some new defines but it is not really affecting the project…

icon Jamba
2023-05-26

A new release is available: 7.0.0

  • Migrated Jamba to use VST3 SDK 3.7.8 (release notes). Please check other release notes to see what has changed since 3.7.5 (last Jamba supported version).
  • As explained in issue #16, Jamba is no longer supporting VST2
  • Added a way to patch the SDK by defining the CMake cache string JAMBA_VST3SDK_PATCH_DIR (Jamba uses it on Windows/DLL build to fix an issue with win32resourcestream.cpp, but you can also use it for your own purposes): by defining this variable, 2 things happen
    • Jamba copies the SDK inside the build folder
    • Jamba copies all the files under ${JAMBA_VST3SDK_PATCH_DIR} on top of this copy while never modifying a local version of the SDK
icon SAM-SPL 64
2023-04-28

A new version of SAM-SPL 64 has been released: v1.5.0:

  • Added support for MP3, Flag, Ogg Vorbis (in addition to WAV and AIFF)
  • Added error message when issue with loading file
  • Fixed sound issues with Bitwig Studio
  • Fixed drag and drop bug