Skip to content
Branch: master
Commits on Aug 16, 2019
  1. Documentation touch-ups

    lgritz committed Aug 16, 2019
    Includes slight reformatting of the license text to make it correctly
    be auto-recognized by GitHub and have the license displayed. The content
    hasn't changed, it's still the 3-clause BSD, but it's *exactly* copied
    from what GitHub wants to match against.
Commits on Aug 15, 2019
  1. Bump version after dev tag

    lgritz committed Aug 15, 2019
  2. Fix `exit` not being recognized as basic block end (#1051)

    marsupial authored and lgritz committed Aug 15, 2019
    Stale assignment elision was broken in the presence of `exit`.
    In general
        a = 10;
        ... stuff not involving `a`...
        a = 20;
    sees two assignments within the same basic block, and because `a` is not used between the two assignments, the first one can be eliminated.
    But this optimization ("stale assignment elision") was wrong for this modified code:
        a = 10;
        return;  // note: `return` in the main shader body is the same as `exit()`
        a = 20;
    because the `return` changes things -- the second assignment won't be executed, and therefore should not retroactively eliminate the earlier assignment. The correct final value of a is indeed 10.
    The problem boiled down to a bug in OSOProcessorBase::find_basic_blocks, where the `exit` op was simply not recognized as terminating its basic block (since it is a jump).
Commits on Aug 9, 2019
  1. docs for tag

    lgritz committed Aug 9, 2019
  2. Allow aggregate component access with .[xyzrgb] (#1049)

    lgritz committed Aug 9, 2019
    Spatial geometry triples (point, vector, normal) now support A.x, A.y,
    A.z as synonyms for A[0], A[1], A[2], respectively. It's not the
    notation I prefer (obviously, or I would have done it 25 years ago),
    but other people really dig it, so fine by me.
    Colors now support A.r, A.g, A.b as synonyms for A[0], A[1], A[2],
    respectively.  To be honest, this worries me a little because I fear
    we will regret it if we ever shift to supporting spectral rendering
    (and the components will not necessarily represent red, green, and
    blue, and may have arbitrary number). But again, people really seem to
    like this, so fine, but don't come complaining to me in a few years
    when your shaders all need rewriting for your new spectral renderer.
    In both cases, it's for direct reference to lvalues (variables, including
    references passed as arguments to functions):
        val = P.x;   // yes
        P.y = val;   // yes
        function_with_float_param (P.z);   // yes
    But you can't use this notations on arbitrary expressions:
        val = function_returning_color().r;   // no
        val = (P + N).y;                      // no, double ick
    We are also NOT supporting "swizzling."
    Note that this is strictly an oslc-side change, underneath C.r compiles
    to the same ops as C[0] always did, so newly compiled shader using this
    new syntax can be executed with old renderers/shading engines.
  3. texture "missingalpha" optinal param generated the wrong IR and crash…

    lgritz committed Aug 9, 2019
    …ed. (#1044)
Commits on Aug 5, 2019
  1. Fix using macroses for Windows targets (#1048)

    Alexpux authored and lgritz committed Aug 5, 2019
Commits on Aug 2, 2019
  1. Some fixes for mingw compiler (#1047)

    Alexpux authored and lgritz committed Aug 2, 2019
    * Fix find pugixml 1.9
    * Allow to properly export symbols by mingw compiler
    * Fix linking osltoy with liboslexec
Commits on Jul 29, 2019
  1. Fix typo in cmake message

    lgritz committed Jul 29, 2019
Commits on Jul 24, 2019
  1. Added movies

    lgritz committed Jun 20, 2019
  2. QFontMetrics.width() is marked as deprecated in new Qt. (#1043)

    lgritz committed Jul 24, 2019
    Keep warnings about marked-as-deprecated methods from breaking the OSL build.
    On OSX, Homebrew just upgraded to a new enough Qt to see this breakage.
    Also fix install_homebrew_deps to make sure Travis OSX test can find
    Qt so it builds osltoy. (It wasn't before, so this build break would
    not have been found by Travis-CI.)
Commits on Jul 23, 2019
  1. Fix crash in optimize_group when compiling transform command for Opti…

    DeclanRussell authored and lgritz committed Jul 23, 2019
    …X and added OptiX support for a subset of matrix ops #1041 (#1042)
Commits on Jul 16, 2019
  1. Define FMT_DEPRECATED for CUDA, as NVCC doesn't like deprecated attri…

    marsupial authored and lgritz committed Jul 16, 2019
    …butes (#1039)
Commits on Jul 8, 2019
  1. Bump minimum OIIO version to 2.0 (#1038)

    lgritz committed Jul 8, 2019
  2. Avoid creating tiny std::vectors during LLVM code generation where po…

    fpsunflower committed Jul 4, 2019
    Refactor call_function methods to use a span instead of raw pointers to unify disparate idioms
    Simplify llvm_call_function to use a short vector as it is never used on very long arrays
Commits on Jul 4, 2019
  1. Fix sign/unsigned comparsison warning/error (#1037)

    marsupial authored and lgritz committed Jul 4, 2019
  2. Constant fold array access even if they are out-of-bounds

    fpsunflower committed Jul 3, 2019
Commits on Jul 3, 2019
  1. Avoid creating tiny std::vectors during constant folding where possible

    fpsunflower committed Jul 2, 2019
    Refactor insert_code method to use a span instead of a vector to facilitate the more efficient idiom
Commits on Jul 2, 2019
  1. Change the API of RendererServices::get_texture_handle to also provid…

    fpsunflower committed Jul 2, 2019
    …e a texture_thread_info handle (#1033)
    Remove get_texture_perthread from RendererServices to reduce confusion
    If a texture_handle is not provided to the texture related calls, attempt to get one and then always use the texture_handle version of the call since it also accepts a texture_thread_info
    Always fetch a texture_handle before trying to make a call into the OIIO texture system so that texture_thread_info can be consistently used
    Constant fold gettextureinfo even if the call would fail (and generate an error message to maintain runtime behavior)
    Constant fold gettextureinfo even for arrays (did not require extra code)
Commits on Jun 28, 2019
  1. Respect lockgeom default when building from commands. Remove ASSERT d…

    marsupial authored and lgritz committed Jun 28, 2019
    …uring ReParameter (#1032)
Commits on Jun 19, 2019
  1. ASTNode: Make long chains of nodes (though m_next) free serially, not…

    lgritz committed Jun 19, 2019
    … recursively. (#1031)
    Avoids stack overflow for hideously complicated parse trees.
Commits on Jun 18, 2019
  1. Fix OSLQuery::init return value (#1030)

    marsupial authored and lgritz committed Jun 18, 2019
Commits on Jun 14, 2019
  1. OptiX closure param fix (#1029)

    timgrant authored and lgritz committed Jun 14, 2019
    * Add OSL namespace to optix::Exception to fix compile error.
    * Fix illegal closure param type check when assigning initial values to OptiX params.
Commits on Jun 13, 2019
  1. Add support for native OSL closures in OptiX (#1028)

    DeclanRussell authored and lgritz committed Jun 13, 2019
    The current implementation of the OptiX run time defines its own closure structures that replicate that of the native OSL closure structures. This is likely just legacy code as it was easier to use OptiX types like float3 than add support the native OSL types. Removing this duplication and using the native OSL closures improves the maintainability of the code as you will no longer need duplicate logic if the structures ever change.
    * Add support for native OSL closures in OptiX
    * Ensure Imathx.h is included before OpenImageIo headers in device code
    * Add more intelligent memory alignment logic
    * Remove unnecessary ustring.h include
Commits on May 24, 2019
  1. Allow shader params with empty brace inits: (#967)

    lgritz committed May 24, 2019
    Allow shader params with empty brace inits:
        type myarray[] = {},
        mystruct S = {}
    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).
    And it works for structs, too, just means to initialize all the elements
    to is obvious (0, "") default values.
    It's syntactic sugar, but it removes some clutter for people who want to
    have shader parameters that are arrays of undetermined length (and thus
    are probably expected to have a runtime-assigned instance value or be
    conntected to an output of an earlier layer within the shader group),
    removes the requirement for spelling out an initializing value that
    won't be used anyway.
  2. Improve errors for badly formed serialized shaders (#1026)

    lgritz committed May 24, 2019
    When using the variety of ShaderGroupBegin that takes a serialized
    description of the group, errors in the individual 'shader', 'param',
    or 'connect' commands were not bubbled up into a proper error message
    for the ShaderGroupBegin call itself, nor caused it to return null
    as the group.
    Be more diligent about printing the group name with all group setup
    errors. This includes in testshade, no longer accidentally clearing the
    group name.
Commits on May 22, 2019
  1. Port FindOpenEXR.cmake fixes from OIIO (#1022)

    lgritz committed May 22, 2019
Commits on May 14, 2019
  1. Install crash handlers with stack trace dump (#1019)

    lgritz committed May 14, 2019
    Recently, OIIO sysutil.h added a way to set up a stack trace dump in
    case of crash. Use those in OSL binary commands (it does not
    automatically happen from the library). This only work with a new
    enough version of OIIO, and only if that OIIO was compiled with a new
    enough boost to contain boost's stack trace library (>= 1.65).
    This is primarily to help developers figure out what's going on with
    CI tests fail on remote machines -- you can't catch it in the
    debugger, but maybe the stack trace will give you the clue you need as
    to what's going on. I definitely don't expect it to be very helpful if
    the crash happens in the JITed shader. But if the crash is in our code,
    maybe it will help the detective work.
    To that end, we also change the testsuite so that when a
    command fails entirely, print its console output.
    And bump appveyor boost to 1.69, so that it's new enough to support
    the stack trace library.
Commits on May 13, 2019
  1. Enable OptiX on many tests (#1018)

    lgritz committed May 13, 2019
    Add 'OPTIX' label files to a whole bunch of testsuite tests to force
    them to run in OptiX mode also.
    Make sure optix tests run both optimized and unoptimized.
    Moany tests still ran 'testsuite -g 2 2' to run at 4 points as if on a
    grid. This was an artifact from the early days when we had a "batched
    shader bytecode interpreter" that handled "varying" specially and
    needed to run on multiple points at once to ensure that they were
    shading entire grids properly. But once we switched to LLVM JIT and a
    "single point shading model", that was no longer necessary. But never
    had a good reason to change them before.
    Lots of tests "failed" OptiX mode just because printf wasn't working
    correctly for multiple points. That's silly, we can test printf interleaving
    separately and with one test. No need to make passing dozens or hundreds
    of others contingent on that one problem, rather than hinging on whether
    OptiX path can really implement the feature that the test was designed
    to demonstrate.
    So for a bunch of tests, I changed them from running 'testsuite -g 2 2' to
    just running on one point, and enabled OptiX mode to get a pass.
    All in all now, I believe we pass 37 tests in OptiX mode (both optimized
    and not optimized). We will try to grow this week by week.
  2. Windows build (#1020)

    DeclanRussell authored and lgritz committed May 13, 2019
    * Allow OSL to build with USE_LLVM_BITCODE enabled on windows
    * Explicitly call python script from cmake python
    * Added NOMINMAX define required before including optix_world.h on windows
Commits on May 11, 2019
  1. CPU & Optix "rgb" <=> "sRGB" color transformation (#1013)

    marsupial authored and lgritz committed May 11, 2019
    * Add sRGB <-> linear routines
    * Remove typed overrides for RGB <-> XYZ
    * Update transformc test
    * Add linear to rgb clauses
Commits on May 10, 2019
  1. __attribute__((aligned())) does not work on Windows (no error is give…

    ThiagoIze authored and lgritz committed May 10, 2019
    …n even though alignment never happens). Use C++11 alignas for cross-platform compatibility. (#1017)
Commits on May 6, 2019

    lgritz committed May 6, 2019
Commits on May 4, 2019
  1. Optix compilation of opcolor.cpp (#1012)

    marsupial authored and lgritz committed May 4, 2019
    * Add flipv parameter to grid-renderer.
    * Fix shutdown problem
    * Refactor opcolor for GPU devices.
    * Explicit instantiation for transformc
You can’t perform that action at this time.