- Change graphics rendering backend from glium to vulkano! This affects a wide
range of nannou's API including:
- Window creation and methods. Each window now has it's own associated Vulkan swapchain and related methods.
- The
Frame
API now wraps a single swapchain image and a vulkan command buffer builder. - The
draw
API's renderer now renders via a vulkan pipeline. - The
Ui
API's renderer now renders via a vulkan pipeline. - The
App
includes methods for accessing the vulkan instance. - The
App
can be built with a custom vulkan instance and custom debug callback function. - A suite of examples demonstrating low-level vulkano access have been added.
- Improve the clarity of the
App
creation process by introducing anapp::Builder
type. Examples have been updated accordingly. - The
view
function is now called separately for each frame for each window, rather than a single frame for all windows at once. The window a frame is associated with can be determined viaFrame::window_id
. - A suite of new event handling functions have been added as an alternative to
matching on the raw
Event
type. This has simplified a lot of the examples. See theapp::Builder
andwindow::Builder
docs for the newly available methods and more documentation. - Add
Window::grab_cursor
andWindow::hide_cursor
methods. - Add
window::SwapchainFramebuffers
helper type. - Add
vk::Framebuffer
to simplify framebuffer management. - Remove the
state::time::Duration
type in favour of aDurationF64
trait. - Prefer sRGB colour formats when building swapchain.
- Update deps:
- conrod crates 0.65
- image 0.21
- noise 0.5
- pennereq 0.3
- rand 0.6
- sample 0.10
- winit 0.19
- Fix mouse positioning on HiDPI macOS displays.
- Draw to an intermediary frame before resolving to the swapchain to simplify MSAA and keeping the image consistent between frames.
- Add some laser streaming examples using the
nannou-org/lasy
crate.
- Update deps: glium 0.22, image 0.19.
- Change
random_range
to check thatmin
is smaller thanmax
, swapping the two if not. This avoids some commonpanic!
s. - Add expanding conversion implementations that vector types.
- Add custom
Vector
types - replaces the use ofcgmath::{VectorN, PointN}
types. - Update
rand
to version0.5
. - Add
geom::scalar
module. MoveDefaultScalar
toscalar::Default
. - Fix the order of
geom::line
vertices. - Add a
draw.polygon()
API. - Remove
geom::polyline
module. - Add
geom::line::join
module withmiter
submodule implementation.
- Add better
panic!
message tomap_range
if cast fails. - Add many items to prelude (audio, io, math, osc, ui, window).
- Change event positioning types to use DefaultScalar.
- Implement
draw.polygon()
- Implement
draw.mesh()
- Update internal
IntoDrawn
API to support a dynamic number of arbitrary vertices. - Update
Drawing
API to allow builders to produce newDrawing
types.
- Add beginnings of Nature of Code and Generative Gestaltung examples.
- Add
App::elapsed_frames
method. - Remove
app.window.id
field in favour of more reliableapp.window_id
method. - Change
ui::Builder
so that it no longer requireswindow::Id
. Now defaults to focused window. - Fix several HiDPI related bugs introduced in the last winit update.
- Add support for rotation and orientation to
draw
API.
- Improve efficiency of the
App
proxy by only making OS calls when needed.
- Add
Ui::draw_to_frame_if_changed
method which only draws if necessary. - Add README to nannou-package.
- Add missing
Cargo.toml
details to nannou-package. - Add an
io
module with some helper functions simplifyingstd::io
. - Add
fmod
function tomath
module.
- Add simple accessor field for getting the time since app start in secs.
- Add ability to adjust glyph cache size for text (ui).
- Update to glium 0.21 and conrod 0.59.
- Remove
app.window.*
fields in favour ofapp.window_rect()
method. - Enable vsync and 4x multisampling by default.
- Add fullscreen toggle keyboard shortcuts.
- Add
nannou-new
andnannou-package
tools. - Add
Draw::line
along with custom line builders toDrawing
. - Change
draw::Background
coloring API to match theSetColor
API. - Change OSC default binding address from
127.0.0.1
to0.0.0.0
. - Add many new items to prelude.
- Add more
Rect
constructors. - Add
Range::lerp
method. - Window name defaults to "nannou - exe_name" if no name is given.
- Correct existing and add missing geometry scalar default types.
- Add hsv (aka hsb) color builder methods to Draw API.
- Add nicer panic message for when
max_supported_input/output_channels
methods fail. - Add
Ellipse::triangle_indices
method. - Improve efficiency of
geom::graph::node::Transform
. - Add a
Duration
wrapper with simpler access methods (secs
,ms
, etc). - Add
quad
,rect
andtri
methods toDraw
API. - Add
draw::mesh::vertex::IntoPoint
trait with many impls. - Add
geom::centroid
function. - Add
Quad::bounding_rect
andbounding_cuboid
methods. - Add more
geom::Vertex
impls. - Add
Drawing<Ellipse>::radius
method. - Fix bug in audio input stream.
- Add simpler
Frame
clear methods. - Add simpler
App
constructors. - Fix bug where mesh types would not clear properly.
- Remove
color
module from prelude to avoidui
module conflicts. - Add named colors.
- Add
draw
module. A high-level, simple, expressive graphics API. - Add
mesh
module. Supports meshes with custom channels and layouts. - Add
geom::Graph
for composing together geometric primitives. - Add new triangles iterators to
geom::quad
andgeom::rect
modules. - Add
geom::cuboid
module. - Add
geom::polyline
module. - Add
geom::line
module.
- Add
audio::Stream::id
method. - Add
ExactSize
andDoubleEnded
iterator implementations foraudio::Buffer
. - Update for input stream support.
- Add support for audio input devices and streams
- Expose helper Vector and Point constructors in prelude.
- Add
state
module for tracking mouse, keyboard and window state. - Add
geom
module. Includes basic 2D primitives (lines/text). - Add
ease
module which re-exports thepennereq
crate. - Add
map_range
,partial_max
,min
,clamp
math functions - Begin implementation of tutorial
basics
examples.
- Add support for audio output device and streams.
- Add OSC support.
BEGINNING OF CHANGELOG