Sugármetszés implicit szintfelülettel

Slides:



Advertisements
Hasonló előadás
Algoritmusok.
Advertisements

L ÁTHATÓSÁG MEGHATÁROZÁSA tavaszi félév.
Nemlineáris és komplex rendszerek viselkedése
3. előadás (2005. március 1.) Utasítások, tömbök
 Árnyalási egyenlet  Saját emisszió  Adott irányú visszaverődés.
Globális illumináció (GI)
Sugárkövetés: ray-casting, ray-tracing
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Grafikus játékok fejlesztése Szécsi László g11-physics
 Nincs szinkronizáció és kommunikáció  Csővezeték alkalmazása  Párhuzamosítás Proc 2Proc 1 Csővezeték Proc 1 Proc 21 Proc 22 Párhuzamosság.
GPGPU labor V. GPU ray tracing. Kezdeti teendők Tantárgy honlapja, GPU ray tracing A labor kiindulási alapjának letöltése (lab5_base.zip), kitömörítés.
Előadás 51 Kormányzati politika Államkötvény nélküli eset Az egyensúlyi modellben a kormányzati változók közül 2 exogén, egy endogén, mivel a kormányzat.
Lineáris és nemlineáris regressziók, logisztikus regresszió
Készítette: Pető László
Programozás I. Horváth Ernő.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;
Lineáris egyenletrendszerek megoldása
2D képszintézis és textúrák
További vektor, mátrix algoritmusok
C nyelv utasításai.
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Dinamikai rendszerek kaotikus viselkedése
Fejlett grafikai algoritmusok Megvilágítási modellek
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Rendezések és szövegkezelő függvények
Készítette: Csíki Gyula
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Fraktálok Szirmay-Kalos László.
Sugárkövetés: ray-casting, ray-tracing
Térfogatvizualizáció
Fraktálok és csempézések
Sugárkövetés: ray-casting, ray-tracing
Térfogatvizualizáció
Analitikus geometria gyorstalpaló
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik.
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
Programozás I. Típus algoritmusok
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Színek és megvilágítás 5. előadás.
Nemrekurzív programozás ÜA LISP tartalmaz nemrekurzív eszközöket is, mivel azonban funkcionális nyelv, ezeket is függvényként használhatjuk. ÜSokszor a.
Raszter-konverzió A képelem látványát alkotó képpontok előállítása Egyenes szakasz képpontjai Sokszög lemez kitöltése.
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontjában ? És az ott milyen színű ? (4.7. Árnyalás)
Excel programozás (makró)
(Bináris) Kupac (heap) adattípus
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
1 Megerősítéses tanulás 4. előadás Szita István, Lőrincz András.
Vizualizáció és képszintézis
Vizualizáció és képszintézis Térfogati fényterjedés Szécsi László.
Kontinuum modellek 2.  Közönséges differenciálegyenletek numerikus megoldásának alapjai  közönséges differenciálegyenletek  Euler módszer  Runge-Kutta.
Szécsi László 3D Grafikus Rendszerek 17. előadás
Excel programozás (makró)
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Script nyelvek előadás
Szécsi László 3D Grafikus Rendszerek 10. előadás
Vizualizáció és képszintézis
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
Lineáris egyenletrendszerek megoldása
Algoritmusok és Adatszerkezetek I.
ITERÁCIÓ.
Material+ kioptimalizált uniformok
Szécsi László 3D Grafikus Rendszerek 11. előadás
A Lineáris Keresés Buktatói
Environment mapping Szécsi László
Algoritmusok és Adatszerkezetek I.
Függvénysablonok használata
Előadás másolata:

Sugármetszés implicit szintfelülettel Szécsi László 3D Grafikus Rendszerek 11. előadás

Isosurface ray casting ? képernyő szem

Iteratív keresés Skalármező szintfelületével metszéspont keresés

