Skip to content

Releases: AcademySoftwareFoundation/OpenShadingLanguage

OSL v1.12.12.0

01 May 18:12
Compare
Choose a tag to compare

Release 1.12.12.0 -- 1 May 2023 (compared to 1.12.11.0)

  • New ShadingSystem getattribute query for shader groups: "attribute_types"
    retrieves a pointer to the array of TypeDesc values describing the
    attributes retrieved by existing "attributes_needed" and "attribute_scopes".
    #1650
  • Fix a bug with binding userdata when it's used by more than one shader
    within the group and they disagree about whether derivatives are needed when
    retrieving the attribute. #1673

OSL v1.12.11.0

05 Apr 23:25
Compare
Choose a tag to compare

Release 1.12.11.0 -- 5 Apr 2023 (compared to 1.12.10.0)

  • Build: Add Qt 6.x compatibility (Qt is only used for osltoy). #1655
  • Build: more careful about paths to look for LLVM. #1656
  • Build: Fix Cuda compilation flags for LLVM 15. #1659
  • Notice: OSL does not yet build properly against the newly release LLVM 16.
    You must use LLVM 9-15. For Mac users who get their llvm from Homebrew,
    please be aware that Homebrew has changed its default llvm to 16, so you'll
    need to brew install llvm@14 and make your OSL CMake define:
    -DLLVM_ROOT=/usr/local/opt/llvm@14

OSL v1.12.10.0

01 Mar 19:22
Compare
Choose a tag to compare

Release 1.12.10.0 -- 1 Mar 2023 (compared to 1.12.9.0)

  • feat(testrender): Modify testrender so that it correctly sets raytype to
    "camera" for camera rays, "shadow" for shadow rays, and "diffuse" for all
    secondary rays. Also rerun the shades for background shader group on the
    camera rays rather than use the cached map. This helps the MaterialX project
    use testrender for certain unit tests and verification. #1648 #1649
  • feat: Expose llvm groupdata size as a shadergroup attribute
    "llvm_groupdata_size". #1642
  • fix: Crash could result from uncaught exception in OpenColorIO when calling
    transformc with derivatives for color spaces that require OCIO. #1646
  • fix: certain uses of fmod() in shaders could fail to generate LLVM code
    correctly, due to a missing implementation for the fmod(triple,float)
    varieties. #1643
  • build: Change snprintf formatting to satisfy some compilers. #1640
  • CI: Fix broken Mac ci. #1647

OSL v1.12.9.0

01 Feb 20:52
Compare
Choose a tag to compare

Release 1.12.9.0 -- 1 Feb 2023 (compared to 1.12.8.0)

  • Remove unnecessary setting of locale::global. #1630
  • Batch shading: Fix bug with masked wide glosure generation. #1637
  • Make sure ReParameter() has the same relaxed type checking rules as
    Parameter(). Before, it was stricter about type conversion. #1639
  • Windows: Fix some GPU build errors. #1638

OSL v1.12.8.0

04 Jan 00:05
Compare
Choose a tag to compare

Release 1.12.8.0 -- 3 Jan 2023 (compared to 1.12.7.1)

  • Remove dependency on OptiX SDK for building core OSL with OptiX support.
    You can now build OSL with OptiX support enabled even if you don't have the
    OptiX SDK headers present at build time. But you will still need them to
    build your OptiX-based application that uses OSL for GPU rendering. #1627
  • Batch mode: fix issue with closure keyword parameters. #1620
  • Batch mode: fix crash when adding a default initialized closure. #1624
  • Batch mode: Fix support for closures with array types. #1630
  • testshade: better testing of all closure parameter types. #1621
  • Fix various CI breaks as dependencies shifted. #1629 #1631 #1633

OSL v1.12.7.1

03 Dec 20:33
Compare
Choose a tag to compare

Release 1.12.7.1 -- 1 Dec 2022 (compared to 1.12.7.0)

  • Add clangSupport library as dependency to fix linker error on some
    platforms. #1613
  • Test against OpenColorIO 2.2. #1616
  • Build: Fix how version overrides work to reduce the chance of user mistakes.
    #1617

OSL v1.12.7.0

01 Nov 04:13
Compare
Choose a tag to compare

