Welcome to the Developer Update for May 7, 2026.
Today’s featured world is Vintage Camera Shop by えるけーにっひ.
Announcements
花見 !!
Hanami continues! You have until June 1 at 1PM PT to buy 'em up.*
As noted last time, it’s likely shop content will stay up for two months instead of just one in the future. Although it’s still up in the air! Just letting you know!
And hey, maybe there will be new stuff soon. Maybe tomorrow, even…
Pride Month is Coming Up! See You There?
We’re (still!) looking for LGBTQ+ community submissions for posters, logos, and floats (floats are invite only!).
Interested in submitting a poster or logo? Check out our Pride Guide for content specs and guidelines.
Here’s the form for Posters and here’s the form for Logos!
Submissions close at 12PM PST on May 15, 2026!
What Else Are We Planning for Pride?
We’ll be trying some new things during Pride, as well as bringing back the charity component for gifting/buying VRC+.
Keep an eye out on our socials on June 1 around 1pm PT for our kickoff!
2026.2.1 is Out!
Last week, we released 2026.2.1. You can listen to me talk to you about it here:
In short, this release brought Avatar Accessories, Avatar Performance Gating, and more updates to the Loading Screen!
Avatar Accessories. sort of a big deal!
yea, they are!
Avatar Accessories are exactly what they sound like! They’re accessories that you can put on your avatar: think a hat, or sunglasses, a halo, a tail, or… well, you get the idea.
They are performant little additions you can toss on your avatar… and they stay there! That means that they’re not quite like Items, where they despawn after you leave a world. No, with Accessories, these are always on your avatar. It’s basically like opening up Unity and adding something to it, except… right from your VRChat client.
We’ve got a few of em’ in the shop. We put out a video showing them off. Look at them!!!
VRCTween Will Soon be Available in the SDK Open Beta!
So, what’s VRCTween? The short version: it makes animating things in your world a lot easier. Fading and swishing UI around, moving objects smoothly from A to B, scaling something in, fading a color, that kind of thing. Stuff that normally takes a pile of Update() code can now be done in one line:
door.TweenPosition(openPosition, 0.5f, VRCTweenEase.OutExpo);
You can Tween almost anything. not just transforms. Light intensity and color, AudioSource volume, CanvasGroup and Graphic alpha, RectTransform anchors, sprite color, slider values, shader properties on renderers. Renderer tweens use MaterialPropertyBlock so you’re not accidentally instancing materials.
Check out the documentation and the example world to get started.
What’s New Since Closed Beta
We got a lot of great feedback from Closed Beta testers, thank you! Here’s what made it in.
No more casting this. UdonSharpBehaviour now implements IUdonEventReceiver, so you can pass this directly to OnComplete and other callbacks.
Cancelable delayed calls. VRCTween.DelayedCall(this, nameof(_DoLater), 3f) is like SendCustomEventDelayedSeconds, but it returns a handle you can Kill() to cancel.
Late joiner sync. Pair Goto() with Networking.GetServerTimeInSeconds() and you can catch late joiners up to a synced animation in one line. There’s a full pattern in the docs.
Custom easing curves. SetEase(AnimationCurve) lets you plug in any Unity curve for easing, for when the preset eases aren’t quite right.
Path tweening. TweenPath and TweenLocalPath move objects along a sequence of waypoints. Linear gives you sharp corners, CatmullRom gives you smooth curves.
Tween reuse. Tweens no longer auto-kill on completion, so Restart() and OnComplete patterns work properly now. Combined with ChangeEndValue, you can keep a single handle alive and reconfigure it instead of allocating a new tween every time.
As always, if you run into anything, let us know in the feedback channel.
Client-side Texture Compression
We’ve home-cooked a PC and Android/iOS memory compression algorithm for dynamically loaded images. This uses a compute shader to squeeze down Stickers, Prints, profile banners, user icons… you get the idea, down to ASTC (Android and iOS) and BC7 (PC). The compressed images will now take 25% as much RAM and help ease just a tiny bit of memory bandwidth and VRAM in your system.
For the moment we’ve left Udon images alone. It’s tricky to detect when the image in question absolutely needs to be pixel-perfect, and we don’t want to break any existing worlds if we can help it.
Signed Distance Fields Generation!
If you’re into graphics programming, you probably know what a Signed Distance Field is. We’ve used them forever in the form of TextMeshPro to get extremely detailed text that doesn’t completely tank your GPU.
Basically, by using them we can precisely pick how much of a pixel is covered by a piece of an image, without them ending up super aliased like you do with Cutout-style images. You can also scale them up a ton and they just keep being more detailed.
So what did we do? We also implemented a runtime GPU SDF generator! These SDFs allow foliage, grass, text, fur, hair cards, you name it, all to be perfectly antialiased and scale up beautifully, while still being transparent.
As it turns out, it’s also pretty easy and cheap to figure out which images would look better as a ‘cutout’ at runtime by tallying up pixels that are partially transparent and far from an edge, so we were able to apply these to a bunch of things that already exist in VRChat!
To start we’re going to be rolling them out in a couple of places. Stickers and Emoji are going to be up first, with other content coming soon after. Speaking of Emoji, they’re getting a little facelift too! They should no longer be super aliased from a distance. We added a clamping scheme that still allows mipmapping to work!
A SDK will release in the near future with this capability to let you use it on your own worlds and avatars soon! Adding support to your own shaders is just a 2-3 line change.
Also… uh, well… uhhhhhhhhhhh
So, this is a bug with Accessories:
We’re working on it. It’s complicated. The sound was added in post, you know, for extra impact.
We usually don’t share this sort of thing, but how can you not?
Conclusion
That’s it for this week! We’ll be back on the 21. byeeee





