Changing and Exploring Plug-ins

 

This tutorial assumes you are already familiar with the material in The Basics of UltraFractal 5 and Its Use of Classes.

We will start with a single layer upr with substitutions for Trap Shape and Trap Textures. The upr, image and appearance of the outside tab are shown below. You may have to adjust the show/hide arrows on the parameter/object list to get the same view.

Tutorial_1 {
::t7Ffzhn2di1SvtNOQ47Gw/HE096IJH5o0F8wm0iCUsZ3FN+4CYQLNyiNUkqkUOx/73hUyvyD
Lqexwk87beQyZ4MqURzNU+nnOJIwwMcgEus1IVMKfVcYwzsCTFZx1RBVAbTlhkGnEwp7AlmE
b5krgCmRTC/hUEcHVJAj5Pu9qsrSiiyCnOxh1J9cajhJFkw/yOVAKcZDNnZ2RijiCqBTlsgU
3yNsGqWPdSNtphJ20xFEGQR+U0sok0rwfjTSDqpbEk4ZzjTySiSnOpUqQ6UHha6LMLDU0RBN
gKvCyfiILLDKZcQQrR/UBrn1WWHGgCXtjE+9WOjeHlxltmQrQaWtF9TrNHPDlyKDoNkaZB+3
1dwcy3uUTs14SQbxaeLyuBtHmQzKgudWFVoLR7RIFw0JIz3uUe7aQJlmAF0AUDC9Eb9RDVUQ
VFzaz5Obr3m/GIAFL/bKaBDn6eJHP6Eb6N/8+h3zxdUSYR9PTn1yX/5v8w3X9Pq1MzSFtRfJ
Sz2uaTnKcnSvd19jtL/B87tthRi23Kp1sMWzaI8lrcwAOkbelvZdrHdLEOEzzdQfRTxIEPxb
dqTMUfI14GQ5c7VYqNoBP8whBHHH6pQ0GqyQ8Vl9hM+K7nYN+jmLlI6vm8u4bOBvpSB6KJvg
ENL9jFeXcDGyTCzl11Sh703eyvc/Khew23z/TJcU1eTpVDqfDan7oeSrbzsPlZ0VjmTtcLox
0P+zrQxKNjTV6cK+WTs/EUSj7qPJa8c0GoZM80PBPPW8jVHUdjLfwFCfqoN7fmCva/jveXXi
N703T3xhd6HhXMs8wBkh3546BfU5xRxjAeenRpdGlPcbc/9iX16AWw0GzO7uxfuWHYwjV+gO
NFzfkMEINWCxOQPosWr3S5eETgRcvf6IQFOM3xlMyh/gaHBhmRSCLvRB0iiYi3o9M8+Ehn4p
wLbF5u8AcmAoK/0gEfHcE2PCfUOQn491DwLTX8mEWhJ8OF08AO99cpGLCN8yk99aUP2D6cMg
fmZqO+StPM3XIkdYenf8R8wMknUEAWq/bBgPoqlcWxljJxMRtKczs242KfY5qHoq1cYZ3ChD
S17IyDw9M55eCPT3CklY7WiNcYY44OTradL2WQ+Zu1/CKMe4vlMt13+PXjFWHcEibsu6r4OS
/+M2SsFUbNH3MSeN22zwHetbG9FLW6P7SRMJHY8RqUNA4F+k5XnuwL7tUB/qFZu7i1KfEPtW
2KMfAYbToOg2cOHrM89DCOAWbUgYD2I/FfR8QDXv+Fs9NI+FcvmibBhDLDfvMdC+zMhfHSF9
mnnkxd6WjsLPvrEg9Nq6aLXXjtiXZXI4QlnfKJKgJKgXIZRBO5QmP/2byyi7nOOzp4ulSvN5
2059rkcgRcKyYxi+5tisb+FRpLmnd90J9fVkTtChsHe0hvZSSKed//RJxs1A
}

 


As can be seen from the image above, the Marble Texture plug-in contains another object, called Perlin Noise Texture. It also has a browse button, so other classes can be plugged into that slot. Look at the indentations. The parameters Wave, Frequency and Amount go with Marble Texture. The parameters Octaves, Persistence, Function and Random Seed go with Perlin Noise Texture. In general, you will need to look at the indentation level to see what parameter goes with what plug-in when you have plug-ins within plug-ins. This brings us to the point of talking about a special kind of class, called a wrapper. Think of a wrapper as something that may not do much itself (although some wrappers do have some interesting functionality), but which provides a convenient way to add a group or groups of related classes. Notice I am using "class", "object" and "plug-in" interchangeably here. Strictly a class is the code, the object is the code in use, and the plug-in refers to how you, the user, manage the object. One of the most powerful wrappers for all types of orbit trap formulas is called TrapShape Merge. Notice I said all types of orbit trap formulas. In addition to Orbit Traps Gradient, written by Damien Jones, other formula writers have written orbit trap coloring formulas, and most of these can use TrapShape plug-ins. We will address some of these formulas in subsequent tutorials. The next example has a upr, an image and a screen shot of the parameter list to illustrate the use of TrapShape Merge. TrapShape Merge is in common.ulb.

Tutorial_2 {
::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
}

 

Copy the upr and paste it into UltraFractal. Try changing the merge mode. Currently intersection, union and exclusion have not be coded, so they won't work. Try changing Astroid and Pinch to other Trap Shapes to see the effect. As far as the hierarchy of plug-ins, notice that before the beginning of TrapShape Merge there is a Trap Position plug-in and after all the components of TrapShape Merge there is a Trap Transfer plug-in. These two plug-ins apply to TrapShape Merge in its entirety, while the ones within TrapShape Block apply only to that block. This give the user a great deal of control over the trap shapes.

