Rename RenderTargetAndTextures to RenderTarget.

Also rename render_target_util to render_target.

PiperOrigin-RevId: 896033907
Change-Id: I123cf98dc308f7cc4916f7b79dcc59a05564022d
This commit is contained in:
Haroon Qureshi
2026-04-07 12:29:53 -07:00
committed by Copybara-Service
parent 382474bb9d
commit f7fd5fc58b
9 changed files with 54 additions and 53 deletions
+2 -2
View File
@@ -53,8 +53,8 @@ target_sources(${MUJOCO_FILAMENT_TARGET_NAME}
filament/model_util.h
filament/object_manager.cc
filament/object_manager.h
filament/render_target_util.cc
filament/render_target_util.h
filament/render_target.cc
filament/render_target.h
filament/renderables.cc
filament/renderables.h
filament/scene_view.cc
@@ -43,7 +43,7 @@
#include "experimental/filament/filament/imgui_editor.h"
#include "experimental/filament/filament/model_util.h"
#include "experimental/filament/filament/object_manager.h"
#include "experimental/filament/filament/render_target_util.h"
#include "experimental/filament/filament/render_target.h"
#include "experimental/filament/filament/scene_view.h"
#include "experimental/filament/filament/texture.h"
#include "experimental/filament/render_context_filament.h"
@@ -185,12 +185,12 @@ void FilamentContext::SetFrameBuffer(int framebuffer) {
}
void FilamentContext::PrepareRenderTargets(int width, int height) {
color_target_ = std::make_unique<RenderTargetAndTextures>(
color_target_ = std::make_unique<RenderTarget>(
engine_, RenderTargetTextureType::kColor,
RenderTargetTextureType::kDepth);
color_target_->Prepare(width, height);
depth_target_ = std::make_unique<RenderTargetAndTextures>(
depth_target_ = std::make_unique<RenderTarget>(
engine_, RenderTargetTextureType::kDepthColor,
RenderTargetTextureType::kDepth);
depth_target_->Prepare(width, height);
@@ -202,23 +202,25 @@ void FilamentContext::DestroyRenderTargets() {
}
static void ReadColorPixels(filament::Renderer* renderer,
filament::RenderTarget* target, mjrRect viewport,
RenderTarget* target, mjrRect viewport,
unsigned char* buffer, size_t num_bytes) {
filament::backend::PixelBufferDescriptor descriptor(
buffer, num_bytes, filament::backend::PixelDataFormat::RGB,
filament::backend::PixelDataType::UBYTE);
renderer->readPixels(target, viewport.left, viewport.bottom, viewport.width,
viewport.height, std::move(descriptor));
renderer->readPixels(target->GetFilamentRenderTarget(), viewport.left,
viewport.bottom, viewport.width, viewport.height,
std::move(descriptor));
}
static void ReadDepthPixels(filament::Renderer* renderer,
filament::RenderTarget* target, mjrRect viewport,
RenderTarget* target, mjrRect viewport,
float* buffer, size_t num_bytes) {
filament::backend::PixelBufferDescriptor descriptor(
buffer, num_bytes, filament::backend::PixelDataFormat::R,
filament::backend::PixelDataType::FLOAT);
renderer->readPixels(target, viewport.left, viewport.bottom, viewport.width,
viewport.height, std::move(descriptor));
renderer->readPixels(target->GetFilamentRenderTarget(), viewport.left,
viewport.bottom, viewport.width, viewport.height,
std::move(descriptor));
}
void FilamentContext::ReadPixels(mjrRect viewport, unsigned char* rgb,
@@ -238,17 +240,15 @@ void FilamentContext::ReadPixels(mjrRect viewport, unsigned char* rgb,
if (rgb) {
if (renderer_->beginFrame(offscreen_swap_chain_)) {
scene_view_->Render(renderer_, last_render_mode_,
color_target_->GetRenderTarget());
scene_view_->Render(renderer_, last_render_mode_, color_target_.get());
// Render the GUI to the texture as well if requested.
if (gui_view_ && gui_swap_chain_target_ == kOffscreenSwapChain) {
gui_view_->Render(renderer_, color_target_->GetRenderTarget());
gui_view_->Render(renderer_, color_target_.get());
}
const size_t num_bytes = viewport.width * viewport.height * 3;
ReadColorPixels(renderer_, color_target_->GetRenderTarget(), viewport,
rgb, num_bytes);
ReadColorPixels(renderer_, color_target_.get(), viewport, rgb, num_bytes);
renderer_->endFrame();
}
@@ -257,11 +257,11 @@ void FilamentContext::ReadPixels(mjrRect viewport, unsigned char* rgb,
if (depth) {
if (renderer_->beginFrame(offscreen_swap_chain_)) {
scene_view_->Render(renderer_, SceneView::DrawMode::kDepth,
depth_target_->GetRenderTarget());
depth_target_.get());
const size_t num_bytes = viewport.width * viewport.height * sizeof(float);
ReadDepthPixels(renderer_, depth_target_->GetRenderTarget(), viewport,
depth, num_bytes);
ReadDepthPixels(renderer_, depth_target_.get(), viewport, depth,
num_bytes);
renderer_->endFrame();
}
@@ -26,7 +26,7 @@
#include <mujoco/mjvisualize.h>
#include "experimental/filament/filament/gui_view.h"
#include "experimental/filament/filament/object_manager.h"
#include "experimental/filament/filament/render_target_util.h"
#include "experimental/filament/filament/render_target.h"
#include "experimental/filament/filament/scene_view.h"
#include "experimental/filament/render_context_filament.h"
@@ -82,8 +82,8 @@ class FilamentContext {
SceneView::DrawMode last_render_mode_ = SceneView::DrawMode::kNormal;
SwapChainType scene_swap_chain_target_ = kWindowSwapChain;
SwapChainType gui_swap_chain_target_ = kWindowSwapChain;
std::unique_ptr<RenderTargetAndTextures> color_target_;
std::unique_ptr<RenderTargetAndTextures> depth_target_;
std::unique_ptr<RenderTarget> color_target_;
std::unique_ptr<RenderTarget> depth_target_;
std::unique_ptr<ObjectManager> object_manager_;
std::unique_ptr<SceneView> scene_view_;
std::unique_ptr<GuiView> gui_view_;
@@ -32,6 +32,7 @@
#include <mujoco/mjrender.h>
#include <mujoco/mujoco.h>
#include "experimental/filament/filament/mesh.h"
#include "experimental/filament/filament/render_target.h"
#include "experimental/filament/filament/texture.h"
namespace mujoco {
@@ -352,13 +353,12 @@ filament::MaterialInstance* GuiView::GetMaterialInstance(int index,
return instance;
}
void GuiView::Render(filament::Renderer* renderer,
filament::RenderTarget* target) {
void GuiView::Render(filament::Renderer* renderer, RenderTarget* target) {
if (num_elements_ == 0) {
return;
}
view_->setRenderTarget(target);
view_->setRenderTarget(target ? target->GetFilamentRenderTarget() : nullptr);
renderer->render(view_);
view_->setRenderTarget(nullptr);
}
@@ -30,6 +30,7 @@
#include <filament/View.h>
#include <mujoco/mjrender.h>
#include "experimental/filament/filament/mesh.h"
#include "experimental/filament/filament/render_target.h"
#include "experimental/filament/filament/texture.h"
namespace mujoco {
@@ -45,8 +46,7 @@ class GuiView {
// correctly synced.
void UpdateRenderable();
void Render(filament::Renderer* renderer,
filament::RenderTarget* target = nullptr);
void Render(filament::Renderer* renderer, RenderTarget* target = nullptr);
// Uploads texture to be used with ImGui's Image and ImageButton functions.
uintptr_t UploadImage(uintptr_t tex_id, const uint8_t* pixels, int width,
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#include "experimental/filament/filament/render_target_util.h"
#include "experimental/filament/filament/render_target.h"
#include <memory>
@@ -23,16 +23,16 @@
namespace mujoco {
RenderTargetAndTextures::RenderTargetAndTextures(filament::Engine* engine,
RenderTarget::RenderTarget(filament::Engine* engine,
RenderTargetTextureType color,
RenderTargetTextureType depth)
: engine_(engine), color_type_(color), depth_type_(depth) {}
RenderTargetAndTextures::~RenderTargetAndTextures() noexcept {
RenderTarget::~RenderTarget() noexcept {
Destroy();
}
void RenderTargetAndTextures::Prepare(int width, int height) {
void RenderTarget::Prepare(int width, int height) {
if (width == width_ && height == height_) {
return;
}
@@ -53,7 +53,7 @@ void RenderTargetAndTextures::Prepare(int width, int height) {
render_target_ = builder.build(*engine_);
}
void RenderTargetAndTextures::Destroy() {
void RenderTarget::Destroy() {
if (render_target_) {
engine_->destroy(render_target_);
render_target_ = nullptr;
@@ -62,15 +62,15 @@ void RenderTargetAndTextures::Destroy() {
depth_texture_.reset();
}
Texture* RenderTargetAndTextures::GetColorTexture() const {
Texture* RenderTarget::GetColorTexture() const {
return color_texture_.get();
}
Texture* RenderTargetAndTextures::GetDepthTexture() const {
Texture* RenderTarget::GetDepthTexture() const {
return depth_texture_.get();
}
filament::RenderTarget* RenderTargetAndTextures::GetRenderTarget() const {
filament::RenderTarget* RenderTarget::GetFilamentRenderTarget() const {
return render_target_;
}
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_UTIL_H_
#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_UTIL_H_
#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_H_
#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_H_
#include <memory>
@@ -24,17 +24,17 @@
namespace mujoco {
// Manages a filament RenderTarget and the textures which are bound to it.
class RenderTargetAndTextures {
class RenderTarget {
public:
// Defines the types of textures to create for the color and depth
// attachments.
RenderTargetAndTextures(filament::Engine* engine,
RenderTarget(filament::Engine* engine,
RenderTargetTextureType color,
RenderTargetTextureType depth);
~RenderTargetAndTextures() noexcept;
~RenderTarget() noexcept;
RenderTargetAndTextures(const RenderTargetAndTextures&) = delete;
RenderTargetAndTextures& operator=(const RenderTargetAndTextures&) = delete;
RenderTarget(const RenderTarget&) = delete;
RenderTarget& operator=(const RenderTarget&) = delete;
// Creates the textures and render target if the width of height differ from
// the last time the render target was prepared.
@@ -46,8 +46,8 @@ class RenderTargetAndTextures {
// Returns the depth texture.
Texture* GetDepthTexture() const;
// Returns the render target.
filament::RenderTarget* GetRenderTarget() const;
// Returns the underlying filament render target.
filament::RenderTarget* GetFilamentRenderTarget() const;
private:
void Destroy();
@@ -64,4 +64,4 @@ class RenderTargetAndTextures {
} // namespace mujoco
#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_UTIL_H_
#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_H_
@@ -49,7 +49,7 @@
#include "experimental/filament/filament/model_objects.h"
#include "experimental/filament/filament/model_util.h"
#include "experimental/filament/filament/object_manager.h"
#include "experimental/filament/filament/render_target_util.h"
#include "experimental/filament/filament/render_target.h"
#include "experimental/filament/filament/texture.h"
namespace mujoco {
@@ -253,7 +253,7 @@ SceneView::~SceneView() {
}
void SceneView::Render(filament::Renderer* renderer, DrawMode draw_mode,
filament::RenderTarget* target) {
RenderTarget* target) {
filament::View* view = PrepareRenderView(draw_mode);
filament::MultiSampleAntiAliasingOptions options =
view->getMultiSampleAntiAliasingOptions();
@@ -274,7 +274,8 @@ void SceneView::Render(filament::Renderer* renderer, DrawMode draw_mode,
drawable->SetLayerMask(0x00);
// Render the reflection to its render target.
reflect_view_->setRenderTarget(reflect_targets_[i]->GetRenderTarget());
reflect_view_->setRenderTarget(
reflect_targets_[i]->GetFilamentRenderTarget());
renderer->render(reflect_view_);
// Unhide the reflective surface.
@@ -282,7 +283,7 @@ void SceneView::Render(filament::Renderer* renderer, DrawMode draw_mode,
}
}
view->setRenderTarget(target);
view->setRenderTarget(target ? target->GetFilamentRenderTarget() : nullptr);
renderer->render(view);
view->setRenderTarget(nullptr);
@@ -516,7 +517,7 @@ void SceneView::AddReflectiveDrawable(Drawable* drawable) {
// drawables.
filament::Engine* engine = object_mgr_->GetEngine();
while (reflect_targets_.size() < reflectives_.size()) {
reflect_targets_.push_back(std::make_unique<RenderTargetAndTextures>(
reflect_targets_.push_back(std::make_unique<RenderTarget>(
engine, RenderTargetTextureType::kReflectionColor,
RenderTargetTextureType::kDepth));
}
@@ -38,7 +38,7 @@
#include "experimental/filament/filament/material.h"
#include "experimental/filament/filament/model_objects.h"
#include "experimental/filament/filament/object_manager.h"
#include "experimental/filament/filament/render_target_util.h"
#include "experimental/filament/filament/render_target.h"
namespace mujoco {
@@ -71,7 +71,7 @@ class SceneView {
using DrawMode = Material::DrawMode;
void Render(filament::Renderer* renderer, DrawMode draw_mode,
filament::RenderTarget* target = nullptr);
RenderTarget* target = nullptr);
void UploadMesh(const mjModel* model, int id);
void UploadTexture(const mjModel* model, int id);
@@ -128,7 +128,7 @@ class SceneView {
// Each reflective drawable has its own render target which is used to render
// the reflected image.
std::vector<std::unique_ptr<RenderTargetAndTextures>> reflect_targets_;
std::vector<std::unique_ptr<RenderTarget>> reflect_targets_;
};
} // namespace mujoco