Skip to content

Releases: AcademySoftwareFoundation/OpenShadingLanguage

OSL 1.11.8.0

01 Oct 17:56
Compare
Choose a tag to compare

Release 1.11.8 -- 1 Oct 2020 (compared to 1.11.7)

  • Fix broken derivatives of the optional "alpha" return of texture calls
    when the normal color channels return don't have their derivatives used
    but the alpha does. #1258
  • Building vs Python: instead of defaulting to searching for python 2.7
    specifically and needing to set PYTHON_VERSION if you want (or have) a
    different one, default to whichever version is found. If multiple versions
    of Python are on the system, you can still use the PYTHON_VERSION cmake
    variable to disambiguate which one you want. #1249
  • For the experimental OptiX support, explicitly set the OptiX pipeline
    stack size (fixes some bugs). #1254
  • ShadingSystem statistics output (which is printed with testshade --help,
    by the way) now includes information about the SIMD capabilities specified
    at OSL build time, those available at runtime, and the versions of LLVM,
    OIIO, and Imath used. This should help in debugging and issue reporting
    by making it easy to know certain build time choices just by running
    testshade. #1258

OSL 1.11.7.3

01 Sep 19:13
Compare
Choose a tag to compare

Release 1.11 -- 1 Sept 2020 (compared to 1.10)

ASWF adoption changes:

  • GOVERNANCE.md and ASWF/Technical-Charter.md document the project
    governance and how the Technical Steering Committee works. An archive of
    meeting minutes can be found in ASWF/meetings. #1137 (1.11.5)
  • All the copyright notices now read "Copyright Contributors to the Open
    Shading Language Project," all files now have proper SPDX identifiers
    instead of long boilerplate notices, and 3rd party included code now has
    its licenses documented in the LICENSE-THIRD-PARTY.md file. #1145 (1.11.5)
  • The official mail list has switched to https://lists.aswf.io/g/osl-dev
    #1167

Dependency and standards changes:

  • LLVM 7.0-10.0: Support for LLVM 4, 5, and 6 have been dropped. Support
    for LLVM 8, 9, and 10 have been added. Note that using LLVM 10 requires
    building for C++14 or later, because LLVM 10's APIs no longer support
    C++11. #981 #1046 #1058 #1128 #1152 #1162 #1206
  • OpenImageIO 2.0-2.2: Support for OIIO 1.8 has been dropped; a minimum of
    OIIO 2.0 is needed to build OSL. (Additionally, a minimum of OIIO 2.1 is
    strongly recommended for anyone using the SIMD batch shading mode.) #1038
    (1.11.0)
  • CMake minimum is now 3.12. #1072 (1.11.1)

