diff --git a/src/experimental/filament/filament/mesh.cc b/src/experimental/filament/filament/mesh.cc index c2024f3b..9c06cfc7 100644 --- a/src/experimental/filament/filament/mesh.cc +++ b/src/experimental/filament/filament/mesh.cc @@ -32,7 +32,6 @@ #include #include #include -#include "experimental/filament/filament/filament_context.h" #include "experimental/filament/filament/math_util.h" #include "experimental/filament/render_context_filament.h" @@ -103,8 +102,8 @@ int FillSequence(std::byte* buffer, std::size_t num_bytes) { return num; } -Mesh::Mesh(FilamentContext* ctx, const mjrMeshData& data) - : engine_(ctx->GetEngine()), shared_state_(std::make_shared()) { +Mesh::Mesh(filament::Engine* engine, const mjrMeshData& data) + : engine_(engine), shared_state_(std::make_shared()) { type_ = data.primitive_type == mjMESH_PRIMITIVE_TYPE_TRIANGLES ? filament::RenderableManager::PrimitiveType::TRIANGLES : filament::RenderableManager::PrimitiveType::LINES; diff --git a/src/experimental/filament/filament/mesh.h b/src/experimental/filament/filament/mesh.h index ba9945da..735d8717 100644 --- a/src/experimental/filament/filament/mesh.h +++ b/src/experimental/filament/filament/mesh.h @@ -29,7 +29,6 @@ #include #include #include -#include "experimental/filament/filament/filament_context.h" #include "experimental/filament/render_context_filament.h" // Functions for creating filament vertex and index buffers. @@ -39,8 +38,7 @@ namespace mujoco { class Mesh : public mjrMesh { public: // Creates a Mesh from the given MeshData. - Mesh(FilamentContext* ctx, const mjrMeshData& data); - + Mesh(filament::Engine* engine, const mjrMeshData& data); ~Mesh(); Mesh(const Mesh&) = delete; diff --git a/src/experimental/filament/filament/render_target.cc b/src/experimental/filament/filament/render_target.cc index d8919a96..fa9bbfb9 100644 --- a/src/experimental/filament/filament/render_target.cc +++ b/src/experimental/filament/filament/render_target.cc @@ -26,15 +26,14 @@ #include #include #include -#include "experimental/filament/filament/filament_context.h" #include "experimental/filament/filament/texture.h" #include "experimental/filament/render_context_filament.h" namespace mujoco { -RenderTarget::RenderTarget(FilamentContext* ctx, +RenderTarget::RenderTarget(filament::Engine* engine, const mjrRenderTargetConfig& config) - : ctx_(ctx), config_(config) { + : engine_(engine), config_(config) { if (config_.width > 0 && config_.height > 0) { Prepare(config_.width, config_.height); } @@ -67,7 +66,7 @@ void RenderTarget::Prepare(int width, int height) { color_config.color_space = mjCOLORSPACE_LINEAR; color_config.format = mjPIXEL_FORMAT_RGB8; color_flags.color_attachment = true; - color_texture_ = std::make_unique(ctx_, color_config, color_flags); + color_texture_ = std::make_unique(engine_, color_config, color_flags); mjrTextureConfig depth_config; mjr_defaultTextureConfig(&depth_config); @@ -79,14 +78,14 @@ void RenderTarget::Prepare(int width, int height) { depth_config.color_space = mjCOLORSPACE_LINEAR; depth_config.format = mjPIXEL_FORMAT_DEPTH32F; depth_flags.depth_attachment = true; - depth_texture_ = std::make_unique(ctx_, depth_config, depth_flags); + depth_texture_ = std::make_unique(engine_, depth_config, depth_flags); filament::RenderTarget::Builder builder; builder.texture(filament::RenderTarget::AttachmentPoint::COLOR, color_texture_->GetFilamentTexture()); builder.texture(filament::RenderTarget::AttachmentPoint::DEPTH, depth_texture_->GetFilamentTexture()); - render_target_ = builder.build(*ctx_->GetEngine()); + render_target_ = builder.build(*engine_); } void RenderTarget::ReadColorPixels(filament::Renderer* renderer, uint8_t* bytes, @@ -120,7 +119,7 @@ void RenderTarget::ReadColorPixels(filament::Renderer* renderer, uint8_t* bytes, void RenderTarget::Destroy() { if (render_target_) { - ctx_->GetEngine()->destroy(render_target_); + engine_->destroy(render_target_); render_target_ = nullptr; } color_texture_.reset(); diff --git a/src/experimental/filament/filament/render_target.h b/src/experimental/filament/filament/render_target.h index 8e3fa83c..92e221b3 100644 --- a/src/experimental/filament/filament/render_target.h +++ b/src/experimental/filament/filament/render_target.h @@ -21,7 +21,6 @@ #include #include -#include "experimental/filament/filament/filament_context.h" #include "experimental/filament/filament/texture.h" #include "experimental/filament/render_context_filament.h" @@ -32,7 +31,7 @@ class RenderTarget : public mjrRenderTarget { public: // Defines the types of textures to create for the color and depth // attachments. - RenderTarget(FilamentContext* ctx, const mjrRenderTargetConfig& config); + RenderTarget(filament::Engine* engine, const mjrRenderTargetConfig& config); ~RenderTarget() noexcept; RenderTarget(const RenderTarget&) = delete; @@ -65,7 +64,7 @@ class RenderTarget : public mjrRenderTarget { private: void Destroy(); - FilamentContext* ctx_ = nullptr; + filament::Engine* engine_ = nullptr; mjrRenderTargetConfig config_; filament::RenderTarget* render_target_ = nullptr; std::unique_ptr color_texture_ = nullptr; diff --git a/src/experimental/filament/filament/scene_view.cc b/src/experimental/filament/filament/scene_view.cc index 4ddd103b..e97395b7 100644 --- a/src/experimental/filament/filament/scene_view.cc +++ b/src/experimental/filament/filament/scene_view.cc @@ -308,7 +308,8 @@ void SceneView::AddReflectiveRenderable(Renderable* renderable) { config.color_format = mjPIXEL_FORMAT_RGBA8; config.depth_format = mjPIXEL_FORMAT_DEPTH32F; - reflect_targets_.push_back(std::make_unique(ctx_, config)); + reflect_targets_.push_back( + std::make_unique(ctx_->GetEngine(), config)); } // Prepare a render target for the reflective renderable. diff --git a/src/experimental/filament/filament/texture.cc b/src/experimental/filament/filament/texture.cc index af174a6e..0d7b29ef 100644 --- a/src/experimental/filament/filament/texture.cc +++ b/src/experimental/filament/filament/texture.cc @@ -24,7 +24,6 @@ #include #include #include -#include "experimental/filament/filament/filament_context.h" #include "experimental/filament/render_context_filament.h" namespace mujoco { @@ -112,9 +111,9 @@ static filament::Texture::InternalFormat GetTextureInternalFormat( } } -Texture::Texture(FilamentContext* ctx, const mjrTextureConfig& config, +Texture::Texture(filament::Engine* engine, const mjrTextureConfig& config, InternalFlags flags) - : engine_(ctx->GetEngine()), config_(config) { + : engine_(engine), config_(config) { if (IsCompressed(config_)) { // We defer creation of compressed textures until Upload() is called. In // the meantime, we don't really know anything about the texture (e.g. diff --git a/src/experimental/filament/filament/texture.h b/src/experimental/filament/filament/texture.h index ba94a161..bfe4fbf6 100644 --- a/src/experimental/filament/filament/texture.h +++ b/src/experimental/filament/filament/texture.h @@ -18,7 +18,6 @@ #include #include #include -#include "experimental/filament/filament/filament_context.h" #include "experimental/filament/render_context_filament.h" // Functions for creating filament textures. @@ -35,7 +34,7 @@ class Texture : public mjrTexture { }; // Creates a texture with the given data. - Texture(FilamentContext* ctx, const mjrTextureConfig& config, + Texture(filament::Engine* engine, const mjrTextureConfig& config, InternalFlags flags = InternalFlags()); ~Texture(); diff --git a/src/experimental/filament/render_context_filament.cc b/src/experimental/filament/render_context_filament.cc index 8c13c404..68b58766 100644 --- a/src/experimental/filament/render_context_filament.cc +++ b/src/experimental/filament/render_context_filament.cc @@ -154,7 +154,8 @@ void mjrf_destroyContext(mjrfContext* ctx) { } mjrTexture* mjrf_createTexture(mjrfContext* ctx, const mjrTextureConfig* cfg) { - return new mujoco::Texture(mujoco::FilamentContext::downcast(ctx), *cfg); + return new mujoco::Texture( + mujoco::FilamentContext::downcast(ctx)->GetEngine(), *cfg); } void mjrf_destroyTexture(mjrTexture* texture) { @@ -162,7 +163,8 @@ void mjrf_destroyTexture(mjrTexture* texture) { } mjrMesh* mjrf_createMesh(mjrfContext* ctx, const mjrMeshData* data) { - return new mujoco::Mesh(mujoco::FilamentContext::downcast(ctx), *data); + return new mujoco::Mesh(mujoco::FilamentContext::downcast(ctx)->GetEngine(), + *data); } void mjrf_destroyMesh(mjrMesh* mesh) { delete mujoco::Mesh::downcast(mesh); } @@ -195,15 +197,14 @@ void mjrf_destroyRenderable(mjrRenderable* renderable) { mjrRenderTarget* mjrf_createRenderTarget(mjrfContext* ctx, const mjrRenderTargetConfig* config) { - return new mujoco::RenderTarget(mujoco::FilamentContext::downcast(ctx), - *config); + return new mujoco::RenderTarget( + mujoco::FilamentContext::downcast(ctx)->GetEngine(), *config); } void mjrf_destroyRenderTarget(mjrRenderTarget* render_target) { delete mujoco::RenderTarget::downcast(render_target); } - void mjrf_setTextureData(mjrTexture* texture, const mjrTextureData* data) { mujoco::Texture::downcast(texture)->Upload(*data); }