userSam Pavloviccancel

1,347 Commits over 1,187 Days - 0.05cph!

8 Days Ago
GatherVisibleLightsGPU Move depth prepass to be the first pass of everything, we'll use it on lightbinner for light culling from now on Do lightbinning for light culling on render thread when a layer first wants to request lights, guarantees we have a depth pyramid by then If we are on a render thread just do a simple flush for ForceFlushGPU(), we just want the GPU to finish it's work, not clean up things Run lightbinner calculation in render thread & actually on lightbinner layer Light culling tests with depth & light radius on compute shader Flush rather than ForceGPUFlush on CReadGPUBuffer::WaitUntilRead() Finish light visibility test shader, rewrite to be cleaner, temp pass PerViewConstantBuffer_t for g_vDepthPsToVsConversion on layer
8 Days Ago
Hash view ID to FindOrCreateFrameBufferScratchTexture as well to solve collision when we have multiple views with same resolution, eg with splitscreen Fix dynamic reflections and AO in viewported views Add compiled shaders for viewport shading fixes Texture barriers for SSR in multiple viewports
11 Days Ago
GatherVisibleLightsGPU Move depth prepass to be the first pass of everything, we'll use it on lightbinner for light culling from now on Do lightbinning for light culling on render thread when a layer first wants to request lights, guarantees we have a depth pyramid by then If we are on a render thread just do a simple flush for ForceFlushGPU(), we just want the GPU to finish it's work, not clean up things Run lightbinner calculation in render thread & actually on lightbinner layer Light culling tests with depth & light radius on compute shader Flush rather than ForceGPUFlush on CReadGPUBuffer::WaitUntilRead()
12 Days Ago
GatherVisibleLightsGPU Move depth prepass to be the first pass of everything, we'll use it on lightbinner for light culling from now on Do lightbinning for light culling on render thread when a layer first wants to request lights, guarantees we have a depth pyramid by then If we are on a render thread just do a simple flush for ForceFlushGPU(), we just want the GPU to finish it's work, not clean up things
17 Days Ago
Cupertino: libpnga Cupertino: GameNetworkingSockets and SteamAPI libs on game folder Convert .dlls to platform-specific (linux/mac) equivalents on GlobalParser for nativedlls in interopgen
18 Days Ago
Cupertino: Remove bunch of win32 & x86 implications, casting for Clang, -Wno-register, multiplat build retail native Cupertino: Use GameNetworkingSockets outside of windows builds, build EtcLib for arm64
18 Days Ago
Cupertino: fix copy_postbuild.sh Cupertino: add xcode_codesin.sh and xcode_gen_dsym.sh Cupertino: update osxarm64 vpc binary Add support for OSXARM64 platform for schemacompiler, fix CBaseFileSystem::GetModPath override, zip_utils on posix and vpc doesn't need to link from all these on other platforms Cupertino: libsteam_api platform_compile_base makes weird assumptions for using CLANG or GCC on windows Izabu/Cupertino: Izabu implies SSE SIMD, shim it with sse2neon, fix constructor on IzPulleyJoint
19 Days Ago
Don't try to to build path from empty dependency string for a VPC Makefile dependency Cupertino: Cleanup source_posix_base, update SDK versions and build settings for macOS, just use latest SDK version, target Sonoma, don't use 10 year old tools for cc chmod +x on vpc_script bash scripts Cupertino: ISO C++20 Fixes Update .gitignore and build scripts, fix permission on antlr, some small code fixes
21 Days Ago
Cupertino: Fix OSXARM64 conditionals, update VPC binary Cupertino: Add gitignore rules for Xcode crap files and add build native step for POSIX
22 Days Ago
Cupertino: Finish setting up makeile for VPC on Mac ARM64 Cupertino: Remove some definitions for OSX64 for OSXARM64 Cupertino: Add prebuilt macOS vpc
22 Days Ago
Cupertino: update VPC, still needs cleanup, builds all but need to sort linking and .mm files Cupertino: Encapsulate Windows-specific code and error handling
22 Days Ago
Cupertino: Use Unix trailing paths for codegen, this should be fine on Windows too Backport new tier0 threadtools stuff for process thread creation, fixes things that were missing from our initial code drop
25 Days Ago
Cupertino: Managed Build Scripts No need for nvpatch for non-windows targets
25 Days Ago
Cupertino: Add Makefile for VPC so we can actually build it without actually having vpc Rename some IOSALL flags to just PLATFORM_APPLE, we always imply arm64 SDL_config doesnt always imply windows Update gitignore
25 Days Ago
Revert "Remove bloom effects layers ("QuarterResEffects"), nothing is really using it, can be better done outside managed if you really want it, was used for the cool HLA ghost effects, did a quarter res depth downsample that was never used" This reverts commit f2ff2e24581df8b38093cce5717420957680fecd.
25 Days Ago
Revert "Remove bloom effects layers ("QuarterResEffects"), nothing is really using it, can be better done outside managed if you really want it, was used for the cool HLA ghost effects, did a quarter res depth downsample that was never used" This reverts commit f2ff2e24581df8b38093cce5717420957680fecd. Hash view ID to FindOrCreateFrameBufferScratchTexture as well to solve collision when we have multiple views with same resolution, eg with splitscreen Fix dynamic reflections and AO in viewported views Use `GetFinishRenderingViewsCounter()` instead of `GetFrameUpdateCounter()` for calculating pingponging for dynamic reflections, the second one increases when all views are rendered
26 Days Ago
Revert shadow submition refactor, I'll revisit this in a bit
27 Days Ago
Don't actually flag a decal as translucent, makes them render twice since we have a specialized decal layer, on top of that when rendering as translucent it wants a MSAA depth buffer that's missing, so we bind a non-msaa error texture that makes vulkan shit itself
27 Days Ago
Remove atlas resizing, feels overengineered, way we have adaptive shadow render size makes it feel pointless Let shadow frusta be calculated entirely on shadowcache, removes redundant calculations and makes the data flow saner, remove bullshit from LightEntry Add support for clearing rects from shadow atlases properly, queue them, fixes shadows on multicam views and childrens, note that shadow caching will still only happen on children views for now
29 Days Ago
Delete passthrough.vmat
29 Days Ago
Update all shaders for good measure
29 Days Ago
Default rendersystem to Vulkan ;) (#1429)
29 Days Ago
Add [ImageAssetPath] fix SerializedCollection NRE Fix MemberDescription.HasAttribute not finding base attributes Convert TextureEditor to use Sequences SequenceControlWidget has popup instead of doing it all horribly inline Fix SerializedObject changes not propagating upwards ResourceStringControlWidget cleanup Use new Sequences json for amalgamated texture Expose some sheet access on texture Simplify amalgamatedtexture packing, less likely to infinite loop, loads from json Add TextureFile sequence `IsLooping ` Can use particle SequenceTime easier Remove parse_mks.cpp Delete mks importers (everything should use our way now) Use gizmos for physics debug draw lines for when I need it Comment out early out in capsule vs hull deep penetration until I get the proper fix Implement joint breaking, break callbacks called on post step, breaking a joint disables the component Support joint breaking on prismatic, revolute, rigid, spherical Add EditorUtility.OpenPropertySheet https://files.facepunch.com/garry/c9f2b5cb-f6bb-4895-a401-346d1dbf939c.png Set qt darkmode=2 so windows will follow system theme (I think) Add ControlObjectWidget Add [KeyProperty] Add KeyProperty to TextureSequence.Source ControlWidget will create an editor for unknown types (this will likely need locking down) Assume test mode will want rendersystemempty Right now our tests machine doesn't have a GPU attached, for d3d11 it's fine since this runs over D3D11 Warp renderer, but not on Vulkan. Change this if we ever do graphics tests on CI. Running locally our tests pass fine without it Fix QPainter was null when calling setPen errors CompileProgress tests (doesn't work) Fix asset browser file type size Fix NRE in GenericControlWidget Add BaseLayout.AddLayout<T> Add ControlSheet.AddProperty SerializedCollection elements return attributes of parent SoundFileCollection doesn't use PropertySheet VR: Fix vulkan submit, submit depth texture to compositor VR: Update overlays from the render thread, because SetOverlayTexture might touch vulkan queue Forward InputData and VROverlay through to Sandbox.Game to preserve compatibility VR: Minor VROverlay cleanup VR: Fix VROverlay xml comment Citizen/animgraph: change the swimming 2D Blendspace from Z/X to Y/X, it was an interesting idea that unfortunately didn't pan out Re-compile ui backdrop filter shader w/ SPIR-V block VR: fix LOD rendering, remove bVr from CFrustum::ComputeScreenSize Citizen/animgraph: made vertical swimming work, it's janky as hell, but at least it's reflected visually; becoming increasingly clear that this state will need custom code on the controller side https://files.facepunch.com/maxlebled/1b2411b1/2024-01-24%2018-50-19.mp4 Fix izQueryFaceDirections using the max instead of the min distance for face separation Fix HitPosition for Trace.Sphere https://files.facepunch.com/layla/1b2511b1/sbox-dev_CvSjg1QMpX.mp4 This should probably just be the radius of the input shape, not both Add Skybox support to Render Tags - good for View Model Camera where we don't wanna render the skybox, or usually anything but things with a viewmodel tag Do the same for 2D skybox Can publish textures Update pull.yml Fix out of range exception in voice (visemes should probably be put in its own component) Fix hitposition when sphere tracing against meshes Rename AssetView to AssetPreview Rename internal AssetPreview to AssetThumbnail Delete broken legacy particles New unified asset preview/thumbnail/video system (cleanup) Size in OnPreRender isn't optional Add Pixmap.GetPixel Texture preview Add Texture.GetSequenceFrameCount, HasAnimatedSequences Asset thumbnail render is async NativeRenderingWidget events Allow preview to tell the renderer whether it's animated (opt out of video) AssetPreview can be pixmap based Consolidate Paint.Target to Paint.ToPixmap, scoped Fix crash when accessing sound samples Add timeout to thumbnail rendering Add timeout when loading SoundFile Fix warnings Draw a line if we can't get sound samples AssetPreviewWidget async wait nicely Size renderWidget properly Fix sphere trace hitposition without fucking it up for capsules Use new Asset url schema Native doesn't automatically mount everything from config/addons.json Menu shouldn't care about local packages/projects - non-editor doesn't load any of that Remove JumpList - we can try this again when we have a concrete idea of project workflow Remove "Content Mode", remove skip start screen - all content should be in a project, so why wouldn't you create/open a project New Game Project -> New Project - these are workspaces for any content really AssetSystem: Defer scanning new projects until they've all been added, and fix the counter Remove Change Project - there's not much sanity in trying to reset the entire engine state when we could simply restart the process -project command line is part of editor bootstrap not engine Hacky mark all games as inactive on bootstrap Consolidate project filesystem logic, call native directly instead of saving json and relying on it reading it File -> Quit prompts unsaved changes Dirty editor window title when scene modified, add renderer Move editor only code out of engine Project class Make sure we still mount content projects on startup Support opening non-game projects Batch rebuild content path / update assetsystem on bootstrap Don't get fucked by removed projects Don't add inactive projects to filesystem Put SpeakerVolume in Sandbox namespace Fix download errors ActionGraph update, add more geometry-based nodes Use Either<> type for object inputs EitherControlWidget Added a bunch of node types Some ActionGraph value editing fixes Update Facepunch.ActionGraphs Don't load map if map instance is not active Remove max impulse from jointdesc, it's never used Support joint deactivation in izabu, this allows ragdolls to break joints, not just joint components Joint IsActive setter so any breakage can be reset Get rid of EnableLinearConstraint and EnableAngularConstraint, not supported and dumb I should probably initialize this! This is making physics debug draw super slow Remove shape before checking collision events, removing a shape can generate contact reports so they need to be removed Delete body after checking collision events Pulse labelled links too https://files.facepunch.com/ziks/2024-01-26/sbox-dev_PV4PZ5cpSp.mp4 Catch EditorTool update errors instead of breaking the whole editor Add Angles.SnapToGrid Add Gizmo.GetMouseDrag Add Gizmo.Snap( angles ), CameraTransform, LocalCameraTransform Just ignore when trying to set nan position Add Gizmo.Settings.SnapToAngles Gizmo.Controls.Rotate outputs Angle delta, RotateSingle outputs only a float angle delta Add rotation snapping UI: improve gradients by calculating an optimal width for gradient textures UI: optimal gradient width prefers background size if specified Add Material.Flags (IsSky, IsDecal, IsTransparent, IsAlphaTest) Changed how material thumbs render Model.LoadAsync and Material.LoadAsync should kind of be async Update Facepunch.ActionGraphs Fixed node creation menu path list when filtering Add GameObjectFlags.NotNetworked Scene.OnEdited, OnSaved don't need to be exposed Add SceneLoadOptions Remove multiple editor instance nag Prefer -editor to -tools Remove native "Startup Tools" Don't create native splashscreen pixmap that we don't use Remove bs "Starting Asset Browser" line Unused -tool -asset command line ToolsDll remove dead gameloop code Pass search paths to external spawned processes resourcecompiler and vfxcompile Fix downloading cloud assets Reapply mass override when setting local mass center Add mass test Auto-open the node creation menu if no other menu options exist Rebuild input / output node when editing parameter names Some physics interface clean up Dead auto mount vpk code -outroot has to be specified before Only need to pass user project search paths & maintain mod names Fix trailing backslash escaping quoted search paths Do a better job at keeping mass override applied Hook up ModelPhysics renderer for prop_physics Fix m_bForceEnableDebugUtils running always even when we dont have renderdoc or validation layers enabled, triples your perfomance on vulkan Fix infinite recursion crash with prefabs when the root object has bone proxies Move ModelEditor.Nodes to game Add Prop component to engine (health, breakable, gibs) Read back the window size from the main window the OS created, Windows will clip the size to the desktop if it's too big and we will have unmatching resolution between what we specify in the swapchain and the actual hwnd ComponentControlWidget: Support dragging in components where there might be multiple of them in a GameObject Make Widget.ConstrainToScreen more reliable Merge branch 'master' into vulkan-staging
29 Days Ago
Read back the window size from the main window the OS created, Windows will clip the size to the desktop if it's too big and we will have unmatching resolution between what we specify in the swapchain and the actual hwnd
30 Days Ago
Fix m_bForceEnableDebugUtils running always even when we dont have renderdoc or validation layers enabled, triples your perfomance on vulkan
34 Days Ago
Assume test mode will want rendersystemempty Right now our tests machine doesn't have a GPU attached, for d3d11 it's fine since this runs over D3D11 Warp renderer, but not on Vulkan. Change this if we ever do graphics tests on CI. Running locally our tests pass fine without it
34 Days Ago
Default rendersystem to Vulkan ;)
35 Days Ago
Fix Graphics.MipmapGen trying to generate one out of bounds mip
35 Days Ago
SubContext support on RenderContext (#1441) * Add IRenderContext::GetSubContext() to get or create a sub context for a new thread, use it in managedsceneobject Render contexts can never be passed between threads; they can only be used on the thread that created them. The thread index will be set in the constructor and can't change after that. This causes a problem in our current implementation of SceneCustomObject that reuses the threaded render context on the main thread and expects we can add things,modify and render it from there, for D3D11 it is not a problem since the implementation or driver seems to have a mutex for command lists, but on Vulkan that gives validation errors and causes crashes. This implements the concept of SubThreads to RenderContext, a very simple way to pass the render context around and consume it in a timely manner, it creates a new render context with the same characteristics as the parent one in a new thread and submits it when the parent context is released
35 Days Ago
Remove deferred rendering meshes from scenelight We no longer have a hardcoded path for rendering viewmodel shadows, that will be handled with a special component in managed Fix depth normalization on GetWorldPosition, since we are using 3D Skyboxes again we are splicing a bit of the depth range, fixes feathering on sprites again
38 Days Ago
Fix motion blur not working, simplify it, make it use the same reconstruction technique as in dynamic reflections, I still don't like it but this gives correctness to it https://i.imgur.com/YkSiZXY.png
39 Days Ago
gaussian_bloom_blur compiled material to fix bloom on dev builds
40 Days Ago
Add IRenderContext::GetSubContext() to get or create a sub context for a new thread, use it in managedsceneobject Render contexts can never be passed between threads; they can only be used on the thread that created them. The thread index will be set in the constructor and can't change after that. This causes a problem in our current implementation of SceneCustomObject that reuses the threaded render context on the main thread and expects we can add things,modify and render it from there, for D3D11 it is not a problem since the implementation or driver seems to have a mutex for command lists, but on Vulkan that gives validation errors and causes crashes. Valve has the concept of Secondary RenderContexts but doesn't fit what we need This implements the concept of SubThreads to RenderContext, a very simple way to pass the render context around and consume it in a timely manner, it creates a new render context with the same characteristics as the parent one in a new thread and submits it when the parent context is released Remove pragma optimize off Only override states if target layer wants it so, otherwise subcontext just uses the default rasterizer and depth stencil state, fixes worldpanels with depth test, pass attributes from rendercontext rather than layer
40 Days Ago
Only override states if target layer wants it so, otherwise subcontext just uses the default rasterizer and depth stencil state, fixes worldpanels with depth test, pass attributes from rendercontext rather than layer
40 Days Ago
Remove pragma optimize off
40 Days Ago
Add IRenderContext::GetSubContext() to get or create a sub context for a new thread, use it in managedsceneobject Render contexts can never be passed between threads; they can only be used on the thread that created them. The thread index will be set in the constructor and can't change after that. This causes a problem in our current implementation of SceneCustomObject that reuses the threaded render context on the main thread and expects we can add things,modify and render it from there, for D3D11 it is not a problem since the implementation or driver seems to have a mutex for command lists, but on Vulkan that gives validation errors and causes crashes. Valve has the concept of Secondary RenderContexts but doesn't fit what we need This implements the concept of SubThreads to RenderContext, a very simple way to pass the render context around and consume it in a timely manner, it creates a new render context with the same characteristics as the parent one in a new thread and submits it when the parent context is released
42 Days Ago
Write vertexobject on end of scope
42 Days Ago
Softer depth comparison for subsurface scattering Implement Depth::GetWorldPosition properly, document it nicely Recompile sprite with depth feathering
42 Days Ago
Make gizmos use DynamicSceneObject, add CMeshBuilder2::WithInstancedTransforms to flag mesh to use transform system without changing vertex layout, fix transforms on dynamicsceneobject in native
42 Days Ago
Fix vertexobject reusing on gizmos
42 Days Ago
Remove ManagedSceneObject/SceneCustomObject, only causes problems now, use DynamicSceneObject if you use it Fix transforms on dynamicsceneobject Move VertexSceneObject to use SceneDynamicObject, upload queue to GPU when it wants a new instance Add MeshBuilder2::WithInstancedTransforms to add per-instance transform info to the input layout, does not change the data structure of the layout but makes transforms be ellegible with them programatically
43 Days Ago
Remove ManagedSceneObject/SceneCustomObject, only causes problems now, use DynamicSceneObject if you use it Fix transforms on dynamicsceneobject Move VertexSceneObject to use SceneDynamicObject, upload queue to GPU when it wants a new instance Pass per transform index data to SboxVertex_t, I still don't like how this is not easily templateable though
46 Days Ago
Remove Thread_DrawDrawList mutex, seems to cause some issues on testing, working on a proper solution for it anyway
47 Days Ago
Remove planar reflections from scenesystem, remove unused shared shader defs
47 Days Ago
Remove ScenePortal/CMonitorObjectDesc, render a camera to texture for same functionality
47 Days Ago
Compile water shader UI doesn't consume vertex clipping or even skinning
47 Days Ago
Only bitch that vkQueuePresentKHR failed when it's an actual fail condition, some conditions are still considered and enqueued Fix pObjectName in RenderDeviceVulkan::Construct, empty string check was inverted VK Validation: Fix texture transition in CSceneSystem::DownsampleTexture, this is not to use depth stencils but will always assume color Imply console apps want rendersystemempty, maybe revisit this in the future if we want them to do any kind of GPU compute VK: Remove deprecated debug marker in favour of debug utils, should be getting prettier output from GPU profiling tools too Remove a bunch of redundant vulkan render markers, makes gpu debugging finally show up properly nice looking https://i.imgur.com/7Mq0lhv.png Colors that don't melt my eyes Add a temp mutex to DrawDrawList to fix race condition when drawing from main thread Fix glow outline rendering https://i.imgur.com/cK9VbNB.png Renderdoc label colors for managed drawcalls were black Highlight.cs: should be SetCombo not Set Don't change fbstate with the viewport size, can cause it to be bigger than the fbstate size too, viewport offsetting is done just right below Make MultisampleScreen take the MSAA amount from the current context rather than from the main swapchain, fixes validation of effects using the wrong MSAA level as what the layer wants, fixes glow outlines in preview cameras Don't write glow to alpha, makes camera previews and screenshots not be translucent with them, compile shader Simplify water shader removing fog and other components, these would all be in it's own entity component now, much simpler, also the whole shader needs to be thrown away Never expose intermediary MSAA'd depth to the user, you're just opening a can of pain, use Depth::Get() method instead Shaders need removing old MSAA depth ("SceneDepth"/"DepthBuffer") Directional AO depth doesnt use MSAA Keep MSAA depth read for decals only Remove bloom effects layers ("QuarterResEffects"), nothing is really using it, can be better done outside managed if you really want it, was used for the cool HLA ghost effects, did a quarter res depth downsample that was never used Delete viewmodel AO ( Will come back as a reuseable generic component for camera ), ripplecompute ( unused, shit ), fix depth fetching on Glass to use Depth::Get Remove crumbs of viewmodel ao
47 Days Ago
Delete viewmodel AO ( Will come back as a reuseable generic component for camera ), ripplecompute ( unused, shit ), fix depth fetching on Glass to use Depth::Get
47 Days Ago
Directional AO depth doesnt use MSAA Keep MSAA depth read for decals only Remove bloom effects layers ("QuarterResEffects"), nothing is really using it, can be better done outside managed if you really want it, was used for the cool HLA ghost effects, did a quarter res depth downsample that was never used
48 Days Ago
Never expose intermediary MSAA'd depth to the user, you're just opening a can of pain, use Depth::Get() method instead Shaders need removing old MSAA depth ("SceneDepth"/"DepthBuffer")