summaryrefslogtreecommitdiffhomepage
path: root/shaders/tile.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2023-04-14 13:28:03 +0200
committerStanislaw Halik <sthalik@misaki.pl>2023-04-14 13:28:03 +0200
commit5b9a452383b6bff5f2300c495943f2158f470faa (patch)
treecea216be2b42f209db751d98ede82fe70bf47abb /shaders/tile.cpp
parent7b760eb180d9c0e3362589a7339b498bd420cd58 (diff)
rename shader
Diffstat (limited to 'shaders/tile.cpp')
-rw-r--r--shaders/tile.cpp88
1 files changed, 0 insertions, 88 deletions
diff --git a/shaders/tile.cpp b/shaders/tile.cpp
deleted file mode 100644
index 82b5357a..00000000
--- a/shaders/tile.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "shaders/tile.hpp"
-#include "loader/loader.hpp"
-#include "compat/assert.hpp"
-#include "local-coords.hpp"
-#include <cmath>
-#include <Corrade/Containers/Iterable.h>
-#include <Corrade/Containers/StringStl.h>
-#include <Magnum/Math/Vector4.h>
-#include <Magnum/GL/Context.h>
-#include <Magnum/GL/Shader.h>
-#include <Magnum/GL/Version.h>
-
-namespace floormat {
-
-tile_shader::tile_shader()
-{
- constexpr auto min_version = GL::Version::GL330;
- const auto version = GL::Context::current().version();
-
- if (version < min_version)
- fm_abort("floormat requires OpenGL version %d, only %d is supported", (int)min_version, (int)version);
-
- GL::Shader vert{version, GL::Shader::Type::Vertex};
- GL::Shader frag{version, GL::Shader::Type::Fragment};
-
- vert.addSource(loader.shader("shaders/tile.vert"));
- frag.addSource(loader.shader("shaders/tile.frag"));
- CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile());
- CORRADE_INTERNAL_ASSERT_OUTPUT(frag.compile());
- attachShaders({vert, frag});
- CORRADE_INTERNAL_ASSERT_OUTPUT(link());
-
- set_scale({640, 480});
- set_tint({1, 1, 1, 1});
- setUniform(OffsetUniform, Vector3{});
-}
-
-tile_shader::~tile_shader() = default;
-
-tile_shader& tile_shader::set_scale(const Vector2& scale)
-{
- if (scale != _scale)
- setUniform(ScaleUniform, 2.f/(_scale = scale));
- return *this;
-}
-
-tile_shader& tile_shader::set_camera_offset(const Vector2d& camera_offset, float depth_offset)
-{
- _camera_offset = camera_offset;
- _depth_offset = depth_offset;
- return *this;
-}
-
-tile_shader& tile_shader::set_tint(const Vector4& tint)
-{
- _tint = tint;
- return *this;
-}
-
-void tile_shader::_draw()
-{
- fm_assert(std::fabs(_camera_offset[0]) < 1 << 24 && std::fabs(_camera_offset[1]) < 1 << 24);
- fm_assert(std::fabs(_depth_offset) < 1 << 24);
-
- if (_tint != _real_tint)
- setUniform(TintUniform, _real_tint = _tint);
-
- if (const auto offset = Vector3(Vector2(_camera_offset), _depth_offset);
- offset != _real_camera_offset)
- {
- _real_camera_offset = offset;
- setUniform(OffsetUniform, offset);
- }
-}
-
-float tile_shader::depth_value(const local_coords& xy, float offset) noexcept
-{
- return ((float)xy.x + (float)xy.y + offset) * depth_tile_size;
-}
-
-const Vector2s tile_shader::max_screen_tiles = {8, 8};
-const float tile_shader::character_depth_offset = 1 + 2./64;
-const float tile_shader::scenery_depth_offset = 1 + 2./64;
-const float tile_shader::wall_depth_offset = 1;
-const float tile_shader::z_depth_offset = 1 + 1./64;
-const float tile_shader::depth_tile_size = 1/(double)(TILE_MAX_DIM * 2 * max_screen_tiles.product());
-
-} // namespace floormat