forkkmuopengl/BaseGLProject/SceneContext.h
2019-06-12 17:19:09 +09:00

53 lines
928 B
C++

#pragma once
#include <map>
#include <glm/mat3x3.hpp>
#include <glm/mat4x4.hpp>
#include <glm/vec3.hpp>
#include "Texture.h"
#include "Light.h"
enum RenderMode
{
GBUF_DEBUG,
DEFERRED_LIGHT
};
struct SceneContext
{
std::map<std::string, Light> lights;
std::map<std::string, float> floatValues;
glm::mat4x4 viewMatrix;
glm::mat4x4 projectionMatrix;
glm::mat4x4 mvpMatrix;
glm::mat4x4 modelViewMatrix;
glm::mat4x4 modelMatrix;
glm::mat3x3 normalMatrix;
GLuint skyboxTex;
std::map<std::string, Texture> textures;
GLuint height;
GLuint width;
glm::vec4 bg;
std::string fboDisplayName;
glm::vec3 camPos;
RenderMode renderMode;
bool firstRedraw;
void adjustSpots()
{
for (auto it : lights)
{
if (it.second.type == Light::SPOT)
{
it.second.location = it.second.location * viewMatrix;
it.second.direction = (viewMatrix * it.second.lookAt - it.second.location * viewMatrix);
}
}
}
};