-
-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rework transform align property and promote it to GeometryInstance3D #8367
Comments
Unlikely from my point of view, it needs to happen on CPU every time the objects are drawn. Additionally, as it happens on CPU, it won't work for particles. |
Billboarding currently happens on the GPU using BaseMaterial3D's billboard property and GPUParticles3D's transform align property. I'm curious why it would need to happen on the CPU. While more flexible, wouldn't it be much slower to do on the CPU when you have large numbers of instances? |
Sorry, my bad for being unclear in the proposal. The proposed interface is on a user level. On an implementation level, we should have different implementations depending whether it's a multimesh/particle (here it should happen on the gpu like it already does) and it should happen on cpu only for meshinstance. |
By the way, how would compatibility be handled? Would existing billboard properties remain functional but deprecated? Would they be hidden from the inspector if set to their default value? |
We can leave them there for now, then hide them from inspector later, i suppose It will however be a pain with standard material + particle animation .. |
We discussed this extensively in today's rendering meeting but didn't come to any firm conclusions. Here are some of the major points we discussed:
|
Would it be okay to start and implement this proposal for particles only and in the copy shader? |
Absolutely! |
Describe the project you are working on
GodotEngine and VFX.
Describe the problem or limitation you are having in your project
There's one too many ways of doing billboarding right now, and one too many proposal.
This proposal should supersede:
And complementary to:
Describe the feature / enhancement and how it helps to overcome the problem or limitation
Billboarding/Transformation (TransformAlign) is promoted as a property of
GeometryInstance
instead. It enables the following behavioursDescribe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Offer the following options on
GeometryInstance
Previous section cases would be implemented as follows
Case 1.
RotateAround: (any), RotationSource: Custom.x
Case 2:
RotateAround: (any), Billboarding: 3D
Case 3:
RotateAround: Y (assuming we're using a quad), Billboarding: Screen, RotationSource: None
Case 4:
RotateAround: None, Billboarding: Screen, RotationSource: Custom.x
We can also consider adding presets for normal particles, world-particles (align Y + Billboarding3D), trails.
NOTE: these modes will not be on by default unless converted from the particle's
TransformAlign
property.If this enhancement will not be used often, can it be worked around with a few lines of script?
It solves inconsistencies in the engine
Is there a reason why this should be core and not an add-on in the asset library?
It solves inconsistencies in the engine
The text was updated successfully, but these errors were encountered: