7 Days Ago
Splines: Add working state from a couple of months ago (pre FP) Basically a port of my C++ spline library wrapped with a component + editor tool. Still requires some API and Editor UX cleanup. https://files.facepunch.com/lolleko/1b0911b1/sbox-dev_0KaDTZAF7l.mp4 Nav Basic: Reduce rotation on test slope to account for floating point inaccuracies Fix obsoletes Add roughness test scene, Compares if IBL GGX Filter matches reference Update Roughness_test Use WorldTransform/LocalTransform First pass on spline model deformation https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_pXP1R0vFzj.mp4 https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_1SBGUutgNa.png Remove stackalloc (it's not whitelisted) Fix duplicating a spline point with shift not copying roll & scale Use sceneobjects for spline model instances instead of Graphics.Draw Deform spline model bounds to ensure accurate frustum culling https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_FuFEWnL2FA.png https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_xrWVBJicsC.png PoC spline collisions Currently just super hacky static mesh/model collision https://files.facepunch.com/lolleko/1b1711b1/sbox-dev_03QtKgtfYW.mp4 Update trails scene Hull based spline collisions Allows proper physics simulation of the spline models. Works okay for boxes, still need to figure out why izabu quick hull struggles with more complex shapes. https://files.facepunch.com/lolleko/1b1811b1/sbox-dev_YFlVR7whUv.mp4 Filter duplicate vertices after spline deformation and before qhull Update terrain scene, adjust things, envmapprobe had inverse scale (wtf), use ibl, should be a good starting point to have a terrain with nice lighting setup https://files.facepunch.com/sampavlovic/1b1911b1/NLZEcHl7Uh.jpg Spline collider now supports all collision shapes Added custom subdivision logic for each shape. How much subdivision/collision geometry is created can be controlled by the user via property. Performance still sucks, but optimization should be easy going forward. Individual bone/shape transforms are currently not working. https://files.facepunch.com/lolleko/2024/December/19_18-49-AnotherDrongo.png https://files.facepunch.com/lolleko/2024/December/19_18-48-SecretNuthatch.mp4 Add Shader Classes Test Spline Collision Support BoneTransforms and Rotation Spline collider now provides accurate collision for any shape and any rotation. Deformed/Twisted citizens with collisions: https://files.facepunch.com/lolleko/2024/December/23_12-34-DishonestQuagga.png https://files.facepunch.com/lolleko/2024/December/23_12-34-HorribleNightheron.png Cleanup Spline Editor Proper undo support for gizmo initiated changes Frustum cull Gizmos as they are fairly expensive to create. Optimize Gizmo drawing. Defocus input when switching spline point Bounding box calcualtion for spline components Fix typos Improve spline editor undo fix PlayerSquish collision Revert "fix PlayerSquish collision" This reverts commit 18ba5597c624789e8e8b999e7b64bd33ae33e4ae. More spline undo improvements Fix spline gizmo culling Bump hitbox of spline line Align tangent mode names with exiting curve class Fix roll and scale changes not invoking spline changed code -> Code Rename some vars in spline math Scene reproducing Facepunch/sbox#1756 Cleanup spline components and test scene Fix spline loop (de)serialization Remove GetNormal function from spline component for now There are so many different ways to calculate normals for splines (Frenet-Serret-Frame, Fixed Up Vector, RMF/Parallel Transport...) Not sure yet, which one we want to offer. Binary search for accessing splines at a distance Fix some NREs in spline model renderer Play around with tangent frame calculation using Parallel Transport / RMF https://files.facepunch.com/lolleko/2025/January/07_20-51-CriminalBlackfish.mp4 Move spline deformation away from vertex shader to allow deformation of arbitrary models Deform spline models on the CPU like a cavemen. Use RMF to avoid twisting artifacts. Will move this to a compute shader eventually. https://files.facepunch.com/lolleko/2025/January/08_10-35-AgileHectorsdolphin.png More customization for tangent frames/up vectors This is useful for stuff like loops. 1. Default Up Vector (0,0,1) -> twisting artifacts: https://files.facepunch.com/lolleko/2025/January/09_17-52-OrangeredCowrie.png 2. Automatic up vectors using rotation minimizing frames (RMF) https://files.facepunch.com/lolleko/2025/January/09_17-53-DesertedClam.png 3. Manual up vectors/frames: https://files.facepunch.com/lolleko/2025/January/09_17-52-MisguidedWryneck.png Some Model Deformation optimization Still only on the CPU but it's surprisingly fast https://files.facepunch.com/lolleko/2025/January/09_21-39-VacantIridescentshark.mp4 Add spacing parameter https://files.facepunch.com/lolleko/2025/January/09_23-00-AngelicVipersquid.mp4 🚂 Update Spline Collider to match new SplineModel Deformation https://files.facepunch.com/lolleko/2025/January/09_23-59-LinearAlligator.png Delete legacy/unused deformation code Enable Global Scale for spline models https://files.facepunch.com/lolleko/2025/January/10_11-16-TintedAfricanparadiseflycatcher.png Base SplineModelRenderer of ModelRenderer Allows Tint, MaterialOverrides and other options to be used on spline models Cleanup spline component & tool naming Update Test Scene https://files.facepunch.com/lolleko/2025/January/10_18-17-TornAllosaurus.mp4 Fix water shader scene name Add ParticlePhysics test Scene testing dynamic action graph properties Remove GTAO include code from scenestaging DynamicReflections component stub Update Viewmodel scene with ssao also showcasing proper prepass New decal Direct port of IES Profile Texture from hackweek into TextureGenerator, use Source instead of a file for now https://files.facepunch.com/sampavlovic/1b2611b1/OCXtsLYQSC.png Update decals test scene Scene reproducing Facepunch/sbox-issues#7443 Iterate Dynamic Reflections Component, add shader Iterate Dynamic Reflections Component, almost feature complete Merge branch 'main' into navlink-scene