added lightenv class, used to store the environment lighting parameters

This commit is contained in:
Anselme 2017-10-16 17:06:39 +02:00
parent 0ad3a417d8
commit d67706c18c
2 changed files with 70 additions and 0 deletions

25
src/lighingenv.cpp Normal file
View File

@ -0,0 +1,25 @@
#include "lighingenv.h"
#include "imgui/imgui.h"
#include "texture.h"
#include <glm/ext.hpp>
LighingEnv::LighingEnv()
{
}
void LighingEnv::gui()
{
ImGui::Checkbox("Fog", &m_hasFog);
if(m_hasFog)
{
ImGui::SliderFloat("Fog density", &m_fogDensity, 0, 10000, "%.3f", 10.f);
ImGui::ColorEdit3("Fog color", glm::value_ptr(m_fogColor));
ImGui::Checkbox("Ground fog", &m_isGroundFog);
if(m_isGroundFog)
{
ImGui::SliderFloat("Ground fog floor", &m_fogFloor, -1000, 1000);
ImGui::SliderFloat("Ground fog ceiling", &m_fogCeiling, -1000, 1000);
}
}
}

45
src/lighingenv.h Normal file
View File

@ -0,0 +1,45 @@
#ifndef LIGHINGENV_H
#define LIGHINGENV_H
#include <glm/vec3.hpp>
class Texture;
class LighingEnv
{
Texture* m_radianceMap;
Texture* m_irradianceMap;
bool m_hasFog;
float m_fogDensity;
glm::vec3 m_fogColor;
bool m_isGroundFog;
float m_fogFloor;
float m_fogCeiling;
public:
LighingEnv();
// environment mapping methods
void setRadianceMap(Texture* tex); // used for the specular component
void setIrradianceMap(Texture* tex); // used for the diffuse component
// fog methods
void setNoFog() { m_hasFog = false; }
void setUniformFog(float fogDensity, glm::vec3 fogColor)
{ m_hasFog = true; m_fogDensity = fogDensity; m_fogColor = fogColor; }
void setGroundFog(float fogDensity, glm::vec3 fogColor, float fogFloor, float fogCeiling)
{ setUniformFog(fogDensity, fogColor); m_isGroundFog = true; m_fogFloor = fogFloor; m_fogCeiling = fogCeiling; }
/**
* @brief this gui does not include the begin/end calls, only the fog editor
*/
void gui();
};
#endif // LIGHINGENV_H