1#pragma once
2
3#include <iostream>
4#include <fstream>
5#include <stdexcept>
6#include <algorithm>
7#include <chrono>
8#include <vector>
9#include <cstring>
10#include <cstdlib>
11#include <cstdint>
12#include <array>
13#include <optional>
14#include <set>
15#include "taichi/ui/utils/utils.h"
16#include "taichi/ui/backends/vulkan/vertex.h"
17
18#include "taichi/ui/backends/vulkan/app_context.h"
19#include "taichi/ui/backends/vulkan/swap_chain.h"
20#include "taichi/ui/backends/vulkan/renderable.h"
21#include "taichi/program/field_info.h"
22#include "taichi/ui/common/canvas_base.h"
23
24namespace taichi::ui {
25
26namespace vulkan {
27
28class Circles final : public Renderable {
29 public:
30 Circles(AppContext *app_context, VertexAttributes vbo_attrs);
31 void update_data(const CirclesInfo &info);
32
33 void record_this_frame_commands(lang::CommandList *command_list) override;
34
35 private:
36 struct UniformBufferObject {
37 alignas(16) glm::vec3 color;
38 int use_per_vertex_color;
39 float radius_w;
40 float radius_h;
41 };
42};
43
44} // namespace vulkan
45
46} // namespace taichi::ui
47