Move the shaders to the Slide since that's where they go.

master
Zed A. Shaw 10 hours ago
parent c0531e7049
commit 47f3cdbb17
  1. 16
      assets/layouts.json
  2. 17
      src/slides_ui.cpp
  3. 3
      src/slides_ui.hpp

@ -10,14 +10,14 @@
"[=title|=*%(200,100)description|_|_|_]"
],
"default_slide": [
"[=*%(300,200)title|_|_|_|_]",
"[_|_|_]",
"[*%(300,600)content|_|_|*%(200,600)image|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]"
"[=*%(300,200)title|_|_|_|_]",
"[_|_|_]",
"[*%(300,600)content|_|_|*%(200,600)image|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]",
"[_|_|_|_|_]"
],
"image_left": [
"[=title]",

@ -1,5 +1,6 @@
#include "guecs/sfml/components.hpp"
#include "guecs/ui.hpp"
#include <guecs/sfml/components.hpp>
#include <guecs/sfml/shaders.hpp>
#include <guecs/ui.hpp>
#include <fmt/xchar.h>
#include <deque>
#include <iostream>
@ -160,10 +161,10 @@ void SlidesUI::show_slide() {
}
if(slide.$config.contains("shader")) {
$view_shader = shaders::get(slide.$config["shader"]);
$view_shader->setUniform("u_resolution", sf::Vector2f{WINDOW_WIDTH, WINDOW_HEIGHT});
slide.$shader = shaders::get(slide.$config["shader"]);
slide.$shader->setUniform("u_resolution", sf::Vector2f{WINDOW_WIDTH, WINDOW_HEIGHT});
} else {
$view_shader = nullptr;
slide.$shader = nullptr;
}
std::string layout_name{"default_slide"};
@ -188,9 +189,9 @@ void SlidesUI::render(sf::RenderTarget& window) {
slide.render($view_texture);
$view_texture.display();
if($view_shader) {
$view_shader->setUniform("u_time", $clock.getElapsedTime().asSeconds());
window.draw($view_sprite, $view_shader.get());
if(slide.$shader) {
slide.$shader->setUniform("u_time", $clock.getElapsedTime().asSeconds());
window.draw($view_sprite, slide.$shader.get());
} else {
window.draw($view_sprite);
}

@ -1,7 +1,6 @@
#pragma once
#include <guecs/sfml/components.hpp>
#include <guecs/sfml/shaders.hpp>
#include <guecs/ui.hpp>
#include <nlohmann/json.hpp>
#include <memory>
@ -17,6 +16,7 @@ struct Slide {
CONTENT_SIZE,
guecs::THEME.TEXT_COLOR, 20};
guecs::Text $title_font{$title, TITLE_SIZE};
std::shared_ptr<sf::Shader> $shader = nullptr;
Slide(const std::string& title, const std::string& content, nlohmann::json& config, nlohmann::json& deck_config);
@ -40,7 +40,6 @@ struct SlidesUI {
std::unordered_map<std::string, std::string> $layouts;
sf::RenderTexture $view_texture;
sf::Sprite $view_sprite;
std::shared_ptr<sf::Shader> $view_shader = nullptr;
sf::Clock $clock;
size_t $current = 0;

Loading…
Cancel
Save