Skip to content
This repository was archived by the owner on Nov 20, 2025. It is now read-only.

Releases: PurpleKingdomGames/ultraviolet

v0.8.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 16 Sep 07:59

Important note for Indigo users This release works fine, however for now you should use version 0.6.0 with Indigo 0.22.0 (Indigo pulls this version in transitively, so you shouldn't need to do anything). This is because a Scala change has happened that prevents the UBO case class fields being read if the case class is protected. This will be fixed in the next Indigo release.

This is a library bump release. Notably, this release uses Scala 3.7.3 and Scala.js 1.20.1.

What's Changed

Full Changelog: v0.7.0...v0.8.0

0.7.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 09 Jul 18:50

The only interesting thing about this release from a user perspective, is that it bumps Ultraviolet to requiring Scala 3.7.1.

Otherwise, this release was to sort out the migration to Sonatype Central.

v0.6.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 07 May 20:30

This release is mostly about keeping Scala / Scala.js version parity across the pkgames libs, but does also include a nice fix for the cross product function by @simerplaha - thank you!

Ultraviolet is now built against Scala 3.6.4 and Scala.js 0.19.0, your projects will need to use at least those versions to be compatible.

What's Changed

New Contributors

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 06 Mar 09:48

Ultraviolet has been published against the latest versions of Scala and Scala.js in anticipation of releases to the other Purple Kingdom Games libs that depend on it.

  • Scala 3.6.3
  • Scala.js 1.18.2

This release is a blast! 💥

Many thanks to @exoego for contributing an expanded range of c-like for loops, written as cfor (c4.. blast... geddit?). 🙏

What's Changed

New Contributors

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 14 Jan 00:28

With this release, Ultraviolet's contributor count has doubled to 2! 😄

As usual, Ultraviolet has been published against the latest versions of Scala and Scala.js in anticipation of releases to the other Purple Kingdom Games libs that depend on it.

  • Scala 3.6.2
  • Scala.js 1.18.1

This release contains a few quality of life improvements:

  • Add hex, hexa, rgb, and rgba interpolators - making it easy to copy paste colour values into your shaders! Thanks @dariusj!
  • SDF Helpers - import box, circle, hexagon, segment, star (five points), and triangle SDF shapes.
  • Noise Helpers - import cellular, simplex, white, perlin, and gradient noise functions.
  • Colour constants - Need a quick colour value? We've got the basics available to import.

Examples of all this and more can be found on the Ultraviolet docs site.

What's Changed

New Contributors

Full Changelog: v0.3.0...v0.4.0

0.3.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 14 Apr 13:43

Brings Ultraviolet up to date with Scala.js 1.16.0 and Scala 3.4.1, the versions new releases of our other libraries are targeting.

Also adds a small fix that preemptively makes Ultraviolet compatible with the up coming Scala 3.4.2 release.

What's Changed

Full Changelog: v0.2.0...v0.3.0

0.2.0

Choose a tag to compare

@davesmith00000 davesmith00000 released this 03 Jan 22:20

This release is mostly to bring Ultraviolet up to Scala.js version 1.15.0, ahead of the next Indigo release.

However, during the last release of Ultraviolet it was announced that there were no known bugs and... well... we found some! 😄

Bug fixes:

  • Fixed #95: Clamp variations now accept Float gentypes, e.g. clamp(vec2(1.0f), 0.0f, 1.0f)
  • Fixed #91: If statement return values can now be assigned to vars directly, e.g. var x = if true then 1.0f else 2.0f

Additionally, support added for some missing operators

  • Perhaps surprisingly (#103) !=! On reflection, shader writing is mostly about floating point maths where direct comparisons don't come up very often, and clearly != hasn't come up at all.
  • Support for bitwise operators on integers has been added.

Full Changelog: v0.1.3...v0.2.0

0.1.3

Choose a tag to compare

@davesmith00000 davesmith00000 released this 25 Sep 06:44

As of version 0.1.3, there are no known bugs in Ultraviolet ...which merely means that there are many unknown bugs lurking at the other end of the spectrum!

Fixes in this release:

  1. Added support for unary !, e.g. in if !myBool then vec4(1.0) else vec4(2.0).
  2. Embedding Raw GLSL without trimming no longer creates erroneous ;'s.
  3. Anonymous unary functions where the the argument is ignored using _ now generate shader code that compiles correctly.

The release is part of a wider set up upcoming releases that, along with the usual fixes and improvements, aims to get all the PKG libraries onto the same versions of things like Scala / Scala.js.

0.1.2

Choose a tag to compare

@davesmith00000 davesmith00000 released this 03 Jun 21:30

Functionally identical to 0.1.1, but specifically built against Scala 3.3.0. Please note that 0.1.1 works fine with Scala 3.3.0, I'm just trying to keep all the versions aligned between Ultraviolet and Indigo.

0.1.1

Choose a tag to compare

@davesmith00000 davesmith00000 released this 04 Mar 09:48

This is a minor release that fixes two important issues discovered during the on-going work to port Indigo and it's demo projects to Ultraviolet:

  1. Ultraviolet now supports array ShaderTypeOf instances up to 4096, where previously it was limited to 32. These are used in shaders where you intend to pass large amounts of data to you shader program as UBO data.
  2. The % operator now works correctly for Int types. GLSL has no % operator for floating point types, but Ultraviolet simulates them for you by converting to a mod call in the background. The misunderstanding was that the reverse is true for integer types, where you can % but not mod.

Full Changelog: v0.1.0...v0.1.1