1 Year Ago
Make node editor graph an interface Add shader graph game resource Keep node position up to date with node ui Hook up shader graph saving Don't open save dialog if we have an asset to save to Hook up shader graph open put graph nodes in dictionary, can't save nodes to game resources yet anyway so fuck it Add compiler ref System.Memory for tool addons Add simple asset type for shader graph Don't use game resource for shader graph, serialize json from graph asset instead Deserialize graph Add preview dock Add skybox and cubemap to preview Add background to graph view Delete selected nodes on delete key Remove connections of deleted nodes Delete selected connections too Fix ui hotload Undo redo system Add undo redo shortcuts Move node undo op Grid snap newly created nodes Undo ops for create/drop/change connection Don't perform undo redo if there's a pending redo Status text for undo redo options Title graph view to asset name Write graph file before registering it Don't open graph that is already open Clear undo stack on new or open graph Mark session as dirty when an undo op is pushed so title can be changed to show as edited Menu bar shortcuts Dirty session when performing undo or redo Allow input and output attributes to decide handle config type, property type is rarely going to be handle type Don't allow output connections to input of self Remove existing input connections, inputs can only have 1 connection Set node connection property when creating connection Rebuild graph connections from serialized node connections Reset input connection on remove Only set input property if it's node connection type Use node connection type for all node inputs Clear preview and drop target when rebuilding graph Clear connections on graph rebuild Don't serialize node properties that don't have setters First attempt at codegen from graph Time, cosine, multiply nodes Add toolbar to preview Add more toolbar options for main window Add properties dock to edit properties of nodes Hide node properties we dont want to see Add color node Dirty session when property values change Hook up preview primitive types Open asset picker for preview model Don't reconstruct new graph object on undo, just clear nodes and deserialize Save and load does full serialization, not just nodes, we may have settings we want to save Save preview model Rename NodeConnection to NodeInput and make it IValid Target graph properties when no node is selected Base class unary node because it's gonna be the same shit for each Abs node Add node types automatically Show compile errors in output Copy error to clipboard Add menu option to focus node with error Selecting error selects node Center on selected error node Use orbit cam for preview, makes more sense Open context menu after dragging an unconnected wire Some cleanup Use default a and b values for binary nodes when input isn't valid Cut down on file reading in CreateFromVfxFile so eventually it can be created from memory Rename vfx create functions to make more sense Write generated shader to temp dir Don't generate code if graph compiler has errors Run shader compiler process for generated shader Write generated shader to bullshit placeholder resource for now Make color node use color property Make color node use color property Add lerp node Add lerp node Don't serialize NodeInput.IsValid Log program type when spewing shader stats so I can see what's what Remove all dynamic shader compiling code, we don't use it and it's over complicating everything Remove all dynamic shader compiling code, we don't use it and it's over complicating everything CVfx cleanup Hacky dynamic shader compile test Start vfxc process to compile single shader we need to update preview, output bytecode to temp dir Replace render shader from bytecode Change preview material while shader is compiling Only recompile shader if generated code has changed Remove shader compile dll loading from material system again, no longer needed Add -fast cmd line option to vfxc to disable optimizations Add recent files to file menu Recompile shader after compile has finished if we're pending a compile so preview is always up to date Write generated shader next to shader graph on save until we can safely generate shader resource from temp dir Add compile timings Don't read and mask shader file twice in vfxc Don't include material inputs in shader template Don't include material inputs in shader template Remake dev sphere Clear cached generated code on new or open Only add existing files that exist Add saved file to recent files Only write generated shader to tempdir before invoking compile so we don't stomp on it while compiling Remove hlsl output tolower all recent file paths Draw spinning circle to show when preview shader is compiling Texture node Generate code for textures Cleanup template shader and material used in shader editor Set toolView attribute so depth prepass gets disabled (wireframe doesn't render correctly with depth prepass enabled) Optional texcoords on texture node Add Vector2 node Add console tab for convenience Add sampler properties to texture node Serialize other properties of graph, handle node serialization separately Reset properties target when there's a new graph Fill out shader description from graph Add texcoord node Display g_flTime in properties Some more unary nodes Add dock restoring Use a more detailed cubemap and skybox Serialize compiled shader info to temp dir Recreate static combo data from serialized compiled shader info Plug texture filter into generated code to test preview updating Ask vfxc to output compiled shader info instead of bytecode Create connection to new node when created through drag + context menu Add undo history ui Don't apply same undo level Add filter edit to node context menu and sort into category submenus Give nodes better categories Sort by category Prompt user to save when trying to create new or opening new graph while current graph has unsaved changes Prompt save when opening from recent files also Use NativeRenderingWidget Setup shadergraph project the same way as prefab editor Make shadergraph a IAssetEditor Use dockwindow Make sure any coord input passed to texture node is casted to float2 in generated code Lerp node casts fraction to largest of the two components unless it's a float fraction Allow texture nodes to set a vtex to preview https://files.facepunch.com/layla/1b0411b1/sbox_f1zmhN87os.mp4 Serialize texture as string, load when needed (ResourceJsonConvert is internal) Node result just has component count instead of generic type Restore preview textures on hotload Restore preview textures when preview model changes Add GraphicsView.SelectionRect, add selection box to graph https://files.facepunch.com/layla/1b0511b1/sbox_AT7exzHrxn.mp4 Serialize selection, copy to clipboard Deserialize paste buffer, update conflicting ids Build graph from paste Add undo scope for paste Default node input if it doesn't exist in paste Unselect all and select paste Cut selection Only add paste undo if any nodes got deserialized Fix compile errors Apply standard post processing to simple render scene if post processing on scene camera is enabled Generate texture input code for final shader Generate code for sampler AddressU and AddressV Include file ext in texture inputs (color, rough etc) Include image processor in texture inputs (NormalizeNormals, Inverse, etc) Add TransformNormal node Show animation picker for models that have animations Initial support for playing single sequences on scene models Set sequence movement type to none Undo scene model changes, master has scene model sequences now