<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: rombotools::freebie::mathparser in Arnold General Rendering Forum</title>
    <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12898734#M139</link>
    <description>&lt;P&gt;&lt;STRONG&gt;Addded fncs :&lt;/STRONG&gt;&lt;BR /&gt;- radtodeg -&amp;gt; converts radians to degrees&lt;BR /&gt;- degtorad -&amp;gt; converts degrees to radians&lt;BR /&gt;- union -&amp;gt; perlin boolean op -&amp;gt; ((a+b) - (a*b))&lt;BR /&gt;- diff -&amp;gt; perlin boolean op -&amp;gt; ((a) - (a*b))&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added 3-args fncs :&lt;/STRONG&gt;&lt;BR /&gt;- clamp -&amp;gt; constrains x to lie between a and b ..(x,a,b)&lt;BR /&gt;- lerp -&amp;gt; interpolates linearly x between a and b .. (a,b,x)&lt;BR /&gt;- exerp -&amp;gt; exponential interpolation&lt;BR /&gt;- logerp -&amp;gt; logarithmic interpolation&lt;BR /&gt;- sstep -&amp;gt; smoothstep function .. (a,b,x)&lt;BR /&gt;- pulse -&amp;gt; step(edge0, x) - step(edge1, x);&lt;BR /&gt;- pulset -&amp;gt; pulse (edge, period, mod(x,period));&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added constants :&lt;/STRONG&gt;&lt;BR /&gt;- PI -&amp;gt; π -&amp;gt; 3.1459...&lt;BR /&gt;- E -&amp;gt; euler -&amp;gt; 2.7182...&lt;BR /&gt;- GR -&amp;gt; goldenratio -&amp;gt; 1.6180...&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added globals :&lt;/STRONG&gt;&lt;BR /&gt;all shading float/int globals are available.&lt;BR /&gt;Name convention is : SG(shading globals) + uppercase variable name, ie:&lt;BR /&gt;SGU -&amp;gt; float u .. U surface parameter&lt;BR /&gt;SGDUDX -&amp;gt; float dudx .. U derivative wrt screen X-axis&lt;BR /&gt;SGSC -&amp;gt; uint8_t sc .. type of shading context&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added : README file&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Now, to test for example constants and new fncs .. we know that Pi is the ratio of a circle's circumference to its diameter .. so if you input radtodeg(PI) .. and assign the shader to a cube .. go to the Pixel tab of your Arnold IPR view .. and put the mouse cursor over the rendered cube .. you should see 180 under Lum (remember that what you see in the IPR is not what you source from the pixel which is linear raw.. so values are not altered).&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;With globals instead we can re-write the previous exps without having to leave mathParser .. for example following :&lt;BR /&gt;(floor(SGU*12-SGV*12) + floor(SGU*12+SGV*12)) %2&lt;BR /&gt;does the same as above .. where SGU and SGV are the previous state_float-&amp;gt;U and state_float-&amp;gt;V connected to x and y slots.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Eventually a bit more involved example where we design some antialised circles.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparser_circles.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1386883iB1FB39115527EFB8/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparser_circles.png" alt="rombomathparser_circles.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Sat, 21 Dec 2024 23:29:24 GMT</pubDate>
    <dc:creator>maxtarpini</dc:creator>
    <dc:date>2024-12-21T23:29:24Z</dc:date>
    <item>
      <title>rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12887700#M136</link>
      <description>&lt;P&gt;&lt;STRONG&gt;this is a math expression parser&lt;/STRONG&gt;.. ie. you can simply input a basic math expression and use a variable 'x' to source the connected input. This unleashes some tremendous power if you know what to do with math. So instead to have to use many math nodes you can use one to rule most of them.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Current operators : + - / * ^ %&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Current functions : sin, cos, tan, floor, fract&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Parentheses : ()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example : floor(x*12)%2 , where x is the floating input node (U/V coord) and % is the modulo operator&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.rombo.tools/downloads/romboMathParser.zip" target="_blank" rel="noopener"&gt;https://www.rombo.tools/downloads/romboMathParser.zip&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparser_app.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1384916i82A2132D390AD24B/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparser_app.png" alt="rombomathparser_app.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 16 Jul 2024 15:52:28 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12887700#M136</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2024-07-16T15:52:28Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12890044#M137</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Updated to three inputs and so three variables :&lt;/STRONG&gt; x,y and z.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Added following ops :&lt;/STRONG&gt; (bitwise) &amp;amp; | &amp;lt;&amp;lt; &amp;gt;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Added following fncs :&lt;/STRONG&gt; asin acos atan sinh cosh tanh exp floor ceil fract sqrt log log2 logn inv(ert) comp(lement) abs&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added :&lt;/STRONG&gt; verbosity for incorrect expressions, MTD file for DCCs&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;EM&gt;Remarkably, this doesn't work : 3+(-2) .. meaning, I don't plan to fix it&lt;/EM&gt; &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;From v1.5, you can write it like this however :&amp;nbsp;3+neg(2).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;We can now re-do the previous example with just one romboMathParser.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-07-10 171810.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1385353i09DE9120F720420B/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2024-07-10 171810.png" alt="Screenshot 2024-07-10 171810.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Btw, you can have any number of nested parentheses ..&lt;BR /&gt;like with the following expression that will draw a diamond pattern.&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparser_tris.png" style="width: 965px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1385360i34B1B3B1A7AB8A04/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparser_tris.png" alt="rombomathparser_tris.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;This simple expression instead will return the luminance of a color.&lt;BR /&gt;In Maya, romboMathParser is under Utility/Math.&lt;BR /&gt;No need for parentheses here because the order of operations is exploited.&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-07-10 230840.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1385364iEE358D87281EEEB7/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot 2024-07-10 230840.png" alt="Screenshot 2024-07-10 230840.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jul 2024 20:34:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12890044#M137</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2024-07-22T20:34:48Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12892529#M138</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Added following fncs :&lt;/STRONG&gt; rnd(seed) .. generates random numbers in 0-1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Added support for two-arguments fncs :&lt;/STRONG&gt; max, min, atanz (atan2), mod, pow, step&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Now with two-args fncs we can do more interesting stuff easily.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparse_twoargsfnc.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1385765iE4B3D1A4A1B510FB/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparse_twoargsfnc.png" alt="rombomathparse_twoargsfnc.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;BR /&gt;The 'sin' thing with magic numbers generates random numbers, the 'fract' ensures they are in 0-1.&lt;BR /&gt;Or try this exp '&lt;SPAN class=""&gt;fract&lt;/SPAN&gt;(&lt;SPAN class=""&gt;fract&lt;/SPAN&gt;(p * &lt;SPAN class=""&gt;0.1031&lt;/SPAN&gt;) * (p * &lt;SPAN class=""&gt;33.33&lt;/SPAN&gt;))' which avoids 'sin'.&lt;BR /&gt;We could have used also just the 'rnd' fnc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below with both X and Y. ScreenSpaceX/Y is in Arnold math node : state_float-&amp;gt;imagespaceU/V.&lt;SPAN&gt;&lt;BR /&gt;Thickness node is used to tweak how thick are the lines without touching the expression.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparse_twoargsfncs.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1385764i82BABCC8B18444C1/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparse_twoargsfncs.png" alt="rombomathparse_twoargsfncs.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;BR /&gt;This last example would involve at least 12 nodes and all the pain to keep track of that. Btw, romboMathParser doesn't need to compile anything and does not embed full-fledged scripting language like Python, Lua or OSL because does everything inline based on a simple and effective math parser algorithm.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Dec 2024 19:46:43 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12892529#M138</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2024-12-10T19:46:43Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12898734#M139</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Addded fncs :&lt;/STRONG&gt;&lt;BR /&gt;- radtodeg -&amp;gt; converts radians to degrees&lt;BR /&gt;- degtorad -&amp;gt; converts degrees to radians&lt;BR /&gt;- union -&amp;gt; perlin boolean op -&amp;gt; ((a+b) - (a*b))&lt;BR /&gt;- diff -&amp;gt; perlin boolean op -&amp;gt; ((a) - (a*b))&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added 3-args fncs :&lt;/STRONG&gt;&lt;BR /&gt;- clamp -&amp;gt; constrains x to lie between a and b ..(x,a,b)&lt;BR /&gt;- lerp -&amp;gt; interpolates linearly x between a and b .. (a,b,x)&lt;BR /&gt;- exerp -&amp;gt; exponential interpolation&lt;BR /&gt;- logerp -&amp;gt; logarithmic interpolation&lt;BR /&gt;- sstep -&amp;gt; smoothstep function .. (a,b,x)&lt;BR /&gt;- pulse -&amp;gt; step(edge0, x) - step(edge1, x);&lt;BR /&gt;- pulset -&amp;gt; pulse (edge, period, mod(x,period));&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added constants :&lt;/STRONG&gt;&lt;BR /&gt;- PI -&amp;gt; π -&amp;gt; 3.1459...&lt;BR /&gt;- E -&amp;gt; euler -&amp;gt; 2.7182...&lt;BR /&gt;- GR -&amp;gt; goldenratio -&amp;gt; 1.6180...&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added globals :&lt;/STRONG&gt;&lt;BR /&gt;all shading float/int globals are available.&lt;BR /&gt;Name convention is : SG(shading globals) + uppercase variable name, ie:&lt;BR /&gt;SGU -&amp;gt; float u .. U surface parameter&lt;BR /&gt;SGDUDX -&amp;gt; float dudx .. U derivative wrt screen X-axis&lt;BR /&gt;SGSC -&amp;gt; uint8_t sc .. type of shading context&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Added : README file&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Now, to test for example constants and new fncs .. we know that Pi is the ratio of a circle's circumference to its diameter .. so if you input radtodeg(PI) .. and assign the shader to a cube .. go to the Pixel tab of your Arnold IPR view .. and put the mouse cursor over the rendered cube .. you should see 180 under Lum (remember that what you see in the IPR is not what you source from the pixel which is linear raw.. so values are not altered).&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;With globals instead we can re-write the previous exps without having to leave mathParser .. for example following :&lt;BR /&gt;(floor(SGU*12-SGV*12) + floor(SGU*12+SGV*12)) %2&lt;BR /&gt;does the same as above .. where SGU and SGV are the previous state_float-&amp;gt;U and state_float-&amp;gt;V connected to x and y slots.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Eventually a bit more involved example where we design some antialised circles.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparser_circles.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1386883iB1FB39115527EFB8/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparser_circles.png" alt="rombomathparser_circles.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 21 Dec 2024 23:29:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12898734#M139</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2024-12-21T23:29:24Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12901043#M140</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Re-engineered the parser to better cope with Arnold initialize and evaluate phases.&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;We now parse and tokenize the expression in the init/update phase. Still there we convert the math expression from infix to&amp;nbsp;postfix notation (also known as Reverse Polish Notation or RPN). Eventually we use the RPN like 'compiled code' in the evaluate phase because together with the token to parse the expression we have associated a lambda function that will be called from the RPN with the dynamic content from Arnold (xyz user-defined variables and globals) because the funny part was to be able to support the dynamic stuff while tokenizing/converting the expression as static.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;This makes romboMathParser x20 faster&lt;/STRONG&gt; and at least on pair (generally faster) with any shader network (or OSL code) you'd want to use to accomplish the same thing while remaining easier faster and funnier to setup.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Please re-download the lib (v1.4) from the initial post.&lt;/EM&gt;&lt;BR /&gt;&lt;BR /&gt;Below I'm using an rnd fnc to displace the circles we modelled previously.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparser_displacedcircles.png" style="width: 791px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1387400i1BE2F733B1F9DEBA/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparser_displacedcircles.png" alt="rombomathparser_displacedcircles.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Jul 2024 19:46:58 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12901043#M140</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2024-07-18T19:46:58Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12913081#M141</link>
      <description>&lt;P&gt;Here some kind of origami pattern to test all the stuff works together.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombomathparser_origami.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1389702iE0167F31AB8C941E/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombomathparser_origami.png" alt="rombomathparser_origami.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;You may want to write the same with atan in this way :&amp;nbsp;mod((((atan((SGV-.5)/(SGU-.5)) / (PI*2)) +0.5) *16), 1).&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":vulcan_salute:"&gt;🖖&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jul 2024 21:40:31 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/12913081#M141</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2024-07-22T21:40:31Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/13239421#M142</link>
      <description>&lt;P&gt;.....&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombo_mathp.png" style="width: 866px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1450638i6DBB2BA801C3DD26/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombo_mathp.png" alt="rombo_mathp.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":vulcan_salute:"&gt;🖖&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Jan 2025 23:27:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/13239421#M142</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2025-01-02T23:27:14Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/13250865#M143</link>
      <description>&lt;P&gt;To collect use cases for the romboMathParser ..&lt;/P&gt;&lt;P&gt;I post here too the solution to :&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/arnold-general-rendering-forum/facing-ratio-linear-attribute/td-p/13243846" target="_blank"&gt;https://forums.autodesk.com/t5/arnold-general-rendering-forum/facing-ratio-linear-attribute/td-p/13243846&lt;/A&gt;&lt;/P&gt;&lt;P&gt;See that post for more info.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;How to linearize a cosine gradient with trig fncs :&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fcklinearcosine.png" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1452663i53AA372D7B04E28B/image-size/large?v=v2&amp;amp;px=999" role="button" title="fcklinearcosine.png" alt="fcklinearcosine.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":vulcan_salute:"&gt;🖖&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jan 2025 23:10:52 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/13250865#M143</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2025-01-08T23:10:52Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14018167#M5210</link>
      <description>&lt;P&gt;In the while we're refining rtoa v2.0 which features almost 50 new shaders (!) ..&lt;/P&gt;&lt;P&gt;&lt;EM&gt;we release for everyone a new spicy update to our mathparser&lt;/EM&gt;.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;U&gt;&lt;STRONG&gt;This is Math Parser v2.0. It features a completely re-written core.&lt;/STRONG&gt;&lt;/U&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;We enhanced the two stages "compiler/interpreter" architecture :&lt;BR /&gt;it strictly separates the CPU-intensive parsing setup from the performance-critical rendering loop.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;A new custom parser tokenizes the math expression and compiles it into a linear array of &lt;STRONG&gt;integer-based bytecode&lt;/STRONG&gt;.&lt;BR /&gt;We also do &lt;STRONG&gt;constant folding&lt;/STRONG&gt; now and other optimizations.&lt;BR /&gt;The shader kernel reads this pre-compiled bytecode.&lt;BR /&gt;&lt;SPAN&gt;A tiny &lt;STRONG&gt;Virtual Machine&lt;/STRONG&gt; executes the instructions for lighting speed renderings.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;It now supports vector (3D) operations natively&lt;/STRONG&gt; (component-wise math),&lt;BR /&gt;meaning sin(x) works whether x is a single float or a 3D vector.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Standard math functions can produce NaNs (Not a Number) or 'infinite' values if fed the wrong data.&lt;BR /&gt;&lt;STRONG&gt;MathParser&lt;/STRONG&gt; &lt;STRONG&gt;uses "safe" versions of potential problematic functions&lt;/STRONG&gt; that gracefully handle edge cases&lt;BR /&gt;by returning 0.0 or by clamping input values :&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;&lt;EM&gt;division by zero&lt;/EM&gt;&lt;/FONT&gt;: returns 0.0 instead of crashing.&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;&lt;EM&gt;invalid roots&lt;/EM&gt;&lt;/FONT&gt;: sqrt(-x) returns 0.0.&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;&lt;EM&gt;logarithms&lt;/EM&gt;&lt;/FONT&gt;: log(0), log(-x) are handled safely.&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;&lt;EM&gt;trigonometry&lt;/EM&gt;&lt;/FONT&gt;: asin/acos inputs &amp;gt; 1 are clamped.&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;&lt;EM&gt;power&lt;/EM&gt;&lt;/FONT&gt;: pow(-x, float) returns 0.0.&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;&lt;EM&gt;modulo&lt;/EM&gt;&lt;/FONT&gt;: fmod(x, 0) returns 0.0.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;U&gt;&lt;EM&gt;&lt;STRONG&gt;// Added new fncs :&lt;/STRONG&gt;&lt;/EM&gt;&lt;/U&gt;&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;dot&lt;/EM&gt;&lt;/FONT&gt;(a, b) : Dot product. Returns scalar.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;cross&lt;/EM&gt;&lt;/FONT&gt;(a, b) : Cross product. Returns vector perpendicular to a and b.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;length&lt;/EM&gt;&lt;/FONT&gt;(v) : Returns the magnitude of vector v.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;distance&lt;/EM&gt;&lt;/FONT&gt;(a, b) : Distance between points a and b.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;normalize&lt;/EM&gt;&lt;/FONT&gt;(v) : Returns direction vector (length 1.0).&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;reflect&lt;/EM&gt;&lt;/FONT&gt;(I, N) : Reflects vector I against normal N.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;refract&lt;/EM&gt;&lt;/FONT&gt;(I, N, ior) : Calculates refraction vector based on Index of Refraction.&lt;BR /&gt;&lt;EM&gt;&lt;FONT color="#FF6600"&gt;smin&lt;/FONT&gt;(&lt;/EM&gt;a, b, k), &lt;FONT color="#FF6600"&gt;&lt;EM&gt;smax&lt;/EM&gt;&lt;/FONT&gt;(...) : Smooth Minimum/Maximum. Blends a and b with factor k.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;rotate&lt;/EM&gt;&lt;/FONT&gt;(vec, axis, angle) : Rotates vector vec around axis by angle (radians).&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;translate&lt;/EM&gt;&lt;/FONT&gt;(vec, vec) : Translate a vector vec by another vec.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;scale&lt;/EM&gt;&lt;/FONT&gt;(vec, vec) : Scale a vector vec by another vec.&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;vec&lt;/EM&gt;&lt;/FONT&gt;(a, b, c) : Create a vector with a, b, c components.&lt;/P&gt;&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;EM&gt;rnd&lt;/EM&gt;&lt;/FONT&gt;(x) : High quality random number generator&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;U&gt;&lt;EM&gt;&lt;STRONG&gt;// Vector accessors&lt;/STRONG&gt;&lt;/EM&gt;&lt;/U&gt;&lt;BR /&gt;.x, .y, .z&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;U&gt;&lt;EM&gt;&lt;STRONG&gt;// Added 3D shading globals :&lt;/STRONG&gt;&lt;/EM&gt;&lt;/U&gt;&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGP&lt;/FONT&gt; : shading point in world-space&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGPO&lt;/FONT&gt; : shading point in&amp;nbsp;object-space&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGRO&lt;/FONT&gt; : ray origin&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGRD&lt;/FONT&gt; : ray direction&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGN&lt;/FONT&gt;, &lt;FONT color="#FF6600"&gt;SGNF&lt;/FONT&gt;, &lt;FONT color="#FF6600"&gt;SGNG&lt;/FONT&gt;, &lt;FONT color="#FF6600"&gt;SGNGF&lt;/FONT&gt; : shading normals&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGDPDU&lt;/FONT&gt;, &lt;FONT color="#FF6600"&gt;SGDPDV&lt;/FONT&gt; : surface derivatives&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGDDDX&lt;/FONT&gt;, &lt;FONT color="#FF6600"&gt;SGDDDY&lt;/FONT&gt; : ray direction derivatives&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;SGDNDX&lt;/FONT&gt;, &lt;FONT color="#FF6600"&gt;SGDNDY&lt;/FONT&gt; : surface normal derivatives&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;U&gt;&lt;EM&gt;&lt;STRONG&gt;// Added new Constants :&lt;/STRONG&gt;&lt;/EM&gt;&lt;/U&gt;&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;TWOPI&lt;/FONT&gt; : 6.283.. (pi*2)&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;PITWO&lt;/FONT&gt; : 1.570.. (pi/2)&lt;BR /&gt;&lt;FONT color="#FF6600"&gt;INVPI&lt;/FONT&gt; : 0.318.. (1/pi)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;U&gt;&lt;EM&gt;&lt;STRONG&gt;// Expression'recipes' :&lt;BR /&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Sine Wave Distortion&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;x + sin(y * 10.0 + z) * 0.1&lt;/FONT&gt;&lt;BR /&gt;Inputs: X=UV, Y=UV, Z=Time.&lt;BR /&gt;Adds a sine wave ripple traveling along the Y axis to the coordinate X.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Organic Soft Union (SDF)&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;smin(length(x) - 1.0, length(y) - 0.5, 0.2)&lt;/FONT&gt;&lt;BR /&gt;Inputs: X=Pos A, Y=Pos B.&lt;BR /&gt;Smoothly blends two spheres (radii 1.0 and 0.5) with a softness factor of 0.2.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Fresnel Term&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;pow(1.0 - max(0.0, dot(x, y)), 5.0)&lt;/FONT&gt;&lt;BR /&gt;Inputs: X=Normal, Y=View Vector.&lt;BR /&gt;Calculates a standard Fresnel edge glow effect manually.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Rounded Square&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;step(length(max(abs(rotate(UV - 0.5, N, X.x)) - Y, 0)), Z.x)&lt;/FONT&gt;&lt;BR /&gt;Inputs: X.x=Rotation, Y.x,Y.y=X,Y dimensions, Z.x=Rounded angle.&lt;BR /&gt;Draws a rounded square.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Concentric Shape&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;mod(length(PO + sin(PO * 5) * 0.2) * x, 1)&lt;/FONT&gt;&lt;BR /&gt;Inputs: X=Repetitions.&lt;BR /&gt;Draws concentric shapes.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Squares/Circles Pattern&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;mod(sin(U * Y.z) + sin(V * (X.z+1)), 1.0)&lt;/FONT&gt;&lt;BR /&gt;Inputs: X=Repetitions.&lt;BR /&gt;Draws a nice alternated pattern.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Diamond Checkboard&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;(floor((PO.x+2.5)*x-PO.y*y) + floor(PO.x*x+PO.y*y)) %2&lt;/FONT&gt;&lt;BR /&gt;Inputs: X=Repetitions.&lt;BR /&gt;Draws a diamond checkboard.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Origami Pattern&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;mod((((atanz(UV.y-.5, UV.x-.5) / (PI*2)) +0.5) *x), 1)&lt;/FONT&gt;&lt;BR /&gt;Inputs: X=Repetitions.&lt;BR /&gt;Draws a kind of origami pattern.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Bar Code&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;step(x.x, fract(sin(floor(WIN.x)*12.9898)*43758.453))&lt;/FONT&gt;&lt;BR /&gt;Inputs: y=Thickness.&lt;BR /&gt;Draws a kind of origami pattern.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Smooth Circular Grid&lt;/EM&gt;&lt;BR /&gt;&amp;gt;&amp;gt; &lt;FONT color="#FF6600"&gt;1.0 - sstep(0.0, 0.5, ( length(( ((PO+z)*y-floor((PO+z)*y)) * 2.0) - 1) - 0.9) / 0.5)&lt;/FONT&gt;&lt;BR /&gt;Inputs:y=Repetitions; z=Position,&lt;BR /&gt;Draws a kind of origami pattern.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombo_mathparser_arnold,jpg.jpg" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1618865iED413E730F526648/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombo_mathparser_arnold,jpg.jpg" alt="rombo_mathparser_arnold,jpg.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.rombo.tools/downloads/romboMathParser.zip" target="_blank" rel="noopener"&gt;https://www.rombo.tools/downloads/romboMathParser.zip&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Apr 2026 21:09:20 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14018167#M5210</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2026-04-09T21:09:20Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14018432#M5211</link>
      <description>&lt;P&gt;Thanks for the update, now Arnol-7.4.5.0 has &lt;STRONG&gt;Line&lt;/STRONG&gt; shader !&lt;BR /&gt;by the way any news for&amp;nbsp;rtoa v1.6?&lt;/P&gt;</description>
      <pubDate>Sun, 15 Feb 2026 05:01:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14018432#M5211</guid>
      <dc:creator>rachid_1</dc:creator>
      <dc:date>2026-02-15T05:01:36Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14027147#M5213</link>
      <description>&lt;P&gt;Is there a way to make this work in 3ds Max/MaxToA?&lt;/P&gt;</description>
      <pubDate>Sat, 21 Feb 2026 17:00:01 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14027147#M5213</guid>
      <dc:creator>MartinBeh</dc:creator>
      <dc:date>2026-02-21T17:00:01Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14027330#M5214</link>
      <description>&lt;P&gt;Drop the .dll in a path seen by arnold.&lt;BR /&gt;Or add an environment variable ARNOLD_PLUGIN_PATH and add there the folder path that contains the .dll.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":vulcan_salute:"&gt;🖖&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 21 Feb 2026 20:38:11 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14027330#M5214</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2026-02-21T20:38:11Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14027676#M5215</link>
      <description>&lt;P&gt;Apologies, I am new to adding plugins to Arnold...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;"Drop the .dll in a path..." - the .mtd is not needed?&lt;/LI&gt;
