Rename Renderables to Renderable.

PiperOrigin-RevId: 898904688
Change-Id: I5e52708e4f745ef1d0e4281a7fa1aa29b660bb6a
This commit is contained in:
Haroon Qureshi
2026-04-13 04:00:40 -07:00
committed by Copybara-Service
parent b38aa0fa23
commit bc83c24a4d
6 changed files with 61 additions and 64 deletions
+2 -2
View File
@@ -52,8 +52,8 @@ target_sources(${MUJOCO_FILAMENT_TARGET_NAME}
filament/object_manager.h
filament/render_target.cc
filament/render_target.h
filament/renderables.cc
filament/renderables.h
filament/renderable.cc
filament/renderable.h
filament/scene_bridge.cc
filament/scene_bridge.h
filament/scene_view.cc
+15 -15
View File
@@ -35,7 +35,7 @@
#include "experimental/filament/filament/mesh.h"
#include "experimental/filament/filament/model_objects.h"
#include "experimental/filament/filament/object_manager.h"
#include "experimental/filament/filament/renderables.h"
#include "experimental/filament/filament/renderable.h"
#include "experimental/filament/filament/texture.h"
namespace mujoco {
@@ -88,10 +88,10 @@ static bool IsBehind(const float* headpos, const float* pos, const float* mat) {
Drawable::Drawable(ModelObjects* model_objects, const mjvScene* scene,
const mjvGeom& geom)
: renderables_(model_objects->GetEngine()) {
: renderable_(model_objects->GetEngine()) {
if (geom.category == mjCAT_DECOR) {
renderables_.SetCastShadows(false);
renderables_.SetReceiveShadows(false);
renderable_.SetCastShadows(false);
renderable_.SetReceiveShadows(false);
}
switch ((mjtGeom)geom.type) {
@@ -172,15 +172,15 @@ void Drawable::AddMesh(ModelObjects* model_objs, int data_id) {
if (mesh == nullptr) {
mju_error("Unknown mesh %d", data_id);
}
renderables_.Append(mesh);
renderable_.Append(mesh);
}
void Drawable::AddGeom(ModelObjects* model_objs, const mjvScene* scene,
const mjvGeom& geom) {
if (geom.type == mjGEOM_FLEX) {
renderables_.Append(model_objs->CreateFlexMesh(scene, geom));
renderable_.Append(model_objs->CreateFlexMesh(scene, geom));
} else if (geom.type == mjGEOM_SKIN) {
renderables_.Append(model_objs->CreateSkinMesh(scene, geom));
renderable_.Append(model_objs->CreateSkinMesh(scene, geom));
}
}
@@ -189,7 +189,7 @@ void Drawable::AddHeightField(ModelObjects* model_objs, int hfield_id) {
if (mesh == nullptr) {
mju_error("Unknown height field %d", hfield_id);
}
renderables_.Append(mesh);
renderable_.Append(mesh);
}
void Drawable::AddShape(ModelObjects* model_objs,
@@ -198,7 +198,7 @@ void Drawable::AddShape(ModelObjects* model_objs,
if (mesh == nullptr) {
mju_error("Unknown shape %d", shape_type);
}
renderables_.Append(mesh);
renderable_.Append(mesh);
}
void Drawable::SetTransform(const mjvGeom& geom) {
@@ -211,9 +211,9 @@ void Drawable::SetTransform(const mjvGeom& geom) {
float3 size = ReadFloat3(geom.size);
filament::TransformManager& tm =
renderables_.GetEngine()->getTransformManager();
for (int j = 0; j < renderables_.GetNumEntities(); ++j) {
const utils::Entity& entity = renderables_[j];
renderable_.GetEngine()->getTransformManager();
for (int j = 0; j < renderable_.GetNumEntities(); ++j) {
const utils::Entity& entity = renderable_[j];
// Update object transform.
mat4 entity_transform = transform_;
@@ -330,15 +330,15 @@ void Drawable::UpdateMaterial(const mjModel* model, const mjvGeom& geom,
if (geom.type == mjGEOM_PLANE) {
if (IsBehind(headpos, geom.pos, geom.mat)) {
params.color[3] *= 0.3;
renderables_.SetReceiveShadows(false);
renderable_.SetReceiveShadows(false);
params.reflective = false;
} else {
renderables_.SetReceiveShadows(true);
renderable_.SetReceiveShadows(true);
params.reflective =
enable_reflection && geom.reflectance > 0 && params.color.a == 1.0f;
}
}
renderables_.SetWireframe(render_flags[mjRND_WIREFRAME]);
renderable_.SetWireframe(render_flags[mjRND_WIREFRAME]);
Material::Textures textures;
if (geom.matid >= 0) {
@@ -22,7 +22,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/renderables.h"
#include "experimental/filament/filament/renderable.h"
namespace mujoco {
@@ -48,11 +48,11 @@ class Drawable {
// Returns the transform of the drawable.
const filament::math::mat4& GetTransform() const { return transform_; }
// Returns the renderables for the drawable.
Renderables& GetRenderables() { return renderables_; }
// Returns the renderable for the drawable.
Renderable& GetRenderable() { return renderable_; }
// Returns the material for the drawable.
Material& GetMaterial() { return renderables_.GetMaterial(); }
Material& GetMaterial() { return renderable_.GetMaterial(); }
private:
void AddMesh(ModelObjects* model_objs, int data_id);
@@ -61,7 +61,7 @@ class Drawable {
void AddHeightField(ModelObjects* model_objs, int hfield_id);
void AddShape(ModelObjects* model_objs, ModelObjects::ShapeType shape_type);
Renderables renderables_;
Renderable renderable_;
filament::math::mat4 transform_;
};
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#include "experimental/filament/filament/renderables.h"
#include "experimental/filament/filament/renderable.h"
#include <cstdint>
#include <utility>
@@ -27,15 +27,15 @@
namespace mujoco {
Renderables::Renderables(filament::Engine* engine) : material_(engine) {}
Renderable::Renderable(filament::Engine* engine) : material_(engine) {}
Renderables::~Renderables() noexcept {
Renderable::~Renderable() noexcept {
while (!entities_.empty()) {
RemoveLast();
}
}
void Renderables::RemoveLast() {
void Renderable::RemoveLast() {
if (entities_.empty()) {
return;
}
@@ -53,7 +53,7 @@ void Renderables::RemoveLast() {
meshes_.pop_back();
}
void Renderables::Update(int index, const Mesh* mesh) {
void Renderable::Update(int index, const Mesh* mesh) {
if (index < 0 || index >= entities_.size()) {
mju_error("Invalid index %d for renderable.", index);
}
@@ -62,7 +62,7 @@ void Renderables::Update(int index, const Mesh* mesh) {
UpdateMeshes(index, mesh);
}
void Renderables::Update(int index, MeshPtr mesh) {
void Renderable::Update(int index, MeshPtr mesh) {
if (index < 0 || index >= entities_.size()) {
mju_error("Invalid index %d for renderable.", index);
}
@@ -71,19 +71,19 @@ void Renderables::Update(int index, MeshPtr mesh) {
UpdateMeshes(index, mesh.get(), std::move(mesh));
}
void Renderables::Append(const Mesh* mesh) {
void Renderable::Append(const Mesh* mesh) {
utils::Entity entity = CreateEntity(mesh);
entities_.push_back(entity);
meshes_.push_back({nullptr, mesh});
}
void Renderables::Append(MeshPtr mesh) {
void Renderable::Append(MeshPtr mesh) {
utils::Entity entity = CreateEntity(mesh.get());
entities_.push_back(entity);
meshes_.push_back({std::move(mesh), mesh.get()});
}
utils::Entity Renderables::CreateEntity(const Mesh* mesh) {
utils::Entity Renderable::CreateEntity(const Mesh* mesh) {
filament::VertexBuffer* vertex_buffer = mesh->GetFilamentVertexBuffer();
if (vertex_buffer == nullptr) {
mju_error("Invalid (null) vertex buffer.");
@@ -113,7 +113,8 @@ utils::Entity Renderables::CreateEntity(const Mesh* mesh) {
builder.receiveShadows(receive_shadows_);
builder.layerMask(0xff, layer_mask_);
builder.priority(priority_);
builder.screenSpaceContactShadows(true);;
builder.screenSpaceContactShadows(true);
;
builder.build(*GetEngine(), entity);
if (assigned_scene_) {
@@ -122,7 +123,7 @@ utils::Entity Renderables::CreateEntity(const Mesh* mesh) {
return entity;
}
void Renderables::UpdateEntity(utils::Entity entity, const Mesh* mesh) {
void Renderable::UpdateEntity(utils::Entity entity, const Mesh* mesh) {
filament::VertexBuffer* vertex_buffer = mesh->GetFilamentVertexBuffer();
if (vertex_buffer == nullptr) {
mju_error("Invalid (null) vertex buffer.");
@@ -139,8 +140,7 @@ void Renderables::UpdateEntity(utils::Entity entity, const Mesh* mesh) {
index_buffer->getIndexCount());
}
void Renderables::UpdateMeshes(int index, const Mesh* mesh,
MeshPtr owned_mesh) {
void Renderable::UpdateMeshes(int index, const Mesh* mesh, MeshPtr owned_mesh) {
if (index < 0 || index >= meshes_.size()) {
mju_error("Invalid index %d for renderable.", index);
}
@@ -148,7 +148,7 @@ void Renderables::UpdateMeshes(int index, const Mesh* mesh,
meshes_[index].mesh = mesh;
}
void Renderables::AddToScene(filament::Scene* scene) {
void Renderable::AddToScene(filament::Scene* scene) {
if (assigned_scene_) {
if (assigned_scene_ != scene) {
mju_error("Cannot add renderable to multiple scenes.");
@@ -162,7 +162,7 @@ void Renderables::AddToScene(filament::Scene* scene) {
assigned_scene_ = scene;
}
void Renderables::RemoveFromScene(filament::Scene* scene) {
void Renderable::RemoveFromScene(filament::Scene* scene) {
if (assigned_scene_ != scene) {
mju_error("Attempting to remove renderable from wrong scene.");
}
@@ -172,8 +172,7 @@ void Renderables::RemoveFromScene(filament::Scene* scene) {
assigned_scene_ = nullptr;
}
void Renderables::SetMaterialInstance(
filament::MaterialInstance* instance) {
void Renderable::SetMaterialInstance(filament::MaterialInstance* instance) {
if (instance != material_instance_) {
filament::RenderableManager& rm = GetEngine()->getRenderableManager();
for (utils::Entity& entity : entities_) {
@@ -184,7 +183,7 @@ void Renderables::SetMaterialInstance(
}
}
void Renderables::SetLayerMask(std::uint8_t mask) {
void Renderable::SetLayerMask(std::uint8_t mask) {
if (mask != layer_mask_) {
layer_mask_ = mask;
@@ -195,7 +194,7 @@ void Renderables::SetLayerMask(std::uint8_t mask) {
}
}
void Renderables::SetPriority(std::uint8_t priority) {
void Renderable::SetPriority(std::uint8_t priority) {
if (priority != priority_) {
priority_ = priority;
@@ -206,7 +205,7 @@ void Renderables::SetPriority(std::uint8_t priority) {
}
}
void Renderables::SetCastShadows(bool cast_shadows) {
void Renderable::SetCastShadows(bool cast_shadows) {
if (cast_shadows_ != cast_shadows) {
cast_shadows_ = cast_shadows;
@@ -217,7 +216,7 @@ void Renderables::SetCastShadows(bool cast_shadows) {
}
}
void Renderables::SetReceiveShadows(bool receive_shadows) {
void Renderable::SetReceiveShadows(bool receive_shadows) {
if (receive_shadows_ != receive_shadows) {
receive_shadows_ = receive_shadows;
@@ -228,7 +227,7 @@ void Renderables::SetReceiveShadows(bool receive_shadows) {
}
}
void Renderables::SetWireframe(bool wireframe) {
void Renderable::SetWireframe(bool wireframe) {
static constexpr auto kWireframeType =
filament::RenderableManager::PrimitiveType::LINES;
@@ -249,10 +248,8 @@ void Renderables::SetWireframe(bool wireframe) {
}
}
Material& Renderables::GetMaterial() { return material_; }
Material& Renderable::GetMaterial() { return material_; }
filament::Engine* Renderables::GetEngine() {
return material_.GetEngine();
}
filament::Engine* Renderable::GetEngine() { return material_.GetEngine(); }
} // namespace mujoco
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLES_H_
#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLES_H_
#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLE_H_
#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLE_H_
#include <cstdint>
#include <vector>
@@ -27,17 +27,17 @@
namespace mujoco {
// Manages a collection of related filament Renderable Entities.
class Renderables {
class Renderable {
public:
// Default filament values for priority and layer mask.
static constexpr std::uint8_t kDefaultPriority = 4;
static constexpr std::uint8_t kDefaultLayerMask = 0x01;
Renderables(filament::Engine* engine);
~Renderables() noexcept;
Renderable(filament::Engine* engine);
~Renderable() noexcept;
Renderables(const Renderables&) = delete;
Renderables& operator=(const Renderables&) = delete;
Renderable(const Renderable&) = delete;
Renderable& operator=(const Renderable&) = delete;
// Appends a new renderable entity built from the given mesh.
void Append(const Mesh* mesh);
@@ -110,4 +110,4 @@ class Renderables {
} // namespace mujoco
#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLES_H_
#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLE_H_
@@ -45,7 +45,7 @@
#include "experimental/filament/filament/material.h"
#include "experimental/filament/filament/math_util.h"
#include "experimental/filament/filament/render_target.h"
#include "experimental/filament/filament/renderables.h"
#include "experimental/filament/filament/renderable.h"
#include "experimental/filament/filament/texture.h"
namespace mujoco {
@@ -163,7 +163,7 @@ SceneView::~SceneView() {
light->RemoveFromScene(scene_);
}
for (auto& drawable : drawables_) {
drawable->GetRenderables().RemoveFromScene(scene_);
drawable->GetRenderable().RemoveFromScene(scene_);
}
lights_.clear();
drawables_.clear();
@@ -194,7 +194,7 @@ void SceneView::RemoveFromScene(Light* light) {
void SceneView::AddToScene(Drawable* drawable) {
if (drawables_.insert(drawable).second) {
drawable->GetRenderables().AddToScene(scene_);
drawable->GetRenderable().AddToScene(scene_);
if (drawable->GetMaterial().GetParams().reflective) {
AddReflectiveDrawable(drawable);
}
@@ -207,7 +207,7 @@ void SceneView::RemoveFromScene(Drawable* drawable) {
if (it != reflectives_.end()) {
reflectives_.erase(it);
}
drawable->GetRenderables().RemoveFromScene(scene_);
drawable->GetRenderable().RemoveFromScene(scene_);
}
}
@@ -248,8 +248,8 @@ void SceneView::Render(filament::Renderer* renderer,
for (auto& iter : drawables_) {
Material& material = iter->GetMaterial();
Renderables& renderables = iter->GetRenderables();
renderables.SetMaterialInstance(
Renderable& renderable = iter->GetRenderable();
renderable.SetMaterialInstance(
material.GetMaterialInstance(request.draw_mode));
}
@@ -272,7 +272,7 @@ void SceneView::Render(filament::Renderer* renderer,
SetupReflectionCamera(drawable->GetTransform(), camera_, reflect_camera_);
// Hide reflective surface from its own reflection pass.
drawable->GetRenderables().SetLayerMask(0x00);
drawable->GetRenderable().SetLayerMask(0x00);
// Render the reflection to its render target.
reflect_view_->setRenderTarget(
@@ -280,7 +280,7 @@ void SceneView::Render(filament::Renderer* renderer,
renderer->render(reflect_view_);
// Unhide the reflective surface.
drawable->GetRenderables().SetLayerMask(0x01);
drawable->GetRenderable().SetLayerMask(0x01);
}
}