OSL Language and oslc compiler:

  • New syntax to reference color and point/vector/normal components as
    named struct components, such as C.r, C.g, C.b, or P.x, P.y, P.z.
    #1049 (1.11.0)
  • oslc compilation speed-ups with faster retrieval of source lines when
    pasted into oso output. #938 (1.11.0)
  • Writing to function parameters not marked as output was only
    recently properly recognized as an error (it was documented as illegal
    all along). Now we demote to a warning, treating it as a full error was
    too disruptive. #944 (1.10.3/1.11.0)
  • Improve oso output efficiency. #938 (1.10.3/1.11.0)
  • Fix bug related to counting the proper number of values used for
    array default value initialization. #948 (1.10.3/1.11.0)
  • Slight modification to the formatting of floating point values in the oso
    to ensure full precision preservation for float values. #949 (1.10.3/1.11.0)
  • Fix crash when encountering empty-expression for (;;). #951 (1.10.3/1.11.0)
  • Fix bug in code generation of certain while loops that directly
    tested a variable as a zero/nonzero test, such as:
        i = 3;
        while (i)
            --i;
    
    whereas the following had worked (they should have been identical):
        i = 3;
        while (i != 0)
            --i;
    
    #947 (1.10.3/1.11.0)
  • Improve warnings about ill-advised use of the comma operator.
    #978 (1.10.4/1.11.0)
  • Fix an assertion/crash when passing initialization-lists as parameters to
    a function, where the function argument expected was as array. #983
    (1.10.4/1.11.0)
  • Fix an assertion/crash for certain type constructors of structs, where the
    struct name was not declared. (This is an incorrect shader, but of course
    should have issued an error, not crashed.) #988 (1.10.4/1.11.0)
  • Improve oslc type error detection for variable declarations with init
    expressions. Note that this may flag some warnings and errors that went
    undetected before, involving initialization assignments of incompatible
    types. #991, #993 (1.10.5/1.11.0)
  • Allow shader parameters with empty brace initializers, such as:
        shader foo ( float myarray[] = {} )
    
    Un-lengthed arrays, if they aren't connected or given a concrete instance
    value, still default to length 1 (we don't allow 0-length arrays, that's a
    whole other can of worms), but this is now treated as equivalent to
    = { default_value } (0 for int or float, "" for string). #967 (1.11.0)
  • More correct handling of escaped string literals (such as "\tfoo\n")
    in string and also in string metadata. #1073 (1.11.1)
  • New command line argument oslc --embed-source embeds the preprocessed
    source code in the .oso file itself (helpful for certain debugging
    situations). #1081 (1.11.3)
  • oslc can generate dependency files, honoring the -M, -MM, -MD, -MMD, -MF,
    and -MT flags with similar meanings to gcc and clang. #1085 #1107 (1.11.3)
    Example:
        $ oslc -MMD test.osl
        Compiled test.osl -> test.oso
        $ cat test.d
        test.oso: test.osl \
            dist/macosx/share/OSL/shaders/color2.h \
            dist/macosx/share/OSL/shaders/stdosl.h
    
  • New shader-level metadata: [[ int range_checking=0 ]] disables the
    automatic generation of range checking code for the shader. #1112 (1.11.4)
  • Support has been added for pointcloud_get() to be able to retrieve
    per-point string data from point clouds. #1157 (1.11.5)
  • Shader output parameters that are marked [[ int lockgeom=1 ]] will
    automatically bind to any identically-named userdata, just like non-output
    parameters have always done. #1200 (1.11.6)

OSL Standard library:

  • Extend linearstep() and smooth_linearstep() to work with color, point,
    vector, and normal types (previously restricted to float). #994
    (1.10.5/1.11.0)
  • Extend transformc() to understand translating between linear and sRGB
    color spaces. #1013 (1.11.0)
  • cbrt() cube root was added to the standard library. #1164 #1166 (1.11.6)

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

  • ShadingSystem::convert_value() will now allow promotion of int or
    float to float[4]. #940 (1.11.0)
  • Removed the varieties of RendererServices::texture(), texture3d(), and
    environment() that lack the errormessage parameter and had been marked
    as deprecated since OSL 1.8. #945 (1.11.0)
  • Deprecate the auto-allocation of contexts and per-thread-info. Certain
    calls that took a Context* pointer that were allowed to be NULL now
    by convention require the renderer to pass a valid context. #958 (1.11.0)
  • ShadingSystem: thread-safe/reentrant shader specification via new
    varieties of Parameter(), Shader(), ConnectShaders(), and
    ShaderGroupEnd() that take an explicit ShaderGroup reference and are
    therefore "stateless" and thread-safe. If you exclusively use these new
    methods for shader specification, it's possible for multiple threads to
    specify shader groups simultaneously. #984, #985, #986, #1000 (1.11.0)
    #1067 (1.11.1)
  • New ShadingSystem options:
    • "opt_warnings" enables warnings about things that couldn't be
      optimized and may be performance issues. #1010 (1.11.0)
    • "gpu_opt_error" enables full error status of the subset of those
      warnings that are also hard no-go's when executing on GPUs. #1010
      (1.11.0)
    • "lazyerror", if set to 0, will unconditionally (and non-lazily) run
      any shader layers that still contain error() calls after
      optimization, so that error messages can't be elided by optimizations
      causing the layer to be eliminated or never run. When "opt_warnings"
      is enabled, warnings will be issued about shaders that couldn't
      optimize away all of their error calls. Note that the default value is
      1, giving the old behavior or lazily evaluating shader layers that
      contain error calls. #1191 (1.11.5)
  • RendererServices::get_texture_handle() has changed slightly to require
    a ShadingConntext* parameter, and get_texture_info() has changed to
    have a parameter allowing the caller to provide a texture_thread_info
    handle and a context, as well as to provide a pointer to a ustring where
    error messages should be placed. #1033 (1.11.0)
  • The LLVM JIT optimization level (controlled by the llvm_optimize shading
    system attribute) now defaults to 1, not 0. That should be the best
    performance while still having reasonable JIT times. #1114 (1.11.4)
  • We no longer automatically build the MaterialX shaders (you need to set
    build option OSL_BUILD_MATERIALX to ON). This will eventually be deprecated
    entirely. #1136 (1.11.5)
  • Helper varieties of ShadingSystem::Parameter() and ReParameter() that
    handle the common cases of a single float, int, or string. #1195 #1196
    (1.11.6)
  • ShaingSystem::optimize_group() now takes an optional parameter that
    allows the caller to only do the optimize step without the JIT step.
    #1226 (1.11.71)

