20,224 Commits over 1,522 Days - 0.55cph!
Added Copy/Paste Path options to Asset/Resource properties
https://files.facepunch.com/rubat/1b1411b1/ea0OY53sKZ.png
Also fixed resource properties context menu not functioning.
LODs for Loose Jeans
+ some adjustments to previous LODs
Fix self illumination emit light where it's not supposed to
Supporting INetworkSerializer types as RPC parameters
[Predicted] Support for BaseNetworkable and Components (#794)
* Initial commit
* Iterate through BaseNetworkable properties too
Iterate through BaseNetworkable properties too
Use high resolution texture for self illum mask
Set sequence movement type to none
commit compiled spirv libs
hlsl_parser: strip D3D9 const defs
hlsl_parser: remove d3d9 and opengl register allocation modes, remove glsl wrappers
rendersystemvulkan: add missing debug utils check
initialize these hlsl string variables so dxc likes them
fix vulkan shader errors
vfx_vulkan: baseline compiler using dxc and spirv-reflect, no glslang shit, still using legacy d3d preprocess
Use DXC shader names MainVs, MainPs etc in vulkan pipeline
rendersystemvulkan: remove VK_EXT_debug_report completely to remove confusion with VK_EXT_debug_utils
vfx_vulkan: serialize reflection info in compiled shader
Update descriptor set bindings for HLSL -> SPIR-V
Update Vulkan SDK + Volk so we can have VK_EXT_graphics_pipeline_library
volk.c: restore valve platform defines
fix rendersystemvulkan requiring raytracing extension
Hidden uav counters work on pixel shaders
Update descriptor sets for new descriptor types & binding offsets from hlsl->spirv
rendercontexts set associated thread index from RenderSystem_GetThreadIndex() instead of Plat_GetThreadIndex(), this avoids counting non-rendering threads keeping us well within our MaxDeviceAccessThreads
Cleanup, small fixes, kill some dead code vulkan_async_descriptors
Yank away solidcolor, seems only old glow used it
Fix warnings and errors in vfx compilation for vulkan
Fix projected_decals crashing shader compiler
Discard packoffset conflicts on vulkan, we don't care about code path, fix conficts on convolve envmap
Haha it'd be helpful if we actually call this method that sets all the shader param data. Now samplers actually get bound and we're rendering
Forgot to commit this amongst debug crap
Remove generate_decal_normals
If we didn't find error shader don't bother trying to find a fallback you wouldn't get, just remove the layer, allows us to compile shaders from scratch with everything removed
Don't use d3dcompiler helpers on vulkan DXC compiler, fix hlsl processor handling of include files
Temp fix DXC not interpreting ShadingModel interface correctly
[debug] disable fast descriptor set updates, much easier to debug shit that isn't being bound properly
spirv-tools, spvremapper libs compiled to work with source 2
vfx_vulkan: post process with spirv-opt, need to do reflection after dead code removal otherwise materialsystem will try to bind invalid buffers
stub out old vrad3 gpu code erroring from new vulkan headers
backport new vulkan memory manager with support for BDA
materialsystem2 support for BDA
vfx_vulkan: add $Globals rewriting (without BDA), binding shifts after postprocess
[temp] don't deal with instancing on SboxVertex for now, need some additional code around input layouts
reenable fast extension for descriptor updates now that everything is binding properly
vfx_dx11: fix compile errors with fxc shader compiler
Show animation picker for models that have animations
Initial support for playing single sequences on scene models
Use GetVersionHistory endpoint
Add Version History to GameScreen https://files.facepunch.com/devultj/1b1411b1/sbox_o55nMEKPB4.jpg
Include file ext in texture inputs (color, rough etc)
Include image processor in texture inputs (NormalizeNormals, Inverse, etc)
Generate texture input code for final shader
Generate code for sampler AddressU and AddressV
Swallow game input if window recently became active
Apply standard post processing to simple render scene if post processing on scene camera is enabled
Make sure FriendEntry Status doesn't get too long - made some minor style changes to FriendList
Make the party owner send a command to their party when creating / joining a game lobby. Party members will then try to join that lobby
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
Don't set "lobby" presence data for parties, since we're using this to join games / game lobbies, it'd show up for parties and upon joining would break your state
Make sure anyone who isn't the lobby owner can't kick members
Use in-place upgrades where possible in static fields
Fixes #790
Some extra safety in DictionaryUpgrader
For handling in-place upgrades if key hashes change
Re-add lobby kicks (party, game lobby)
Fix graphic settings changing volume
Only make the game lobby ready to join when the client has finished loading into the game. This was causing issues because the host would try to download a bunch of content, and time out all of the game lobby participants.
Flush member count cache on lobby entered, fixes not being able to join game lobbies. Ship players over to game servers immediately. This is temporary, we'll ideally ship the players over when the game server is actually ready - that's next
metal wheely bin
wip changes
Merge branch 'master' of sbox
Merge branch 'master' of sbox
Merge branch 'master' of sbox
Sfm: Allow work cameras to have independent resolutions
Fix Hitbox.Ring not transforming
Update TreeView.Example.cs
Log full path of video recording
Modeldoc: Fix create new animgraph dir having double addon name in path
Properly pass opacity for valve shading model
Fix render backfaces not working in user shaders
[debug] disable fast descriptor set updates, much easier to debug shit that isn't being bound properly
spirv-tools, spvremapper libs compiled to work with source 2
vfx_vulkan: post process with spirv-opt, need to do reflection after dead code removal otherwise materialsystem will try to bind invalid buffers
Fixed updates always showing "today", my bad
Added last update time to package displays, updated screenshots on game front to try to use 16:9. https://files.facepunch.com/devultj/1b1211b1/LMEBgcrPNZ.png
Don't warn about un-precache'd particles
Grid snapping poc https://files.facepunch.com/garry/2e5d1044-ea7b-4a8b-a876-90181c857abb.mp4
Don't use d3dcompiler helpers on vulkan DXC compiler, fix hlsl processor handling of include files
Temp fix DXC not interpreting ShadingModel interface correctly
Rotation poc
Moved hitbox code to Scene.Hitbox.*
https://files.facepunch.com/garry/b31bdbf4-23f7-40a2-8f0f-7048314e51fe.mp4
Fixed Screen.GetOrthoRay and fixed SceneCamera.GetRay (when the camera is ortho)
Merge branch 'master' of github.com:Facepunch/sbox
Draw.Sprite (placeholder, needs a real shader)
Add LineCircle
Add Draw.SolidCone