Full In-Experience Release of CSG v3

Hello developers,

We are pleased to announce that CSG v3 (Constructive Solid Geometry) will exit beta and be released on August 25, 2022.

This is an in-experience release for the new backend framework. The framework was rewritten to allow us to move forward as v2 had severe limitations. With this update, each face will inherit the color of the donating object, instead of everything being the color of the base object when completing a CSG operation. There should be no impact to experiences at all, except for a possible performance uptick.

Please note that developers are not required to enable v3 as this is a fully compatible swap.

However, if you wish to test the beta before its full release on August 25, please sign up here, and let us know if you have any questions or concerns!



This topic was automatically opened after 10 minutes.

This feature was long overdue, glad to see its finally here.


Honestly, the color-negating limitation chased me away from CSG for years. I kept using V1 up until V2 became mandatory. Are there any other improvements V3 brings, such as resolving loose edges/vertices? Because exporting a Union into Autodesk reveals a lot of microscopic gaps and extraneous geometry (merging by distance reduces the poly count considerably.)


Interesting. I wonder if this’ll improve run-time based negates.

I think this is more a problem with the exporter. Try exporting an R15 rig, it’ll have the same issues.


That is very interesting. It’s nice to see changes with things that have been untouched for so long.


I always thought it was caused by Studio’s algorithms trying to compensate for n-gons and other operation issues. Because Booleans in Maya don’t do that. Maybe it’s just a formatting issue between the two programs? Not a seamless transition (no pun intended!)


Pretty short and quick question, does V3 provide performance upgrades for high-part places & high-tri-unions? And if it does, do they apply to already existing parts and unions?


This is enabling CSGv3 for in game APIs (UnionAsync and SubtractAsync), not the studio APIs. There aren’t any targeted improvement targeted after high part places. Your question seems to be directed more at studio? Let me know if I’m reading this wrong.


So I have encountered a problem with what I can only suspect is an alignment issue having to do with the negate parts? But whenever I negate or try to union some specific unions that when I used V1 and V2 it was fine, however when I am using V3 there seems to be some issues here is an example:

This is the original model: https://create.roblox.com/marketplace/asset/899871657/Clone-Trooper-Helmet?pageNumber=1&pagePosition=2&keyword=clone+trooper+helmet


We actually had this feature back with V1… as long as you didn’t run into errors trying to get a model, which you sometimes did more than not. I am glad to see it is back for V3 and exiting the beta.


CSG V3 has been in Studio for months, so if the union was made in Studio recently, then that’s what CSG V3 gives.


I have issues with some older union parts not updating their collisions with CollisionFidelity property. I have to separate them manually then change all their part collisions and then union again. This is a huge issue for my game right now.


I think this is similar to my issue, is it effective? And how are you fixing that issue.

1 Like

This will also occur in blender. Attempting to apply a subdivision modifier will obviously not work since the faces aren’t joined together.

Of course, a simple fix of this would be:

This also occurs for normal parts, characters, etc.


Hi this is super awesome! I had some questions.

1:) Will we see client-sided support for CSG scripting? Having it on the server causes extreme delay.
2:) What is the performance difference between a union and a part? ie is it better to have 100 parts, or 1 union.

1 Like

You mean this?

What would exactly change?


I’ve been running with the CSGv3 beta for so long, I didn’t even know it hadn’t been released. Great work on this! CSGv3 has become essential to my workflow because of how simple and efficient it is, and how it can create otherwise complex shapes in a split second.

1 Like

Is there any file format changes regarding the physics?
Currently we need to extract collision geometry data for some specific physics stuff in Phantom Forces.

1 Like

If it’s happening in Blender too, then we can rule out a file format conversion bug when exporting into Autodesk. Which begs to question: Why would Roblox deliberately use unattached vertices? Is there some physics or rendering reason why everything is free-floating? I studied computer science and game design for 7 years, and I cannot think of any technical advantage this would provide.