feature/wax #180

Merged
Nora merged 5 commits from feature/wax into develop 2026-09-10 11:47:54 +00:00
Owner
No description provided.
Le premier rendu montrait des cônes identiques alignés au ras du bord bas et un
cadre vide au-dessus. Trois causes, trois corrections.

1. La masse d'une goutte est NORMALISÉE (`fillRatio`, `scatter`, `footprintPx`
   remplacent `dropMass`) : la pile atteint la part visée du cadre quels que
   soient le nombre de gouttes et la finesse des colonnes.
2. Les mèches sont tirées (position jitterée, débit inégal) et les strates sont
   peintes en BANDE, pas en profil plein cumulé — des profils pleins empilés se
   recouvrent l'un l'autre et l'empilement s'écrase en silhouette plate.
3. Les coulures (`runnels`, `runnelLength`) pendent à un jeu de nervures tirées
   une fois pour toute l'œuvre : c'est leur empilement qui fait des côtes
   continues, là où des coulures indépendantes ne donnaient qu'une pluie de
   têtes d'épingle. `tension` arrondit ce que l'angle de repos a facetté.

La mise au repos, elle, ne tenait pas sa promesse : la matière n'avance que d'une
colonne par balayage, une pile haute demandait 25 000 passes et le garde-fou de
boucle coupait bien avant — la pente peinte valait deux fois l'angle de repos, la
loi qui fait l'identité de l'algorithme était décorative. On balaie maintenant à
pas dégressifs (la moitié du cadre, puis le quart…) avant de finir au pas de la
colonne : même loi vue de loin, quelques dizaines de balayages, et le repos
atteint pour de bon. Le test de pente le prouve désormais sur le profil peint.

Golden regelé : l'algorithme n'est pas déployé (go-live Halloween encore à
jouer), aucune œuvre ne porte ces octets, pas de bump `engine_version`.
Une goutte s'étale sur son empreinte ; la marquer d'un disque large d'une
colonne peignait des pastilles rondes posées SUR la couche — de la mousse, pas
de la matière. La trace devient sa nappe : un liseré couché, long comme
l'empreinte et fin comme la colonne, qui lit comme le grain de la cire coulée.

Trois fuites bouchées au passage, toutes le même symptôme (des grains semés dans
le fond noir au-dessus de la crête) :

- la nappe se relève APRÈS la relaxation, sur la cire étalée et non sur le pic
  que la goutte vient de faire — un pic que la matière allait aussitôt affaisser ;
- elle sort juste avant la strate qui la couvre, jamais plus haut que le profil
  de cette strate : la mise au repos peut transporter une pointe ailleurs, et la
  trace enfouie dessous resterait en l'air. Les profils peints ne redescendent
  jamais, donc sous le sien une nappe est sous tous les suivants ;
- la dernière goutte ferme toujours une strate : les gouttes tombées après la
  dernière couche peinte gardaient leur nappe à découvert.

Deux lois de plus au test : la nappe suit `footprintPx`, et aucune ne dépasse la
crête. Golden regelé.
Deux défauts de forme, tous deux venus d'un tirage fait au mauvais endroit.

La longueur se mesurait sur la distance au sol. Accrochée haut, une coulure
devenait une carotte de trois cents pixels de long pour vingt de large, un fil à
plomb tendu du sommet au bas du cadre. Une coulure de cire est une goutte
étirée : son élancement est maintenant borné (`RUNNEL_ASPECT`), et le fil part
plus fin de l'attache pour finir sur sa perle.

La grosseur, elle, était tirée par coulure. Sur un même sillon s'empilait donc
un chapelet de perles inégales, là où une bougie porte une côte continue. Elle
appartient désormais à la NERVURE — tirée une fois avec elle, à un écart de
`RUNNEL_TAPER` près : les coulures d'un même sillon se superposent en une côte.

Les coulures s'éclaircissent aussi moins (0,55 → 0,45) : elles lisaient comme un
rideau pâle posé devant la cire au lieu d'être de la cire.

Deux lois au test, rouges sur le code précédent (6 coulures au-delà de 8:1,
7 nervures sur 8 à plus de 2× d'écart de grosseur). Golden regelé ; suite
renderer verte (2740/2742, les deux restants sont la dérive SIMD connue de
`pipeline-slide`).
wax-crypt : au moins une coulure par œuvre
Some checks failed
CI / Renderer - couverture JS (pull_request) Has been skipped
CI / Renderer - audit des dépendances JS (pull_request) Failing after 1m31s
CI / Renderer - tests + lint JS (pull_request) Successful in 7m27s
CI / PHP - tests + static + lint (pull_request) Successful in 7m31s
0cefa35af5
`runnels` pouvait être tiré à 0 : l'œuvre n'était plus qu'un empilement de
strates lisses, sans rien qui dise la cire coulée. Le tirage part maintenant de
1. Le moteur, lui, accepte toujours 0 (un body forgé, et le test qui le prouve) —
c'est une borne de tirage, pas une garde de service, donc pas de bump.
fix
All checks were successful
CI / Renderer - couverture JS (pull_request) Has been skipped
CI / Renderer - audit des dépendances JS (pull_request) Successful in 1m1s
CI / PHP - tests + static + lint (pull_request) Successful in 6m58s
CI / Renderer - tests + lint JS (pull_request) Successful in 7m0s
fe1e4f353f
Nora merged commit a086f7df8a into develop 2026-09-10 11:47:54 +00:00
Nora deleted branch feature/wax 2026-09-10 11:47:55 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Nora/ArtAutomatic!180
No description provided.