I believe you can check the source for the grade node in the NDK.

On 10 January 2015 at 15:55, Mads Lund <[email protected]> wrote:

> Thanks alot, i can see that now. I guess it was a bit too inconvenient to
> show the full equation in the node's help info.
>
> On Sat, Jan 10, 2015 at 4:38 PM, Joe Laude <[email protected]> wrote:
>
>> Well I learned something new today, because I didn't actually know that
>> the grade node did this. The grade node is not telling the whole truth
>> about the expression in its info.
>>
>> I laid out pretty much the same thing (I don't have access to Nuke 8, so
>> I set up virtually the same thing as yours but using an expression node),
>> and I discovered that the Grade node doesn't do a straight pow() function
>> for the gamma above 1 or below 0. It does what you'd expect from 0 to 1,
>> but above 1, it's not a power curve, but a flat line, with the slope of
>> whatever the gamma exponent is.
>>
>> Below is what I was playing with in nuke. It has the expression node
>> which does the same as your blinkscript did, and the grade node you had, as
>> well as an expression node that visualizes the color curve (just view it,
>> you'll see what I mean. View the "GammaCurve" node, and then connect that
>> to the other nodes to see what's going on), and finally an expression node
>> that includes the corrected expression, which uses different expressions
>> for above 1 and below 0.
>>
>> set cut_paste_input [stack 0]
>> version 7.0 v9
>> push $cut_paste_input
>> Ramp {
>>  p0 {0 0}
>>  p1 {2048 0}
>>  color {100 100 100 1}
>>  name Ramp2
>>  selected true
>>  xpos -73
>>  ypos -78
>> }
>> Grade {
>>  blackpoint 0.25
>>  black_clamp false
>>  name Grade2
>>  selected true
>>  xpos -73
>>  ypos -40
>> }
>> set N3b094970 [stack 0]
>> Expression {
>>  temp_name0 A
>>  temp_expr0
>> Grade6.multiply*(Grade6.white-Grade6.black)/(Grade6.whitepoint-Grade6.blackpoint)
>>  temp_name1 B
>>  temp_expr1 Grade6.add+Grade6.lift-A*Grade6.blackpoint
>>  temp_name2 exp
>>  temp_expr2 1/Grade6.gamma
>>  expr0 r<0?A*r+B:r>1?(r-1)*exp+1:pow(A*r+B,exp)
>>  expr1 r<0?A*r+B:r>1?(r-1)*exp+1:pow(A*r+B,exp)
>>  expr2 r<0?A*r+B:r>1?(r-1)*exp+1:pow(A*r+B,exp)
>>  name CorrectedGradeExpression
>>  selected true
>>  xpos 152
>>  ypos 24
>> }
>> push $N3b094970
>> Expression {
>>  temp_name0 A
>>  temp_expr0
>> Grade6.multiply*(Grade6.white-Grade6.black)/(Grade6.whitepoint-Grade6.blackpoint)
>>  temp_name1 B
>>  temp_expr1 Grade6.add+Grade6.lift-A*Grade6.blackpoint
>>  temp_name2 exp
>>  temp_expr2 1/Grade6.gamma
>>  expr0 pow(A*r+B,exp)
>>  expr1 pow(A*g+B,exp)
>>  expr2 pow(A*b+B,exp)
>>  name UncorrectedGradeExpression
>>  selected true
>>  xpos 20
>>  ypos 23
>> }
>> set N3b115410 [stack 0]
>> Expression {
>>  expr0 floor(r*20)==y-20?1:0
>>  expr1 floor(g*20)==y-20?1:0
>>  expr2 floor(b*20)==y-20?1:0
>>  name GammaCurve
>>  label "Illustrates gamma curve"
>>  selected true
>>  xpos 90
>>  ypos 153
>> }
>> push $N3b115410
>> push $N3b094970
>> Grade {
>>  gamma 2.3
>>  black_clamp false
>>  name Grade6
>>  selected true
>>  xpos -202
>>  ypos 22
>> }
>> Difference {
>>  inputs 2
>>  output rgba.red
>>  name Difference1
>>  selected true
>>  xpos -101
>>  ypos 166
>> }
>>
>>
>> On Sat, Jan 10, 2015 at 6:04 AM, Mads Lund <[email protected]> wrote:
>>
>>> Hey Guys.
>>>
>>> I find it super convenient that some of the node actually explains how
>>> they operate, so that you can re-create them in your expressions and blink
>>> scripts.
>>> However the equation descriped in the Gradenode does not match the
>>> actuall output of the node
>>>
>>> A = multiply*(gain-lift)/(whitepoint-blackpoint)
>>>
>>> B = offset + lift - A*blackpoint
>>>
>>> output = pow(A*input+B,1/gamma)
>>>
>>>
>>> Here is a little comparison:
>>>
>>>
>>>
>>> set cut_paste_input [stack 0]
>>>
>>> version 8.0 v4
>>>
>>> push $cut_paste_input
>>>
>>> Ramp {
>>>
>>>  p0 {0 408}
>>>
>>>  p1 {1924 426}
>>>
>>>  color 10000
>>>
>>>  name Ramp2
>>>
>>>  selected true
>>>
>>>  xpos -2
>>>
>>>  ypos 379
>>>
>>> }
>>>
>>> set Ne890edf0 [stack 0]
>>>
>>> BlinkScript {
>>>
>>>  ProgramGroup 1
>>>
>>>  KernelDescription "1 \"Grade\" iterate componentWise
>>> 3aed9d965918ead671ab9383439b4816a7772727775caa4b995181fa06c4c03e 2 \"src\"
>>> Read Point \"dst\" Write Point 0"
>>>
>>>  kernelSource "kernel Grade :
>>> ImageComputationKernel<eComponentWise>\n\{\n  Image<eRead, eAccessPoint,
>>> eEdgeClamped> src;\n  Image<eWrite> dst;\n  void process() \{\n    float4
>>> Colors = src();\n    float  input =  Colors.x;\n    float blackpoint =
>>> 0.0f;\n    float whitepoint = 1.0f;\n    float lift = 0.0f;\n    float gain
>>> = 0.01f;\n    float multiply = 1.0f;\n    float offset = 0.0f;\n    float
>>> gamma = 2.0f;\n    float A =
>>> multiply*(gain-lift)/(whitepoint-blackpoint);\n    float B = offset + lift
>>> - A*blackpoint;\n    float output = pow(A*input+B,1/gamma);\n    dst() =
>>> output;\n   \}\n\};"
>>>
>>>  rebuild ""
>>>
>>>  name BlinkScript1
>>>
>>>  selected true
>>>
>>>  xpos -86
>>>
>>>  ypos 423
>>>
>>> }
>>>
>>> push $Ne890edf0
>>>
>>> Grade {
>>>
>>>  white 0.01
>>>
>>>  gamma 2
>>>
>>>  black_clamp false
>>>
>>>  enable_mix_luminance false
>>>
>>>  name Grade6
>>>
>>>  selected true
>>>
>>>  xpos 78
>>>
>>>  ypos 431
>>>
>>> }
>>>
>>> Difference {
>>>
>>>  inputs 2
>>>
>>>  output rgba.red
>>>
>>>  name Difference1
>>>
>>>  selected true
>>>
>>>  xpos -12
>>>
>>>  ypos 494
>>>
>>> }
>>>
>>>
>>>
>>> Am i missing something, and or do you guys know what is missing?
>>>
>>>
>>> _______________________________________________
>>> Nuke-users mailing list
>>> [email protected], http://forums.thefoundry.co.uk/
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>>
>>
>>
>>
>> --
>> Joe Laude
>>
>> _______________________________________________
>> Nuke-users mailing list
>> [email protected], http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>
>
>
> _______________________________________________
> Nuke-users mailing list
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>
_______________________________________________
Nuke-users mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users

Reply via email to