Skip to content

Commit

Permalink
feat: visibility margin lod
Browse files Browse the repository at this point in the history
  • Loading branch information
laurentsenta committed Jan 25, 2025
1 parent a61e720 commit 5eb2682
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
10 changes: 6 additions & 4 deletions src/terrain_3d_instancer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ void Terrain3DInstancer::_update_mmis(const Vector2i &p_region_loc, const int p_

int max_lod = ma->get_maximum_lod();
int shadow_lod = ma->get_shadow_lod();
real_t visibility_margin = ma->get_visibility_margin();

for (int lod = 0; lod <= max_lod; lod++) {
Vector2i mesh_key(mesh_id, lod);
Expand Down Expand Up @@ -122,10 +123,11 @@ void Terrain3DInstancer::_update_mmis(const Vector2i &p_region_loc, const int p_
mmi->set_cast_shadows_setting(GeometryInstance3D::SHADOW_CASTING_SETTING_OFF);
}

// TODO: Discuss storage / uprage path for visibility range
// mmi->set_visibility_range_end(ma->get_visibility_range());
// TODO: Review margin when implementing lods
//mmi->set_visibility_range_end_margin(ma->get_visibility_margin());
if (visibility_margin > 0.0f) {
mmi->set_visibility_range_begin_margin(visibility_margin);
mmi->set_visibility_range_end_margin(visibility_margin);
}

cell_mmi_dict[cell] = mmi;
//Attach to tree
Node *node_container = _terrain->get_mmi_parent()->get_node_internal(rname);
Expand Down
7 changes: 3 additions & 4 deletions src/terrain_3d_mesh_asset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -414,8 +414,8 @@ void Terrain3DMeshAsset::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_density"), &Terrain3DMeshAsset::get_density);
ClassDB::bind_method(D_METHOD("set_visibility_range", "distance"), &Terrain3DMeshAsset::set_visibility_range);
ClassDB::bind_method(D_METHOD("get_visibility_range"), &Terrain3DMeshAsset::get_visibility_range);
//ClassDB::bind_method(D_METHOD("set_visibility_margin", "distance"), &Terrain3DMeshAsset::set_visibility_margin);
//ClassDB::bind_method(D_METHOD("get_visibility_margin"), &Terrain3DMeshAsset::get_visibility_margin);
ClassDB::bind_method(D_METHOD("set_visibility_margin", "distance"), &Terrain3DMeshAsset::set_visibility_margin);
ClassDB::bind_method(D_METHOD("get_visibility_margin"), &Terrain3DMeshAsset::get_visibility_margin);
ClassDB::bind_method(D_METHOD("set_cast_shadows", "mode"), &Terrain3DMeshAsset::set_cast_shadows);
ClassDB::bind_method(D_METHOD("get_cast_shadows"), &Terrain3DMeshAsset::get_cast_shadows);
ClassDB::bind_method(D_METHOD("set_maximum_lod", "lod"), &Terrain3DMeshAsset::set_maximum_lod);
Expand Down Expand Up @@ -449,9 +449,8 @@ void Terrain3DMeshAsset::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height_offset", PROPERTY_HINT_RANGE, "-20.0,20.0,.005"), "set_height_offset", "get_height_offset");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "density", PROPERTY_HINT_RANGE, ".01,10.0,.005"), "set_density", "get_density");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_visibility_range", "get_visibility_range");
//ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_margin", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_visibility_margin", "get_visibility_margin");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_margin", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_visibility_margin", "get_visibility_margin");
ADD_PROPERTY(PropertyInfo(Variant::INT, "cast_shadows", PROPERTY_HINT_ENUM, "Off,On,Double-Sided,Shadows Only"), "set_cast_shadows", "get_cast_shadows");
// TODO: add readonly mesh count?
ADD_PROPERTY(PropertyInfo(Variant::INT, "maximum_lod", PROPERTY_HINT_NONE), "set_maximum_lod", "get_maximum_lod");
ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_lod", PROPERTY_HINT_NONE), "set_shadow_lod", "get_shadow_lod");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "lod_0_visibility_range", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_lod_0_visibility_range", "get_lod_0_visibility_range");
Expand Down

0 comments on commit 5eb2682

Please sign in to comment.