-
Data: 2011-10-28 16:30:53
Temat: Re: simple ray tracing
Od: "Jordan Szubert" <u...@j...us.to> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dnia 28-10-2011 o 17:58:46 <f...@g...pl> napisał(a):
> Dnia 28-10-2011 o 14:26:07 <f...@g...pl> napisał(a):
>
>> kwestia tylko jak dodawac do siebie kolory swiatel?
>
>> ja robie to +- tak:
>
>> light_intensity_from_both_lights=light_intensity_fro
m_light1+light_intensity_
>> from_light2;
>
>> value_to_display=I2D(light_intensity_from_both_light
s)
>
>> float I2D(float i){
>> return pow(i/(i+1.0),1/2.2);//moze i nierealistyczne, ale
>> intensywnosc
>> swiatla jest w zakresie 0-+inf, a wyjscie 0-1
>> }
>
> ok pomysle ew o czyms podobnym, trzababy poczytac troche
> jakiejs dobrej teorii; a jak opisujesz scene? - pewnie
> masz tam jakas funkcyjke do sprawdzania przeciec raya
> z trojkatem albo czyms podobnym, nie masz gdzies pod reka
> aby podrzucic? mysle ze jakbym zrobil jakas prostopadloscienna
> ;wieżę; i swiatlo krążace dookoła niej to mógłby sie może
> rzucać fajny cień i moze fajnie by wygladało
w tym potworku co se klecilem, i ktory paro-obiektowa scene renderuje do
320x240 w 15s na 3 watkach obliczeniowych na i5 2410M, mam w tym stylu:
//pseudokod podobny do C#
struct V3{ float x,y,z; }
struct I3{ float r,g,b; }//intensywnosc swiatla, licznosc fotonow
struct Ray{ V3 start,dir; }
struct Pair<T1,T2>{
T1 f;
T2 s;
}
delegate Pair<I3,Pair<Ray,I3>[]> Continuation();
interface Element{
Pair<float,Continuation>? Intersect(Ray r);
}
struct PointLight{
V3 location;
I3 intensity;
}
class Scene{
Element[] elemets;
PointLight[] lights;
Camera cam;
}
IMO najciekawszym kawalkiem jest interfejs Element:Intersect zwraca null,
jesli polprosta Ray nie przecina obiektu, w przeciwnym wypadku pierszym
element pary, okresla ze przeciecie
wystepuje w ,,momencie'' t, czyli punkt preciecia jest w start+t*dir,
drugi element pary to to funkcja zwracajaca pare: ile swiatla leci do
kamery z zrodel swiatla po odbiciu/rozproszeniu, zas drugi element to
tablica par: promienie potomne i przez co zalezy przemnozyc ich
intensywnosc (dzieki temu mozliwe bedzie zaimplementowanie lusta
polprzepuszcalnego jako klasy implementujacj interfejs Element, jakos +-
tak:
class PolLustro{
V3 N();//normalna
Pair<float,Continuation>? Intersect(Ray r){
if(nie ma przeciecia)
return null;
t=...;//
return new Pair(t,()=>{
rd=reflect(r.dir,N());
X=r.start+r.dir*t;
return new Pair(new I3(0,0,0),new Pair<Ray,I3>[]{
new Pair<Ray,I3>(new Ray(X,r.dir),new I3(0.5,0.5,0.5)),//promien
przepuszczony
new Pair<Ray,I3>(new Ray(X,rd),new I3(0.5,0.5,0.5)),//promien odbity
});
});
}
}
trojkatow akurat nie mam, Elementy tu nieskonczona szachownica,
prostopadloscian rownolegly do osi X,Y,Z, sfera, elipsa i portal: para
rownoleglobokow, jak promien trafia w jeden z nich, to promien potomny
wylatuje z drugiego...
konkretna implementaja nie bede na razie straszyl...
--
Jordan Szubert
Następne wpisy z tego wątku
- 28.10.11 18:56
- 28.10.11 19:38 Jordan Szubert
- 28.10.11 20:58
- 28.10.11 21:22 Wojciech \"Spook\" Sura
- 28.10.11 22:18
- 29.10.11 04:22 Jacek
- 29.10.11 07:32 Karol Y
- 29.10.11 07:34
- 29.10.11 07:59
- 29.10.11 08:19
- 29.10.11 10:16
- 29.10.11 12:52
- 30.10.11 14:00 Jacek
- 30.10.11 14:43
- 30.10.11 14:48 Jacek
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2025-01-06 śnieg
- 2025-01-05 Żarówka do lampy z czujnikiem ruchu
- 2025-01-05 Rozkręcają się
- 2025-01-04 pozew za naprawę sprzętu na youtube
- 2025-01-04 gasik
- 2025-01-04 13. Raport Totaliztyczny: Powszechna Deklaracja Praw Człowieka Nie Chroni Przed Wyzyskiem Ani Przed Eksploatacją
- 2025-01-04 Zbieranie danych przez www
- 2025-01-04 reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- 2025-01-04 w Nowym Roku 2025r
- 2025-01-04 Warszawa => Specjalista ds. IT - II Linia Wsparcia <=
- 2025-01-04 Warszawa => Java Developer <=
- 2025-01-04 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-04 Warszawa => System Architect (Java background) <=
- 2025-01-04 Wrocław => Application Security Engineer <=
- 2025-01-04 Chrzanów => Specjalista ds. public relations <=