Skip to main content

Release 3.7.1

Momo the Monster
VRChat Developer

Summary

This update exposes some highly-requested functions to Udon, adds high-quality DPID mipmapping support (opt-in beta), and optimizes PhysBone gizmos.

New features

  • Exposed the following C# features to Udon:
    • Array.Sort() allows Udon to sort Arrays in various ways, which is useful for managing Players in an Udon world. Addresses this Canny post.
    • System.Random allows Udon to create deterministic random seeds, as well as random Bytes and Doubles, extending the possibilities for randomness in Udon Worlds beyond what UnityEngine.Random can do. We exposed 4 new functions, addressing this Canny post.
    • System.Text.StringBuilder allows Udon to build and reformat strings with better performance than the existing string functions. We exposed 18 new functions and properties, addressing this Canny post.
    • System.Text.RegularExpressions - RegEx is a powerful system for searching, matching and replacing patterns within strings of text. We exposed 14 new functions and properties, addressing this Canny post.
    • System.Type allows Udon to interact with data types, and can be useful to advanced creators who want to validate object types at runtime. We exposed 67 new functions and properties, addressing this Canny post
  • The SDK now supports "Detail Preserving Image Downscaling" (DPID) mipmaps, which greatly improve the sharpness of world/avatar textures.
    • ⚠️ We're still working on this one! It is currently a BETA feature and requires explicit opt-in via the "Settings" panel in the SDK control panel.
    • DPID replaces the mipmapping algorithm on all textures with the "Kaiser" filtering algorithm selected. "Box" filtering is unaffected.
      • The SDK build panel already encourages you to enable "Kaiser" filtering, which in turn now enables DPID.
    • Unlike the original algorithm, VRChat's version of DPID supports transparency. Enable Alpha is Transparency to avoid filtering artifacts on the edges of transparent textures.
    • The original algorithm implementation was published under BSD 3-Clause (a permissive license like MIT). To 'pay it forward,' we've released our compute shader version under the same license! You can find it in the SDK: com.vrchat.base\Editor\VRCSDK\Dependencies\VRChat\Resources\PerceptualMipmapping\PerceptualPostProcessor.compute.
  • PhysBone gizmo rendering has been optimized.
    • Editor gizmos for PhysBones with non-0 radius setting now render 2-3x faster.
    • Editor gizmos of multiple PhysBone components in the hierarchy of the selected object now render 1.5-2x faster.
    • Addresses this Canny post.

Fixes & Changes

  • The SDK now blocks avatars containing particle systems or trail renderers set to destroy themselves when they finish. Particle systems on the avatar's root that disable themselves when they finish are also not allowed.
  • Fixed typo in the Expression Parameters inspector showing used memory as bytes rather than bits.
  • Fixed SDK Control Panel setting scripting defines every IMGUI redraw (improves performance slightly).
  • Improved Lightprobe Hack behavior in situations with lots of ambient lighting.
  • Fixed how empty expression parameter lists are filled with default parameters. Expression parameter lists can be empty again.
  • Removed internal warning messages related to PhysBone and Constraint Burst jobs sometimes appearing when opening a project or recompiling scripts.

Fixes & Changes to DPID in 3.7.1-beta.2

  • Fixed alphaIsTransparent over-emphasising incorrect details.
  • Fixed non-sRGB textures (e.g. normal maps) diverging at higher mip levels.
    • This should now be consistent with sRGB behavior.
  • Fixed edge cases where a single fully-transparent pixel would get counted when the others are all the same color.
  • Fixed null reference exceptions being spammed in the log when importing SDK 3.7.1 for the first time.
    • DPID is now correctly applied to all mipmaps that previously used Kaiser.
  • Simplified and streamlined the compute shader.
  • Reduced DPID-related log spam.

Fixes & Changes to DPID in the final version

  • Marked DPID as "BETA" and switched to opt-in.
  • Set "conservative mode" to be the default, since it seems to give better results overall.
  • Fixed normal maps (again).
  • Fixed support for lightmaps.
  • Support DPID mipmaps on HDR and Float format textures.

