Skip to content

Commit d441993

Browse files
Remove Rover's volume renderer (#1544)
* Comment out all of the external rover volume rendering code * Comment out all of the internal rover volume rendering code * Add removal comment to external code * Remove redundant setting of rover's render mode * Fix nitpick * Remove RenderMode since there is only one choice now * More nitpicks * Fix typo Co-authored-by: Justin Privitera <[email protected]> * Address feedback --------- Co-authored-by: Justin Privitera <[email protected]>
1 parent abe8ee8 commit d441993

15 files changed

+284
-234
lines changed

src/libs/ascent/runtimes/flow_filters/ascent_runtime_filters.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ register_builtin()
154154

155155

156156
AscentRuntime::register_filter_type<RoverXRay>("extracts", "xray");
157-
AscentRuntime::register_filter_type<RoverVolume>("extracts", "volume");
157+
// AscentRuntime::register_filter_type<RoverVolume>("extracts", "volume"); // removing volume renderer
158158

159159
AscentRuntime::register_filter_type<AddPlot>();
160160
AscentRuntime::register_filter_type<CreatePlot>();

src/libs/ascent/runtimes/flow_filters/ascent_runtime_rover_filters.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,6 @@ RoverXRay::execute()
283283
// Default render settings
284284
//
285285
RenderSettings render_settings;
286-
render_settings.m_render_mode = rover::energy;
287286
render_settings.m_primary_field = absorption;
288287

289288
// TODO: investigate how/why this is getting set, even if emission is not specified
@@ -383,6 +382,7 @@ RoverXRay::execute()
383382
}
384383
}
385384

385+
#if 0 // removing volume renderer
386386
//-----------------------------------------------------------------------------
387387
RoverVolume::RoverVolume()
388388
:Filter()
@@ -560,6 +560,7 @@ RoverVolume::execute()
560560

561561
tracer.save_png(filename);
562562
}
563+
#endif
563564

564565
//-----------------------------------------------------------------------------
565566
};

src/libs/ascent/runtimes/flow_filters/ascent_runtime_rover_filters.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class ASCENT_API RoverXRay: public ::flow::Filter
5555
virtual void execute();
5656
};
5757

58+
#if 0 // removing volume renderer
5859
class ASCENT_API RoverVolume : public ::flow::Filter
5960
{
6061
public:
@@ -66,7 +67,7 @@ class ASCENT_API RoverVolume : public ::flow::Filter
6667
conduit::Node &info);
6768
virtual void execute();
6869
};
69-
70+
#endif
7071

7172
};
7273
//-----------------------------------------------------------------------------

