Added renderQueue for water and created buffers for the water to use.
This commit is contained in:
@@ -440,6 +440,15 @@ public:
|
||||
|
||||
}
|
||||
|
||||
void EnqueueWaterParticles(glm::vec3 position, glm::vec4 color)
|
||||
{
|
||||
WaterParticleJob job;
|
||||
job.Position = position;
|
||||
job.Color = color;
|
||||
|
||||
m_RendererQueue.Deferred.Add(job);
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<ResourceManager> m_ResourceManager;
|
||||
std::shared_ptr<EventBroker> m_EventBroker;
|
||||
|
||||
@@ -115,6 +115,12 @@ struct PointLightJob : RenderJob
|
||||
}
|
||||
};
|
||||
|
||||
struct WaterParticleJob : RenderJob
|
||||
{
|
||||
glm::vec3 Position;
|
||||
glm::vec4 Color;
|
||||
};
|
||||
|
||||
class RenderQueue
|
||||
{
|
||||
public:
|
||||
@@ -153,12 +159,14 @@ struct RenderQueueCollection
|
||||
RenderQueue Deferred;
|
||||
RenderQueue Forward;
|
||||
RenderQueue Lights;
|
||||
RenderQueue Water;
|
||||
|
||||
void Clear()
|
||||
{
|
||||
Deferred.Clear();
|
||||
Forward.Clear();
|
||||
Lights.Clear();
|
||||
Water.Clear();
|
||||
}
|
||||
|
||||
void Sort()
|
||||
@@ -166,6 +174,8 @@ struct RenderQueueCollection
|
||||
Deferred.Sort();
|
||||
Forward.Sort();
|
||||
Lights.Sort();
|
||||
//TODO: Is water sort needed?
|
||||
Water.Sort();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ private:
|
||||
ShaderProgram* m_spDeferred3;
|
||||
ShaderProgram* m_spForward;
|
||||
ShaderProgram* m_spScreen;
|
||||
ShaderProgram* t_m_spWater;
|
||||
|
||||
GLuint m_ScreenQuad = 0;
|
||||
Model* m_UnitSphere = nullptr;
|
||||
@@ -89,6 +90,12 @@ private:
|
||||
GLuint m_tLighting = 0;
|
||||
GLuint m_fbDeferred3 = 0;
|
||||
GLuint m_tFinal = 0;
|
||||
//Water "Diffuse" texture
|
||||
GLuint t_m_GWater = 0;
|
||||
//Water blur texture
|
||||
GLuint t_m_tWater;
|
||||
//WAterpass Framebuffer
|
||||
GLuint t_m_fbWater;
|
||||
|
||||
GLuint m_CurrentScreenBuffer = 0;
|
||||
void LoadShaders();
|
||||
@@ -101,6 +108,7 @@ private:
|
||||
void DrawForward(RenderQueue &objects, RenderQueue &lights);
|
||||
void DrawScene(RenderQueue &objects, ShaderProgram &program);
|
||||
void DrawLightSpheres(RenderQueue &lights);
|
||||
void DrawWater(RenderQueue &objects);
|
||||
void DebugKeys();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user