Known Issues

  • The first time you open a Scene and select a GameObject inside a prefab with a U# Behaviour, the GUI for the component directly below that U# Behaviour will not show its GUI. Deselecting and re-selecting the prefab fixes this.
  • Buffer Particles don't work as they did in Unity 2019, there is a workaround to fix them from community member hfcRed here.
  • Unity 2022 sometimes causes Rider's debugger to stop for unhandled exceptions in Unity's IMGUI.

Release 3.7.0

Momo the Monster
VRChat Developer

Summary

This update adds VRChat Constraints, Unity AI Navigation, improves Avatar editor panels, upgrades Standard Lite, implements new Player State APIs, and more!

New features

  • ⚠️ The SDK now blocks uploads if the last built avatar exceeds the new reduced download or uncompressed size limits for Avatars.
  • This release integrates Unity 2022's AI Navigation package, which allows you to create non-player characters (NPCs) that can intelligently move around the game world, using navigation meshes that are created automatically from your Scene geometry.
  • Some Avatar editor panels have been updated:
    • The Expression Parameters and Expressions Menu editors have been rebuilt from the ground up.
    • The updated Expression Parameters editor:
      • Allows you to reorder elements via drag & drop easily
      • Uses a progress bar style meter to indicate how many synced bytes the parameters use
      • The Expression Parameters assets now have a new icon, making them easier to see in your Assets folder
    • The updated Expressions Menu editor:
      • Shows the current Menu Controls count alongside the maximum number of Controls you can add
      • Shows the types of each Control at-a-glance
      • Allows you to reorder the Controls via drag & drop easily
      • Has improved and updated warnings and errors
      • Has improved layout for editing all the Control types
      • For Sub-Menu Controls - allows for quick creation of a new Menu asset and provides a button to open the editor for the submenu with a single click
      • The Expressions Menu assets now have a new icon, so they're easier to see in your Assets folder
  • Massively upgraded Standard Lite shader!
    • Considerably improved performance in the baseline.
    • Non-linear Lightprobe sampling: This will avoid unusual stark contrast for real-time objects in a scene.
    • Lightprobe specularity: This will fall back to using lightprobes in the scene to generate specular highlights if no reflection probes are present.
    • Geometric Specular AA: This will avoid jagged/aliased edges for shiny objects at a distance/at sharp angles by tweaking the roughness to add just enough to stretch any highlights over at least one extra pixel - this should reduce the apparent 'screen door' effect on a lot of geometry.
    • Spherical Harmonics lightmap compatibility through MonoSH (Bakery): This allows you to have the appearance of real-time lighting without the cost, by having every pixel of a lightmap encode light spread and direction, and otherwise treating it as being lit that way. The MonoSH version in particular avoids additional memory cost by squeezing everything into just one extra map. Baking MonoSH-compatible lightmaps requires the external Bakery plugin.
  • Added OnLanguageChanged Udon event that gets called on join and when users select a new display language.
  • Added an info-level message in the SDK build panel that encourages using Kaiser mipmapping for higher clarity.
    • We talked about the new DPID mipmapping algorithm in a dev update before. This is a first step towards that - though the algorithm is not included yet, so this will recommend default Unity Kaiser mips for now.
  • Added a gizmo to VRCSceneDescriptor to visualize the respawn height.
  • The VRC Scene Descriptor now shows a gizmo in your scene for each spawn defined in the spawns list.
  • Auto-converting Dynamic Bones components into PhysBones is now required before uploading.
  • Implemented some new player state APIs available via Udon:

VRChat Constraints

VRChat Constraints are a full-featured replacement for Unity's built-in "Constraint" components. These are available to use on avatars. Existing constraint setups can be auto-converted.

In the client, all constraints will be auto-converted on load, but it is still recommended to use the SDK option to do so, as it allows direct testing and even further improved performance.