Notice that Trap Texture (near the bottom of the parameter/plug-in list) has no preceding Trap Position and no following Trap Transfer. For some textures it is desirable to have the additional control that these plug-ins provide. If you click the browse button for Trap Texture you will find that you get a list of trap shapes, as that is the kind of object that plugs into that slot. The code that is used for trap shapes and trap textures is virtually identical in an abstract sense, so shapes and texture are interchangeable. Some trap shapes were best as "shapes" and some work best as "textures", but there is a vast grey area between the two. To get the additional control the use might want over a trap texture, we can use a TrapShape Block, which is in common.ulb. Its the same wrapper we see inside of TrapShape Merge - TrapShape Merge is a wrapper that contains other wrappers! The next upr, image and screen shot illustrate the use of TrapShape Block in the Trap Texture slot.

Tutorial_3 {
::cBKy/gn2lmVXvNOKU03jU+PY53HXbn4k2ZFv02Zq0ot7KNtPOSREbcCbxgHA3Pmf97FszHtN
xGSeoVF4eOcuA3LXcLl4cNm91xjCC0UNjgCfsRLkUMbxkwgXoF61oZTjDWTorWrRZJpBM8bE
pClYwkLJFUtCF+TBP4askT06/6qLu6i044LDHPyarl9cctmK4ow/20VQSYgoGnT1vhSijDqI
61iCUVDTTrxK14RV46aKfVLWCXTkovEHFnmdB87k0sgK8KOKJaSS6lpxZjHVKkAcsFQF+VqB
BQdcQNRmvmk/ESUWGUSZEOuC8TJZZUTZVYAQu8NU4PaYU81YKT0oDNkUv4ZwPNaOJCYZhmo0
oKRB8nLbNzyvZo6Ej4SBtYk3sLnD6hyV0CS7KrEzVlge4COZ8IA5nHS9bpOQSqJYNY2e68BN
mXglFRN5Mru607dEORSzvTiLoQX3IYw2GfVn0z7aeDDWNRhFV/XWUDb5Xv9+fs4flLp6Hl4a
Vfgieexq2pwuD95R302M8Rw3pthtE03ChRWajsGy+yFWzIMSu+D+mxtewOQ4QIfvD6q1YI6w
R7NO1eC1FQ12GYGzc8FbCYgNPoZwu2hOSiSjlakrTZX4irc/Et2drZCBY93SPo917ZvetkoW
LYFo4osjTebMDEujCzFVVCud33sz/4mRCdAtr7/7DY3U7MkGFReCwevj6Is2Fzu0lxX4NmKx
zEFk+xdcFSap2vpSljh7ZScHgUotH9Rx+jRpJ1+gT9E5Fft335Arqt5D6J8ZNuezVUwR7f+t
rbTsZ6+OCWeTj8ZS4A4dO/Wnx7m4k4EPMfFIocjgcBHGCtT71ilDuwEVzRT71AFUaQfni70y
S1zYmDH3hgpDnphIDHGrf5Zs2vda9AQtnggqWkEcRRCyZrdMydPyTdk8yGeuNEnR5wxJ3mBB
cFnH6HM3LHoleX9A4wUvnkgCHJHoWl7huvhJUQtlh9D21jRd2udO9x4Xo617uE2Fkbqxx0Mv
1POGOI53e3vDVw/ZDg7KVCGto/YSyr6GJ5Thk2sjXzE5PFOIYnjJ3aujZHPAglGJ5GK3qv5X
GiMF54Hb+6zne1PHlAfqFqPVUfmk4RdSOwgDVN1LLuUDVvE0mWz844TlBnKxyJGGsYo+9khK
/aQ0n38PcpZvHfXhaf+Jom+/+13bDVDdnqTLG1zK4OM4tvW10ucZl/CocBXQVHKxsdZAM5fM
jHeSseOrM7o4MWhOAJtubi17OVNBn7oMiosUR8KHwHZpW8CkLLNKJbeW2lTneOqRR/DBlmN7
C4H/4pexwlYdQYY+KAWs3zmNaPK7kmOL4Jz9FrIXjNJ89Ho3byH85H3SKxNMt5D/ZP5Z+Cbu
8ckDy85UUgPPV5YwLadmNfpQ9uCcsUm4Hf1Le1IlH+tU7tWqX8nu7R99a09AnimeCY3cwI6Y
1N3C08ikdF+c46N2asSLJ8V612StPum2+pW/YS7Nfa4bpwzg459l1eTfueWaP7fnEOFQFdyz
RwQkfjW0uP/GRNe0mDe2PGvqSIgVMYggtFENfWAlXQeFFHYZBd5Vxpzmm11r5Tj32fyspzua
uNxX7Qp7GKLZWS6ku+nst/JTmPfKgo7/Ey+agL2Otb+/kkmB7j/PN+oUkA==
}

 

Copy the upr and paste it into UltraFractal. Try changing various parameters in Trap Position and Default Gradient Transfer to see the effects. Go to the browser for Trap Texture/TrapShape Block and replace TrapShape Block with fBm (its in dmj5.ulb). This will remove benefits of Trap Shape and Default Gradient Transfer. Try to obtain a nice texture now that the plug-ins from TrapShape Block are no longer available.