Prevent decorative elements from casting shadows.
PiperOrigin-RevId: 837112208 Change-Id: I4ecc110eec1a2166df7a07d8bb9ec37df36b7c89
This commit is contained in:
committed by
Copybara-Service
parent
0425355efc
commit
c7e0c01e80
@@ -72,6 +72,10 @@ static constexpr int kArrow2BottomConeDisk = 4;
|
|||||||
Drawable::Drawable(ObjectManager* object_mgr, const mjvGeom& geom)
|
Drawable::Drawable(ObjectManager* object_mgr, const mjvGeom& geom)
|
||||||
: material_(object_mgr),
|
: material_(object_mgr),
|
||||||
renderables_(object_mgr->GetEngine()) {
|
renderables_(object_mgr->GetEngine()) {
|
||||||
|
if (geom.category == mjCAT_DECOR) {
|
||||||
|
renderables_.DisableShadows();
|
||||||
|
}
|
||||||
|
|
||||||
switch ((mjtGeom)geom.type) {
|
switch ((mjtGeom)geom.type) {
|
||||||
case mjGEOM_MESH:
|
case mjGEOM_MESH:
|
||||||
AddMesh(geom.dataid);
|
AddMesh(geom.dataid);
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ utils::Entity Renderables::CreateEntity(const FilamentBuffers& buffers) {
|
|||||||
}
|
}
|
||||||
builder.boundingBox(buffers.bounds)
|
builder.boundingBox(buffers.bounds)
|
||||||
.culling(false)
|
.culling(false)
|
||||||
.castShadows(true)
|
.castShadows(cast_shadows_)
|
||||||
.receiveShadows(true)
|
.receiveShadows(true)
|
||||||
.layerMask(1, visible_ ? 1 : 0)
|
.layerMask(1, visible_ ? 1 : 0)
|
||||||
.screenSpaceContactShadows(true);
|
.screenSpaceContactShadows(true);
|
||||||
@@ -197,4 +197,12 @@ void Renderables::Show() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderables::DisableShadows() {
|
||||||
|
filament::RenderableManager& rm = engine_->getRenderableManager();
|
||||||
|
for (utils::Entity& entity : entities_) {
|
||||||
|
rm.setCastShadows(rm.getInstance(entity), false);
|
||||||
|
}
|
||||||
|
cast_shadows_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace mujoco
|
} // namespace mujoco
|
||||||
|
|||||||
@@ -61,6 +61,9 @@ class Renderables {
|
|||||||
// Returns true if the entities are visible.
|
// Returns true if the entities are visible.
|
||||||
bool IsVisible() const { return visible_; }
|
bool IsVisible() const { return visible_; }
|
||||||
|
|
||||||
|
// Disables the renderables from casting shadows.
|
||||||
|
void DisableShadows();
|
||||||
|
|
||||||
// Adds all managed entities to the given filament Scene.
|
// Adds all managed entities to the given filament Scene.
|
||||||
void AddToScene(filament::Scene* scene);
|
void AddToScene(filament::Scene* scene);
|
||||||
|
|
||||||
@@ -84,6 +87,7 @@ class Renderables {
|
|||||||
std::vector<utils::Entity> entities_;
|
std::vector<utils::Entity> entities_;
|
||||||
std::vector<std::optional<FilamentBuffers>> owned_buffers_;
|
std::vector<std::optional<FilamentBuffers>> owned_buffers_;
|
||||||
bool visible_ = true;
|
bool visible_ = true;
|
||||||
|
bool cast_shadows_ = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace mujoco
|
} // namespace mujoco
|
||||||
|
|||||||
Reference in New Issue
Block a user