Browse Source

added a bunch, changed a little. +aths fpher lago lbpc =lasi lxtr2

master
Crystalize 8 months ago
parent
commit
0fece07ca6
  1. 30
      arctanh_shift.xml
  2. 41
      fluxpher.xml
  3. 139
      linkA_grand_outside.xml
  4. 29
      linkA_split_interest.xml
  5. 103
      linkB_perfect_circle.xml
  6. 4
      linkX_the_ringer2.xml

30
arctanh_shift.xml

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<user_transforms>
<transform_def name="arctanh_shift">
<node name="input_params">
<real name="arctanh">1</real>
<real name="arctanh_shift">0</real>
</node>
<node name="internal_params">
<real name="weight" />
<real name="shift" />
</node>
<string name="winter_init_function">
<![CDATA[
arctanh_shift_init_result(arctanh * invpi(), arctanh_shift)
]]>
</string>
<string name="winter_eval_function">
<![CDATA[
let
z = complex(p_in.x, p_in.y)
result = weight * log((z + complex(1.0, shift)) / (-z + complex(1.0, -shift)))
in
vec2(result.re, result.im)
]]>
</string>
</transform_def>
</user_transforms>

41
fluxpher.xml

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<user_transforms>
<transform_def name="fluxpher">
<node name="input_params">
<real name="fluxpher">1</real>
<real name="mod1">0</real>
</node>
<node name="internal_params">
<real name="weight" />
<real name="mod1" />
</node>
<int name="num_unit_randoms">4</int>
<string name="winter_init_function">
<![CDATA[
fluxpher_init_result(fluxpher, mod1)
]]>
</string>
<string name="winter_eval_function">
<![CDATA[
let
r2 = dot(p_in, p_in) / max(mod1, -mod1)
fspher = if r2 > 1.0
then if unit_rnd_0 < 0.5
then p_in * (2.0 / r2)
else p_in * 2.0
else vec2(0.0, 0.0)
spher = vec2(fspher.x + (1.0 + (mod1 * 0.1)), fspher.y)
r = length(spher)
a = atan2(spher.y, spher.x)
c = floor(a * halfinvpi() + 0.5)
alpha = a * 0.5 + c * pi()
in
vec2(cos(alpha), sin(alpha)) * (r * weight)
]]>
</string>
</transform_def>
</user_transforms>

