Skip to content

Topaz 3.5

Compare
Choose a tag to compare
@harrand harrand released this 22 Sep 20:13

Big changes:

  • ImGui integration via a new tz::dbgui module. Debug ui exists and is documented, but is entirely compiled out if !TZ_DEBUG (aka non debug builds)
  • A new global device is available, with the new tz::gl::device() from gl/api/device.hpp. You should no longer create tz::gl::Device instances yourself, always use the global device. All tests/demos have been updated to use this new API, and the old behaviour has been removed and is no longer supported.

Medium changes:

  • Added RendererEdit::ResourceWrite. This allows you to write a span of bytes to an existing resource. This works for images and buffers of any access specifier, meaning it's always available. Note that for dynamic resources this is not recommended because the data can be written to already using the resource span. This is new tested properly in tz_renderer_test.
  • tz::MouseButtonState contains a new get_scroll_offset() variable. You can use this to detect scrolling of the mouse wheel. This is used internally by dbgui.
  • tz::gl::RendererOption::BlockingCompute has been renamed to RenderWait
    • It also now works for both compute and graphics renderers. Previously it only had an affect on compute renderers.
  • Added a new tz::gl::ViewportRegion and tz::gl::ScissorRegion, which are included in an IOutput. You can use this to set viewport and scissor rectangles during rendering. Dbgui uses this internally.
  • CMake: add_app now allows you to specify a CUSTOM_ICON, which will set the icon of a release executable on windows. This is not yet implemented for linux however. If no custom icon is set, the topaz logo is used for the icon instead on release builds.
  • Minor refactoring of RendererEdit and its inner structs. Documentation has been updated so you can use that if you need details. However, tz::gl::RendererEditBuilder continues to be the recommendation , instead of filling the internal structs yourself.

Small changes:

  • Fixed an issue where RendererOption::RenderWait (BlockingCompute) would happen after presentation instead of beforehand.
  • ImageResources are now available on OGL builds without bindless textures enabled. It is still however not recommended for use, due to poor performance and lack of testing coverage (it may well be broken).
  • Added a remove method for tz::EnumField, also an operator|= overload for another EnumField.
  • std::hash specialisation for tz::Vector<T, S>. This includes tz::Vec2 etc...