Comments (3)
Yes, the problem is ctlrender's handling of scaling values when writing various file formats. There is a note warning about this on lines 69-80:
// **NOTE**: The scaling step below is NOT a part of the ACESlog conversion.
//
// This step is only required when using ctlrender to process the images.
// When ctlrender sees a floating-point file as the input and an integral file
// format as the output, it assumes that values out the end of the transform
// will be floating point, and so multiplies the output values by
// (2^outputBitDepth)-1. Therefore, although the values of acesLog16i are the
// correct integer values, they must be scaled into a 0-1 range on output
// because ctlrender will scale them back up in the process of writing the
// integer file.
// The ctlrender option -output_scale could be used for this, but it
// currently this option does not appear to function correctly.
const float scalar = pow(2.,16)-1.;
rOut = acesLog16i[0] / scalar;
gOut = acesLog16i[1] / scalar;
bOut = acesLog16i[2] / scalar;
To get what you're after, either remove the scalar or set it equal to 1.
from aces-dev.
For my use-case it's the other way round. I like that aces_to_aceslog16i.ctl scles the values to a 0-1 range but don't understand why on the other side acesLog16i_to_aces.ctl is expecting values in the integer range 0-65535.
So it either works with acesLog files written from ctlrender (for testing purpose) nor with a chain of "-ctl aces_to_acesLog16i.ctl -ctl acesLog16i_to_aces.ctl" which I would expect to be a unity function when combined.
I'm using modified acesLog and acesProxy CTL files now anyway but I think it should be one of two way:
- acesLog16i_to_aces is also expecting an input scale of 0-1 or
- aces_to_acesLog16i converts to 0-65535.
Just to have a consistent transform chain. And maybe an information somewhere for people looking into this. But just getting a fully black image when converting through acesLog16i_to_aces due to it's different input range shouldn't happen I'd say?
from aces-dev.
In ACES Version 1.0, ACESlog is replaced with ACEScc.
from aces-dev.
Related Issues (20)
- Column title appears to be incorrectly copied from previous table HOT 1
- Output Transforms 1.1 - White Point Sim HOT 3
- HLG EOTF from ITU-R BT.2100-1 is used not ITU-R BT.2100-2 HOT 2
- Order of operations for limiting to primaries and CAT causes unwanted clipping HOT 2
- Broken link in AMF README
- D65 to D60 CAT is missing from InvODT.Academy.P3DCI_D65sim_48nits.ctl
- ACES to ADX transform HOT 1
- ACEScct to ACES spec vs code discrepancy HOT 2
- ACES in Blender causes errors during .obj file import
- Many "ACEStransformID" do not honour "S-2014-002" specification. HOT 12
- Categorise the "outputTransforms" by display types. HOT 1
- Clamp in ACEScsc.ACES-to-ACEScg.ctl HOT 2
- Some CTL transform files are missing descriptions. HOT 1
- Direction comment should be removed HOT 1
- Usage comment inapplicable to inverse LMT HOT 1
- broken link on https://github.com/ampas/aces-dev/tree/dev/transforms/ctl/idt/vendorSupplied/panasonic HOT 1
- IDT "Blackmagic Film Wide Gamut (Gen 5)" does not work (wrong matrix variable) HOT 1
- Inconsistent and possibly incorrect `ACEStransformID` for ARRI LogC4 HOT 6
- Typo in DRAFT P-2013-001
- Code duplication in "ACESlib.Tonescales.ctl". HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aces-dev.