var descs = reader.ReadArray("descriptions")
for(var i = 0; descs.More(); i++)
{
	var d = descs.ReadSection(RecStr("rec_", i, 4), false)
	
	d.ReadString("name")
	d.ReadString("description")
	d.ReadHintStr("texture_name", "texture, str_shared")
	d.ReadHintStr("shader_name", "shader, str_shared")
	d.ReadFP32("fade_in_time")
	d.ReadFP32("fade_out_time")
	d.ReadFP32("fade_to_camera", "angle, fp32")
	d.ReadU8("distance_type")
	d.ReadFP32("distance_fade_start")
	d.ReadFP32("distance_fade_end")
	d.ReadFP32("occ_scale")
	d.ReadFP32("cull_distance")
	
	var elements = d.ReadArray("elements")
	for(var j = 0; elements.More(); j++)
	{
		var e = elements.ReadSection(RecStr("rec_", j, 2), false)
		e.ReadU8("flags0", "bool8")
		e.ReadString("caption")
		e.ReadVec4("color", "color, vec4f")
		e.ReadVec2("size")
		e.ReadVec2("offset")
		e.ReadFP32("position")
		e.ReadFP32("rotation", "angle, fp32")
		e.ReadFP32("size_to_src")
		e.ReadU8("fade_to_src")
		e.ReadFP32("fade_to_src_start")
		e.ReadFP32("fade_to_src_end")
		e.ReadU8("cone_fade")
		e.ReadFP32("cone_fade_start", "angle, fp32")
		e.ReadFP32("cone_fade_end", "angle, fp32")
		e.ReadU8("tf_columns")
		e.ReadU8("tf_rows")
		e.ReadU8("tf_num")
	}
}