Rename RenderTargetAndTextures to RenderTarget.
Also rename render_target_util to render_target. PiperOrigin-RevId: 896033907 Change-Id: I123cf98dc308f7cc4916f7b79dcc59a05564022d
This commit is contained in:
committed by
Copybara-Service
parent
382474bb9d
commit
f7fd5fc58b
@@ -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,
|
||||
|
||||
+8
-8
@@ -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_;
|
||||
}
|
||||
|
||||
+10
-10
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user