390 Commits over 214 Days - 0.08cph!
Custom Subgraph Nodes now detect sampled textures and allow you to change them as properties
Display Default Values on unconnected inputs of Subgraph Nodes
https://files.facepunch.com/CarsonKompon/2025/January/22_15-34-AnyAllensbigearedbat.png
Add ShaderGraph.IsSubgraph and add "Shader Sub-Graph" to the New Asset menu
Shader Sub-Graphs are now saved with the `.shdrfunc` file extension despite being the same asset (just so it can be registered with a different icon and filtered against in the Asset Browser to reduce user confusion)
Give .shader, .shdrgrph, and .shdrfunc assets different colours in the Asset Browser
Don't include BlendMode, ShadingModel or Domain in Subgraphs
Don't include "Material" ShaderNode in the Create Node/Palette menus of Subgraphs. Ensure proper extensions are used when opening the respective file types.
Add PlugInfo and make BaseNode.Inputs and BaseNode.Ouputs virtual.
Added FunctionResult ShaderNode, can only be created in Subgraphs and is created as the default node in newly created Subgraphs
Fix Shader Graph wanting to save/load as sub-graphs
Make sure [Title] attributes are still respected with PlugInfo
FunctionResult can now have a variable amount of inputs of varying types defined by a Dictionary. These are to be used as the outputs of the eventual sub-graph node
Use shader-specific types for FunctionResult Inputs
https://files.facepunch.com/CarsonKompon/2025/January/16_16-02-HumiliatingMorayeel.png
Rename "Inputs" -> "Outputs" on FunctionResult since that's technically more accurate
Instantly update the Result node when Outputs are modified
https://files.facepunch.com/CarsonKompon/2025/January/16_16-18-WarmIncatern.mp4
FunctionResult node will produce Errors preventing compilation
https://files.facepunch.com/CarsonKompon/2025/January/16_16-48-VictoriousBrownbutterfly.png
Fix NRE when attempting to save with unresolved errors
Guarantee IsSubgraph is set properly from the ShaderGraph window
Only Update FunctionResult.Inputs when necessary instead of when accessed.
Add PlugInfo.GetInput() and serialize PlugInfo.Name as the property name instead of display name
Fixed NRE when FunctionResult name is left null
Subgraphs no longer attempt to generate a .shader file, and will run error checks in the graph on Save
FunctionResult Inputs now maintain connections upon being regenerated
FunctionResult node generates inputs before creating connections to ensure connections are always deserialized correctly
PlugInfo correctly uses property name if no [Title] attribute
Refactor Result node into an abstract BaseResult class which Result and now FunctionResult can both inherit
You can now specify the preview type for certain Output variables on a Subgraph so changes can be reflected in the Preview window.
https://files.facepunch.com/CarsonKompon/2025/January/21_12-51-DifferentAmericanbulldog.mp4
Can change Preview Blend Mode/Shading Model/Domain in Subgraphs
Implemented all other preview types for FunctionResult
Fix GraphCompiler failing when using Unlit in Subgraphs
Subgraphs have Title, Description, Category, Icon and Add To Node Library properties. To be used for the created node
Added SubgraphNode which references a .shdrfunc. Results in graph errors if the references graph cannot be found or the references graph has errors
Dragging a .shdrfunc asset into a ShaderGraph will create a Subgraph Node referencing the dragged asset
Fix error when deserializing SubgraphNodes
SubgraphNode now uses the Title, Description, and Icon from the referenced Subgraph
SubgraphNode now generates inputs from any Parameter nodes in the subgraph, with default names for any without.
SubgraphNodes now generate output plugs from the FunctionResult node in the references Subgraph
https://files.facepunch.com/CarsonKompon/2025/January/21_16-23-CoordinatedEastsiberianlaika.png
Subgraph "Add To Node Library" adds the subgraph to the Create Node menu so they can be easily accessed.
https://files.facepunch.com/CarsonKompon/2025/January/21_16-51-HardVampirebat.mp4
Double Clicking a Subgraph Node instantly opens the Subgraph
Implemented the file history forward and back buttons when navigating through multiple ShaderGraphs in the same window
https://files.facepunch.com/CarsonKompon/2025/January/21_18-29-MidnightblueSandbarshark.mp4
Add [Hide] to TextureCoord.Title override
Minor MainWindow refactor so .shdrgrph files arent recognized as Sub-Graphs mistakenly
Prompt to save current graph (if dirty) when pressing the Forward/Back/Home buttons
Created ITextureParameterNode and started custom inpsector editor for when texture samplers are present
Prompt to save current graph (if dirty) when pressing the Forward/Back/Home buttons
Add [Hide] to TextureCoord.Title override
Minor MainWindow refactor so .shdrgrph files arent recognized as Sub-Graphs mistakenly
When dragging multiple GameObjects onto a ListControlWidget of Components, get the first component from each GameObject similarly to if we were to drag them each individually.
Double Clicking a Subgraph Node instantly opens the Subgraph
Implemented the file history forward and back buttons when navigating through multiple ShaderGraphs in the same window
https://files.facepunch.com/CarsonKompon/2025/January/21_18-29-MidnightblueSandbarshark.mp4
Subgraph "Add To Node Library" adds the subgraph to the Create Node menu so they can be easily accessed.
https://files.facepunch.com/CarsonKompon/2025/January/21_16-51-HardVampirebat.mp4
Fix error when deserializing SubgraphNodes
SubgraphNode now uses the Title, Description, and Icon from the referenced Subgraph
SubgraphNode now generates inputs from any Parameter nodes in the subgraph, with default names for any without.
SubgraphNodes now generate output plugs from the FunctionResult node in the references Subgraph
https://files.facepunch.com/CarsonKompon/2025/January/21_16-23-CoordinatedEastsiberianlaika.png
Subgraphs have Title, Description, Category, Icon and Add To Node Library properties. To be used for the created node
Added SubgraphNode which references a .shdrfunc. Results in graph errors if the references graph cannot be found or the references graph has errors
Dragging a .shdrfunc asset into a ShaderGraph will create a Subgraph Node referencing the dragged asset
Can change Preview Blend Mode/Shading Model/Domain in Subgraphs
Implemented all other preview types for FunctionResult
Fix GraphCompiler failing when using Unlit in Subgraphs
You can now specify the preview type for certain Output variables on a Subgraph so changes can be reflected in the Preview window.
https://files.facepunch.com/CarsonKompon/2025/January/21_12-51-DifferentAmericanbulldog.mp4
FunctionResult node generates inputs before creating connections to ensure connections are always deserialized correctly
PlugInfo correctly uses property name if no [Title] attribute
Refactor Result node into an abstract BaseResult class which Result and now FunctionResult can both inherit
Fixed NRE when FunctionResult name is left null
Subgraphs no longer attempt to generate a .shader file, and will run error checks in the graph on Save
FunctionResult Inputs now maintain connections upon being regenerated
Added SoundscapeTrigger.Volume so you can control the volume of a Soundscape from the component
Added more property/enum docs to SoundscapeTrigger and gave TriggerType entries [Icon]
Fix NRE when attempting to save with unresolved errors
Guarantee IsSubgraph is set properly from the ShaderGraph window
Only Update FunctionResult.Inputs when necessary instead of when accessed.
Add PlugInfo.GetInput() and serialize PlugInfo.Name as the property name instead of display name
Rename "Inputs" -> "Outputs" on FunctionResult since that's technically more accurate
Instantly update the Result node when Outputs are modified
https://files.facepunch.com/CarsonKompon/2025/January/16_16-18-WarmIncatern.mp4
FunctionResult node will produce Errors preventing compilation
https://files.facepunch.com/CarsonKompon/2025/January/16_16-48-VictoriousBrownbutterfly.png
Add ShaderGraph.IsSubgraph and add "Shader Sub-Graph" to the New Asset menu
Shader Sub-Graphs are now saved with the `.shdrfunc` file extension despite being the same asset (just so it can be registered with a different icon and filtered against in the Asset Browser to reduce user confusion)
Give .shader, .shdrgrph, and .shdrfunc assets different colours in the Asset Browser
Don't include BlendMode, ShadingModel or Domain in Subgraphs
Don't include "Material" ShaderNode in the Create Node/Palette menus of Subgraphs. Ensure proper extensions are used when opening the respective file types.
Add PlugInfo and make BaseNode.Inputs and BaseNode.Ouputs virtual.
Added FunctionResult ShaderNode, can only be created in Subgraphs and is created as the default node in newly created Subgraphs
Fix Shader Graph wanting to save/load as sub-graphs
Make sure [Title] attributes are still respected with PlugInfo
FunctionResult can now have a variable amount of inputs of varying types defined by a Dictionary. These are to be used as the outputs of the eventual sub-graph node
Use shader-specific types for FunctionResult Inputs
https://files.facepunch.com/CarsonKompon/2025/January/16_16-02-HumiliatingMorayeel.png
Disable PathWidget "Copy Relative Path" if the path is not within the Project's Assets folder, just like files/assets.
Fix Asset Browser Forward Button enabling/disabling based on the Back Button instead of itself.
Add Context Menu to Asset Browser Path Segments. Resolves Facepunch/sbox-issues#7391
https://files.facepunch.com/CarsonKompon/2025/January/16_10-33-GreedyQuahog.png
When loading ShaderGraphs and a connected property cannot be found, check for [Alias] attributes. This will resolve issues where loading old ShaderGraphs would look for old variable names. Facepunch/sbox-issues#5822
Added [Alias] to Combine node since its output was renamed at some point
Unconnected ShaderGraph inputs with a default value will now draw the default directly on the plug. Can specify default properties with BaseNode.InputDefault.
https://files.facepunch.com/CarsonKompon/2025/January/15_12-07-TrustingSeaslug.png
More ShaderNode improvements
- Exposed InputDefault to all nodes that needed it
- Fixed icon drawing on a few Binary nodes
- Added color pickers to Blend node
- Can now specify certain default values without a connecting node for Remap, Lerp, Apply TRS and Smooth Step nodes
- Fix incorrect input types on a few nodes
Make the Step property affect the sliders within ShaderGraph. Resolves Facepunch/sbox-issues#3852
Added [IconName] to EditorActionGraph.Icon
Use proper grid-based background in all GraphViews by default (instead of just ActionGraph)
Add option to toggle Grid-Aligned Wires in ShaderGraph
Added OnPaint method to OneMinus ShaderNode for indicating node at a glance
Added Icons to a few of the Binary nodes in ShaderGraph. Don't display icon in header since it's already drawn on the node itself.
Added Icons to all the Texture, Transform, Noise, and Channel nodes in ShaderGraph
Added OnPaint overrides to a few more common ShaderNodes so they are easier to read/understand
https://files.facepunch.com/CarsonKompon/2025/January/14_15-12-ImmediateMartin.png
Add Icons to the last of the ShaderNodes that have fitting icons
Clicking off from the Color Picker in ShaderGraph will no longer instantly re-open it. Resolves Facepunch/sbox-issues#5897
ShaderGraph will no longer completely error out it can't find a node, and will instead create a "Missing Node" which resolves itself once the node is found. Resolves Facepunch/sbox-issues#5805
https://files.facepunch.com/CarsonKompon/2025/January/14_11-56-FloralwhiteGrackle.png
Don't rebuild the entire ShaderGraph UI when we hotload.
Added Cut, Copy and Delete options when Right Clicking node(s). Resolves Facepunch/sbox-issues#4096
https://files.facepunch.com/CarsonKompon/2025/January/14_10-42-DotingLoon.png
Added Paste Node(s) option when right clicking in ShaderGraph (only visible when nodes in your clipboard)
Added GraphCompiler.RegisterFunction, allows you to create your own custom ShaderGraph nodes without modifying the base addon.
Resolves Facepunch/sbox-issues#4141
Resolves Facepunch/sbox-issues#4389
Implemented the "Filter Properties..." TextEdit in ShaderGraph
Added ShaderGraph.Domain. Can now create Post-Process Shaders in ShaderGraph. Resolves Facepunch/sbox-issues#5866
https://files.facepunch.com/CarsonKompon/2025/January/13_17-38-PossibleAfricanrockpython.mp4
Added ShaderGraph.ShadingModel. Can now create Unlit Shaders via ShaderGraph. Resolves Facepunch/sbox-issues#6006
https://files.facepunch.com/CarsonKompon/2025/January/13_14-55-ShamefulPacificparrotlet.mp4
Added Icons to the BlendMode and ShadingModel enums
Add ConditionalVisibilityAttribute support to ShaderNodes in ShaderGraph. All plugs into the Result node are greyed out except for Albedo and Opacity when using Unlit Shading Model
Add [Group]s to the ShaderGraph nodes with InlineEditor so they can be collapsed and feel less cluttered.
Automatically size TextureSampler nodes so that Inputs don't overlap with the preview image
Added Texture Preview to Texture Cube node
Use [ImageAssetPath] instead of [ResourceType("jpg")] in Texture Sampler nodes
Fix Draw Order in ShaderGraph nodes, fixes certain nodes not showing their previews/icons
https://files.facepunch.com/CarsonKompon/2025/January/13_13-01-SlipperyQuillback.png
Added Icons to all Binary operations in ShaderGraph (Subtract, Divide, Mod, Multiply) instead of just Add. Resolves Facepunch/sbox-issues#6516
Can now Copy/Paste all properties from Feature tabs in Components and Resources. Resolves Facepunch/sbox-issues#7374
https://files.facepunch.com/CarsonKompon/2025/January/13_12-40-KnobbyIndianspinyloach.png
Unlocking the Inspector will instantly inspect your current selection if different
Fix NRE when dragging SoundFiles onto the "+" button in a List. Also fixed dragging for other resources. Facepunch/sbox-issues#7197
Clear changes in EditorSession Undo when making a full snapshot so we don't get a duplicate empty Undo entry
Create Undo Snapshot for Paste and Paste as Child. Resolves Facepunch/sbox-issues#7372
Close Dropdown Popups automatically when the parent Panel is hidden. Resolves Facepunch/sbox-issues#6893
Make the Server Browser a bit neater and added a header row.
https://files.facepunch.com/CarsonKompon/2025/January/10_14-14-BleakAfricanclawedfrog.png
Can now Rename folders from the Asset Browser. Resolves Facepunch/sbox-issues#7351
Added "Create Objects at Origin" to Editor Preferences
Move Widget Debugger and Input Debugger to the "Debug" menu instead of "Help"
Added ColorPicker.HasAlpha and [ColorUsage] attribute. Attribute allows you to specify whether or not a Color has Alpha or HDR options in the color picker.
Make ColorControlWidget support Color32
Fix Right Click -> Copy/Paste between Color and Color32 Properties
Make ColorControlWidget support ColorHsv. Add ColorHsv to TypeLibrary.
Open Color Popup on the correct initial color for Color32 and ColorHsv. Use FloatControlWidget for ColorHsv.
Added [IconName] Attribute for String Properties, creating an Icon Picker ControlWidget
https://files.facepunch.com/CarsonKompon/2025/January/09_11-26-LateSwordfish.mp4
Added Right Click -> Clear to IconControlWidget
Added Context Menu to DateTimeControlWidget (Set Month, Set Current Date/Time, ect)
Change PlayerController [HelpUrl] to the sbox.game URL
Replace animation [Header]s with [Group]s in PlayerController for consistency with the other tabs
Get more information from ControlSheetRow ToolTips, showing the C# Type and C# Property Name.
https://files.facepunch.com/CarsonKompon/2025/January/09_09-14-LateHorseshoecrab.mp4
Added ControlSheet.IncludePropertyNames, defaults to false. Only show C# Property Names in GameObject, Component, and GameResource inspectors.
Colour code the type names in Property Tooltips, also ensure property names don't show for Variable Prefabs..
Add Scene, Prefab, and Sound to the top of the New Asset menu for ease-of-access. Resolves Facepunch/sbox-issues#7003
Added [TargetType] attribute so you can only select a `Type` that derives from the target type. Resolves Facepunch/sbox-issues#7345
Added "None" option to TypeControlWidget
Ensure Facets are always reset in Cloud Browser
Added Type Filter to Cloud Browser when not already filtering by type. Resolves Facepunch/sbox-issues#7031
Added button to test sound component from the Inspector. Resolves Facepunch/sbox-issues#7348
Soundscape Component no longer overrides the volume of stings. Resolves Facepunch/sbox-issues#7346
Fix BaseSoundComponent not applying override values to SoundHandle properly
Added a quicker and easier way to create variables within ActionGraph (instead of needing to right click on a plug)
https://files.facepunch.com/CarsonKompon/2025/January/07_15-40-InstructiveUnicorn.png
Fix Soundscape Stings not working. Resolves Facepunch/sbox-issues#7324
Added ability to target a mixer on Soundscape Component. Resolves Facepunch/sbox-issues#7323
Add subtle alternating background color to each row in Input Settings. Resolves Facepunch/sbox-issues#7328
Prevent Input Settings in Project Settings from scrolling back to the top when adding/removing a new Input. Resolves Facepunch/sbox-issues#7329
The LineEdit in PathWidget now stretches so it can be clicked anywhere. Resolves Facepunch/sbox-issues#7246
https://files.facepunch.com/CarsonKompon/2025/January/06_12-37-LividArcherfish.mp4