Kilépési, belépési pont uniform vec3 eye; varying vec3 rayDir; uniform samplerCube background; void main(void) { vec3 d = normalize(rayDir); float t1 = (1.0 - eye.y) / d.y; float t2 = (0.0 - eye.y) / d.y; float tstar = max(min(t1, t2), 0.0); float tend = max(max(t1, t2), 0.0);

Lineáris keresés (ray marching) Első pont megtalálás legyen biztos

Kilépési, belépési pont vec3 p = eye + d * tstar; vec3 step = d * min((tend - tstar)/128.0, 0.05); float h; for(int i=0; i<128; i++){ h = noise(p); if(h > 0.0) break; p += step; }

Távolságfüggő lépés vec3 p = eye + d * tstar; vec3 step = d * min((tend - tstar)/580.0, 0.05); float h; for(int i=0; i<128; i++){ h = noise(p); if(h > 0.0) break; p += step; step *= 1.02; }

Bináris keresés

Bináris finomítás step *= 0.5; p -= step; for(int j=0; j<16; j++) { h = noise(p); if(h < 0.0) p += step; else }

Normálvektor meghatározása árnyaláshoz gradiens meghatározása analitikusan számolható parciális deriváltak közelítése differenciákkal df(r)/dx = f(r+(, 0, 0)) - f(r-(, 0, 0)) ahol  pl. lehet függhet a távolságtól normalizálni is kell szűrni is jó lenne: zajok szűrése

Gradiens differenciákból vec3 gradient = vec3( noise(p + vec3(+0.05, 0.0, 0.0) ) - noise(p + vec3(-0.05, 0.0, 0.0) ) , noise(p + vec3(0.0, +0.05, 0.0) ) - noise(p + vec3(0.0, -0.05, 0.0) ) , noise(p + vec3(0.0, 0.0, +0.05) ) - noise(p + vec3(0.0, 0.0, -0.05) ) ); vec3 normal = normalize(gradient);

Ray casting + envmap

Sphere tracing

Diszkrét dinamikus rendszerek kaotikus viselkedése x <10x> 0.478564783… 0.785647835… 0.785647835… 0.856478359… 0.856478359… 0.564783591…

Diszkrét dinamikus rendszerek kaotikus viselkedése x <2x> 0.010111011… 0.101110111… 0.101110111… 0.011101110… 0.011101110… 0.111011101…

Diszkrét dinamikus rendszerek kaotikus viselkedése x 1-|2x-1| 0.010111011… 0.101110111… 0.101110111… 0.100010001… 0.100010001… 0.000100010…

A nyulak szigete nyulak száma jövőre nyulak száma idén Sn+1= C Sn (1-Sn)

Alacsony C Sn+1= C Sn (1-Sn)

Közepes C

Magas C

Kaotikus rendszerek a síkon F z = a + ib

z  z2 z = r e i r  r 2   2 divergens konvergens 1 attraktor: H = F(H)

A konvergens rész kitöltése Julia halmaz: z  z2+c Im z (X,Y) filledJuliaDraw ( ) FOR Y = 0 TO Ymax DO FOR X = 0 TO Xmax DO (x, y) = viewport2Window(X,Y) z = x + j y FOR i = 0 TO n DO z = z2 + c IF |z| > ∞ THEN WRITE(X,Y, white) ELSE WRITE(X,Y, black) ENDFOR END Re z

Julia halmaz

Quaternion Julia távolságfüggvény vec4 quatMult( vec4 q1, vec4 q2 ) { vec4 r; r.x = q1.x * q2.x - dot( q1.yzw, q2.yzw ); r.yzw = q1.x * q2.yzw + q2.x * q1.yzw + cross( q1.yzw, q2.yzw ); return r; } vec4 quatSq( vec4 q ) { r.x = q.x * q.x - dot( q.yzw, q.yzw ); r.yzw = 2.0 * q.x * q.yzw;

Érdekesebb távolságfüggvény: quaternion Julia void iterateIntersect( inout vec4 q, inout vec4 qp) { for( int i = 0; i < 10; i++ ) { qp = 2.0 * quatMult(q, qp); q = quatSq(q) + vec4(1, 0.5, -0.1, 0.3); if( dot( q, q ) > 7.0 ) { break; }

Érdekesebb távolságfüggvény: quaternion Julia float dist(vec3 p) { vec4 z = vec4( p, 0.0 ); vec4 zp = vec4( 1, 0.0, 0.0, 0.0 ); iterateIntersect( z, zp ); float normZ = length( z ); return 0.5 * normZ * log( normZ ) / length( zp ); }

Webgl sphere tracer sphere tracing ciklus webgl1: konkrét lépésszám kell (pl. 150) pozíció a szemből indul távolságfüggvény kiértékelése léptetés a távolsággal kilépés a ciklusból (break;), ha a távolság kisebb mint epszilon epszilon függhet a teljes megtett távolságtól: távolabb nagyobb hiba is oké ha nem konvergált az iteráció, a hátteret látjuk