aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/gltf.hpp5
-rw-r--r--include/material.hpp9
-rw-r--r--include/mesh.hpp10
-rw-r--r--include/scene.hpp22
-rw-r--r--include/vec3.hpp9
5 files changed, 53 insertions, 2 deletions
diff --git a/include/gltf.hpp b/include/gltf.hpp
index 6e89509..1ccaf56 100644
--- a/include/gltf.hpp
+++ b/include/gltf.hpp
@@ -49,7 +49,12 @@ private:
json gltf_json;
std::vector<Mesh> meshes;
std::vector<material> materials;
+#ifdef API_TEST
+ std::vector<handle<device_texture>> textures;
+ // handle<device_sampler> samplers;
+#else
std::vector<Texture*> textures;
+#endif // API_TEST
std::vector<std::vector<uint8_t>> buffers;
};
diff --git a/include/material.hpp b/include/material.hpp
index 71dd4ca..35710d2 100644
--- a/include/material.hpp
+++ b/include/material.hpp
@@ -4,12 +4,21 @@
#include "vec3.hpp"
+#ifdef API_TEST
+#include "vk-device-types.hpp"
+#else
class Texture;
+#endif
struct material {
color base_color;
+#ifdef API_TEST
+ handle<device_texture> base_color_texture;
+ handle<device_texture> metallic_roughness_texture;
+#else
Texture* base_color_texture;
Texture* metallic_roughness_texture;
+#endif // API_TEST
float metalness = 1.f;
float roughness = 1.f;
};
diff --git a/include/mesh.hpp b/include/mesh.hpp
index 9a30be6..b88896d 100644
--- a/include/mesh.hpp
+++ b/include/mesh.hpp
@@ -4,7 +4,11 @@
#include <vector>
#include <array>
+#ifdef API_TEST
+#include "vk-device-types.hpp"
+#else
#include "vk-renderer.hpp"
+#endif // API_TEST
enum ATTRIBUTE_TYPE {
POSITION,
@@ -89,9 +93,15 @@ private:
std::vector<submesh_info> submeshes;
struct gpu_mesh {
+#ifdef API_TEST
+ std::array<handle<device_buffer>, ATTRIBUTE_TYPE::MAX_ATTRIBUTE> attributes;
+ const device_buffer& indices;
+ const device_buffer& submeshes;
+#else
std::array<Buffer*, ATTRIBUTE_TYPE::MAX_ATTRIBUTE> attributes;
Buffer* indices;
Buffer* submeshes;
+#endif // API_TEST
};
// allocate gpu mesh upon instanciation
diff --git a/include/scene.hpp b/include/scene.hpp
index 78b90b7..ad298da 100644
--- a/include/scene.hpp
+++ b/include/scene.hpp
@@ -3,6 +3,10 @@
#include <cstdint>
+#ifdef API_TEST
+#include "vk-device-types.hpp"
+#include "vk-device.hpp"
+#endif // API_TEST
#include "camera.hpp"
class Buffer;
@@ -33,6 +37,23 @@ public:
metadata meta;
+#ifdef API_TEST
+ handle<device_buffer> scene_buffer_handle;
+ handle<device_buffer> indices_buffer_handle;
+ handle<device_buffer> positions_buffer_handle;
+ handle<device_buffer> normals_buffer_handle;
+ handle<device_buffer> uvs_buffer_handle;
+ handle<device_buffer> bvh_buffer_handle;
+ handle<device_buffer> materials_buffer_handle;
+
+ uint64_t scene_buffer_address() { return vkdevice::get_render_device().get_buffer(scene_buffer_handle).device_address; };
+ uint64_t indices_buffer_address() { return vkdevice::get_render_device().get_buffer(indices_buffer_handle).device_address; };
+ uint64_t positions_buffer_address() { return vkdevice::get_render_device().get_buffer(positions_buffer_handle).device_address; };
+ uint64_t normals_buffer_address() { return vkdevice::get_render_device().get_buffer(normals_buffer_handle).device_address; };
+ uint64_t uvs_buffer_address() { return vkdevice::get_render_device().get_buffer(uvs_buffer_handle).device_address; };
+ uint64_t bvh_buffer_address() { return vkdevice::get_render_device().get_buffer(bvh_buffer_handle).device_address; };
+ uint64_t materials_buffer_address() { return vkdevice::get_render_device().get_buffer(materials_buffer_handle).device_address; };
+#else
Buffer* scene_buffer;
Buffer* indices_buffer;
Buffer* positions_buffer;
@@ -40,6 +61,7 @@ public:
Buffer* uvs_buffer;
Buffer* bvh_buffer;
Buffer* materials_buffer;
+#endif // API_TEST
};
#endif // !__SCENE_HPP_
diff --git a/include/vec3.hpp b/include/vec3.hpp
index 75b67d2..968f3ed 100644
--- a/include/vec3.hpp
+++ b/include/vec3.hpp
@@ -6,8 +6,10 @@
struct vec3u {
union {
- uint32_t vec[3];
- uint32_t x, y, z;
+ uint32_t arr[3];
+ struct {
+ uint32_t x, y, z;
+ } vec;
};
};
@@ -36,6 +38,9 @@ class vec3 {
vec3 operator>(const vec3& vec) const;
+ [[nodiscard]]vec3 (min)(const vec3& vec) const;
+ [[nodiscard]]vec3 (max)(const vec3& vec) const;
+
float operator[](int axis);
[[nodiscard]] float length() const;