Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Official Open Brush release notes
This section lists changes in our major releases (and from 2.0 onwards point releases)
There is also information on the current beta version.
For bleeding edge features see alternate and experimental builds.
This release along with v2.12 was to address a security issue in Unity.
Since Google Poly closed down, the immediate access to some examples by talented artists was sorely missed. So we've added some of the classics back in. We have big plans for sharing and viewing artwork so this is just the start.
Previously the only way to do this was to tap the bottom of the controllers together. This wasn't easy to discover and was unreliable when using some controllers. We've kept that in but added a nice clear button the app settings.
This is something that's especially useful when you want to demo Open Brush to a new user. The current tutorial is very brief but we hope to expand it in the future. Note this button affects the app the next time you launch it.
Meta Quest: Incorrect or missing video thumbnails are shown
Meta Quest: Gif capture results in just a black image
Meta Quest (Quest 1 only): Selection and erase tools are not working
Valve Index Controllers: Grip is too sensitive. It's easy to accidentally trigger a grab when drawing.
Issues with controllers not appearing when the wrong OpenXR runtime is selected. Please see: https://vermillion-vr.com/support/ for some workarounds.

This release along with v2.11 was to address a security issue in Unity.
Allow generation of sphere with gesture on mobile (PR #678 by @mikeskydev)
Update lots of shaders to singlepass (PR #677 by @mikeskydev)
Preview spheres for 360 images (PR #687 by @andybak)
Pagination for layers UI (PR #698 by @andybak)
Folder navigation UI (PR #689 by @andybak)
Import/export improvements (PR #573 by @andybak)
Passthrough Hull Brush (PR #613 by @andybak)
UnityGLTF Shader Variants (PR #714 by @andybak)
Add Pico support to the generic OpenXR build (PR #719 by @mikeskydev)
Disable boundary when passthrough is active (PR #735 by @andybak)
Fix Advanced Tools panel initial position (PR #697 by @andybak)
Damn panel spacing (PR #702 by @andybak)
Fix broken multimirror options popup. Hide Tiltosaurus button as it d… (PR #680 by @andybak)
Workaround for PCVR depth submission (PR #685 by @mikeskydev)
De-initialize XR Subsytems properly (PR #695 by @andybak)
Background image preview sphere labels (PR #700 by @andybak)
Fix stereo pano sphere preview (PR #701 by @andybak)
Enable file system watcher on mobile (PR #704 by @andybak)
UnityGltf import is meant to default to off (PR #707 by @andybak)
Fix issue where transparent brushes were invisible in Quest passthrough mode. (PR #715 by @andybak)
m_ColorSaturationMax had accidentally been set to 0 breaking color picker (PR #724 by @andybak)
Fix issue where images that are too large fail to load without any in… (PR #722 by @eeropomell)
Fix/improve image loading (PR #729 by @eeropomell)
Fix/quest sdk no boundary (PR #737 by @andybak)
Rename Quest Boundary Property (PR #739 by @andybak)
Fix input system errors when running in the editor (PR #745 by @andybak)
Shift the preview down so it doesn't overlap the hint (PR #750 by @andybak)
Fix background image seams by bypassing cache for now (PR #749 by @andybak)
Add Mac OS Monoscopic build to Steam (PR #669 by @mikeage)
Always specify --age-group for Oculus (PR #670 by @mikeage)
Update pre-commit, fix two pylint warnings (PR #671 by @mikeage)
Update GeneratedThirdPartyNotices.txt and make sure it stays in sync (PR #673 by @mikeage)
Fix automatic changelog page in the docs; update to the new (as of Jan 26th) path (PR #675 by @mikeage)
Merge the contents of the release-history directory instead of overwriting (PR #676 by @mikeage)
Minor formatting improvements (PR #682 by @andybak)
Release Linux Viewer/Standalone on Steam and Github (PR #683 by @mikeage)
Fix github release (typo in directory name) (PR #684 by @mikeage)
MacOS: sign all bundles, rather than listing them explicitly (PR #706 by @mikeage)
Add a section in the changelog for UI/UX PRs (PR #703 by @mikeage)
Add support for a [xCI BUILD DEV] (without the x) to build Development builds (PR #712 by @mikeage)
Fix artifact upload of development builds (PR #713 by @mikeage)
Update the (very rarely used) Unity License Test action (PR #718 by @mikeage)
Retry build on license failure; retry pre-commit on dotnet-format failure (PR #716 by @mikeage)
Run ovr-platform-util on Linux instead of Mac (PR #727 by @mikeage)
Fix Q1 upload (PR #732 by @mikeage)
Fix iOS builds after the unity upgrade (PR #733 by @mikeage)
Always run "Free Disk Space" on all platforms (PR #734 by @mikeage)
Revert "Run ovr-platform-util on Linux instead of Mac (#727)" (PR #738 by @mikeage)
Move the config.vdf secret (for Steam) to an Organization level secret (PR #741 by @mikeage)
Remove more unneeded files to free more disk space (PR #753 by @mikeage)
Run the build on 'main' periodically to keep the caches alive (PR #754 by @mikeage)
Bump rexml from 3.2.6 to 3.2.8 (PR #717 by @dependabot[bot])
Unity 2022 LTS (PR #708 by @mikeskydev)
Bump actions/setup-dotnet from 4.0.0 to 4.0.1 (PR #740 by @dependabot[bot])
Bump actions/setup-python from 5.1.0 to 5.1.1 (PR #742 by @dependabot[bot])
Bump rexml from 3.2.9 to 3.3.2 and update fastlane (PR #748 by @dependabot[bot])
Bump mikepenz/release-changelog-builder-action from 4 to 5 (PR #747 by @dependabot[bot])
Bump rexml from 3.3.2 to 3.3.3 in the bundler group across 1 directory (PR #752 by @dependabot[bot])
Fix missing version in DMG, Signed .app, and Steam upload (PR #755 by @mikeage)
Bump rexml from 3.3.3 to 3.3.6 in the bundler group across 1 directory (PR #758 by @dependabot[bot])
Bump actions/setup-python from 5.1.1 to 5.2.0 (PR #759 by @dependabot[bot])
Update README.md (PR #760 by @mikeskydev)
Fix fastlane build by freeing extra space (PR #764 by @mikeage)
Don't push iOS Zapbox builds to the Apple Store; just to testflight (even for formal builds) (PR #665 by @mikeage)
Bump actions/setup-python from 5.0.0 to 5.1.0 (PR #668 by @dependabot[bot])
These were a series of hotfix releases to address bugs discovered immediately after the release of v2.13
The Future of Open Brush is here, powered by OpenXR
Open Brush v2.0 is finally here! This update marks our second anniversary, and the end of a long year of work to upgrade the project to the latest and greatest in XR tech. Here's a quick sizzle reel of the new update!\
Steam Quest Viveport Itch SideQuest If you enjoy Open Brush, please leave a review on the store, it really helps us out!
The bulk of this year has been taken up with upgrading the Tilt Brush codebase to the latest version of Unity, utilising the new XR plugin framework. This was necessary to bring Open Brush to all the latest headsets and utilise the latest features, namely the OpenXR framework from Khronos. Our Desktop and Quest builds are now fully powered by OpenXR!
Additionally, it allows us to easily bring Open Brush to new platforms. Our in-progress Pico port required only a few lines of code to add basic support!
The upgrade has also delivered a huge performance increase vs Tilt Brush and Open Brush v1.0. Highly complex sketches that previously ran at 5FPS are now hitting 50! Many thanks to and for their contributions to this huge upgrade, and for managing our ever-changing build pipelines! An extra special thank you to our power users in our for helping us debug all the small quirks of this switchover! Zandy AncientWorlds Mana 松田浩二
Switching to the OpenXR backend means we can support some great OpenXR extensions. First up, the obvious target was Mixed Reality passthrough on Quest! It's a great feeling to be able to paint in your real world space, and augment your room. So much we can do with this going forward, including world anchors and a new occlusion brush!
This mode works especially nice on the Quest Pro with full color passthrough. We're hoping to bring passthrough support to all platforms in the future, including Desktop via a lovely plugin by Rectus:
Access this via the Environments button! Thanks to Mike for adding this feature.
Open Brush finally has layers support! This adds a new panel, which currently allows for 8 layers, including the main one. You can add, delete, clear, squash layers, and copy selected strokes to the currently selected layer.
We think this is a really powerful feature for larger sketches, as each component can be contained in a system larger than groups. It also works great to show or hide your drafting lines or reference material easily!
This also works really nice with exports, as hidden layers will not be included in the output files. We're hoping to do a lot more work that builds on our layers system, so look out for more soon! Thanks to and for their work on this feature.
Two new tools have been added to the advanced tools panel, Snip and Join. This works exactly as you'd expect, allowing you to cut strokes in half via their control points, giving you very fine control over the shape of strokes.
Similarly, you can now knit different strokes together, which joins the start and end control points as if it was one stroke! This works really well with the hull brushes.\
Snip and Join are the beginning of a whole suite of control point editing tools, we've got some really cool ones in the works such as push and pull points! We can't wait to share more.
Thanks again to for his work on this feature!
We've frequently heard from power users that we have too many builds floating around. They're not wrong! We've taken the decision to distribute experimental mode inside the main release, but we've hidden it behind a toggle that requires a restart, in settings.
Experimental means experimental! We won't be able to provide full support for users using this mode and the experimental brushes. Use at your own risk!
As mentioned above, Unity XR framework allows us to bring Open Brush to new devices. We're pleased to say we're working on ports to Vive XR Elite and Pico devices! Look for more info in the coming months.
We dug into some of the unused features of the Tilt Brush code and found a handy camera control panel! Access this by long-pressing on your camera button.
Options currently include changing the FOV, video smoothing on desktop, adding post-process effects (careful on Quest!), and removing the Open Brush watermark. This is a lot easier than manually editing the config file!
Thanks to for digging this out of the archives!
We have added support for a few new filetypes, including PLY point cloud data and WebM videos! You can add these via the media library, which is now accessible from the 'More Tools' panel.
We've also enabled the models panel for Quest, it's experimental right now, but enjoy!
This is just the beginning of our Import and Export pipeline upgrades, look for lots more file support and glTF upgrades in the coming months.
Thanks to for adding these options!
Finally, we've added support for pressure sensitive strokes. This is supported on a number of brushes, where the amount you pull the trigger will increase the thickness of your paint strokes, just like on your favourite 2D drawing tools! We're always looking for new ways to add more dimensions of expression to your creations.
Thanks to and for this!
Open Brush is nothing without it's strong community of artists, creators, developers, testers and donors. We've successfully navigated the perilous chasm of a major backend switch!
Thank you all for your amazing support throughout Open Brush's development this past year. A lot of this work has been background tooling to enable bigger and better features, securing Open Brush's continued development for many years to come.
We've had over 200,000 downloads across all currently supported platforms, and we hope it only grows from here. Thank you so much for keeping the spirit of Tilt Brush going!
Open Brush is primarily developed by a small team in their spare time. If you'd like to support our work financially, you can do so on our Open Collective: . Funds will go towards funding full-time development of Open Brush! Sharing our work really helps us, we're now available in many more places!
Thank you all, and see you in the next update, hopefully in the next month!
Mike~
Fix select all and invert selection for non-main layers (PR #628 by @andybak)
Zapbox: Set to iPhone only for now (PR #638 by @mikeskydev)
[Zapbox] Temp set portrait orientation (PR #642 by @mikeskydev)
Correctly set the androidVersionCode on a build rerun (PR #645 by @mikeage)
Fix a few issues around layers and selections (PR #646 by @andybak)
Zapbox set up everything else (PR #652 by @mikeskydev)
Localization Fixes (PR #655 by @mikeskydev)
Remove broken custom drawer and fix corrupted value (PR #653 by @andybak)
Turn off MSAA for Zapbox (PR #657 by @mikeskydev)
Reset default environment. Passthrough only for Zapbox (PR #660 by @mikeskydev)
Update pre-commit with python 3.12 fixes (PR #624 by @mikeage)
Improve pre-commit (dotnet, and remove a python warning) (PR #627 by @mikeage)
Create a DMG for Mac Monoscopic (PR #625 by @mikeage)
Upload Zapbox build to the App Store (PR #629 by @mikeskydev)
Fix (and tweak) fastlane issues (PR #632 by @mikeage)
Fix (again) the fastlane upload to the app store (PR #635 by @mikeage)
Add yamlfmt and enforce via pre-commit (PR #636 by @mikeage)
Use Mac OS 13 instead of latest (currently 12) when pushing iOS builds (PR #637 by @mikeage)
Select the fastlane lane based on whether it's a beta (testflight) or formal (app store) (PR #634 by @mikeage)
Add a workflow to export (encrypted) secrets (PR #639 by @mikeage)
Move non-secret information from Github secrets to variables and rename (PR #640 by @mikeage)
Fix broken Dependabot PRs (PR #650 by @mikeage)
DMG Issues (PR #658 by @mikeage)
Bump pre-commit/action from 3.0.0 to 3.0.1 (PR #623 by @dependabot[bot])
Bump CyberAndrii/setup-steamcmd from 1.1.5 to 1.2.0 (PR #626 by @dependabot[bot])
Bump softprops/action-gh-release from 1 to 2 (PR #649 by @dependabot[bot])
Branding Refresh (PR #662 by @mikeskydev)
Viverse sandbox and allow values should be string arrays (PR #972 by @andybak)
Bump actions/cache from 4 to 5 in the all-actions-updates group ( by @dependabot[bot])
You can now use Open Brush in six languages:
French
Spanish
German
Chinese
Japanese
Korean
If you'd like to help add more languages then please
Open Brush has traditionally been aimed at freehand drawing or painting but we've always wanted to improve workflows that require precise control over elements of your sketch. Guides help with this but the new Transform Panel adds some powerful tools to help with building complex scenes.
You can choose to lock any axis when moving or rotating a selection. Lock all rotation axis to maintain a consistent direction when duplicating selections. Or lock the Y axis to arrange copies in a perfect plane.
Similar to tools you are probably familiar with in desktop art apps - you can select multiple strokes, images, videos or 3d models and align them in any axis using their center-point or edges as a reference
Closely related to the Transform Panel, we've souped up the Snap Settings to allow you more control and precision.
You can choose to have the snap grid only apply to one or more axis. Similar to the axis locks on the Transform Panel, this allows you to quickly create many copies of a selection whilst keeping as much regularity as you need.
Apply the current snap settings after the fact to multiple objects.
Guides are incredibly useful whilst painting. Now you can also make use of them when moving a selection of brush strokes (as well as images, videos or 3d models).
The regular Mirror Tool is incredibly useful but for those of you who are interested in symmetry and geometric patterns, you'll find a lot to explore in the new Multi-Mirror Tool.
It supports dozens of types of symmetry and has powerful control of color variance for the replicated brush strokes.
It also works when you duplicate selections - whether they are selected brush strokes, images, videos or even 3d models.
Don't forget that you can set a mirror spinning with a flick of your wrist. Combined with the new symmetry modes this allows many incredible patterns and shapes to be created.
Does your sketches folder contain hundreds of sketches called "Untitled"? No more!
Currently used for renaming sketches and setting the names of layers - having a built-in keyboard will allow many previously difficult features in the near future.
Load your own 360 paranoramas and replace the default environment background. We support jpeg, png and we've added support for .hdr files as well.
Panoramas can also be stereoscopic. If your image's aspect ratio is 1:1 we assume it's an over/under stereo pair.
Place images in your Media Library/BackgroundImages folder and they will appear in the new tab in the Media Library panel.
We love as a format for 3d models. It's open, extensible and widely supported. Our original GLTF importer was showing it's age so we've added a brand new one based on . This supports a much broader range of features and should be able to open any valid GLTF or GLB file you throw at it.
Particularly exciting is the support for animated 3d models.
Just by placing SVG files in either your Media Library/Images folder or your Media Library/3D Models folder, you'll be able to import them either as raster images or as 3d meshes.
We plan to allow new ways to make use of vector images in the near future including recoloring, extruding, splitting and layering of the elements.
Last year we added powerful tools for changing the brush type, color or size of existing strokes but it required you to manually interact with every stroke you wanted affected. We've changed the UI for the repaint tools and added the ability to apply the various changes to all currently selected brush strokes.
Suggested by who has been doing very cool live performances using Open Brush, this adds a panel that displays the view from any attached webcam. Intended for live streaming and other performance work it can help you keep track of what others will see.
There are plenty of other potential uses though. Combined with you can view input from a huge range of potential sources - capture another app's screen. How about viewing a tutorial or live stream from another artist while you work?
(This feature is currently PC VR only)
A small change with a big impact. Your Open Brush scene now stays in a stable orientation relative to your VR space. Combined with passthrough you can paint your surroundings and they will be in the correct position when you come back to the sketch at a future time.
We've also added a "lock/unlock scene transform" button which defaults to "locked" when you're in passthrough mode as well as a "reset scene transform" so you can easily switch get back to the original alignment between your sketch and the real world.
We sadly broke support for selection tools on the Quest 1 in a previous release due to moving our rendering mode from OpenGL ES to Vulkan. We've managed to fix this now so those of you with the older headset can use all the tools in Open Brush once again. We're committed to supporting the Quest 1 for as long as we can.
PC VR users will be familiar with the audio reactive mode that allows many of the brushes to animate in response to music you play on your PC. We've now enabled this mode for the Quest as well. Currently you need to import the audio as an mp4 video file but we plan to add support standard audio files as well as spatial audio and trigger modes for multiple clips.
You can now create and edit camera paths on the Quest and other standalone headsets. You currently can't generate a video directly from the headset. However we can copy your sketches to any PC or Mac (it doesn't have to be a VR capable PC) and render a video there. See below.
It was always possible to view sketches on non-VR devices and you could trigger video rendering using the . We've made a few changes to make things easier:
We've added to our Mac builds (previously it was PC only)
There's an example script you can use that will let you load a sketch and trigger video rendering without needing to figure out how to use
We've uploaded a Mac build to and we'll add more platforms and app stores over time.
We want to make viewing and sharing sketches easier. One step towards this is that you can run Open Brush even on devices without VR support. Instead of showing an error message, we now offer a simple UI that allows you to open any local sketch and navigate using the keyboard or touchscreen. The regular Steam PC version works fine for this - we tried it out on a and it worked pretty well! We want to improve the navigation controls and support other input devices such gamepads.
We also plan to make it easier to get a build of Open Brush for any platform. The Viewing Mode should run fine on PC, Mac, Android or iOS so keep an eye out for releases on all these platforms.
Move selection to current layer
JSON exports now also include sketch metadata
Precise slider control using thumb stick
WebSocket support for API requests
A lot of the features in this release will be expanded further. Don't forget to check out our other work - some of which will move into beta very soon - along with something else which is probably the most frequently requested feature of all time. ;-)
Switch experimental brushes on or off without a restart ( by @andybak)
Allow the erase tool to also "erase" media widgets ( by @andybak)
Logitech MK Ink Integration ( by Logitech and @andybak )
Allow profiler to use bundled sketches ( by @andybak)
Zapbox fixes: tutorial, controller materials, and laser pointer ( by @apzap)
Settings tidyup ( by @mikeskydev)
Catch wmic exceptions so they don't mess up device initialization ( by @andybak)
Fix quality level bugs ( by @andybak)
Guard against tracking glitches that effect painting ( by @andybak)
gzip config.vdf before storing as a secret ( by @mikeage)
Combine all dependabot PRs into one ( by @mikeage)
Use PAT to create releases and tags ( by @mikeage)
Do not use # in PR build names ( by @mikeage)
Update some UPM packages ( by @andybak)
Update Zapbox SDK ( by @andybak)
Bump the all-actions-updates group with 2 updates ( by @dependabot[bot])
Force photon to the previous, working, version ( by @mikeage)
Enable incremental garbage collector ( by @andybak)
Fix MX Stylus Regression (PR #811 by @andybak)
Fix editor issues with localization (PR #825 by @andybak)
The eraser tool should not erase pinned widgets (PR #819 by @andybak)
Update permission strings (PR #835 by @tangobravo)
Revert accidental change to Unity splash screen setting (PR #840 by @andybak)
Fix builds on forks; move defines from ProjectSettings to build.yml on a per-platform basis (PR #842 by @mikeage)
Improve Windows development experience (PR #797 by @mikeage)
Support new ubuntu-24 images (PR #799 by @mikeage)
Fix chown error in newer Alpine images [affects new builds without caches] (PR #804 by @mikeage)
Publish Q1 and Q2 builds to ArborXR (PR #824 by @mikeage)
Upload Pico to ArborXR (PR #826 by @mikeage)
Add arm64 to cert generation (PR #829 by @mikeage)
Switch scoped registries to OpenUPM (PR #787 by @sbanca)
Use Xcode 16.2 to build Zapbox (PR #830 by @mikeage)
Update packages-lock.json so that we can recreate the cache (PR #831 by @mikeage)
Switch to ArborXR v2 CLI (PR #836 by @mikeage)
Fix Arbor XR release channel updates which use a version ID instead of a version (despite calling the parameter --version) (PR #837 by @mikeage)
Use JSON format for abxr-cli (PR #838 by @mikeage)
Faster cleanup step (saves about 1 minute in the slow case) (PR #839 by @mikeage)
Add a github action to automatically comment if/when Packages or Project Settings are changed (PR #841 by @mikeage)
Fix missing line that caused duplicate comments (PR #843 by @mikeage)
Disable package cache (PR #844 by @mikeage)
Fix builds on forks; move defines from ProjectSettings to build.yml on a per-platform basis (PR #842 by @mikeage)
Silence warnings from setup-uv (PR #845 by @mikeage)
Use literal newline to fix file listing in the warning comment (PR #846 by @mikeage)
Update pre-commit config (PR #847 by @mikeage)
Bump rexml from 3.3.6 to 3.3.9 in the bundler group across 1 directory (PR #784 by @dependabot[bot])
Update Zapbox SDK to 0.4.0 (PR #834 by @tangobravo)
Lots of bug fixes











Possibly our most powerful new feature ever and several years in the making. Plugins are small lua scripts that can hook into Open Brush to modify how existing painting tools work or create entirely new tools.
We've shipped an extensive range of examples that expand the creative palette you have available and serve as jumping off points for those of you that would like to create your own plugins and share them with the community. Read our docs on how to use plugins and then dive into writing plugins
Using imported 3D models to construct or enhance your sketches is incredibly useful but often 3D models contain multiple elements and those elements are not easily separated.
We've added the ability to break apart - even if the model was built as a single mesh. We check for connected parts and allow you to break apart any elements that are visually separate.
We previously had a feature that allowed you to export selected parts of your sketch as 3d models. This had several drawbacks: it was PC-only, brush strokes ceased to be editable or selectable and their appearance often changed due to the conversion process.
We've now implemented the ability to save any selected brush strokes without converting them into a 3d mesh. Now when they are added back to your scene they are grouped strokes and can be un-grouped, re-colored, re-brushed and anything else you can do with regular brush strokes.
The Magicavoxel .vox format is the standard file format for models created in a wide range of voxel editing apps. You can now import them like you can other 3d model formats and construct entire scenes from them. if you want them to remain aligned to their original grid then set grid snap to 0.1 and angle snap to 90 before importing.
You can now publish Open Brush sketches directly to Viverse with a couple of clicks. allows you to build and share 3D worlds in a web browser so people can visit from nearly any device: phone, tablets, PC, Mac and of course VR headsets. Worlds are social and multiplayer and can optionally be monetized to help support artists (that's you...).
Our sibling application is an incredibly intuitive low-poly 3d modelling app for PC, Quest and other standalone VR devices. If you've already got it then any models you create and save locally can easily be imported via the standard 3D model library browser.
Camera paths are a powerful way to render a standard or 360 video fly-through of your creations. However we only support rendering video directly on desktop (PC or Mac) and it was fiddly to copy sketches off standalone headsets such as the Quest and then render videos using the generated scripts. We've now made the process easier. You can now render the video frames directly on devices that don't support generating video files directly. These frames can be converted into a regular video in multiple ways - uploading to a web service, importing into a video editing app etc. .
Previously mobile VR devices such as the Quest had less selection tools available than PC VR devices. This was due to performance issues when we first launched for the Quest 1. Newer devices are more powerful so we've made the full range of tools available on all devices giving you access to "Select All" and "Invert Selection". Complex scenes might stutter when using these but we wanted to give you the choice.
Not enough people realise that Open Brush runs as sketch viewer on all Mac, PC, Android devices even when those devices have no VR support. This release has improved the navigation controls. Touch support on phones is more intuitive and standard gamepads should work as expected. Try installing from Steam on Steam Deck or similar handheld devices.
Furthermore you can now browse more sample sketches which are loaded directly from the . Non-VR devices also support interacting with Open Brush via the or .
Plugin scripting ( by @andybak)
Enable axis locking for guides ( by @andybak)
Icosa Gallery Integration ( by @andybak)
Increase the default and max complexity for Icosa models ( by @andybak)
Fix/plugin merge fixes ( by @andybak)
Remove old "not supported" code that sneaked back in with plugin merge ( by @andybak)
Prevent error loading image widgets from old sketches ( by @andybak)
Fix bug where the layers panel doesn't init if it's not open when a sketch is loaded ( by @andybak)
Disable push of the Q1 build to Oculus (finally blocked by them) ( by @mikeage)
Add support for periodically (monthly) rebuilding a PR ( by @mikeage)
Fix broken workflow ( by @mikeage)
Do not save caches from development builds ( by @mikeage)
Bump rexml from 3.3.9 to 3.4.2 in the bundler group across 1 directory ( by @dependabot[bot])
Update Zapbox SDK to 0.5.0 ( by @tangobravo)
Bump the all-actions-updates group with 7 updates ( by @dependabot[bot])
Bump the all-actions-updates group with 2 updates ( by @dependabot[bot])
Fix various issues related to additive loading ( by @andybak)
Update references from Tilt Brush to Open Brush ( by @LakesideMiners)
UI tweaks (PR #877 by @andybak)
Mesh splitting (PR #880 by @andybak)
Harmonize panels between PC and mobile (PR #885 by @andybak)
Non VR mode improvements (PR #888 by @andybak)
Save selected strokes (PR #711 by @andybak)
Still frame export (PR #893 by @andybak)
Allow symmetry modes to affect Tool Plugin output (PR #897 by @andybak)
Better saved strokes ux (PR #912 by @andybak)
Various small plugin scripting improvements (PR #916 by @andybak)
Obj import improvements (PR #928 by @andybak)
Selective snap angle axes (PR #930 by @andybak)
Send triangle count to Icosa on upload (PR #945 by @andybak)
Vox import support (PR #947 by @andybak)
Local Blocks model loading (PR #953 by @andybak)
Fix cloning widgets and strokes to multiple symmetry targets (PR #855 by @andybak)
Minor plugin scripting fixes (PR #863 by @andybak)
Fix bug where the sketch dropdown was empty after viewing a sketch (PR #867 by @andybak)
Blocks Icosa obj support (PR #870 by @andybak)
Use indices rather than InstanceId to ensure unique names that persist across sessions (PR #878 by @andybak)
Split models not model widgets (PR #881 by @andybak)
Partial fix for "Smoke" and WIP support for baking more than just vertex position (PR #883 by @andybak)
Ignore material instance naming when matching brushes (PR #884 by @andybak)
Saved Strokes Quest Bugfixes (PR #892 by @andybak)
PR 893 minor fixes (PR #896 by @andybak)
Example media files copying issues (PR #898 by @andybak)
GLTF files on android have no textures (PR #899 by @andybak)
Restore animation behaviour for GLTF imports (PR #903 by @andybak)
Fix animations not working due to node renaming for uniqueness (PR #904 by @andybak)
Switch to legacy animation mode (PR #911 by @andybak)
Fix coordinate space when calculating save icon for selected strokes (PR #914 by @andybak)
More Saved Stroke Fixes (PR #915 by @andybak)
Fix GLTF blend shape import (PR #918 by @andybak)
Fix API brush smoothing logic (PR #920 by @andybak)
Small plugin fixes and tweaks (PR #921 by @andybak)
Fix icosa login success message (PR #924 by @andybak)
Fix color issues with OpenXR over Meta Link (PR #925 by @andybak)
Fixes for loading sketches with split up obj models (PR #932 by @andybak)
export filenames should match the same rules that Django uses (PR #936 by @andybak)
Add the same new metadata extras that we add to the UnityGLTF export (PR #938 by @andybak)
Fix obj import via lua or HTTP API (PR #948 by @andybak)
Vox import and grid snap fixes (PR #949 by @andybak)
Fix some asset loading bugs (PR #951 by @andybak)
Fix some UI descrepancies (PR #955 by @andybak)
Various svg bugs (PR #954 by @andybak)
Fix undo/redo when loading saved strokes (PR #956 by @andybak)
Missing images prevented sketches from loading (PR #957 by @andybak)
Fix loading selected strokes on Android (PR #958 by @andybak)
Fix issue where model folder was merging contents of it's children (PR #959 by @andybak)
Only run the periodic rebuilds on the main repo, not on any forks (PR #869 by @mikeage)
Add PICO 4 Ultra and PICO 4 Pro (PR #874 by @mikeage)
Add gitleaks to pre-commit and update all hooks (PR #875 by @mikeage)
Replace --version with --version_id (PR #879 by @mikeage)
Remove periodic rebuild since it doesn't work if a workflow was originally run over 30 days ago (PR #882 by @mikeage)
Add sleep before setting the release channel version for ArborXR (PR #886 by @mikeage)
Add Mac (non-VR) releases to Itch (PR #890 by @mikeage)
Disable LFS in wretry (fixes intermittent build failures at the beginning) (PR #907 by @mikeage)
Fix ArborXR upload again (use the --wait option) (PR #908 by @mikeage)
Fix builds from forks with just main (no tags) (PR #902 by @mikeage)
Improve build resiliency (PR #909 by @mikeage)
Fix spelling mistake in non-gnu style arg (PR #910 by @mikeage)
Unity version bump (PR #922 by @andybak)
Sync tags (PR #923 by @mikeage)
Sync tags (PR #929 by @mikeage)
Make Open Brush TEENS_AND_ADULTS on Quest (PR #934 by @mikeage)
Remove Meta packages from the generic Android OpenXR build (PR #901 by @gfodor)
Bump mikepenz/release-changelog-builder-action from 5 to 6 in the all-actions-updates group (PR #941 by @dependabot[bot])
Bump actions/checkout from 5 to 6 in the all-actions-updates group (PR #946 by @dependabot[bot])
Bump the all-actions-updates group with 2 updates (PR #950 by @dependabot[bot])









2.1 is a bugfixes only release. We're looking forward to bringing new features to Open Brush soon!
Enable WMR default controller profile.
Fix saving after deleting a layer.
Fix swapping camera modes when using a Vive controller.
Smoother scrolling on Vive controller touchpads.
Fix advanced tools panel overlapping other panels.
Sometimes Open Brush fails to launch depending on the specific combinations of user's HMD, controller Type, and OpenXR runtime. We're working on methods to smooth over and resolve these issues, apologies if you're experiencing them! Please get in touch with us so we can help debug your setup.
Can't swap controller handedness by tapping together.
The following issues are pending a bug being fixed in Unity, which we found and reported.
Controller issues with HP Reverb G2.
Difficult to dismiss panels by throwing them away.
Deadzone on WMR controller thumbsticks is too sensitive.
First official release of Open Brush!
Guide settings
Merging Sketches
Support for's mixed reality on Oculus devices
Color Jitter varies your strokes. Thanks @andybak!
New 'plane' guide type + guide snapping, thanks @michael-g!
Fly tool, a new locomotion type. Reach out like your favourite caped hero and pull the trigger to fly around your sketch! Thanks to !
Mixed Reality support on both Desktop and Quest.
The SDK has been added, fixing a number of issues that were present when trying to use LIV with Tilt Brush. You will need to set your blend mode to SDK: Normal (Masked FG Premultiplied). Thanks to and the LIV team!
Oculus fixes. The plugin now receives the correct world scale. This also works with the beta! Thanks to . Check out Fabio's app (), allowing you to use MRC from your iOS devices!
Block Poly on Quest 1. Sadly Poly was causing crashes on Quest 1, and due to the short time that Poly will be available, we have chosen to block access. Poly downloads will still work on Quest 2 until the service shuts down. Once Icosa is up and running we'll make sure Quest 1 (and 2!) will have full support for it!
Uploads to SketchFab are now tagged with Open Brush as the creation tool.
has done some amazing work on our build pipeline. Any Pull Requests that get merged now automatically generate new builds, so if you feel adventurous, check out our . This also includes Linux builds!
0.2.0 focuses on adding back a lot of the functionality that was removed from the original Tilt Brush codebase for release.
Re-added Sketchfab login
Re-added Google/Poly login (note: uploading to Poly isn't possible as it uses proprietary Google code that wasn't released, sorry!)
Re-added GIF recording (auto, 5s)
Re-added video recording
Re-added FBX support
Fixed USD support
We have also added basic Linux support, expect to see binaries soon!
Camera preview disappears if you've disabled PostFX in your config
Cannot record with camera paths
Capture Camera Paths! We decided to read our own README and re-enable video capture on camera paths now that we have general video support.