Additional GPU Data
Photon2 lets you send extra per-particle vertex attributes to the GPU โ such as age, T, or velocity.  
Note:
- This feature requires GPU Instance mode.
- Currently supported only for Particle Emitters (support for other FX objects will come later).
- Modifying vanilla vertex formats is difficult and sending large amounts of per-vertex data is inefficient, hence this separate system.
Particle Emitter
In the Particle Emitter Inspector, enable Additional GPU Data and select the data fields you need.
Supported Data Types
| Data | Type | Description | 
|---|---|---|
| T | float | Normalized lifetime: age / lifetime | 
| Age | float | Particle age | 
| LifeTime | float | Particle lifetime | 
| Position (local) | vec3 | Particle local position | 
| Velocity | vec3 | Particle velocity | 
| isCollided | float | 1= collided,0= not yet | 
| Emitter T | float | Emitter normalized lifetime | 
| Emitter Age | float | Emitter age | 
| Emitter Position | vec3 | Emitter world position | 
| Emitter Velocity | vec3 | Emitter velocity | 
๐ Shader Setup
Extra attributes are appended sequentially after the default vertex layout in the vertex shader (vsh).
โ Warning:
- Always place new attribute declarations after#moj_import <photon:particle.glsl>.
- GPU & driver behavior may vary; sequential layouts may not always be reliable โ uselayout(location = x)to explicitly bind attributes when needed.
Example: If you enable T and Velocity, add them to your shader:
#version 330 core
#moj_import <photon:particle.glsl>
in float T;
in vec3 velocity;
/*
layout(location = 9) in float T;       // Explicit location binding
layout(location = 10) in vec3 velocity;
*/
void main() {
    // Use the extra attributes here...
}
โ
 Pro tip:
Keep your layout indices organized โ mismatches between the emitterโs attribute order and shader declarations can cause rendering glitches or incorrect values.
