Le patch Photon

Vortex Dread dessine sa tempête tout seul et n'a besoin d'aucun shader pack pour le faire. Le cas que ce patch couvre est différent: Iris tourne, avec un pack chargé, et Iris refuse de faire tourner le programme central d'un mod tant qu'un pack est actif. Le patch apprend donc à une copie de Photon à lire elle-même l'état de l'orage, à travers une texture que le mod réécrit chaque image, et à marcher la colonne dans la passe de mélange du pack, après le rendu translucide et avant le brouillard: une colline qui cache une tornade la cache encore, et ce qui reste visible hérite du même brouillard aérien et du même réglage de tons que le reste du paysage. Il transforme aussi l'éclair, qui passe d'une hausse d'exposition plate à une source ponctuelle plantée dans le nuage. Photon lui-même n'est jamais distribué ici: le script relit votre propre copie et en écrit une seconde à côté.

L'éclair comme source ponctuelle

Photon d'origine ajoute son facteur d'éclair à chaque pixel de nuage à la même force, LIGHTNING_FLASH_UNIFORM * lightning_flash_intensity, que ce nuage soit juste au-dessus de la tête ou loin à l'horizon. À l'intérieur du volume, le patch le remplace par une chute en carré inversé autour du point où Iris situe la décharge, 1.0 / (1.0 + (to_bolt * to_bolt) / (reach * reach)), elle-même plafonnée par vortexdread_lightning_reach. Les deux formules valent 1.0 pile au niveau du canal et s'écartent dès qu'on s'en éloigne, toutes deux finalement bornées par une limite calculée avec exp(-sky_optical_depth * extinction * 0.4), jusqu'à un seuil de 0.004 sous lequel rien n'est ajouté.

Le facteur plat d'origine contre la chute plafonnée du patch · 1.0 partout, 1.0 / (1.0 + (to_bolt * to_bolt) / (reach * reach))
Distance au canal (blocs)Facteur plat d'origineChute du patch
01.01.0
1101.00.8
2201.00.5
4401.00.2
8801.00.06

Le calcul ne tourne que pendant qu'un éclair de Photon est réellement en cours, et la profondeur optique qu'il consulte est déjà celle que le pack a construite pour ses propres nuages: rien n'est repayé pour ce seul terme.

Une seule case libre suffit à tout casser. MATERIAL_TORNADO = 200. Le script vérifie que le texte autour de cette ligne n'a pas bougé, pas que la valeur 200 est encore libre: si une future version de Photon revendique ce même numéro pour un autre matériau, le patch s'applique quand même et les deux se confondent à l'écran, sans qu'aucune vérification ne le voie venir.

Photon reste chez vous. Sa licence interdit la redistribution sur une plateforme qui paie ses auteurs de mods, et Vortex Dread est publié sur deux d'entre elles. Le patch est donc écrit contre une version précise, v1.3b, et s'arrête plutôt que de deviner sur une autre (apply.py relit votre copie, en écrit une seconde à côté, et n'en écrit jamais dans le dépôt du mod si l'une de ses seize ancres de texte ne se retrouve pas telle quelle).

Ce que le patch dépose

Les repères concrets que le patch introduit dans la copie
ÉlémentCe qu'il faitValeur
MATERIAL_TORNADONuméro de matériau qui marque un pixel de colonne pour le reste du pipeline, ajouté à la liste de Photon.200
vortexdread_lightning_reachDistance à laquelle la chute en carré inversé a perdu la moitié de sa force.220.0 blocs
texture.composite.colortex15Canal où le patch va lire l'état d'orage que le mod réécrit chaque image, quatre tempêtes au plus, huit champs par ligne.vortexdread:textures/effect/funnel_state.png
program/c1_blend_layers.fshPasse où la colonne du mod est marchée, après le mélange translucide du pack.juste avant // Blend fog
sampling.glslPart du terme plat d'origine laissée pour la rémanence du ciel autour du canal.×0.35
sky.glslPart du même terme laissée à l'horizon, dans le calcul du ciel plutôt que dans celui des nuages.×0.3