VRChat Constraints are supported on Mobile avatars! Check out our updated performance rank page for limits.

VRChat Constraints also have a few unique features, like native "world constraints". Go check out the extensive documentation for more info!

Fixes

  • Fixed issue with broken input events in ClientSim, addressing this Canny issue.
  • Fixed world uploads failing in some cases when using inline sprites in TextMeshPro labels.

Breaking API Changes

As the minor version bump indicates, 3.7.0 contains breaking changes for user tooling. In particular, all exposed information and APIs related to DynamicBones have been removed without replacement. As uploading with DynamicBones is no longer supported, user tooling should be updated to reflect that and only support PhysBones going forward.

Fixes & Changes relative to 3.6.2-beta.1

This supercedes the 3.6.2 series.

  • Improved stability of the new editor panels.
  • Fixed some issues displaying code-generated avatar asset files, as many community tools do.
  • Fixed avatar expression menu missing parameters between SDK upgrades and restarts.
  • Fixed empty control names being incorrectly overwritten with "New Control".
  • Fixed boolean Toggle menu entries not working as expected in-game (toggles created in 3.6.2-beta.1 or 3.6.2-constraints.4 may need to be recreated).
  • Sub-assets of expression menus will now copy the target parameter object from the root asset if set.
  • Fixed network IDs not being displayed in the Scene Descriptor inspector.

Fixes & Changes in 3.7.0-beta.2

  • Fixed inconsistent loading of Expression Menu and Parameter icons in editor.
  • Fixed issue that caused Diffuse and BumpedDiffuse mobile shaders to appear all white.

Constraints Fixes

  • Fixed rotation constraints locked in exactly one axis sometimes appearing at the wrong rotation. (Woo, gimbal lock.)

  • Fixed parent constraints potentially shifting in the SDK when Activate is pressed.

  • Improved stability for constraints that reference one another in a loop.

  • Fixed more issues with super-low weight constraints.

  • Fixed offsets not always being calculated correctly for unlocked VRChat position constraints.

  • Made corrections to how aim and look-at constraints behave when they are solving in local space.

  • Fixed constraint sources losing their references when selecting multiple VRChat constraints and editing their sources lists at the same time.

  • Improved support for community made tools interacting with the constraints auto-converter in the SDK.

Fixes & Changes in the final version

  • Further adjustments to the exposed API for constraints. Refer to the constraints documentation for more info.
    • This includes a parameter to indicate if a conversion was triggered by clicking "Auto-Fix".
  • Improved parameter assignment for submenus in the expression menu editor.
  • Fixed incorrect LFS references in .dylib files.

Known Issues

  • The first time you open a Scene and select a GameObject inside a prefab with a U# Behaviour, the GUI for the component directly below that U# Behaviour will not show its GUI. Deselecting and re-selecting the prefab fixes this.
  • Buffer Particles don't work as they did in Unity 2019, there is a workaround to fix them from community member hfcRed here.
  • Unity 2022 sometimes causes Rider's debugger to stop for unhandled exceptions in Unity's IMGUI.

Release 3.6.2-beta.2

Momo the Monster
VRChat Developer

Summary

This update adds AI Navigation, improves Avatar editor panels, implements new Player State APIs, fixes input events in ClientSim, and fixes World uploads failing when using inline sprites.

