Michael KinseyTechnical Artist

MK SSDM+

Unreal Engine plugin · Screen space

Screen space displacement and contact shadows that finally agree with each other.

UE 5.8 · 5.9 · Win64 Plugin only · no engine changes Nanite not supported v1.0From $25.99

NANITENot supported. SSDM+ works on regular, non-Nanite meshes and landscapes.

Inspired by Crimson Desert

Screen space displacement like Crimson Desert's, brought to Unreal Engine 5 as a drop-in plugin.

Built for non-Nanite workflows

Made for regular meshes and landscapes, aiming for similar quality to Nanite displacement at a reduced cost, through screen space displacement.

01 · Before / after

Drag to compare

Left is the stone wall with normal mapping only. Right adds SSDM+ displacement and contact shadows, including a decal that writes its own height.

Stone wall with SSDM+ off: flat surface Same wall with SSDM+ on: displaced stones and a displacement decal
SSDM+ OFFSSDM+ ON
In-engine · same camera and lightDrag the handle
02 · What it does

Lots of depth, little cost

Add one node to a material and it displaces. Everything below ships in v1.0.

03 · Modes

Use one or both

Pick a mode in Project Settings. Tune everything else in the MK SSDM Plus Settings panel, or with one quality preset from Low to Epic.

SSDM only

Screen space displacement from the height buffer, with your existing shadow setup.

Contact shadows only

Height-aware contact shadows without displacement. Fixes self-shadowing on surfaces using pixel depth offset.

Both

Displacement and shadows read the same buffer, so the shadows always match the displaced surface.

04 · How it works

One height buffer

Materials write height through a custom output. A custom mesh pass fills the buffer using the main view's existing culling, so there's no second scene traversal. Both effects read from it.

Materialscustom height output Decalsdeferred + mesh Height buffercustom mesh pass SSDMdepth overlap fix Contact shadowsheight-aware Finalimage
05 · Proof & specs

The numbers

Worst-case GPU time per quality preset: 100% screen size with displacement covering the whole screen. Median of 12 ProfileGPU captures.

GPU cost

Worst case · RTX 5090 Laptop · 2560×1440 · 100% screen size and coverage
PresetDisplacementContact shadowsTotal
Low1.53 ms0.27 ms1.80 ms
Medium (default)1.96 ms0.32 ms2.28 ms
High2.02 ms0.29 ms2.31 ms
Epic2.39 ms0.34 ms2.73 ms

Cost scales with screen coverage and the settings used, so most scenes cost less than this. Check your own with stat MKSSDM. Version 1.1 will reduce the cost further.

Specs

What you get
EngineUE 5.8 and 5.9
PlatformWindows (Win64)
Version1.0
Price$25.99 Personal · $99.99 Professional
TypeC++ code plugin
ModulesMKSSDMPlus, MKSSDMPlusMeshPass, MKSSDMPlusEditor
Engine changesNone
NaniteNot supported
SettingsProject Settings, settings panel, console variables
Quality presetsLow, Medium, High, Epic
TAA / TSRWrites displaced depth and velocity
IncludesDemo map with RVT landscape
AuthorMichael Kinsey
06 · Questions

FAQ

Full setup lives in the docs: quick start, settings reference, troubleshooting and licence. Read the docs →

Does it support Nanite?

No. SSDM+ does not support Nanite meshes or Nanite landscapes. Use it on regular, non-Nanite geometry.

Do I need a source build of the engine?

Draft: confirm before launch. The plugin makes no engine source changes.

Does it work on RVT landscapes?

Yes. Contact shadows read height written into the RVT, where stock contact shadows lose pixel depth offset.

Where do I get support?

Join the support Discord or email contact@michaelkinsey.xyz.

Which engine versions are supported?

Unreal Engine 5.8 and 5.9, on Windows (Win64).

Coming to Fab

Get MK SSDM+

Personal$25.99USD · Fab Personal licence
Professional$99.99USD · Fab Professional licence
Not live yet. The newsletter opens soon. In the meantime, follow along on Patreon or YouTube.