The Photon patch
Vortex Dread draws its own storm and needs no shader pack to do it. This patch covers the other case: Iris is running, with a pack loaded, and Iris will not run a mod's own core shader while a pack is active. So the patch teaches a copy of Photon to read the storm state itself, through a texture the mod rewrites every frame, and to march the column inside the pack's own blend pass, after the translucent layer and before fog: a hill that hides a tornado still hides it, and whatever stays on screen picks up the same aerial haze and the same tone mapping as everything around it. It also changes what lightning does, turning a flat exposure bump into a point source planted inside the cloud. Photon itself is never shipped here: the script reads your own copy and writes a second one beside it.
Lightning as a point source
Stock Photon adds its flash factor to every cloud pixel at the same strength,
LIGHTNING_FLASH_UNIFORM * lightning_flash_intensity, whether that cloud
sits right overhead or out at the horizon. Inside the volume, the patch replaces that with an
inverse-square falloff centred on wherever Iris says the channel actually is,
1.0 / (1.0 + (to_bolt * to_bolt) / (reach * reach)), itself capped by
vortexdread_lightning_reach. Both formulas equal 1.0
right at the channel and pull apart the moment you step away from it, both finally bounded by a
limit worked out with exp(-sky_optical_depth * extinction * 0.4), down
to a threshold of 0.004 below which nothing gets added at all.
| Distance to the channel (blocks) | Old flat factor | Patch falloff |
|---|---|---|
| 0 | 1.0 | 1.0 |
| 110 | 1.0 | 0.8 |
| 220 | 1.0 | 0.5 |
| 440 | 1.0 | 0.2 |
| 880 | 1.0 | 0.06 |
The term only runs while a Photon flash is actually live, and the optical depth it reads is already the one the pack built for its own clouds: nothing extra gets paid just to add this one term.
One free slot is all this needs to break.
MATERIAL_TORNADO = 200. The script checks that the text around this
line has not moved, not that 200 is still free: if a future Photon claims that same number for
another material, the patch still applies, and the two get drawn as one thing with nothing left
to catch it.
Photon stays on your machine. Its licence forbids redistribution on a
platform that pays its uploaders, and Vortex Dread sits on two of those. The
patch is written against one exact version, v1.3b, and stops rather than
guessing at any other
(apply.py reads your own copy, writes a second one beside it, and
never writes into the mod's own repository if one of its sixteen text anchors does not turn up
exactly as expected).
What the patch leaves behind
| Piece | What it does | Value |
|---|---|---|
| MATERIAL_TORNADO | Material number that tags a column pixel for the rest of the pipeline, appended to Photon's own list. | 200 |
| vortexdread_lightning_reach | Distance at which the inverse-square falloff has lost half its strength. | 220.0 blocks |
| texture.composite.colortex15 | Channel the patch reads the mod's own storm state from, rewritten every frame for up to four storms, eight fields each. | vortexdread:textures/effect/funnel_state.png |
| program/c1_blend_layers.fsh | Pass where the mod's own column gets marched, after the pack's translucent blend. | right before // Blend fog |
| sampling.glsl | Share of the old flat term left for the sky's afterglow around the channel. | ×0.35 |
| sky.glsl | Share of the same term left at the horizon, in the sky pass rather than the cloud one. | ×0.3 |