With the upcoming addition of PBR textures (yay!), I plan to use mesh’s a lot more, maybe even for the majority of my maps. Right now one problem I’ve repeatedly had with mesh’s is the automatic usage of backface culling (and for those who do not know, this is a feature that makes faces of a mesh in the back invisible assuming the player can not see those faces.) While I understand this feature is available so that meshes can be more performant, it doesn’t work well for every mesh. For example, complex and large combinations of mesh’s, vehicles, etc. can often be negatively affected by backface culling.
The problem is when backface culling incorrectly displays a mesh, many developers use something like the solidify modifier in Blender or something similar to basically add more geometry so there are no flat planes, this is basically a cheat to get past the backface culling issue.
When developers do something like this, this completely defeats the original purpose of backface culling entirely (to improve mesh performance) because developers end up adding more geometry.
Please give us the option to make a plane on a mesh double-sided so that we may have an easier time using a mesh workflow in our games without the struggle of fighting Roblox features which end up being counter-productive.
I don’t undestand why this should need to be a feature; going into blender and using the solidify modifier isn’t a “cheat,” either. Backface culling improves performance a lot more than you’d expect. You should just make sure that your normals are facing the correct way and to add faces where they’re needed to make the mesh multi-sided.
I consider this a cheat. Cheat is defined by Merriam-webster as:
3 : to elude or thwart by or as if by outwitting
//cheat death
The problem is backface culling improperly displaying my mesh, and the way we elude this problem is by using the solidify modifier, which is a cheat. By using the solidify modifier, we are adding an unnecessary amount of geometry when in an engine like Unity I can easily disable backface culling while still having reduced geometry and without causing any visual changes to our mesh.
I know how important backface culling is and how much it can improve performance, but while most of the time it works well, it doesn’t work perfectly for every mesh 100% of the time. And in these cases, it is a lot more beneficial to disable backface culling and simply let our mesh be displayed properly rather than adding geometry that is not needed which can visually change how my mesh was meant to look and hurt game performance.
I, of course, make sure the normals are facing the correct direction. And if I do not, I go back and fix it and reimport the mesh, but this has nothing to do with backface culling, this is an error by the artist which backface culling could display, but incorrect normals are not the error of the engine. Backface culling is an engine feature we can not disable.
This is exactly what I do not want to do. This is adding unnecessary geometry and complication. This adds more unnecessary work for a modeler and adding faces just to make a plane multi-sided could easily become messy process.
This needs to be a feature for all the reasons I mentioned above and simply that why should Roblox add backface culling automatically without giving developers the feature to disable it? And I don’t usually try and compare Roblox to other game engines feature-wise, but in this case, we are talking about a feature Roblox added already but didn’t add a way to disable it. Major game engines like Unity Engine and Unreal Engine provide features to make a plane 2 sided, there isn’t a reason to not have the feature to simply disable this.
Your argument against this feature is simply bringing in the technicality of my mesh. I am very obviously referring to how I want my mesh to be displayed as an artist, and how Roblox unlike other game engines and 3D packages does not give me the features I need to display the mesh how I want. Roblox may be technically displaying the mesh correctly based on its normals, but it is not displaying it like how I want it to be displayed.
And if you want your mesh to be displayed how you want it to be displayed, what stops you from taking five extra minutes to duplicate the faces and flip their normals in blender?
I have explained this several times already in this thread.
And once again, I am already aware I have to do this. Just duplicating the mesh and flipping the normals is the obvious solution, but it’s an unnessacary step that I should not have to take if Roblox were to add a feature to disable backface culling.
In specific not anymore as I’ve used solidify modifier for the time being, the scenario I’d probably say causes the most issues is in my experience (there may be more scenarios) is anything involving an interior or transparency. For example vehicles. It is currently difficult to make something like a vehicle mesh with transparent glass because when you look through it, part of the car is invisible due to backface culling. Not every vehicle game may desire a fully modeled interior so if we want to leave it simplistic with fewer tris but still make the frame of the outer vehicle visible on the inside, I am currently unable to do that as I can not make that mesh double sided.
Overall, once again I understand the purpose of backface culling but I feel developers should have the control over their mesh’s and decide what should be double sided or not. If a developer poorly optimises their mesh’s, doesn’t it only affect their game?
Two-sided faces are a dangerous for performance. The main reason is because a mesh is just a mesh of interconnected vertices with normals. To disable backface culling, you need to create a material, which is a shader. This means that complex calculations have to be done which include taking the original face, inverting it and then applying maps EVERY FRAME.
Most engines completely avoid this by just duplicating the geometry and inverting the normals. This is more quality of life than anything else.
Blender offers automatic tools to have normals point outwards. The function is called “Recalculate Outside”.
You should add (one or several) small repros to this post, then staff have a better idea of what exactly the use cases are for this. Currently it’s a little vague and hard to understand where exactly this problem would come up.
I personally think generally Roblox should solve rendering artifacts for you automatically as much as possible without requiring settings you would need to toggle that could have detrimental performance side effects.