![Page 1: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/1.jpg)
Intro 4kb sphere tracing
Maciej Matyka (maq / floppy)Dla koła naukowego Voxel 05.2012
![Page 2: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/2.jpg)
Co to są intra 4kb?Demoscena Demo Intro
Intro 4kb (4096 bajtów) krótko: taaaaaakie malutkie demka...
![Page 3: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/3.jpg)
Ile to jest 4096 bajtów?1 bajt = 8 bit4096b = 32768 bit
![Page 4: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/4.jpg)
Przykład: Sult / Looniesśi
3 miejsce Breakpoint 2009
http://www.youtube.com/watch?v=foR64ZObAXA
![Page 5: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/5.jpg)
Strona technicznaSult w .avi sredniej jakosci > 80mb, jak miesci sie to w 4kb? - intro zapisane w programie cieniującym (fragment shader)- grafika proceduralna (ray marching)- muzyka proceduralna (synteza FM)- sztuczki, optymalizacje i pakowanie (Crinkler)
![Page 6: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/6.jpg)
Ray Tracing
Problemy: - problem z miękkimi cieniami - dużo obiektów, fraktale 3D - trzeba rozwiązywać równania
(wikipedia)
![Page 7: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/7.jpg)
Ray Marching
Zamiast liczyć punkt przecięcia promienia z obiektem w scenie (Ray Tracing) wykonujemy spacer po promieniu szukając przecięcia z obiektami w scenie.
(ważny slajd)
![Page 8: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/8.jpg)
Równanie iteracyjnePromień:
r(t) = r0 + t * dir Szukamy ti wskazującego przecięcie promienia z obiektem:
ti = ti-1 + f( r(ti-1) )
![Page 9: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/9.jpg)
Ray Marching - Spacer
![Page 10: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/10.jpg)
Ray Marching - Spacer
![Page 11: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/11.jpg)
Ray Marching - Spacer
![Page 12: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/12.jpg)
Ray Marching - Spacer
![Page 13: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/13.jpg)
Ray Marching - Spacer
![Page 14: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/14.jpg)
Ray Marching - Spacer
![Page 15: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/15.jpg)
Ray Marching - Spacer
![Page 16: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/16.jpg)
Distance Fields● Opis obiektów przez funkcje implicit functions● dla danej pozycji x w scenie f(x) < 0 - punkt wewnątrz f(x) = 0 - punkt na powierzchni f(x) > 0 - punkt na zewnątrz ● wartosc f może niesc informację o odległosci
![Page 17: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/17.jpg)
Sphere Tracing
![Page 18: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/18.jpg)
Sphere Tracing
![Page 19: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/19.jpg)
Sphere Tracing
![Page 20: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/20.jpg)
Sphere Tracing
![Page 21: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/21.jpg)
Sphere Tracing
![Page 22: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/22.jpg)
Sphere Tracing
![Page 23: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/23.jpg)
Sphere Tracing
![Page 24: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/24.jpg)
Sphere Tracing
![Page 25: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/25.jpg)
Sphere Tracing
![Page 26: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/26.jpg)
Sphere Tracing
![Page 27: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/27.jpg)
Algorytm sphere tracingfloat d;vec3 p = p0;
for(int i=0; i<ITER; i++) // np. 100 { d = f(p); if(d < EPS) // np. 0.002 break; p = p + dir * d; }
![Page 28: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/28.jpg)
Przykładowe funkcjePowierzchnia o normalnej n przechodząca przez punkt nd f(r) = r * n - d
J.C. Hart, Sphere Tracing: Simple Robust Antialiased Rendering of Distance-Based Implicit Surfaces (Course Notes, SIGGRAPH 1993)
![Page 29: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/29.jpg)
Przykładowe funkcjePowierzchnia o normalnej n przechodząca przez punkt nd f(r) = r * n - d
J.C. Hart, Sphere Tracing: Simple Robust Antialiased Rendering of Distance-Based Implicit Surfaces (Course Notes, SIGGRAPH 1993)
![Page 30: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/30.jpg)
Przykładowe funkcjeKula o promieniu R f(r) = |r| - R
J.C. Hart, Sphere Tracing: Simple Robust Antialiased Rendering of Distance-Based Implicit Surfaces (Course Notes, SIGGRAPH 1993)
// przykładowy kod float sphere(vec3 r, float R){
return length(r) - R;}
![Page 31: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/31.jpg)
Przykładowe funkcjeKula o promieniu R f(r) = |r| - R
J.C. Hart, Sphere Tracing: Simple Robust Antialiased Rendering of Distance-Based Implicit Surfaces (Course Notes, SIGGRAPH 1993)
![Page 32: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/32.jpg)
Minimum dwóch funkcjito ich suma...
![Page 33: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/33.jpg)
Miękkie cienieMarsz od punktu kontaktu do źródła swiatła+suma odległosci od innych obiektów (b. proste w implementacji!)
![Page 34: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/34.jpg)
Miękkie cienie
![Page 35: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/35.jpg)
Miękkie cienie
![Page 36: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/36.jpg)
Miękkie cienie
![Page 37: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/37.jpg)
Cienie
![Page 38: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/38.jpg)
Realizacja w pixel shader1) dwa trójkąty (fullscreen) 2) każdy pixel ma przypisany taki sam program cieniujący pixel shader 3) kod sphere tracingu można zapisać jako pixel shader który wykonuje się na GPU
![Page 39: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/39.jpg)
Przykładowy kod (ps)varying vec3 r;
uniform float t;
uniform vec4 m;
float plane(vec3 r)
{ return r.y; }
float sphere(vec3 r, float R)
{ return length(r) - R; }
float f(vec3 r) // distance function
{
float d=1e10;
vec3 posr = r;
d = sphere(r+vec3(0+m.x,-0.1+m.y,3.9), 0.5);
d = min (d, plane(r));
return d;
}
// credit: las / pouet thread
float shadow(vec3 p, vec3 l, float d, int i)
{
float o;
for (o = 0; i > 0.; i--) o += f(p+l*i*d).x;
return clamp(o, 0.0, 1.0);
}
// credit: http://www.pouet.net/topic.php?which=7920&page=10, rar
vec3 normal(vec3 p)
{
#define DR 2e-4
vec3 dr = vec3(DR,0,0);
return ( vec3( f(p+dr.xyz).x, f(p+dr.yxz).x, f(p+dr.yzx).x ) - f(p).x) / DR;
}
#define ITER 90
#define EPS 0.002
void main()
{
vec3 camera = vec3(-0.1,1.8,-15.0);
vec3 p = vec3(r.x, r.y+1.2, -10.2);
vec3 lightv = vec3(0.0,2.5,-5.0);
vec3 dir = normalize(p-camera);
int mat=1;
float d;
for(int i=0; i<ITER; i++)
{
d = f(p);
if(d < EPS)
break;
p = p + dir * d;
}
vec3 n = normal(p);
float light = 1.0 + 0.5*(dot(n,lightv));
light = light / pow(length(lightv-p),2);
vec3 lightdir = normalize(lightv-p);
light *= shadow(p, lightdir, 0.02, 10);
vec4 color = 0.1+0.9*light * vec4(1,1,1,1);
gl_FragColor = color;
}
![Page 40: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/40.jpg)
W działaniuAKIKO by Floppy2 miejsce na Riverwash 2011
http://www.youtube.com/watch?v=mxZx5RlQsc4
![Page 41: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/41.jpg)
Czy tylko prymitywy w 4k?- fraktale 3d- tereny 3d, np. - renderuj klasyczny objekt (np. teren) - wynik przenies na GPU - ray marching - efekt? (Rendering World with two triangles / IQ
![Page 42: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/42.jpg)
Elevated 4kb
1 miejsce Breakpoint 2009
http://www.youtube.com/watch?v=_YWMGuh15nE
![Page 43: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/43.jpg)
Dobre linki http://pouet.net/ - m.in. intra 4k http://www.iquilezles.org/ - m.in. sphere tracing http://www.iquilezles.org/apps/shadertoy/
![Page 44: Intro 4kb - Panoramixpanoramx.ift.uni.wroc.pl/~maq/maq-raymarching.pdfMaciej Matyka (maq / floppy) Dla koła naukowego Voxel 05.2012 Co to są intra 4kb? Demoscena Demo Intro Intro](https://reader035.vdocuments.site/reader035/viewer/2022063014/5fd049e29b6af64d123f1983/html5/thumbnails/44.jpg)
KoniecDziękuję za uwagę http://panoramix.ift.uni.wroc.pl/~maq/raymarching.zip
helpdesk: maciej.matyka[at] gmail.com