1,584 Commits over 1,127 Days - 0.06cph!
Remove r_depth_prepass option, we should always be doing it as part of forward+
Depth class uses the pre-resolved depth chain from the prepass instead of trying to sample an MSAA buffer, which was never working on certain MSAA levels and would've required a combo and loads of extra bullshit to do.
Add r_depth_debug to visualize the depth buffer
Make `ListView.ItemAlign = Align.SpaceBetween` work better, especially when there's not enough items to fill a row
This should use images from content path now
Messy-ish start to editable saveable terrain
Terrain collider but commented out cos master doesn't have it yet
Rename loads of shit, TerrainData not a resource (we can decide later), add back create menu option (I coded it but this could easily be a prefab template too if we don't save terrain as a resource)
Don't cast shadows from terrain, it looks dog shit
Json seems to give a fuck that these are private setters
High precision lighting offset
Use new Depth helper class
CPU Bilinear interpolation for sampling terrain height
Move terrain editing to editor code
some toolvis sceneview options, messy
latest component changes
brush update
splat shit painting
ReflectionSerializedObject properties set their PropertyType
Wireframe and ToolsVisMode can be driven per-view by Camera attributes instead of global convars
vk: "fix" semaphore hang when recreating swapchains
vk: always use D32FS8 for depth buffer
Json seems to give a fuck that these are private setters
Rename loads of shit, TerrainData not a resource (we can decide later), add back create menu option (I coded it but this could easily be a prefab template too if we don't save terrain as a resource)
Don't cast shadows from terrain, it looks dog shit
.gitignore: don't ignore shader_c
Add sprite.shader_c
Messy-ish start to editable saveable terrain
Material::Init initializes TextureCoords too
Update new shader template
Remove stereo multiview instancing from debug menu
Add Texture.Update<T>( ReadOnlySpan<T> data ) & Texture2DBuilder.WithData<T>( ReadOnlySpan<T> data )
Stop using PixelInput for everything (#1336)
* PS_InitFinalCombiner( PS_INPUT ) -> PS_InitFinalCombiner() so it works without COMMON_PS_INPUT_DEFINED - this is just for default values anyway
PS_CommonTransformNormal should be wrapped in COMMON_PS_INPUT_DEFINED too
* Material shading API can be used without common PixelInput
Internals rewritten to remove reliance on a commonly defined PixelInput
instead every function just takes what it needs.
The only public methods you may have been using were changed like so:
```diff
- float3 TransformNormal( const PixelInput i, float3 vNormalTs )
+ float3 TransformNormal( float3 vNormalTs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
- float3 NormalWorldToTangent( PS_INPUT i, float3 vNormalWs )
+ float3 NormalWorldToTangent( float3 vNormalWs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
```
Material::From( PixelInput ... ), ShadingModelStandard::Shade( PixelInput ... )
stil exist but are wrapped in ifdef COMMON_PS_INPUT_DEFINED, so only work
with the common PixelInput include.
Material::Init() added to initialize a Material with default values
Geometric normals are now distinctive from normals in Material too, this
is important for the lighting model: https://files.facepunch.com/matt/1b1711b1/beforeafter.png
And a lot of tool vis modes were fixed too.
* Material.AmbientOcclusion float3 -> float
PS_InitFinalCombiner( PS_INPUT ) -> PS_InitFinalCombiner() so it works without COMMON_PS_INPUT_DEFINED - this is just for default values anyway
PS_CommonTransformNormal should be wrapped in COMMON_PS_INPUT_DEFINED too
Material shading API can be used without common PixelInput
Internals rewritten to remove reliance on a commonly defined PixelInput
instead every function just takes what it needs.
The only public methods you may have been using were changed like so:
```diff
- float3 TransformNormal( const PixelInput i, float3 vNormalTs )
+ float3 TransformNormal( float3 vNormalTs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
- float3 NormalWorldToTangent( PS_INPUT i, float3 vNormalWs )
+ float3 NormalWorldToTangent( float3 vNormalWs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
```
Material::From( PixelInput ... ), ShadingModelStandard::Shade( PixelInput ... )
stil exist but are wrapped in ifdef COMMON_PS_INPUT_DEFINED, so only work
with the common PixelInput include.
Material::Init() added to initialize a Material with default values
Geometric normals are now distinctive from normals in Material too, this
is important for the lighting model: https://files.facepunch.com/matt/1b1711b1/beforeafter.png
And a lot of tool vis modes were fixed too.
Material.AmbientOcclusion float3 -> float
ShaderGraph fixes
Fix
Material.AmbientOcclusion float3 -> float
PS_InitFinalCombiner( PS_INPUT ) -> PS_InitFinalCombiner() so it works without COMMON_PS_INPUT_DEFINED - this is just for default values anyway
PS_CommonTransformNormal should be wrapped in COMMON_PS_INPUT_DEFINED too
Material shading API can be used without common PixelInput
Internals rewritten to remove reliance on a commonly defined PixelInput
instead every function just takes what it needs.
The only public methods you may have been using were changed like so:
```diff
- float3 TransformNormal( const PixelInput i, float3 vNormalTs )
+ float3 TransformNormal( float3 vNormalTs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
- float3 NormalWorldToTangent( PS_INPUT i, float3 vNormalWs )
+ float3 NormalWorldToTangent( float3 vNormalWs, float3 vGeometricNormalWs, float3 vTangentUWs, float3 vTangentVWs )
```
Material::From( PixelInput ... ), ShadingModelStandard::Shade( PixelInput ... )
stil exist but are wrapped in ifdef COMMON_PS_INPUT_DEFINED, so only work
with the common PixelInput include.
Material::Init() added to initialize a Material with default values
Geometric normals are now distinctive from normals in Material too, this
is important for the lighting model: https://files.facepunch.com/matt/1b1711b1/beforeafter.png
And a lot of tool vis modes were fixed too.
Light fixes
Can use Material and shading without PixelInput
Lights don't accept PixelInput - explicitly pass positions / lightmap uvs
These should be g_vHighPrecisionLightingOffsetWs instead of g_vCameraPositionWs
float4 DoAtmospherics( PixelInput i, float4 vColor, bool bAdditiveBlending = false ) -> float4 DoAtmospherics( float3 vInputColor, float3 vPositionWs, float2 vPositionSs, bool bAdditiveBlending = false )
ShadingModel is never going to be an interface like this
TransformNormal, NormalWorldToTangent accept explicit parameters instead of PixelInput
PS_InitFinalCombiner( PS_INPUT ) -> PS_InitFinalCombiner() so it works without COMMON_PS_INPUT_DEFINED - this is just for default values anyway
Delete DryEraseMarker from common ps code
PS_CommonTransformNormal should be wrapped in COMMON_PS_INPUT_DEFINED too
Wrap Material funcs that interact with assumed common PixelInput with COMMON_PS_INPUT_DEFINED
Lights don't accept PixelInput - explicitly pass positions / lightmap uvs
Strip multiview instancing / instancing scalars from engine
Remove D_MULTIVIEW_INSTANCING and multiview methods from shaders
Remove X360 macros INSTANCING_PARAMS & INSTANCED_SHADER_PARAMS
Update system.fxc
Strip multiview instancing / instancing scalars from engine
Remove D_MULTIVIEW_INSTANCING and multiview methods from shaders
Remove X360 macros INSTANCING_PARAMS & INSTANCED_SHADER_PARAMS
Update system.fxc
Refactor some Graphics files, remove long obsolete methods
Terrain
Rust terrain and materials
Can debug draw Scene.PhysicsWorld with physics_debug_draw
Add PhysicsWorld debug drawing methods for scenestaging
Fix shadergraph error when compiling
ResourceControlWidget: Add Open In Editor to context menu
Gizmo.SceneSettings.CameraZFar default from 10,000 -> 100,000
Get rid of D_MULTIVIEW_INSTANCING combo
Revert "Latest compiled shaders" - sunlight shadows are fucked, and are fucked in any new shaders compiled. Not worth me debugging since the new lightbinner doesn't use them and is right around the corner
Don't destroy PVS if it's also used in another SceneWorld
Nah that wasn't it + it already does this further down
Fix crash when clearing SceneMap worlds, we were setting PVS to nullptr instead of the default pvs
Add SceneParticles.SetNamedValue( string name, Vector3 value )
Update shader build github workflow
Fix out of bounds write in tiled_light_builder_cs causing nasty undefined behaviour
Tiled lighting branches properly, ideally this should be matured enough to not need to be toggled as it's vital to high perf
Old envmap code
Fix cubemaps always using 1 extra cubemap they shouldn't be (need shader rebuild)
Before: https://files.facepunch.com/matt/1b0211b1/sbox_ZJY2zoiVoF.png
After: https://files.facepunch.com/matt/1b0211b1/sbox_Gvuv88s1oY.png
convolve_environment_map.shader - optimized compile + vk shader
Merge latest Valve rendersystemvulkan & rendersystembase changes
Primarily this is switching to use VMA, but also dozens of major and minor fixes and general upstream parity with our own changes distinct and clear.
Merge latest rendersystemvulkan changes
Vulkan BarrierHelper
Use barriers for the multipass texture downsampling, this was messing up our depth pyramid making mips look like this: https://files.facepunch.com/matt/1b3111b1/qrenderdoc_bn7FgvAx1n.png
Move these procedural layer renderers to not be inline, drop Vr prefix from quad renderer
Move tiled light culling to it's own layer renderer ( this should be per-view in the lightbinner really, but I can't touch that right now )
Buffer barriers on the culled lights buffer
Clean resource names of textures further to not mistake for absolute path
IRenderDevice: delete 360 only method
GPU Resident Textures debug menu
Set debug names for c# loaded images
Use schema-less RuntimeTextureSpecificationFlags_t, remove redundant flags