From dbe0bd3385766e7f99b452f042c1d696e2ed53e8 Mon Sep 17 00:00:00 2001 From: ternaryop8479 Date: Wed, 11 Feb 2026 12:12:38 +0800 Subject: [PATCH] =?UTF-8?q?Fix&Add:=20=E7=A6=81Buffer/Texture=E7=B1=BB?= =?UTF-8?q?=E6=8B=B7=E8=B4=9D=EF=BC=8C=E6=B7=BB=E5=8A=A0Materials/Lights->?= =?UTF-8?q?GPU=E6=8C=89=E9=9C=80=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/cornell_box | Bin 409512 -> 409872 bytes include/core/raytracer.h | 5 ++- include/resource/buffer.h | 6 ++++ include/resource/texture.h | 6 ++++ src/core/raytracer.cpp | 66 +++++++++++++++++++++++++++++-------- src/resource/buffer.cpp | 25 +++++++++++++- src/resource/texture.cpp | 31 ++++++++++++++++- 7 files changed, 122 insertions(+), 17 deletions(-) diff --git a/examples/cornell_box b/examples/cornell_box index 5ccfb29f4515b93718c809d1c6b57db2e12d52dc..c498fdba72caf9a848feeb9ba224c93916b6df81 100644 GIT binary patch delta 93874 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 NqVXXGV}%)+{{th%zUBY` delta 91930 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

N?O7B+zyv{{ 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 Y@6w9#{GUs;N3%m&J!9#MX!gPX3#utI%m4rY diff --git a/include/core/raytracer.h b/include/core/raytracer.h index fa8a3b2..4f60abf 100644 --- a/include/core/raytracer.h +++ b/include/core/raytracer.h @@ -71,7 +71,7 @@ public: /// @brief Set compute shader (called by renderer) /// @param shader Compute shader - void set_compute_shader(const std::shared_ptr& shader); + void set_compute_shader(const std::shared_ptr &shader); private: uint width_; @@ -90,6 +90,9 @@ private: Buffer bvh_triangle_buffer_; // 添加 bool bvh_built_; // 添加 + uint materials_hash_; + uint lights_hash_; + uint frame_count_; bool initialized_; diff --git a/include/resource/buffer.h b/include/resource/buffer.h index d0ea6da..4cb7521 100644 --- a/include/resource/buffer.h +++ b/include/resource/buffer.h @@ -25,6 +25,12 @@ class Buffer { public: /// @brief Constructor Buffer(); + + Buffer(const Buffer&) = delete; + Buffer& operator=(const Buffer&) = delete; + + Buffer(Buffer&& other) noexcept; + Buffer& operator=(Buffer&& other) noexcept; /// @brief Destructor ~Buffer(); diff --git a/include/resource/texture.h b/include/resource/texture.h index e195ef8..59cad16 100644 --- a/include/resource/texture.h +++ b/include/resource/texture.h @@ -46,6 +46,12 @@ class Texture { public: /// @brief Constructor Texture(); + + Texture(const Texture&) = delete; + Texture& operator=(const Texture&) = delete; + + Texture(Texture&& other) noexcept; + Texture& operator=(Texture&& other) noexcept; /// @brief Destructor ~Texture(); diff --git a/src/core/raytracer.cpp b/src/core/raytracer.cpp index e110708..8568a99 100644 --- a/src/core/raytracer.cpp +++ b/src/core/raytracer.cpp @@ -5,6 +5,18 @@ namespace are { +namespace { + uint fnv1a_hash_bytes(const void *data, size_t size) { + const uint8_t *bytes = static_cast(data); + uint h = 2166136261u; + for (size_t i = 0; i < size; ++i) { + h ^= bytes[i]; + h *= 16777619u; + } + return h; + } +} // namespace + RayTracer::RayTracer(uint width, uint height, const RayTracerConfig &config) : width_(width) , height_(height) @@ -15,6 +27,8 @@ RayTracer::RayTracer(uint width, uint height, const RayTracerConfig &config) , light_buffer_(INVALID_HANDLE) , bvh_(nullptr) , bvh_built_(false) + , materials_hash_(0u) + , lights_hash_(0u) , frame_count_(0) , initialized_(false) { } @@ -104,6 +118,7 @@ bool RayTracer::rebuild_bvh(const Scene &scene) { } bvh_built_ = true; + reset_accumulation(); Logger::info("BVH built and uploaded successfully"); return true; } @@ -227,7 +242,7 @@ void RayTracer::set_config(const RayTracerConfig &config) { } void RayTracer::upload_scene_data_(const Scene &scene) { - // Upload materials + // Upload materials (on change only) const auto &materials = scene.get_materials(); if (!materials.empty()) { struct MaterialData { @@ -244,7 +259,7 @@ void RayTracer::upload_scene_data_(const Scene &scene) { material_data.reserve(materials.size()); for (const auto &mat : materials) { - MaterialData data; + MaterialData data {}; data.albedo = mat->get_albedo(); data.metallic = mat->get_metallic(); data.emission = mat->get_emission(); @@ -254,14 +269,26 @@ void RayTracer::upload_scene_data_(const Scene &scene) { material_data.push_back(data); } - glBindBuffer(GL_SHADER_STORAGE_BUFFER, material_buffer_); - glBufferData(GL_SHADER_STORAGE_BUFFER, - material_data.size() * sizeof(MaterialData), - material_data.data(), GL_DYNAMIC_DRAW); - glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, material_buffer_); + uint h = fnv1a_hash_bytes(material_data.data(), material_data.size() * sizeof(MaterialData)); + if (h != materials_hash_) { + materials_hash_ = h; + + glBindBuffer(GL_SHADER_STORAGE_BUFFER, material_buffer_); + glBufferData(GL_SHADER_STORAGE_BUFFER, + material_data.size() * sizeof(MaterialData), + material_data.data(), GL_DYNAMIC_DRAW); + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, material_buffer_); + + reset_accumulation(); // materials changed => invalidate accumulation + } else { + // Still ensure bound (in case other code changed bindings) + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, material_buffer_); + } + } else { + materials_hash_ = 0u; } - // Upload lights + // Upload lights (on change only) const auto &lights = scene.get_lights(); if (!lights.empty()) { struct LightData { @@ -279,7 +306,7 @@ void RayTracer::upload_scene_data_(const Scene &scene) { light_data.reserve(lights.size()); for (const auto &light : lights) { - LightData data; + LightData data {}; data.position = light->get_position(); data.type = static_cast(light->get_type()); data.direction = light->get_direction(); @@ -290,11 +317,22 @@ void RayTracer::upload_scene_data_(const Scene &scene) { light_data.push_back(data); } - glBindBuffer(GL_SHADER_STORAGE_BUFFER, light_buffer_); - glBufferData(GL_SHADER_STORAGE_BUFFER, - light_data.size() * sizeof(LightData), - light_data.data(), GL_DYNAMIC_DRAW); - glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, light_buffer_); + uint h = fnv1a_hash_bytes(light_data.data(), light_data.size() * sizeof(LightData)); + if (h != lights_hash_) { + lights_hash_ = h; + + glBindBuffer(GL_SHADER_STORAGE_BUFFER, light_buffer_); + glBufferData(GL_SHADER_STORAGE_BUFFER, + light_data.size() * sizeof(LightData), + light_data.data(), GL_DYNAMIC_DRAW); + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, light_buffer_); + + reset_accumulation(); // lights changed => invalidate accumulation + } else { + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, light_buffer_); + } + } else { + lights_hash_ = 0u; } } diff --git a/src/resource/buffer.cpp b/src/resource/buffer.cpp index 3172908..67d4ad4 100644 --- a/src/resource/buffer.cpp +++ b/src/resource/buffer.cpp @@ -32,8 +32,31 @@ Buffer::Buffer() , usage_(BufferUsage::STATIC_DRAW) { } +Buffer::Buffer(Buffer&& other) noexcept + : handle_(other.handle_) + , type_(other.type_) + , size_(other.size_) + , usage_(other.usage_) { + other.handle_ = INVALID_HANDLE; + other.size_ = 0; +} + +Buffer& Buffer::operator=(Buffer&& other) noexcept { + if (this == &other) return *this; + + release(); + handle_ = other.handle_; + type_ = other.type_; + size_ = other.size_; + usage_ = other.usage_; + + other.handle_ = INVALID_HANDLE; + other.size_ = 0; + return *this; +} + Buffer::~Buffer() { - // Don't auto-release, let user control lifetime + release(); } bool Buffer::create(BufferType type, size_t size, const void* data, BufferUsage usage) { diff --git a/src/resource/texture.cpp b/src/resource/texture.cpp index 521e955..30cfe67 100644 --- a/src/resource/texture.cpp +++ b/src/resource/texture.cpp @@ -104,8 +104,37 @@ Texture::Texture() , has_mipmaps_(false) { } +Texture::Texture(Texture&& other) noexcept + : handle_(other.handle_) + , width_(other.width_) + , height_(other.height_) + , format_(other.format_) + , has_mipmaps_(other.has_mipmaps_) { + other.handle_ = INVALID_HANDLE; + other.width_ = 0; + other.height_ = 0; + other.has_mipmaps_ = false; +} + +Texture& Texture::operator=(Texture&& other) noexcept { + if (this == &other) return *this; + + release(); + handle_ = other.handle_; + width_ = other.width_; + height_ = other.height_; + format_ = other.format_; + has_mipmaps_ = other.has_mipmaps_; + + other.handle_ = INVALID_HANDLE; + other.width_ = 0; + other.height_ = 0; + other.has_mipmaps_ = false; + return *this; +} + Texture::~Texture() { - // Don't auto-release, let user control lifetime + release(); } bool Texture::load_from_file(const std::string& path, bool generate_mipmaps) {