Chaos Corona Forum

Chaos Corona for 3ds Max => [Max] Corona Goodies - User Contributions => Topic started by: racoonart on 2013-10-17, 13:15:40

Title: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: racoonart on 2013-10-17, 13:15:40
Ondra was so kind to give me the function for coronas highlight compression and I made a little fusion macro from that. So you can render your stuff without tone-mapping and apply it later in the post.

Corona Highlight compression:
Code: [Select]
{
Tools = ordered() {
CoronaHighlightCompression1 = MacroOperator {
Inputs = ordered() {
MainInput1 = InstanceInput {
SourceOp = "CoronaHighlighCompression",
Source = "Image1",
},
Input1 = InstanceInput {
SourceOp = "CoronaHighlighCompression",
Source = "NumberIn1",
Name = "HighlightCompression",
MinScale = 1,
MaxScale = 10,
},
},
Outputs = {
MainOutput1 = InstanceOutput {
SourceOp = "CoronaHighlighCompression",
Source = "Output",
},
},
ViewInfo = GroupInfo {
Name = "CoronaHighlightCompression",
Pos = { 0, 0, },
},
Tools = ordered() {
CoronaHighlighCompression = Custom {
CtrlWZoom = false,
CtrlWShown = false,
NameSet = true,
Inputs = {
NumberIn1 = Input { Value = 1, },
LUTIn1 = Input {
SourceOp = "CustomTool1LUTIn1",
Source = "Value",
},
LUTIn2 = Input {
SourceOp = "CustomTool1LUTIn2",
Source = "Value",
},
LUTIn3 = Input {
SourceOp = "CustomTool1LUTIn3",
Source = "Value",
},
LUTIn4 = Input {
SourceOp = "CustomTool1LUTIn4",
Source = "Value",
},
RedExpression = Input { Value = "r1 * (1+r1/(n1*n1))/(1+r1)\r\n", },
GreenExpression = Input { Value = "g1 * (1+g1/(n1*n1))/(1+g1)\r\n", },
BlueExpression = Input { Value = "b1 * (1+b1/(n1*n1))/(1+b1)\r\n", },
NumberControls = Input { Value = 1, },
ShowNumber2 = Input { Value = 0, },
ShowNumber3 = Input { Value = 0, },
ShowNumber4 = Input { Value = 0, },
ShowNumber5 = Input { Value = 0, },
ShowNumber6 = Input { Value = 0, },
ShowNumber7 = Input { Value = 0, },
ShowNumber8 = Input { Value = 0, },
PointControls = Input { Value = 1, },
ShowPoint1 = Input { Value = 0, },
ShowPoint2 = Input { Value = 0, },
ShowPoint3 = Input { Value = 0, },
ShowPoint4 = Input { Value = 0, },
LUTControls = Input { Value = 1, },
ShowLUT1 = Input { Value = 0, },
ShowLUT2 = Input { Value = 0, },
ShowLUT3 = Input { Value = 0, },
ShowLUT4 = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 1045, 115.5, }, },
},
CustomTool1LUTIn1 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 204, Green = 0, Blue = 0, },
CtrlWShown = false,
},
CustomTool1LUTIn2 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 0, Green = 204, Blue = 0, },
CtrlWShown = false,
},
CustomTool1LUTIn3 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 0, Green = 0, Blue = 204, },
CtrlWShown = false,
},
CustomTool1LUTIn4 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 204, Green = 204, Blue = 204, },
CtrlWShown = false,
},
},
},
},
ActiveTool = "CoronaHighlightCompression1",
}

