Hirdetés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- hcl: Poco F2 Pro facepalm
- Sapphi: StremHU | Source – Self-hostolható Stremio addon magyar trackerekhez
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- urandom0: Száműztem az AI-t az életemből
- Magga: PLEX: multimédia az egész lakásban
- eBay-es kütyük kis pénzért
Új hozzászólás Aktív témák
-
d3tto
csendes tag
Kérdezhetnéd, minek a bounding box, ahhoz rekurzió is kellene. Egy ilyen boxokból álló fával már elég érdekes dolgokat lehet művelni.
Nos, megoldható a rekurzió is egyszerű shaderrel.
A kulcs, az ugrás, a faág levágása. A megoldás pedig annyi, hogy ezt az ugrást egyszerű textúra koordinátával oldjuk meg.A CPU-n lefuttatod a rekurziót, és minden ág bounding boxát felsorolod lineárisan, tehát sorba egy textúrába. A lényeg az, hogy minden boxhoz tartozik egy ugrási "cím", vagyis egy textúra koordináta, ami a faág levágása esetén elő kell venni.
A shadernek már csak végig kell futnia a textúra pixelein sorba, és a sugár nem metszi a boxot, akkor elővenni az ugrási koordinátát, és onnan folytatni.
Az eredmény teljes mértékben megegyezik azzal, mintha rekúrzió történne a shaderben. Több százezer ágból álló fát 300-500 lépésben végignézi a shader.
A voxel raytracing már egy másik történet.
-
d3tto
csendes tag
Ha már erre jártam, adot néhány használható ötletet, ami később jól jöhet.
Sokszor nem a CUDA tesz gyorsabbá egy programot, hanem néhány utasítás. Sokan nem ismerik a step(a,b)-t, ahol attól függően, hogy melyik paraméter a nagyobb 1 vagy 0 kerül a vektor komponensébe.
Ezzel az egyszerű utasítással egyszerre 3 IF-et lehet helyettesíteni.Egy bounding box ellenőrzés, ami ennyi lenne:
if(pont.x >=bbox.min.x)
if(pont.y >=bbox.min.y)
if(pont.z >=bbox.min.z)
if(pont.x <=bbox.max.x)
if(pont.y <=bbox.max.y)
if(pont.z <=bbox.max.z) OKEennyire redukálódik:
float3 e=step(bbox.min, pont) + step(pont,bbox.max)
e.x=e.x+e.y+e.z
if(e==6) OKEA futási idő sokkal rövidebb.
Egy raytracelt sugár és egy bounding box metszéspontját pedig így kapjuk meg a legrövidebben:
bbox.minmax=lerp(bbox.min,bbox.max,ray_orientation)
float3 e=(bbox.minmax-eye)/ray
float u=max(e.x,max(e.y,e.z))Az első sor meghatározza, hogy a sugár a boxot melyik oldalról fogja eltalálni. A második EGYSZERRE számolja a box eye felé eső 3 oldalának a távolságát. Mivel mind egyenként egy-egy skalárművelet lenne, így egy időben elvégezhető a három egyszerre. A harmadik sor meghatározza, hogy melyik metszéspont van a legtávolabb. Ez kell nekünk, ebből kiszámítható az a pont, ahol a sugár metszi a boxot.
float3 pont=eye+ray*u
Ezután már csak az elején leírt ellenőrzést kell végrehajtani.
Ez így sokkal rövidebb, mint amit a neten általában találsz.
Új hozzászólás Aktív témák
- PlayStation 5
- Elektromos autók - motorok
- Hobby elektronika
- Visszaengedi Kínába az NVIDIA H200-at a Trump-adminisztráció
- One otthoni szolgáltatások (TV, internet, telefon)
- Vezeték nélküli fülhallgatók
- Milyen belső merevlemezt vegyek?
- Milyen Android TV boxot vegyek?
- Azonnali fáradt gőzös kérdések órája
- World of Tanks - MMO
- További aktív témák...
- DJI Air 3 drón szett - telefonos távirányítóval
- Xiaomi 13T Magánszemélytől Garanciával
- ASUS ROG PG39WCDM Ívelt Gamer Oled Monitor!39"/2k ultrawide/240hz/0,03ms/Gsync-Freesync/Type-C/!
- Akciós! Makulátlan MacBook Pro 16" i9 16GB 1TB 5500M asztro szürke részletek a leírásban.
- UF Lenovo Yoga 9i x360 Érintős Hajtogatós Laptop Tab 14" -50% i7-1360P 16/1TB Iris Xe 2,8K OLED 90Hz
- Gamer PC-Számítógép! Csere-Beszámítás! R5 5500 / RX 6700XT 12GB / 32GB RGB DDR4 / 1TB SSD
- DOKKOLÓ BAZÁR! Lenovo, HP, DELL és egyéb más dokkolók (TELJES SZETTEK)
- GYÖNYÖRŰ iPhone 13 Mini 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS4174, 94% Akkumulátor
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Lenovo Thunderbolt 3 kábel (4X90U90617)
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi

