1,819 Commits over 1,491 Days - 0.05cph!
Stub for shadow class, enumize lightflags
Move pixel.raytrace.ssr.hlsl to ScreenSpaceTrace and make it a class, move crap from it to be all shared
More adjustments for screenspace shadowing, fix valid hit test always returning true
Iteration on screenspace shadows, make screenspace tracing work half res again
Rebase fixes
Fix screen trace depth function for reverse-z
Multi-sampled shadow trace, apply free antialiasing using derivatives of dFdx and dFdy
Dont need bend_sss anymore
Use bayer directions rather than blue noise for screenspace shadows
Use QuadRead to blur value acrosss waves, proper ordering for parameters of ScreenSpace::Trace
https://files.facepunch.com/sam/1b1411b1/8ljWk6LsYF.png
[Pick] Compile shaders with Vulkan 1.2 ( wave intrinsics support ) Microsoft/DirectXShaderCompiler/wiki/Wave-Intrinsics
[Pick] Target Vulkan 1.1 instead, certain it won't be an issue unless you have drivers from 2016
3D Bayer Sequence, use perceptual penumbra so it always looks relatively soft and nice instead of aiming for just accuract
[Pick] Target Vulkan 1.1 instead, certain it won't be an issue unless you have drivers from 2016
Fix truncation warning on shadingmodel.hlsl
Fix complex_reflections, remove any dependencies to valve code
Use inline reflections for complex
Composite SSR always, might create some artifacts but will be dealt with
Detangle reflections api and document it
Adjustments, fix normals on complex reflections
Use bayer directions rather than blue noise for screenspace shadows
Use QuadRead to blur value acrosss waves, proper ordering for parameters of ScreenSpace::Trace
https://files.facepunch.com/sam/1b1411b1/8ljWk6LsYF.png
[Pick] Compile shaders with Vulkan 1.2 ( wave intrinsics support ) Microsoft/DirectXShaderCompiler/wiki/Wave-Intrinsics
Fix screen trace depth function for reverse-z
Multi-sampled shadow trace, apply free antialiasing using derivatives of dFdx and dFdy
Dont need bend_sss anymore
[Pick] Bind RenderAttributes.SetParent, this is a method to pass arguments around that doesn't involve overriding/copying, this fixes not being able to set render attributes properly in child cameras like editor viewport, needs wide testing but should be fine, also fix looking for parent attributes on the attribute chain used on the pipeline
Remove SSAOEnabled, just needs a ref if DynamicAmbientOcclusionPP is initialized
Update shaders with AO on lighting pass
Stub for shadow class, enumize lightflags
Move pixel.raytrace.ssr.hlsl to ScreenSpaceTrace and make it a class, move crap from it to be all shared
More adjustments for screenspace shadowing, fix valid hit test always returning true
Iteration on screenspace shadows, make screenspace tracing work half res again
Rebase fixes
Internal HookAfterDepthPrepass
Darken AO texture since we're compositing to ambient lighting properly now
[Pick] Add SceneCamera.InternalAttributes for things that should never be overriden
[Pick] Add RenderAttributes.Remove
[Pick] Child cameras in UpdateSceneCamera also gets parent camera attributes
Remove renderhook hack on AmbientOcclusion, just pass attributes directly
Fuck any bridging code, let's handle VDB files all on managed, allow loading nvdb files too
Iterate NanoVDB file handling and dependencies
Use BaseFileSystem for reading NanoVDB files
Parse NanoVDB files properly
Handle DynamicAmbientOcclusionPP enabling/disabling for mark
Remove OpenVDB for TinyVDBIO instead (jesus christ), use latest version of NanoVDB, clean it all up, don't use glue, make all bridge between native in a def file
openvdbglue stub for compiling openvdb into nanovdb, VolumetricMaterial component and attributes for it, don't generate thumbnails for OpenVDB source files
OpenVDB Source Asset Type, rename VolumetricData to VolumetricMaterial
Add OpenVDB libraries
Add OpenVDB headers ( And boost, contained in the folder 🤢 )
VolumetricData GameResource stub
Better document lightbinner and add a few asserts
Version tiled rendering if we ever make breaking changes to it's structure, makes sure that rendering doesn't break if we upgrade it in the future
Fix black cubemap fog on hammer
Cubemap Fog can be tinted, takes tint from main skybox as well https://files.facepunch.com/sam/1b3111b1/XWpxvX189A.png
sky.shader: g_flBrightnessExposureBias and g_flRenderOnlyExposureBias makes no sense when there's tint, barely any existing skyboxes used it properly
Update SkyBox2D component to apply tint to IBL environment probe
https://files.facepunch.com/sam/1b3111b1/G0298YogbO.png
OnRenderDepthPrepass on SceneCamera
Add AfterDepthPrepassHooks, make AO composite to lighting rather than blitting to screen
Terrain_Normal: dY was inverted
Reenable terrain specular and recompile it with normal fixes
Terrain_Normal calculates world space normals properly now, remove sobel filter to just a simple bilinear
https://files.facepunch.com/sam/1b2711b1/qNolcysYRH.png
Add Cornel Box with Fog for testing dynamic indirect fog lighting
Enable indirect lighting from IBL in volumetric fog shader, can be toggled with volume_fog_ibl_indirect
https://files.facepunch.com/sam/1b2711b1/PIwbCCNGYB.png
Fix IBL not working, Transparency in AmbientColor is used to lerp between artist's decided flat color and IBL/GI, defaults to GI
AmbientLight component defaults to Gray color
Don't implicitly set zfar as infinity, if we want to do so we can do from C# side, but make it respect what we pass as zfar
For legacy hammer maps, take global volumetric fog scale from VolumetricFogController
Fix ortho lights in SceneMapLoader and custom shadow size, note that shadow culling will suck on ortho lights until we change tiled culling to use frusta
Fix shitty jitter and noise in volumetric fog https://files.facepunch.com/sam/1b2211b1/NDCtmFBjFj.jpg
Adjust depth bias for gizmos and debug lines, we have way more granular precision than I thought
Cubemapper Fixes (#1627)
Refactoring and fixes for Cubemapper, cleaned it up, makes it really WYSIWYG
Makes them work on Scene viewport
Updates any time they're dirty
Barriers should be set properly now
Parallax for ambient envmap lighting
Diffuse lighting from envmap should be working properly now
Cubemap feathering is tighter by default now, should fix some "leaks" now that skybox is also a global cubemap
Detangle all this from Cubemapper, make it able to render inline rather than on a render block
Redo update strategies from envmapprobe, much simpler, works everywhere now
Change dynamic envmapprobe to use 7 mips which is the calibrated value for Cubemapper, change default feathering value to a tighter .25f
Use parallax for ambient envmap lighting https://files.facepunch.com/sam/1b1511b1/sbox-dev_a6lt3mNtWW.mp4
Doing cubemap rendering with it's own rendering view is causing all sorts of issues, make it run on the same rendering view context as everything else again
Adjustments for cubemapper and set barrier before setting renderstate
Make sky always sample from mip 0, ensures that it's always sharp even in low res viewports (eg cubemap fetching
Use two passes for ggx cubemap filtering just like in cubemapper
Use bilinear filtering for SampleEnvironmentMapLevel, worth the tradeoff since we're much faster now
Up sky.shader version
Cornel Box scene with moving light for GI test
Make SSR reconstruction ghosting less apparent
GGXCubemapBlurHelper::GetFaceAndUVFromDirection was giving mirrored directions, recode it to point to correct direction, GGX skyboxes look very nice now, fixes a few issues specially in low resolutions, up sky.shader version so CI rebuilds textures
Adjustments for cubemapper and set barrier before setting renderstate
Make sky always sample from mip 0, ensures that it's always sharp even in low res viewports (eg cubemap fetching
GGXCubemapBlurHelper::GetFaceAndUVFromDirection was giving mirrored directions, recode it to point to correct direction, GGX skyboxes look very nice now, fixes a few issues specially in low resolutions, up sky.shader version so CI rebuilds textures
Doing cubemap rendering with it's own rendering view is causing all sorts of issues, make it run on the same rendering view context as everything else again
Make SSR reconstruction ghosting less apparent
Detangle all this from Cubemapper, make it able to render inline rather than on a render block
Redo update strategies from envmapprobe, much simpler, works everywhere now
Change dynamic envmapprobe to use 7 mips which is the calibrated value for Cubemapper, change default feathering value to a tighter .25f
Use parallax for ambient envmap lighting https://files.facepunch.com/sam/1b1511b1/sbox-dev_a6lt3mNtWW.mp4
Fix terrain clipmaps being generated at the shadow map's position rather than the main camera's when rendering shadows
Make sure light cookie is resident and valid if we're getting it's index for lightbinner