139
linkA_grand_outside.xml

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<user_transforms>
<transform_def name="linkA_grand_outside">
<node name="input_params">
<real name="le_grand_julien">1</real>
<real name="le_grand_julien_inside_ring" minval="0.0" maxval="1.0">0.0</real>
<real name="le_grand_julien_inside_power">2</real>
<real name="le_grand_julien_inside_dist">1</real>
<real name="le_grand_julien_inside_size" minval="0.0">0.5</real>
<real name="le_grand_julien_inside_adjust">0.0</real>
<real name="le_grand_julien_outside_ring" minval="0.0">0.2</real>
<real name="le_grand_julien_outside_power">3</real>
<real name="le_grand_julien_outside_dist">-1</real>
<real name="le_grand_julien_outside_size">1.5</real>
<real name="le_grand_julien_outside_adjust">1.0</real>
<real name="le_grand_julien_a">1</real>
<real name="le_grand_julien_b">0</real>
<real name="le_grand_julien_c">0</real>
<real name="le_grand_julien_d">1</real>
<real name="le_grand_julien_e">0</real>
<real name="le_grand_julien_f">0</real>
<real name="le_grand_julien_inner_weight1" minval="0.0" maxval="1.0">0.5</real>
<real name="le_grand_julien_inner_weight2" minval="0.0" maxval="1.0">0.1</real>
</node>
<node name="internal_params">
<real name="weight" />
<real name="iring" />
<real name="ipower" />
<real name="idist" />
<real name="isize" />
<real name="iadjust" />
<real name="oring" />
<real name="opower" />
<real name="odist" />
<real name="osize" />
<real name="oadjust" />
<real name="a" />
<real name="b" />
<real name="c" />
<real name="d" />
<real name="e" />
<real name="f" />
<real name="iw1" />
<real name="iw2" />
</node>
<int name="num_unit_randoms">11</int>
<int name="num_gauss_randoms">1</int>
<string name="winter_init_function">
<![CDATA[
linkA_grand_outside_init_result(le_grand_julien, le_grand_julien_inside_ring, le_grand_julien_inside_power, le_grand_julien_inside_dist / le_grand_julien_inside_power * 0.5, le_grand_julien_inside_size, le_grand_julien_inside_adjust,
le_grand_julien_outside_ring, le_grand_julien_outside_power, le_grand_julien_outside_dist / le_grand_julien_outside_power * 0.5, le_grand_julien_outside_size, le_grand_julien_outside_adjust, le_grand_julien_a, le_grand_julien_b, le_grand_julien_c,
le_grand_julien_d, le_grand_julien_e, le_grand_julien_f, le_grand_julien_inner_weight1, le_grand_julien_inner_weight2)
]]>
</string>
<string name="winter_eval_function">
<![CDATA[
let
rosize = osize - oring
risize = if isize - iring >= 0.0
then if isize - iring >= rosize
then rosize
else isize - iring
else 0.0
misize = if isize >= rosize
then rosize
else isize
rooti = truncateToInt(ipower * unit_rnd_0)
ai = (atan2(p_in.y, p_in.x) + toReal(rooti) * twopi()) / ipower
ri = (((isize + osize) / 2) + iadjust) * pow(dot(p_in, p_in), idist)
x = a * p_in.x + b * p_in.y + e
y = c * p_in.x + d * p_in.y + f
rooto = truncateToInt(opower * unit_rnd_1)
ao = (atan2(y, x) + toReal(rooto) * twopi()) / opower
ro = (osize + oadjust) * pow(x * x + y * y, odist)
ijulian = vec2(cos(ai), sin(ai)) * ri
ojulian = vec2(cos(ao), sin(ao)) * ro
ir_min = min(rosize, misize)
ir_max = max(rosize, misize)
irad = length(ijulian)
iang = atan2(ijulian.y, ijulian.x)
is = sin(iang)
ic = cos(iang)
icrop = if irad > ir_max || irad < ir_min
then if 1.0 == 1.0
then vec2(0.0, 0.0)
else vec2(ic, is) * (ir_max)
else ijulian
or_min = min(osize, 10000000)
or_max = max(osize, 10000000)
orad = length(ojulian)
oang = atan2(ojulian.y, ojulian.x)
os = sin(oang)
oc = cos(oang)
ocrop = if orad > or_max || orad < or_min
then if 1.0 == 1.0
then vec2(0.0, 0.0)
else vec2(oc, os) * (or_max)
else ojulian
blrad = osize * sqrt(unit_rnd_8)
bangle = unit_rnd_9 * twopi()
blur = vec2(cos(bangle), sin(bangle)) * blrad
bir_min = min(misize, risize)
bir_max = max(misize, risize)
brad = length(blur)
bang = atan2(blur.y, blur.x)
bs = sin(bang)
bc = cos(bang)
bicrop = if brad > bir_max || brad < bir_min
then if 1.0 == 1.0
then vec2(0.0, 0.0)
else vec2(bc, bs) * (bir_max)
else blur
bor_min = min(rosize, osize)
bor_max = max(rosize, osize)
bocrop = if brad > bor_max || brad < bor_min
then if 1.0 == 1.0
then vec2(0.0, 0.0)
else vec2(bc, bs) * (bor_max)
else blur
iocrop = if unit_rnd_4 <= iw1 then icrop else ocrop
biocrop = if unit_rnd_5 <= 0.5 then bicrop else bocrop
in
(if unit_rnd_10 <= iw2 then iocrop else biocrop) * weight
]]>
</string>
</transform_def>
</user_transforms>

