diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2025-01-26 22:14:47 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2025-01-26 22:14:47 +0100 |
| commit | 2b2d374eb642edf345f93fa559e8cd7d76a0c9d1 (patch) | |
| tree | fbc1440dc1514a55d14f72a773b0ea962eb93dd0 /include | |
| parent | f63be3ecc79499a9a362ce38d0f3be44033c37fc (diff) | |
Fix mesh loading for new API
Diffstat (limited to 'include')
| -rw-r--r-- | include/gltf.hpp | 5 | ||||
| -rw-r--r-- | include/material.hpp | 9 | ||||
| -rw-r--r-- | include/mesh.hpp | 10 | ||||
| -rw-r--r-- | include/scene.hpp | 22 | ||||
| -rw-r--r-- | include/vec3.hpp | 9 |
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; |
