Godot Version
v4.4.1
Question
I would like to use an additional color, exported as COLOR_1 in a GLB file from Blender.
I’m able to re-import the GLB to Blender with COLOR and COLOR_1 working.
The COLOR_1 data is also visible in Houdini.
In Godot Visual Shader, I’m using an expression node in the vertex shader with “color_1 = COLOR;” for the code, and color_1 set as a vector4 output. That works fine for COLOR, but does not work with COLOR_1 (I only see a grey material).
I’ve also tested it with FBX and got the same result.
Any help would be appreciated.
Here are some shots to clarify a little;
Those are the vertex color attributes in Blender, Col and Col_1:
I just found that this has been proposed as a new feature:
opened 02:37AM - 04 Oct 24 UTC
topic:import
topic:3d
### Describe the project you are working on
This can apply to any project.
…
### Describe the problem or limitation you are having in your project
There is not any way to import custom attributes from .gltf or .blend files. These are invaluable for use in shaders.
### Describe the feature / enhancement and how it helps to overcome the problem or limitation
GLTF supports [Application Specific Attributes](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes-overview).
> Application-specific attribute semantics MUST start with an underscore, e.g., _TEMPERATURE. Application-specific attribute semantics MUST NOT use unsigned int component type.
| Name | Accessor Type(s) |
| ------------ | ---------------- |
| `POSITION` | VEC3 |
| `NORMAL` | VEC3 |
| `TANGENT` | VEC4 |
| `TEXCOORD_n` | VEC2 |
| `COLOR_n` | VEC3<br>VEC4 |
| `JOINTS_n` | VEC4 |
| `WEIGHTS_n` | VEC4 |
|||
| `_MY_CUSTOM_ATTRIB` | SCALAR<br>VEC2<br>VEC3<br>VEC4 |
These attributes can be exported by 3D modelling software where supported.
Blender, when "export attributes" is enabled, will export any attributes that begin with an underscore.
Names will be converted to upper-case to conform with the spec.

### Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Add a virtual method to GLTFDocumentExtension that can map these application-specific attributes to Mesh.ARRAY_CUSTOM#
```gdscript
extends GLTFDocumentExtension
func _remap_custom_attribute(p_name: String) -> int:
if p_name == "_LAYERS": return Mesh.ARRAY_CUSTOM0
if p_name == "_BLEND": return Mesh.ARRAY_CUSTOM1
return -1
```
Potentially other attributes could also be remapped. Currently, only COLOR_0 is supported, for example:
```gdscript
if p_name == "COLOR_1": return Mesh.ARRAY_CUSTOM3
```
Blender will need to enable "export_attributes" when exporting to GTLF. This would require an extra checkbox, but alternatively be enabled by default as only attributes with underscores are exported, and unless the GLTFDocumentExtension method is implemented, would be ignored.
Because other attributes such as extra UV data may also be mapped to ARRAY_CUSTOM#, the importer should reject any ARRAY_CUSTOM# that already has data assigned and print a warning.
### If this enhancement will not be used often, can it be worked around with a few lines of script?
It can't be realistically achieved with GLTFDocumentExtension without going to great lengths to re-implement much of the importer logic in GDScript.
### Is there a reason why this should be core and not an add-on in the asset library?
GLTFDocumentExtension does not currently have the necessary hooks.
opened 11:09PM - 16 Oct 23 UTC
topic:import
topic:3d
### Describe the project you are working on
A diorama scene for my portfolio. T… he scene is meant to conform to a "paint-like" style, and is created in blender. My workflow involves scattering paint-like "brushstroke" geometry on surfaces using blender's geometry nodes. The geometry node graph assigns unique attributes to the vertices of each instanced plane, which are then used to store things such as sampled surface color, normal offsets, and randomized UV offsets. These are then read by (currently blender-only) shaders to add variation to each brush stroke. I am attempting to export the first asset for this diorama to godot, which will be used for the final render.
Here's the asset I'm attempting to export, rendered in blender:

### Describe the problem or limitation you are having in your project
Additional vertex color attributes are inaccessible in godot. Only Color_0 is accessible in the form of vertex color (or in shaders, `COLOR`). This makes each brush stroke look flatter and more uniform, as the variation between each stroke is limited to color and other generic attributes.
### Describe the feature / enhancement and how it helps to overcome the problem or limitation
Support and expose multiple Color_n attribute buffers per the glTF standard (see: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes).
### Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Update the glTF importer to read each mesh's attribute name and store values from attribute buffers on vertices (E.G. in the same way vertex colors are imported now). I don't know if the importer is already getting this data invisibly or not.
Expose these attributes to shaders, either as named inputs or through a generic `COLORN` name. This should work in a similar way to the existing COLOR input, depending on technical constraints.
Create a VisualShader node (vertex and fragment friendly) that reads these attributes.
### If this enhancement will not be used often, can it be worked around with a few lines of script?
No, this is core functionality. Workarounds involve restricting art pipelines and reducing fidelity.
### Is there a reason why this should be core and not an add-on in the asset library?
This should be core because the glTF importer is the recommended default option, and it is already integrated into the engine. Making this a core feature will also help to bring godot closer to supporting the glTF standard, allowing users to more seamlessly make assumptions about compatibilities between programs (IE "what you see is what you get" when importing a glTF file).
Currently Godot only support COLOR, no support for COLOR_n yet
system
Closed
June 12, 2025, 3:14pm
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.