Originally, I concatenated strings in order to generated the clustered light list generation kernel name. But @chman pointed out this would be bad for the GC, since this code runs every frame.
So instead, I pre-generate the kernel names, and index into a 2D array to select the correct kernel string. Heck, it may even look nicer this way.
- Added the fuzziness slot to ReplaceColorNode and ColorMaskNode. It works like
the fuzziness parameter in Photoshop that gives softer edges to the mask.
- Changed the output format of ColorMaskNode from Vector3 to Vector1. It only
outputs single channel masks.
- Added the opacity slot to BlendNode. It's useful when one tries using
BlendNode like layers in Photoshop.
There was an issue that the selection list was not cleared on deletion of nodes.
This caused several problems when invoking node-editing actions right after
deletion.
e.g. Delete a random node and then open the right click menu without selecting
anything. This causes InvalidOperationException in BuildContextualMenu.
This small fix changes the behavior to clear the selection list in the end of
the deletion function.
ResizeSideHandles resize function are split into three cases, and the
resize handle is recording which corner it is closest to when the mouse
is preseed. This is to figure out which direction the window should
resize in when maintaining aspect ratio.
- Fixed an issue causing InvalidOperationException when opening the right-click
menu without having a selected node. Now it shows "Open Documentation" menu
item only when a single node is selected.
- Changed not to show the separator when the menu item is hidden.
public virtual string documentationURL() has been added to AbstractMaterialNode
Pressing F1 will take you to the documentation if it exists.
Right clicking on a node gives you the context menu item See Documentation that also takes you to the documentation if it exists.