Filmic Tonemapping:
Code: [Select]
{
Tools = ordered() {
FilmicTonemapping1 = MacroOperator {
CtrlWZoom = false,
NameSet = true,
Inputs = ordered() {
Comments = Input { Value = "Filmic tonemap operator is based on John Hable's work for Unchartered 2:  http://filmicgames.com/archives/75\r\n\r\nCopyright 2013 Martin Geupel\r\nThanks goes to Simon Lundberg for the respective Nuke Gizmo!\r\nFeel free to re-use, adapt, distribute and change tool to suit your needs, but please don't sell it.", },
MainInput1 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "Image1",
},
Input1 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "NumberIn1",
},
Input2 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "NumberIn2",
},
Input3 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "NumberIn3",
},
Input4 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "NumberIn4",
},
Input5 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "NumberIn5",
},
Input6 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "NumberIn6",
},
Input7 = InstanceInput {
SourceOp = "FilmicTonemapping",
Source = "NumberIn7",
MaxScale = 20,
},
},
Outputs = {
MainOutput1 = InstanceOutput {
SourceOp = "FilmicTonemapping",
Source = "Output",
},
},
ViewInfo = GroupInfo { Pos = { 1045, 247.5, }, },
Tools = ordered() {
FilmicTonemapping = Custom {
CtrlWZoom = false,
CtrlWShown = false,
NameSet = true,
Inputs = {
NumberIn1 = Input { Value = 0.22, },
NumberIn2 = Input { Value = 0.3, },
NumberIn3 = Input { Value = 0.1, },
NumberIn4 = Input { Value = 0.2, },
NumberIn5 = Input { Value = 0.01, },
NumberIn6 = Input { Value = 0.3, },
NumberIn7 = Input { Value = 11.2, },
LUTIn1 = Input {
SourceOp = "FilmicTonemappingLUTIn1",
Source = "Value",
},
LUTIn2 = Input {
SourceOp = "FilmicTonemappingLUTIn2",
Source = "Value",
},
LUTIn3 = Input {
SourceOp = "FilmicTonemappingLUTIn3",
Source = "Value",
},
LUTIn4 = Input {
SourceOp = "FilmicTonemappingLUTIn4",
Source = "Value",
},
Setup1 = Input { Value = "n5/n6", },
Setup2 = Input { Value = "n4*n6", },
Setup3 = Input { Value = "n4*n5", },
Setup4 = Input { Value = "n3*n2", },
Intermediate1 = Input { Value = "( ( (n7*(n2*n7+s4)+s3) / (n7*(n1*n7+n2)+s2) ) - s1) ", },
RedExpression = Input { Value = "( ( (r1*(n2*r1+s4)+s3) / (r1*(n1*r1+n2)+s2) ) - s1) *i1", },
GreenExpression = Input { Value = "( ( (g1*(n2*g1+s4)+s3) / (g1*(n1*g1+n2)+s2) ) - s1) *i1", },
BlueExpression = Input { Value = "( ( (b1*(n2*b1+s4)+s3) / (b1*(n1*b1+n2)+s2) ) - s1) *i1", },
NumberControls = Input { Value = 1, },
NameforNumber1 = Input { Value = "Shoulder Str.", },
NameforNumber2 = Input { Value = "Linear Str.", },
NameforNumber3 = Input { Value = "Linear Angle", },
NameforNumber4 = Input { Value = "Toe Str.", },
NameforNumber5 = Input { Value = "Toe Num.", },
NameforNumber6 = Input { Value = "Toe Denum.", },
NameforNumber7 = Input { Value = "White Point", },
ShowNumber8 = Input { Value = 0, },
ShowPoint1 = Input { Value = 0, },
ShowPoint2 = Input { Value = 0, },
ShowPoint3 = Input { Value = 0, },
ShowPoint4 = Input { Value = 0, },
ShowLUT1 = Input { Value = 0, },
ShowLUT2 = Input { Value = 0, },
ShowLUT3 = Input { Value = 0, },
ShowLUT4 = Input { Value = 0, },
Comments = Input { Value = "Filmic tonemap operator is based on John Hable's work for Unchartered 2:  http://filmicgames.com/archives/75\r\n\r\nCopyright 2013 Martin Geupel\r\nThanks goes to Simon Lundberg for the respective Nuke Gizmo!\r\nFeel free to re-use, adapt, distribute and change tool to suit your needs, but please don't sell it.", },
},
ViewInfo = OperatorInfo { Pos = { 0, 10.15, }, },
},
FilmicTonemappingLUTIn1 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 204, Green = 0, Blue = 0, },
CtrlWShown = false,
},
FilmicTonemappingLUTIn2 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 0, Green = 204, Blue = 0, },
CtrlWShown = false,
},
FilmicTonemappingLUTIn3 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 0, Green = 0, Blue = 204, },
CtrlWShown = false,
},
FilmicTonemappingLUTIn4 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0, RH = { 0.333333333333333, 0.333333333333333, }, Flags = { Linear = true, }, },
[1] = { 1, LH = { 0.666666666666667, 0.666666666666667, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 204, Green = 204, Blue = 204, },
CtrlWShown = false,
},
},
},
},
ActiveTool = "FilmicTonemapping1",
}

