载入中...
搜索中...
未找到
Water.h
浏览该文件的文档.
1#pragma once
2
3#include "graphics/Shader.h"
4
5#include <cstdint>
6#include <string>
7#include <vector>
8
9#include <glm/glm.hpp>
10
11namespace eve::graphics {
12
13class Graphics;
14class Mesh;
15class Texture;
16
33class Water {
34public:
35 explicit Water(Graphics *gfx);
36 ~Water() = default;
37
38 Water(const Water &) = delete;
39 Water &operator=(const Water &) = delete;
40
42 void createPlane(float sizeX, float sizeZ, int segX, int segZ);
43
45 void update(float dt);
46 void setTime(float seconds);
47 float getTime() const { return time_; }
48
49 // --- Animation / material knobs ---
50 void setWaveSpeed(float speed);
51 float getWaveSpeed() const { return waveSpeed_; }
52
54 void setWaveAmplitude(float amp);
55 float getWaveAmplitude() const { return waveAmplitude_; }
56
58 void setRippleAmplitude(float amp);
59 float getRippleAmplitude() const { return rippleAmplitude_; }
60
62 void setEdgeFalloff(float edge);
63 float getEdgeFalloff() const { return edgeFalloff_; }
64
66 void setRippleCount(int count);
67 int getRippleCount() const { return rippleCount_; }
68
70 void setRippleInterval(float seconds);
71 float getRippleInterval() const { return rippleInterval_; }
72
73 void setWaveScale(float scale);
74 float getWaveScale() const { return waveScale_; }
75
76 void setWaterColor(float r, float g, float b);
77 void setReflectionTint(float r, float g, float b);
78 void setReflectionIntensity(float intensity);
79 float getReflectionIntensity() const { return reflectionIntensity_; }
80
81 void setSunIntensity(float intensity);
82 float getSunIntensity() const { return sunIntensity_; }
83
90 void setScreenSpaceReflection(bool enabled, float strength = 0.85f);
91 bool getScreenSpaceReflection() const { return ssrEnabled_; }
92 float getScreenSpaceReflectionStrength() const { return ssrStrength_; }
93
95 void setViewport(float width, float height);
96 float getViewportWidth() const { return viewportW_; }
97 float getViewportHeight() const { return viewportH_; }
98
100 void bindParams();
101
103 void draw();
104
105 Shader *getShader() const { return shader_; }
106 Mesh *getMesh() const { return mesh_; }
107
109 static int paramCount();
110 static std::string paramName(int index);
111
112private:
113 Graphics *gfx_ = nullptr;
114 Shader *shader_ = nullptr;
115 Mesh *mesh_ = nullptr;
116
117 float time_ = 0.f;
118 float waveSpeed_ = 1.2f;
119 float waveAmplitude_ = 0.35f;
120 float rippleAmplitude_ = 0.6f;
121 float edgeFalloff_ = 0.18f;
122 int rippleCount_ = 6;
123 float rippleInterval_ = 1.6f;
124 float waveScale_ = 14.f;
125 float waterColor_[3] = {0.02f, 0.16f, 0.24f};
126 float reflectionTint_[3] = {0.7f, 0.85f, 1.0f};
127 float reflectionIntensity_ = 0.6f;
128 float sunIntensity_ = 0.9f;
129 bool ssrEnabled_ = false;
130 float ssrStrength_ = 0.85f;
131 float viewportW_ = 0.f;
132 float viewportH_ = 0.f;
133};
134
136Shader *newWaterShader(Graphics *gfx);
137
138} // namespace eve::graphics
float height
Definition Grass.cpp:235
uint32_t b
int width
bool enabled
float scale
Definition TreeMesh.cpp:122
GPU mesh handle (+ optional CPU morph targets).
Definition Mesh.h:18
Custom GPU program.
Definition Shader.h:30
Dynamic water surface with sky reflection and animated ripples.
Definition Water.h:33
Mesh * getMesh() const
Definition Water.h:106
void setScreenSpaceReflection(bool enabled, float strength=0.85f)
Optional screen-space reflection overlay. When enabled, the shader samples the SSR pass result (bound...
Definition Water.cpp:250
float getViewportHeight() const
Definition Water.h:97
float getSunIntensity() const
Definition Water.h:82
float getTime() const
Definition Water.h:47
Water(const Water &)=delete
void setWaveAmplitude(float amp)
Amplitude of the shore-edge waves.
Definition Water.cpp:232
static std::string paramName(int index)
Definition Water.cpp:176
void setRippleAmplitude(float amp)
Amplitude of the occasional middle drop ripples.
Definition Water.cpp:233
void setWaveSpeed(float speed)
Definition Water.cpp:231
float getWaveAmplitude() const
Definition Water.h:55
void update(float dt)
Advance the animation clock by dt seconds.
Definition Water.cpp:221
float getRippleAmplitude() const
Definition Water.h:59
void draw()
Draw the water plane (uses default mesh3d camera / lighting state).
Definition Water.cpp:279
float getReflectionIntensity() const
Definition Water.h:79
void setEdgeFalloff(float edge)
Width (in UV, 0..1) of the edge wave band.
Definition Water.cpp:234
int getRippleCount() const
Definition Water.h:67
void createPlane(float sizeX, float sizeZ, int segX, int segZ)
Build a flat XZ plane (Y-up) sized sizeX × sizeZ with UVs in [0,1]².
Definition Water.cpp:186
void setSunIntensity(float intensity)
Definition Water.cpp:249
float getWaveSpeed() const
Definition Water.h:51
void setReflectionTint(float r, float g, float b)
Definition Water.cpp:243
void setTime(float seconds)
Definition Water.cpp:226
float getEdgeFalloff() const
Definition Water.h:63
void setReflectionIntensity(float intensity)
Definition Water.cpp:248
float getRippleInterval() const
Definition Water.h:71
float getViewportWidth() const
Definition Water.h:96
static int paramCount()
Names of the push-constant parameters (for UI / inspection).
Definition Water.cpp:174
void setWaveScale(float scale)
Definition Water.cpp:237
float getScreenSpaceReflectionStrength() const
Definition Water.h:92
Water & operator=(const Water &)=delete
bool getScreenSpaceReflection() const
Definition Water.h:91
void setRippleInterval(float seconds)
Seconds between drop ripples.
Definition Water.cpp:236
Shader * getShader() const
Definition Water.h:105
void bindParams()
Upload current params to the shader push constants.
Definition Water.cpp:259
void setViewport(float width, float height)
Window / target size in pixels, used to compute screen-space UVs.
Definition Water.cpp:254
void setRippleCount(int count)
How many expanding drop ripples exist.
Definition Water.cpp:235
float getWaveScale() const
Definition Water.h:74
void setWaterColor(float r, float g, float b)
Definition Water.cpp:238
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition AnimTrail.h:6
Shader * newWaterShader(Graphics *gfx)
Create the embedded water fragment shader (owned by Graphics).
Definition Water.cpp:158