Open KoBeWi opened 3 years ago
I'll look at designing icons for the GPUParticles nodes you mentioned on the list.
There may be a problem with abstract classes having an icon. Most of the time they're not so useful to the end user (see limitations like #42830, or confusions like #43336), so I think they shouldn't attract much attention.
Perhaps we can use the functionality added in #45924 and make those abstract classes to have icons completely desaturated. As representative icon, either the first or commonly used icon of derived classes can be chosen automagically.
IMO it's enough that their name is grayed out. Maybe the icon could be slightly translucent. It's still better than randomly showing Node in the middle of the list.
Also the issues you linked aren't really related.
Maybe the icon could be slightly translucent. It's still better than randomly showing Node in the middle of the list.
This is a good idea, but I think it should be done in a separate PR (ideally in the Tree display itself if possible).
Also the issues you linked aren't really related.
Sorry, may I ask why?
When adding a node right now, what user sees is a few random nodes with default icon and grayed out names. I don't see how adding an icon would make someone more likely to think "I should try extending this class" than now. They aren't even clickable. (also CanvasItem already has an icon and it doesn't cause problems)
Your reasoning is valid to some extent, but I think it's safe to say that users (especially beginners) typically interpret classes that have a custom icon to be more useful than those that don't have an icon. The fact that a class has an icon signifies that the class is frequently used in projects, otherwise it wouldn't have an icon (minus the happenstance of a contributor drawing an icon for less frequently used class for the sake of it). 🙂
Under this interpretation, it means that beginners are more likely to search the built-in documentation for those classes that have a custom icon. More experienced people will try to extend the base class via script once they find it in the documentation, which will lead to limitations I linked in #42830, #43336 and alike (#46073).
(also CanvasItem already has an icon and it doesn't cause problems)
This is true because that's quite a core class which users are unlikely to touch/extend, unlike other more specific classes like CollisionObject
which are tied to specific use cases to be actually useful in games out of the box.
More experienced people will try to extend the base class via script once they find it in the documentation, which will lead to limitations I linked in #42830, #43336 and alike (#46073).
Then they will become even more experienced by learning that they can't. We could state in the docs that the class is abstract and you can't extend it.
Yeah but that would reveal the fact that abstract/base classes in Godot cannot be extended via script, which isn't something nice documenting, but worth implementing. 😛
I personally think that we should refrain documenting limitations as a way to fix problems in Godot, especially when expectations go against the way how something is possible or not possible to do in comparison with other engines (those features which are not specific to Godot), unless there's truly no way of fixing those limitations. Being able to extend the base/abstract class is OOP, documenting that Godot cannot do this goes against core principles, don't you think?
On topic, I'm not against adding custom icons for base classes, but that's just something to be aware of while improving the UI/UX!
The VisualShaderNode resources don't have any icons currently. Do you think it's worth designing individual icons for them? If not, we should probably create a generic icon for all of them to assign to each resource that inherits from VisualShaderNode. This would help them stand out from other classes in the Create New Resource dialog.
What would such an icon look like? cc @Chaosus
@KoBeWi you missed VisualScripts nodes which also lack icons as VisualShaderNode's. There are also several new nodes added after 15 Feb which also lack unique icons.
Do you think it's worth designing individual icons for them?
I think some kind an icon can be created. That would help to notify users that it is used for creating visual effects. That first idea which comes to my head:
And VisualShaderNodeCustom
decides a unique icon because it can be actually used very often to create plugins.
List of VisualShader and VisualScript icons (non-abstract classes only):
VisualShaderNodeBillboard
VisualShaderNodeBooleanConstant
VisualShaderNodeColorConstant
VisualShaderNodeFloatConstant
VisualShaderNodeIntConstant
VisualShaderNodeTransformConstant
VisualShaderNodeVec3Constant
VisualShaderNodeBooleanUniform
VisualShaderNodeColorUniform
VisualShaderNodeTextureUniform
VisualShaderNodeCubemapUniform
VisualShaderNodeTexture2DArrayUniform
VisualShaderNodeTexture3DUniform
VisualShaderNodeTextureUniformTriplanar
VisualShaderNodeFloatUniform
VisualShaderNodeIntUniform
VisualShaderNodeTransformUniform
VisualShaderNodeVec3Uniform
VisualShaderNodeClamp
VisualShaderNodeColorFunc
VisualShaderNodeColorOp
VisualShaderNodeComment
VisualShaderNodeCurveTexture
VisualShaderNodeCurveXYZTexture
VisualShaderNodeExpression
VisualShaderNodeGlobalExpression
VisualShaderNodeCompare
VisualShaderNodeCubemap
VisualShaderNodeCustom
VisualShaderNodeDeterminant
VisualShaderNodeDotProduct
VisualShaderNodeFaceForward
VisualShaderNodeFloatFunc
VisualShaderNodeFloatOp
VisualShaderNodeFresnel
VisualShaderNodeIf
VisualShaderNodeInput
VisualShaderNodeIntFunc
VisualShaderNodeIntOp
VisualShaderNodeIs
VisualShaderNodeMix
VisualShaderNodeMultiplyAdd
VisualShaderNodeOuterProduct
VisualShaderNodeParticleAccelerator
VisualShaderNodeParticleOutput
VisualShaderNodeParticleBoxEmitter
VisualShaderParticleRingEmitter
VisualShaderParticleSphereEmitter
VisualShaderNodeParticleConeVelocity
VisualShaderNodeParticleEmit
VisualShaderNodeParticleMultiplyByAxisAngle
VisualShaderNodeParticleRandomness
VisualShaderNodeSDFRaymarch
VisualShaderNodeSDFToScreenUV
VisualShaderNodeScalarDerivativeFunc
VisualShaderNodeScreenUVToSDF
VisualShaderNodeSmoothStep
VisualShaderNodeStep
VisualShaderNodeSwitch
VisualShaderNodeTexture
VisualShaderNodeTexture2DArray
VisualShaderNodeTexture3D
VisualShaderNodeTextureSDF
VisualShaderNodeTextureSDFNormal
VisualShaderNodeTransformCompose
VisualShaderNodeTransformDecompose
VisualShaderNodeTransformFunc
VisualShaderNodeTransformOp
VisualShaderNodeTransformVecMult
VisualShaderNodeUVFunc
VisualShaderNodeUniformRef
VisualShaderNodeVectorCompose
VisualShaderNodeVectorDecompose
VisualShaderNodeVectorDerivativeFunc
VisualShaderNodeVectorDistance
VisualShaderNodeVectorFunc
VisualShaderNodeVectorLen
VisualShaderNodeVectorOp
VisualShaderNodeVectorRefract
VisualScriptBasicTypeConstant
VisualScriptBuiltinFunc
VisualScriptClassConstant
VisualScriptComment
VisualScriptComposeArray
VisualScriptCondition
VisualScriptConstant
VisualScriptConstructor
VisualScriptCustomNode
VisualScriptDeconstruct
VisualScriptEmitSignal
VisualScriptEngineSingleton
VisualScriptExpression
VisualScriptFunction
VisualScriptFunctionCall
VisualScriptGlobalConstant
VisualScriptIndexGet
VisualScriptIndexSet
VisualScriptInputAction
VisualScriptIterator
VisualScriptLocalVar
VisualScriptLocalVarSet
VisualScriptMathConstant
VisualScriptOperator
VisualScriptPreload
VisualScriptPropertyGet
VisualScriptPropertySet
VisualScriptResourcePath
VisualScriptReturn
VisualScriptSceneNode
VisualScriptSceneTree
VisualScriptSelect
VisualScriptSelf
VisualScriptSequence
VisualScriptSubCall
VisualScriptSwitch
VisualScriptTypeCast
VisualScriptVariableGet
VisualScriptVariableSet
VisualScriptWhile
VisualScriptYield
VisualScriptYieldSignal
I'm working on porting VisualShader icons from 2.x. They are still available in an old commit of the godot-design repository: https://github.com/godotengine/godot-design/tree/a492bb3d761bd13d24777ef520318473077a98f6/assets/icons/svg
Edit: Visual shader node icons ported in https://github.com/godotengine/godot/pull/51702.
Many of the icons on this list have been added. The only node icons that are left are PhysicalBone2D and most of the abstract classes.
Not blocking for 4.0.
Godot version:
a59286f
Issue description:
Some abstract nodes are missing icons. I noticed that they can have icons, so there's no reason not to add them.
Below is the list of nodes currently without icons. * are non-abstract nodes that were added in 4.0.