Release 1.12.7.0 -- 1 Nov 2022 (compared to 1.12.6.2)

  • Optix: Change naming of certain compiler-generated constants in a way that
    improves use of the PTX cache. #1570
  • Batch: Fix uninitialized members in ReadEvent internals. #1575
  • testshade --help now prints TextureSystem options and hardware info. #1584
  • oslc: Fix memory leak in ASTvariable_declaration. #1576
  • Fix memory leaks in light path expression code. #1593 #1594
  • Include the immintrin.h header only when needed. #1605
  • icx: Improvements to fix problems exposed by new icx 2022.2 compiler. #1601
  • Testing: CMake cache variables to control the testing timeout length. #1571
  • CI: Add a dynamic analysis test using address and leak sanitizers. #1581
  • CI: Now using SonarCloud static analysis. #1551
  • CI: Many improvements in testing code coverage #1607
  • CI: Make sure to run pointcloud tests when partio is found. #1611
  • Developers: platform.h now defines OSL_ALLOCA macro. #1589
  • Developers: platform.h now defines OSL::bitcast utility. #1610

OSL v1.12.6.2

01 Oct 20:14
Compare
Choose a tag to compare

OSL version 1.12 has been released! Officially tagged as "v1.12.6.2", we have also moved the "release" branch tag to this position. Henceforth, 1.12 is the supported production release family. The API is now frozen -- we promise that subsequent 1.12.x releases (which should happen monthly) will not break back-compatibility of API, ABI, or linkage, compared to this release. Please note that this release is not ABI or link compatible with 1.11 or older releases (and may be incompatible with previous in-progress 1.12 development prior to this release). Release notes for 1.12 outlining all the changes since 1.11 was introduced are below.

Please note that a few of the build and runtime dependencies have changed their minimum supported versions. The minimum C++ standard supported is now C++14 and the minimum supported compilers are gcc 6.1 (no more 4.8) and MSVS 2017 (no more 2015). The minimum LLVM is now 9.0 (no more 7 or 8). The minimum OpenImageIO is now 2.2 (no more support for 2.0 or 2.1), and the minimum OpenEXR is now 2.3 (no more 2.0, 2.1, or 2.2).

Enjoy, and please report any problems. We will continue to make patch releases to the 1.12 family roughly monthly, which will contain bug fixes and non-breaking enhancements. The older 1.11 series of releases is now considered obsolete. There will be no further patches to 1.11.

Release 1.12 -- 1 Oct 2022 (compared to 1.11)

Big Deal Changes:

  • Batch shading: A fully operational "batch shading" support when using
    CPUs supporting the Intel AVX2 or AVX512 instruction set architectures,
    allows shading 8 or 16 points at a time, accelerated by using SIMD
    instructions. (Changes contributed by Intel.)
  • OptiX: A reasonable subset of the OSL language can run on NVIDIA GPUs
    for Cuda or OptiX-based renderers.
  • Standardized material closures: Synchronize with MaterialX on a minimum
    standard set of material closures. This is reflected in both the OSL spec as
    well as reference implementations of those closures in testrender. #1533
    #1536 #1537 #1538 #1539 #1541 #1542 #1547 #1557

Dependency and standards requirements changes:

  • The minimum (and default) compilation mode is now C++14. C++17 and 20 are
    also supported. #1362 #1369 (1.12.2)
  • Minimum compilers are now gcc 6.1 (no more support for gcc 4.8), MSVS
    2017 or newer (no more support for 2015).
  • Minimum LLVM is now 9.0. Support for LLVM 7 and 8 have ben dropped.
    #1441 (1.12.3)
  • Minimum OpenImageIO is now 2.2: Support for OIIO 2.0 and 2.1 have been
    dropped. #1426 (1.12.3)
  • Minimum OpenEXR version is now 2.3 (raised from 2.0). #1406 (1.12.3)

OSL Language and oslc compiler:

  • #pragma error "message" and #pragma warning "message" can be used to
    conditionally inject a compile-time error or warning. #1300 (1.12.1)
  • Check for errors when when writing oso files (for example, disk volume
    full). #1360 (1.12.2/1.11.14)
  • A new flavor of gettextureinfo(texturename, paramname, s, t, destination)
    allows for querying of texture metadata about the particular UDIM tile
    that will be used for particular (s,t) texture coordinates. #1398 (1.12.3)
  • Better error detection when OSL user functions write to function parameters
    that are not marked as output. #1417 (1.12.3)
  • Detect and better error message when using a type name where a variable
    identifier should be. #1457 (1.12.4.2)

