-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRayRenderer.hpp
77 lines (65 loc) · 1.5 KB
/
RayRenderer.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#ifndef RAY_RENDERER_HPP
#define RAY_RENDERER_HPP
#include <Frontier.hpp>
class RayRenderer
{
ShaderManager m_waterShader;
FloatTexture m_waterUVTex;
ShaderManager m_rayShader;
FloatTexture m_waterTex;
fm::Size m_maxUserWaveN;
FrameBuffer m_waterFbo;
CubeTexture m_skyBlur;
DrawData m_waterDD;
DrawData m_scrQuad;
CubeTexture m_sky;
bool m_fastDraw;
bool m_repaint;
Camera m_cam;
Clock m_clk;
class ClickWave {
public:
vec2 uv;
Clock clk;
};
class FrameDesc {
public:
Camera cam;
Time clkTime;
Time timeStamp;
std::vector<vec2> clickPts;
std::vector<fm::Time> clickTimes;
vec2i curp;
};
Clock m_vidClk;
vec2 m_lastCurPos;
Image m_cursorImg;
std::deque<FrameDesc> m_frames;
fm::Time m_vidTime;
fm::Size m_vidFrame;
bool m_capture;
bool m_vidRender;
std::vector<ClickWave> m_clickWaves;
void toggleFastDraw();
int getWaterVertN() const;
void applyCapturedFrame();
void saveCurrentFrame();
void log_res(fm::Result res);
fm::Result applyCam();
void init(vec2 size);
fm::Result loadShaders();
public:
RayRenderer(vec2 initSize);
void render();
void update();
void onArrowKey(vec3 dir,bool press);
void onUpdate(fm::Time dt);
void onResize(vec2 newSize);
void onFocus(bool gained);
void onLetter(char c);
void onClick(bool left,vec2 p);
void onDrag(vec2 prevp,vec2 delta,bool leftDown,bool rightDown);
void onScroll(float delta);
bool needRedraw();
};
#endif // RAY_RENDERER_HPP