97 lines
5.3 KiB
Markdown
97 lines
5.3 KiB
Markdown
# SHADER-137 — Rayons solaires volumétriques
|
||
|
||
Demande validée : faisceaux légers découpés par les blocs, carte d'ombres partagée,
|
||
feuillage perméable, rendu natif préservé, option et intensité indépendantes du bloom.
|
||
Socle beta.136, branche `codex/sunshafts-beta137`, Minecraft 26.3 / Java 25.
|
||
Aucun changement de monde ni de gameplay.
|
||
|
||
## Contrat
|
||
|
||
Soleil uniquement ; activé initialement à 35 %, intensité 0–100.
|
||
Intégration de 16 segments par pixel à un quart de chaque dimension.
|
||
Reconstruction guidée par la profondeur, sans historique ni bruit animé.
|
||
Réutilisation du masque de feuillage déjà stable dans les ombres.
|
||
La carte solaire peut fonctionner sans afficher les ombres sur les surfaces.
|
||
Portée bornée à 64 blocs et à la moitié de la portée des ombres.
|
||
Atténuation aux limites de la carte, à l'horizon et avec la météo.
|
||
|
||
## Rendu et coût borné
|
||
|
||
Deux passes : intégration dans une cible RGBA16F de largeur et hauteur divisées
|
||
par quatre, puis reconstruction guidée par la profondeur. Seize segments
|
||
quadratiques privilégient les premiers mètres ; quatre lectures fixes de la
|
||
carte d'ombres par segment adoucissent seulement la lumière dans l'air.
|
||
La dernière portion du rayon rétrécit continûment à l'approche d'une surface.
|
||
La lumière utilise une teinte solaire chaude mélangée au brouillard natif.
|
||
|
||
La carte d'ombres et ses maillages sont partagés, y compris les trous de
|
||
transmission déterministes des feuilles. Aucune copie d'image plein écran,
|
||
aucune duplication du terrain, aucune lecture GPU côté CPU ni accumulation
|
||
entre images dans le rendu de production. OFF/zéro libèrent le volume ; la
|
||
carte d'ombres reste seulement si les ombres de surface sont activées.
|
||
Le soleil sous l'horizon et la submersion suspendent les rayons.
|
||
|
||
## Vérifications
|
||
|
||
Scénario natif réussi en **1 min 41 s** sur macOS / Apple M1 / OpenGL : pièce
|
||
entièrement fermée, toit ajouré OFF/35/100, feuilles puis ciel ouvert, déplacement
|
||
de quatre blocs et retour, caméra proche d'un mur à 0,5 puis 0,125 bloc,
|
||
soleil hors champ, nuit, OFF/zéro, carte d'ombres partagée, effet combiné,
|
||
redimensionnement à 961 × 541 et rechargement des ressources. Préférences
|
||
vierges/partielles/personnelles, bornage et libellés FR/EN également vérifiés.
|
||
Log : `build/shader137-client-final.log`, marqueur `SUNSHAFT137_PASS`.
|
||
Comparatif autonome : `build/Shader-beta.137-comparaison.html`.
|
||
|
||
La première tentative s'est arrêtée sur une comparaison de gain brut entre
|
||
feuillage et ciel ouvert. La composition dispose de moins de marge sur un mur
|
||
déjà clair : le test compare maintenant la contribution normalisée sur les mêmes
|
||
surfaces, et les feuilles du scénario sont persistantes. Aucun seuil du rendu
|
||
n'a été assoupli pour faire passer ce contrôle.
|
||
|
||
Les contrôles natifs existants du bloom, des vingt textures de minerais émissifs
|
||
et du lens flare réussissent également en **1 min 32 s**, avec leurs seuils
|
||
inchangés. Log : `build/shader137-regression.log`, marqueurs `EMISSIVE131_PASS`
|
||
et `LENS_FLARE136_PASS`. Les autres effets sont explicitement isolés dans les
|
||
scénarios qui nécessitent une image témoin sans rayons.
|
||
|
||
## Limites
|
||
|
||
Le volume utilise les formes présentes dans la carte d'ombres existante :
|
||
il n'ajoute pas de projection d'ombre des entités ou des nuages. Le feuillage
|
||
reste une approximation par transmission déterministe. Portée maximale de
|
||
64 blocs, atténuée à son extrémité. Le faible nombre de segments et la résolution
|
||
réduite peuvent lisser les ouvertures très fines. Aucun résultat Windows/Vulkan
|
||
ni mesure de FPS revendiqués.
|
||
|
||
|
||
## Construction et archives
|
||
|
||
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
|
||
réussit en **2 min 27 s**, 126 tâches. Le serveur GameTest dédié reste exclu
|
||
conformément au refus EULA antérieur. Log : `build/shader137-build.log`.
|
||
Comparaison à beta.136 : **11 entrées de production** modifiées, uniquement
|
||
le rendu, ses préférences et ses libellés. Gameplay et textures des gemmes
|
||
strictement conservés. JAR normal/Test identique, sources et template vérifiés.
|
||
Reçu local : `build/shader137-artifact.json`.
|
||
|
||
- `Sanctuary-beta.137.mrpack` : 10431723 octets ; SHA-256 `6684d1dbe48cd3031b373a03d4380519fdbf5d841e1c7cb5e290dec63b5ba9f6`.
|
||
|
||
- `Sanctuary-Test-beta.137.mrpack` : 10450650 octets ; SHA-256 `32b0cee60152b6a5c8f31b248391c79a5fdf47b649de74902b066457ad4785ef`.
|
||
|
||
JAR : `f1fbc106b4b048753f9a669af37e9c12f92168af486d4072f514e86920c81faa`.
|
||
|
||
## Livraison
|
||
|
||
[Release beta.137](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.137)
|
||
publiée depuis `2d7072b8a8febac53354e9d0063246ac1e843e37`. Canal packwiz
|
||
`68cb39a5edbf5d34def02f670e2488ee852605b8` ; téléchargements publics vérifiés par SHA-256.
|
||
Deux synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
|
||
réussissent. Un seul JAR beta.137 actif ; les **923 fichiers personnels suivis**,
|
||
dont sauvegardes et préférences, gardent leurs hashes. Copie préalable dans
|
||
`sanctuary-backups/before-beta.137/`, aucun monde personnel ouvert.
|
||
|
||
Packs normal/Test/template et comparatif natif également vérifiés dans
|
||
`sanctuary-beta/build/`. Le checkout original garde ses changements préexistants.
|
||
Reçus locaux ignorés : `build/shader137-artifact.json`, `build/shader137-isolated.json`,
|
||
`build/shader137-prism.json`, `build/shader137-publication.log`.
|