OSL Standard library:

  • vector2.h is updated with a mod() function for vector2. #1312 (1.12.1/1.11.12)
  • Preliminary work for adding standard MaterialX closures. 31371 (1.12.2)
  • Fix previously-broken color conversions from RGB to xyY. #1410 (1.12.3)
  • Fully removed MaterialX shaders (get those from the MaterialX project).
    #1450 (1.12.3)
  • Fix incorrect implementation of matrix4 * vector4 in vector4.h #1513
    (1.12.5.0)

API changes, new options, new ShadingSystem features (for renderer writers):

  • Custom experimental llvm optimization levels 10, 11, 12, and 13. These
    are stripped down versions of 0, 1, 2, 3 (corresponding to clang's -O0,
    -O1, -O2, -O3) but we think for shaders are just as performant but with
    lower JIT time. These are currently experimental, but we are benchmarking
    to determine if they should be the new defaults. #1250 (1.12.0.0)
  • ShadingSystem attribute "searchpath:library" gives a searchpath for finding
    runtime-loadable implementation modules for ISA-optimized operations.
    #1310 (1.12.1)
  • Output variable placement -- now you can designate where shader outputs
    should go and the shader will put results there, instead of the app using
    find_symbol() and symbol_address after the shader is executed. #1328 (1.12.2)
  • Userdata input placement -- now you can designate where interpolated
    userdata should be copied from directly, rather then via callbacks to
    RendererServices::get_userdata(). #1391 (1.12.3)
  • Better hiding of the Matrix22 class, which was never actually part of the
    public APIs. #1480 (1.12.4.5)
  • Add ACES2065-1 and ACEScg as shading system color spaces (#1486) (1.12.4.6)
  • Expanded warnings (via enabling the "opt_warnings" attribute of the
    ShadingSystem) for operations that try to create new strings mid-shader, or
    that need to access the characters of strings mid-shader. These are only
    triggered for those cases that cannot be resolved by the end of the "runtime
    optimization" phase. #1497 (1.12.4.6)

SIMD batched shading mode:

  • Added support for masked operations to LLVMUtil. #1248 #1250 (1.12.0.0)
  • Add interface to ShadingSystem for batched execution. #1272 (1.12.0.1)
  • Add interface to batched RendererServices. #1276 (1.12.0.1)
  • Batched testshade. #1298 (1.12.1)
  • ShadingSystem plumbing to support batched execution. #1301 (1.12.1)
  • Batched analysis to figure out which symbols need to be varying or uniform,
    and which operations require masking. #1313 #1318 #1322 (1.12.1)
  • Additional infrastructure for batched analysis. #1316 (1.12.1)
  • Add implementation for BatchedBackendLLVM. #1330 (1.12.1)
  • ISA-specific modules. #1345 (1.12.2)
  • Introduction of CI testing of batched mode. #1357 #1367 (1.12.2)
  • Control flow and string ops. #1372 (1.12.2)
  • Matrix operations. #1378 (1.12.2) #1485 (1.12.4.6)
  • Batched algebraic, trig, and transcendental functions. #1385 (1.12.2)
  • Batched noise. #1394 (1.12.3)
  • Batched implementation of all color operations. #1408 (1.12.3)
  • Batched bitwise ops. #1413 (1.12.3)
  • Batched spline and spline inverse. #1422 (1.12.3)
  • Batched texture, gettextureinfo, texture3d, environment. #1436 (1.12.3)
  • Batched dictionary functionality (dict_find, etc.) #1445 (1.12.3)
  • Enable batched execution of most testsuite. #1453 (1.12.4.1)
  • Batched isnan, isinf, isfinite. #1456 (1.12.4.2)
  • Batched userdata and output placement. #1455 (1.12.4.2)
  • Batched pointcloud functions. #1464 (1.12.4.4)
  • Batched closures #1500
  • Fix overrunning allocation region in debug common_ancestor_between. #1577
    (1.12.6.1)

OptiX rendering:

  • Explicitly set the OptiX pipeline stack size. #1254 (1.12.0.0)
  • CI tests now at least compile and build with USE_OPTIX=1 (though not yet
    run the tests). #1281 (1.12.0.1)
  • A simple self-contained Cuda/OptiX example has been added as
    testsuite/example-cuda. #1280 (1.12.0.1)
  • Overhaul in how strings are communicated to the GPU side. #1309 (1.12.1)
  • Removal of runtime compilation of Cuda (libnvrtc dependency eliminated).
    #1309 (1.12.1)
  • Fix problems with unresolved symbols on GPU, particularly when multiple
    shaders call certain functions like printf. #1401 (1.12.3)
  • Changed prototype of osl_get_attribute callback to work properly on
    GPU. #1404 (1.12.3)
  • Fix missing hostdevice modifier on some matrix operators. #1409 (1.12.3)
  • Fix race conditions when compiling for OptiX 7. #1411 (1.12.3)
  • osl_get_attribute() uses device strings when compiling for OptiX.
    #1435 (1.12.3)
  • Fix issue with OptiX + clang 14 with duplicate symbols. #1561 (1.12.6.0)

Performance improvements:

  • Less mutex locking around use and retrieval of ColorSystem related to
    doing color transforms. #1405 (1.12.3)
  • Constant folding of startswith(). #1507 (1.12.5.0)

Bug fixes and other improvements (internals):

  • Fix derivatives of texture calls when only derivatives of the "alpha"
    value are needed. #1251 (1.12.0.0)
  • When uninitialized value detection is used, fix possible "false positive"
    related to the condition variable of do-while loops. #1252 (1.12.0.0)
  • Avoid some pointless copies of output variables from a used layer to a
    downstream layer that is known to not be used. #1253 (1.12.0.0)
  • Stats now print more information about build options and runtime hardware
    capabilities. #1258 #1259 (1.12.0.1)
  • The osl and oso parsers are now re-entrant, which allows different threads
    to concurrently compile or load shaders. #969 (1.12.0.1)
  • Fix asymptomatic potential runtime optimizer bug where certain
    multi-component values were not correctly recognized as nonzero. #1266
    (1.12.0.1/1.11.9)
  • Fix optimizer bug where an output parameter that is also marked as
    [[lockgeom=0]], i.e., it gets a value from a userdata input, but also
    passes it to a downstream connection or a renderer output, could end up
    with an incorrect value if it was never read in the shader (including if
    the only times it was read were optimized away). #1295 (1.12.0.1)
  • Ensure that OSLCompiler::LoadMemoryCompiledShader returns false upon parse
    failure. #1302 (1.12.1/1.11.10)
  • During runtime optimization, don't merge layers that produce renderer
    outputs (the semantics of doing so are very fishy). #1296 (1.12.1)
  • Eliminate unnecessary error messages to stderr for broken point clouds.
    #1333 (1.12.1/1.11.13)
  • Fix undefined behavior that could result in crashes that resulted from
    the Symbol class having no virtual destructor. #1397...
Read more

OSL v1.12.6.1-RC1 release candidate

26 Sep 07:03
Compare
Choose a tag to compare
Pre-release

This is the release candidate for OSL 1.12.

Changes since the beta:

  • Fix overrunning allocation region in debug common_ancestor_between. #1577
    (1.12.6.1)
  • Fix bug where assigning an init-op param its default value as an instance
    value would get lost. #1578 (1.12.6.1)

OSL v1.12.6.0-beta

02 Sep 01:22
Compare
Choose a tag to compare
OSL v1.12.6.0-beta Pre-release
Pre-release

This is the first beta test release of OSL 1.12. The current plan is to have a true release
or or about October 1, after which the 1.12 family will be the new supported set of stable
production quality releases, and support for 1.11 will be sunset.

The full list of new features and changes for 1.12 (versus the initial release of 1.11)
is below.

Release 1.12 -- beta 1 Sep 2022 (compared to 1.11)

Big Deal Changes:

  • Batch shading: A fully operational "batch shading" support when using
    CPUs supporting the Intel AVX2 or AVX512 instruction set architectures,
    allows shading 8 or 16 points at a time, accelerated by using SIMD
    instructions. (Changes contributed by Intel.)
  • OptiX: A reasonable subset of the OSL language can run on NVIDIA GPUs
    for Cuda or OptiX-based renderers.
  • Standardized material closures: Synchronize with MaterialX on a minimum
    standard set of material closures. This is reflected in both the OSL spec as
    well as reference implementations of those closures in testrender. #1533
    #1536 #1537 #1538 #1539 #1541 #1542 #1547 #1557

Dependency and standards requirements changes:

  • The minimum (and default) compilation mode is now C++14. C++17 and 20 are
    also supported. #1362 #1369 (1.12.2)
  • Minimum compilers are now gcc 6.1 (no more support for gcc 4.8), MSVS
    2017 or newer (no more support for 2015).
  • Minimum LLVM is now 9.0. Support for LLVM 7 and 8 have ben dropped.
    #1441 (1.12.3)
  • Minimum OpenImageIO is now 2.2: Support for OIIO 2.0 and 2.1 have been
    dropped. #1426 (1.12.3)
  • Minimum OpenEXR version is now 2.3 (raised from 2.0). #1406 (1.12.3)

OSL Language and oslc compiler:

  • #pragma error "message" and #pragma warning "message" can be used to
    conditionally inject a compile-time error or warning. #1300 (1.12.1)
  • Check for errors when when writing oso files (for example, disk volume
    full). #1360 (1.12.2/1.11.14)
  • A new flavor of gettextureinfo(texturename, paramname, s, t, destination)
    allows for querying of texture metadata about the particular UDIM tile
    that will be used for particular (s,t) texture coordinates. #1398 (1.12.3)
  • Better error detection when OSL user functions write to function parameters
    that are not marked as output. #1417 (1.12.3)
  • Detect and better error message when using a type name where a variable
    identifier should be. #1457 (1.12.4.2)

OSL Standard library:

  • vector2.h is updated with a mod() function for vector2. #1312 (1.12.1/1.11.12)
  • Preliminary work for adding standard MaterialX closures. 31371 (1.12.2)
  • Fix previously-broken color conversions from RGB to xyY. #1410 (1.12.3)
  • Fully removed MaterialX shaders (get those from the MaterialX project).
    #1450 (1.12.3)
  • Fix incorrect implementation of matrix4 * vector4 in vector4.h #1513
    (1.12.5.0)

API changes, new options, new ShadingSystem features (for renderer writers):

  • Custom experimental llvm optimization levels 10, 11, 12, and 13. These
    are stripped down versions of 0, 1, 2, 3 (corresponding to clang's -O0,
    -O1, -O2, -O3) but we think for shaders are just as performant but with
    lower JIT time. These are currently experimental, but we are benchmarking
    to determine if they should be the new defaults. #1250 (1.12.0.0)
  • ShadingSystem attribute "searchpath:library" gives a searchpath for finding
    runtime-loadable implementation modules for ISA-optimized operations.
    #1310 (1.12.1)
  • Output variable placement -- now you can designate where shader outputs
    should go and the shader will put results there, instead of the app using
    find_symbol() and symbol_address after the shader is executed. #1328 (1.12.2)
  • Userdata input placement -- now you can designate where interpolated
    userdata should be copied from directly, rather then via callbacks to
    RendererServices::get_userdata(). #1391 (1.12.3)
  • Better hiding of the Matrix22 class, which was never actually part of the
    public APIs. #1480 (1.12.4.5)
  • Add ACES2065-1 and ACEScg as shading system color spaces (#1486) (1.12.4.6)
  • Expanded warnings (via enabling the "opt_warnings" attribute of the
    ShadingSystem) for operations that try to create new strings mid-shader, or
    that need to access the characters of strings mid-shader. These are only
    triggered for those cases that cannot be resolved by the end of the "runtime
    optimization" phase. #1497 (1.12.4.6)

SIMD batched shading mode:

  • Added support for masked operations to LLVMUtil. #1248 #1250 (1.12.0.0)
  • Add interface to ShadingSystem for batched execution. #1272 (1.12.0.1)
  • Add interface to batched RendererServices. #1276 (1.12.0.1)
  • Batched testshade. #1298 (1.12.1)
  • ShadingSystem plumbing to support batched execution. #1301 (1.12.1)
  • Batched analysis to figure out which symbols need to be varying or uniform,
    and which operations require masking. #1313 #1318 #1322 (1.12.1)
  • Additional infrastructure for batched analysis. #1316 (1.12.1)
  • Add implementation for BatchedBackendLLVM. #1330 (1.12.1)
  • ISA-specific modules. #1345 (1.12.2)
  • Introduction of CI testing of batched mode. #1357 #1367 (1.12.2)
  • Control flow and string ops. #1372 (1.12.2)
  • Matrix operations. #1378 (1.12.2) #1485 (1.12.4.6)
  • Batched algebraic, trig, and transcendental functions. #1385 (1.12.2)
  • Batched noise. #1394 (1.12.3)
  • Batched implementation of all color operations. #1408 (1.12.3)
  • Batched bitwise ops. #1413 (1.12.3)
  • Batched spline and spline inverse. #1422 (1.12.3)
  • Batched texture, gettextureinfo, texture3d, environment. #1436 (1.12.3)
  • Batched dictionary functionality (dict_find, etc.) #1445 (1.12.3)
  • Enable batched execution of most testsuite. #1453 (1.12.4.1)
  • Batched isnan, isinf, isfinite. #1456 (1.12.4.2)
  • Batched userdata and output placement. #1455 (1.12.4.2)
  • Batched pointcloud functions. #1464 (1.12.4.4)
  • Batched closures (#1500)

OptiX rendering:

  • Explicitly set the OptiX pipeline stack size. #1254 (1.12.0.0)
  • CI tests now at least compile and build with USE_OPTIX=1 (though not yet
    run the tests). #1281 (1.12.0.1)
  • A simple self-contained Cuda/OptiX example has been added as
    testsuite/example-cuda. #1280 (1.12.0.1)
  • Overhaul in how strings are communicated to the GPU side. #1309 (1.12.1)
  • Removal of runtime compilation of Cuda (libnvrtc dependency eliminated).
    #1309 (1.12.1)
  • Fix problems with unresolved symbols on GPU, particularly when multiple
    shaders call certain functions like printf. #1401 (1.12.3)
  • Changed prototype of osl_get_attribute callback to work properly on
    GPU. #1404 (1.12.3)
  • Fix missing hostdevice modifier on some matrix operators. #1409 (1.12.3)
  • Fix race conditions when compiling for OptiX 7. #1411 (1.12.3)
  • osl_get_attribute() uses device strings when compiling for OptiX.
    #1435 (1.12.3)
  • Fix issue with OptiX + clang 14 with duplicate symbols. #1561 (1.12.6.0)

Performance improvements:

  • Less mutex locking around use and retrieval of ColorSystem related to
    doing color transforms. #1405 (1.12.3)
  • Constant folding of startswith(). #1507 (1.12.5.0)

Bug fixes and other improvements (internals):

  • Fix derivatives of texture calls when only derivatives of the "alpha"
    value are needed. #1251 (1.12.0.0)
  • When uninitialized value detection is used, fix possible "false positive"
    related to the condition variable of do-while loops. #1252 (1.12.0.0)
  • Avoid some pointless copies of output variables from a used layer to a
    downstream layer that is known to not be used. #1253 (1.12.0.0)
  • Stats now print more information about build options and runtime hardware
    capabilities. #1258 #1259 (1.12.0.1)
  • The osl and oso parsers are now re-entrant, which allows different threads
    to concurrently compile or load shaders. #969 (1.12.0.1)
  • Fix asymptomatic potential runtime optimizer bug where certain
    multi-component values were not correctly recognized as nonzero. #1266
    (1.12.0.1/1.11.9)
  • Fix optimizer bug where an output parameter that is also marked as
    [[lockgeom=0]], i.e., it gets a value from a userdata input, but also
    passes it to a downstream connection or a renderer output, could end up
    with an incorrect value if it was never read in the shader (including if
    the only times it was read were optimized away). #1295 (1.12.0.1)
  • Ensure that OSLCompiler::LoadMemoryCompiledShader returns false upon parse
    failure. #1302 (1.12.1/1.11.10)
  • During runtime optimization, don't merge layers that produce renderer
    outputs (the semantics of doing so are very fishy). #1296 (1.12.1)
  • Eliminate unnecessary error messages to stderr for broken point clouds.
    #1333 (1.12.1/1.11.13)
  • Fix undefined behavior that could result in crashes that resulted from
    the Symbol class having no virtual destructor. #1397 (1.12.3)
  • Fix in runtime optimizer where tracking of messages and unknown messages
    relied on uninitialized variables. #1447 (1.11.17/1.12.3)
  • Stop internally using OIIO::string_view::c_str(), which will someday be
    removed. #1458 (1.12.4.2)
  • Correctly track that the backfacing() function requires N and I shader
    globals. #1462 (1.12.4.4)
  • Print all 4 levels of version numbers in help messages. #1477 (1.12.4.4)
  • Fix GPU code generation crash. #1479 (1.12.4.4)
  • Work to transition internals to use modern std::format notation for
    formatted output. #1487 #1490 (1.12.4.6) #1504 #1506 (1.12.5.0)
  • testrender improvements:
    • Fix testrender memory error on teardown. #1499 (1.12.4.6)
    • Modernize the sampler in testrender, improving quality and performance.
      #1534 (1.12.6.0)
    • Switch to cone tracing for derivatives. #1543 (1.12.6.0)
  • Fix error that prevented correct typecheck of ternary operator. #1552
    (1.12.6.0)

Internals/developer concerns:

  • Use the final keyword in certain internal classes where applicable.
    #1260 (1....
Read more