typeName property

String get typeName

The GLSL-style type name (vec3, mat4, float[4]).

Implementation

String get typeName {
  final prefix = switch (type) {
    ShaderScalarType.float32 => '',
    ShaderScalarType.int32 => 'i',
    ShaderScalarType.uint32 => 'u',
    ShaderScalarType.boolean => 'b',
    ShaderScalarType.float64 => 'd',
    _ => '${type.name}_',
  };
  final base = columns > 1
      ? '${prefix}mat${columns == vecSize ? '$columns' : '${columns}x$vecSize'}'
      : vecSize > 1
      ? '${prefix}vec$vecSize'
      : switch (type) {
          ShaderScalarType.float32 => 'float',
          ShaderScalarType.int32 => 'int',
          ShaderScalarType.uint32 => 'uint',
          ShaderScalarType.boolean => 'bool',
          ShaderScalarType.float64 => 'double',
          _ => type.name,
        };
  return arrayElements > 0 ? '$base[$arrayElements]' : base;
}