Wiki page for nodes who want to be pimped.
Plenty of little nodes feels weak and could have a little SSE-Steroids/OPENMP-EPO injection (so they can survive the "Tour de Patch")
Considerations
- Nodes to be written as plugs
- Some nice benches with different spreadcount to show speed difference at different levels (using varying spreadcount is also useful as some nodes can have specific bits for it).
- Option as toggle for Threading + SSE, so we can also compare per spreadcount.
- List of good candidates : Most common nodes obviously benefits more people, also some nodes are less likely to have high spread count. Perspecitve (Transform) a good example of low spread usage.
- Some datatypes comparison.
- If a node supports Input Count as config pin, counterpart to be written the same way (so they are the same node)
- Node does not necessarily need threading, if it has good perf improvement without that's cool too :)
- Generally when including 2d/3d node i also mean vector version
Candidates
Top of the list
All those are very very widely used, simple to thread/otpimize and are
very likely to have decently (very) high spread count
- Standard value operators (+,-,*,/,Mod,Min,Max)
- Comparison operators (>,<,>=,<=,=)
- Boolean operators (AND,OR,NOT,XOR)
- Vectors Join/Split
- Map/MapRange (Value)
- Translate/Scale/Rotate/Transform/ApplyTransform (In all version/dimension)
- LinearFilter/Damper/Oscillator (Animation)
- Change/TogEdge (Animation)
Top Unfriendly nodes
Very widely used, but bit (or lot) harder to thread, or they require special considerations.
- Select (Value,Color)
- Spread generators (linear/random/gaussian)
- Cross (2d/3d)
Mid Range Nodes
Quite often used, good to have them around when needed, generally used with quite high spread.
- B-Spline (Value)
- Power (Value), Sign (Value), Log (Value)
- 2d/3d Cartesian/Polar
- Normalize (3d), Cross (3d), Dot (3d)
- Perlin/Simplex (2,3,4d)
- Points2Vector/Vector2Points (2d)
- Transform Multiply, Inverse
- Newton, DeNiro (Animation)
- Shift/InputMorph (Value/Color)
Other
Casual use, but useful
- All complex number nodes (pretty underestimated, if pimped they could be more widely used)
- FrameDifference/FrameVelocity (Animation)
- Connect/ConnectAll (2d/3d)
- GetMatrix/SetMatrix (Transform)
Cool nodes to add with perf
- Sin/Cos/Tan.. Value (Don't need the complex version most of the time)
Benchmarks
Will provide a spreadsheet as much easier to add new columns/rows...