Continued work on experimental SIMD batched shading mode:

  • Continued work on SIMD-friendly math and noise: #1108 (1.11.4)
  • Support in LLVM_Util for various wide (SIMD) data types. #1175 (1.11.6)

Continued work on experimental OptiX rendering:

  • Build option USE_OPTIX=1 enable experimental OptiX support.
  • testshade and testrender now take --optix flags to run tests on OptiX.
    You can also force either to run in OptiX mode with environment variable
    TESTSHADE_OPTIX=1. #996 #1001 #1003
  • Various fixes to how strings are represented on the Cuda side. #973 (1.11.0)
  • More complete support of all the noise varieties. #980 (1.11.0)
  • Got spline() function working. #974 #1011 (1.11.0)
  • Work towards getting texture calls working. #974 (1.11.0)
  • printf works for multiple values. #1007 (1.11.0)
  • Work on color-related functions. #1012 (1.11.0)
  • Support for native OSL closures. #1028 #1029 (1.11.0)
  • Work on matrix ops. #1054 (1.11.1)
  • Allow init ops. #1059 (1.11.1)
  • Fixes to string closure params. #1061 (1.11.1)
  • Add support for OptiX 7 #1111 #1203 (1.11.6)

Performance improvements:

  • Constant fold array accesses even if they are out of bounds. #1035 (1.11.0)
  • Speed up the concat() OSL function, the new implementation is very
    careful to avoid extra copies and unnecessary allocations. #1104,#1105
    (1.11.3)
  • Shader performance improved slightly by better inlining during the JIT.
    #1114 (1.11.4)
  • Range checking of matrix component access is skipped for certain cases
    where it was unnecessary. #1174 (1.11.6)
  • LLVM JIT+optimize t...
Read more

OSL 1.11.7.2-RC2

30 Aug 16:45
Compare
Choose a tag to compare
OSL 1.11.7.2-RC2 Pre-release
Pre-release

Release candidate for 1.11. The branch is frozen for release. If no critical bugs are identified, we anticipate a full release on Sept 1, 2020.

OSL 1.11.7.1-RC1

19 Aug 05:53
Compare
Choose a tag to compare
OSL 1.11.7.1-RC1 Pre-release
Pre-release

Release candidate for 1.11 release. This branch is now frozen for all but critical bugs, with an expected 1.11 release on 1 Sept 2020.

OSL 1.10.13

01 Aug 06:47
Compare
Choose a tag to compare