&lt;LI&gt;"seen by Arnold" -- is the .dll made for a specific version of Arnold, or will it work for multiple versions?&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 22 Feb 2026 09:49:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14027676#M5215</guid>
      <dc:creator>MartinBeh</dc:creator>
      <dc:date>2026-02-22T09:49:50Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14028026#M5216</link>
      <description>&lt;P&gt;Yeah drop also the mtd file, it will put the shader into RTOA/Utilities.&lt;/P&gt;&lt;P&gt;Can't remember right now if latest 7.4.5.0 is compatible with other 7.4.x.x .. just try it &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 22 Feb 2026 22:23:11 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14028026#M5216</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2026-02-22T22:23:11Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14082605#M5244</link>
      <description>&lt;P&gt;An example on how to compose a vector by creating one from scalar inputs (U and V).&lt;/P&gt;&lt;P&gt;Uses also upcoming (rtoa v2.0) noise colorizer and noise alligator&lt;BR /&gt;(most 3D new noises are also 2D, ie. can be used with UVs).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombonoisercolorizer_mathparser.jpg" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1632165i64B1C91E86512F5C/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombonoisercolorizer_mathparser.jpg" alt="rombonoisercolorizer_mathparser.jpg" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":vulcan_salute:"&gt;🖖&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Apr 2026 19:30:28 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14082605#M5244</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2026-04-10T19:30:28Z</dc:date>
    </item>
    <item>
      <title>Re: rombotools::freebie::mathparser</title>
      <link>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14085828#M5246</link>
      <description>&lt;P&gt;Here we compute a 'Fresnel' factor on-the-fly with the mathparser to compose diffuse + reflect contributions.&lt;/P&gt;&lt;P&gt;It's the part multiplied over y (where reflectgeneralized is piped into) :&amp;nbsp;&lt;EM&gt;pow(1 - dot(SGN, neg(SGRD)), 4).&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As an exercise I leave here the Schlick (Fresnel) approximation that can also be easily implemented with mathparser :&lt;/P&gt;&lt;LI-CODE lang="general"&gt;float F = 0.04f + (1.0f - 0.04f) * powf(1.0f - AiClamp(AiV3Dot(sg-&amp;gt;Nf, -sg-&amp;gt;Rd), 0.0f, 1.0f), 5.0f);&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rombo_parallax_mathparser.jpg" style="width: 999px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1632442i1454E4C6EDC7DFC3/image-size/large?v=v2&amp;amp;px=999" role="button" title="rombo_parallax_mathparser.jpg" alt="rombo_parallax_mathparser.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;This shows also an application for the&amp;nbsp;upcoming (rtoa v2.0) Parallax shader (part of rtoa demo scenes).&lt;/P&gt;&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":vulcan_salute:"&gt;🖖&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Apr 2026 19:31:33 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/arnold-general-rendering-forum/rombotools-freebie-mathparser/m-p/14085828#M5246</guid>
      <dc:creator>maxtarpini</dc:creator>
      <dc:date>2026-04-10T19:31:33Z</dc:date>
    </item>
  </channel>
</rss>

