<<Available particle related nodes/functions>>:

  **RandomPositionInSphere:  `in float radius, out vec3 randomPos, out vec3 dir - Generates a random position and direction within a sphere.
  **RandomPositionInCone:  `in float coneRadius, in float coneAngle, in float coneHeight, out vec3 randomPos, out vec3 dir - Generates a random position and direction within a cone.
  **RandomPositionInCube:  `in vec3 scale, in float randomDirectionFactor, out vec3 randomPos, out vec3 dir - Generates a random position and direction within a cube.
  
  **GetStartVelocity:** `out vec3 startVelocity` 
  **GetStartSize:** `out float startSize`
  **GetStartColor:** `out vec4 startColor` 
  **GetStartRotation:** `out vec3 startRotation` 
  **GetCurrentPosition:** `out vec3 position` 
  **GetCurrentVelocity:** `out vec3 velocity` 
  **GetCurrentSize:** `out float size` 
  **GetCurrentRotation:** `out vec4 rotation` 
  **GetCurrentColor:** `out vec4 color, out vec3 emissive` 

  **RandomInRange:** `in float min, in float max, in float seed, out float randomValue` - Generates random value within range.
  **RandomGaussian:** `in float mean, in float deviation, in float seed, out float randomValue` - Generates Gaussian random value.
  **Remap:** `in T value, in T oldMin, in T oldMax, in T newMin, in T newMax, out T remaped` - Remaps a value from one range to another.
  **TimeBlock:** `out float sceneTime, out float deltaTime` - Outputs scene time and delta time.

  **EulerToQuaternion:** `in vec3 eulerAngles, out vec4 quaternion` - Converts Euler angles to quaternion.
  **QuaternionToEuler:** `in vec4 quaternion, out vec3 eulerAngles` - Converts quaternion to Euler angles.
  **QMul:** `in vec4 q1, in vec4 q2, out vec4 result` - Multiplies two quaternions.
  **ReverseQuaternion:** `in vec4 q, out vec4 result` - Reverses a quaternion.
  **Slerp:** `in vec4 q1, in vec4 q2, in float t, out vec4 result` - Spherical linear interpolation between quaternions.
  **Rotate3D:** `in vec3 position, in vec3 rotationCenter, in vec3 axis, in float angle, out vec3 newPosition` - Rotates a point in 3D space.

  **RGB2HSV:** `in vec3 rgb, out vec3 hsv` - Converts RGB to HSV color space.
  **HSV2RGB:** `in vec3 hsv, out vec3 rgb` - Converts HSV to RGB color space.

  **AddForce:** `in vec3 velocity, in vec3 force, out vec3 newVelocity` - Applies force to velocity.
  **AgeOverLifetime:** `out float age` - Computes age from 0 to 1.

  **PerlinNoise3D:** `in vec3 position, in float scale, in float octaves, in float lacunarity, in float persistence, out vec3 noise` - Generates 3D Perlin noise.
  **TurbulenceForce:** `in vec3 velocity, in vec3 noise, in float turbulenceFactor, out vec3 newVelocity` - Applies turbulence to velocity.
  **AttractorForce:** `in vec3 velocity, in vec3 localOffset, in float strength, out vec3 newVelocity` - Applies attractor force to velocity.
  **VortexForce:** `in vec3 velocity, in vec3 rotateAxis, in float strength, out vec3 newVelocity` - Applies vortex force to velocity.
  **RotateOverLifeTime:** `in vec3 from, in vec3 to, out vec3 newRotation` - Rotates from one angle to another over lifetime.
  **RotateToward:** `in vec3 lookAtDirection, out vec4 newRotation` - Rotates towards a direction.
  **TextureSheetAnimation**: in vec2 tiles, in float startFrame, in float cycles, out uint flipBook - Animates a texture sheet over time.

  **OutputVFXSpawnBlock:** Output function for the spawn shader. The input of this node fills particle attributes.  
  **OutputVFXSimulationBlock:** Output function for the simulation shader. The input of this node fills particle attributes.