Release 1.10.13 -- 1 Aug 2020 (compared to 1.10.12)

  • Small changes to build cleanly against OIIO 2.2.
  • Fixes to build against fmtlib 7.0. #1156 #1219
  • Docs fixes related to matrix constructors with coordinate systems names.

OSL 1.11.7.0 beta

02 Aug 00:41
Compare
Choose a tag to compare
OSL 1.11.7.0 beta Pre-release
Pre-release

We have now branched for a 1.11 release. It was December, 2018 when we first released 1.10, and this is much longer between major releases than we prefer. We apologize and will do better next time.

"Release-1.11.7.0-beta" is the first beta release of the 1.11 family. (Note that the version numbers designated 1.11.0-1.11.6 were earlier developer snapshots.) The branch marker RB-1.11 is the tip of development/merging of future 1.11.x releases, which may add features destined for later 1.11.x patch releases, but (certainly after the beta period is over) will avoid any changes that break backwards API, ABI, or linkage compatibility within the 2.2 family.

My goal is to have a "beta" period of about two weeks for last minute changes, then one or more "release candidates", culminating in a final official 1.11 release on or close to September 1. Please be careful with compatibility issues during the beta period, because until we call it a "release candidate," there may still be minor changes to ABI compatibility as we add last-minute important items. I strongly encourage you to test the beta while there is plenty of time to fix things before a release. Please let us know if you find any bugs or build problems.

After the official 1.11 release, 1.10 will be considered obsolete, and further patches to 1.10 (if any) will only include the most critical bug fixes, and likely only if specifically requested.

Henceforth, 'master' will be home to development for future major releases (presumed 1.12, or maybe 2.0 depending on how much changes?), and thus makes no guarantees at all about compatibility breaks.

The preliminary release notes (subject to revision before final release) are as follows:

Release 1.11 -- 1 Sept 2020 (compared to 1.10)

ASWF adoption changes:

  • GOVERNANCE.md and ASWF/Technical-Charter.md document the project
    governance and how the Technical Steering Committee works. An archive of
    meeting minutes can be found in ASWF/meetings. #1137 (1.11.5)
  • All the copyright notices now read "Copyright Contributors to the Open
    Shading Language Project," all files now have proper SPDX identifiers
    instead of long boilerplate notices, and 3rd party included code now has
    its licenses documented in the LICENSE-THIRD-PARTY.md file. #1145 (1.11.5)
  • The official mail list has switched to https://lists.aswf.io/g/osl-dev
    #1167

Dependency and standards changes:

  • LLVM 7.0-10.0: Support for LLVM 4, 5, and 6 have been dropped. Support
    for LLVM 8, 9, and 10 have been added. Note that using LLVM 10 requires
    building for C++14 or later, because LLVM 10's APIs no longer support
    C++11. #981 #1046 #1058 #1128 #1152 #1162 #1206
  • OpenImageIO 2.0-2.2: Support for OIIO 1.8 has been dropped; a minimum of
    OIIO 2.0 is needed to build OSL. (Additionally, a minimum of OIIO 2.1 is
    strongly recommended for anyone using the SIMD batch shading mode.) #1038
    (1.11.0)
  • CMake minimum is now 3.12. #1072 (1.11.1)