Just copy the code to your flow window or save it as a .setting in your usermacro folder.
Btw, all macros should be used with linear (gamma 1.0) input!


[EDIT]
Captain Obvious added a macro for Nuke!
For download and more details see Post #6
forum.corona-renderer.com/index.php/topic,1807.msg13558#msg13558 (http://forum.corona-renderer.com/index.php/topic,1807.msg13558#msg13558)

[Another EDIT]
Added the Filmic Curve tonemapping as a separate Tool. Big thanks to Captain Obvious for the idea and the guideline ;)
Title: Re: Highlight Compression Macro for Eyeon Fusion
Post by: Juraj on 2013-10-17, 15:07:21
I am more and more inclined to have a look at Fusion. The guys at Uniform shown it and it did seemed simplier than maybe I feared/expected (I have a nightmare even from opening Nuke).

I had a brief look at the script but still have hard time envisioning how it works exactly. I have very mixed feelings about the look it produces. Not that I liked Reinhard (quite opposite..) but there's something about it I can't put my finger at, and prefer to do the tonemapping through curves in post.
Title: Re: Highlight Compression Macro for Eyeon Fusion
Post by: Captain Obvious on 2013-10-17, 15:40:37
Great, thanks! I implemented it in my Nuke tone mapper gizmo as well. I can post it if anyone's interested.


Corona's tonemapper produces exactly the same results as Reinhard tonemapping. It's just that the settings work differently.
Title: Re: Highlight Compression Macro for Eyeon Fusion
Post by: Juraj on 2013-10-17, 15:47:07
Great, thanks! I implemented it in my Nuke tone mapper gizmo as well. I can post it if anyone's interested.


Corona's tonemapper produces exactly the same results as Reinhard tonemapping. It's just that the settings work differently.

Is that really so ? I thought the result with Reinhard became somehow more saturated instead.
Title: Re: Highlight Compression Macro for Eyeon Fusion
Post by: racoonart on 2013-10-17, 15:47:33
Fusion is pretty easy to learn, imho way more intuitive than nuke. It's btw relatively easy to use nuke if you know fusion - the concepts are mostly the same - but the overall usage is a lot easier to learn by trying things out in fusion. Nuke has some pitfalls here and there which are simply not existing in fusion (or you don't notice at first ;) ) and scare new users. I love fusion and it's such a pleasure to work with it. I can't imagine to do my work in any layer based compositing program like AE (totally pain in the ass)

The tone-mapping stuff is something I use very rarely, never in max directly (just in corona while rendering and playing with the values). I always save my images linear and do curves in the post. For me it's just a very useful thing to be able to achieve the exact same highlight compression in fusion than the way it is in corona - in case I liked what I saw when playing with the values at render time (or my boss or client etc).
The problem with this kind of compression is (imho) the reduced contrast in the midtones. I tend to reduce the compression just to the highlights with little influence into the midtones (for the soft transition).

Great, thanks! I implemented it in my Nuke tone mapper gizmo as well. I can post it if anyone's interested.

Why not, I'd appreciate if we could complete this thread for all different kind of compositing packages :) I'd modify the topic name then :)
Title: Re: Highlight Compression Macro for Eyeon Fusion
Post by: racoonart on 2013-10-17, 16:02:02
Btw, here is a screenshot with a before-and-after gradient from 0-10 range with a waveform diagram. Right image is with highlight compression at 10.0
Title: Re: Highlight Compression Macro for Eyeon Fusion
Post by: Captain Obvious on 2013-10-17, 16:22:55
Okay, here's my Nuke gizmo. It's still a WIP. I haven't yet implemented film simulation, but I'm working on it. No menu or install or anything for now; just select the text and copy it into your comp. Only tested in NukeX 7.0v8, but should work fine in regular Nuke as well, and probably in earlier versions as well.

