inversed view transform uniform

This commit is contained in:
tmj-fstate
2019-11-29 16:20:21 +01:00
parent f9febd5887
commit 194400e1af
3 changed files with 5 additions and 3 deletions

View File

@@ -65,6 +65,7 @@ void gl::glsl_common_setup()
{
mat4 projection;
mat4 lightview;
mat4 inv_view;
vec3 scene_extra;
float time;
};

View File

@@ -37,11 +37,12 @@ namespace gl
{
glm::mat4 projection;
glm::mat4 lightview;
glm::mat4 inv_view;
glm::vec3 scene_extra;
float time;
};
static_assert(sizeof(scene_ubs) == 144, "bad size of ubs");
static_assert(sizeof(scene_ubs) == 208, "bad size of ubs");
const size_t MAX_PARAMS = 3;

View File

@@ -555,7 +555,8 @@ void opengl33_renderer::Render_pass(viewport_config &vp, rendermode const Mode)
scene_ubs.time = Timer::GetTime();
scene_ubs.projection = OpenGLMatrices.data(GL_PROJECTION);
scene_ubo->update(scene_ubs);
scene_ubs.inv_view = glm::inverse( glm::mat4{ glm::mat3{ m_renderpass.pass_camera.modelview() } } );
scene_ubo->update(scene_ubs);
scene_ubo->bind_uniform();
m_colorpass = m_renderpass;
@@ -1309,7 +1310,6 @@ void opengl33_renderer::setup_matrices()
{
OpenGLMatrices.mode(GL_PROJECTION);
OpenGLMatrices.load_matrix(m_renderpass.pass_camera.projection());
// trim modelview matrix just to rotation, since rendering is done in camera-centric world space
OpenGLMatrices.mode(GL_MODELVIEW);
OpenGLMatrices.load_matrix(glm::mat4(glm::mat3(m_renderpass.pass_camera.modelview())));