Skip to content

Releases: AcademySoftwareFoundation/OpenShadingLanguage

v1.14.6.0

03 Jul 16:34
v1.14.6.0
Compare
Choose a tag to compare

Release 1.14.6.0 (2 Jul 2025) -- compared to 1.14.5.1

  • fix: Check for errors in ShadingSystem::ReParameter() #1998 (by cmstein)
  • fix: Pass the real number of channels to rs_texture and rs_texture3d on gpu #2004
  • build: Link batched libraries with liboslexec #1987 (by John Haddon)
  • build: Update include directives for OpenImageIO_ROOT #1997 (by cmstein)
  • build(optix): Simplify FindOptiX.cmake a bit now that OptiX 7 is the minimum #1988
  • build(optix): Get OptiX headers from new improved location #1989
  • build: Add compatibility with LLVM 20.1 #1993 (by Sven-Hendrik Haase)
  • ci: Remove Windows-2019 job #1990
  • ci: GPU/OptiX full build and test #1992
  • ci: Improve CI caching scheme #1994
  • ci: Add vp2025 test #1995

OSL 1.14.5.1

03 May 18:06
v1.14.5.1
Compare
Choose a tag to compare

Release 1.14.5.1 (3 May 2025) -- compared to 1.14.5.0

  • build: Fix various MacOS problems with GitHub and CMake #1982
  • build: Remove unused symbol that was removed from OIIO main #1984

OSL v1.14.5.0

07 Apr 04:23
v1.14.5.0
Compare
Choose a tag to compare

Release 1.14 (6 Apr 2025) -- compared to 1.13

  • v1.14.4.0-beta1 - 4 Mar 2025
  • v1.14.5.0 (non-beta release) - 6 Apr 2025

New minimum dependencies, toolchain, and compatibility changes:

  • C++: Raise C++ standard to 17 (from 14), gcc min to 9.3 (from 6.3), clang min to 5.0 #1847 (1.14.2.0)
  • Python: Raise Python minimum to 3.7 (from 2.7), pybind11 to 2.7 (from 2.4) #1855 (1.14.2.0)
  • Imath: Raise Imath minimum to 3.1 (from 2.4) #1853 (1.14.2.0)
  • CMake Raise minimum to 3.19 #1914
  • OpenImageIO: Raise minimum to 2.5. #1914
    Note that it is likely that 1.14 is the last release family that will support OIIO 2.x, and beginning with next year's OSL release, OpenImageIO 3.0+ will be the new minimum.
  • LLVM: New minimum LLVM release is 11.0. #1914
  • NO Boost: Boost is no longer a dependency of OSL.

✏️ OSL Language, standard library, and oslc compiler (for shader writers):

  • osl: Add optional texture(), texture3d(), and environment() argument for "colorspace". This currently is not functional (should be fixed soon), but is legal to pass. #1966 (1.14.5.0)
  • Fix bugs in vector2.h, vector4.h, color2.h, color4.h, docs #1892 (1.14.3.0)
  • Fix the subsurface_bssrdf parameters to conform to MaterialX. #1823 (by Christopher Kulla) (1.14.1.0)
  • bsdf: Anisotropic_vdf closure should not set IOR #1870 (by Christopher Kulla) (1.14.3.0)
  • bsdf: Add hair_chiang_bsdf closure definition from MaterialX #1891 (by Christopher Kulla) (1.14.3.0)

☀️ testshade/testrender/osltoy improvements

  • testrender: Implement new OpenPBR BRDFs: Oren-Nayar #1817 (by Christopher Kulla) (1.14.1.0), sheen BRDF #1819 (by Christopher Kulla) (1.14.1.0)
  • testrender: Modify testrender to work with triangle meshes #1865 (by Christopher Kulla) (1.14.3.0)
  • testrender: Implement basic displacement shader support #1898 (by Christopher Kulla)
  • testrender: Full OptiX support in testrender #1896 #1897 (by Tim Grant) (1.14.3.0)
  • testrender: Improvements to energy conservation between layered BSDFs #1935 (by Jonathan Stone)
  • osltoy: Add command line and GUI ways to adjust include search paths #1876 (by Maxwell Iverson) (1.14.3.0)

