Sapphire Plug-ins for OFX, General User Info
- ColorFuse: A new effect that allows artists to get a stylized look by combining up to three LUTs.
- Photoshop Support: Sapphire 2022 adds new host compatibility to its lineup with support for Adobe Photoshop, available with any new or upgrade license. Featuring over 270 filters and thousands of cross-platform presets, Sapphire for Photoshop brings the power of post production’s most loved filters to new artists, letting them create effects unachievable with native filters, and enabling a more streamlined workflow through the different design stages of production and between various teams and software.
- Sapphire Effect Designer: New tool inside Builder for getting stylized looks with S_ColorFuseLooks.
- UltraZap: UltraZap now supports Zaps along Mocha Splines in a mode called UltraZapMocha.
- Support for NVIDIA Ampere cards (eg. A4000, A5000, A6000).
- Windows required driver: 460.82.
- Linux required driver: 460.27.03.
- Flame: In conjunction with Flame 2022, there is now a context menu option called "Convert Sapphire Sparks -> Sapphire OFX". This can be run on individual nodes, batch setups, or sapphire effects on the timeline. It does best on Sapphire Sparks 2019.5, but will make a best effort to convert nodes as far back as Sapphire Sparks 11. Note, there are some minor differences between Sparks and OFX so check the OFX node once its been generated. Some of the conversion features work in Flmae 2021.
- UltraGlow: Improved Alpha support for UltraGlow.
- LensFlare Improvements:
- High Priority Elements: LensFlare now has a new parameter called "Performance". Elements can now be labelled "Priority Elements". When the performance parameter is set in the S_LensFlare plugin, non-priority elements will be skipped for a faster render.
- When animating elements in the Flare Designer, elements can now have a minimum size and brightness set.
- Performance and UI improvements in Sapphire Effect Builder, Sapphire Flare Designer, and Sapphire Preset Browser.
- OpenColorIO version 2.
- New Presets for a variety of effects.
- New LensFlares.
- Resolve: The first time Sapphire is used after it's been installed, no Sapphire related dialogs will pop up. This includes the Help Dialog, the Preset Browser, and the ColorFuse LUT chooser. If Resolve is relaunched, the dialogs all work as normal.
- UltraZapMocha: Sometimes, a straight line will apear in the zap. To fix this, add an additional control point in mocha in the part of the mocha spline that corresponds to that straight segment. Adjust the control point until the straight line segment goes away.
- Sometimes Mocha tracks slowly. If this happens, close mocha, re-open mocha, then play through the clip inside mocha. After the clip is cached in mocha, tracking will proceed smoothly. Sometimes if the clip is tracking slowly an "unable to track" error will also pop up.
- If Sapphire 2021.5 OFX is installed at the same time as 2021.0 (either AE or AVX), lensflare presets may not show up inside 2021.0. To fix this, all Sapphire plugins installed on a single machine should be 2021.5. If the second installation of Sapphire cannot be upgraded to 2021.5, the Sapphire 2021.0 plugins may be re-installed to restore the 2021.0 compatible LensFlare presets.
- Dongle Licenses are not currently supported on Mac M1 machines.
- Mac OS, Big Sur: if you open mocha and then open the preset browser, the preset browser will fail and generate an error. If this happens, the host will have to be restarted to fix the preset browser.
- UltraZap: On an open spline zap may do unexpected things when mixing vary-endpoint and looping parameters.
- S_ZComp: The preset browser can't open unless an input is connected to the DepthB input.
- Deinterlace Auto fails to find a pattern on many clips.
- Mocha: The Mocha UI does not correctly locate the default OCIO config file shipped with Sapphire. To use the default OCIO config file shipped with Sapphire, use the OCIO environment variable to locate said the config file.
- Resolve: Point widgets may respond slowly in Resolve after a Mocha point track has been created.
- Baselight: Sapphire 2022 does not work with Baselight on Centos 6.4.
- Vegas: Vegas will take a long time to start up the first time after installing Sapphire as Vegas generates a plugin cache. Subsequent launches will be faster.
- Sapphire 2022 has been updated to use CUDA 11 in order to support NVIDIA's latest Ampere cards. (RTX A4000, A5000, and A6000). As a result some cards from 2012 are no longer supported. Sapphire 2022 works with CUDA compute capability 3.5 and higher.
- LensFlare: A bug was fixed in Sapphire 2022 in LensFlare, where the saturdation parameter inside the plugin didn't apply correctly to all elements. Fixing this means that some elements will look different in 2022 if saturation is set to a value different than 1.0.
- In v2019, LensFlares using MutliSpot and MultiStreak elements would look different inside the Flare Designer across operating systems. In v2019.5 this was fixed, but as a result LensFlares may look different from v2019 when loaded through the Flare Designer. Old projects will continue to look the same as they did in v2019 when loaded into the host or rendered, but may look different after loading in the Flare Designer.
All OpenColorIO information below applies both to Color Management within the Sapphire Preset Browser, Sapphire Effect and Transition Builder, and Sapphire Flare Designer as well as to the new OCIOTransform effect in Sapphire 2020.
To use OpenColorIO in Sapphire, there are three ways to specify the OpenColorIO configuration file.
- By default, Sapphire will use the config.ocio file found in Sapphire's installation directory.
To set OCIO system wide, set the OCIO environment variable to point to the desired config.ocio.
This will ensure that all host applications and plugins that use OCIO will use the same OCIO settings.
- We strongly suggest working with an IT department or IT professional to help setup environment variables, as there can be underlying conflicts with pre-existing settings.
- Open "File Explorer"
- Right-click on "This PC" and select "Properties"
- On the left, navigate to "Advanced system settings"
- At the bottom, click on "Environment Variables"
- In the top section labelled "User variables for...", click "New"
- In the dialog that pops up, enter "OCIO" in the "Variable name" box, and the full path to the config.ocio file in the "Variable value" box.
- Open a Terminal - This can be found using Spotlight
- Type: "launchctl setenv OCIO /full/macos/pathway/config.ocio" (without quotes). Note: this will not remain set after a reboot.
- To set the environment variable so that it persists through a reboot, the above command needs to be called through a .plist file in /Library/LaunchDaemons.
- To set the OCIO environment variable for all users of the computer, add "export OCIO /full/linux/pathway/config.ocio" (without quotes) to /etc/profile, replacing "full/linux/pathway/config.ocio" with the path full path for the desired config.ocio.
- To set the OCIO environment variable for the current user only, add "export OCIO /full/linux/pathway/config.ocio" (without quotes) to ~/.profile, replacing "/full/linux/pathway/config.ocio" with the path full path for the desired config.ocio.
To set OCIO for Sapphire only, set the ocio_config flag inside the s_config
file that shipped with Sapphire and can be found in the Sapphire installation
- Windows: C:\Program Files\BorisFX\Sapphire 2022 OFX\s_config.text
- Mac OS: /Applications/BorisFX/Sapphire 2022 OFX/config/s_config.text
- Linux: /usr/genarts/SapphireOFX/s_config.text
On Nuke: click on the Boris FX Sapphire icon in the toolbar on the left-hand side of the screen. Select the desired Sapphire effects category, and click on an effect to add it to your project. Alternatively, you can right-click anywhere the Node Graph window and go to Sapphire -> Sapphire Category Name -> Effect Name in the context menu.
On Fusion: in the Tools menu, select Sapphire and the desired Sapphire effects category, then click on an effect to add it to your Composition. Alternatively, you can right-click directly in the Comp Window and select Add Tool -> Sapphire -> Sapphire Category Name -> Effect Name.
On Baselight: using the Insert Menu, select the OFX Filter menu and select the desired Sapphire effects category. Then click on an effect to apply it to the currently selected clip. Instead of using the OFX Filter menu, you can alternatively use the OFX Transition menu to select amongst only transitions, or the OFX Source menu to select just generators.
Loading:In the preset browser you'll see all the presets available for the current plug-in, both Boris FX-supplied presets and the ones you've created yourself. You can filter by tags on the left side to quickly find the look you're interested in.
The main top window shows the preset on your footage (unless the plug-in can't access the AE layer for some reason, in which case you'll see a poster frame) and various information about the preset.
At the bottom you see all the presets; you can enlarge or shrink them with the slider at the bottom. You can also switch to a table view there, as well as viewing the preset on your source, over black, or over the sample footage. You can also see the source all by itself for comparison.
Saving:Clicking Save Preset brings up the Save Preset dialog. Here you can name the preset, and add various other information. Particularly important is the tagging system; you can apply as many tags as you want to your presets. You can even create new tags. Tags are grouped into categories, so all the color names appear under Colors, for instance.
You can create new categories as well, by typing into the Category drop-down menu after clicking Add New Tag.... Boris FX recommends sticking to the shipped categories when possible, for compatibility. But adding your own tags within categories (new color names, for example) is encouraged.
While the preset browser, save dialog, or flare designer are open, the main AE window will be unresponsive. This is normal. Close the preset browser or flare designer and AE will wake up again.
Certain parameters, like Lens Flare hotspot, are not saved in presets; we thought it would be less than useful for the flares to jump around as you load presets.
It may take a few seconds to load the preset browser if a plug-in has many presets. Be patient.
The Preset Browser has a "Use Static Thumbnails" checkbox in certain effects. When checked, the thumbnails use a pre-rendered image to improve performance. If "Use Static Thumbnails" is not checked, the thumbnails will render on the footage the Sapphire effect has been applied to back in the host.
If playing through the preview window in the Preset Browser, Flare Editor, or Effect Builder, is using too much memory, "Render on Still" is available in the view menu. This will reduce the memory usage of the preview window by rendering all frames using the same host frame.
The preset browser may be configured to load presets from and/or save presets to user specified locations. The load location and save location may be different. If the locations are different, load will show presets from both the load location and the save location. Save will only use the specified save location.
There are three options for setting the load and save paths:
- To set load and save paths per user, use the "Browser Settings" dialog. To do this: open the preset browser, go to the Edit menu and select "Browser Settings".
To set the load and save paths for all users of the machine, use the INI file. To do this, edit the
sapphire-app-settings.ini file in the Sapphire directory:
- Windows: C:\Program Files\BorisFX\Sapphire 2022 OFX\sapphire-app-settings.ini
- MacOS: /Applications/BorisFX/Sapphire 2022 OFX/config/sapphire-app-settings.ini
- Linux: /usr/genarts/SapphireOFX/sapphire-app-settings.ini
- To set the load and save paths in a script, use the Sapphire environment variables: SAPPHIRE_LOAD_PRESET_PATH and SAPPHIRE_SAVE_PRESET_PATH.
The Flare Designer lets you completely customize a lens flare. You can add or remove elements, copy them, customize how each element looks, and even how it reacts to the center or edge of the image. You can also interactively move the flare around to see how it will look as it moves.
All the panels of the Flare Designer are movable, so you can adjust the user interface itself to suit your work flow. The main panels are the view window, where you see the flare you're working on, the Elements panel which lists all the elements of the flare, and the Properties panel, which lets you adjust the properties of the currently selected element (or elements). There's also a toolbar of element templates at the top.
View PanelThe main view window is where you see how your flare will look; you can click and drag to move the flare around. You can see it over the background or just over black, adjust the gamma, and Solo only the selected elements. Use Plug-in Settings makes the flare designer import the plug-in settings currently active in the host app. If you have that selected, the flare will look the same back in the host app when you're done designing it. On the other hand, if you want to create a "reusable" flare preset, it's probably a good idea to un-check Use Plug-in Settings so the flare will look good with default settings in the plug-in.
Elements PanelThe Elements panel shows you all the elements, with thumbnails. If you mouse over them, an overlay shows where they are in the main view window. When you click on an element to select it, it also flashes brighter in the main window to help you find the element you're looking for. Clicking Identify in the Properties panel does the same flashing.
To add new elements, just click the element template picture in the top toolbar. You can then rename the element, move it in the list by dragging and dropping, or hide it by un-checking the checkbox.
To delete an elements, select it and click the trash can icon at the bottom of the Elements panel, or click Delete. There is full undo, so feel free to experiment!
You can also duplicate an element using standard copy/paste operations, or select it and click the two pages icon at the bottom of the Elements panel. You can then adjust the copy's parameters in the Parameters panel.
The gear-looking element is the "advanced element" type; it has lots of controls and is very customizable, but it's recommended for advanced users only. The other types get you most of the same looks with simpler parameters.
Along with all the standard element types, you can import your own images to use as elements. Click the picture frame to import an image file. The image data will become part of the flare, so it doesn't need to keep a reference to the original file.
To combine two flares into one, or add many elements at once, you can import another flare into your current flare; this will add all the other flare's elements to your current flare. You can also just open that flare, which replaces your current flare with that one. To import and add to your flare, use Insert Flare (down-right pointing arrow in the toolbar), or File... Insert Flare. To import and replace, use Open Flare (folder icon in the toolbar), or use File... Open Flare.
Parameters PanelThe Parameters panel is where you adjust all the details of a single element -- or multiple elements together, if you select multiple elements in the Elements panel. (Use Shift-click or Control-click to select multiple elements.)
There are a few common control types. Sliders with numbers to the left control numeric params; you can drag the slider thumb, but you can also drag in the number text field to increase or decrease the value. You can also click in the number field and type any value you want.
Color controls are just a swatch of color; click to bring up a standard color picker.
Some elements have a Gradient; there's a special gradient control to adjust those. The stops are below the color swatch; you can drag them left and right to move them. Drag down to delete. Click in the color gradient to add a stop there. Control-drag to "stretch" neighboring colors, and shift-drag to push neighboring colors. The triangles above the color gradient allow you to control the interpolation of the colors between stops. Ring Thickness lets you easily turn a spot or fan of rays into a ring; turning Ring Thickness down from 1 hollows out the center. This lets you still have fine control of the colors within the ring, even if it's very thin.
Different element types will have various parameters you can adjust, but here are some common ones:
- Where the element occurs, along the line between the hotspot and pivot point. Position 1.0 is at the hotspot, 0.0 is at the pivot. Note that you don't have to stay in that range; you can use any value you like. Bigger than 1 will be past the hotspot, and less than zero will look like a reflection because it's on the other side of the pivot point.
- How big the image is.
- Rel Width, Rel Height
- Use these to squash and stretch.
- Rotates the element around, in degrees.
More InformationIf you open the flare designer from the plug-in, you can just click OK to close the window when you're done; your current flare will be used in your project and saved with it. But you can do more than that; you can save the flare definition to disk separately, so you can recall it later, or use it in other flares. You can also open the flare designer directly from the Start menu or Applications folder to create flares independent of your host product. In this case, use File...Save Lens As... to save the flare definition. That dialog will allow you to name the lens and tag it so it's easy to find later.
Note that saving a lens this way does not save your plug-in settings; it only saves the lens flare definition itself (the things you can change in the flare designer). You can save a preset in the host application to save everything -- the flare and all the regular plug-in parameters.
While the preset browser, save dialog, or flare designer are open, the main AE window will be unresponsive. This is normal. Close the preset browser or flare designer and AE will wake up again.
What is Mocha?
Mocha is a planar tracking and masking utility that can save time on the most difficult motion tracking and masking shots. It tracks the entire area of the mask, not just individual points, to significantly reduce the tedium of manual keyframing.
Mocha looks for 3-d planes in the image: pixels that move together. Screens and signs are clear candidates, but Mocha can also track faces. It can handle objects obscured by foreground elements, and can track unlimited layers all at once.
There's a lot more to Mocha than we can explain here; there are plenty of tutorials online at http://borisfx.com.
In Sapphire, Mocha works as a mask for the effect, similarly to the mask input, but with all the tracking features of Mocha. For instance, in S_DistortRGB, the mask affects the amount of RGB distortion. In S_Glow, the mask masks out the areas you want to emit glowing light, without chopping off the smooth edges of the glow.
How to use it
- Apply a Sapphire effect
- Click Edit Mocha to launch Mocha
- Create a spline
- Track it
- Save and exit back to host
- Adjust in Sapphire
- Moving masks between effects
- go into Mocha with Edit Mocha , then File > Export to export the Mocha project to a file.
- Exit Mocha and delete the old effect.
- Apply the new effect, Edit Mocha , and File > Merge the project from the file you saved.
Most Sapphire effects now feature Mocha planar tracking integrated within the effect. Certain effects were omitted because utilizing a mask made no logical sense; for example, none of the S_Transition effects incorporate S_Mocha, and the Z_effects which require a Z_depth matte to work were also skipped.
When you click the Edit Mocha button, you will launch the Mocha UI, which will allow you to create and track a mask for use back with the selected Sapphire effect in your host application.
You can create a shape to track within Mocha utilizing either an X-spline or Bezier splines. X-splines are recommended for most uses.
Draw one or more splines around the planar areas you would like to track.
You can use backwards and forward tracking from whatever frame you're parked on. You can often get a great result with default settings, but if you're getting a lot of drifts, try increasing the Min K Pixels Used .
For your mask to appear back in your host application, YOU MUST SAVE AND EXIT. If you exit without saving, all you current work will be lost. Always save and exit!
You can make additional fine tuning adjustments after tracking in Mocha by opening the "Mocha" pulldown in your selected Sapphire effect. Additional softness and position/scale paramters can be found here, as well as checkboxes for soloing/hiding/inverting the Mocha mask.
Sometimes you track a shot with Mocha in one Sapphire effect and would like to reuse the track in a different effect. The simplest way is to export it from the first effect and re-import into the second effect.
Alternatively, if you want to share a Mocha mask with several effects, track the mask in a simple Sapphire effect such as S_HueSatBright. In there, select Show Mocha Only . Then use that as the Mask input to the effects where you want the mask used. (Exactly how to do this varies with host app.) Since the Mocha mask acts just like a regular mask input, this will allow you to update the mask once and all the other effects will use it.
On Nuke: right-click on the properties panel and in the Context menu select Reset Knobs to Default. You can also choose Revert Knobs, which will undo all changes since you opened the properties panel.
On Toxik: press the Reset button on the right side of the parameters window.
On Fusion: right-click on the effect icon in the Comp, and choose Settings -> Load Default.
On Baselight: in the Edit menu, click on Reset Parameters.
On Film Master: press the Reset Effect button (which looks like a circle with a red dot in the center and a small white left-pointing triangle on the right).
On Scratch: press the Reset button located on the right side of the screen under the bin. To reset an individual parameter, click on that parameter's value/slider and in the resulting dialog, click on the "R" button.
Online documentation is normally installed along with your software
and can also be accessed directly.
On Windows: go to Start -> All Programs -> GenArts Sapphire OFX -> Online Help (HTML) or (PDF).
On Mac: go to the Applications/BorisFX/Sapphire $MARKETING_VERSION OFX folder and double click on Online Help.html or .pdf.
On Linux: go to the RedHat Applications menu and select GenArts Sapphire OFX -> Sapphire Online Help (HTML) or (PDF).
If a plug-in is unable to render on the GPU, it will automatically fall back to the CPU and continue processing. The GPU status, including the type of error, is displayed in the Help dialog.
On machines with more than one GPU that supports CUDA, you can select which GPU Sapphire Plug-ins will use by changing the value of use_gpu in the s_config.text file.
Many Sapphire Plug-ins can simulate motion blur by rendering the effect at multiple times and averaging the results together. Motion blur is controlled by three parameters:
- Enable Motion Blur turns motion blur on or off.
- Shutter Angle controls the amount of time that the simulated shutter is open, and thus the overall amount of motion blur. The default value of 180 degrees will blur over an interval of half a frame, which is a common setting for real cameras. A value of 360 degrees will blur over an entire frame, which is the maximum amount of motion blur possible with a real camera. Values above 360 degrees will produce unrealistic results in which the motion of adjacent frames overlaps.
- Samples controls the number of individual renders that are averaged together. Increasing the number of samples will give smoother results, but will also increase render times. If too few samples are used, there can be visible aliasing or ghosting artifacts. Faster motion will require more samples to avoid artifacts.
Glint , Glow , Glare , and Rays , for example, take the main Source input and also an optional Mask input. For these, the source input is multiplied by the mask before generating the glints (or glows, glares), so where the mask is black no glints are generated, and where it is white they are generated as usual. This method prevents the glints or glows themselves from being partially cropped by the mask. In addition these effects use the RGB colors of the Mask input to selectively colorize the resulting glows, glints, or glares. The red areas of the mask will produce red glows, glints, or glares, and so on.
In Blur effects, the areas which are masked out are never blurred, so they do not blur into the masked-in regions. If a mask were instead applied afterward, the pixels behind the mask would be blurred over the edge of the mask and into the final image. As an example, say you have a clip with white text over a black background. If you put that clip into both the Source and Mask inputs of Blur, the black background will not be blurred into the text, since the black pixels are all masked out.
Some OFX host products, such as Toxik and Fusion, have their own native masking inputs on every effect. These inputs simply composite the original source over the normal result where the mask is black. The plug-in doesn't use that input in its processing.
In Fusion, the native masking input is called Effect Mask and it's blue to distinguish it from the Sapphire Mask input, which is white. In Toxik, the native Masking input is always last and is colored black, whereas the Sapphire Mask input is gray like other inputs.
Alpha is processed as just another input channel like R, G, and
B. Effects in this category include: AutoPaint, Mosaic, Blur,
BlurMotion, RackDefocus, all Wipes, all Dissolves, Distort, DistortBlur,
DistortChroma, all Kaleidoscopes, all Warps, Shake, and MathOps.
Alpha is copied from the first input to the output. In this
case the effect doesn't use the Alpha channel, but it is passed
through unchanged from the first input to the output. Effects in this
category include: BandPass, BlurChroma, ClampChroma, DuoTone,
EdgeDetect, Embosses, Etching, HalfTones, Hotspots, DistortRGB,
Monochrome, Pseudo_Color, Psykos, Sharpen, Sketch, Sparkles, Streaks,
Threshold, and Zebrafy.
- Some other effects pass the input Alpha channel through, and also add some opacity where the effects are applied. An Affect Alpha parameter is included in these effects which allows adjusting the amount that the alpha channel is affected. The effects in this category are: LensFlare, all Glows, all Glints, Glare, EdgeRays, Rays, and all Zaps.
Some OFX host products, such as Nuke and Fusion, represent RGBA images in pre-multiplied format, where the RGB are assumed to be scaled by the opacity. Other hosts such as Toxik, Baselight, and Film Master represent RGBA in non-premultiplied or straight format. Sapphire effects use pre-multiplied format internally, and will automatically convert as needed depending on the host product's format. The Affect Alpha parameter which is available in most lighting effects tends to be less necessary in hosts that use pre-multiplied RGBA format, and it defaults to 0.0 for these hosts, but defaults to 1.0 for hosts that use straight RGBA format.
OFX allows you to adjust the pixel aspect ratio in the Composition Settings menu, and Sapphire Plug-ins read this value to give the appropriately scaled results.
If necessary, you can override the pixel aspect ratio for all Sapphire Plug-ins by changing the value of force_pixel_aspect_ratio in the s_config.text file.
The pixel aspect ratio makes no difference for basic pixel processing effects such as color processing or compositing.
On Mac the config file is:
/Applications/BorisFX/Sapphire 2022 OFX/config/s_config.text
On Windows the config file is: C:\Program Files\BorisFX\Sapphire 2022 OFX\s_config.text .
On Linux the config file is: /usr/genarts/SapphireOFX/s_config.text .
Custom Lens Flare types can also be made by editing the s_lensflares.text file, in the same directory as the config file above. New flare types will automatically appear in the menu of the S_LensFlare plug-in.
Resolve: Several effects don't blur correctly in Resolve. We've identified
the issue and are working with Blackmagic to fix the problem.
The list of effects and parameters with this issue are:
- Motion Blur in FilmRoll
- Motion Blur in StripSlideTranition
- Blur Amount in SwishPan
- Motion Blur in Swish3d
- Motion Blur in WhipLash
- Blur as a result of Z-Dist, Shift, or Rotate in BlurMotionCurves
- Trimming clips from the head may invalidate the Mocha track.
- Any S_Effect saved with an earlier version containing WarpDrops will render incorrectly after installing Sapphire 11. The effect can be fixed by clicking "Edit Effect" to open Builder, and then clicking "OK" to update the effect to Sapphire 11.
- Mocha tracking in Resolve is only supported in Resolve 14 Studio and Resolve 12.5 Studio, not the free versions.
- Nuke: Mocha mask creation on effects connected to generators (color wheel, checkerboard etc.) only works if you move the playhead to the end of the generator clip.
- Vegas Studio Pro: Mocha mask creation in an effect applied as "Insert generated media" works, but frame numbers look too large in Mocha. However when exiting Mocha, the animated mask has the proper speed and duration.
- Vegas Studio Pro: Mocha UI will always start at the beginning of the clip, regardless of where the playhead is in the host.
- Silhouette: Mocha tracking is not supported
- In LensFlareAutoTrack the hotspot may move around if the resolution changes and the hotspot_shift parameter is set to any value other than zero. If using the hotspot_shift parameter always work in full resolution.
- Baselight: Mocha tracking will appear to work in the UI, but rendering will fail.