It does Reinhard, Exponential Luma (same as Maxwell and modo), Corona and Filmic.


Code: [Select]
set cut_paste_input [stack 0]
version 7.0 v8
push $cut_paste_input
Group {
 name Tonemap
 selected true
 xpos -308
 ypos -203
 addUserKnob {20 tonemap l Tonemap t "Adjusts blend between linear colors and full tonemap"}
 addUserKnob {41 operator l Operator t "Available operators:\nReinhard (V-Ray; desaturates highlights)\nExponential luma (modo, Maxwell; saturates highlights)\nFilmic (punchier look, darker shadows; more control over look)\nCorona (similar to Reinhard)" T Switch1.operator}
 addUserKnob {41 mix l "Tonemap Mix" t "Blends between input and tonemapped image" T Merge1.mix}
 addUserKnob {20 exposure l "Exposure Adjustment" n 1}
 exposure 0
 addUserKnob {41 mode l "Adjust in" T EXPTool1.mode}
 addUserKnob {41 gang T EXPTool1.gang}
 addUserKnob {41 red T EXPTool1.red}
 addUserKnob {41 green T EXPTool1.green}
 addUserKnob {41 blue T EXPTool1.blue}
 addUserKnob {20 endGroup n -1}
 addUserKnob {20 exponentialStrength l "Reinhard and Exponential Luma Controls" n 1}
 exponentialStrength 0
 addUserKnob {41 mix_1 l Burn T Reinhard_Merge.mix}
 addUserKnob {20 endGroup_3 l endGroup n -1}
 addUserKnob {20 filmic_1 l "Filmic Controls" n 1}
 filmic_1 0
 addUserKnob {19 Grade1_black l lift t "Lifts blacks" R 0 0.1}
 Grade1_black 0.005
 addUserKnob {41 shoulderStr l "Shoulder Str." t "Higher values produces brighter highlights" T Expression_Filmic.shoulderStr}
 addUserKnob {41 linStr l "Linear Str." T Expression_Filmic.linStr}
 addUserKnob {41 linAngle l "Linear Angle" T Expression_Filmic.linAngle}
 addUserKnob {41 toeStr l "Toe Str." T Expression_Filmic.toeStr}
 addUserKnob {41 toeNum l "Toe Num." T Expression_Filmic.toeNum}
 addUserKnob {41 toeDen l "Toe Denom." T Expression_Filmic.toeDen}
 addUserKnob {41 whitepoint l INVISIBLE +INVISIBLE T Expression_Filmic.whitepoint}
 addUserKnob {20 endGroup_1 l endGroup n -1}
 addUserKnob {20 Corona l "Corona Controls" n 1}
 Corona 0
 addUserKnob {41 compression l Compression T Expression_Corona.compression}
 addUserKnob {20 endGroup_2 l endGroup n -1}
}
 BackdropNode {
  inputs 0
  name Filmic
  xpos -340
  ypos -221
  bdwidth 144
  bdheight 193
 }
 BackdropNode {
  inputs 0
  name Corona
  xpos -498
  ypos -222
  bdwidth 151
  bdheight 194
 }
 BackdropNode {
  inputs 0
  name Luma_modo
  xpos -171
  ypos -212
  bdwidth 274
  bdheight 190
 }
 BackdropNode {
  inputs 0
  name Reinhard
  xpos 116
  ypos -215
  bdwidth 243
  bdheight 191
 }
 BackdropNode {
  inputs 0
  name Notes
  label "Filmic tonemap operator is based\non John Hable's work for Unchartered 2:\nhttp://filmicgames.com/archives/75\n\nExponential luma operator is used by \nmodo and Maxwell.\n\nReinhard operator is Reinhard global.\n\nCorona is from the 3ds Max plugin render\nengine Corona.\n\n\nCopyright 2013 Simon Lundberg\nFeel free to re-use, adapt, distribute\nand change tool to suit your needs,\nbut please don't sell it."
  note_font_size 25
  xpos 582
  ypos -307
  bdwidth 616
  bdheight 512
 }
 BackdropNode {
  inputs 0
  name Film_Simulation
  label "NOT IMPLEMENTED"
  xpos -663
  ypos -224
  bdwidth 141
  bdheight 196
 }
 Input {
  inputs 0
  name mask
  xpos -462
  ypos -344
  number 1
 }
 Dot {
  name Dot11
  xpos 499
  ypos -341
 }
 Dot {
  name Dot10
  xpos 499
  ypos 218
 }
 Input {
  inputs 0
  name img
  xpos -578
  ypos -344
 }
 Dot {
  name Dot14
  xpos -547
  ypos -295
 }
