OBLIVION
shadeMe Enhanced by arafuse
Oblivion » Visuals and Graphics
Added: 19/05/2017 - 03:53AM
Updated: 06/07/2017 - 04:04AM

99 Endorsements

1.0beta2 Latest version

1,822 Unique D/Ls

2,883 Total D/Ls

14,691 Total Views

Uploaded by arafuse

Description

Last updated at 4:04, 6 Jul 2017 Uploaded at 3:53, 19 May 2017

This is a fork of the original shadeMe plugin which features improved shadow queueing, fixes the problem of disappearing shadows when turning, and adds some additional options and optimizations. You can now get nice dynamic shadows on architecture and landscape with a low shadow count and minimal performance drop.

New in 1.0beta2

This mostly features some queuing tweaks and an option to control the number of actor shadows to prioritize (PrioritizeActorShadows). The default config has been optimized and tweaks made to shadow exclusions and backface rendering to improve the visuals in architecture heavy environments such as towns and the Imperial City. The default shadow count is reduced from 10 to 5 due to fewer useless shadows being queued and wasted. I find this still provides great ambiance while having no noticeable impact on FPS. Having fewer large object shadows also reduces shadow overlap.

As getting the most out of this plugin is all about making tweaks to the config, I've altered EnableDetailedDebugSelection to dump shadow caster details to shadeMe.log. This (along with EnableDebugShader) makes it easier to see which paths need to be excluded or have backface rendering enabled for those who want to experiment.

Installation

This mod requires OBSE, as it is an OBSE plugin. Copy the contents of the archive to your Data/OBSE/Plugins folder, overwriting any existing shadeMe.dll and shadeMe.ini files if they are there.

While not strictly required, use of Oblivion Reloaded with EnableShadows=1 is highly recommended to get the best shadow quality and to avoid issues with actor self-shadows.

General configuration

The included shadeMe.ini has good performance-friendly defaults, and you should not need to tweak it much except for the shadow counts. You must still ensure the correct settings are present in Oblivion.ini however.

  1. In Oblivion.ini, the following option must be set for the plugin to work correctly. Shadows on grass is a trade-off between weirdly bright grass in dark spots sometimes, or shadows randomly popping on grass. I personally keep it disabled:

  2.     bShadowsOnGrass=0
        bActorSelfShadowing=1

  3. The plugin itself now limits the total shadow count, and to fix the disappearing shadows issue the shadow count in Oblivion.ini must be set to a high enough value above the actual shadow count. Eg.:

  4.     iActorShadowCountInt=100
        iActorShadowCountExt=100

  5. The actual max shadow count is set in shadeMe.ini. The count for LargeObject should be somewhat below TotalObject if you still want to see your own shadow and some other shadows when near many large objects. Eg.;

  6.     [Shadows::MaxCount]
        LargeObject=7
        TotalObject=10

  7. Player LOS checks need to be disabled for large objects. It's also a good idea to disable player LOS checks in exteriors for performance reasons, but you can still have them enabled as long as [Shadows::LightLOSCheck] SkipLargeObjects=1 and [Shadows::PlayerLOSCheck] ExcludeLightLOSPaths=1  are set. Eg.:

  8.     [Shadows::LightLOSCheck]
        SkipLargeObjects=1

        [Shadows::LargeObjects]
        HigherPriority=1

        [Shadows::PlayerLOSCheck]
        Exterior=0
        ExcludeLightLOSPaths=1

Troubleshooting

  • If you don't use Oblivion Reloaded and see weird self shadows on actors and creatures, you can disable them in shadeMe.ini by adding "35,36,37" to the list of excluded types. Eg.:
  •     [SelfShadows::ExcludedTypes]
        Interior=32,35,36,37
        Exterior=32,35,36,37

  • ENB users or users having issue with VWD objects should set ForceSM3RenderPath=0 in the INI. 

Additional INI options

[Shadows::General] PrioritizeActorShadows=1
Number of actor shadows to prioritize. The default setting of 1 is to always keep the player shadow visible. You can increase this if you always want to see more actor shadows before other small objects. (int value)

[Shadows::General] BoundRadiusWeight=5.0:
Apply weight to object bound radius when queuing normal objects, so that larger objects can have higher priority (float multiplier)

[Shadows::General] ReduceGrids=1:
Reduce the object search to the 3x3 grid when queueing exterior shadows, can increase performance while limiting distance. (0 or 1)

[Shadows::General] ExteriorDistanceCheck=0:
Optionally disable distance check for exterior shadows and just queue everything up to the near grid, useful with ReduceGrids=1. (0 or 1)

[Shadows::LargeObjects] DistanceWeight=5.0
Apply weight to object distance when queueing large objects, so that nearer large objects can have priority over those that are further away. (float multiplier)

[Shadows::PlayerLOSCheck] ExcludeLightLOSPaths=1
Exclude the same paths for player LOS check as [Shadows::LightLOSCheck] ExcludePaths, useful for larger interior objects that have disappearing shadows when facing away.

[Shadows::General] EnableDetailedDebugSelection=0:
This option now dumps shadow caster details to shadeMe.log when enabled, useful for determining which objects are casting invalid shadows (along with EnableDebugShader=1)

Technical info

The disappearing shadows when turning bug seemed to be caused by the Oblivion engine trying to optimize the scene when the shadow count approached the maximum. Giving the engine enough headroom between the maximum shadow count and the actual number of shadows in the scene seems to be what prevents this condition from occurring.

Remaining issues

  • Shadows add up when they overlap. This can lead to some unrealistically dark spots. This is mostly apparent when using a high value for LargeObjects. If using Oblivion Reloaded (recommended) you can reduce the shadow intensity somewhat which helps (I currently use a value of 1.5).

  • Shadows on grass do not work properly. As with the above, lowering the shadow intensity can help if you choose to keep it turned off. Using a darker grass texture can also make it less noticeable, such as Betty's Far Cry Inspired Grass (darker replacer version). Disabling grass is another drastic way to deal with this (and give a boost to FPS at the same time). 

  • Light sources such as torches won't properly lighten areas darkened by shadows. This seems to be caused by the engine rendering shadows over the top of lights.

  • Enabling backface rendering for very large objects, such as the Imperial City walls, will result in those shadows popping in and out randomly. Another apparent engine limitation. The default config has them excluded, but if you don't care, you can remove icwall,icouterwall,icpalacewall from [Shadows:ExcludedPaths] and add them to [Shadows::BackfaceRendering].

Misc

  • All screenshots are using default INI settings, and feature locales from the HESU Mod Collection.
  • The source code for this fork is available on GitHub.

Credits

shadeMe -
For creating this awesome plugin.

Visual mods used

Below is a list of all the mods I use which contribute to the look of the screenshots, in the order in which they are loaded. Not all textures from all mods are used and some have been modified, and not all are available on the Nexus.

Spoiler