29
linkA_split_interest.xml

@ -6,7 +6,7 @@
<real name="split_interest_split">0</real>
<real name="split_interest_spread">0</real>
<real name="split_interest_symmetry_type" minval="0.0" maxval="0.05">0</real>
<real name="split_interest_interest_type" minval="0.0" maxval="0.05">0</real>
<real name="split_interest_interest_type" minval="0.0" maxval="0.5">0</real>
</node>
<node name="internal_params">
@ -36,18 +36,33 @@
r = spread * sqrt(sqrt(num / den))
fluxa = vec2(cos(a), sin(a)) * r
fluxb = vec2(-cos(a), if syty == 0.0 then -sin(a) else sin(a)) * r
rflux = lerp(fluxa, fluxb, if unit_rnd_0 >= 0.5 then 1.0 else 0.0)
rflux = if unit_rnd_0 >= 0.5 then fluxa else fluxb
d = dot(p_in,p_in)
r_avg = weight * sqrt(1 + 4 * p_in.x / (d - 2 * p_in.x + (spread - 1.0)))
d = dot(p_in,p_in) * (spread - 1)
r_avg = weight * sqrt(1 + 4 * p_in.x / (d - 2 * p_in.x + 1.0))
a_avg = 0.5 * atan2(2 * p_in.y, (d - 1))
deltaa = vec2(cos(a_avg), sin(a_avg)) * r_avg
deltab = vec2(-cos(a_avg), if syty == 0.0 then -sin(a_avg) else sin(a_avg)) * r_avg
rdelta = lerp(deltaa, deltab, if unit_rnd_0 >= 0.5 then 1.0 else 0.0)
rdelta = if unit_rnd_0 >= 0.5 then deltaa else deltab
x_offset = if (if inty == 0.0 then rflux.x else rdelta.x) >= 0 then split else -split
r2 = dot(p_in, p_in) * abs(max(spread, -spread))
fspher = if r2 > 1.0
then if unit_rnd_1 < 0.5
then p_in * (2.0 / r2)
else p_in * 2.0
else vec2(0.0, 0.0)
spher = vec2(fspher.x + 1.0, fspher.y / 0.5)
r3 = length(spher) * weight
a3 = atan2(spher.y, spher.x)
c = floor(a * halfinvpi() + 0.5)
alpha = a3 * 0.5 + c * pi()
fluxphera = vec2(cos(alpha), sin(alpha)) * r3
fluxpherb = vec2(-cos(alpha), if syty == 0.0 then -sin(alpha) else sin(alpha)) * r3
rfluxpher = if unit_rnd_0 >= 0.5 then fluxphera else fluxpherb
x_offset = if (if inty == 0.0 then rflux.x else if inty == 0.5 then rfluxpher.x else rdelta.x) >= 0 then split else -split
in
(if inty == 0.0 then rflux else rdelta) + vec2(x_offset, 0.0)
(if inty == 0.0 then rflux else if inty == 0.5 then rfluxpher else rdelta) + vec2(x_offset, 0.0)
]]>
</string>
</transform_def>

