2024
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.
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 callingglfwSetCursor
with a custom cursor
- uses a canvas to draw the cursor image into it and convert it into a URL (
Published a blog post
properly introducing emscripten-glfw
.
You can read about the history of the project and some of the primary features.
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.
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
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
) asCmd + 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
tov3.4.0.20240817
which enables using macOS shortcuts and copy/paste in any text field (not just the editor).
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
withEMSCRIPTEN_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.
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
The source code for WebGPU Shader Toy is now available on github.
Released emscripten-glfw 3.4.0.20240731 with the following changes:
- Added
emscripten_glfw_get_clipboard_string
the C version ofemscripten::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
Pushed WebGPU Shader Toy update: v2024.07.29
- Added the ability to swap the panes
Released emscripten-glfw 3.4.0.20240727 with the following release notes:
- Introduced C++ API (namespace
emscripten::glfw3
) included withGLFW3/emscripten_glfw3.h
:- provides a more correct API with sensible defaults (ex:
std::string_view
/std::optional<std::string_view>
vschar const *
which may or may not benullptr
) - allow for C++ only API (ex:
std::future
) - the C API is still available if you would rather stick to it
- provides a more correct API with sensible defaults (ex:
- 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
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.
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
andCtrl + E
shortcuts for beginning / end of line shortcuts (Select All is nowCtrl + Shift + A
)</li>
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
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 ()
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)
- Here is the product page
- Since this tool runs in your browser, you can try it
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 whenSuper
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)
- 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
Released re-mock update: v1.6.0
- Added support for
device_categories
ininfo.lua
which was added as a new requirement with Reason 13 - Deprecated automatic support for
std::filesystem::path
infmt
due to UTF8: usepath.u8string()
instead
Released RE Edit update: 1.6.4:
- Added support for
device_categories
which was added as a new requirement to Reason 13
Released re-cmake update: v1.7.2
- Updated
re-mock
version (added support fordevice_categories
)
Released emscripten-glfw 3.4.0.20240617 with the following release notes:
- Fixed #3:
glfwGetKey
must return one ofGLFW_PRESS
orGLFW_RELEASE
Released emscripten-glfw 3.4.0.20240616 with the following release notes:
- Implemented
glfwGetClipboardString
. Note that due to the async (and restrictive) nature of thenavigator.clipboard.readText
call, this synchronous API returns whatever was set via a previous call toglfwSetClipboardString
and ignores the external clipboard entirely.
Released emscripten-glfw 3.4.0.20240601 with the following release notes:
- Fixed #2: Dynamically changing HiDPI awareness does not trigger content callback
Released emscripten-glfw 3.4.0.20240514 with the following release notes:
- Implemented
glfwSetClipboardString
Released emscripten-glfw 3.4.0.20240501 with the following release notes:
- Fixed issue when calling
glfwGetWindowContentScale
withnullptr
- Renamed javascript api/impl since these names are not unique to avoid potential conflicts
- Added
glfw3native.h
toGLFW
. 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.
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
andGLFW_GAMEPAD_BUTTON_RIGHT_THUMB
GLFW_GAMEPAD_AXIS_LEFT_TRIGGER
andGLFW_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
I released emscripten-glfw 1.1.0 which implements GLFW 3.4 APIs:
- Upgraded to GLFW 3.4
- GLFW 3.4 features implemented
glfwGetPlatform
andglfwPlatformSupported
uses theGLFW_PLATFORM_EMSCRIPTEN
constant defined inemscripten-glfw3.h
(officially reserved value is0x00060006
)glfwInitHint
supports the new hintGLFW_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 supportedGLFW_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
andGLFW_POSITION_Y
are not supported (same asglfwSetWindowPos
)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 thatGLFW_SCALE_FRAMEBUFFER
defaults toGLFW_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
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
Released 1.6.3:
- Fixed issue with contrast not being saved
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.
2023
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
New re-cmake update: v1.7.1
- Fixes issue locating RE2DRender and RE2DPreview after SDK 4.4.0 final release
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…
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 withwin32resourcestream.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
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