set N1a542300 [stack 0]
 EXPTool {
  mode Stops
  name EXPTool1
  xpos -462
  ypos -298
 }
 Dot {
  name Dot19
  xpos -216
  ypos -295
 }
 Dot {
  name Dot33
  xpos -216
  ypos -241
 }
set Naea67450 [stack 0]
 Dot {
  name Dot24
  xpos -275
  ypos -241
 }
set Nb255c280 [stack 0]
 Dot {
  name Dot25
  xpos -431
  ypos -241
 }
set Naea5ff70 [stack 0]
 Dot {
  name Dot28
  xpos -612
  ypos -241
 }
 Dot {
  name Dot29
  xpos -612
  ypos -185
 }
 Dot {
  name Dot30
  xpos -612
  ypos -62
 }
 Dot {
  name Dot31
  xpos -612
  ypos 80
 }
 Dot {
  name Dot32
  xpos 19
  ypos 80
 }
push $Naea5ff70
 Expression {
  expr0 r*(1+r/(compression**2))/(1+r)
  expr1 g*(1+g/(compression**2))/(1+g)
  expr2 b*(1+b/(compression**2))/(1+b)
  name Expression_Corona
  xpos -462
  ypos -147
  addUserKnob {20 User}
  addUserKnob {7 compression l "Highlight Compression" R 1 10}
  compression 1.5
 }
 Dot {
  name Dot26
  xpos -431
  ypos -47
 }
 Dot {
  name Dot5
  xpos -431
  ypos 59
 }
 Dot {
  name Dot17
  xpos 29
  ypos 59
 }
push $Nb255c280
 EXPTool {
  mode Stops
  red 1.8
  green 1.8
  blue 1.8
  name EXPTool2
  xpos -306
  ypos -173
 }
 Grade {
  black {{parent.Grade1_black.r} {parent.Grade1_black.g} {parent.Grade1_black.b} {parent.Grade1_black.a}}
  name Grade1
  xpos -306
  ypos -138
  addUserKnob {20 User}
 }
 Expression {
  temp_name0 tNtD
  temp_expr0 toeNum/toeDen
  temp_name1 tStD
  temp_expr1 toeStr*toeDen
  temp_name2 tStN
  temp_expr2 toeStr*toeNum
  temp_name3 lAlS
  temp_expr3 linAngle*linStr
  expr0 ((r*(shoulderStr*r+lAlS)+tStN)/(r*(shoulderStr*r+linStr)+tStD))-tNtD
  expr1 ((g*(shoulderStr*g+lAlS)+tStN)/(g*(shoulderStr*g+linStr)+tStD))-tNtD
  expr2 ((b*(shoulderStr*b+lAlS)+tStN)/(b*(shoulderStr*b+linStr)+tStD))-tNtD
  name Expression_Filmic
  xpos -306
  ypos -95
  addUserKnob {20 User}
  addUserKnob {7 shoulderStr l "Shoulder Str."}
  shoulderStr 0.5
  addUserKnob {7 linStr l "Linear Str."}
  linStr 0.8
  addUserKnob {7 linAngle l "Linear Angle"}
  linAngle 0.2
  addUserKnob {7 toeStr l "Toe Str."}
  toeStr 0.9
  addUserKnob {7 toeNum l "Toe Num." R 0 0.1}
  toeNum 0.065
  addUserKnob {7 toeDen l "Toe Denum."}
  toeDen 0.9
  addUserKnob {7 whitepoint l "White point" R 0 50}
  addUserKnob {7 whitepointExp}
  whitepointExp {{((whitepoint*(shoulderStr*whitepoint+linAngle*linStr)+toeStr*toeNum)/(whitepoint*(shoulderStr*whitepoint+linStr)+toeStr*toeDen))-(toeNum/toeDen)}}
 }
 Dot {
  name Dot22
  xpos -275
  ypos -52
 }
 Dot {
  name Dot15
  xpos -275
  ypos 42
 }
 Dot {
  name Dot9
  xpos 47
  ypos 42
 }
