Brenta Engine 1.2
Loading...
Searching...
No Matches
skybox_pass.cpp
1// SPDX-License-Identifier: MIT
2// Author: Giovanni Santini
3// Mail: giovanni.santini@proton.me
4// Github: @San7o
5
6#include <brenta/renderer/passes/skybox_pass.hpp>
7#include <brenta/renderer/opengl/gl.hpp>
8#include <brenta/renderer/material.hpp>
9#include <brenta/renderer/skybox.hpp>
10#include <brenta/renderer/opengl/framebuffer.hpp>
11
12using namespace brenta;
13
14void SkyboxPass::begin()
15{
16 this->fb->bind();
17
18 if (set_viewport)
19 Gl::set_viewport(0, 0, this->fb->width, this->fb->height);
20
21 if (this->clear)
22 Gl::clear();
23}
24
25void SkyboxPass::end()
26{
27 this->fb->unbind();
28}
29
30void SkyboxPass::execute(const Renderer::RenderData& data)
31{
32 if (!data.skybox) return;
33
34 // remove the position, only keep rotation
35 auto view = glm::mat4(glm::mat3(data.view));
36
37 data.skybox.value()->material->shader->use();
38 data.skybox.value()->material->shader->set_mat4("view", view);
39 data.skybox.value()->material->shader->set_mat4("projection", data.projection);
40
41 data.skybox.value()->draw();
42}