Kůň na pláži — WebGL scéna v pěti fázích

Procedurální západ slunce, Gerstnerovy vlny a rozfázovaná stavba scény

Posledních pár dní jsem si hrál s jednou myšlenkou: jak daleko se dá dostat s fotorealistickou scénou v prohlížeči, když nepoužiju ani jednu texturu nebo obrázek — všechno musí vzniknout v kódu. Žádné JPG z internetu, žádné HDRI, žádné modely. Jen matematika, shadery a CanvasTexture.

Výsledek je kůň běžící po mokré pláži při západu slunce. Postavil jsem to v pěti fázích, každá je samostatný, plně funkční HTML soubor — a každou si můžete otevřít přímo tady:

FázeCo přidáváŽivá ukázka
1Procedurální obloha (Rayleigh/Mie), písek s PBR mapami, slunce na horizontu001 — Base Environment
2Oceán s Gerstnerovými vlnami, Beer-Lambert, pěna, zrcadlový mokrý písek002 — Ocean Shaders
3Kůň — rigged model, PBR materiály, posazený na písek003 — Procedural Horse
4Gallop, detekce kontaktu kopyt s vodou, fyzika vodní tříště004 — Animation & Particles
5Tracking kamera, bloom, vignette, film grain005 — Cinematic Final
[Číst více]
Štítky: webgl  threejs  3d  gpu 

Generátor stínidel projekčních lamp

Z textu nebo loga na 3D tisknutelné stínidlo

Dlouho jsem chtěl takovou tu lampu, co na zeď promítá nápis. Klasika, kdy světlo svítí zevnitř válcové stínidlo a písmena vyřezaná ve stěně se promítnou na zeď. Koupit se to dá, ale to by nebyla žádná zábava. Tak jsem si napsal generátor.

lamp.smoula.net je webová aplikace, která z textu (nebo z nahraného SVG loga) vygeneruje stínidlo a rovnou ho ukáže v živém 3D náhledu. Výstupem je hotový 3MF soubor připravený do sliceru.

[Číst více]
Štítky: tools  3dprint 

the 'impossible' happened

Gdb? nedává to smysl. Zdroják? WTF - to nedává smysl. Valgrind?

valgrind: the 'impossible' happened:
   Killed by fatal signal

Jo, valgrind umí udělat hezký den!

Štítky: funny  code 

Syncthing

Náhrada dropbox/megasync

Dropbox jsem opustil dávno z politických důvodů. Na synchronizaci mezi svými zařízeními jsem používal mega.co.nz. Jo, fungovalo to. Ale pořád to nějak nebylo ono.

Při posledním upgrade “se to nějak po***” a já zase jednou měl potřebu vyřešit synchronizaci mezi svými zařízeními jednou provždy. Hledal jsem řešení, které podporuje Linux a Android. Běží na vlastním serveru a tak nějak o něm člověk vlastně ani neví. Prostě funguje.

[Číst více]
Štítky: tools 

Generování záznamů pro .htpasswd

Protože apache jsem nepoužil několik let a pokaždé, když chci vygenerovat záznam pro .htpasswd souborů, tak hledám pořád dokola, jaké že parametry pro to openssl potřebuji, napíšu si poznámku sem.

Třeba se to bude hodit i někomu jinému.

$ printf "${username}:`openssl passwd -apr1`\n"
Štítky: tools  note 

Změna velikosti písmene v C

Nádherný kousek kódu z FFmpegu. Jeho cílem je pro účely výpisu změnit první písmeno na velké. Funguje samozřejmě o obráceně. Je tedy nutné mít pod kontrolou vstup, který je v tomto případě pevně definovaný, nicméně zápis je prostě elegantní.

Ano, nebude fungovat s UTF-8, nebude fungovat mimo 7bit ASCII. Nicméně pro tento účel je zápis prostě geniální.

Zdroj: ffmpeg/libavcodec/utils.c

buf[0] ^= 'a' ^ 'A'; /* first letter in uppercase */
Štítky: divine  code  magic