OSL Language and oslc compiler:

  • New syntax to reference color and point/vector/normal components as
    named struct components, such as C.r, C.g, C.b, or P.x, P.y, P.z.
    #1049 (1.11.0)
  • oslc compilation speed-ups with faster retrieval of source lines when
    pasted into oso output. #938 (1.11.0)
  • Writing to function parameters not marked as output was only
    recently properly recognized as an error (it was documented as illegal
    all along). Now we demote to a warning, treating it as a full error was
    too disruptive. #944 (1.10.3/1.11.0)
  • Improve oso output efficiency. #938 (1.10.3/1.11.0)
  • Fix bug related to counting the proper number of values used for
    array default value initialization. #948 (1.10.3/1.11.0)
  • Slight modification to the formatting of floating point values in the oso
    to ensure full precision preservation for float values. #949 (1.10.3/1.11.0)
  • Fix crash when encountering empty-expression for (;;). #951 (1.10.3/1.11.0)
  • Fix bug in code generation of certain while loops that directly
    tested a variable as a zero/nonzero test, such as:
        i = 3;
        while (i)
            --i;
    
    whereas the following had worked (they should have been identical):
        i = 3;
        while (i != 0)
            --i;
    
    #947 (1.10.3/1.11.0)
  • Improve warnings about ill-advised use of the comma operator.
    #978 (1.10.4/1.11.0)
  • Fix an assertion/crash when passing initialization-lists as parameters to
    a function, where the function argument expected was as array. #983
    (1.10.4/1.11.0)
  • Fix an assertion/crash for certain type constructors of structs, where the
    struct name was not declared. (This is an incorrect shader, but of course
    should have issued an error, not crashed.) #988 (1.10.4/1.11.0)
  • Improve oslc type error detection for variable declarations with init
    expressions. Note that this may flag some warnings and errors that went
    undetected before, involving initialization assignments of incompatible
    types. #991, #993 (1.10.5/1.11.0)
  • Allow shader parameters with empty brace initializers, such as:
        shader foo ( float myarray[] = {} )
    
    Un-lengthed arrays, if they aren't connected or given a concrete instance
    value, still default to length 1 (we don't allow 0-length arrays, that's a
    whole other can of worms), but this is now treated as equivalent to
    = { default_value } (0 for int or float, "" for string). #967 (1.11.0)
  • More correct handling of escaped string literals (such as "\tfoo\n")
    in string and also in string metadata. #1073 (1.11.1)
  • New command line argument oslc --embed-source embeds the preprocessed
    source code in the .oso file itself (helpful for certain debugging
    situations). #1081 (1.11.3)
  • oslc can generate dependency files, honoring the -M, -MM, -MD, -MMD, -MF,
    and -MT flags with similar meanings to gcc and clang. #1085 #1107 (1.11.3)
    Example:
        $ oslc -MMD test.osl
        Compiled test.osl -> test.oso
        $ cat test.d
        test.oso: test.osl \
            dist/macosx/share/OSL/shaders/color2.h \
            dist/macosx/share/OSL/shaders/stdosl.h
    
  • New shader-level metadata: [[ int range_checking=0 ]] disables the
    automatic generation of range checking code for the shader. #1112 (1.11.4)
  • Support has been added for pointcloud_get() to be able to retrieve
    per-point string data from point clouds. #1157 (1.11.5)
  • Shader output parameters that are marked [[ int lockgeom=1 ]] will
    automatically bind to any identically-named userdata, just like non-output
    parameters have always done. #1200 (1.11.6)