push $Naea67450
 Dot {
  name Dot21
  xpos -151
  ypos -241
 }
set Nb255b830 [stack 0]
 Dot {
  name Dot2
  xpos -151
  ypos -176
 }
set N1a544c40 [stack 0]
 Dot {
  name Dot3
  xpos -151
  ypos -134
 }
set N1a544fb0 [stack 0]
 Dot {
  name Dot20
  xpos -151
  ypos -105
 }
push $N1a544fb0
push $N1a544c40
 Saturation {
  saturation 0
  name Saturation1
  xpos -103
  ypos -179
 }
 Add {
  value 1
  name modo_add
  xpos -4
  ypos -185
 }
 Merge2 {
  inputs 2
  operation divide
  Bchannels rgb
  name modo_Divide
  xpos -4
  ypos -137
 }
 Merge2 {
  inputs 2
  operation copy
  mix 0.25
  name Reinhard_Merge
  xpos -4
  ypos -108
 }
 set Cb20bf900 [stack 0]
 Dot {
  name Dot8
  xpos 69
  ypos -53
 }
 Dot {
  name Dot4
  xpos 69
  ypos 34
 }
push $Nb255b830
 Dot {
  name Dot1
  xpos 122
  ypos -241
 }
 Dot {
  name Dot12
  xpos 122
  ypos -174
 }
set N1a602700 [stack 0]
 Dot {
  name Dot13
  xpos 122
  ypos -128
 }
set N1a602a70 [stack 0]
 Dot {
  name Dot18
  xpos 122
  ypos -85
 }
push $N1a602a70
push $N1a602700
 Add {
  value 1
  name Reinhard_Add
  xpos 222
  ypos -183
 }
 Merge2 {
  inputs 2
  operation divide
  Bchannels rgb
  name Reinhard_Divide
  xpos 222
  ypos -131
 }
clone $Cb20bf900 {
  inputs 2
  xpos 222
  ypos -88
  selected false
 }
 Dot {
  name Dot23
  xpos 253
  ypos -47
 }
 Dot {
  name Dot16
  xpos 253
  ypos 42
 }
 Dot {
  name Dot7
  xpos 90
  ypos 42
 }
 Switch {
  inputs 5
  which {{operator}}
  name Switch1
  xpos 38
  ypos 112
  addUserKnob {20 User}
  addUserKnob {4 operator l Operator M {Reinhard "Exponential luma" Filmic Corona}}
  operator Filmic
 }
 Clamp {
  maximum_enable false
  name Clamp1
  xpos 38
  ypos 153
 }
push $N1a542300
 Dot {
  name Dot27
  xpos -777
  ypos -295
 }
 Dot {
  name Dot6
  xpos -777
  ypos 218
 }
 Merge2 {
  inputs 2+1
  operation copy
  name Merge1
  xpos 38
  ypos 215
 }
 Output {
  name Output1
  xpos 38
  ypos 386
 }
end_group
Title: Re: Highlight Compression Macro for Eyeon Fusion
Post by: racoonart on 2013-10-17, 16:37:14
It does Reinhard, Exponential Luma (same as Maxwell and modo), Corona and Filmic.

Great Stuff Captain Obvious! I hope you don't mind if I adapt those modes for my fusion macro? I will (of course!) annotate this section as well:
Code: [Select]
Filmic tonemap operator is based\non John Hable's work for Unchartered 2:\nhttp://filmicgames.com/archives/75\n\nExponential luma operator is used by \nmodo and Maxwell.\n\nReinhard operator is Reinhard global.\n\nCorona is from the 3ds Max plugin render\nengine Corona.\n\n\nCopyright 2013 Simon Lundberg\nFeel free to re-use, adapt, distribute\nand change tool to suit your needs,\nbut please don't sell it.
 
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: Captain Obvious on 2013-10-17, 16:43:03
Go for it. I wouldn't mind getting my hands on it when you're done. I'm one of those few crazy people who own and use both Fusion and Nuke! :-D
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: Juraj on 2013-10-17, 17:18:54
I am super curious about the "filmic" curve, keeps very nice contrast overall. What is it ?
If this gets converted to Fusion I will install it the very next day.
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: Captain Obvious on 2013-10-17, 18:50:55
I am super curious about the "filmic" curve, keeps very nice contrast overall. What is it ?
If this gets converted to Fusion I will install it the very next day.
It's based on this: http://www.slideshare.net/ozlael/hable-john-uncharted2-hdr-lighting (http://www.slideshare.net/ozlael/hable-john-uncharted2-hdr-lighting)

