1,889 Commits over 1,612 Days - 0.05cph!
Accidentally yanked Src/DstBlend from Spritecard, also bring back shading complexity to it even if it makes code awful for now
Legacy ToolsVis isn't even supported, any legacy variable refs to it can go
Remove ToolsVis() MODES from all shaders 🙏🏻
Remove ToolsWireframe and ToolsVis from shadergraph template
Remove ToolsVis from RenderingPipeline, remove ToolsVis combo, make it toggle through the integer only
Add EnvironmentMap class for EnvMap.hlsl, allows you to fetch contribution of all environment map lighting, fixes CubemapReflections toolsvis, move stuff out of lighting.fxc
Init ToolsVis color to gray if mode is not supported, same behaviour as before
Remove vr_tools_vis.fxc, have it all in ToolsVis.hlsl as a class, remove all dangling S_MODE_TOOLS_VIS combos
ToolsVis for Material lives in ShadingModel, custom shadingmodels implement their own
Rest of shaders that do custom toolsvis behavior with new api
Remove any #if S_MODE_TOOLS_VIS, makes it able to slide smoothly into new system
Let toolsvis combo live where it was before (we're removing it right after) and remove S_MODE_TOOLS_VIS reference on spritecard, baked light vis on shadingmodel
Add GetFirstTextureParam() to get first declared texture from shader, used to fetch the convoluted RepresentativeTexture/LightSim_DiffuseAlbedoTexture attributes without explicit declaration
Allow material representative texture for VRAD be infered by the first texture parameter on shader if DiffuseAlbedoTexture is not set, allows to clean up all this material api & lets shadergraph shaders be rendered properly on vrad
https://files.facepunch.com/sampavlovic/1b0611b1/aocrkIAnQN.png
Remove configdefaults.PLAT.vcfg, completely bullshit for us
PerViewLightingConstantBuffer_t completely unused
[Pick] Remove configdefaults.PLAT.vcfg, completely bullshit for us
Mac/Linux Add Developer-BuildAll.sh for Posix to make it easier to debug, but without tools
Mac/Linux: Use static version of gamenetworkingsockets, cuts a lot of the mess of dependency hunting
Mac: OSX doesn't allow setting DYLD PATH from the application itself, make it parse these relative to the current directory, load correct steam DLL regardless of platform
Mac: Fix sed and FILE struct for mac, should work on linux too, I'll double check, getting this to boot on mac/linux again and slowly trickling this branch to master
VRAD3 (& it's resourcecompiler) explicitly uses rendersystem, our tools can omit it but we need to read back textures from the GPU for map compilation
Launch ToolAppSystem pretending to be a dedicated server so it doesn't use rendersystem for CI, revert me soon
Reenable rendersystem for console apps for map compilation
Invert logic of bSupportsLightmapping, make explicit flag of "NoLightmapping", doesn't feel right to apply that flag in every shader when it all should just support it
Fix indirect IBL fog not working
https://files.facepunch.com/sampavlovic/1b1911b1/jVWTMafLaa.png
Do view vector TAA jitter for fog on native instead off shader, proper way to handle this specially on thin surfaces
https://files.facepunch.com/sampavlovic/1b1911b1/B2DSaqPTHe.jpg
Be able to fetch all light information with Light::Count() and Light::From(), while doing all optimization from tiled lighting etc
Move light.hlsl to common/classes/Light.hlsl, start unfucking it, make it have same structure as everything else
DynamicLight refactor
Refactor StaticLight class, can do Light::From() to get all lights (static/dynamic) at once
https://i.imgur.com/jqko5ON.mp4
Fuck of with light.environment, light.dynamic and light.static are just in Light.hlsl instead of own internal files
Move shadow functions to Shadow.hlsl, much like BRDF.hlsl, will make it easy for us to upgrade, move LightMap definitions to Light.hlsl
Vr_lighting never directly referenced from any of our hlsls now, tonemaps in lighting.fxc never used and even if used shouldn't be there
Untangle this stuff
Use ProbeLight::UsesProbes() and LightmappedLight::UsesLightmaps() to see if drawcall is using these instead of insane combo ifdefs directly, makes it easy to remove a combo too
Remove lightmapping combos from sbox_pixel (should fuck that file off entirely), move to shadingmodel.hlsl, keep D_BAKED_LIGHTING_FROM_LIGHTMAP for vertex.hlsl, SupportsLightmapping attribute seems unused
Revert "Lightmapping combos go on shadingmodel, Lightmapping definiton should be in shadingmodel.hlsl not Material.hlsl, material should be only a contract to shadingmodels"
Fucked, need to get rid of this stupid SupportsLightmapping attribute and just do it directly
Rewrite AmbientLight into a class, stub
Handle AmbientLightKind::LightMapProbeVolume and AmbientLightKind::EnvMap
Move BRDF stuff to BRDF.hlsl, organizes it and makes it easier to move to CS2's one with multiscatter
Adjustments for AmbientLight, disable subsurface scattering for this class for now
ToolsVis ambient occlusion doesn't take AmbientLight
Lightmapping combos go on shadingmodel, Lightmapping definiton should be in shadingmodel.hlsl not Material.hlsl, material should be only a contract to shadingmodels
Add namespace_name to antlr grammar so that we can do "type Class::Function()" definition instead of defining all in class itself, we should just let it accept any HLSL
Remove crumbs of ToolsShadingComplexity, we can replicate quad overdraw in almost every material without a special mode, shading complexity itself is on toolsvis now, toolsvis class
There's also a duplicate shading complexity shader
Lightmapping combos go on shadingmodel
Fix typos
Remove ToolsVis() and ToolsShadingComplexity() ( & ToolsWireframe ) mode from everything
EnvironmentMap::From to calculate all envmaps on a position
PerViewLightingConstantBuffer_t completely unused
environmentmapped bool is bullshit now that cubemaps are gpu driven, add stub EnvironmentMapping.hlsl
Detangle all of this, vr_lighting never directly referenced from any of our hlsls now
Fuck of with light.environment, light.dynamic and light.static are just in Light.hlsl instead of own internal files
Move shadow functions to Shadow.hlsl, much like BRDF.hlsl, will make it easy for us to upgrade, move LightMap definitions to Light.hlsl
Lightmapping definiton should be in shadingmodel.hlsl not Material.hlsl, that works only as a contract to shadingmodels, fix toolvis on shadingmodelstandard
DynamicLight refactor
Refactor StaticLight class, can do Light::From() to get all lights (static/dynamic) at once
https://i.imgur.com/jqko5ON.mp4
Remove more crumbs off S_MODE_TOOLS_VIS
Be able to fetch all light information with Light::Count() and Light::From(), while doing all optimization from tiled lighting etc
Move light.hlsl to common/classes/Light.hlsl, start unfucking it, make it have same structure as everything else
Nag message to remove S_MODE_TOOLS_VIS
Use single path for vr_common_ps_code to match what's on shadingmodel, eventually to just delete all of it, remove unused DISABLE_TONEMAPPING
Move BRDF stuff to BRDF.hlsl, organizes it and makes it easier to move to CS2's one with multiscatter
Fuck off with LightingTerms for toolsvis, we should be accepting any structure
Remove unused ShadingModel postprocessing ( handle it better )
ToolVis in a class
Single ToolsVis.hlsl, tidy it up
Initial ToolsVis without ToolsVis mode, cleanup some unsued
Goodbye S_MODE_TOOLS_VIS combo
Enumize ToolVis modes, dont keep this logic on shared_standard_ps_code
Shadingmodel uses Fog::Apply instead of duplicate DoAtmospherics
Add namespace_name to antlr grammar so that we can do "type Class::Function()" definition instead of defining all in class itself, we should just let it accept any HLSL
Handle AmbientLightKind::LightMapProbeVolume and AmbientLightKind::LightMap
Shading Complexity in ToolVis, quad overdraw isn't even working now, and certainly doesnt need it's own shading mode, can make all materials use same shader
Remove CUSTOM_MATERIAL_INPUTS and CUSTOM_TEXTURE_FILTERING, vfx optimizes it out if not used
Remove D_BAKED_LIGHTING_FROM_VERTEX_STREAM, never used
Rewrite AmbientLight into a class, stub
Remove CUSTOM_MATERIAL_INPUTS and CUSTOM_TEXTURE_FILTERING, vfx optimizes it out if not used
Remove D_BAKED_LIGHTING_FROM_VERTEX_STREAM, never used
Allow for inner feathering for EnvmapProbe in UI, same defaults for hammer equivalents of this
ggxcubemaphelper (cpu) is equivalent to cubemapper (gpu), increase sample count but use faster sampling and sample from first mip always
https://i.imgur.com/5UuaG0b.mp4
Sample from mips again and decrease sample count to not be absurd for our budget
Use custom mip filter that samples from neighbors for cubemapper
https://i.imgur.com/nn23dRG.png
Shading Complexity in ToolVis, quad overdraw isn't even working now, and certainly doesnt need it's own shading mode, can make all materials use same shader
Remove HighlightDeprecated from shaders, seems was never used?
Remove long unused shit from pixelinput and vertexinput and clean it up
Remove D_ENABLE_USER_CLIP_PLANE, complete bullshit, we use oblique projection matrices now
Use multi-bounce ambient occlusion
Feathering goes outer rather than center, allow to have inner (negative) feathering again, fixes light leaks in maps
SQRTRoughness was correct behavior for sampling envmaps
Remove long unused shit from pixelinput and vertexinput and clean it up
Convert world position to projected position on FinalizeVertex, don't like that these are opaque, let's see what we can do about it
SQRTRoughness was correct behavior for sampling envmaps
Use multi-bounce ambient occlusion
Feathering goes outer rather than center, allow to have inner (negative) feathering again, fixes light leaks in maps