summaryrefslogtreecommitdiff
path: root/src/blu_cat/gra
diff options
context:
space:
mode:
Diffstat (limited to 'src/blu_cat/gra')
-rw-r--r--src/blu_cat/gra/binary_reader.cpp156
-rw-r--r--src/blu_cat/gra/binary_reader.hpp69
-rw-r--r--src/blu_cat/gra/qoi.cpp4
-rw-r--r--src/blu_cat/gra/skeletal_mesh.cpp16
-rw-r--r--src/blu_cat/gra/static_mesh.cpp2
-rw-r--r--src/blu_cat/gra/vulkan.hpp14
6 files changed, 13 insertions, 248 deletions
diff --git a/src/blu_cat/gra/binary_reader.cpp b/src/blu_cat/gra/binary_reader.cpp
deleted file mode 100644
index 14fc39c..0000000
--- a/src/blu_cat/gra/binary_reader.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright 2022-2024 Frederico de Oliveira Linhares
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "binary_reader.hpp"
-
-#include <fstream>
-
-namespace
-{
-
-union IntAndFloat32bit{
- uint32_t i;
- float f;
-};
-
-union IntAndFloat64bit{
- uint64_t i;
- double f;
-};
-
-}
-
-BinaryReader::BinaryReader(std::string file_path):
- _pointer{0}
-{
- std::ifstream file(file_path, std::ios::binary | std::ios::ate);
- if(!file.is_open())
- {
- std::string error{"failed to open file: "};
- error += file_path;
- throw std::runtime_error{error};
- }
-
- this->_size = file.tellg();
- file.seekg(0);
- this->data = new uint8_t[this->_size];
- file.read((char*)data, this->_size);
-}
-
-BinaryReader::BinaryReader(const char *file_path):
- BinaryReader{std::string(file_path)}
-{
-}
-
-BinaryReader::~BinaryReader()
-{
- delete[] this->data;
-}
-
-uint8_t
-BinaryReader::read_ui8()
-{
- return this->data[this->_pointer++];
-}
-
-uint32_t
-BinaryReader::read_ui32()
-{
- uint8_t b1{this->data[_pointer++]}, b2{this->data[_pointer++]},
- b3{this->data[_pointer++]}, b4{this->data[_pointer++]};
-
- return b1 << 24 | b2 << 16 | b3 << 8 | b4;
-}
-
-uint64_t
-BinaryReader::read_ui64()
-{
- uint8_t b1{this->data[_pointer++]}, b2{this->data[_pointer++]},
- b3{this->data[_pointer++]}, b4{this->data[_pointer++]},
- b5{this->data[_pointer++]}, b6{this->data[_pointer++]},
- b7{this->data[_pointer++]}, b8{this->data[_pointer++]};
-
- return (uint64_t)b1 << 56 | (uint64_t)b2 << 48 | (uint64_t)b3 << 40 |
- (uint64_t)b4 << 32 | (uint64_t)b5 << 24 | (uint64_t)b6 << 16 |
- (uint64_t)b7 << 8 | (uint64_t)b8;
-}
-
-float
-BinaryReader::read_float()
-{
- IntAndFloat32bit num;
- num.i = read_ui32();
-
- return num.f;
-}
-
-double
-BinaryReader::read_double()
-{
- IntAndFloat64bit num;
- num.i = read_ui64();
-
- return num.f;
-}
-
-glm::vec2
-BinaryReader::read_vec2()
-{
- IntAndFloat32bit x{read_ui32()}, y{read_ui32()};
-
- return glm::vec2{x.f, y.f};
-}
-
-glm::vec3
-BinaryReader::read_vec3()
-{
- IntAndFloat32bit x{read_ui32()}, y{read_ui32()}, z{read_ui32()};
-
- return glm::vec3{x.f, y.f, z.f};
-}
-
-glm::quat
-BinaryReader::read_quat()
-{
- IntAndFloat32bit w{read_ui32()}, x{read_ui32()}, y{read_ui32()},
- z{read_ui32()};
-
- return glm::quat{w.f, x.f, y.f, z.f};
-}
-
-glm::mat4
-BinaryReader::read_mat4()
-{
- glm::mat4 matrix;
- float *offset_matrix_data{glm::value_ptr(matrix)};
-
- for(int i{0}; i < 16; i++)
- {
- IntAndFloat32bit num;
- num.i = read_ui32();
- offset_matrix_data[i] = num.f;
- }
-
- return matrix;
-}
-
-void
-BinaryReader::read_chars(char *str, int size)
-{
- for(int i{0}; i < size; i++)
- str[i] = (char)data[this->_pointer++];
-}
-
diff --git a/src/blu_cat/gra/binary_reader.hpp b/src/blu_cat/gra/binary_reader.hpp
deleted file mode 100644
index 1995402..0000000
--- a/src/blu_cat/gra/binary_reader.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2022-2024 Frederico de Oliveira Linhares
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <cstdint>
-#include <string>
-
-#include "vulkan.hpp"
-
-class BinaryReader
-{
- int _pointer;
- int _size;
- uint8_t *data;
-
-public:
-
- BinaryReader(const std::string file_path);
- BinaryReader(const char *file_path);
- ~BinaryReader();
-
- inline int
- pointer(){return this->_pointer;};
-
- inline int
- size(){return this->_size;};
-
- uint8_t
- read_ui8();
-
- uint32_t
- read_ui32();
-
- uint64_t
- read_ui64();
-
- float
- read_float();
-
- double
- read_double();
-
- glm::vec2
- read_vec2();
-
- glm::vec3
- read_vec3();
-
- glm::quat
- read_quat();
-
- glm::mat4
- read_mat4();
-
- void
- read_chars(char *str, int size);
-};
diff --git a/src/blu_cat/gra/qoi.cpp b/src/blu_cat/gra/qoi.cpp
index 790516d..40968df 100644
--- a/src/blu_cat/gra/qoi.cpp
+++ b/src/blu_cat/gra/qoi.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2024 Frederico de Oliveira Linhares
+ * Copyright 2022-2025 Frederico de Oliveira Linhares
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@
#include <array>
#include <fstream>
-#include "binary_reader.hpp"
+#include "../com/binary_reader.hpp"
namespace
{
diff --git a/src/blu_cat/gra/skeletal_mesh.cpp b/src/blu_cat/gra/skeletal_mesh.cpp
index 89d701b..1beed1a 100644
--- a/src/blu_cat/gra/skeletal_mesh.cpp
+++ b/src/blu_cat/gra/skeletal_mesh.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2024 Frederico de Oliveira Linhares
+ * Copyright 2022-2025 Frederico de Oliveira Linhares
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
#include "skeletal_mesh.hpp"
-#include "binary_reader.hpp"
+#include "../com/binary_reader.hpp"
#include "../com/command.hpp"
#include "../int/core.hpp"
#include "skeletal_mesh_vertex.hpp"
@@ -72,7 +72,7 @@ load_mesh(void *obj)
for(auto ii{0}; ii < BluCat::GRA::SKELETAL_MESH_MAX_NUM_OF_INFLUENCING_BONES;
ii++)
- vertexes[i].bone_weights[ii] = input.read_float();
+ vertexes[i].bone_weights[ii] = input.read_f32();
}
void *vertexes_data{vertexes.data()};
@@ -112,10 +112,10 @@ load_mesh(void *obj)
self->mesh->animations.resize(num_animations);
for(uint32_t i{0}; i < num_animations; i++)
{
- auto duration{input.read_double()};
+ auto duration{input.read_f64()};
self->mesh->animations[i].final_time = (float)duration;
- auto ticks_per_second{input.read_double()};
+ auto ticks_per_second{input.read_f64()};
auto num_bone_transforms{input.read_ui32()};
std::vector<BluCat::GRA::BoneTransform> *bone_transforms =
@@ -133,7 +133,7 @@ load_mesh(void *obj)
position_key_index++)
{
auto vec3{input.read_vec3()};
- auto timestamp{input.read_double()};
+ auto timestamp{input.read_f64()};
positions->key_frames.emplace_back(
vec3, static_cast<float>(timestamp));
}
@@ -145,7 +145,7 @@ load_mesh(void *obj)
rotation_key_index++)
{
auto quat{input.read_quat()};
- auto timestamp{input.read_double()};
+ auto timestamp{input.read_f64()};
rotations->key_frames.emplace_back(
quat, static_cast<float>(timestamp));
}
@@ -157,7 +157,7 @@ load_mesh(void *obj)
scaling_key_index++)
{
auto vec3{input.read_vec3()};
- auto timestamp{input.read_double()};
+ auto timestamp{input.read_f64()};
scales->key_frames.emplace_back(vec3, static_cast<float>(timestamp));
}
}
diff --git a/src/blu_cat/gra/static_mesh.cpp b/src/blu_cat/gra/static_mesh.cpp
index db3a6ee..0d95590 100644
--- a/src/blu_cat/gra/static_mesh.cpp
+++ b/src/blu_cat/gra/static_mesh.cpp
@@ -16,7 +16,7 @@
#include "static_mesh.hpp"
-#include "binary_reader.hpp"
+#include "../com/binary_reader.hpp"
#include "../com/command.hpp"
#include "../int/core.hpp"
#include "static_mesh_vertex.hpp"
diff --git a/src/blu_cat/gra/vulkan.hpp b/src/blu_cat/gra/vulkan.hpp
index fcf6628..73c599f 100644
--- a/src/blu_cat/gra/vulkan.hpp
+++ b/src/blu_cat/gra/vulkan.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2022-2024 Frederico de Oliveira Linhares
+ * Copyright 2022-2025 Frederico de Oliveira Linhares
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,17 +17,7 @@
#ifndef BLU_CAT_GRA_VULKAN_H
#define BLU_CAT_GRA_VULKAN_H 1
-// GLM uses some definitions to control their behavior, so you should not
-// include it directly. Instead, use this header.
-#define GLM_ENABLE_EXPERIMENTAL
-#define GLM_FORCE_RADIANS
-#define GLM_FORCE_DEPTH_ZERO_TO_ONE
-
-#include <glm/ext/vector_float3.hpp>
-#include <glm/ext.hpp>
-#include <glm/gtc/matrix_transform.hpp>
-#include <glm/gtx/quaternion.hpp>
-#include <glm/vec3.hpp>
+#include "../com/numbers.hpp"
#include <vulkan/vulkan.h>