summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--TODO4
-rw-r--r--meson.build86
-rw-r--r--meson_options.txt1
-rw-r--r--src/engine.cc11
-rw-r--r--src/engine.h14
-rw-r--r--src/mauri.cc16
-rw-r--r--src/objects/effect.cc7
-rw-r--r--src/objects/object.cc13
-rw-r--r--src/objects/pass.cc1
-rw-r--r--src/shader.cc8
-rw-r--r--src/visualizer.cc1
m---------subprojects/fmt0
-rw-r--r--subprojects/stb_image/meson.build1
14 files changed, 103 insertions, 63 deletions
diff --git a/.gitmodules b/.gitmodules
index dbdbfee..00fb228 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
[submodule "subprojects/glfw"]
path = subprojects/glfw
url = https://github.com/glfw/glfw.git
-[submodule "subprojects/fmt"]
- path = subprojects/fmt
- url = https://github.com/fmtlib/fmt.git
diff --git a/TODO b/TODO
index 4c80d9f..9658924 100644
--- a/TODO
+++ b/TODO
@@ -4,6 +4,10 @@
[x] cleanup visualizer code
+[ ] cleanup build system
+ - glad automation
+ - meson wrap for s3tc
+
[ ] seperate program to extract scene.pkg
[ ] gifs
diff --git a/meson.build b/meson.build
index 65d37fc..a9ac9a3 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
project('mauri', 'cpp',
version : '0.1',
- default_options : ['warning_level=1', 'cpp_std=gnu++2a'])
+ default_options : ['warning_level=1', 'cpp_std=c++17'])
if get_option('buildtype').startswith('debug')
add_project_arguments('-D_DEBUG_', language : 'cpp')
@@ -19,49 +19,65 @@ stbi = subproject('stb_image').get_variable('stbi')
glad = subproject('glad').get_variable('glad')
s3tc = subproject('s3tc-dxt-decompression').get_variable('s3tc')
-fmt = cmake.subproject('fmt').dependency('fmt')
-
-dl = compiler.find_library('dl')
+dl = compiler.find_library('dl', required: true)
lz4 = dependency('liblz4', required: true)
glm = dependency('glm', required: true)
json = dependency('nlohmann_json', required: true)
+mauri_deps = [dl, json, glm, lz4, stbi, glad, s3tc]
+
+mauri_src = [
+ 'src/assets.cc',
+ 'src/mauri.cc',
+ 'src/util.cc',
+ 'src/gl.cc',
+ 'src/shader.cc',
+ 'src/engine.cc',
+ 'src/texture.cc',
+ 'src/framebuffer.cc',
+ 'src/context.cc',
+ 'src/objects/scene.cc',
+ 'src/objects/object.cc',
+ 'src/objects/model.cc',
+ 'src/objects/material.cc',
+ 'src/objects/pass.cc',
+ 'src/objects/effect.cc'
+]
+
glfw = dependency('glfw3', required: false)
-X11 = dependency('X11', required: false)
-Xrender = dependency('xrender', required: false)
-Xext = dependency('xext', required: false)
-GLX = dependency('glx', required: false)
+if glfw.found()
+ mauri_deps += [glfw]
+ mauri_src += 'src/context_glfw.cc'
+ add_project_arguments('-DBUILD_GLFW', language : 'cpp')
+endif
+
+if host_machine.system() == 'linux'
+ X11 = dependency('X11', required: false)
+ Xrender = dependency('xrender', required: false)
+ Xext = dependency('xext', required: false)
+ GLX = dependency('glx', required: false)
-gstreamer = dependency('gstreamer-1.0', required: false)
-fftw3 = dependency('fftw3', required: false)
+ if X11.found() and Xrender.found() and Xext.found() and GLX.found()
+ mauri_deps += [X11, Xrender, Xext, GLX]
+ mauri_src += 'src/context_x11.cc'
+ add_project_arguments('-DBUILD_X11', language : 'cpp')
+ endif
+endif
-deps = [dl, json, glm, lz4, stbi, glad, glfw, fmt, s3tc, X11, Xrender, Xext, GLX, gstreamer, fftw3]
+if get_option('audio')
+ gstreamer = dependency('gstreamer-1.0', required: true)
+ fftw3 = dependency('fftw3', required: true)
-src = [
- 'src/assets.cc',
- 'src/mauri.cc',
- 'src/util.cc',
- 'src/gl.cc',
- 'src/shader.cc',
- 'src/engine.cc',
- 'src/texture.cc',
- 'src/framebuffer.cc',
- 'src/context.cc',
- 'src/context_glfw.cc',
- 'src/context_x11.cc',
- 'src/visualizer.cc',
- 'src/objects/scene.cc',
- 'src/objects/object.cc',
- 'src/objects/model.cc',
- 'src/objects/material.cc',
- 'src/objects/pass.cc',
- 'src/objects/effect.cc'
-]
+ mauri_src += 'src/visualizer.cc'
+ mauri_deps += [gstreamer, fftw3]
+
+ add_project_arguments('-DBUILD_AUDIO', language : 'cpp')
+endif
-executable('mauri', src,
- dependencies: deps,
- include_directories: include_directories('src'),
- install: true
+executable('mauri', mauri_src,
+ dependencies: mauri_deps,
+ include_directories: include_directories('src'),
+ install: true
)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..af1d055
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1 @@
+option('audio', type: 'boolean', value: false)
diff --git a/src/engine.cc b/src/engine.cc
index b744f8d..98de4aa 100644
--- a/src/engine.cc
+++ b/src/engine.cc
@@ -3,13 +3,12 @@
#include "context.h"
#include "json.h"
#include "shader.h"
-#include "src/gl.h"
+#include "gl.h"
#include "texture.h"
#include "framebuffer.h"
#include "objects/object.h"
#include "objects/scene.h"
-#include "visualizer.h"
#include <glm/ext.hpp>
#include <glm/ext/matrix_transform.hpp>
@@ -77,10 +76,14 @@ Engine::Engine(Scene *scene, Context *context, Parser *parser, bool audio)
scene->load(this);
+#ifdef BUILD_AUDIO
if (audio_enabled)
{
visualizer = new Visualizer();
}
+#else
+ audio_enabled = false;
+#endif
}
Framebuffer *Engine::get_framebuffer(const std::string &name)
@@ -106,7 +109,7 @@ Texture *Engine::get_framebuffer_texture(const std::string &name)
return nullptr;
}
-void Engine::create_framebuffer(std::string name, f32 width, f32 height, f32 scale)
+void Engine::create_framebuffer(const std::string &name, f32 width, f32 height, f32 scale)
{
framebuffers.emplace_back(new Framebuffer(name, width, height, scale));
}
@@ -197,5 +200,7 @@ Engine::~Engine()
delete default_object;
delete minimal_shader;
+#ifdef BUILD_AUDIO
delete visualizer;
+#endif
}
diff --git a/src/engine.h b/src/engine.h
index 8dc5093..e46e5a2 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -8,7 +8,10 @@
#include "shader.h"
#include "texture.h"
#include "framebuffer.h"
+
+#ifdef BUILD_AUDIO
#include "visualizer.h"
+#endif
using namespace glm;
@@ -43,18 +46,21 @@ struct View
class Engine
{
public:
- Engine(Scene *scene, Context *context, Parser *parser, bool visualizer);
+ Engine(Scene *scene, Context *context, Parser *parser, bool audio);
~Engine();
+ View view;
+
Scene *scene;
Parser *parser;
Context *context;
+#ifdef BUILD_AUDIO
Visualizer *visualizer;
- bool audio_enabled;
+#endif
- View view;
+ bool audio_enabled;
f32 time;
@@ -69,7 +75,7 @@ class Engine
std::vector<Framebuffer *> framebuffers;
- void create_framebuffer(std::string name, f32 width, f32 height, f32 scale);
+ void create_framebuffer(const std::string &name, f32 width, f32 height, f32 scale);
Framebuffer *get_framebuffer(const std::string &name);
Texture *get_framebuffer_texture(const std::string &name);
diff --git a/src/mauri.cc b/src/mauri.cc
index f1493e4..83b7655 100644
--- a/src/mauri.cc
+++ b/src/mauri.cc
@@ -3,12 +3,17 @@
#include "gl.h"
#include "json.h"
#include "util.h"
-#include "visualizer.h"
#include "context.h"
+#include "context_null.h"
+
+#ifdef BUILD_GLFW
#include "context_glfw.h"
+#endif
+
+#ifdef BUILD_X11
#include "context_x11.h"
-#include "context_null.h"
+#endif
#include "objects/scene.h"
@@ -18,17 +23,18 @@ using namespace Mauri;
static std::string scene_path = "scene.json";
-
s32 main(s32 argc, char *argv[])
{
srand(time(NULL));
+#ifdef BUILD_AUDIO
gst_init(&argc, &argv);
+#endif
//Context *context = new ContextX11(2560, 1440, "mauri", true);
//Context *context = new ContextGLFW(720, 1280, "mauri", false);
- Context *context = new ContextGLFW(1280, 720, "mauri", false);
- //Context *context = new ContextX11(1920, 1080, "mauri", false);
+ //Context *context = new ContextGLFW(1280, 720, "mauri", false);
+ Context *context = new ContextX11(1920, 1080, "mauri", false);
//Context *context = new ContextNull(1920, 1080, "mauri", false);
if (argc == 2)
diff --git a/src/objects/effect.cc b/src/objects/effect.cc
index 1ab5a96..6fbf71b 100644
--- a/src/objects/effect.cc
+++ b/src/objects/effect.cc
@@ -4,14 +4,12 @@
#include "../log.h"
#include "effect.h"
-#include "fmt/core.h"
#include "object.h"
#include "objects/pass.h"
#include <jsoncpp/json/reader.h>
-#include <fmt/format.h>
#include <glm/fwd.hpp>
using namespace Mauri;
@@ -47,7 +45,10 @@ Effect::Effect(Parser &p, json &root)
void Effect::load(Engine *engine, Object *object, bool last)
{
- buffer_id = fmt::format("_{}_{}", object->id, id);
+ std::stringstream _buffer_id;
+ _buffer_id << "_" << object->id << "_" << id;
+
+ buffer_id = _buffer_id.str();
for (auto &fbo : fbos)
{
diff --git a/src/objects/object.cc b/src/objects/object.cc
index 1ed2053..8613b2a 100644
--- a/src/objects/object.cc
+++ b/src/objects/object.cc
@@ -6,13 +6,10 @@
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
-#include <fmt/core.h>
-
#include "../gl.h"
#include "../json.h"
#include "../log.h"
-#include "fmt/format.h"
#include "objects/effect.h"
#include "objects/model.h"
#include "objects/object.h"
@@ -117,8 +114,14 @@ void Object::load(Engine *engine)
origin[1] = size[1] / 2.f;
}
- buffer_a = fmt::format("_rt_imageLayerComposite_{}_a", id);
- buffer_b = fmt::format("_rt_imageLayerComposite_{}_b", id);
+
+ std::stringstream _buffer_a, _buffer_b;
+
+ _buffer_a << "_rt_imageLayerComposite_" << id << "_a";
+ _buffer_b << "_rt_imageLayerComposite_" << id << "_b";
+
+ buffer_a = _buffer_a.str();
+ buffer_b = _buffer_b.str();
engine->create_framebuffer(buffer_a, size[0], size[1], 1.f);
engine->create_framebuffer(buffer_b, size[0], size[1], 1.f);
diff --git a/src/objects/pass.cc b/src/objects/pass.cc
index 689dda4..04eb8e3 100644
--- a/src/objects/pass.cc
+++ b/src/objects/pass.cc
@@ -1,5 +1,4 @@
#include <cstdio>
-#include <fmt/core.h>
#include <glm/fwd.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <jsoncpp/json/value.h>
diff --git a/src/shader.cc b/src/shader.cc
index a524a2c..c0df777 100644
--- a/src/shader.cc
+++ b/src/shader.cc
@@ -3,7 +3,7 @@
#include <glm/fwd.hpp>
#include <glm/matrix.hpp>
-#include <fmt/core.h>
+#include <sstream>
#include "assets.h"
#include "gl.h"
@@ -151,7 +151,9 @@ void Shader::build_shader_source(Parser *p, const std::string &isource, std::str
std::string Combo::to_string()
{
- return fmt::format("#define {} {}\n", name, value);
+ std::stringstream _combo;
+ _combo << "#define " << name << " " << value << "\n";
+ return _combo.str();
}
void Shader::compile()
@@ -226,6 +228,7 @@ void Shader::bind(Engine *engine, mat4x4 *model)
rshader->set_uniform("g_ModelViewProjectionMatrix", TYPE_MAT4, glm::value_ptr(_model));
rshader->set_uniform("g_ModelViewProjectionMatrixInverse", TYPE_MAT4, glm::value_ptr(_inverse));
+#ifdef BUILD_AUDIO
if (engine->audio_enabled)
{
g_mutex_lock(&engine->visualizer->mutex);
@@ -241,6 +244,7 @@ void Shader::bind(Engine *engine, mat4x4 *model)
g_mutex_unlock(&engine->visualizer->mutex);
}
+#endif
}
Shader::~Shader()
diff --git a/src/visualizer.cc b/src/visualizer.cc
index 349478b..a76c613 100644
--- a/src/visualizer.cc
+++ b/src/visualizer.cc
@@ -6,7 +6,6 @@
#include <utility>
#include "assets.h"
-#include "fmt/format.h"
#include "gst/gstcaps.h"
#include "gst/gstelement.h"
#include "gst/gstmemory.h"
diff --git a/subprojects/fmt b/subprojects/fmt
deleted file mode 160000
-Subproject 05a28312cf55f885cbd12f42a1e4d15b1794b42
diff --git a/subprojects/stb_image/meson.build b/subprojects/stb_image/meson.build
index 6a1e2ad..4cae1d4 100644
--- a/subprojects/stb_image/meson.build
+++ b/subprojects/stb_image/meson.build
@@ -1,4 +1,3 @@
project('stb_image', 'c')
-
stbi = declare_dependency(include_directories: include_directories('.'))