Added documentation for all 3D signed distance functions nodes.
@ -8,6 +8,7 @@ to describe procedural materials.
|
|||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
nodes_simple
|
nodes_simple
|
||||||
|
nodes_3d
|
||||||
nodes_pattern
|
nodes_pattern
|
||||||
nodes_noise
|
nodes_noise
|
||||||
nodes_filter
|
nodes_filter
|
||||||
|
BIN
addons/material_maker/doc/images/node_sdf3d_boolean.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_boolean_sample.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_box.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_box_sample.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_capsule.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_capsule_sample.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_circlerepeat.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 6.8 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_cone.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_cone_sample.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_cylinder.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_cylinder_sample.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_extrusion.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_extrusion_sample.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_render.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_repeat.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_repeat_sample.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_revolution.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 19 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_rotate.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_roundedshape.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 13 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_samples.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_scale.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_smoothboolean.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 12 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_sphere.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_sphere_sample.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_torus.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_torus_sample.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
addons/material_maker/doc/images/node_sdf3d_translate.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
69
addons/material_maker/doc/node_3d_sdf.rst
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
3D signed distance function geometry nodes
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The signed distance function nodes can be used to define complex 3D geometry using simple
|
||||||
|
shapes.
|
||||||
|
|
||||||
|
They are based on a very small set of basic shapes, that can be combined using operators,
|
||||||
|
and finally output as a greyscale heightmap and a color normal map using the **render** node.
|
||||||
|
|
||||||
|
Describing 3D objects using SDF primitives is more difficult than using existing meshes, but this
|
||||||
|
method integrates smoothly with shader generation, and (as many nodes in Material Maker) is
|
||||||
|
resolution independant.
|
||||||
|
|
||||||
|
All output samples shown in this section are preview images.
|
||||||
|
|
||||||
|
All Signed Distance Functions nodes are based on code written by Inigo Quilez that can be found
|
||||||
|
`on this page`__.
|
||||||
|
|
||||||
|
.. _sdf3dpage: https://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm
|
||||||
|
|
||||||
|
__ sdf3dpage_
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
node_3d_sdf_render
|
||||||
|
|
||||||
|
Shapes
|
||||||
|
++++++
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
node_3d_sdf_shapes_sphere
|
||||||
|
node_3d_sdf_shapes_box
|
||||||
|
node_3d_sdf_shapes_cylinder
|
||||||
|
node_3d_sdf_shapes_capsule
|
||||||
|
node_3d_sdf_shapes_cone
|
||||||
|
node_3d_sdf_shapes_torus
|
||||||
|
|
||||||
|
Operators
|
||||||
|
+++++++++
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
node_3d_sdf_operators_boolean
|
||||||
|
node_3d_sdf_operators_smoothboolean
|
||||||
|
node_3d_sdf_operators_rounded
|
||||||
|
node_3d_sdf_operators_repeat
|
||||||
|
node_3d_sdf_operators_circlerepeat
|
||||||
|
node_3d_sdf_operators_extrusion
|
||||||
|
node_3d_sdf_operators_revolution
|
||||||
|
|
||||||
|
Transforms
|
||||||
|
++++++++++
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
node_3d_sdf_transforms_translate
|
||||||
|
node_3d_sdf_transforms_scale
|
||||||
|
node_3d_sdf_transforms_rotate
|
||||||
|
|
||||||
|
Example images
|
||||||
|
++++++++++++++
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_samples.png
|
||||||
|
:align: center
|
31
addons/material_maker/doc/node_3d_sdf_operators_boolean.rst
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
Boolean node
|
||||||
|
............
|
||||||
|
|
||||||
|
The **Boolean** node generates a 3D signed distance function for the combination (union,
|
||||||
|
intersection or difference) of its inputs.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_boolean.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Boolean** node accepts 2 inputs in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Boolean** node generates a signed distance function of the
|
||||||
|
combination of its inputs.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Boolean** node accepts *the operator it applies (union, intersection or
|
||||||
|
difference)* as parameter.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_boolean_sample.png
|
||||||
|
:align: center
|
@ -0,0 +1,30 @@
|
|||||||
|
CircleRepeat node
|
||||||
|
...........
|
||||||
|
|
||||||
|
The **CircleRepeat** node generates a 3D signed distance image of a circular repetition of its
|
||||||
|
input. The source object must be offset in the positive Y direction from the center.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_circlerepeat.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **CircleRepeat** node accepts an input in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **CircleRepeat** node generates a signed distance function of the
|
||||||
|
repeated version of the input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **CircleRepeat** node accepts *the number of repetitions* as parameter.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_circlerepeat_sample.png
|
||||||
|
:align: center
|
@ -0,0 +1,30 @@
|
|||||||
|
Extrusion node
|
||||||
|
..............
|
||||||
|
|
||||||
|
The **Extrusion** node generates a 3D signed distance function of a shape based on
|
||||||
|
its (2D signed function) input extruded along the Y axis.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_extrusion.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Extrusion** node accepts an input in 2D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Extrusion** node generates a signed distance function of the
|
||||||
|
extruded version of the input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Extrusion** node accepts the *the length* of the extruded shape as parameter.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_extrusion_sample.png
|
||||||
|
:align: center
|
34
addons/material_maker/doc/node_3d_sdf_operators_repeat.rst
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
Repeat node
|
||||||
|
...........
|
||||||
|
|
||||||
|
The **Repeat** node generates a 3D signed distance image of a repetition of its
|
||||||
|
input on the X and Y axes. It can also apply a random rotation to the repeated
|
||||||
|
object instances.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_repeat.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Repeat** node accepts an input in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Repeat** node generates a signed distance function of the
|
||||||
|
repeated version of the input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Repeat** node accepts the following parameters:
|
||||||
|
|
||||||
|
* *the repetition offset* for both X and Y axes
|
||||||
|
* *the amount of random rotation* applied to all instances
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_repeat_sample.png
|
||||||
|
:align: center
|
@ -0,0 +1,30 @@
|
|||||||
|
Revolution node
|
||||||
|
...............
|
||||||
|
|
||||||
|
The **Revolution** node generates a 3D signed distance function of a shape based on
|
||||||
|
the revolution along the Z axis of its (2D signed function) input.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_revolution.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Revolution** node accepts an input in 2D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Revolution** node generates a signed distance function of the
|
||||||
|
revolution of the input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Revolution** node accepts the *the radius* of the revolution operation as parameter.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_revolution_sample.png
|
||||||
|
:align: center
|
33
addons/material_maker/doc/node_3d_sdf_operators_rounded.rst
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
Rounded node
|
||||||
|
.................
|
||||||
|
|
||||||
|
The **Rounded** node generates a 3D signed distance function of a rounded shape
|
||||||
|
based on its input, by substracting a constant from its input (i.e.
|
||||||
|
"growing" it towards the outside).
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_roundedshape.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Rounded** node accepts an input in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Rounded** node generates a signed distance function of the
|
||||||
|
rounded version of the input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Rounded** node accepts the following parameters:
|
||||||
|
|
||||||
|
* *the distance* to be substracted from the function
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_roundedshape_sample.png
|
||||||
|
:align: center
|
@ -0,0 +1,33 @@
|
|||||||
|
SmoothBoolean node
|
||||||
|
..................
|
||||||
|
|
||||||
|
The **SmoothBoolean** node generates a 3D signed distance image for the combination (union,
|
||||||
|
intersection or difference) of its inputs.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_smoothboolean.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **SmoothBoolean** node accepts 2 inputs in signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **SmoothBoolean** node generates a signed distance function of the
|
||||||
|
combination of its inputs.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **SmoothBoolean** node accepts the following parameters:
|
||||||
|
|
||||||
|
* *the operator it applies (union, intersection or difference)*
|
||||||
|
* *the smoothness* of the operation
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_smoothboolean_sample.png
|
||||||
|
:align: center
|
27
addons/material_maker/doc/node_3d_sdf_render.rst
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Render node
|
||||||
|
...........
|
||||||
|
|
||||||
|
The **Render** node generates images from a 3D signed distance function inputs.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_render.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Render** node accepts an input in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Render** node generates two images from its input:
|
||||||
|
|
||||||
|
* a *height map* of the rendered input along the Z axis
|
||||||
|
* a *normal map* of the rendered input calculated directly
|
||||||
|
using the 3D signed function (and consequently more
|
||||||
|
accurate than a normal map generated from the height map)
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Render** node does no accept any parameter.
|
31
addons/material_maker/doc/node_3d_sdf_shapes_box.rst
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
Box node
|
||||||
|
........
|
||||||
|
|
||||||
|
The **Box** node generates a 3d signed distance function for a box with rounded corners.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_box.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Box** node does not accept any input.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Box** node generates a signed distance function for a box.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Box** node accepts the following parameters:
|
||||||
|
|
||||||
|
* the X, Y and Z sizes of the box (not including the rounded corners and edges)
|
||||||
|
* the radius of the rounded corners and edges
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_box_sample.png
|
||||||
|
:align: center
|
28
addons/material_maker/doc/node_3d_sdf_shapes_capsule.rst
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Capsule node
|
||||||
|
............
|
||||||
|
|
||||||
|
The **Capsule** node generates a 3d signed distance function for a capsule.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_capsule.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Capsule** node does not accept any input.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Capsule** node generates a signed distance function for a capsule.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Capsule** node accepts as parameters the length of the capsule and its radius.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_capsule_sample.png
|
||||||
|
:align: center
|
28
addons/material_maker/doc/node_3d_sdf_shapes_cone.rst
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Capsule node
|
||||||
|
............
|
||||||
|
|
||||||
|
The **Capsule** node generates a 3d signed distance function for a capsule.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_capsule.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Capsule** node does not accept any input.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Capsule** node generates a signed distance function for a capsule.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Capsule** node accepts as parameters the length of the capsule and its radius.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_capsule_sample.png
|
||||||
|
:align: center
|
28
addons/material_maker/doc/node_3d_sdf_shapes_cylinder.rst
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Cylinder node
|
||||||
|
.............
|
||||||
|
|
||||||
|
The **Cylinder** node generates a 3d signed distance function for a cylinder.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_cylinder.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Cylinder** node does not accept any input.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Cylinder** node generates a signed distance function for a cylinder.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Cylinder** node accepts as parameters the length of the cylinder and its radius.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_cylinder_sample.png
|
||||||
|
:align: center
|
28
addons/material_maker/doc/node_3d_sdf_shapes_sphere.rst
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Sphere node
|
||||||
|
...........
|
||||||
|
|
||||||
|
The **Sphere** node generates a 3d signed distance function for a sphere.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_sphere.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Sphere** node does not accept any input.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Sphere** node generates a signed distance function for a sphere.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Sphere** node accepts a single parameter, its radius.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_sphere_sample.png
|
||||||
|
:align: center
|
28
addons/material_maker/doc/node_3d_sdf_shapes_torus.rst
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Torus node
|
||||||
|
..........
|
||||||
|
|
||||||
|
The **Torus** node generates a 3d signed distance function for a torus.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_torus.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Torus** node does not accept any input.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Torus** node generates a signed distance function for a torus.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Torus** node accepts as parameters both radiuses of the torus.
|
||||||
|
|
||||||
|
Example images
|
||||||
|
::::::::::::::
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_torus_sample.png
|
||||||
|
:align: center
|
24
addons/material_maker/doc/node_3d_sdf_transforms_rotate.rst
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Rotate node
|
||||||
|
...........
|
||||||
|
|
||||||
|
The **Rotate** node generates a 3D signed distance function of a rotated shape
|
||||||
|
based on its input.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_rotate.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Rotate** node accepts an input in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Rotate** node generates a signed distance function of the
|
||||||
|
rotated input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Rotate** node accepts *the angles of the rotations around the X, Y and Z axes* as parameters.
|
24
addons/material_maker/doc/node_3d_sdf_transforms_scale.rst
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Scale node
|
||||||
|
..........
|
||||||
|
|
||||||
|
The **Scale** node generates a 3D signed distance function of a scaled shape
|
||||||
|
based on its input.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_scale.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Scale** node accepts an input in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Scale** node generates a signed distance function of the
|
||||||
|
scaled input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Scale** node accepts *its scale factor* as parameters.
|
@ -0,0 +1,24 @@
|
|||||||
|
Translate node
|
||||||
|
..............
|
||||||
|
|
||||||
|
The **Translate** node generates a 3D signed distance function of a translated shape
|
||||||
|
based on its input.
|
||||||
|
|
||||||
|
.. image:: images/node_sdf3d_translate.png
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Inputs
|
||||||
|
::::::
|
||||||
|
|
||||||
|
The **Translate** node accepts an input in 3D signed distance function format.
|
||||||
|
|
||||||
|
Outputs
|
||||||
|
:::::::
|
||||||
|
|
||||||
|
The **Translate** node generates a signed distance function of the
|
||||||
|
translated input shape.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
::::::::::
|
||||||
|
|
||||||
|
The **Translate** node accepts *the X, Y and Z components of the translation* as parameters.
|
@ -1,5 +1,5 @@
|
|||||||
Signed distance function geometry nodes
|
2D Signed distance function geometry nodes
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The signed distance function nodes can be used to define complex geometry using simple
|
The signed distance function nodes can be used to define complex geometry using simple
|
||||||
shapes.
|
shapes.
|
||||||
@ -7,7 +7,7 @@ shapes.
|
|||||||
They are based on a very small set of basic shapes, that can be combined using operators,
|
They are based on a very small set of basic shapes, that can be combined using operators,
|
||||||
and finally output as a greyscale image using the **sdShow** node.
|
and finally output as a greyscale image using the **sdShow** node.
|
||||||
|
|
||||||
All output samples shown in this sections are images generated through the **sdView** node.
|
All output samples shown in this sections are images generated through the **sdShow** node.
|
||||||
|
|
||||||
All Signed Distance Functions nodes are based on code written by Inigo Quilez that can be found
|
All Signed Distance Functions nodes are based on code written by Inigo Quilez that can be found
|
||||||
`on this page`__.
|
`on this page`__.
|
||||||
|
10
addons/material_maker/doc/nodes_3d.rst
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
3D nodes
|
||||||
|
--------
|
||||||
|
|
||||||
|
The simple nodes are nodes that do not accept any input and generate one or several simple shapes.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 0
|
||||||
|
|
||||||
|
node_3d_sdf
|
||||||
|
|
@ -21,11 +21,12 @@ shortcut will make it possible to edit its contents using the pencil button.
|
|||||||
The newly created subgraph contains:
|
The newly created subgraph contains:
|
||||||
|
|
||||||
* all nodes that have been grouped
|
* all nodes that have been grouped
|
||||||
* an **Input** and an **Output** node that rep^resent the inputs and the outputs
|
* an **Input** and an **Output** node that represent the inputs and the outputs
|
||||||
of the subgraph. Selecting them and using the **Control+W** shortcut makes them
|
of the subgraph. Selecting them and using the **Control+W** shortcut makes them
|
||||||
editable so the subgraph inputs and outputs can be added, removed reordered or
|
editable so the subgraph inputs and outputs can be added, removed, reordered,
|
||||||
renamed. Please note that all those operations will (when possible) keep
|
renamed or have their types modified.
|
||||||
connectivity inside and outside the subgraph.
|
Please note that all those operations will (when possible) keep connectivity
|
||||||
|
inside and outside the subgraph.
|
||||||
* A **Parameters** node that is a **remote** can be edited to expose selected
|
* A **Parameters** node that is a **remote** can be edited to expose selected
|
||||||
parameters to the parent graph. When grouping nodes with a **remote**, the
|
parameters to the parent graph. When grouping nodes with a **remote**, the
|
||||||
remote will automatically be used as **Parameters** node in the nealy created
|
remote will automatically be used as **Parameters** node in the nealy created
|
||||||
|
@ -6,12 +6,6 @@
|
|||||||
"to": "colorize",
|
"to": "colorize",
|
||||||
"to_port": 0
|
"to_port": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"from": "colorize",
|
|
||||||
"from_port": 0,
|
|
||||||
"to": "Material",
|
|
||||||
"to_port": 2
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"from": "perlin",
|
"from": "perlin",
|
||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
@ -30,18 +24,6 @@
|
|||||||
"to": "Material",
|
"to": "Material",
|
||||||
"to_port": 6
|
"to_port": 6
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"from": "_3_2",
|
|
||||||
"from_port": 0,
|
|
||||||
"to": "colorize_3",
|
|
||||||
"to_port": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"from": "_3_2",
|
|
||||||
"from_port": 0,
|
|
||||||
"to": "occlusion",
|
|
||||||
"to_port": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"from": "occlusion",
|
"from": "occlusion",
|
||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
@ -84,24 +66,12 @@
|
|||||||
"to": "colorize_4",
|
"to": "colorize_4",
|
||||||
"to_port": 0
|
"to_port": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"from": "_3_2",
|
|
||||||
"from_port": 0,
|
|
||||||
"to": "colorize_5",
|
|
||||||
"to_port": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"from": "colorize_2",
|
"from": "colorize_2",
|
||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
"to": "blend",
|
"to": "blend",
|
||||||
"to_port": 0
|
"to_port": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"from": "colorize_5",
|
|
||||||
"from_port": 0,
|
|
||||||
"to": "blend",
|
|
||||||
"to_port": 2
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"from": "colorize_4",
|
"from": "colorize_4",
|
||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
@ -204,17 +174,65 @@
|
|||||||
"to": "blend_2",
|
"to": "blend_2",
|
||||||
"to_port": 2
|
"to_port": 2
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"from": "graph_3",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "sdf3d_scale",
|
||||||
|
"to_port": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"from": "_3_2",
|
"from": "_3_2",
|
||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
|
"to": "buffer",
|
||||||
|
"to_port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "buffer",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "colorize_5",
|
||||||
|
"to_port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "buffer",
|
||||||
|
"from_port": 0,
|
||||||
"to": "colorize_5_2",
|
"to": "colorize_5_2",
|
||||||
"to_port": 0
|
"to_port": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"from": "graph_3",
|
"from": "buffer",
|
||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
"to": "sdf3d_scale",
|
"to": "occlusion",
|
||||||
"to_port": 0
|
"to_port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "buffer",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "colorize_3",
|
||||||
|
"to_port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "colorize",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "blend_3",
|
||||||
|
"to_port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "blend_3",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "Material",
|
||||||
|
"to_port": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "colorize_5",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "blend_3",
|
||||||
|
"to_port": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "colorize_5_2",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "blend",
|
||||||
|
"to_port": 2
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label": "Graph",
|
"label": "Graph",
|
||||||
@ -227,8 +245,8 @@
|
|||||||
{
|
{
|
||||||
"name": "Material",
|
"name": "Material",
|
||||||
"node_position": {
|
"node_position": {
|
||||||
"x": 463,
|
"x": 390,
|
||||||
"y": 1358
|
"y": 1354
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"albedo_color": {
|
"albedo_color": {
|
||||||
@ -256,18 +274,18 @@
|
|||||||
"y": 1196.349854
|
"y": 1196.349854
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"iterations": 7,
|
"iterations": 5,
|
||||||
"persistence": 0.75,
|
"persistence": 0.7,
|
||||||
"scale_x": 4,
|
"scale_x": 32,
|
||||||
"scale_y": 4
|
"scale_y": 32
|
||||||
},
|
},
|
||||||
"type": "perlin"
|
"type": "perlin"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "colorize",
|
"name": "colorize",
|
||||||
"node_position": {
|
"node_position": {
|
||||||
"x": -367.399658,
|
"x": -347.399658,
|
||||||
"y": 1344.349976
|
"y": 1342.349976
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"gradient": {
|
"gradient": {
|
||||||
@ -275,16 +293,16 @@
|
|||||||
"points": [
|
"points": [
|
||||||
{
|
{
|
||||||
"a": 1,
|
"a": 1,
|
||||||
"b": 0.171875,
|
"b": 0,
|
||||||
"g": 0.171875,
|
"g": 0,
|
||||||
"pos": 0.1,
|
"pos": 0.118182,
|
||||||
"r": 0.171875
|
"r": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"a": 1,
|
"a": 1,
|
||||||
"b": 1,
|
"b": 1,
|
||||||
"g": 1,
|
"g": 1,
|
||||||
"pos": 1,
|
"pos": 0.909091,
|
||||||
"r": 1
|
"r": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -365,11 +383,11 @@
|
|||||||
{
|
{
|
||||||
"name": "uniform_greyscale",
|
"name": "uniform_greyscale",
|
||||||
"node_position": {
|
"node_position": {
|
||||||
"x": 114.446899,
|
"x": 138.446899,
|
||||||
"y": 1316.272949
|
"y": 1239.272949
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"color": 0
|
"color": 0.31
|
||||||
},
|
},
|
||||||
"type": "uniform_greyscale"
|
"type": "uniform_greyscale"
|
||||||
},
|
},
|
||||||
@ -411,7 +429,7 @@
|
|||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"a": 0,
|
"a": 0,
|
||||||
"s": 0.33,
|
"s": 0.3,
|
||||||
"x": 0.35,
|
"x": 0.35,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"z": 0
|
"z": 0
|
||||||
@ -426,7 +444,7 @@
|
|||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"a": 0,
|
"a": 0,
|
||||||
"r": 0.35,
|
"r": 0.25,
|
||||||
"rx": 4,
|
"rx": 4,
|
||||||
"ry": 4,
|
"ry": 4,
|
||||||
"s": 0.3,
|
"s": 0.3,
|
||||||
@ -505,7 +523,7 @@
|
|||||||
"y": 1400.797363
|
"y": 1400.797363
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"x": 0.35,
|
"x": 0.4,
|
||||||
"y": 0.35,
|
"y": 0.35,
|
||||||
"z": 0
|
"z": 0
|
||||||
},
|
},
|
||||||
@ -536,7 +554,7 @@
|
|||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"a": 0,
|
"a": 0,
|
||||||
"r": 0.35,
|
"r": 0.25,
|
||||||
"rx": 4,
|
"rx": 4,
|
||||||
"ry": 4,
|
"ry": 4,
|
||||||
"s": 0.3,
|
"s": 0.3,
|
||||||
@ -579,26 +597,26 @@
|
|||||||
{
|
{
|
||||||
"name": "colorize_5",
|
"name": "colorize_5",
|
||||||
"node_position": {
|
"node_position": {
|
||||||
"x": -131.127869,
|
"x": -147.127869,
|
||||||
"y": 1320.013184
|
"y": 1324.013184
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"gradient": {
|
"gradient": {
|
||||||
"interpolation": 1,
|
"interpolation": 0,
|
||||||
"points": [
|
"points": [
|
||||||
{
|
|
||||||
"a": 1,
|
|
||||||
"b": 0,
|
|
||||||
"g": 0,
|
|
||||||
"pos": 0,
|
|
||||||
"r": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"a": 1,
|
"a": 1,
|
||||||
"b": 1,
|
"b": 1,
|
||||||
"g": 1,
|
"g": 1,
|
||||||
"pos": 0.063636,
|
"pos": 0,
|
||||||
"r": 1
|
"r": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": 1,
|
||||||
|
"b": 0.520833,
|
||||||
|
"g": 0.520833,
|
||||||
|
"pos": 0.036364,
|
||||||
|
"r": 0.520833
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"type": "Gradient"
|
"type": "Gradient"
|
||||||
@ -609,8 +627,8 @@
|
|||||||
{
|
{
|
||||||
"name": "blend",
|
"name": "blend",
|
||||||
"node_position": {
|
"node_position": {
|
||||||
"x": 78.872131,
|
"x": 126.872131,
|
||||||
"y": 1216.013184
|
"y": 1141.013184
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"amount": 0.5,
|
"amount": 0.5,
|
||||||
@ -1030,7 +1048,7 @@
|
|||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"amount": 0.5,
|
"amount": 0.5,
|
||||||
"param0": 10,
|
"param0": 11,
|
||||||
"param1": 1.02,
|
"param1": 1.02,
|
||||||
"param2": 0,
|
"param2": 0,
|
||||||
"size": 4
|
"size": 4
|
||||||
@ -1147,12 +1165,6 @@
|
|||||||
"to": "sdf3d_smoothboolean_3_2_3",
|
"to": "sdf3d_smoothboolean_3_2_3",
|
||||||
"to_port": 0
|
"to_port": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"from": "sdf3d_translate_4_3_3",
|
|
||||||
"from_port": 0,
|
|
||||||
"to": "gen_outputs",
|
|
||||||
"to_port": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"from": "sdf3d_smoothboolean_3_2_3",
|
"from": "sdf3d_smoothboolean_3_2_3",
|
||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
@ -1284,6 +1296,12 @@
|
|||||||
"from_port": 0,
|
"from_port": 0,
|
||||||
"to": "sdf3d_boolean",
|
"to": "sdf3d_boolean",
|
||||||
"to_port": 1
|
"to_port": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "sdf3d_translate_4_3_3",
|
||||||
|
"from_port": 0,
|
||||||
|
"to": "gen_outputs",
|
||||||
|
"to_port": 0
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label": "Skull",
|
"label": "Skull",
|
||||||
@ -1304,7 +1322,7 @@
|
|||||||
"cx": 0,
|
"cx": 0,
|
||||||
"cy": 0,
|
"cy": 0,
|
||||||
"h": 0.08,
|
"h": 0.08,
|
||||||
"k": 0.1,
|
"k": 0.04,
|
||||||
"op": 0,
|
"op": 0,
|
||||||
"r": 0.3,
|
"r": 0.3,
|
||||||
"w": 0.28
|
"w": 0.28
|
||||||
@ -1423,7 +1441,7 @@
|
|||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"a": 0,
|
"a": 0,
|
||||||
"ax": -32,
|
"ax": -30,
|
||||||
"ay": 45,
|
"ay": 45,
|
||||||
"az": 0,
|
"az": 0,
|
||||||
"x": 0.35,
|
"x": 0.35,
|
||||||
@ -1441,7 +1459,7 @@
|
|||||||
"parameters": {
|
"parameters": {
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0.11,
|
"y": 0.11,
|
||||||
"z": 0.21
|
"z": 0.19
|
||||||
},
|
},
|
||||||
"type": "sdf3d_translate"
|
"type": "sdf3d_translate"
|
||||||
},
|
},
|
||||||
@ -1593,8 +1611,8 @@
|
|||||||
{
|
{
|
||||||
"name": "gen_outputs",
|
"name": "gen_outputs",
|
||||||
"node_position": {
|
"node_position": {
|
||||||
"x": -238.318359,
|
"x": -194.318359,
|
||||||
"y": 1764.935181
|
"y": 1767.935181
|
||||||
},
|
},
|
||||||
"parameters": {
|
"parameters": {
|
||||||
|
|
||||||
@ -1908,6 +1926,30 @@
|
|||||||
|
|
||||||
},
|
},
|
||||||
"type": "graph"
|
"type": "graph"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "buffer",
|
||||||
|
"node_position": {
|
||||||
|
"x": -353.830994,
|
||||||
|
"y": 1560.222534
|
||||||
|
},
|
||||||
|
"parameters": {
|
||||||
|
"lod": 0,
|
||||||
|
"size": 11
|
||||||
|
},
|
||||||
|
"type": "buffer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "blend_3",
|
||||||
|
"node_position": {
|
||||||
|
"x": 84.334427,
|
||||||
|
"y": 1296.834595
|
||||||
|
},
|
||||||
|
"parameters": {
|
||||||
|
"amount": 1,
|
||||||
|
"blend_type": 3
|
||||||
|
},
|
||||||
|
"type": "blend"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
},
|
},
|
||||||
"shader_model": {
|
"shader_model": {
|
||||||
"code": "",
|
"code": "",
|
||||||
"global": "vec2 rotate(vec2 uv, float a) {\n\tvec2 rv;\n\tfloat c = cos(a);\n\tfloat s = sin(a);\n\tuv -= vec2(0.5);\n\trv.x = uv.x*c+uv.y*s;\n\trv.y = -uv.x*s+uv.y*c;\n\treturn rv+vec2(0.5);\n}\n",
|
"global": "",
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{
|
{
|
||||||
"default": "0.0",
|
"default": "0.0",
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
},
|
},
|
||||||
"shader_model": {
|
"shader_model": {
|
||||||
"code": "",
|
"code": "",
|
||||||
"global": "vec2 rotate(vec2 uv, float a) {\n\tvec2 rv;\n\tfloat c = cos(a);\n\tfloat s = sin(a);\n\tuv -= vec2(0.5);\n\trv.x = uv.x*c+uv.y*s;\n\trv.y = -uv.x*s+uv.y*c;\n\treturn rv+vec2(0.5);\n}\n",
|
"global": "vec2 sdf2d_rotate(vec2 uv, float a) {\n\tvec2 rv;\n\tfloat c = cos(a);\n\tfloat s = sin(a);\n\tuv -= vec2(0.5);\n\trv.x = uv.x*c+uv.y*s;\n\trv.y = -uv.x*s+uv.y*c;\n\treturn rv+vec2(0.5);\n}\n",
|
||||||
"inputs": [
|
"inputs": [
|
||||||
{
|
{
|
||||||
"default": "0.0",
|
"default": "0.0",
|
||||||
@ -25,7 +25,7 @@
|
|||||||
"name": "Rotate",
|
"name": "Rotate",
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"sdf2d": "$in(rotate($uv, $a*0.01745329251))",
|
"sdf2d": "$in(sdf2d_rotate($uv, $a*0.01745329251))",
|
||||||
"type": "sdf2d"
|
"type": "sdf2d"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|