Re: Review: First pass at TruelightTransform and TruelightOp
"dbr/Ben" <b...@...>
When building from the current imageworks HEAD revision (ce75762bdfaec287db029986cdc17d6f136b7447), I get: src/core/TruelightOp.cpp: In member function ‘virtual OpenColorIO::v0::OpRcPtr OpenColorIO::v0::<unnamed>::TruelightOp::clone() const’: src/core/TruelightOp.cpp:191: error: cannot allocate an object of abstract type ‘OpenColorIO::v0::<unnamed>::TruelightOp’ src/core/TruelightOp.cpp:49: note: because the following virtual functions are pure within ‘OpenColorIO::v0::<unnamed>::TruelightOp’: src/core/Op.h:102: note: virtual void OpenColorIO::v0::Op::writeGpuShader(std::ostream&, const std::string&, const OpenColorIO::v0::GpuShaderDesc&) const src/core/TruelightOp.cpp: In function ‘void OpenColorIO::v0::CreateTruelightOps(OpenColorIO::v0::OpRcPtrVec&, const OpenColorIO::v0::TruelightTransform&, OpenColorIO::v0::TransformDirection)’: src/core/TruelightOp.cpp:385: error: cannot allocate an object of abstract type ‘OpenColorIO::v0::<unnamed>::TruelightOp’ src/core/TruelightOp.cpp:49: note: since type ‘OpenColorIO::v0::<unnamed>::TruelightOp’ has pure virtual functions make[2]: *** [src/core/CMakeFiles/OpenColorIO.dir/TruelightOp.cpp.o] Error 1 make[1]: *** [src/core/CMakeFiles/OpenColorIO.dir/all] Error 2 Using OS X 10.6.6 with GCC 4.2.1, and running "cd build && cmake ../ && make" (Truelight isn't installed/enabled) - I'm quite possibly doing something stupid, but the error seemed bug'y
...hm, I do indeed. Might have a look at this when I have a bit of spare time - could be useful in conjuction with the Houdini LUT Baker! Should be straight-forward enough, although last time I done something with cineSpaceAPI, I lost several days to an incredibly obscure linker bug *mutters* On 23/02/2011, at 6:03 PM, Malcolm Humphreys wrote:
|
|
Review: moved pystring, tinyxml, md5 into ext
Malcolm Humphreys <malcolmh...@...>
As part of cleaning up the code base for stable I have moved these things so they live in ext with everything else.
Moved pystring, tinyxml, md5 into ext, built with hidden symbol visibility so they are not part of the ABI. https://github.com/imageworks/OpenColorIO/pull/79 .malcolm
|
|
Re: Review: replaced BOOST test with OIIO test
Malcolm Humphreys <malcolmh...@...>
Now in a new pull request with cleaned up history
toggle quoted messageShow quoted text
https://github.com/imageworks/OpenColorIO/pull/78
On 01/03/2011, at 1:05 PM, Malcolm Humphreys wrote:
I'm going to start to use branches from now on, so that pull requests work as expected. btw have you thought about making a github user for the dev-list so that it could receive the pull requests?
|
|
Re: Reloading Context's env
Jeremy Selan <jeremy...@...>
Hi Ben, Thanks for the note. I was actually just looking at addressing this issue on our end! (if you had waited a week you may have never noticed). The issue is actually two-fold.
First, I really dont want to consider the envvars themselves to be mutable. (The envvars are just the context defaults.) So what we're going to do is on all the nuke nodes add a "context" group, where you have key value string pairs open by default. So in your case, you could for example set
context.name1 = "SHOT" context.value1 = "ab-123" and these will take priority over the default values, allowing you to change SHOT (or any other envvar) as needed dynamically.
The second issue is actually this one:
The nuke node's cacheIDs only are built based on the knob values, not the underlying OCIO cache ID. What this means is that if you load a common image (marci), render with a default display node, quit nuke, change the OCIO to a similar config but with a different film lut, relaunch nuke, and view marci... You'll get the old image if it's still in the disk cache. (Note you can avoid this with the clear disk cache menu option). But the better solution is to feed nuke the real cacheid, then everything will work automatically.
-- Jeremy
On Tue, Mar 1, 2011 at 3:25 AM, dbr/Ben <b...@...> wrote: Today I've configured OCIO for a small project at RSP. It was perfectly straight forward, but I encountered a problem..
|
|
Reloading Context's env
"dbr/Ben" <b...@...>
Today I've configured OCIO for a small project at RSP. It was perfectly straight forward, but I encountered a problem..
In short, with the Nuke OCIODisplay node, the env-variables are never reloaded (e.g if changed via os.environ['SHOT'] = 'ab-123') For example, I have a colourspace that uses ${SHOT}, and have configured Nuke to register OCIODisplay nodes for this. If i launch Nuke with: env SHOT='ab-123' nuke ..it applies ab-123.csp, as expected, and everything is great. Then, say I open a script from another shot, cd-654. A new Nuke instance opens, an onScriptOpen callback sets $SHOT (by parsing the script's location), and again all is great, it applies cd-654.csp The problem is when Nuke doesn't launch a new instance, but the shot changes. Most commonly by opening a script in a clean Nuke instance, e.g: env SHOT='ab-123' nuke Then "File > Open" a script from cd-654 The callback changes os.environ['SHOT'] correctly, but the LoadEnvironment call is only performed once (presumably when the first OCIO node is created). Anyway, this might just be an extremely longly worded +1 for the "flush-cache API method" ticket (can't remember the issue number, and Github's HTTP appears to be down..), but... I wonder if it's reasonable to expect the OCIODisplay node to call this method somehow? Or if it'd be something I'd have to call, e.g: def reload_context(): if nuke.thisKnob().name() == "file": # Current filename has changed cfg = PyOpenColorIO.GetCurrentConfig() cfg.context.reload() nuke.addOnKnobChange(reload_context, nodeClass = "Root") ..or if there is a better solution to this problem? - Ben
|
|
Review: replaced BOOST test with OIIO test
Malcolm Humphreys <malcolmh...@...>
I'm going to start to use branches from now on, so that pull requests work as expected. btw have you thought about making a github user for the dev-list so that it could receive the pull requests?
https://github.com/malcolmhumphreys/OpenColorIO/commit/03373f79950854266efd9ae95af2fb0907b20939 I have added some bits to the OIIO unittest.h header so that it lets us swap out our usage of Boost for unit tests, this might need to change a little when committing this back to OIIO. * replaced BOOST test with OIIO test, added OIIO_TEST_APP, OIIO_TEST_SETUP, OIIO_ADD_TEST, OIIO_CHECK_NO_THOW, OIIO_CHECK_THOW, OIIO_CHECK_CLOSE in an effort to remove boost as a build dependancy * added a OCIO static target that gets built by default * added ext/oiio with plans to move argparse and strutil to this location .malcolm
|
|
Review: Processor API Rejigger
Jeremy Selan <jeremy...@...>
Processor class now uses the pimpl pattern, so new functions can added in the future without impacting ABI compatibility. This patch maintains source code compatibility, but breaks the ABI interface. Will be worth it prior to 0.8 lockoff though.
The rest of the OCIO API used this approach, this one class was the only omission. The reason it was not done initially was the incestuous relationship between the Config and the Processor, but this is now solved by making the Processor Impl friends with the Config class. (Note that this doesn't change the existing relationship usage patterns, just clarifies it in terms of the code).
|
|
Re: Review: First pass at TruelightTransform and TruelightOp
Malcolm Humphreys <malcolmh...@...>
Hi,
Optional link dependancy, but all the profile serialisation will work the same all the time. You will only get an exception thrown when creating a processor with a truelight transform but have no support. If host apps are written correctly this shouldn't cause problems.
Depending on how many display devices are in play it's nice to have this dynamic. But most of the time the transform will be used in defining a colorspace to be used with ociobakelut into different lut formats.
From time to time new display devices come into play and truelight can be used for device -> device mapping eg. a whole heap of diffrent monitors turnup halfway through a production, which need to look the same/similar to the current set. I prefer that all the tools for modelling these transforms and baking luts are all in one place. I really want a ocio profile to describe all the color decisions on a show + ways to regenerate luts formats even ones that the ocio profile uses.
I have written it so that you can have profiles with the <!TruelightTransform> even if OCIO hasn't been built with it. In most host apps this wont be a problem as these wouldn't be used directly in production display lookups.
Agreed, I think this is a happy middle ground. Profiles are still interoperable while opening up the opportunity for 3rdParty OCIO enabled commercial apps to get truelight support if they wanted it. As I'm guessing Ben has access to the cinespace sdk so it would also be possible to add a <!CineSpaceTransform> as well in the same spirit as this one. ... I did say I wanted a plugin interface :) .malcolm
|
|
Re: Review: First pass at TruelightTransform and TruelightOp
Jeremy Selan <jeremy...@...>
I think you can add additional pull requests if they are on uniquely named 'topic' branches. How interesting! - a Truelight Transform... Only quickly glancing at the code (always dangerous), does this add Truelight as an optional or required dependency? I agree that this would be better as a plugin, but the runtime implications of plugins vs. optional compile-time functionality are essentially the same. And in this case, as we at SPI do not actively use Truelight, we'll probably want to address the compatibility implications in the short-term.
What's the advantage of using this plugin as opposed to - say - baking it into a baked 3d lut representation at ocio profile generation time? Would you expect the end user (artist) to dynamically modify the input arguments? If not, and the transforms inputs are essentially locked for each configuration, what would you think of adding this functionality not to the core library but instead to some of the helper apps?
You obviously implemented this with a workflow in mind, would you elaborate? My largest compatibility concern is that in the near future, commercial apps will be shipping with native OCIO support. (Yay!) But, this native support won't compile with Truelight functionality. So we'll essentially have a schism in support, where some people's internal pipelines support ocio+truelight, while the common commercial apps only support ocio-plain.
An OCIO transform plugin API would obviously help to alleviate this issue, but both implements open the pandora's box of profile compatibility issues. Once plugins (or optional build dependencies) are in use .ocio profiles are no longer generically interchangeable between facilities. You would have to share the profiles, all plugins, potentially plugin source, etc... And then one would have to consider the licensing aspect as well.
In the current system if you create a valid profile you know it really can be used in any app, on any OS, and easily shared (emailed!) to other vendors. -- Jeremy
On Tue, Feb 22, 2011 at 8:14 PM, Malcolm Humphreys <malcolmh...@...> wrote: Can't seem to send more than one pull request while one is in the queue.
|
|
Review: First pass at TruelightTransform and TruelightOp
Malcolm Humphreys <malcolmh...@...>
Can't seem to send more than one pull request while one is in the queue.
https://github.com/malcolmhumphreys/OpenColorIO/commit/c1abbcb4061cd55461d90dfb29a41cbf0989fc20 I can send another pull request once the Baker stuff makes it in. This transform is one that I would have added as a plugin. .malcolm
|
|
Re: Status of CSP prelut?
Jeremy Selan <jeremy...@...>
Thanks, looks great. Committed.
toggle quoted messageShow quoted text
I did a bit of superficial re-factoring; take a look if you're interested. The big changes where to separate lut parsing from evaluation. This lets us detect no-op cases earlier, and in the no-op case not even bother allocating the interpolators or 1d luts.
-- Jeremy
On Mon, Feb 14, 2011 at 7:41 PM, DBR - Ben <dbr....@...> wrote: Oh, of course - test data might be.. useful...
|
|
Re: Review: new Baker interface
Malcolm Humphreys <malcolmh...@...>
Thats cool, I'm trying to get all the remaining pieces in place before friday. So I will have a few more things over the next few days. .malcolm
On 22/02/2011, at 5:17 AM, Jeremy Selan wrote: On first glance, this looks great. Thanks! I wont have a chance to do a more thorough review until tomorrow...
|
|
Re: Review: new Baker interface
Jeremy Selan <jeremy...@...>
On first glance, this looks great. Thanks! I wont have a chance to do a more thorough review until tomorrow...
toggle quoted messageShow quoted text
-- Jeremy
On Sun, Feb 20, 2011 at 3:54 AM, Malcolm Humphreys <malcolmh...@...> wrote: https://github.com/imageworks/OpenColorIO/pull/73
|
|
Review: new Baker interface
Malcolm Humphreys <malcolmh...@...>
https://github.com/imageworks/OpenColorIO/pull/73
Replacing some pre ocio code for building luts at drd - Added new OCIO::Baker interface and initial pass at houdini lut writing - Added new app ociobakelut which is a light wrapper around OCIO::Baker - Exposed the FormatRegistry to the rest of the core so that OCIO::Baker can access format->Write() - Added GetFileFormat() which will return a format based on nickname - Modify the truelight test data so that it looks more like what comes out of truelight .malcolm
|
|
Re: Status of CSP prelut?
DBR - Ben <dbr....@...>
Oh, of course - test data might be.. useful...
toggle quoted messageShow quoted text
http://dl.dropbox.com/u/796113/ocio_temp/csp_prelut_testfile.tar.gz - Source image (JPLogLin'd marcie) - a lin_to_rec709.csp test LUT - source image with LUT burned-in, using both RSP's internal code, and the OCIOFileTransform node (..with one small tweak) It matches very closely. The only change I made is to bump the number of samples from 2**12 to 2**16 (will commit this shortly) - any difference is likely due to tetrahedral interoplation vs OCIO's linear.
On 15 February 2011 09:40, Malcolm Humphreys <malcolmh...@...> wrote:
|
|
Re: Status of CSP prelut?
Malcolm Humphreys <malcolmh...@...>
Sorry I'm working on some other stuff for the last few days in preparation for wrapping up next week. I'll be back on ocio tomorrow so I'll have a look at it then. .malcolm
On 15/02/2011, at 9:33 AM, Jeremy Selan wrote: Cool, looks good!
|
|
Re: Status of CSP prelut?
Jeremy Selan <jeremy...@...>
Cool, looks good!
toggle quoted messageShow quoted text
Would anyone have an example csp file with a prelut suitable for testing? Malcolm? Even though what you've done looks totally reasonable, I'd like to QC it against some known good results before we say it's working... ;)
-- Jeremy
On Sun, Feb 13, 2011 at 6:43 AM, dbr/Ben <b...@...> wrote:
|
|
Re: Status of CSP prelut?
"dbr/Ben" <b...@...>
Initial attempt at this, and an unrelated commit which prevents empty config sections being seralised:
On 09/02/2011, at 7:10 AM, Jeremy Selan wrote:
|
|
Re: Review: No more email reviews!
Jeremy Selan <jeremy...@...>
Actually, on further thought let's do both. Very few people get notified of pull requests, and I'd like to keep everyone on this list in the development loop. (that is it's purpose, after all).
So going ahead, I'd like to encourage review emails, to this list, that have a link to a github pull request and a quick summary. Thanks! -- Jeremy
|
|
Re: Review: No more email reviews!
"dbr/Ben" <b...@...>
Sounds good.
toggle quoted messageShow quoted text
My only concern is that discussion would end up being spread over both the mailing list, and pull request comments - it's kind of nice to have it all in one place ...but that's a pretty minor thing - I like the pull requests, they're much more accessible and visible - Ben
On 09/02/2011, at 12:01 PM, Jeremy Selan wrote:
So github's pull request mechanism has gotten a lot better since we
|
|