slog update
[OpenColorIO-Configs.git] / aces / luts / slog2f65_to_aces_5500.ctl
diff --git a/aces/luts/slog2f65_to_aces_5500.ctl b/aces/luts/slog2f65_to_aces_5500.ctl
new file mode 100644 (file)
index 0000000..ecd9bd3
--- /dev/null
@@ -0,0 +1,115 @@
+////////////////////////////////////////////////////////////////////////////////////// 
+// License Terms for Academy Color Encoding System Components                       //
+//                                                                                  //
+// Academy Color Encoding System (ACES) software and tools are provided by the      //
+// Academy under the following terms and conditions: A worldwide, royalty-free,     //
+// non-exclusive right to copy, modify, create derivatives, and use, in source and  //
+// binary forms, is hereby granted, subject to acceptance of this license.          //
+// Performance of any of the aforementioned acts indicates acceptance to be bound   //
+// by the following terms and conditions:                                           //
+//                                                                                  //
+// Copies of source code, in whole or in part, must retain the above copyright      //
+// notice, this list of conditions and the Disclaimer of Warranty.                  //
+//                                                                                  //
+// Use in binary form must retain the copyright notice (below), this list of        //
+// conditions and the Disclaimer of Warranty in the documentation and/or other      //
+// materials provided with the distribution.                                        //
+//                                                                                  //
+// * Nothing in this license shall be deemed to grant any rights to trademarks,     //
+// copyrights, patents, trade secrets or any other intellectual property of         //
+// A.M.P.A.S. or any contributors, except as expressly stated herein.               //
+//                                                                                  //
+// * Neither the name "A.M.P.A.S." nor the name of any other contributors to this   //
+// software may be used to endorse or promote products derivative of or based on    //
+// this software without express prior written permission of A.M.P.A.S. or the      //
+// contributors, as appropriate.                                                    //
+//                                                                                  //
+// * This license shall be construed pursuant to the laws of the State of           //
+// California, and any disputes related thereto shall be subject to the             //
+// jurisdiction of the courts therein.                                              //
+//                                                                                  //
+// Copyright © 2012 Academy of Motion Picture Arts and Sciences (A.M.P.A.S.).       //
+// Portions contributed by others as indicated. All rights reserved.                //
+//                                                                                  //
+// Disclaimer of Warranty: THIS SOFTWARE IS PROVIDED BY A.M.P.A.S. AND CONTRIBUTORS //
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,    //
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND //
+// NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL A.M.P.A.S., OR ANY            //
+// CONTRIBUTORS OR DISTRIBUTORS, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,    //
+// SPECIAL, EXEMPLARY, RESITUTIONARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT  //
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   //
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF           //
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE  //
+// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF        //
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                       //
+//                                                                                  //
+// WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, THE ACADEMY SPECIFICALLY       //
+// DISCLAIMS ANY REPRESENTATIONS OR WARRANTIES WHATSOEVER RELATED TO PATENT OR      //
+// OTHER INTELLECTUAL PROPERTY RIGHTS IN THE ACADEMY COLOR ENCODING SYSTEM, OR      //
+// APPLICATIONS THEREOF, HELD BY PARTIES OTHER THAN A.M.P.A.S.,WHETHER DISCLOSED OR //
+// UNDISCLOSED.                                                                     //
+////////////////////////////////////////////////////////////////////////////////////// 
+
+//
+// IDT for S-Log/S-Gamut F65 cameras
+// Prototype: Jeremy Selan
+//
+
+
+
+/* ============ SUBFUNCTIONS ============ */
+float SLog2_to_lin (
+    float SLog
+)
+{
+    // fit from [64,940] -> [0,1023] (of 1023)
+    // Map slog2->ire
+    float x = (SLog-64.0/1023.0) / ((940.0-64.0)/1023.0);
+    if (x < 0.030001222851889303)
+    {
+        x = ((x-0.030001222851889303 ) * 0.28258064516129);
+    }
+    else
+    {
+        x = (219.0*(pow(10.0, ((x-0.616596-0.03)/0.432699)) - 0.037584) /155.0);
+    }
+    
+    // 1.0 IRE => 0.9 scene-linear
+    return x*0.9;
+}
+
+
+
+
+
+/* ============ Main Algorithm ============ */
+void
+main
+(   input varying float rIn,
+    input varying float gIn,
+    input varying float bIn,
+    input varying float aIn,
+    output varying float rOut,
+    output varying float gOut,
+    output varying float bOut,
+    output varying float aOut
+)
+{
+    // Prepare input values based on application bit depth handling
+    float SLog[3];
+    SLog[0] = rIn;
+    SLog[1] = gIn;
+    SLog[2] = bIn;
+
+    // 10-bit Sony S-log to linear S-gamut
+    float lin[3];
+    lin[0] = SLog2_to_lin( SLog[0]);
+    lin[1] = SLog2_to_lin( SLog[1]);
+    lin[2] = SLog2_to_lin( SLog[2]);
+
+    // S-Gamut to ACES matrix
+    rOut = lin[0] * 0.8764457030 + lin[1] * 0.0145411681 + lin[2] * 0.1090131290;
+    gOut = lin[0] * 0.0774075345 + lin[1] * 0.9529571767 + lin[2] * -0.0303647111;
+    bOut = lin[0] * 0.0573564351 + lin[1] * -0.1151066335 + lin[2] * 1.0577501984;
+    aOut = aIn;
+}