Files
sanctuary-beta/docs/shaders-beta040.md
koka 00be1eb0d0
Build Sanctuary / build (push) Canceled after 0s
Integrate native pixel shadows over beta.126 for beta.127
2026-09-17 17:51:19 +02:00

110 lines
6.1 KiB
Markdown

# beta.040 — ciel compatible avec le rendu natif et Vanilla Light
Demande du 14 septembre 2026, branche `codex/operator-inhabitant-beta040`.
Ce ticket complète [le ciel partagé](operator-inhabitant-stars-beta040.md).
La [mise à jour beta.053](progressive-fog-beta053.md) étend Vanilla Light avec
une brume progressive dès le point de vue. Le reste de cette page décrit le
socle graphique beta.040.
## Disponible dans cette livraison
**Options → Shaders → Sanctuary · Vanilla Light** active ou désactive un effet
graphique local, activé par défaut dans les mondes Sanctuary. Le shader donne
un peu plus de contraste et de saturation, des ombres légèrement froides et des
lumières légèrement chaudes. Le HUD, les menus et les infobulles sont dessinés
après cet effet et gardent leurs couleurs. Noir et blanc purs sont conservés.
Le moteur de post-traitement natif de **Minecraft 26.3-pre-2** charge
`sanctuary:vanilla_light`. Il exécute une passe couleur avec un seul échantillon
par pixel, puis une copie vers la cible principale. Pas de calcul d'ombres,
reflets, flou, historique temporel ou lecture de pixels par le processeur.
Le coût dépend tout de même de la résolution et du GPU ; aucune mesure de gain
de FPS n'est revendiquée. Désactiver l'effet retire ces deux passes.
Les captures panoramiques techniques conservent leur rendu brut avant
post-traitement, pour rester associées aux exports de profondeur et de brume.
La préférence reste dans `config/sanctuary-shaders.json` (`enabled`, booléen).
Elle ne modifie aucune sauvegarde ni lumière de gameplay. Les effets natifs de
créature observée en spectateur sont conservés et passent après Vanilla Light.
La présence d'Iris, Oculus ou Canvas suspend cet effet natif pour éviter de
superposer deux traitements ; la préférence n'est pas effacée.
## Les étoiles restent une mémoire du serveur
Sanctuary fournit le maillage et le nombre d'indices à `SkyRenderer.renderStars`.
Le corps natif de la méthode reste exécuté : même pipeline `RenderPipelines.STARS`,
mêmes uniformes, étape de ciel et appels de dessin. Un registre vide produit
zéro indice dessiné. Le buffer d'étoiles est recalculé seulement lors d'un
changement du registre ou d'une libération des ressources graphiques.
Cette intégration remplace l'annulation de la méthode et le dessin séparé.
Les moteurs qui interceptent la passe native peuvent ainsi traiter la géométrie
Sanctuary. Vanilla Light ne génère aucune étoile de son côté. Changer de rendu
ne change ni les événements, ni leurs positions, ni le cycle de sept jours.
## État vérifié des moteurs externes
Vérification le **14 septembre 2026**, sur les versions publiées Modrinth et
les dépôts officiels : aucun artefact Fabric Iris, Sodium ou Canvas ne déclare
`26.3-pre-2` comme version compatible. Iris est publié pour 26.2 ; le nouveau
Sodium 26.3 vise les release candidates et précise qu'Iris n'est pas encore
compatible. Aucun de ces JAR n'est ajouté au pack et Minecraft reste épinglé.
- [Versions Iris](https://modrinth.com/mod/iris/versions),
[sources et licence LGPL-3.0](https://github.com/IrisShaders/Iris).
- [Sodium 26.3 et état d'Iris](https://github.com/CaffeineMC/sodium/releases/tag/mc26.3r1-0.9.2-beta.2).
- [Versions Canvas](https://modrinth.com/mod/canvas/versions).
**La compatibilité avec des packs Iris n'est pas validée.** Le changement de
point d'intégration prépare cette vérification ; il ne remplace pas un essai
avec une version exacte du moteur. Vanilla Light est pour l'instant un shader
natif intégré, pas un chargeur de packs OptiFine/Iris.
## Contrat pour le prochain pack de shaders
Iris expose la géométrie native dans `gbuffers_skybasic` et reconnaît la phase
`MC_RENDER_STAGE_STARS`. Le futur pack Sanctuary devra conserver `stars=true`,
dessiner cette géométrie et désactiver ses étoiles procédurales éventuelles.
Un pack qui supprime le ciel natif ou ajoute son propre semis d'étoiles exige
une adaptation spécifique. Les réglages solaires du shader ne doivent pas
remplacer la rotation hebdomadaire fournie par Sanctuary.
Sources : [option stars](https://shaders.properties/current/reference/shadersproperties/features/),
[étapes de rendu](https://github.com/IrisShaders/docs/blob/main/src/content/docs/current/Reference/Macros/Render_Stages.mdx),
[association des pipelines Iris](https://github.com/IrisShaders/Iris/blob/26.1/common/src/main/java/net/irisshaders/iris/pipeline/IrisPipelines.java).
Lorsque le moteur exact sera disponible : épingler les dépendances, tester ciel
vide et ciel peuplé avec le pack, comparer les positions, changer de pack puis
le désactiver, recharger les ressources, visiter les autres dimensions et
vérifier les occultations par le terrain. Les ombres du shader ne doivent pas
dessiner les étoiles dans leur passe d'ombres.
## Ressources modifiables
Les deux sources sont embarquées dans le mod et peuvent être remplacées par un
resource pack avec les mêmes chemins :
- `assets/sanctuary/shaders/post/vanilla_light.fsh` : traitement des couleurs ;
- `assets/sanctuary/post_effect/vanilla_light.json` : chaîne de rendu native.
Leurs identifiants restent stables. Aucun sprite ou PNG existant n'est modifié.
Le futur resource pack commun peut reprendre ces sources ; aucune archive de
shader externe non testée n'est présentée comme installable dans cette livraison.
## Validation
Le parcours client vérifie l'option native, l'application GPU puis le retrait
de l'effet, le rechargement des ressources et le nombre réel d'indices dessiné
par la passe native avec un ciel peuplé puis vide. Ce parcours passe sur le
client natif : témoin `SHADER040_CLIENT_PASS` dans
`build/operator040-client-final.log`. Captures dans
`build/operator040-evidence/final/`, reçu dans `build/operator040-artifact.json`.
Les contrôles ne revendiquent pas un essai avec Iris ou un autre moteur externe.
Les ombres portées pixélisées sont livrées dans [beta.127](shader-beta127.md),
intégrées sur la beta.126. Leur préparation locale portait un numéro beta.122
non publié ; la release beta.122 existante n'est pas remplacée.