103
linkB_perfect_circle.xml

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<user_transforms>
<transform_def name="linkB_perfect_circle">
<node name="input_params">
<real name="perfect_circle">1</real>
<real name="perfect_circle_ring" minval="0.0" maxval="1.0">0.1</real>
<real name="perfect_circle_switch" minval="0.0" maxval="1.0">0.0</real>
<real name="perfect_circle_mod">0.5</real>
<real name="perfect_circle_inner_weight" minval="0.0" maxval="1.0">0.1</real>
</node>
<node name="internal_params">
<real name="weight" />
<real name="ring" />
<real name="switch" />
<real name="mod" />
<real name="iw" />
</node>
<int name="num_unit_randoms">7</int>
<int name="num_gauss_randoms">1</int>
<string name="winter_init_function">
<![CDATA[
linkB_perfect_circle_init_result(perfect_circle, perfect_circle_ring, perfect_circle_switch, perfect_circle_mod, perfect_circle_inner_weight)
]]>
</string>
<string name="winter_eval_function">
<![CDATA[
let
rring = 1.0 - ring
ga = unit_rnd_0 * twopi()
gs = gauss_rnd_0 * mod
gauss = vec2(cos(ga), sin(ga)) * gs + p_in
hemisphere = gauss * (1.0 / sqrt(dot(gauss, gauss) + 1))
sa = unit_rnd_2 * twopi()
su = unit_rnd_3
sr = if mod == 1
then acos(su * 2 - 1)
else acos(exp(log(1 - su) * mod) * 2 - 1)
sm = sr * invpi()
sineblur = vec2(cos(sa), sin(sa)) * sm
rad = length(p_in)
ang = atan2(p_in.y, p_in.x) + log(rad) * mod
swirl = vec2(cos(ang), sin(ang)) * rad
z = complex(swirl.x, swirl.y)
z1 = 1.0 / z
resulta = invpi() * log((z + 1.0) / (-z + 1.0))
arctanh = vec2(resulta.re, resulta.im)
resultb = twoinvpi() * log(z + sqrt(z * z + 1.0))
arcsinh = vec2(resultb.re, resultb.im)
resultc = invpi() * log(z + sqrt(z + 1.0) * sqrt(z - 1.0))
arcsech = if unit_rnd_1 >= 0.5 then vec2(resultc.re, resultc.im) else vec2(-resultc.re, -resultc.im)
rswitch = (if switch <= 0.0
then hemisphere
else if switch <= 0.2
then sineblur
else if switch <= 0.4
then arctanh
else if switch <= 0.6
then arcsinh
else if switch <= 0.8
then arcsech
else swirl) * rring
imin = min(0.0, rring)
imax = max(0.0, rring)
irad = length(rswitch)
iang = atan2(rswitch.y, rswitch.x)
is = sin(iang)
ic = cos(iang)
inside = if irad > imax || irad < imin
then if 1.0 == 1.0
then vec2(0.0, 0.0)
else vec2(ic, is) * (imax)
else rswitch
br = unit_rnd_4
ba = unit_rnd_5 * twopi()
blur = vec2(cos(ba), sin(ba)) * br
bmin = min(rring, 1.0)
bmax = max(rring, 1.0)
rrad = length(blur)
rang = atan2(blur.y, blur.x)
rs = sin(rang)
rc = cos(rang)
ring = if rrad > bmax || rrad < bmin
then if 1.0 == 1.0
then vec2(0.0, 0.0)
else vec2(rc, rs) * (bmax)
else blur
total = if unit_rnd_6 <= iw then ring else inside
in
total * weight
]]>
</string>
</transform_def>
</user_transforms>

4
linkX_the_ringer2.xml

@ -3,7 +3,7 @@
<transform_def name="linkX_the_ringer2">
<node name="input_params">
<real name="the_ringer2">1</real>
<real name="the_ringer2_split" minval="0">0.5</real>
<real name="the_ringer2_split" minval="-1">0</real>
<real name="the_ringer2_outside_ring" minval="0">0.05</real>
<real name="the_ringer2_inside_ring" minval="0">0.05</real>
</node>
@ -20,7 +20,7 @@
<string name="winter_init_function">
<![CDATA[
linkX_the_ringer2_init_result(the_ringer2, the_ringer2_split, the_ringer2_outside_ring, the_ringer2_inside_ring)
linkX_the_ringer2_init_result(the_ringer2, the_ringer2_inside_outside_switch + 1.0, the_ringer2_outside_ring, the_ringer2_inside_ring)
]]>
</string>

Loading…
Cancel
Save