Rename Renderables to Renderable.
PiperOrigin-RevId: 898904688 Change-Id: I5e52708e4f745ef1d0e4281a7fa1aa29b660bb6a
This commit is contained in:
committed by
Copybara-Service
parent
b38aa0fa23
commit
bc83c24a4d
@@ -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
|
||||
|
||||
@@ -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_;
|
||||
};
|
||||
|
||||
|
||||
+23
-26
@@ -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
|
||||
+8
-8
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user