diff options
Diffstat (limited to 'servers/visual')
-rw-r--r-- | servers/visual/rasterizer.cpp | 3 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.cpp | 15 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.h | 3 | ||||
-rw-r--r-- | servers/visual/visual_server_wrap_mt.h | 2 |
4 files changed, 21 insertions, 2 deletions
diff --git a/servers/visual/rasterizer.cpp b/servers/visual/rasterizer.cpp index 95746b7675..643968796b 100644 --- a/servers/visual/rasterizer.cpp +++ b/servers/visual/rasterizer.cpp @@ -363,12 +363,13 @@ RID Rasterizer::fixed_material_create() { FixedMaterial &fm=*fixed_materials[mat]; fm.self=mat; fm.get_key(); + material_set_flag(mat,VS::MATERIAL_FLAG_COLOR_ARRAY_SRGB,true); for(int i=0;i<VS::FIXED_MATERIAL_PARAM_MAX;i++) { material_set_param(mat,_fixed_material_param_names[i],fm.param[i]); //must be there } fixed_material_dirty_list.add(&fm.dirty_list); - //print_line("FMC: "+itos(mat.get_id())); + //print_line("FMC: "+itos(mat.get_id())); return mat; } diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index eede750647..8250e4c08f 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -1786,6 +1786,17 @@ void VisualServerRaster::scenario_set_environment(RID p_scenario, RID p_environm } +void VisualServerRaster::scenario_set_fallback_environment(RID p_scenario, RID p_environment) { + + VS_CHANGED; + + Scenario *scenario = scenario_owner.get(p_scenario); + ERR_FAIL_COND(!scenario); + scenario->fallback_environment=p_environment; + + +} + RID VisualServerRaster::scenario_get_environment(RID p_scenario, RID p_environment) const{ const Scenario *scenario = scenario_owner.get(p_scenario); @@ -5516,8 +5527,10 @@ void VisualServerRaster::_render_camera(Viewport *p_viewport,Camera *p_camera, S RID environment; if (p_camera->env.is_valid()) //camera has more environment priority environment=p_camera->env; - else + else if (p_scenario->environment.is_valid()) environment=p_scenario->environment; + else + environment=p_scenario->fallback_environment; rasterizer->begin_scene(p_viewport->viewport_data,environment,p_scenario->debug); rasterizer->set_viewport(viewport_rect); diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 41ad3aab15..8ed348affa 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -320,6 +320,7 @@ class VisualServerRaster : public VisualServer { List<RID> directional_lights; RID environment; + RID fallback_environment; Instance *dirty_instances; @@ -1038,6 +1039,8 @@ public: virtual void scenario_set_debug(RID p_scenario,ScenarioDebugMode p_debug_mode); virtual void scenario_set_environment(RID p_scenario, RID p_environment); virtual RID scenario_get_environment(RID p_scenario, RID p_environment) const; + virtual void scenario_set_fallback_environment(RID p_scenario, RID p_environment); + /* INSTANCING API */ diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 73e736f684..1ad8c85986 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -929,6 +929,7 @@ public: FUNC2(camera_set_environment,RID,RID); FUNC1RC(RID,camera_get_environment,RID); + FUNC2(camera_set_use_vertical_aspect,RID,bool); FUNC2RC(bool,camera_is_using_vertical_aspect,RID,bool); @@ -998,6 +999,7 @@ public: FUNC2(scenario_set_debug,RID,ScenarioDebugMode); FUNC2(scenario_set_environment,RID, RID); FUNC2RC(RID,scenario_get_environment,RID, RID); + FUNC2(scenario_set_fallback_environment,RID, RID); /* INSTANCING API */ |