Go to page 92.
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: Juraj on 2013-10-17, 19:18:36
I am super curious about the "filmic" curve, keeps very nice contrast overall. What is it ?
If this gets converted to Fusion I will install it the very next day.
It's based on this: http://www.slideshare.net/ozlael/hable-john-uncharted2-hdr-lighting (http://www.slideshare.net/ozlael/hable-john-uncharted2-hdr-lighting)

Go to page 92.

Thanks !

"Once you have,you can't live without it" :- D Incredible source btw, so many other cool .pdfs about graphic, forwarded to my brother/graphic programmer.

Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: racoonart on 2013-10-17, 19:45:50
Ok, I have just implemented it and I'm playing around. It is... kind of strange at first but I think it's just the "I need to get used to it" feeling. It's not just setting a bright and dark value and that's it - no - you need to balance shoulder, linear and white point if you play with one of the values.

I'll do the other curves and post an updated macro later :)
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: rafpug on 2013-10-17, 20:10:03
Hello DeadClown

MacroScript for 3DStudio Max?
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: Chakib on 2013-10-18, 01:18:13
Thanks Deadclown and Captin Obvious for this interesting script
 i've tested the one for Nuke and it works nice, i must test it with other corona renders and my next work.

Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: racoonart on 2013-10-18, 10:12:40
Ok, I added the filmic tonemapping as a separate macro. Since fusions UI capabilities with macros are very limited I decided to keep it 1 macro per curve :) Unfortunately all the sliders default to 0 when you click the little dot in the middle (even when I set it to some other values in the macro tool). If someone knows a solution to that I would be very happy to hear it :)


Hello DeadClown

MacroScript for 3DStudio Max?
No. Fusion and Nuke.
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: lmikkelb on 2014-01-15, 16:40:43
Thanks Captain obvious! Great the nuke gizmo
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: agentdark45 on 2014-01-16, 17:53:03
Damn that example image really highlights why filmic mapping is superior.

I know the dev team hate unnecessary requests but would it be possible to have the option to utilise filmic compression mapping from within Corona (as an option to the standard mapping)? Shouldn't be too arduous to implement as the code / algorithms are already available here.

This could be something that really sets Corona apart from other renderers, so I don't think its a totally frivolous request. Arch viz shots with good contrast and saturation without burnouts straight out of the box = hnnnnnnnnng!
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: rockin on 2014-01-28, 14:00:38
Just wanted to extend my thanks. These are super useful, I've been on the watch for eyeon Fusion tone mappers for years!
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: lmikkelb on 2014-01-28, 14:17:29
Is it possible to use the nuke gizmo in nuke 8 ?
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: agentdark45 on 2014-01-28, 18:36:47
Opened up the eval version of Fusion, this is how I felt:

(http://www.ludumdare.com/compo/wp-content/uploads/2013/04/i-have-no-idea-what-im-doing-dog.jpg)

Can anyone point me in the right direction on how to get this going to a complete fusion noob? Or would Nuke be better for a compositing beginner?
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: racoonart on 2014-01-28, 19:35:41
here you go ;)
http://learn.eyeonline.com/ (http://learn.eyeonline.com/)
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: agentdark45 on 2014-01-28, 22:13:03
Thanks, much appreciated!

I just got it working, so far so good! Although I am a little puzzled at some of the names of the sliders...would you mind giving a quick run-down of what the sliders do? I guess the "holy grail" would be to find some settings that could town down burnouts whilst retaining contrast and saturation is the rest of the image (kind of like the comparison image posted earlier).