⛰️ API changes and new ShadingSystem features (for renderer writers):

  • The big switch to ustringhash: To better accommodate GPU execution, and to
    make the code and techniques less divergent between CPU and GPU code paths,
    we have changed the runtime representation of strings from ustring to
    ustringhash -- which is still a 64 bit token, but rather than the address
    of the unique characters, which may change from run to run and harm the
    OptiX/CUDA PTX cache performance, it is the deterministic hash of the
    characters. Thus, not just the runtime, but all of the interfaces of
    RendererServices and other APIs that the renderers use to set up and
    communicate with the ShadingSystem, now have been changed to expect
    ustringhash instead of ustring.
    #1732 (by Steena Monteiro) (1.14.0.0)
  • Add API for building interpolated getter free functions.
    #1765 (by Thibault Vergne) (1.14.0.0)
  • Switch shade_image() to use current OIIO::paropt #1843 (1.14.1.1)
  • Free functions for texturing, point clouds, and trace #1852 (by Curtis Black) (1.14.3.0)
  • Switch to a 2-level namespace #1922
  • Add ShadingSystem query to ask if attribute derivatives are requested. #1932 (by Curtis Black) (and subsequent OptiX related fixes in #1951)
  • RendererServices API for renderer to cache key/value pairs. This is currently used to cache ptx generation for OptiX/GPU rendering. #1938 #1954 (by Chris Hellmuth)

🚀 SIMD batched shading mode

  • Codegen bug for compref with varying index #1776 (by Alex Wells) (1.14.1.0)
  • Add support for b4_SSE2 batched mode. #1825 (by johnfea) (1.14.2.0)
  • fix: Assume BatchedRendererServices texture derivatives are in st space. #1828 (by sfriedmapixar) (1.14.2.0)

🚀 OptiX GPU rendering

  • Fix NVPTX TargetMachine leak, etc. #1763 (by Tim Grant) (1.14.0.0)
  • Fix GPU interpolated param initialization #1791 (by Chris Hellmuth) (1.14.1.0)
  • Add lazytrace ShadingSystem option to avoid combinatoric optixTrace
    inlining: when enabled, run layers with trace ops unconditionally at the
    start of shader evaluation. This costs some potential performance in cases
    where the trace layer would never be evaluated, but removes all the
    compilation penalties that the inlining was presenting.
    #1815 (by Chris Hellmuth) (1.14.1.0)
  • Mock gpu pointcloud_search calls with empty custom attributes #1859 (by Chris Hellmuth) (1.14.2.0)
  • Fully implement and fix the OptiX path in testrender and testshade #1896 #1897 (by Tim Grant) (1.14.3.0)
  • RendererServices API for renderer to cache key/value pairs. This is currently used to cache ptx generation for OptiX/GPU rendering. #1938 (by Chris Hellmuth)
  • Generate symbol derivatives for outputs when requested #1916 (by Lukas Stockner)

🐛/🔧 Internals: fixes, improvements, and developer concerns

  • Mute partio error prints #1774 (by olegul) (1.14.1.0)
  • calculatenormal needs to use the fliphandedness global #1783 (by sfriedmapixar) (1.14.1.0)
  • Print closure missing error message at compile time instead of run time. #1781 (by sfriedmapixar) (1.14.1.0)
  • Make isconnected() work with downstream renderer "connections." #1782 (by sfriedmapixar) (1.14.1.0)
  • int: Change OSL_CONSTEXPR14 to constexpr #1805 (1.14.1.0)
  • Remove unnecessary ustring lookup #1824 (by Chris Hellmuth) (1.14.1.0)
  • Make backfacing shadeop indicate backfacing shader-global is needed #1827 (by sfriedmapixar) (1.14.1.0)
  • Reparameter string needed to be ustringhash #1841 (by Chris Hellmuth) (1.14.1.0)
  • Some modernization of osl.imageio #1840 (1.14.1.1)
  • Typo in dual.h made invalid template DualStorage #1871 (1.14.3.0)
  • Prevent NaN from cropping up in testshade for icx (or anyone else) #1874 (1.14.3.0)
  • *testre...
