1,109 Commits over 1,219 Days - 0.04cph!
Remove stereo multiview instancing from debug menu
Add Texture.Update<T>( ReadOnlySpan<T> data ) & Texture2DBuilder.WithData<T>( ReadOnlySpan<T> data )
Stop using PixelInput for everything (#1336)
* PS_InitFinalCombiner( PS_INPUT ) -> PS_InitFinalCombiner() so it works without COMMON_PS_INPUT_DEFINED - this is just for default values anyway
PS_CommonTransformNormal should be wrapped in COMMON_PS_INPUT_DEFINED too
* Material shading API can be used without common PixelInput
Internals rewritten to remove reliance on a commonly defined PixelInput
instead every function just takes what it needs.
The only public methods you may have been using were changed like so:
```diff
- float3 TransformNormal( const PixelInput i, float3 vNormalTs )
+ float3 TransformNormal( float3 vNormalTs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
- float3 NormalWorldToTangent( PS_INPUT i, float3 vNormalWs )
+ float3 NormalWorldToTangent( float3 vNormalWs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
```
Material::From( PixelInput ... ), ShadingModelStandard::Shade( PixelInput ... )
stil exist but are wrapped in ifdef COMMON_PS_INPUT_DEFINED, so only work
with the common PixelInput include.
Material::Init() added to initialize a Material with default values
Geometric normals are now distinctive from normals in Material too, this
is important for the lighting model: https://files.facepunch.com/matt/1b1711b1/beforeafter.png
And a lot of tool vis modes were fixed too.
* Material.AmbientOcclusion float3 -> float
Strip multiview instancing / instancing scalars from engine
Remove D_MULTIVIEW_INSTANCING and multiview methods from shaders
Remove X360 macros INSTANCING_PARAMS & INSTANCED_SHADER_PARAMS
Update system.fxc
Refactor some Graphics files, remove long obsolete methods
Add PhysicsWorld debug drawing methods for scenestaging
Fix shadergraph error when compiling
ResourceControlWidget: Add Open In Editor to context menu
Gizmo.SceneSettings.CameraZFar default from 10,000 -> 100,000
Get rid of D_MULTIVIEW_INSTANCING combo
Revert "Latest compiled shaders" - sunlight shadows are fucked, and are fucked in any new shaders compiled. Not worth me debugging since the new lightbinner doesn't use them and is right around the corner
Don't destroy PVS if it's also used in another SceneWorld
Nah that wasn't it + it already does this further down
Fix crash when clearing SceneMap worlds, we were setting PVS to nullptr instead of the default pvs
Add SceneParticles.SetNamedValue( string name, Vector3 value )
Update shader build github workflow
Fix out of bounds write in tiled_light_builder_cs causing nasty undefined behaviour
Tiled lighting branches properly, ideally this should be matured enough to not need to be toggled as it's vital to high perf
Old envmap code
Fix cubemaps always using 1 extra cubemap they shouldn't be (need shader rebuild)
Before: https://files.facepunch.com/matt/1b0211b1/sbox_ZJY2zoiVoF.png
After: https://files.facepunch.com/matt/1b0211b1/sbox_Gvuv88s1oY.png
convolve_environment_map.shader - optimized compile + vk shader
Merge latest Valve rendersystemvulkan & rendersystembase changes
Primarily this is switching to use VMA, but also dozens of major and minor fixes and general upstream parity with our own changes distinct and clear.
Vulkan BarrierHelper
Use barriers for the multipass texture downsampling, this was messing up our depth pyramid making mips look like this: https://files.facepunch.com/matt/1b3111b1/qrenderdoc_bn7FgvAx1n.png
Move these procedural layer renderers to not be inline, drop Vr prefix from quad renderer
Move tiled light culling to it's own layer renderer ( this should be per-view in the lightbinner really, but I can't touch that right now )
Buffer barriers on the culled lights buffer
Clean resource names of textures further to not mistake for absolute path
IRenderDevice: delete 360 only method
GPU Resident Textures debug menu
Set debug names for c# loaded images
Use schema-less RuntimeTextureSpecificationFlags_t, remove redundant flags
Native Resource Cache
Use a sliding window cache alongside weak references for our native resources in C#. There were cases where we were reloading resources every frame because the garbage collector was too good at it's job, so we'll let per frame loads hang around a bit longer.
Resolves #1306
Fix strong handle leak in Texture.FromNative
Flush managed rts the same time native wants to, stops those huge temporary vram spikes when resizing scene editor
Fix leaked resources when CSwapChainDx11 is resized
Before: https://files.facepunch.com/matt/1b1711b1/Taskmgr_mvUnDuMcc1.png
After: https://files.facepunch.com/matt/1b1711b1/Taskmgr_fd19SDW3Xa.png
CSwapChainVulkan also flushes scratch rendertargets on resize
Fuck all of that actually, just leave a better comment here
Make sure intermediate depth matches intermediate output color render target
ComputePipelineRenderTargetInfo doesn't care if toolview is false
This does the same shit
r_textures_list_all - see all resident textures
tier0: new memalloc aligned16 accessors
CResourceNameGetter inherits CResourceName
Don't stub CSceneSystem::SetMainSwapChain in tools, why would we not want SCENE_RTSIZE_FRAMEBUFFER the correct size
RenderTarget.GetTemporary uses 32 bit depth when needed
fix options.cpp redefinition
oops obviously the assetsystem can be null from other contexts
When materials compile new textures register them immediately - fixes cases where recompiling the vmat with a new texture would result in a missing texture
Hash fog volumes and update clipmaps when they change
Add SceneLight.FogLighting
Force update volumetric fog clipmaps when fog volumes are dirty (e.g editor mode)
Network SkyCameraEntit.SkyboxScale and remove unused shit
Consolidate current game project logic further, make these tests better reflect use case
Switch from forked to stable MonoMod.RuntimeDetour
Make sure we generate a sln and sync package manager when a project isn't launched straight from the .sbproj
No more .addon upgrading
This seems redundant and like it'll cause something unpredicted in the future
Can load http:// images
If any HammerEntity fails to parse don't shit the bed for all of them
Start the editor with the previous saved log level (e.g tracing stays on)
Fix events not running on instances where they have events on the base and derived class
Hang watchdog -> tools stall monitor
Splash screen is stall monitor main thread window before editor opens
Snap angle works under 1.0
Hammer: float snap angles and some more presets
Fix asserts showing as errors in intellisense
Delete loads of random shit from game
Don't explicitly set MultiProcMaxCount, defaults to # logical processors (which is 96 on our build server) - compiles 15% faster locally for me
Latest tier0 basetypes
Split everything out of basetypes.h into new or existing includes, remove very old code, typesafe numerics, bring engine up to date with these changes
Clean up groups.vgc, sbox_game.sln can be everything -thirdpartylibs
texturedictionary to materialsystem2
▇▌▆▆▉▆▆ ▉▊▇█ ▄▅▌█▋▍▉█▊ ▌▋▌▍▋▉▄ ▊▆█▅ ▊▄▅▇ ▅█▊▌▄▉▊
Delete all these random devtool scripts, we're not using any of it, delete some other random unused stuff
One .gitignore, .gitattributes clean up obsolete stuff
Use .git-blame-ignore-revs so we can ignore formatting commits
EditorCookie seems to be null here making CI tests hang, but I don't know why it'd be null @devultj ?
Test game/server should timeout