... ProRes4444 XQ and use FCPX etc.... but now I think I will either do a round trip or do the whole film in Reslove.
:)
Everything posted here is optional ...Any newbie looking info about working with ML RAW in DR will get false impression than all these absolutely mandatory.
...I would prefer to keep validation related discussions from the thread as they are not in keeping with its intended purpose.- Ok, than you should change your topic theme from broad "DaVinci Resolve 12 and ML Raw" to "DaVinci Resolve 12 and ML Raw for LUT nerds" or "DaVinci Resolve 12 and ML Raw for anyone willing to fool himself he shoot Arri"
Next I'll be looking at an alternative Gamma curve to better suit ML Raw footage (it's always darker that how it was shot)For me ML Raw footage looks exactly as was shot in DR and the same, say in ACR.
selecting Arri Log C for Timeline and Bypass for Output in project settings so that you get a LogC signal and Alexa Wide Gamut colour space.Not sure how to bypass for Output project. I apply Arri_Lin_to_LogC_1D_14bit.cube in the timeline.
In the first node apply the LogC_to_Arri_Lin_1D_14bit LUT, which decodes the LogC signal into its full range of -0.017 to 55.08. Add a Serial node, then add a Layer node.Done
In the top Layer (underlying) node add the Arri_Lin_Split_Normal_AWG_to_Rec709_3D_65 LUT. This LUT converts the signal colour space to Rec709, and clips all values over 1.
In the bottom Layer (overlying) node add the Arri_Lin_Split_Superwhites_AWG_to_Rec709_3D_65 LUT. This also converts the signal colour space to Rec709, but clips all values under 1 and offsets every output value by minus 1. In the composite node select Add, and the signal is complete again.
TITLE "Custom LUT"
LUT_3D_SIZE 33
# Rec709 - γ1.90 (exp2.22)/Alexa Wide Gamut -> LogC (Sup 2.x)/Alexa Wide Gamut, CineEI Shift 0.00, Black Level 8.03% IRE, Data Input -> Data Output - Created with LUTCalc v2.3.4 by Ben Turley November 2015
TITLE "Custom LUT"
LUT_3D_SIZE 33
# Rec709 - γ1.90 (exp2.22)/Canon Cinema Gamut -> Canon C-Log2/Canon Cinema Gamut, CineEI Shift 0.00, Black Level 3.54% IRE, Data Input -> Data Output - Created with LUTCalc v2.3.4 by Ben Turley November 2015
(...)+1
I'd prefer to continue to focus on developing new approaches though, (...)
$ exiftool -IFD0:WhiteLevel=16383 * -overwrite_original -r.
echo "0000068: FF 3F" | xxd -r - Input.MLV
__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
const float r = (p_R * 1.617523f) + (p_G * -0.537287f) + (p_B * -0.080237f);
const float g = (p_R * -0.070573f) + (p_G * 1.334613f) + (p_B * -0.26404f);
const float b = (p_R * -0.021102f) + (p_G * -0.226954f) + (p_B * 1.248056f);
return make_float3(r, g, b);
}
__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
const float r = p_R > 0.1496582f ? (_powf(10.0f, (p_R - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_R - 0.092809f) / 5.367655f;
const float g = p_G > 0.1496582f ? (_powf(10.0f, (p_G - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_G - 0.092809f) / 5.367655f;
const float b = p_B > 0.1496582f ? (_powf(10.0f, (p_B - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_B - 0.092809f) / 5.367655f;
return make_float3(r, g, b);
}
// Arri Film Matrix addition (to be applied to LogC AWG)
__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
const float r = (p_R * 1.271103f) + (p_G * -0.284279f) + (p_B * 0.013176f);
const float g = (p_R * -0.127165f) + (p_G * 1.436429f) + (p_B * -0.309264f);
const float b = (p_R * -0.129927f) + (p_G * -0.510286f) + (p_B * 1.640214f);
return make_float3(r, g, b);
}
// Arri Linear to Cineon Linear Prep
__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
const float r = p_R > 1.0f ? _powf(p_R, 0.6496465358f) : (p_R < 0.0f ? _powf(_fabs(p_R), 1.2756188918f) * -1.0f : p_R);
const float g = p_G > 1.0f ? _powf(p_G, 0.6496465358f) : (p_G < 0.0f ? _powf(_fabs(p_G), 1.2756188918f) * -1.0f : p_G);
const float b = p_B > 1.0f ? _powf(p_B, 0.6496465358f) : (p_B < 0.0f ? _powf(_fabs(p_B), 1.2756188918f) * -1.0f : p_B);
return make_float3(r, g, b);
}
// LogC to Cineon (with highlight roll-off to preserve dynamic range)
__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
const float r = (((_log10f(((p_R > 0.1496582f ? (_powf(10.0f, (p_R - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_R - 0.092809f) / 5.367655f) > 1.0f ? _powf((p_R > 0.1496582f ? (_powf(10.0f, (p_R - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_R - 0.092809f) / 5.367655f), 0.6496465358f) : ((p_R > 0.1496582f ? (_powf(10.0f, (p_R - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_R - 0.092809f) / 5.367655f) < 0.0f ? _powf(_fabs((p_R > 0.1496582f ? (_powf(10.0f, (p_R - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_R - 0.092809f) / 5.367655f)), 1.2756188918f) * -1.0f : (p_R > 0.1496582f ? (_powf(10.0f, (p_R - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_R - 0.092809f) / 5.367655f))) * (1 -.0108) + .0108)) * 300) + 685) / 1023;
const float g = (((_log10f(((p_G > 0.1496582f ? (_powf(10.0f, (p_G - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_G - 0.092809f) / 5.367655f) > 1.0f ? _powf((p_G > 0.1496582f ? (_powf(10.0f, (p_G - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_G - 0.092809f) / 5.367655f), 0.6496465358f) : ((p_G > 0.1496582f ? (_powf(10.0f, (p_G - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_G - 0.092809f) / 5.367655f) < 0.0f ? _powf(_fabs((p_G > 0.1496582f ? (_powf(10.0f, (p_G - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_G - 0.092809f) / 5.367655f)), 1.2756188918f) * -1.0f : (p_G > 0.1496582f ? (_powf(10.0f, (p_G - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_G - 0.092809f) / 5.367655f))) * (1 -.0108) + .0108)) * 300) + 685) / 1023;
const float b = (((_log10f(((p_B > 0.1496582f ? (_powf(10.0f, (p_B - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_B - 0.092809f) / 5.367655f) > 1.0f ? _powf((p_B > 0.1496582f ? (_powf(10.0f, (p_B - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_B - 0.092809f) / 5.367655f), 0.6496465358f) : ((p_B > 0.1496582f ? (_powf(10.0f, (p_B - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_B - 0.092809f) / 5.367655f) < 0.0f ? _powf(_fabs((p_B > 0.1496582f ? (_powf(10.0f, (p_B - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_B - 0.092809f) / 5.367655f)), 1.2756188918f) * -1.0f : (p_B > 0.1496582f ? (_powf(10.0f, (p_B - 0.385537f) / 0.2471896f) - 0.052272f) / 5.555556f : (p_B - 0.092809f) / 5.367655f))) * (1 -.0108) + .0108)) * 300) + 685) / 1023;
return make_float3(r, g, b);
}
it's so weird that Resolve still doesn't have a color picker!?+1
I'm also interested in the white balance plugin, it's so weird that Resolve still doesn't have a color picker!?
I looked into the effects of extending the White Level value in the DNGs metadata. With 5D MkIII footage it is 15000, which is mapped to the value 1.0 in Resolve. The reasons for White Level being lower than the full 14bit limit (16383) are well documented - Peak Saturation, non-linearity past that point, magenta cast - but when Highlight Recovery is enabled these extra values come into play anyway.
I ran some tests with DNGs whose White Level I altered using Exiftool. There were three varieties: Normal 15000, Full 16583, and Bright 10000
In Adobe Camera Raw they appeared as expected, with Full 16383 slightly darker than Normal 15000 (due to the values being mapped lower to accommodate the additional 1383 values) and Bright 10000 much brighter in keeping with the fact that the lower value is mapped to peak white thereby raising all values accordingly.
Using the Exposure and Highlight controls it was very easy to bring back the highlight values that got clipped or heavily compressed, so in this case the White Level is really just a convenient guideline for Adobe Camera Raw to map Peak White, and no actual raw data is compromised by altering the metadata.
In Resolve it is a somewhat different matter. When the three DNGs are initially brought in the appearance is more or less the same as in ACR, but then using controls like Exposure and Gain to bring back highlight detail it is revealed that this information has been clipped, with Bright 10000 clearly showing the missing information. Only by enabling Highlight Recovery is that signal information brought back into play, but only though whichever algorithms Resolve uses to rebuild signals.
Now, even with Highlight Recovery on Full 16383 Resolve tries to build more highlight detail, even though there is no reserve signal to call upon. I prefer to use the signal splitting techniques mentioned earlier in the thread to do highlight rebuilding, but that can be combined with Highlight Recovery to increase dynamic range if done judiciously. The less of a signal Highlight Recovery has to anchor to initially, the more control you'll have overall, which is why I now recommend (for those using Resolve and willing to put in the extra work in order to achieve superior results) that you change the White Level of your DNGs to their max, which is 16383 for regular and 65535 for Dual-ISO. This process will involve the Exposure control to scale the signal such that the exposure value of a white diffusing reflector is 1.0
This is a deliberate attempt to take the DNG process away from its originally intended display referred/stills approach, and adapt it towards a more scene referred/film approach like that of Cineon and LogC.
With the sterling aid of the two Daniels (@Danne and @dfort) I've been able to convert with relative ease the White Level of both DNGs and MLVs.Code: [Select]$ exiftool -IFD0:WhiteLevel=16383 * -overwrite_original -r.
Is a quick and dirty way to convert every DNG in the folder (and subfolders)Code: [Select]echo "0000068: FF 3F" | xxd -r - Input.MLV
Converts the White Level in the header of a MLV. Very handy if you're using MLVFS in combination with Resolve.
@dfort figured out the code and the HEX values needed.
15000 = 98 3A
16383 = FF 3F
10000 = 10 27
60000 = 60 EA
65535 = FF FF
30000 = 30 75
What do you think about the 2048 black level on the 5D3?
Very nice tools baldavenger.
I've been using your Frequency separator to deal with moire, very easy to remove the color cast of moire with YUV or LAB, but do you know a way to deal with the spatial frequency of moire? Maybe someway to trick Resolve in to Baselights texture management?
I feel like there could be something better than masking and blurring it away, as it just looks blurred. Any ideas?
i think of two posibilities.Shoot. I just upgraded...
Its either the naming of your folders/files, because with your windows batch converter, which has resolve naming, it works. Or you checked the import setting that makes images being imported individually and not sequenced, i dont remember where that setting is. I believe its in the media window somewhere, you click the (...)
Ps, you should stay on 15.3.1 it is way faster and stabile compared to ver 16 with cdng. Also the layer mixer when applied to a timeline node does not work properly in the versions after 15.3.1 and reverting back to 15.3.1 does not fix it, once you brake it you lose it.
you should stay on 15.3.1 it is way faster and stabile compared to ver 16 with cdng.
2) With the translations we have done today (from the data on that acescentral link above) the files look very biased towards purple. Can you spot something amiss in the translation?
@ ilia3101 Yay! It works. Awesome work. Thank you! :)
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fi.ibb.co%2F2yFZjdb%2Fgrab2.jpg&hash=c9e2a61f1834aa10ffee76c635d12d3e) (https://ibb.co/0cnsfrw)
PS This is the dropbox link that has all the sensor data files in: https://www.dropbox.com/sh/xepdrlu8qtubhhl/AADR_QuBf5Sn2WO7lp5MDNGOa?dl=0
The link is on this thread https://acescentral.com/t/results-from-an-idt-evaluation/2229/15Got it. I didn't see it there the first time I read, my bad.
Unfortunately I cannot see how to attach the images in this forum.Use the tag img:
[img=https://example.org/0.png width=640][/img]
Use the tag img:Code: [Select][img=https://example.org/0.png width=640][/img]
If this is what the ACES converted to rec709 looks, it is wrong. While I don't know what the scene looked like, I don't believe it looked like that.
(https://www.magiclantern.fm/forum/proxy.php?request=https%3A%2F%2Fcdn.fstoppers.com%2Fstyles%2Ffull%2Fs3%2Fmedia%2F2017%2F08%2F05%2Fhow-to-set-white-balance-in-davinci-resolve.jpg&hash=450802865efa9eb4c32b442dfa65cf72)