Read more

OSL v1.14.4.0-beta1

04 Mar 23:59
v1.14.4.0-beta1
Compare
Choose a tag to compare
OSL v1.14.4.0-beta1 Pre-release
Pre-release

This is the first beta release of OSL 1.14. We are shooting for an official production-ready 1.14 release by the end of the March (sooner if no issues are reported). Please test and let us know if there are any problems. Once out of beta, this will be the officially supported stable release for 2025.

If all goes well, there will be no additional non-back-compatible changes, but it's possible for this to happen until the "beta" designation is removed, so use some caution. Preliminary release notes are below:

Release 1.14 (beta1 - 4 Mar 2025) -- compared to 1.13

  • v1.14.4.0-beta1 - 4 Mar 2025

New minimum dependencies, toolchain, and compatibility changes:

  • C++: Raise C++ standard to 17 (from 14), gcc min to 9.3 (from 6.3), clang min to 5.0 #1847 (1.14.2.0)
  • Python: Raise Python minimum to 3.7 (from 2.7), pybind11 to 2.7 (from 2.4) #1855 (1.14.2.0)
  • Imath: Raise Imath minimum to 3.1 (from 2.4) #1853 (1.14.2.0)
  • CMake 3.19 #1914
  • OpenImageIO: Raise minimum to 2.5. #1914
    Note that it is likely that 1.14 is the last release family that will support OIIO 2.x, and beginning with next year's OSL release, OpenImageIO 3.0+ will be the new minimum.
  • LLVM: New minimum LLVM release is 11.0. #1914
  • NO Boost: Boost is no longer a dependency of OSL.

✏️ OSL Language, standard library, and oslc compiler (for shader writers):

  • Fix the subsurface_bssrdf parameters to conform to MaterialX. #1823 (by Christopher Kulla) (1.14.1.0)
  • Fix bugs in vector2.h, vector4.h, color2.h, color4.h, docs #1892 (1.14.3.0)
  • bsdf: Anisotropic_vdf closure should not set IOR #1870 (by Christopher Kulla) (1.14.3.0)
  • bsdf: Add hair_chiang_bsdf closure definition from MaterialX #1891 (by Christopher Kulla) (1.14.3.0)

☀️ testshade/testrender/osltoy improvements

  • testrender: Implement new Oren-Nayar model from OpenPBR #1817 (by Christopher Kulla) (1.14.1.0)
  • testrender: Implement OpenPBR's sheen BRDF #1819 (by Christopher Kulla) (1.14.1.0)
  • testrender: Modify testrender to work with triangle meshes #1865 (by Christopher Kulla) (1.14.3.0)
  • testrender: OptiX testrender overhaul (take two) #1897 (by Tim Grant) (1.14.3.0)
  • testrender: Full OptiX support in testrender #1896 #1897 (by Tim Grant) (1.14.3.0)
  • testrender: Implement new Oren-Nayar model from OpenPBR #1817 (by Christopher Kulla) (1.14.1.0)
  • testrender: Implement OpenPBR's sheen BRDF #1819 (by Christopher Kulla) (1.14.1.0)
  • testrender: Implement basic displacement shader support #1898 (by Christopher Kulla)
  • testrender: Improvements to energy conservation between layered BSDFs #1935 (by Jonathan Stone)
  • osltoy: Add command line and GUI ways to adjust include search paths #1876 (by Maxwell Iverson) (1.14.3.0)

