14,047 Commits over 1,583 Days - 0.37cph!
FPArms: hack workaround to share all parameters through the adjustments subgraph. Unfortunately this does not work with bools or enums :(
Add Sandbox.Services.Leaderboards initial offering
Fix text sometimes being truncated when it shouldn't
Often occurred in the main menu when a Text was updated from a razor state change
Improve consistency when deciding if to relayout truncated text
Scrape Effects (#1139)
* Add props to Surface for impact decal and scrape effects / decals
* Use ContactPoint + SurfaceNormal to pass into AddImpactSound
* Let's add decals and particle effects for impacts but try only doing it if speed > 30 - maybe we configure this per surface?
* Add PhysicsImpact struct and use that to seperate effects for Hard and Soft impacts in Surface description (decals + fx)
* Correctly spawn soft or hard physics impact particles + decals based on squared speed
* Add normal from first valid manifold on contact to friction events to pass to C#
* Enable/Disable physics impacts and scrape events as props for now, pass normal from fiction event to AddFrictionSound and create effects where necessary
* Also grab contact center from first manifold and pass to C#
* Use contact pos for decals + effects, try to base effect frequency on energy volume scale, fix decal placement remove particles on friction effect stop
* Set destroy time to 0.5 (this is a failsafe anyway)
* Don't have particles follow entity, do it ourselves so we can set to actual contact pos
* Set forward for scrape particles to contact normal
* Use method for getting inherited surface values if necessary to avoid repeating same code
* Add Mass and Direction named control points for friction particles. Mass is body mass, direction is body velocity normal. CP0 is already setting position and contact normal
* Lower destroy time for effects
* Reorganize scrape data in surface def, lower default values. Don't fallback to rough by default. If it's a smooth scrape and there's no effects for that - do nothing by default
* Surface is considered smooth by default, can set roughness factor higher for rough surfaces...
* Get material for triangle by index for shape 2 on friction events should fix all friction events against world surfaces having hit surface be "default"
* Store friction hit surface (last) and if we've changed hit surface stop any previous effects and sounds
* Remove unused prop
* Remove unused var
* Make EnableScrapeEffects and EnableImpactEffects internal for now
* Make FrictionEffects a dictionary
* Call PhysicsGameSystem.Shutdown on GameLoop shutdown to ensure vars cleared
* Add an Intensity named control point value (0-1) for scrape particle effects to use
Handle thumbnail video hover slightly better
AssertDbg instead of Assert in MAT_OP_BIND paths, these are meant to be fast paths
Lazy init SceneObject.Attributes since this was allocating CSceneObject::m_pExtraData for all sceneobjects, observable ~0.3ms improvement in generating draw lists
Revert zipball change, doesn't work with LFS / submodules :pensive:
Editor: Use zipball to get rid of git dependency when cloning a project that has a source directory
Use multiview variant for calculating camera direction
Shader objects for VR and high precision lighting fixes
Only play video when hovering package
Fix glass behaviour being transparent when writing screenshots, flags to shadingmodel to fill alpha
Reenable multiview instancing on PS code for now, fixes reflections and lights projecting incorrectly in VR
Set default value if property does not exist in AddDictionaryPropertyInt as we do in AddDictionaryProperty<T>
TickRate Project Settings (#1134)
* TickRate project settings
* Def tick rate 50 as it was
* Obsolete Game.TickRate.set
* take tickrate stuff out of serverconfig
Simplify handling expired tasks (#1157)
* Simplify checking expired tasks (#1143)
Allow any tasks defined in our DLLs to continue, but user code can't continue if it was from an expired context
* Allow persistent tasks in current menu package assembly (#1143)
* Move task persistence allowing / forbidding to GameMenuInstance
vfxc: add Radeon GPU Analysis, can target many arch
Update fossilize
rendersystemvulkan: new pipeline manager w/ VK_EXT_graphics_pipeline_library
Citizen/animgraph: further protect against movement hitches by blocking reset signals to the pelvis lean additive node + updated comments
Fix texture filtering feature on user shaders, recompile blendable and glass
▉▋▍'▆ ▍█▌▋ ▆▄▆▉▍▆▆ ▅▉█▅▍▅▆ ▉▉ ▇▄▉▆▉ ▌▋▆
▊▋▄▊▆▉▆▆▅▌ ▊▆▆▇ ▇▉▇▌ ▊▇▌▄▊▊▊ ▄▍▋ ▌▅█▋▊█ ▄▍ ▊▊▉▉, ▍▋▇ ▍▇▅▅ ▇▍▆▍▍▄▄ ▇▉▅█▍▅ ▊▉█ ▍▇ ▍▊▋▆ ▇▌▋
Fix some NRE's found in logs of people shutting down on game startup
Fix mixed lights having incorrect behavior when disabing high precision lighting offset, same behavior as before with it enabled
Clear downloadTokenSource if it's this one
Remove a lot of the bullshit from the default menu, don't use a lobby to create a game.
Latest shaders with Vulkan RenderState fixes
ShaderGraph: Protect against textures that fail to compile
Fix warnings on rendering transparents, LAYERFLAGS_READONLY_DEPTH_STENCIL disables depth access?? Just really needs LAYERFLAGS_DOESNT_MODIFY_DEPTH_STENCIL_BUFFER, remove vr_readonly_depth_stencil_enable since it's pretty redundant
Make iterating over widget children less error prone
Live update player counts, favourite counts on menu
Mark Color.ToHsv readonly
Remove this obsoleted ClientStats stuff
Add -allowlocalhttp command line switch, only works on server and allows you to do http requests to any port on localhost or private IP addresses. This is only really gonna be useful for dedicated servers to access their apis
▆▋▊█.▌▇▅▊▊█▄▍▌ ▅▌█'▊ ▅▇█▉▆ ▆▍▇█▌▄▇ ▋▄▇█ ▇█▆▆▊▍▆ ▋▅ ▋▇█▆▆▍▊▄ ▄▊ ▆▋▇▄▉▋▅ ██▅▆▌█▊██
Apply first update to damped value with no damping to initialize to target
AnimGraph: Set damped value to target value on first update
null check g_pApplication just incase
ShaderGraph: Compile textures so that images can be used for texture nodes https://files.facepunch.com/layla/1b0711b1/sbox_EXhMp9FGvJ.png
vfxc: can output preprocessed hlsl for vulkan
Use two stage macro expansion for RenderState and SrgbWrite so token pasting combos (and other defines) works as intended on DXC
Fixes RenderState being evaluated incorrectly on Vulkan and doing nothing or worst case crashing
`RenderState( CullMode, D_MYCOMBO );` was getting evaluated differently as FXC had some non standard macro expansion rules:
FXC: `string g_renderState_CullMode < string arg1 = "1" ; > = "" ; ; `
DXC: `string g_renderState_CullMode < string arg1 = "D_MYCOMBO"; > = "" ;;`
DXC's -flegacy-macro-expansion wasn't doing anything either
Citizen/animgraph: prevent animation hitches that could happen when strafing back and forth or changing directions (see commit comment) + improved noclip blend
In order to have movement cycles always start from the same phase (left foot passing the right foot), the state machine in charge of tagging would send a reset signal every time the movement speed would go from under 2 u/s (defined as idle) to above 2 u/s (or 100 u/s in one tick). However, strafing back and forth or changing directions could satisfy these conditions right away, and the received signal would not only reset the 2D Blendspace, but also the newer lean layers, creating a visible hitch. The implemented solution is a second set of state change conditions. The current conditions still exist, but don't send a reset signal anymore. The new set of conditions can still send a reset, but they also require to have spent at least 250ms under 2 u/s first. The defined transition priority order now sets the newer set of conditions to the first slots, to then make sure the time condition can always get evaluated first.
Citizen/animgraph: your input direction is now visually reflected when airborne
https://files.facepunch.com/maxlebled/1b0711b1/airborne_wish_lean.webm
Vulkan compile for wireframe shaders
Set wireframe color as an attribute rather thaan dedicating a whole cbuffer to it, fixes hammer wireframe being dark as well since that data was not being set correctly
Pirate Outfit!
Pirate Outfit - Adjustments to Skinning and LODs coming ASAP.
https://files.facepunch.com/daniel/1b0611b1/Photoshop_JM6t21LgUC.jpg
https://files.facepunch.com/daniel/1b0611b1/pirate.png
https://files.facepunch.com/daniel/1b0611b1/pirate02.png
Get file/line in error report stack
Fix menu resources not downloading compiled versions of shit
Stats data fixes
ByteStream can be written to another ByteStream, added ReadObject
Obsolete the ClientStats class I added 4 days ago :cry:
Add EngineRpc
Add Stats variants for applying to a client from the server, throw exception when calling the wrong function from the server
Don't emit SB3000 about const fields in generic types
ShaderGraph: Center on material node when opening a graph so you don't get lost