Gradient Slang Compiler Error - Fixed Slang throwing a compiler error when a gradient constant node was used.
RandomFloats node.
Sun node.
ProjectionToView node.
InverseProjectionRow3 node.
DirectionUp and FOV outputs to camera node.
Ability for the user to provide a semi-custom base shader template in the form of the .shdrtpl assets.
Sky shader type.
Ability to preview sky shaders.
Show the asset path in the title of the ShaderGraphPlus editor window.
Show the asset name in the Result node header.
Replaced Domain property with ShaderType property which integrates both the built-in ShaderTemplates along with the custom user provided ones.
Updated Generate Code dock TextEditArea so that the text TabSize is more reasonable.
Check Parameter names to see if they conflict with internally defined shader global parameters. And if so, show an error to the user.
Fixed duplicate plugs when a subgraph input is referenced more than once (community fix from LeDernierPoisson).
Project Creator Dialog.
Lack of stricter error checking on where the ShaderTemplate tags are. Resulting in invalid shaders being generated.
Compiling with the Gradient Constant Node will produce slang errors.
Some nodes may break due to a ShaderTemplate not having certain VertexInput/PixelInput struct items.
Can now visually reorder material parameters in the blackboard and have the visual order be reflected in the Material Editor.
Can now visually reorder subgraph inputs and outputs in the blackboard and have the visual order be reflected on the instanced Subgraph.
Can now visually group parameters into groups instead of replying on the PrimaryGroup property of Material Paramters.
Updated Docking code to work with the new Qt Advanced Docking System
Cannot reorder parameters above or below group TreeNodes in the blackboard.
Blackboard rebuilding can sometimes be slow.
Code cleanup and refactoring
Separated 'ParameterUI' into different structs for different types while sharing the same interface. Float types get 'FloatParameterUI' while bool gets 'BoolParameterUI', etc...
Make sure DeserializeNodes deserializes from base node class 'BaseNodePlus' and not from 'BaseNode' of 'Editor.ShaderGraph'.
Added Hidden bool property to 'ProjectTemplate' metadata
Updated project templates
Old TextureSampler nodes
WorldNormalsFromDepth node
BlendingSurface domain is broken and as such is hidden for the time being until it is fixed. The template is hidden as well from the Project Creator
Remove legacy UpgradeSubgraphProjects() editor toolbar menu option
Fix custom function node usage inside instanced subgraphs
Updated NodeUI to add a little outline around the node similar to blenders node ui.
Changed some of the node deserialization code to start trying to handle node upgrades better.
Some old node upgrader steps for older project versions
All node ( bool logic )
And node ( bool logic )
Any node ( bool logic )
IsInfinate node ( bool logic )
IsNan node ( bool logic )
Nand node ( bool logic )
Not node ( bool logic )
Or node ( bool logic )
Matrix Split node
Gradient Value Editor for the Gradient node.
Matrix types Float2x2, Float3x3 & Float4x4 can now be passed in and out of subgraphs.
Gradient type can now be passed in and out of subgraphs.
The editor will now update all parameter nodes in the graph from the blackboard when opening a graph from disk
Parameter node titles are now only display the Node Icon and the parameter name. Rather than before with : Icon + Node type + Parameter name
Minor code cleanup
The ability for TextureSampler nodes to be able to define a parameter. If you want to define a Texture2D parameter, then add one with the blackboard or the graphView with : right click ---> Create Parameter ---> Texture2D, but when in a subgraph you can do right click ---> Create Subgraph Input ---> Texture2D
Forked NodeGraph API & NodeEdior code from Base Editor Libary
Viewport node
Named Reroute Declaration node
Named Reroute node
Blackboard
Constant Bool, Int, Float, Float2, Float3, Float4 & Color nodes
Added Float4ParameterNode
BooleanFeatureSwitch node that replaces the old static switch node
Shader Feature Enum & EnumShaderFeature node
Ability to change and or reset preview model yaw rotation in preview settings popup
Ability to set and save the current Preview viewport view mode
Made the headers for the nodes a bit more colorful
Moved AssetBrowser Create New Asset action for Graph And Subgraph assets to "New/Shader"
Renamed NodeInput "UV" on Depth node to "ScreenPosition"
Comment nodes can now be set to any color rather than a preset few colors
Renamed DepthIntersectionNode class to DepthFadeNode
Separated constant parameter type responsibility from IParameter nodes. Meaning ParameterNodes are always a parameter now, never a constant.
Renamed parameter node classes since now that dedicated constant nodes exist
Updated and renamed the TextureSampler node classes
Fixed ProjectConverter converting all the TextureSampler nodes to just TextureSampler. Now it converts to the respective nodes.
Removed the ability for the Static Switch node to define a Shader Feature. They are now defined at the graph level in the blackboard
Old FunctionResult node
Old StaticSwitch node
Sample Normal GBuffer node
Sample Roughness GBuffer node
ConnectNode function in BaseNodePlus class
Experimental option to convert ShaderGraph graphs into ShaderGraphPlus graphs
Can now cast an Int ResultType to the 4 other float types.
Custom c# ShaderGraph nodes cannot be converted.
Converter dialog window can sometimes take awhile to open.
Subgraph Input Node
Subgraph Output Node
Switch Node
Comparison Node
Generated Code Dock
Sampler struct & Sampler node.
Result Node breaking connections on graph load.
Ability for Parameter nodes to have a name in subgraphs.
Unnecessary SamplerState properties can get generated. They don't cause any harm as properties that are not used will be compiled out. Still needs to be fixed though.
Static Switch Node.
Get Dimensions Node.
Texture Cube Object node.
Ability for Sampler node result to be input into subgraphs.
Ability for TextureObject node result to be input into subgraphs.
Texture Object input to Texture Sampler node.
Texture Object input to Texture Triplanar node.
Texture Object input to Normal Map Triplanar node.
Texture Cube Object input to Texture Cube node.
Added DXT3, ATI1N, ATI2N, BC6H, & RGBA16161616F to the enum of available to Image formats to choose from in the TextureInput property to the Texture Object node and Texture Sampler nodes.
Exposed bool toggle on the Branch node as an Node input ( When left unconnected the Branch Node will revert to the old behavior ).
`CanPreview` virtual bool to the `BaseNode` class so a node can tell the editor that it can be previewed or not.
TextureObject ---> Texture2DObject
Texture 2D Object Nodes with the same name will sync their Texture Input data between each other. Even the Image path is synced.
The ability to define Texture inputs in Subgraphs
Texture 2D Object & Sampler Node inputs of a subgraph are required no matter what.
Texture Cube Node is a bit buggy may or may not throw exceptions