Changelog
All notable changes to nannou should be documented below! From the most recent, back to the origins.
Unreleased
- Add GL backend to default backends for better WASM support.
- Add CI for testing the
wasm32-unknown-unknowntarget. - Enable
wgpu/webglwhenwasmfeature is enabled. - Update minimum wgpu version to
0.11.1, update winit to0.26. - Merge the
nannou_eguirepo into the mainnannourepo. - Move
nannou_conrodandnannou_timelineinto a new repository: https://github.com/nannou-org/nannou_conrod. Both crates are deprecated in favour ofnannou_egui.
nannou 0.18.1 (2021-12-17)
- Expose missing
begin()method ingeom::path::Builder. - Set window class for X11 running apps.
- Ensure wakeup calls (
UserEvents) provide updates inWaitmode.
Version 0.18.0 (2021-11-15)
wgpu 0.9 -> 0.11
Note: As of wgpu 0.10, all nannou projects now require either:
- The following line in their top-level cargo manifest:
ORresolver = "2" - All packages must use the 2021 edition (or later) of Rust, e.g.
edition = "2021"
This requirement is due to wgpu 0.10's reliance on the new version of cargo's dependency resolver and how it unifies features. Without either of the above amendments, you will likely run into strange upstream compilation errors. You can read more about the cargo dependency resolver versions here:
https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
- As of wgpu 0.10, it is now pure Rust! No more SPIR-V cross.
- The concept of the wgpu
SwapChainhas been removed by merging it into theSurface, simplifying internals and improving approachability. - WGSL is now wgpu's default shader format. All internal shaders and examples have been updated to use WGSL instead of SPIR-V.
- A new
spirvfeature has been added that enables the old behaviour of accepting SPIR-V. This is disabled by default to try and keep build times low. TextureUsage,BufferUsage,ColorWriteare renamed to plural.- Renamed
TextureUsageconsts:SAMPLED->TEXTURE_BINDING,STORAGE->STORAGE_BINDING. - Renamed
InputStepModetoVertexStepMode. - Readable storage textures are no longer a part of the base API. They are now exposed via format-specific features, non-portably.
- Added limits for binding sizes, vertex data, per-stage bindings, and others.
- Adds ability to request a software (fallback) adapter.
For more details, see the wgpu CHANGELOG:
- 0.10: https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#v010-2021-08-18
- 0.11: https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#wgpu-011-2021-10-07
General
- Update
lyonto version0.17. - Refactor the
nannou::meshmodule into anannou_meshcrate, re-exported to maintain the same API. - Refactor the
nannou::wgpumodule into anannou_wgpucrate, re-exported to maintain the same API. - Remove the
nannou::uimodule in favour of providing anannou_conrodcrate. See the updatedexamples/ui/conrodexamples to find out how to update. Note that input must now be manually submitted to theUiand is no longer done automatically by the nannouApp. The easiest approach is to register araw_eventfunction with theUi's window. Refer to the updated examples for demonstration. - Add community tutorials section to the guide.
- Provided an user-friendly way to get the character value of a pressed keyboard key.
- Clear surface background automatically when re-allocated. Can set the clear
color via
WindowBuilder::clear_color(). - Provided a method which allows users to specify an initial default
LoopModein bothSketchBuilderandBuilder. Updated the relevant example to showcase the new functionality. - Remove unused
daggydependency. - Avoids calling
updateunderLoopMode::Waitif no events were received.
nannou 0.17.1 (2021-07-02)
- Fix some edge-cases in the behaviour of
io::safe_file_save.
Version 0.17.0 (2021-06-20)
Upgrade WGPU to 0.9
Most changes have been about renaming Blend-related data structres and fixing shaders to avoid sampling textures inside of conditionals (wgpu validation layer found this one).
- Item Name changes:
BlendState->BlendComponentwgpu::Extend3d::depth->wgpu::Extend3d::depth_of_array_layers- Float tpes are now typed more descripively. E.g.,
Float2->Float32x2
Refactor core of nannou into nannou_core crate
- Add a new
nannou_corecrate, targeted towards headless or embedded apps, libraries and rust-gpu. - Move the
color,geom,mathandrandcrates intonannou_core. - Remove the
geom::Graphtype due to lack of strong use-case and no reports of use. - Remove generic scalar param from
DrawAPI in favour of usingf32generally. - Remove
cgmathcomputer graphics linear algebra lib in favour ofglamfor faster compile times, simpler API, easier documentation,no_stdsupport and more. - Refactor the
RectandCuboidmethod implementations that exposePointandVecto avoid breakage. Previously, ourPointandVectortypes were generic, however as of switching toglamthis is no longer the case. Instead, methods that used these types are now implemented independently forRect<f32>andRect<f64>(likewise forCuboid).
General
- Fix a bug in
text::line::Infositerator where reported character index was incorrect. - Fix
glyph_colorsmiscoloring on resize. - Enable serializing of color types.
- Enable
nannou_laserfeatures for documentation build. - Update dependencies:
conrod_*from 0.73 to 0.74.noisefrom 0.6 to 0.7 (imagefeature no longer enabled).randfrom 0.7 to 0.8 (changesgen_range(a,b)togen_range(a..b))
Version 0.16.0 (2021-04-21)
- Add ability to color characters individually to
DrawAPI, i.e.draw.text().glyph_colors(color_iter). - Add a
app.quit()method to allow for quitting the application without user input. - Use the
instantcrate rather thanstd::time::Instantin preparation for wasm support. - Fix a major memory leak and various resize crashes - thanks danwilhelm!
- Fix non-uniform scaling in
DrawAPI.
Update to wgpu 0.7
These changes mostly involved renaming of items, though also included some
significant refactoring of the wgpu::RenderPipeline.
- The
wgpu::RenderPipelineBuilderhad some methods added, some removed in order to more closely match the newly refactoredwpgu::RenderPipeline. Documentation ofRenderPipelineBuildermethods has been added to match the upstream wgpu docs of the associated fields. - The
Samplerbinding type now requires specifying whether or not it uses theLinearoption for any of its minify, magnify or mipmap filters. Awgpu::sampler_filteringfunction was added to make it easier to retrieve this bool from theSamplerDescriptor. - The vertex buffer
IndexFormatis now specified while setting the index buffer in the render pass command, rather than in the render pipeline descriptor. - Item name changes include:
PowerPreference::Default->PowerPreference::LowPowerTextureUsage::OUTPUT_ATTACHMENT->TextureUsage::RENDER_ATTACHMENTTextureComponentType->TextureSampleTypecomponent_type->sample_type(for textures)BlendDescriptor->BlendStateVertexAttributeDescriptor->VertexAttributeBindingType::SampledTexture->BindingType::TextureColorStateDescriptor->ColorTargetStateDepthStencilStateDescriptor->DepthStencilStateVertexBufferDescriptor->VertexBufferLayout
- Also updates related dependencies:
conrod_deriveandconrod_coreto0.72.
Update to wgpu 0.6
For the most part, these changes will affect users of the nannou::wgpu module,
but not so much the users of the draw or ui APIs. Find the relevant wgpu
changelog entry
here.
Window::current_monitornow returns a result.wgpu::Device::create_buffer_with_datahas been removed in favour of a newwgpu::DeviceExt::create_buffer_inittrait method that takes awgpu::BufferInitDescriporas an argument.wgpu::BufferDescriptornow requires specifying whether or not the buffer should be mapped (accessible via CPU) upon creation.- The swap chain queue
submitmethod now takes an iterator yielding commands rather than a slice. - The async API for mapped reads/writes has changed.
wgpu::Buffers can now be sliced.wgpu::PipelineLayoutDescriptorrequires specifyingpush_constant_ranges.- The render pass
set_vertex_buffermethod now takes a buffer slice directly, rather than a range. - A new
wgpu::TextureViewInfotype was added. It represents thewgpu::TextureViewDescriptorparameters that were supplied to build awgpu::TextureView. - A top-level
wgpu::Instancetype has been introduced. - Load and store ops have been consolidated into a
wgpu::Operationstype. wgpu::Bindingwas renamed towgpu::BindGroupEntry.- A
RowPaddedBufferabstraction was added to more gracefully/safely handle conversions betweenwgpu::Buffers andwgpu::Textures. - Updates some dependencies:
audreyto 0.3.winitto 0.24.conrod_deriveandconrod_coreto 0.71 (nannou_timelineonly).
nannou_audio
- Update to CPAL 0.13.1 and from
sampletodasp_sample. - Add the ability to specify a device buffer size.
- Allow fallback to device default sample rate.
- Add builder method for specifying a stream error callback. This replaces the
render_result/capture_resultfunctions. - Switch from
failuretothiserrorfor error handling. - Rename
formattoconfigthroughout to match cpal 0.12. - Fix bug where stream channel count could be greater than specified.
Version 0.15.0 (2020-10-04)
Update to WGPU 0.5
For the most part, these changes will affect users of the nannou::wgpu module,
but not so much the users of the draw or ui APIs. Find the relevant wgpu
changelog entry
here.
- The y axis has been inverted for wgpu pipelines, meaning the y axis now
increases upwards in NDC (normalised device coordinates). This does not affect
the
DraworUiAPIs, but does affect users creating custom render pipelines. The updated wgpu examples should demonstrate how to deal with this change. wgpu::Deviceno longer offers a generic buffer creation method, instead requiring that users upload all data as slices of bytes. This required adding some smallunsafefunctions for converting data (most often vertices, indices and uniforms) to bytes ready for upload to the GPU. See the newwgpu::bytesmodule docs for details.wgpu::VertexDescriptortrait has been removed in favour of a newwgpu::vertex_attr_array!macro. See updated wgpu examples for a usage demonstration.wgpu::BindGroupLayoutnow requires the texture component type for sampled texture binding types. This means wgpu users may now need to switch between render pipelines if dynamically switching between textures at runtime.wgpu::Textureandwgpu::TextureViewnow expose acomponent_typemethod, allowing for easy retrieval of thewgpu::TextureComponentTypeassociated with theirwgpu::TextureFormat.- Fixes a bug where sometimes
Drawitems could be drawn with an incorrect blend mode, primitive topology or bind group. wgpu::Queues no longer requires mutable access when submitting command buffers. This allowed for the removal of the awkwardMutexthat was exposed when providing access to the window's swapchain queue.- The
Frame::TEXTURE_FORMAThas changed fromRgba16UnormtoRgba16Float, as theRgba16Unormformat was removed from the WGPU spec due to lack of consistent cross-platform support. Similarly,image::ColorType's that were previously mapped toUnormformats are now mapped their respectiveUintformats instead. - Update to conrod 0.70 to match wgpu dependency version.
- Remove
threadpoolcrate in favour offuturescrate thread pool feature. This is necessary in order to runTextureCapturerfutures now that they take advantage of rust's async futures API. - Adds the
num_cpusdependency for selecting a default number of worker threads for theTextureCapturer's inner thread pool.
Texture Capturing Fixes and Improvements
- Fixes the issue where
TextureCapturercould spawn more user callbacks than there where worker threads to process them. - Fixes the issue where an application might exit before all
window.capture_frames(path)snapshots have completed. - Provides a
TextureCapturer::await_active_snapshots(device)method that allows to properly await the completion of all snapshot read futures by polling the device as necessary. TextureCapturer::newnow takes the number of workers and optional timeout duration as an argument.Snapshot::read_threadedhas been removed in favour of a singleSnapshot::readmethod that is threaded by default. The old synchronous behaviour can be emulated by creating theTextureCapturerwith a single worker. Likewise,window.capture_frame_threadedhas been removed in favour ofwindow.capture_framefor the same reason.- New
app::Builderandwindow::Buildermax_capture_frame_jobsandcapture_frame_timeoutmethods have been added to allow for specifying the number of worker threads and optional timeout duration for the windows' innerTextureCapturers.
nannou_laser 0.14.3 (2020-05-19)
- Add support for enabling/disabling draw path reordering.
nannou_laser 0.14.2 (2020-05-15)
- Update
lasyto 0.4. Adds better support for points and improved euler circuit interpolation.
nannou_laser 0.14.1 (2020-05-06)
- Add
ilda-idtffeature tonannou_laser.
nannou 0.14.1 (2020-05-06)
- Fix bug where
draw::Rendererwas initialised with an incorrect scale factor. - Fix
Vector::angle_betweenimplementation.
Version 0.14.0 (2020-04-24)
- Relax trait bounds on many mesh types.
- Add Rgb8 and Rgba8 type aliases.
- Add
vec2.rotate(radians),Vector2::from_angle,a.angle_between(b),vec.magnitude()andvec.magnitude2()inherent methods. - Add
rgb_u32for creating color from hex literals. - Fix
.z_radians()behaviour. - Simplify the fullscreen API. #521.
- Adds a
set_versionscript for synchronising version updates across nannou crates. - Add a
random_ascii()function. - Add many more "Generative Design" and "Nature of Code" examples.
- Fix bug where
capture_frame_threadedwas not actually threaded.
The Great Repository Refactor
- Move nannou src and tests into a
nannousubdirectory. - Move
nannou_audiointo the nannou repo. - Move
nannou_isfinto the nannou repo. - Move
nannou_laserinto the nannou repo. - Move
nannou_oscinto the nannou repo. - Move
nannou_timelineinto the nannou repo. - Move guide into the nannou repo.
- Add all crates under a single workspace.
- Update README.md with a repository overview.
- Move
run_all_examples.rstest into a newscripts/directory. Add ability to run examples of specific packages in the workspace. - Move
nature_of_codeexamples - Move CHANGELOG into the guide.
- Switch from travis CI to a github workflow.
Guide
- Add a "Sketch vs App" tutorial.
- Add a "Window Coordinates" tutorial.
- Add "OSC Introduction" and "OSC Sender" tutorials.
- Ensure the "Drawing 2D Shapes" tutorial code is tested.
- Add automated testing of all guide code on each PR to nannou repo.
Draw API
- Update to lyon 0.15.
- Re-add support for colored vertices on polygons.
- Added blend modes, e.g.
draw.blend(blend_desc). - Added scissor, e.g.
draw.scissor(rect) - Added transforms, e.g.
draw.scale(s),draw.rotate(r). - Removed many relative positioning methods in favour of draw transforms.
- Add
draw.textureAPI. - Rename all APIs taking
points,points_coloredandpoints_texturedto take iterators yielding tuples, e.g.point,(point, color),(point, tex_coords). - Add support for
.points_textured(tex, pts)todraw.mesh(),draw.path()anddraw.polygon(). - Add support for
draw.sampler(sampler_desc), for specifying a draw context with a custom texture sampler. - Add
draw.triangle_mode(),draw.line_mode()anddraw.point_mode()for switching between render pipeline primitive topology. - Add GPU caching of glyphs for text drawn via
draw.text(). Allows for much higher-performance text rendering. - Add
draw.arrow()API. - New examples of the new APIs in the
nannou/examples/draw/directory.
WGPU API
- Simplified texture loading, e.g.
Texture::from_pathandTexture::from_image. - Simplified
TextureViewcreation viaTexture::viewbuilder. - Add
RenderPipelineBuilder. - Add
BindGroupLayoutBuilder. - Add
BindGroupBuilder. - Add
RenderPassBuilder. - Add
wgpu::shader_from_spirv_byteshelper function.
LASER API
- Add non-blocking LASER DAC detection via
Api::detect_dacs_async. - Add error callback to LASER stream API.
- Expose some missing setters on the LASER stream handles.
- Add nicer socket address and error handling to
nannou_laser::ffi.
Version 0.13.1 (2020-03-05)
- Add
Texture::innerproducing a reference to the inner texture handle. - Add
Texture::into_innerproducing the inner texture handle. - Add
Into<TextureHandle>impl forTexture - Add
Texture::into_ui_image.
Version 0.13.0 (2020-03-05)
- Transition from
vulkanotowgpufor all graphics handling!- Fixes llooooooooooottss of macOS bugs.
- The
drawanduiAPIs now render via wgpu. - Replace
vkmodule withwgpumodule. - Replace
examples/vulkanwithexamples/wgpu. - Big step towards enabling web target.
- Add
wgpu::TextureBuilderto simplify texture building process. - Add
wgpu::TextureReshaperfor writing a texture to another of differing size, format and sample_count. - Add
wgpu::TextureCapturerfor reading textures onto CPU as images.
- Update to
winit0.21. Another big step towards enabling web target. Also includes an overhaul of the application loop which should be significantly simpler. - Update
viewfunction API to takeFrameby value rather than by reference. For example, rather than:thefn view(app: &App, model: &Model, frame: &Frame) {}viewfunction signature now must look like:This was necessary to enable ergonomic texture capturing.fn view(app: &App, model: &Model, frame: Frame) {} frame.submit()can now be used to submit the frame to the GPU before the end of theviewfunction.nannou::sketchnow returns aSketchBuilder. This allows for specifying the sketch.size(w, h), but now requires that.run()is called (or the sketch won't do anything!).- A
.size(w, h)builder has been added to theapp::Buildertype that allows for specifying a default window size. - Add
window.capture_frame(path)method for capturing the next frame to an image file at the given file path. - Add a
simple_capture.rsexample. - Add a
capture_hi_res.rsexample. sketch's now need a call to.run()to do anything.sktech's now support a.size(width, height)builder method for setting window size.- The
app::Buildernow also supports a.size(width, height)method for specifying the default window width and height. LoopModes have been simplified:Waitno longer requiresupdate_following_eventorupdate_intervalNTimesno longer requiresupdate_intervalRefreshno longer requiresminimum_update_intervalorwindows
Version 0.12.0 (2019-11-03)
- Update vulkano dependencies to 0.16 in order to address
metalrelated bug on macOS. - Update conrod dependencies to 0.68 for vulkano patch. New version includes
copy/paste, double-click select and shift-click select support for the
TextEditwidget. - [Breaking] Small change to Vulkan debug items.
- [Breaking] New fields have been added to
DynamicState. - Update shade_runner to 0.3 for vulkano patch.
- Frame command buffer builder no longer provides access to unrelated
secondarybuffer methods.
Version 0.11.0 (2019-09-17)
- Update vulkano and shaderc dependencies to fix linux build issues.
- Add an example that demonstrates using the Draw API with multiple windows.
- Fix a bug where
Draw::to_framewouldpanic!when used between multiple windows. - Add lyon for 2D tessellation.
- A new
geom::path()API has been added that allows for building 2D vector graphics paths as an iterator yieldinglyon::path::PathEvents. This adds support for curves, arcs, sub-paths and more. - A
draw.path()API has been added to allow for taking advantage of paths via theDrawAPI.draw.path().stroke()produces a path that will be rendered via stroke tessellation,draw.path().fill()produces a path that will be rendered via fill tessellation. - The
draw.polyline()anddraw.line()APIs are now implemented in terms ofdraw.path().stoke(). - All known polyline bugs should be fixed.
draw.polygon()has been updated to use lyon'sFillTessellatorallowing for concave shapes.draw.polygon()now supports optional stroke tessellation of its outline and includes a suite of stroke option builder methods including line join types, stroke weight, stroke color, etc. See theSetStrokemethod docs to find all new methods now available..no_fill()and.stroke(color)can be called on all polygon types to indicate that no fill tessellation is required or to specify stroke color respectively.- All other
drawAPI polygons (rect,quad,tri,ellipse) have been implemented in terms ofdraw.polygon(), allowing them to take advantage of the same stroke tessellation options. - The line
thicknessmethods have been replaced withstroke_weightandweightmethods. - Fixes a pretty severe bug where any draw primitives that use the intermediary mesh would produce incorrect triangulation indices if they weren't the first instance to be created.
draw.polygon()will temporarily lose support for individually colored vertices. This is due to limitations with lyon'sFillTessellator, however these are in the process of being addressed.draw.tri()anddraw.quad()now expectPoint2s instead ofPoint3s. This was a trade-off in order to take advantage of the lyon tessellators which only support 2D geometry. Currently, the draw API's 3D story is very limited anyway, and this can likely be revisited as a part of a larger 3D tessellation overhaul. For now,draw.mesh()can still be used for drawing arbitrary 3D via thedrawAPI.- Introduce notosans crate for guaranteed default fallback font. Can be disabled by disabling default-features.
- Refactor default font out of ui module into app module.
- Add
textmodule along withtext::BuilderandTextAPIs. Allows for laying out multi-line, justified, auto-wrapping text. - Add
draw.text("foo")API. Currently quite slow as it uses thedraw.path()API internally, but this can be improved in the future by adopting a glyph cache. - Add
simple_text.rsandsimple_text_path.rsexamples.
Version 0.10.0 (2019-07-21)
- Change the
viewfunction signature to takeFrameby reference rather than by value. - Remove depth format constants in favour of querying supported formats.
- Update from palette 0.2 to 0.4.
- Add shorthand color constructors to the
colormodule. - Remove nannou named colors in favour of using palette's.
- Added a
named_color_reference.rsexample for finding suitable colors and to act as a test of color accuracy. - Change the
Frameimage type from the swapchain color format (non-linear sRGB) to a linear sRGB format for better consistency across platforms. - Add Window::rect method.
- Add
simple_audio_file.rsplayback example. - Add a new
NTimesloop mode. - Separate the OSC API out into a
nannou_osccrate. - Separate the audio API out into a
nannou_audiocrate. - Update laser examples for switch from
lasytonannou_laser. - Update deps:
- rand 0.7
- conrod 0.66
- vulkano 0.13
Version 0.9.0 (2019-05-28)
- 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
FrameAPI now wraps a single swapchain image and a vulkan command buffer builder. - The
drawAPI's renderer now renders via a vulkan pipeline. - The
UiAPI's renderer now renders via a vulkan pipeline. - The
Appincludes methods for accessing the vulkan instance. - The
Appcan 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
Appcreation process by introducing anapp::Buildertype. Examples have been updated accordingly. - The
viewfunction 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
Eventtype. This has simplified a lot of the examples. See theapp::Builderandwindow::Builderdocs for the newly available methods and more documentation. - Add
Window::grab_cursorandWindow::hide_cursormethods. - Add
window::SwapchainFramebuffershelper type. - Add
vk::Framebufferto simplify framebuffer management. - Remove the
state::time::Durationtype in favour of aDurationF64trait. - 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/lasycrate.
Version 0.8.0 (2018-07-19)
- Update deps: glium 0.22, image 0.19.
- Change
random_rangeto check thatminis smaller thanmax, swapping the two if not. This avoids some commonpanic!s. - Add expanding conversion implementations that vector types.
- Add custom
Vectortypes - replaces the use ofcgmath::{VectorN, PointN}types. - Update
randto version0.5. - Add
geom::scalarmodule. MoveDefaultScalartoscalar::Default. - Fix the order of
geom::linevertices. - Add a
draw.polygon()API. - Remove
geom::polylinemodule. - Add
geom::line::joinmodule withmitersubmodule implementation.
Version 0.7.0 (2018-06-13)
- Add better
panic!message tomap_rangeif 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
IntoDrawnAPI to support a dynamic number of arbitrary vertices. - Update
DrawingAPI to allow builders to produce newDrawingtypes.
Version 0.6.0 (2018-06-07)
- Add beginnings of Nature of Code and Generative Gestaltung examples.
- Add
App::elapsed_framesmethod. - Remove
app.window.idfield in favour of more reliableapp.window_idmethod. - Change
ui::Builderso 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
drawAPI.
Version 0.5.2 (2018-04-28)
- Improve efficiency of the
Appproxy by only making OS calls when needed.
Version 0.5.1 (2018-04-26)
- Add
Ui::draw_to_frame_if_changedmethod which only draws if necessary. - Add README to nannou-package.
- Add missing
Cargo.tomldetails to nannou-package. - Add an
iomodule with some helper functions simplifyingstd::io. - Add
fmodfunction tomathmodule.
Version 0.5.0 (2018-04-17)
- 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-newandnannou-packagetools. - Add
Draw::linealong with custom line builders toDrawing. - Change
draw::Backgroundcoloring API to match theSetColorAPI. - Change OSC default binding address from
127.0.0.1to0.0.0.0. - Add many new items to prelude.
- Add more
Rectconstructors. - Add
Range::lerpmethod. - Window name defaults to "nannou - exe_name" if no name is given.
- Correct existing and add missing geometry scalar default types.
Version 0.4.0 (2018-03-25)
- Add hsv (aka hsb) color builder methods to Draw API.
- Add nicer panic message for when
max_supported_input/output_channelsmethods fail. - Add
Ellipse::triangle_indicesmethod. - Improve efficiency of
geom::graph::node::Transform. - Add a
Durationwrapper with simpler access methods (secs,ms, etc). - Add
quad,rectandtrimethods toDrawAPI. - Add
draw::mesh::vertex::IntoPointtrait with many impls. - Add
geom::centroidfunction. - Add
Quad::bounding_rectandbounding_cuboidmethods. - Add more
geom::Verteximpls. - Add
Drawing<Ellipse>::radiusmethod. - Fix bug in audio input stream.
- Add simpler
Frameclear methods. - Add simpler
Appconstructors. - Fix bug where mesh types would not clear properly.
- Remove
colormodule from prelude to avoiduimodule conflicts. - Add named colors.
- Add
drawmodule. A high-level, simple, expressive graphics API. - Add
meshmodule. Supports meshes with custom channels and layouts. - Add
geom::Graphfor composing together geometric primitives. - Add new triangles iterators to
geom::quadandgeom::rectmodules. - Add
geom::cuboidmodule. - Add
geom::polylinemodule. - Add
geom::linemodule.
Version 0.3.0 (2018-02-18)
- Add
audio::Stream::idmethod. - Add
ExactSizeandDoubleEndediterator 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
statemodule for tracking mouse, keyboard and window state. - Add
geommodule. Includes basic 2D primitives (lines/text). - Add
easemodule which re-exports thepennereqcrate. - Add
map_range,partial_max,min,clampmath functions - Begin implementation of tutorial
basicsexamples.
Version 0.2.0 (2017-12-12)
- Add support for audio output device and streams.
- Add OSC support.