Also, when working this way would it be advisable to render a scene with good overall illumination with visible burnouts, and post process the burnouts out after. Or underexpose the scene / use reduced lighting levels to avoid burnouts and bring the levels up after in post?
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: Javadevil on 2014-01-29, 01:53:09
Damn that example image really highlights why filmic mapping is superior.

I know the dev team hate unnecessary requests but would it be possible to have the option to utilise filmic compression mapping from within Corona (as an option to the standard mapping)? Shouldn't be too arduous to implement as the code / algorithms are already available here.

This could be something that really sets Corona apart from other renderers, so I don't think its a totally frivolous request. Arch viz shots with good contrast and saturation without burnouts straight out of the box = hnnnnnnnnng!

Yes I've asked for this since day one :) 
I've asked for something similar to 19lights version.
http://19lights.com/wp/
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: agentdark45 on 2014-01-29, 02:46:58
Damn that example image really highlights why filmic mapping is superior.

I know the dev team hate unnecessary requests but would it be possible to have the option to utilise filmic compression mapping from within Corona (as an option to the standard mapping)? Shouldn't be too arduous to implement as the code / algorithms are already available here.

This could be something that really sets Corona apart from other renderers, so I don't think its a totally frivolous request. Arch viz shots with good contrast and saturation without burnouts straight out of the box = hnnnnnnnnng!

Yes I've asked for this since day one :) 
I've asked for something similar to 19lights version.
http://19lights.com/wp/

Great application of HDR tone mapping! Might be cool to do some sort of hybrid HDR / filmic mapping?
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: racoonart on 2014-01-29, 10:07:04
I just got it working, so far so good! Although I am a little puzzled at some of the names of the sliders...would you mind giving a quick run-down of what the sliders do?

The problem is: I can't (easily). The best thing to do is taking a simple gradient, switching on a SubView ("SubV" at bottom left corner of a viewport) and set it to waveform; now you can see what the sliders do on the curve. It takes some time to understand the relationships and that's why I'm not sure if it's a good idea to implement something like that into corona.
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: Javadevil on 2014-02-01, 04:18:17
If Corona's frame buffer had an A-B, before and after post, then you could get a good understanding of what the tone mapping is doing. Similar to 3dsmax's RAM player but live, not loaded up renders, but whats in the frame buffer at the time.

Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: coldworld on 2014-06-25, 00:35:11
work good  on Fusion 6
big thx  - DeadClown

ps. Fusion best and easy composing software ever !!!
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: snakebox on 2014-07-31, 03:47:40
This looks super cool! Thanks for making this guys!

I will def test the nuke gizmo!  Does anyone have side by side comparisons between the inbuilt corona compression and the filmic?

Thanks
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: CiroC on 2014-08-20, 21:32:54
Thanks for the Nuke's script. Just to be sure I am taking the right steps. I need to save my render as a 32 exr image, right? Do I need to overwrite the gamma back to 1?

Thanks
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: deshu on 2015-01-04, 03:05:23
I have to say big, huge thanks for the nuke script. Working preciously with 32bit exrs.
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: juang3d on 2015-02-08, 13:30:30
For the guys here wanting to learn fusion, I first tried with Digital tutors, but it's a bit old, but I found that the CMI VFX tutorials are freaking great, you get an indeep overview of fusion with pratical examples that you can apply to your projects, and they are done with the latest release from Blackmagic.
They've been great for me.

Cheers!
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: pBarrelas on 2015-04-06, 12:45:07
DeadClown, Thanks a lot for those two Fusion macros. They're very helpful!
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: karamox on 2016-05-22, 18:24:10
compare those two pictures. on the left corona frame buffer highilght compress/ on the right fusion script highlight compress.  why are these images so different if the code is the same?
maybe there is a bug in corona frame buffer, why corona canot give the same pretty result as fusion does?

Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: CiroC on 2016-05-24, 10:15:42
Did you save the image with a gamma of 1.0? It looks like that to me.
Title: Re: Highlight Compression Macros for Eyeon Fusion + Foundry Nuke
Post by: PiBos on 2016-08-30, 14:20:17
i love filmic and coronahighlights in Fusion. i was trying to export them as a LUT. but the highlights get clipped. this is because the 32bit render is brighter than 1.0. is it possible to export a LUT that can work for tone mapping and very bright highlights?