New features

  • This release integrates Unity 2022's AI Navigation package, which allows you to create non-player characters (NPCs) that can intelligently move around the game world, using navigation meshes that are created automatically from your Scene geometry.
  • Some Avatar editor panels have been updated:
    • The Expression Parameters and Expressions Menu editors have been rebuilt from the ground up.
    • The updated Expression Parameters editor:
      • Allows you to reorder elements via drag & drop easily
      • Uses a progress bar style meter to indicate how many synced bytes the parameters use
      • The Expression Parameters assets now have a new icon, making them easier to see in your Assets folder
    • The updated Expressions Menu editor:
      • Shows the current Menu Controls count alongside the maximum number of Controls you can add
      • Shows the types of each Control at-a-glance
      • Allows you to reorder the Controls via drag & drop easily
      • Has improved and updated warnings and errors
      • Has improved layout for editing all the Control types
      • For Sub-Menu Controls - allows for quick creation of a new Menu asset and provides a button to open the editor for the submenu with a single click
      • The Expressions Menu assets now have a new icon, so they're easier to see in your Assets folder
  • The VRC Scene Descriptor now shows a gizmo in your scene for each spawn defined in the spawns list.
  • The SDK now blocks uploads if the last built avatar exceeds the new reduced download or uncompressed size limits for Avatars.
  • Implemented some new player state APIs available via Udon:

Fixes

  • Fixed issue with broken input events in ClientSim, addressing this Canny issue.
  • Fixed world uploads failing in some cases when using inline sprites in TextMeshPro labels.

Fixes between 3.6.2-beta.1 and 3.6.2-beta.2

  • Improved stability of the new editor panels.
  • Fixed avatar expression menu missing expression parameters between SDK upgrades and restarts.

Known Issues

  • The first time you open a Scene and select a GameObject inside a prefab with a U# Behaviour, the GUI for the component directly below that U# Behaviour will not show its GUI. Deselecting and re-selecting the prefab fixes this.
  • Buffer Particles don't work as they did in Unity 2019, there is a workaround to fix them from community member hfcRed here.
  • Unity 2022 sometimes causes Rider's debugger to stop for unhandled exceptions in Unity's IMGUI.

Release 3.6.1

Momo the Monster
VRChat Developer

Summary

This release exposes additional TextMesh Pro components and other useful properties to Udon.

New features

  • Exposed three new TextMeshPro components to Udon.
  • Added two properties to BaseVRCVideoPlayer and exposed them to Udon.
    • int VideoWidth { get; }
    • int VideoHeight { get; }
    • These are also available in the subclasses VRCUnityVideoPlayer and VRCAVProVideoPlayer.
  • Added five voice-related getter methods to VRCPlayerApi and exposed them to Udon.
    • float GetVoiceGain()
    • float GetVoiceDistanceNear()
    • float GetVoiceDistanceFar()
    • float GetVoiceVolumetricRadius()
    • bool GetVoiceLowpass()

Fixes

  • Worlds with vastly more renderers than materials will now build faster.
  • Fixed a performance bottleneck when validating avatars after a local test build, especially when multiple avatars are present in the scene.
  • Fixed some issues where the Network ID Utility could get confused about duplicate GameObject paths.
    • Note that it still is not recommended or fully supported to have networked objects share the same hierarchy paths!
  • Fixed a missing reference error locking up the build panel if an audio clip was deleted or missing from an VRC_AnimatorPlayAudio state behaviour on the avatar.

Changes between 3.6.1-beta.2 and final release

  • Udon can now access the three new TextMeshPro components directly.
    • Only the properties listed in VRChat's documentation have been exposed.
    • The previously new VRC_TMP wrapper components have been removed.
  • ClientSim: Udon behaviours instantiated via other Udon scripts will now initialize right away and have variables and functions ready.

Known Issues

  • The first time you open a Scene and select a GameObject inside a prefab with a U# Behaviour, the GUI for the component directly below that U# Behaviour will not show its GUI. Deselecting and re-selecting the prefab fixes this.
  • Buffer Particles don't work as they did in Unity 2019, there is a workaround to fix them from community member hfcRed here.
  • Unity 2022 sometimes causes Rider's debugger to stop for unhandled exceptions in Unity's IMGUI.

Release 3.6.0

Momo the Monster
VRChat Developer

Summary

This release overhauls the World SDK UI, exposes new Udon functions, and fixes some issues across the SDK and ClientSim.

Supercedes release 3.5.3, which was available for beta testing but was not launched officially.