src/libs/rover/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,9 @@ set(rover_headers
6363
rover.hpp
6464
scheduler.hpp
6565
scheduler_base.hpp
66-
static_scheduler.hpp
6766
# engines
6867
engine.hpp
6968
energy_engine.hpp
70-
volume_engine.hpp
7169
# ray generators headers
7270
ray_generators/ray_generator.hpp
7371
ray_generators/camera_generator.hpp
@@ -89,7 +87,6 @@ set(rover_sources
8987
scheduler_base.cpp
9088
# engines
9189
energy_engine.cpp
92-
volume_engine.cpp
9390
# ray generators
9491
ray_generators/ray_generator.cpp
9592
ray_generators/camera_generator.cpp

src/libs/rover/domain.cpp

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@
1010
#include <rover_exceptions.hpp>
1111
#include <utils/rover_logging.hpp>
1212

13-
namespace rover {
13+
namespace rover
14+
{
15+
1416
Domain::Domain()
1517
{
16-
m_engine = std::make_shared<VolumeEngine>();
18+
m_engine = std::make_shared<EnergyEngine>();
1719
}
1820

1921
Domain::~Domain()
2022
{
23+
2124
}
2225

2326
//
@@ -34,6 +37,7 @@ Domain::set_render_settings(const RenderSettings &settings)
3437

3538
ROVER_INFO("Setting render settings");
3639

40+
#if 0 // removing volume renderer
3741
if(m_render_settings.m_render_mode != volume &&
3842
settings.m_render_mode == volume)
3943
{
@@ -43,10 +47,14 @@ Domain::set_render_settings(const RenderSettings &settings)
4347
else if(m_render_settings.m_render_mode != energy &&
4448
settings.m_render_mode == energy)
4549
{
46-
ROVER_INFO("Render mode = energy");
47-
auto engine = std::make_shared<EnergyEngine>();
48-
engine->set_unit_scalar(settings.m_energy_settings.m_unit_scalar);
49-
m_engine = engine;
50+
#endif
51+
52+
ROVER_INFO("Render mode = energy");
53+
auto engine = std::make_shared<EnergyEngine>();
54+
engine->set_unit_scalar(settings.m_energy_settings.m_unit_scalar);
55+
m_engine = engine;
56+
57+
#if 0 // removing volume renderer
5058
}
5159
else if(m_render_settings.m_render_mode != surface &&
5260
settings.m_render_mode == surface)
@@ -58,13 +66,15 @@ Domain::set_render_settings(const RenderSettings &settings)
5866
//ROVER_ERROR("Unable to create the appropriate engine");
5967
//throw RoverException("Fatal Error: domain unable to create the apporpriate engine\n");
6068
}
69+
#endif
6170

6271
m_render_settings = settings;
6372
m_render_settings.print();
6473

6574
m_engine->set_data_set(m_data_set);
6675
set_engine_fields();
6776

77+
#if 0 // removing volume renderer
6878
if(m_render_settings.m_render_mode == volume)
6979
{
7080
ROVER_INFO("outgoing render mode = volume");
@@ -74,6 +84,8 @@ Domain::set_render_settings(const RenderSettings &settings)
7484
{
7585
ROVER_INFO("outgoing render mode = energy");
7686
}
87+
#endif
88+
7789
}
7890

7991
int
@@ -97,6 +109,8 @@ Domain::set_engine_fields()
97109
ROVER_INFO("Primary field: " << m_render_settings.m_primary_field);
98110
ROVER_INFO("Secondary field: " << m_render_settings.m_secondary_field);
99111

112+
// TODO: This might be redundant, surely we catch this case in verify_params?
113+
// (and should if we currently don't)
100114
if(m_render_settings.m_primary_field == "")
101115
throw RoverException("Fatal Error: primary field not set\n");
102116
m_engine->set_primary_field(m_render_settings.m_primary_field);
@@ -125,16 +139,14 @@ Domain::init_rays(Ray64 &rays)
125139
PartialVector32
126140
Domain::partial_trace(Ray32 &rays)
127141
{
128-
m_engine->set_samples(m_global_bounds,
129-
m_render_settings.m_volume_settings.m_num_samples);
142+
m_engine->set_samples(m_global_bounds, m_render_settings.m_num_samples);
130143
return m_engine->partial_trace(rays);
131144
}
132145

133146
PartialVector64
134147
Domain::partial_trace(Ray64 &rays)
135148
{
136-
m_engine->set_samples(m_global_bounds,
137-
m_render_settings.m_volume_settings.m_num_samples);
149+
m_engine->set_samples(m_global_bounds, m_render_settings.m_num_samples);
138150
return m_engine->partial_trace(rays);
139151
}
140152

@@ -153,6 +165,8 @@ Domain::set_composite_background(bool on)
153165
vtkmRange
154166
Domain::get_primary_range()
155167
{
168+
// TODO: Redundant? Even if it's not, we can probably use something nicer
169+
// than assert here
156170
assert(m_render_settings.m_primary_field != "");
157171
return m_engine->get_primary_range();
158172
}

src/libs/rover/domain.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Domain
2828
void init_rays(Ray32 &rays);
2929
void init_rays(Ray64 &rays);
3030
void set_data_set(vtkmDataSet &dataset);
31-
void set_render_settings(const RenderSettings &setttings);
31+
void set_render_settings(const RenderSettings &settings);
3232
void set_primary_range(const vtkmRange &range);
3333
void set_composite_background(bool on);
3434
vtkm::Bounds get_domain_bounds();

src/libs/rover/energy_engine.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
#include <vtkm/rendering/ConnectivityProxy.h>
1313
namespace rover {
1414

15+
// TODO: We only have one engine atp, so we can merge
16+
// Engine and EnergyEngine
1517
class EnergyEngine : public Engine
1618
{
1719
protected:

src/libs/rover/partial_image.hpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include <vtkm/cont/ArrayHandle.h>
1515
#include <vtkh/compositing/AbsorptionPartial.hpp>
1616
#include <vtkh/compositing/EmissionPartial.hpp>
17-
#include <vtkh/compositing/VolumePartial.hpp>
17+
// #include <vtkh/compositing/VolumePartial.hpp> // removing volume renderer
1818

1919
namespace rover
2020
{
@@ -25,7 +25,7 @@ struct PartialImage
2525
int m_height;
2626
int m_width;
2727
IdHandle m_pixel_ids;
28-
vtkmRayTracing::ChannelBuffer<FloatType> m_buffer; // holds either color or absorption
28+
vtkmRayTracing::ChannelBuffer<FloatType> m_buffer; // holds the absorption
2929
vtkmRayTracing::ChannelBuffer<FloatType> m_intensities; // holds the intensity emerging from each ray
3030
vtkm::cont::ArrayHandle<FloatType> m_distances;
3131
std::vector<FloatType> m_source_sig;
@@ -49,6 +49,7 @@ struct PartialImage
4949

5050
}
5151

52+
#if 0 // removing volume renderer
5253
void extract_partials(std::vector<vtkh::VolumePartial<FloatType>> &partials)
5354
{
5455
auto id_portal = m_pixel_ids.ReadPortal();
@@ -72,6 +73,7 @@ struct PartialImage
7273
partials[i].m_alpha = static_cast<float>(buffer_portal.Get(i*4+3));
7374
}
7475
}
76+
#endif
7577

7678
void extract_partials(std::vector<vtkh::AbsorptionPartial<FloatType>> &partials)
7779
{
@@ -105,10 +107,8 @@ struct PartialImage
105107
auto id_portal = m_pixel_ids.ReadPortal();
106108
auto buffer_portal = m_buffer.Buffer.ReadPortal();
107109
auto intensity_portal = m_intensities.Buffer.ReadPortal();
108-
109110
auto depth_portal = m_distances.ReadPortal();
110111
const int size = static_cast<int>(m_pixel_ids.GetNumberOfValues());
111-
112112
partials.resize(size);
113113

114114
#ifdef ROVER_OPENMP_ENABLED
@@ -130,6 +130,7 @@ struct PartialImage
130130
}
131131
}
132132

133+
#if 0 // removing volume renderer
133134
void store(std::vector<vtkh::VolumePartial<FloatType>> &partials,
134135
const std::vector<double> &background,
135136
const int width,
@@ -179,6 +180,7 @@ struct PartialImage
179180
}
180181

181182
}
183+
#endif
182184

183185
void store(std::vector<vtkh::AbsorptionPartial<FloatType>> &partials,
184186
const std::vector<double> &background,

src/libs/rover/rover.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,6 @@ class Rover::InternalsType
3131
int m_num_ranks;
3232
#endif
3333

34-
void reset_render_mode(RenderMode render_mode)
35-
{
36-
37-
}
38-
3934
public:
4035
InternalsType()
4136
{
@@ -62,7 +57,7 @@ class Rover::InternalsType
6257
// logic to create the appropriate parallel scheduler
6358
//
6459
// ray tracing = dynamic scheduler, scattering | no_scattering
65-
// volume/engery = scattering + local_scope -> dynamic scheduler
60+
// energy = scattering + local_scope -> dynamic scheduler
6661
// non_scattering + global_scope ->static scheduler
6762
//
6863
// Note: I wanted to allow for the case of scattering + global scope. This could

src/libs/rover/rover_types.hpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@
1313

1414
namespace rover {
1515

16+
#if 0 // removing volume renderer
1617
// this could be ray tracing(surface) / volume rendering / energy
1718
enum RenderMode
1819
{
1920
volume, // standard volume rendering (3d)
2021
energy, // radiography with enegry bins (3d)
2122
surface //
2223
};
24+
#endif
2325

2426
enum ScatteringType
2527
{
@@ -36,6 +38,7 @@ enum RayScope
3638
local_rays // rays only exist in a single domain at any given time
3739
};
3840

41+
#if 0 // removing volume renderer
3942
//
4043
// Volume rendering specific settigns
4144
//
@@ -45,6 +48,7 @@ struct VolumeSettings
4548
vtkmRange m_scalar_range;
4649
VolumeSettings() : m_num_samples(400) {}
4750
};
51+
#endif
4852

4953
//
5054
// Energy specific settings
@@ -58,22 +62,24 @@ struct EnergySettings
5862

5963
struct RenderSettings
6064
{
61-
RenderMode m_render_mode;
65+
// RenderMode m_render_mode; // removing volume renderer
6266
ScatteringType m_scattering_type;
6367
RayScope m_ray_scope;
6468
vtkmColorTable m_color_table;
6569
std::string m_primary_field;
6670
std::string m_secondary_field;
67-
VolumeSettings m_volume_settings;
71+
int m_num_samples; // approximate number of samples per ray
72+
// VolumeSettings m_volume_settings; // removing volume renderer
6873
EnergySettings m_energy_settings;
6974
//
7075
// Default settings
7176
//
7277
RenderSettings() : m_color_table("Cool to Warm")
7378
{
74-
m_render_mode = volume;
79+
// m_render_mode = energy; // removing volume renderer
7580
m_scattering_type = non_scattering;
7681
m_ray_scope = global_rays;
82+
m_num_samples = 400;
7783
}
7884

7985
void print()

0 commit comments

Comments
 (0)