⛰️ API changes and new ShadingSystem features (for renderer writers):

  • The big switch to ustringhash: To better accommodate GPU execution, and to make the code and techniques less divergent between CPU and GPU code paths, we have changed the runtime representation of strings from ustring to ustringhash -- which is still a 64 bit token, but rather than the address of the unique characters, which may change from run to run and harm the OptiX/CUDA PTX cache performance, it is the deterministic hash of the characters. Thus, not just the runtime, but all of the interfaces of RendererServices and other APIs that the renderers use to set up and communicate with the ShadingSystem, now have been changed to expect ustringhash instead of ustring. #1732 (by Steena Monteiro) (1.14.0.0)
  • Add API for building interpolated getter free functions. #1765 (by Thibault Vergne) (1.14.0.0)
  • Switch shade_image() to use current OIIO::paropt #1843 (1.14.1.1)
  • Free functions for texturing, point clouds, and trace #1852 (by Curtis Black) (1.14.3.0)
  • Switch to a 2-level namespace #1922
  • Add ShadingSystem query to ask if attribute derivatives are requested. #1932 (by Curtis Black) (and subsequent OptiX related fixes in #1951)
  • RendererServices API for renderer to cache key/value pairs. This is currently used to cache ptx generation for OptiX/GPU rendering. #1938 (by Chris Hellmuth)

🚀 SIMD batched shading mode

  • Codegen bug for compref with varying index #1776 (by Alex Wells) (1.14.1.0)
  • Add support for b4_SSE2 batched mode. #1825 (by johnfea) (1.14.2.0)
  • fix: Assume BatchedRendererServices texture derivatives are in st space. #1828 (by sfriedmapixar) (1.14.2.0)

🚀 OptiX GPU rendering

  • Fix NVPTX TargetMachine leak, etc. #1763 (by Tim Grant) (1.14.0.0)
  • Fix GPU interpolated param initialization #1791 (by Chris Hellmuth) (1.14.1.0)
  • Add lazytrace ShadingSystem option to avoid combinatoric optixTrace inlining: when enabled, run layers with trace ops unconditionally at the start of shader evaluation. This costs some potential performance in cases where the trace layer would never be evaluated, but removes all the compilation penalties that the inlining was presenting. #1815 (by Chris Hellmuth) (1.14.1.0)
  • Mock gpu pointcloud_search calls with empty custom attributes #1859 (by Chris Hellmuth) (1.14.2.0)
  • Fix the OptiX path in testrender and testshade #1896 (by Tim Grant) (1.14.3.0)
  • OptiX testrender overhaul (take two) #1897 (by Tim Grant) (1.14.3.0)
  • RendererServices API for renderer to cache key/value pairs. This is currently used to cache ptx generation for OptiX/GPU rendering. #1938 (by Chris Hellmuth)
  • Generate symbol derivatives for outputs when requested #1916 (by Lukas Stockner)

