Files
Gartenvisualisierung/src/scene/quality.ts
T
admGitAICDSandClaude Opus 5 62f4d72355
Deploy App / deploy (push) Successful in 29s
Fotorealistische Darstellung mit Umschalter
Oben in der Mitte schaltet ein Knopf zwischen Stilisiert und
Fotorealistisch. Beide Varianten entstehen aus derselben Geometrie; die
zweite wird beim ersten Umschalten aufgebaut und bleibt danach bestehen.

Fotorealistisch:
- Texturen doppelt so fein, mit Rauheits- und Verdeckungskarten aus dem
  Hoehenbild. Das Motiv wird skaliert auf die groessere Leinwand gezeichnet,
  damit Scheite, Kiesel und Poren gleich gross bleiben.
- Laub aus Blattkarten (Baumlaub, Eibennadeln, Liguster, Straeucher,
  Kraeuter) mit Volumen-Normalen und Alpha-Test-Schatten.
- Baeume rekursiv gewachsen, mit gekruemmten Aesten und Blattwolken.
- Rasen und Schotterwiese aus Grasbueschelen, die im Wind wiegen.
- Physikalischer Himmel mit Umgebungslicht, Sonne zu Himmel etwa 5:1,
  Verlaufshimmel in der Daemmerung, 4096er Schatten.
- GTAO, leichtes Bloom, MSAA.
- Wiese ohne sichtbares Kachelmuster.

Nebenbei behoben:
- Normalmaps hatten die y-Steigung verkehrt: Poren und Fugen standen als
  Buckel hervor. Betrifft auch die stilisierte Ansicht.
- Umlandkranz schliesst jetzt luecklos an das Raster an; vorher sah man
  von oben als helle Linie den Himmel durch den Spalt.
- Glas im Fotomodus fast spiegelnd, Holzfassade mit Relief.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 11:15:22 +02:00

17 lines
695 B
TypeScript

/**
* Darstellungsqualitaet. Die Szene gibt es zweimal aus derselben Geometrie:
* stilisiert (leicht, auch fuers Handy) und fotorealistisch (hoch aufgeloeste
* Materialien, echtes Laub und Gras, Himmelslicht und Nachbearbeitung).
*
* Die Bauteile fragen beim Aufbau `isFoto()` ab. Der Schalter wird vor dem
* Aufbau einer Variante gesetzt - beide Varianten bleiben danach bestehen,
* damit man ohne Wartezeit hin und her wechseln kann.
*/
export type Quality = 'stil' | 'foto';
let current: Quality = 'stil';
export function quality(): Quality { return current; }
export function setQuality(q: Quality) { current = q; }
export function isFoto(): boolean { return current === 'foto'; }