17,253 Commits over 1,338 Days - 0.54cph!
Regenerate project solution when compiler settings are changed - fixes Facepunch/sbox-issues#4801
Update spirv-reflect
Fix spirv-reflect bug with output_vertices being stomped
Validate geometry shaders [maxvertexcount] to not exceed limits - fixes Facepunch/sbox-issues#4738
ModelBuilder.WithLodDistance specifies the lod level the distance is for
Flag hammer maps to always render cubemaps dynamically & always render at least one frame regardless of distance update settings
Add PhysicsShape.Sphere and PhysicsShape.Capsule to get properties for these shape types
Cubemapper tests
Remove all ggx code for now & just copy directly to cubemap array
TextureCube with mipmaps and arrays and mipmaps
Move texture logic from cubemapper to c#
Stub for cubemapper_cs, will calculate both GGX and spherical harmonics all in GPU
Handle all array index stuff in cubemapper
Allow for single sliced cubemap array, needed to be able to render an independent texture in the renderer since it expects a TextureCubeArray, also allow TSPEC_CUBE_CAN_SAMPLE_AS_ARRAY if we want UAV
Also fix a problem where CTextureManagerVulkan::GetImageView wouldn't work with a cubemap array as a rwtexture2darray in compute shaders
Fix cube orientation when copying, do texture per envmap probe instead of a singleton array, this will cause headaches with multiple envmaps intersecting but makes it much simpler
GGX filtering
Don't bother with writing cubemap normalization right now (in fact disable it for now!), reuse previous mip so that we have more quality with less samples
Assert isn't valid anymore in ComputeImageViews since we can pass a cube array
Do cubemapper processing of all faces at once without using intermediary copies, 4-8x speedup (~17ms > ~2.5ms), still needs to be faster
https://i.imgur.com/b61mX1Y.png
Rendersystemvulkan: Alllow binding specific cubemap [ & arrays ] mips if UAV
Remove unsued, clean up
Dynamic cubemap component settings
Remove the old BuildCubeMaps
Add WidgetUtil.CreateSwapChain
NativeRenderingWidget renders in regular render path
Fix RenderDeviceInfo_t wrong size
Add HandlePendingSwapChainResize for explicitly handling swapchain resize events before doing any work, fixes NativeRenderingWidget.RenderScene rendering on a frame with different window size than the actual swapchain ( and then having invalid color/depth buffers)
CI fails building shaders when machine is coming from a branch that was deleted, full checkout action should be enough for pulling?
If cubemap has no normalization set, don't consider it for NormalizeCubeBrightness
Compiled shaders with normalization brightness fixes for cubes without SH, reenable cube normalization
Wip fast cubemap filtering ( 2.5ms > 0.09ms 😱 )
Adjust things on fast envmap filtering, major cleanup, rename shader to envmap_filtering
Use high quality GGX filtering if baking cubemap as OnEnabled
Vulkan: Fix image transition layout when binding a mip of a cubemap that's sampleable as Texture2DArray
Don't fetch render attributes from context, that's composited over, fixes a crash
Assert when UAV Index is invalid
Mesh Editor: Add button to select all faces
Add PhysicsShape.Triangulate
MeshComponent sets scene object tags when they change
Input will tick before layout is computed on a newly created panel, so check null. Fixes Facepunch/sbox-issues#5268
SCSS: Implement rem and em
https://files.facepunch.com/alexguthrie/1b2611b1/sbox-dev_f5t9eFrLSk.png
Remove dupe convars_save
Api.GetAsync throws if status code not OK
GameObjectInspector: reused component sheets get added to used list so we don't end up duplicating the same component type
Add IEnumerable<Type>.GetCommonBaseType()
CanEdit.CreateEditorFor( Array ) uses the most common base type. Fixes Facepunch/sbox-issues#5233
About to show!
Use component.ToString for ComponentControlWidget, to make it easier to override what's shown
FindRenderStateInfo case insensitive
Support pascal case filter enums
Fix NRE when running Game.Close in the editor
Toggle play when running Game.Close in the editor
Set InputState.Ignore if game isn't being played
CMaterialSystem2::GetVfxPlatformType default to SPIRV
Remove HLSL/GLSL compatibility funcs
Delete unused Gather4Red macros
Use normal precise keyword
Piss off Dx9Sampler
What the fuck is SV_ScreenPosition, delete pre SM 4.0 semantics
Unused tessellation macros
vr_cubemap_fog include common_samplers
Fuck these Front/BackFace macros
Useless redefines
vfx_vulkan: actually fail if any of this validation fails, add another validation check for binding ids
vfx_vulkan: improve error feedback
Remove domain/hull shaders (they weren't working, Valve already deleted them, compute better)
vfx_vulkan: never disable optimizations, this was fucking spirv-reflect and the compile time difference is minuscule
Don't have a different fastMode shader compile, it doesn't do anything now
Matching register offset check in AddSamplerStateVariableToCommandBuffer, same as SetSamplerStateValueFromVariable (prevent oob write)
Bind some default shader resources to prevent crashes, this stuff shouldn't be hit normally so warn/assert it's likely solved by a shader recompile otherwise yell at me
Add BodyGroups and MaterialGroups in Prop Component
If collision source can't get game object from collider, try to get it from body
Add collision events to ModelPhysics
Mesh Editor: Add snap to vertex
Mesh Editor: Add edit logs to face operations
Mesh Editor: Clear selection on tool disable
Mesh Editor: Add new faces to selection on DetachFaces
Mesh Editor: Add snap edge to edge https://files.facepunch.com/layla/1b2311b1/sbox-dev_47gpBlC2me-00.00.00.000-00.00.21.192.mp4
Don't switch to object tool after creating block
Block tool saves last material used
Add PrimitiveBuilder.Material
Mesh tool selection and block tool are inspector widgets like they should have been in the first place
Clean up mesh control widget
CreateModelFromPolygonMesh add mesh collision automatically
Add modeldoc PhysicsMeshFromRender
Physics hull from render works on render primitive meshes
Add RenderPrimitiveMesh to modeldoc (not created in editor) that can serialize a CModelMesh to allow for inline meshes in vmdl
Add SaveToKV3 and LoadFromKV3 to CModelMesh
Add EditorUtility.CreateModelFromPolygonMesh
Add button to MeshComponent to convert to vmdl
Allow alpha on MeshComponent
ActionControlWidget: show graph errors in widget
https://files.facepunch.com/ziks/1b2211b1/sbox-dev_DUsekC8GAK.png
Even nicer stack traces for logs / exceptions in Action Graphs
https://files.facepunch.com/ziks/1b2211b1/sbox-dev_pFRBSK1ykL.png
Use high quality GGX filtering if baking cubemap as OnEnabled
Adjust things on fast envmap filtering, major cleanup, rename shader to envmap_filtering
Wip fast cubemap filtering ( 2.5ms > 0.09ms 😱 )
Whitelist common_samplers.fxc (hate this)
PresentYUV420Texture sets its sampler state (this whole func is manual?), fix random crash from using an unbound sampler
Revert verifying bound samplers & images until I fix these bad bindings
Compiled shaders with normalization brightness fixes for cubes without SH, reenable cube normalization
Debug string for CTextureManagerVulkan::GetTextureResource
Whitelist some more common exception types
Vulkan: Verify bound samplers and images
Nicer exception logging / stack trace for Action Graph exceptions
Push EditorNodeLibrary in Asset.TryLoadGameResource()
Clean up opening editor for a given action graph
Implement inspecting action graph elements
Make sure ActionGraph GUIDs are unique too
Make sure embedded expression graphs have an input node
Fixes Facepunch/sbox-issues#5253
Hide input node for expression graphs with no inputs