645 Commits over 1,461 Days - 0.02cph!
fix last cubemap not being sorted
Reduce queryable size of sphere, optimizes tile volume
skip backfacing queries on tiled light builder
Cleanup, dont pass depth on non depth prepass
Transform camera ray, fix typos when doing box intersection, oops
You should be seeing the good perf gains from tiled now
Initial work for tiled light sorter
Remove constant buffer transform code
Fire tiledlightbuilder compute shader on views
Iterate shader structure for tiled rendering, remove remaints of constant buffer transforms
Evaluate cubemaps and lights on compute shader
Allow for struct types in generic buffers in VFX
Properly index lighting and envmap info on tiled light buffer
https://i.imgur.com/5141J1x.png
Revert "Fix normals for valve standard shading"
This reverts commit 29c62c8422ec364a9acb104da4bc58a12e0ea8ae.
Tiled lighting for envmaps and lighting on standard shading model 🏃♂️💨
Use 128 lights for clustered instead of 256
Double the perfomance of tiled light build job
Pass radius of light to shader so we dont need a sqrt operation on culling
Sample shader to visualize tiled rendering
Revert "Pass radius of light to shader so we dont need a sqrt operation on culling"
This reverts commit 62ca1b89275c339f2db357781ab9cab0f6a8d525.
Fix driver crash on Nvidia
Fix 'LightSim_MaterialTint has inconsistent value' warning
Put tiled code on vr_lighting
Much simplify sphere and box intersection tests, add bounding area for nearby tiles
Tiled rendering for valve standard shading
tiled rendering for envmaps on valve standard shading
Correct box hit algorithm for tiled light builder
Fix shadow rescaler
Work on viewport level, optional single ratio, fixed bug with perfect fitting shadow maps
Fix shader compilation
Fix spritecard compilation
Initial work for VR Instancing for tiled light rendering
Fix glows in Vr while we're at it, still pending rewrite
Preliminary support for VR in tiled light builder, include objects
Remove magic number and reproject view for tiled light builder
Treat warnings as errors on shader compilation on internal builds
Make tile resolution proportional https://i.imgur.com/2knXfUw.png
Fix light typo on vr_lighting
Fix warnings on standard shading model
Iterate on tiled light builder
Fix data races on tiled light builder
Fix warnings from core shaders
Use 48 wide pixels for each tile
Fix Z-Fighting when cubemap bounds is the same as the geometry
Update tiled light builder shader objects
Fix warnings on blendable and commit shader objects
Simplify tiled rendering accessors, add runtime UseTiledRendering render attribute
Add r_tiled_rendering convar
Update shader objects
GPU driven Depth Culling for tiled rendering
Use half tile offset for tile coordinates
Depth prepass culling for envmaps too, cleanup
fix envmaps being fucked up
Return max depth for tile, update object files
Add r_tiled_rendering_depth_cull
Merge pull request #406 from Facepunch/tiled-rendering-merge 🟦🟦🟥🟧🟨🟦🟦
Tiled Rendering Support
Fix unitialized memory and not binding shape buffer if running out of space in high quality reflections
Fix Spritecard not clipping through user clip planes (Fixes physgun beam reflecting through water)
Upgrade d3dcompiler library for client loading, fix reflection with version v7
Support for multiple d3dcompiler and their reflection types
Simplify that, and add d3dcompiler_47
Remove redundant functions now that they are processed on the core shader
Fix typo
Merge pull request #356 from Facepunch/d3dcompiler_47
Add support for the latest version of D3D11 shader compiler
Fix depth prepass not working
Add clip planes for spritecard, should fix physgun trail clipping on water
Unset D_ENABLE_INDIRECT combo on volumetric fog shader and leave it always on, indirect volume lightmap is also used for baked fog!
Fix glow outline on water
Fix foliage having no subsurface, disable GS from foliage entirely for now, unlikely to yield much gains
Fix shading on blendable
Cleanup, give support to Transmission on Material API
Delete material that referenced old cookieslice
New glow based on outlines rather than normal extension
Do a full cycle on the glow to close last mesh gap
sbox_glow_stencil > glow_stencil, push C++ side of glow
Remove non-cs version of sbox_cookieslice, never used
Some adjustments to glow, fix projection viewport being messed up, render them before translucents
https://i.imgur.com/0uvh7xX.png
Also kill old sbox_cookieslice shader source
Fix Warning on sbox_glass and volumetric_fog, push object files for water and glass
Remove references to reflex sight
Make full shader compile optimizations always implicit, make dev shaders compile with full optimizations
Add ScreenspaceCorrectionMultiview that does both resolution scaling and VR correction
Use ScreenspaceCorrectionMultiview for refraction on glass and water
Add ShadingModelValveStandard for shaders that need visual parity with Valve's shading
Merge branch 'master' of sbox
Fix volumetric fog on VR without doubling our compile time 😵💫
Remove #pragma optimize off that managed to slip through
Fix relative specular luminance on blendable
Run mat_recompileoutdatedshaders in a thread
Fix SDF trace functions
Use UINT32 for transformation indexes on shaders, adjust multiview instancing functions to use nInstanceTransformID instead, support for it in legacy transforms too
Reenable Sructured Buffers for transformation
Bump up VFX ABI version
Add mat_recompileoutdatedshaders, Iterates and recompile shaders from previous ABI version.
Change color format of InstanceTransformUv from Float16x2 to R32 UINT, also on managed vertex objects
Adjustments to transform system, iterate, cleanup, do byte alighment fixes to work on AMD
Shader objects for core shaders
Shader objects for core addon shaders
Reenable constant buffers until I fix AMD driver bug
Revert shaders to be compatible with cbuffers
Flag that shaders should be compiled with cbuffers until amd fix
Squashed merge structured transform buffers
Cleanup
Use precision padding to make up for low precision upload to GPU, fix instancing padding on vr_lighting
Allow usage of VS_INPUT in geometry shaders
Add new shaders with new transform slot sequence strategy
Adjustments, refactoring, cleanups and new strategy to bind transform buffers
Rename BindTransformTextureAndInstanceIDBuffer to something friendlier
Use thread safe allocations for transforms, fix transform alignment
Temp disable multiview instancing combo to speed up compiles
remove F_UNLIT and F_DISABLE_TONE_MAPPING from Complex, unlikely to help
Trim complex a bit more
Yank the internal includes out of foliage shader, make it work in our API
Make Water compile with our new API, optimize it, have more accurate reflectance constant
Add USE_CUSTOM_SHADING flag to skip default combos
Make ToMaterialMultiblend compatible with our new API
Object compile of base shaders with structured buffers working as intended 🙏
Use MSAA friendly discard for foliage, cleanup
Object files for base addon shaders
No need for a mutex on AllocateTransforms
Add toon example shader
Iterate example toon shading, add outlines
Merged new-shader-api
Disabled transform structured buffer by default, will be reenabled soon
Update base.vfx with the base from standard.vfx
Add class and interface language support to VFX Compiler
Make base class an optional parameter for VFX classes
Allow members to be static or have other identifiers on VFX
Add class_member_definition to VFX variable parser on ANTLR
Accidentally removed ripple collision, let's put it back
Merge branch 'master' of sbox
Merge branch 'master' of sbox
Tweak ripplecompute, clamp collision and ripple size
Fix missing summary tag close on ScenePortal
Better way to do ripples for moving water surfaces
https://i.imgur.com/xWvwdAg.mp4
Refactor water, allow for moveable surfaces
Add ripples simulation forces for moveable water
https://cdn.discordapp.com/attachments/834319259458994216/958656107813941258/sbox_0054.mp4
Clamp water xRes and yRes to not overflow dynamic vertex buffers, allows for water bodies of any size, revisit for env_sea
Fix reflection vector on simple reflections
Fix underwater caustics
Pass Time.Delta to shader parameters
Fix water collisions being wonky
Minor tweaks on water
Add surface roughness slider to water
Simulate ripples on bullet impact
https://imgur.com/a/8eGjZdj
Don't use nullable for water properties, set default value instead
New ripple simulation with collisions
Add drag to fluid simulation and collisions
Cleanup ripplecompute and how ripples are added
Fix seamless entry on water, better water caustics, remove options for tesselation other than on/off, iterate on waves
Cleanup hull base shader
Cleanup ripple collision and propagation
Adjust ripple strength
New underwater surface method
Port eyeball shader to use our shared code, fixes clip planes on water
Add fog support to water surface, cleanup
Clamp radius of water directly on C# side, send D_VIEW_INTERSECTION combo
Put water combos right into place, upload water shader objects (including ripple)
Propagate ripple by framerate, fixes it slowing down on low framerates
Don't put r_water_ripples inside RippleCompute.cs, breaks when pushing it to shader
Add render bounds for water, only render water if we are are looking at it's bounds
Use two tone fog by default on test water
Push latest water shader objects
Faster, much better water caustics
Simulate wind ripples on water, increase offset, make underwater fog blend seamless with edges and view
Add seamless entry to water, fix splash and ripple height
Iterate underwater fog
Water cleanup
Send blank info about splashes to GPU if we have no new ripple force to simulate
Add two tone fog
Fix refraction ray on water
New normal sampling method for water, other fixes
Finish overwater surface rewrite, optimize normal function even further
Readd horizon aliasing reduction to new normal method
Only clamp to AABB in RippleCompute if our computing radius is big enough
Disable debugview on water
Squashed commit from water-refactor2
Fix syntax errors cauased from merge due to refactors
Get WaterSceneObject & RippleCompute on the refactored API
bInMonitorLayer no longer used, calculation of what was used for it is now in rendergamesystem
Fix non-viewmodel entities being invisible
Add RenderTargetSize to ScenePortal
Fix assertions when trying to copy depth texture in some rare occasions
Flush our scratch render targets on the moment we first initialize the gameso that it matches the size of the main window
When running on tools mode at least, the game will allocate a scratch render target the size of the monitor, rather than of the running viewport until we resize the window, this causes problems on effects that use framebuffer grabbing, and should save us VRAM space by having the texture not overscan
Update PlanarReflection API with reflection direction
Simplify water input
Fix underwater top surface being rendered twice, use hardware alpha for underwater fog blending, more refactoring
Iterate on underwater pass of water, start adding refraction to it, major cleanup
Add a blank slice after the renderer has initialized when trying to add first lightcookie slice
Remove high quality shadows
Remove game specific attributes recording
Merge branch 'water-refactor3' of sbox
Render AO on dynamic objects, don't render it on monitors
Refactor aoproxy code, add stub for cylinder aoproxy shape
Aoproxy_splat objects
Flush our scratch render targets on the moment we first initialize the gameso that it matches the size of the main window
When running on tools mode at least, the game will allocate a scratch render target the size of the monitor, rather than of the running viewport until we resize the window, this causes problems on effects that use framebuffer grabbing, and should save us VRAM space by having the texture not overscan
Update sceneobject flags, remove VR_ prefix
Delete a bunch more code from other games and remove their rendering pipeline flags
Fix aliasing on DoF, remove unneeded passes
Refactor how mixed baked lights are calculated to later support multiple lights at once
Removed unused lightbinner that was mostly just duplicated code
Fix data structure of light info compute buffer to support multiple baked mixed shadows and cleanup
Reorder data structure, give support to more than 2 cascades for mixed lights, add vignietting for shadows on multiple static lights at once
Up our shader ABI, document changes, and rename elements of that enum to better clarify
Make lighting data structure from shader match what's on cpu side
Multiple mixed shadows support, fix sunlight bugs with multiple mixed shadows
Pass number of mixed cascades to shader
Naive shadow atlas downsampling test
Consider mixed light shadows for atlas downsampler too
Add cvar to maximum mixed light shadows, make a lot of this clientside
Add option to render mixed shadows only on viewmodels
Fix self shadowing on dynamic objects with mixed shadows
Add helper method to get the wanted shadow sampler given the context, clean up code
Pass viewmodel shadow sampler on the shader side
Viewmodel shadows on mixed shadows 🙏
Cleanup lightcomponent, reenable shadow fading
Remove unnecessary debug pragmas
Actually don't need VFX ABI change, old shaders will simply not receive shadows, no need to break them
Update core shaders for light rework
Update base addon-level shaders with the light rework changes
https://i.imgur.com/cSffiRg.jpeg
Merge pull request #177 from Facepunch/light-rework-rebase
Light rework
Pass selfillum to material helper
Get the parameters from shared standard ps code in sbox_pixel, dont include the shared standard ps code include into it