You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-06 12:20:30 +00:00
Batch of lightmapper fixes and minor improvements
- Fix objects with no material being considered as fully transparent by the lightmapper. - Added "environment_min_light" property: gives artistic control over the shadow color. - Fixed "Custom Color" environment mode, it was ignored before. - Added "interior" property to BakedLightmapData: controls whether dynamic capture objects receive environment light or not. - Automatically update dynamic capture objects when the capture data changes (also works for "energy" which used to require object movement to trigger the update). - Added "use_in_baked_light" property to GridMap: controls whether the GridMap will be included in BakedLightmap bakes. - Set "flush zero" and "denormal zero" mode for SSE2 instructions in the Embree raycaster. According to Embree docs it should give a performance improvement.
This commit is contained in:
@@ -210,6 +210,14 @@ Ref<MeshLibrary> GridMap::get_mesh_library() const {
|
||||
return mesh_library;
|
||||
}
|
||||
|
||||
void GridMap::set_use_in_baked_light(bool p_use_baked_light) {
|
||||
use_in_baked_light = p_use_baked_light;
|
||||
}
|
||||
|
||||
bool GridMap::get_use_in_baked_light() const {
|
||||
return use_in_baked_light;
|
||||
}
|
||||
|
||||
void GridMap::set_cell_size(const Vector3 &p_size) {
|
||||
ERR_FAIL_COND(p_size.x < 0.001 || p_size.y < 0.001 || p_size.z < 0.001);
|
||||
cell_size = p_size;
|
||||
@@ -864,7 +872,11 @@ void GridMap::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("clear_baked_meshes"), &GridMap::clear_baked_meshes);
|
||||
ClassDB::bind_method(D_METHOD("make_baked_meshes", "gen_lightmap_uv", "lightmap_uv_texel_size"), &GridMap::make_baked_meshes, DEFVAL(false), DEFVAL(0.1));
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_use_in_baked_light", "use_in_baked_light"), &GridMap::set_use_in_baked_light);
|
||||
ClassDB::bind_method(D_METHOD("get_use_in_baked_light"), &GridMap::get_use_in_baked_light);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh_library", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary"), "set_mesh_library", "get_mesh_library");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_in_baked_light"), "set_use_in_baked_light", "get_use_in_baked_light");
|
||||
ADD_GROUP("Cell", "cell_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "cell_size"), "set_cell_size", "get_cell_size");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_octant_size", PROPERTY_HINT_RANGE, "1,1024,1"), "set_octant_size", "get_octant_size");
|
||||
@@ -1066,6 +1078,10 @@ void GridMap::make_baked_meshes(bool p_gen_lightmap_uv, float p_lightmap_uv_texe
|
||||
|
||||
Array GridMap::get_bake_meshes() {
|
||||
|
||||
if (!use_in_baked_light) {
|
||||
return Array();
|
||||
}
|
||||
|
||||
if (!baked_meshes.size()) {
|
||||
make_baked_meshes(true);
|
||||
}
|
||||
@@ -1107,6 +1123,8 @@ GridMap::GridMap() {
|
||||
navigation = NULL;
|
||||
set_notify_transform(true);
|
||||
recreating_octants = false;
|
||||
|
||||
use_in_baked_light = false;
|
||||
}
|
||||
|
||||
GridMap::~GridMap() {
|
||||
|
||||
Reference in New Issue
Block a user