Deploy App / deploy (push) Successful in 29s
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>
17 lines
695 B
TypeScript
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'; }
|