Merge pull request #45335 from lawnjelly/bvh_revert_update
Partially revert change to BVH render tree update method
This commit is contained in:
commit
c97837d0ee
|
@ -104,7 +104,6 @@ void VisualServerRaster::draw(bool p_swap_buffers, double frame_step) {
|
|||
VSG::rasterizer->begin_frame(frame_step);
|
||||
|
||||
VSG::scene->update_dirty_instances(); //update scene stuff
|
||||
VSG::scene->update_scenarios(); // render tree collision detection (pairing)
|
||||
|
||||
VSG::viewport->draw_viewports();
|
||||
VSG::scene->render_probes();
|
||||
|
|
|
@ -3578,47 +3578,24 @@ void VisualServerScene::_update_dirty_instance(Instance *p_instance) {
|
|||
p_instance->update_materials = false;
|
||||
}
|
||||
|
||||
void VisualServerScene::update_scenarios() {
|
||||
// go through all scenarios and update BVH in each
|
||||
if (!_use_bvh) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<RID> owned;
|
||||
scenario_owner.get_owned_list(&owned);
|
||||
|
||||
for (List<RID>::Element *E = owned.front(); E; E = E->next()) {
|
||||
RID rid = E->get();
|
||||
Scenario *scenario = scenario_owner.get(rid);
|
||||
|
||||
scenario->sps->update();
|
||||
}
|
||||
}
|
||||
|
||||
void VisualServerScene::update_dirty_instances() {
|
||||
|
||||
VSG::storage->update_dirty_resources();
|
||||
|
||||
// only define this if you run into problems with missed pairing collisions for debugging
|
||||
//#define GODOT_RENDER_SPS_EXTRA_COLLISION_CHECKS
|
||||
#ifdef GODOT_RENDER_SPS_EXTRA_COLLISION_CHECKS
|
||||
// this is just to get access to scenario so we can update the spatial partitioning scheme
|
||||
Scenario *scenario = nullptr;
|
||||
if (_instance_update_list.first()) {
|
||||
scenario = _instance_update_list.first()->self()->scenario;
|
||||
}
|
||||
#endif
|
||||
|
||||
while (_instance_update_list.first()) {
|
||||
|
||||
_update_dirty_instance(_instance_update_list.first()->self());
|
||||
}
|
||||
|
||||
#ifdef GODOT_RENDER_SPS_EXTRA_COLLISION_CHECKS
|
||||
if (scenario) {
|
||||
scenario->sps->update_collisions();
|
||||
scenario->sps->update();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool VisualServerScene::free(RID p_rid) {
|
||||
|
|
|
@ -554,7 +554,6 @@ public:
|
|||
void render_camera(RID p_camera, RID p_scenario, Size2 p_viewport_size, RID p_shadow_atlas);
|
||||
void render_camera(Ref<ARVRInterface> &p_interface, ARVRInterface::Eyes p_eye, RID p_camera, RID p_scenario, Size2 p_viewport_size, RID p_shadow_atlas);
|
||||
void update_dirty_instances();
|
||||
void update_scenarios();
|
||||
|
||||
//probes
|
||||
struct GIProbeDataHeader {
|
||||
|
|
Loading…
Reference in New Issue