OSL Standard library:

  • Extend linearstep() and smooth_linearstep() to work with color, point,
    vector, and normal types (previously restricted to float). #994
    (1.10.5/1.11.0)
  • Extend transformc() to understand translating between linear and sRGB
    color spaces. #1013 (1.11.0)
  • cbrt() cube root was added to the standard library. #1164 #1166 (1.11.6)

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

  • ShadingSystem::convert_value() will now allow promotion of int or
    float to float[4]. #940 (1.11.0)
  • Removed the varieties of RendererServices::texture(), texture3d(), and
    environment() that lack the errormessage parameter and had been marked
    as deprecated since OSL 1.8. #945 (1.11.0)
  • Deprecate the auto-allocation of contexts and per-thread-info. Certain
    calls that took a Context* pointer that were allowed to be NULL now
    by convention require the renderer to pass a valid context. #958 (1.11.0)
  • ShadingSystem: thread-safe/reentrant shader specification via new
    varieties of Parameter(), Shader(), ConnectShaders(), and
    ShaderGroupEnd() that take an explicit ShaderGroup reference and are
    therefore "stateless" and thread-safe. If you exclusively use these new
    methods for shader specification, it's possible for multiple threads to
    specify shader groups simultaneously. #984, #985, #986, #1000 (1.11.0)
    #1067 (1.11.1)
  • New ShadingSystem options:
    • "opt_warnings" enables warnings about things that couldn't be
      optimized and may be performance issues. #1010 (1.11.0)
    • "gpu_opt_error" enables full error status of the subset of those
      warnings that are also hard no-go's when executing on GPUs. #1010
      (1.11.0)
    • "lazyerror", if set to 0, will unconditionally (and non-lazily) run
      any shader layers that still contain error() calls after
      optimization, so that error messages can't be elided by optimizations
      causing the layer to be eliminated or never run. When "opt_warnings"
      is enabled, warnings will be issued about shaders that couldn't
      optimize away all of their error calls. Note that the default value is
      1, giving the old behavior or lazily evaluating shader layers that
      contain error calls. #1191 (1.11.5)
  • RendererServices::get_texture_handle() has changed slightly to require
    a ShadingConntext* parameter, and get_texture_info() has changed to
    have a parameter allowing the caller to provide a texture_thread_info
    handle and a context, as well as to provide a pointer to a ustring where
    error messages should be placed. #1033 (1.11.0)
  • The LLVM JIT optimization level (controlled by the llvm_optimize shading
    system attribute) now defaults to 1, not 0. That should be the best
    performance while still having reasonable JIT times. #1114 (1.11.4)
  • We no longer automatically build the MaterialX shaders (you need to set
    build option OSL_BUILD_MATRIALX to ON). This will eventually be deprecated
    entirely. #1136 (1.11.5)
  • Helper varieties of ShadingSystem::Parameter() and ReParameter() that
    handle the common cases of a single float, int, or string. #1195 #1196
    (1.11.6)

Continued work on experimental SIMD batc...

Read more

OSL 1.10.12

02 Jul 07:04
Compare
Choose a tag to compare

Release 1.10.12 -- 1 Jul 2020 (compared to 1.10.11)

  • Fix bug in regex_search and regex_match where the optimizer could
    misunderstand which parameters were written. #1186
  • Fix warnings when building with gcc9 or gcc10.
  • Build cleanly against Qt5.15. #1204

OSL 1.10.11

02 Jun 16:42
Compare
Choose a tag to compare

Release 1.10.11 -- 1 Jun 2020 (compared to 1.10.10)

  • Fixes to support building against LLVM 9 on some distributions. #1171
  • When building against LLVM 10, enforce requirement for C++14 with
    appropriate warning when using C++11. #1135
  • Switch to using CMAKE_CXX_STANDARD as the main way to request particular
    C++ standard versions. (USE_CPP should continue to work, though.)
  • Fixes to MINGW compile, and make sure all stream file I/O is UTF-8 safe.
    #1188

OSL 1.10.10

09 May 22:07
Compare
Choose a tag to compare

Release 1.10.10 -- 9 May 2020 (compared to 1.10.9)

  • Support for building against LLVM 10.0. #1128 #1162
    Note that LLVM 10 can only be used if you are building OSL with C++14
    or newer.
  • Change default of OSL_BUILD_MATERIALX to OFF. This will probably be
    deprecated entirely for 1.11's (or 2.0's) final release. But in the mean
    time, we have drifted out of sync with MX, which has their own copies of
    this now, so we're disabling building of these shaders by default.

OSL 1.10.9

02 Feb 05:24
Compare
Choose a tag to compare

Release 1.10.9 -- 1 Feb 2020 (compared to 1.10.8)

  • Windows fix for incorrectly interpreting paths to oslc.exe as if they were
    "escaped" strings -- for example, "c:\path\to\new\oslc" should not be
    interpreted as "c:\path<tab>o<newline>ewoslc". #1101
  • Speed up OSL concat() function. #1103