public ScreenSpaceReflections(VolumetricShadingMod mod) { _mod = mod; _game = mod.CApi.GetClient(); _platform = _game.GetClientPlatformWindows(); RegisterInjectorProperties(); mod.CApi.Event.ReloadShader += ReloadShaders; mod.Events.PreFinalRender += OnSetFinalUniforms; mod.ShaderPatcher.OnReload += RegeneratePatches; _enabled = ModSettings.ScreenSpaceReflectionsEnabled; _rainEnabled = ModSettings.SSRRainReflectionsEnabled; _refractionsEnabled = ModSettings.SSRRefractionsEnabled; _causticsEnabled = ModSettings.SSRCausticsEnabled; mod.CApi.Settings.AddWatcher <bool>("volumetricshading_screenSpaceReflections", OnEnabledChanged); mod.CApi.Settings.AddWatcher <bool>("volumetricshading_SSRRainReflections", OnRainReflectionsChanged); mod.CApi.Settings.AddWatcher <bool>("volumetricshading_SSRRefractions", OnRefractionsChanged); mod.CApi.Settings.AddWatcher <bool>("volumetricshading_SSRCaustics", OnCausticsChanged); mod.CApi.Event.RegisterRenderer(this, EnumRenderStage.Opaque, "ssrWorldSpace"); mod.CApi.Event.RegisterRenderer(this, EnumRenderStage.AfterOIT, "ssrOut"); _textureIdsField = typeof(ChunkRenderer).GetField("textureIds", BindingFlags.Instance | BindingFlags.NonPublic); mod.Events.RebuildFramebuffers += SetupFramebuffers; SetupFramebuffers(_platform.FrameBuffers); }
public ShadowTweaks(VolumetricShadingMod mod) { _mod = mod; ExcludedShaders = new HashSet <string> { "sky", "clouds", "gui", "guigear", "guitopsoil", "texture2texture" }; _mod.CApi.Settings.AddWatcher <int>("volumetricshading_nearShadowBaseWidth", OnNearShadowBaseWidthChanged); _mod.CApi.Settings.AddWatcher <bool>("volumetricshading_softShadows", OnSoftShadowsChanged); _mod.CApi.Settings.AddWatcher <int>("volumetricshading_softShadowSamples", OnSoftShadowSamplesChanged); NearShadowBaseWidth = ModSettings.NearShadowBaseWidth; _softShadowsEnabled = ModSettings.SoftShadowsEnabled; _softShadowSamples = ModSettings.SoftShadowSamples; _mod.ShaderInjector.RegisterFloatProperty("VSMOD_NEARSHADOWOFFSET", () => ModSettings.NearPeterPanningAdjustment); _mod.ShaderInjector.RegisterFloatProperty("VSMOD_FARSHADOWOFFSET", () => ModSettings.FarPeterPanningAdjustment); _mod.ShaderInjector.RegisterBoolProperty("VSMOD_SOFTSHADOWS", () => _softShadowsEnabled); _mod.ShaderInjector.RegisterIntProperty("VSMOD_SOFTSHADOWSAMPLES", () => _softShadowSamples); _mod.CApi.Event.ReloadShader += OnReloadShaders; _mod.Events.PostUseShader += OnUseShader; }
public UnderwaterTweaks(VolumetricShadingMod mod) { _mod = mod; mod.CApi.Settings.AddWatcher <bool>("volumetricshading_underwaterTweaks", SetEnabled); SetEnabled(ModSettings.UnderwaterTweaksEnabled); mod.Events.PostWaterChangeSight += OnWaterModifierChanged; }
public OverexposureEffect(VolumetricShadingMod mod) { mod.CApi.Settings.AddWatcher <int>("volumetricshading_sunBloomIntensity", OnSunBloomChanged); _currentBloom = ModSettings.SunBloomIntensity; mod.Events.PreSunRender += OnRenderSun; RegisterInjectorProperties(mod); }
private void RegisterInjectorProperties(VolumetricShadingMod mod) { var injector = mod.ShaderInjector; injector.RegisterFloatProperty("VSMOD_OVEREXPOSURE", () => ModSettings.OverexposureIntensity * 0.01f); injector.RegisterBoolProperty("VSMOD_OVEREXPOSURE_ENABLED", () => ModSettings.OverexposureIntensity > 0); }
public VolumetricLighting(VolumetricShadingMod mod) { _mod = mod; _game = _mod.CApi.GetClient(); _dropShadowIntensityField = typeof(AmbientManager) .GetField("DropShadowIntensity", BindingFlags.NonPublic | BindingFlags.Instance); _enabled = ClientSettings.GodRayQuality > 0; _mod.CApi.Settings.AddWatcher <int>("shadowMapQuality", OnShadowMapChanged); _mod.CApi.Settings.AddWatcher <int>("godRays", OnGodRaysChanged); _mod.Events.PreGodraysRender += OnSetGodrayUniforms; _mod.Events.PostUseShader += OnPostUseShader; RegisterPatches(); }
public DeferredLighting(VolumetricShadingMod mod) { _mod = mod; _platform = _mod.CApi.GetClientPlatformWindows(); _mod.CApi.Settings.AddWatcher <bool>("volumetricshading_deferredLighting", OnDeferredLightingChanged); _mod.CApi.Settings.AddWatcher <int>("ssaoQuality", OnSSAOQualityChanged); _enabled = ModSettings.DeferredLightingEnabled; _mod.CApi.Event.RegisterRenderer(new DeferredLightingPreparer(this), EnumRenderStage.Opaque, "vsmod-deferred-lighting-prepare"); _mod.CApi.Event.RegisterRenderer(new DeferredLightingRenderer(this), EnumRenderStage.Opaque, "vsmod-deferred-lighting"); _mod.ShaderInjector.RegisterBoolProperty("VSMOD_DEFERREDLIGHTING", () => _enabled); _mod.CApi.Event.ReloadShader += OnReloadShaders; _mod.Events.RebuildFramebuffers += SetupFramebuffers; SetupFramebuffers(_platform.FrameBuffers); }
public ScreenSpaceDirectionalOcclusion(VolumetricShadingMod mod) { var injector = mod.ShaderInjector; injector.RegisterBoolProperty("SSDO", () => ModSettings.SSDOEnabled); }