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 {
|
||||
|
||||
// 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) {
|
||||
instances_[kDepth] =
|
||||
object_mgr->GetMaterial(ObjectManager::kUnlitDepth)->createInstance();
|
||||
@@ -88,16 +83,16 @@ void Material::UpdateMaterialInstances() {
|
||||
params_.color);
|
||||
}
|
||||
if (material->hasParameter("EmissiveFactor")) {
|
||||
instance->setParameter("EmissiveFactor",
|
||||
params_.emissive * kEmissiveMultiplier);
|
||||
const float multiplier = object_mgr_->GetEmissiveMultiplier();
|
||||
instance->setParameter("EmissiveFactor", params_.emissive * multiplier);
|
||||
}
|
||||
if (material->hasParameter("SpecularFactor")) {
|
||||
instance->setParameter("SpecularFactor",
|
||||
params_.specular * kSpecularMultiplier);
|
||||
const float multiplier = object_mgr_->GetSpecularMultiplier();
|
||||
instance->setParameter("SpecularFactor", params_.specular * multiplier);
|
||||
}
|
||||
if (material->hasParameter("GlossinessFactor")) {
|
||||
instance->setParameter("GlossinessFactor",
|
||||
params_.glossiness * kShininessMultiplier);
|
||||
const float multiplier = object_mgr_->GetShininessMultiplier();
|
||||
instance->setParameter("GlossinessFactor", params_.glossiness * multiplier);
|
||||
}
|
||||
if (material->hasParameter("MetallicFactor")) {
|
||||
instance->setParameter("MetallicFactor",
|
||||
|
||||
@@ -129,6 +129,13 @@ ObjectManager::ObjectManager(const mjModel* model, filament::Engine* engine,
|
||||
fallback_textures_[mjTEXROLE_ORM] = fallback_orm_;
|
||||
|
||||
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() {
|
||||
|
||||
@@ -104,6 +104,10 @@ class ObjectManager {
|
||||
filament::IndirectLight* LoadFallbackIndirectLight(std::string_view filename,
|
||||
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_; }
|
||||
|
||||
ObjectManager(const ObjectManager&) = delete;
|
||||
@@ -129,6 +133,9 @@ class ObjectManager {
|
||||
filament::Texture* fallback_normal_ = nullptr;
|
||||
filament::Texture* fallback_orm_ = nullptr;
|
||||
filament::IndirectLight* fallback_indirect_light_ = nullptr;
|
||||
float specular_multiplier_ = 0.6f;
|
||||
float shininess_multiplier_ = 0.1f;
|
||||
float emissive_multiplier_ = 0.3f;
|
||||
};
|
||||
|
||||
} // namespace mujoco
|
||||
|
||||
Reference in New Issue
Block a user