Make phong-shading multipliers configurable.
PiperOrigin-RevId: 869080920 Change-Id: I4eb7311b54270d596c09a01d6725c1efb931de4b
This commit is contained in:
committed by
Copybara-Service
parent
2396a2541c
commit
8e5436c335
@@ -24,11 +24,6 @@
|
|||||||
|
|
||||||
namespace mujoco {
|
namespace mujoco {
|
||||||
|
|
||||||
// Various tweakable parameters for mapping mujoco values onto filament.
|
|
||||||
static constexpr float kSpecularMultiplier = 0.6f;
|
|
||||||
static constexpr float kShininessMultiplier = 0.1f;
|
|
||||||
static constexpr float kEmissiveMultiplier = 0.3f;
|
|
||||||
|
|
||||||
Material::Material(ObjectManager* object_mgr) : object_mgr_(object_mgr) {
|
Material::Material(ObjectManager* object_mgr) : object_mgr_(object_mgr) {
|
||||||
instances_[kDepth] =
|
instances_[kDepth] =
|
||||||
object_mgr->GetMaterial(ObjectManager::kUnlitDepth)->createInstance();
|
object_mgr->GetMaterial(ObjectManager::kUnlitDepth)->createInstance();
|
||||||
@@ -88,16 +83,16 @@ void Material::UpdateMaterialInstances() {
|
|||||||
params_.color);
|
params_.color);
|
||||||
}
|
}
|
||||||
if (material->hasParameter("EmissiveFactor")) {
|
if (material->hasParameter("EmissiveFactor")) {
|
||||||
instance->setParameter("EmissiveFactor",
|
const float multiplier = object_mgr_->GetEmissiveMultiplier();
|
||||||
params_.emissive * kEmissiveMultiplier);
|
instance->setParameter("EmissiveFactor", params_.emissive * multiplier);
|
||||||
}
|
}
|
||||||
if (material->hasParameter("SpecularFactor")) {
|
if (material->hasParameter("SpecularFactor")) {
|
||||||
instance->setParameter("SpecularFactor",
|
const float multiplier = object_mgr_->GetSpecularMultiplier();
|
||||||
params_.specular * kSpecularMultiplier);
|
instance->setParameter("SpecularFactor", params_.specular * multiplier);
|
||||||
}
|
}
|
||||||
if (material->hasParameter("GlossinessFactor")) {
|
if (material->hasParameter("GlossinessFactor")) {
|
||||||
instance->setParameter("GlossinessFactor",
|
const float multiplier = object_mgr_->GetShininessMultiplier();
|
||||||
params_.glossiness * kShininessMultiplier);
|
instance->setParameter("GlossinessFactor", params_.glossiness * multiplier);
|
||||||
}
|
}
|
||||||
if (material->hasParameter("MetallicFactor")) {
|
if (material->hasParameter("MetallicFactor")) {
|
||||||
instance->setParameter("MetallicFactor",
|
instance->setParameter("MetallicFactor",
|
||||||
|
|||||||
@@ -129,6 +129,13 @@ ObjectManager::ObjectManager(const mjModel* model, filament::Engine* engine,
|
|||||||
fallback_textures_[mjTEXROLE_ORM] = fallback_orm_;
|
fallback_textures_[mjTEXROLE_ORM] = fallback_orm_;
|
||||||
|
|
||||||
fallback_indirect_light_ = LoadFallbackIndirectLight("ibl.ktx", 1.0f);
|
fallback_indirect_light_ = LoadFallbackIndirectLight("ibl.ktx", 1.0f);
|
||||||
|
|
||||||
|
specular_multiplier_ = ReadElement(
|
||||||
|
model_, "filament.phong.specular_multiplier", specular_multiplier_);
|
||||||
|
shininess_multiplier_ = ReadElement(
|
||||||
|
model_, "filament.phong.shininess_multiplier", shininess_multiplier_);
|
||||||
|
emissive_multiplier_ = ReadElement(
|
||||||
|
model_, "filament.phong.emissive_multiplier", emissive_multiplier_);
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectManager::~ObjectManager() {
|
ObjectManager::~ObjectManager() {
|
||||||
|
|||||||
@@ -104,6 +104,10 @@ class ObjectManager {
|
|||||||
filament::IndirectLight* LoadFallbackIndirectLight(std::string_view filename,
|
filament::IndirectLight* LoadFallbackIndirectLight(std::string_view filename,
|
||||||
float intensity);
|
float intensity);
|
||||||
|
|
||||||
|
float GetSpecularMultiplier() const { return specular_multiplier_; }
|
||||||
|
float GetShininessMultiplier() const { return shininess_multiplier_; }
|
||||||
|
float GetEmissiveMultiplier() const { return emissive_multiplier_; }
|
||||||
|
|
||||||
const mjModel* GetModel() const { return model_; }
|
const mjModel* GetModel() const { return model_; }
|
||||||
|
|
||||||
ObjectManager(const ObjectManager&) = delete;
|
ObjectManager(const ObjectManager&) = delete;
|
||||||
@@ -129,6 +133,9 @@ class ObjectManager {
|
|||||||
filament::Texture* fallback_normal_ = nullptr;
|
filament::Texture* fallback_normal_ = nullptr;
|
||||||
filament::Texture* fallback_orm_ = nullptr;
|
filament::Texture* fallback_orm_ = nullptr;
|
||||||
filament::IndirectLight* fallback_indirect_light_ = nullptr;
|
filament::IndirectLight* fallback_indirect_light_ = nullptr;
|
||||||
|
float specular_multiplier_ = 0.6f;
|
||||||
|
float shininess_multiplier_ = 0.1f;
|
||||||
|
float emissive_multiplier_ = 0.3f;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace mujoco
|
} // namespace mujoco
|
||||||
|
|||||||
Reference in New Issue
Block a user