🐛/🔧 Internals: fixes, improvements, and developer concerns

  • Mute partio error prints #1774 (by olegul) (1.14.1.0)
  • calculatenormal needs to use the fliphandedness global #1783 (by sfriedmapixar) (1.14.1.0)
  • Print closure missing error message at compile time instead of run time. #1781 (by sfriedmapixar) (1.14.1.0)
  • Make isconnected() work with downstream renderer "connections." #1782 (by sfriedmapixar) (1.14.1.0)
  • int: Change OSL_CONSTEXPR14 to constexpr #1805 (1.14.1.0)
  • Remove unnecessary ustring lookup #1824 (by Chris Hellmuth) (1.14.1.0)
  • Make backfacing shadeop indicate backfacing shader-global is needed [#1827](#1...
Read more

v1.13.12.0

05 Dec 05:11
v1.13.12.0
Compare
Choose a tag to compare

Release 1.13.12.0 -- 4 Dec 2024 (compared to 1.13.11.0)

  • bsdfs: Anisotropic_vdf closure should not set IOR #1870 (by Christopher Kulla)
  • shaders: Bugs in vector2.h, vector4.h, color2.h, color4.h, docs #1892
  • build: Support for LLVM 19 #1873
  • build: Fix LLVM find package picking up system-wide libraries #1866 (by Sergey Sharybin)
  • build: Fixes for supporting OIIO 3.0 #1881 #1885 #1888
  • fix: Typo in dual.h made invalid template DualStorage #1871
  • ci: Add VFX Platform 2024 to CI #1854
  • ci: Deal with OIIO renaming its master -> main #1867
  • ci: Various adjustments for OIIO 3.0 becoming the release #1901
  • ci: Fix broken CI for ASWF 2021 and 2022 containers #1905
  • ci: Only test against maximum OpenImageIO 2.5.17.0 (because it doesn't
    yet build properly against OIIO 3.0)

NOTE: v1.13.12.0 does NOT build against OpenImageIO 3.0. We may yet make a future 1.13.x compatible with OIIO 3.x, but if you need OIIO 3.x you may need to switch to OSL 1.14, which will imminently have a beta release.

Release: OSL v1.13.11.0

03 Sep 15:16
Compare
Choose a tag to compare

Release 1.13.11.0 -- 1 Sep 2024 (compared to 1.13.10.0)

  • fix/batched: Assume BatchedRendererServices texture derivatives are in st space. #1828 (by sfriedmapixar) (1.13.10.0)
  • fix: Make backfacing shadeop indicate backfacing shader-global is needed #1827 (by sfriedmapixar) (1.13.10.0)
  • deps: Handle various OpenImageIO deprecations and changes in the run-up to OIIO 3.0 #1834 #1806 #1838 #1842 #1850 (1.13.10.0)
  • deps: Adjust to OIIO change to IC/TS API #1848 (1.13.10.0)
  • deps: Llvm 18 compat issue - include libclangAPINotes #1812 (1.13.10.0)
  • deps: Make finding bison work better on Apple Silicon Macs + homebrew #1822 (1.13.10.0)
  • ci: Mods to CI to deal with OIIO master raising dependency mins #1833 (1.13.10.0)
  • ci: Deal with CentOS 7 EOL and disappearance of yum mirrors #1839 (1.13.10.0)
  • ci: Fix GHA CI after they upgraded nodejs #1837 (1.13.10.0)
  • admin: Change release notice icon to use the icon vs the normal logo so it shows up better #1777 (by John Mertic) (1.13.10.0)

OSL v1.13.10.0

02 Jun 17:12
Compare
Choose a tag to compare

Release 1.13.10.0 -- 1 June 2024 (compared to 1.13.9.0)

  • testrender: Implement new Oren-Nayar model from OpenPBR #1817 (by Christopher Kulla)
  • docs: Fix outdated or wrong repo URLs #1811

OSL v1.13.9.0

01 May 20:03
Compare
Choose a tag to compare

Release 1.13.9.0 -- 1 May 2024 (compared to 1.13.8.0)

  • deps: Support for LLVM-18 #1773 (by مهدي شينون (Mehdi Chinoune) #1803 (by Larry Gritz)
  • fix: Make isconnected() work with downstream renderer "connections." #1782 (by sfriedmapixar)
  • cleanup: Change OSL_CONSTEXPR14 to constexpr #1805
  • internals build: Fix ifdef typo #1804
  • build: Propagate cpp version #1797
  • build: Print commit hash of locally built dependencies #1798
  • ci: Lock down to OIIO 2.5 for icc tests #1799
  • ci: Suppress leak sanitizer warnings about internals of robin_hash #1807
  • docs: More detail about supported platforms in INSTALL.md #1796

OSL v1.13.8.0

01 Apr 18:46
Compare
Choose a tag to compare

Release 1.13.8.0 -- 1 Apr 2024 (compared to 1.13.7.0)

  • fix(batched): Codegen bug for compref with varying index for batched shading #1776 (by Alex Wells)
  • fix: Calculatenormal needs fliphandedness #1783 (by sfriedmapixar)
  • fix: Print closure missing error message at compile time instead of run time. #1781 (by sfriedmapixar)
  • int: Change long-deprecated OIIO macro to new one #1788
  • ci: Fix broken Macos-13 CI #1780

OSL v1.13.7.0

01 Mar 23:40
Compare
Choose a tag to compare

Release 1.13.7.0 -- 1 Mar 2024 (compared to 1.13.6.1)

  • fix: Mute partio error prints #1774 (by olegul)
  • ci: Test with Mac ARM runner #1770
  • docs: Fix links to RTD docs from github landing page #1768
  • admin: Switch release announcement workflow to jmertic's awesome action #1766