56namespace orrery::viz {
102 Colour warm{1.0F, 0.78F, 0.50F};
132 void resize(std::size_t width, std::size_t height);
134 [[nodiscard]] std::size_t width() const noexcept;
135 [[nodiscard]] std::
size_t height() const noexcept;
142 void accumulate(core::Vec3Span<const core::Real> positions, std::span<const
float> tints,
173 std::unique_ptr<State> state_;
void resize(std::size_t width, std::size_t height)
Change the size of the accumulation target.
std::string device_description() const
What the driver calls itself, for the line a run prints about where its frames came from.
PointRenderer(GlProcedureLoader loader, std::size_t width, std::size_t height)
Build every OpenGL object the renderer needs, for a target of the given size.
void accumulate(core::Vec3Span< const core::Real > positions, std::span< const float > tints, const Mat4 &view_projection, const RenderSettings &settings)
Draw the particles into the accumulation target, replacing what was there.
void present(const RenderSettings &settings)
Tone map the accumulation target onto the default framebuffer, which is the window.
void read_radiance(std::span< float > radiance) const
Read the accumulated radiance back from the device.
std::size_t radiance_size() const noexcept
How many floats read_radiance needs, which is three per pixel.
The OpenGL entry points this renderer uses, and only those.
void(*(*)(const char *))() GlProcedureLoader
How a function is fetched from the driver.
Definition gl_api.hpp:97
The 4-by-4 transforms a camera needs, and nothing else.
A colour in linear light, before tone mapping.
Definition point_renderer.hpp:59
A 4-by-4 transform in column-major order.
Definition matrix4.hpp:58
Everything about how the picture looks that is not the camera.
Definition point_renderer.hpp:66
float minimum_point_size
The smallest a particle is allowed to become.
Definition point_renderer.hpp:84
Colour cool
The two ends of the colour ramp the per-particle tint selects between.
Definition point_renderer.hpp:101
float point_size
The diameter in pixels a particle would have one length unit from the camera, shrinking with distance...
Definition point_renderer.hpp:76
float brightness
The light one particle contributes at the centre of its sprite.
Definition point_renderer.hpp:93
The two numbers that decide how bright the picture is.
Definition tone_map.hpp:56
Turning accumulated light into pixels.
The scalar and index types that every layer of the project agrees on.
Three parallel component arrays, viewed as one sequence of 3-vectors.