-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.n
eostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Content-Type: text/plain; charset=iso-8859-2; format=flowed; delsp=yes
Newsgroups: pl.comp.programming
Subject: Re: simple ray tracing
References: <6...@s...googlegroups.com>
<j8btf4$hv5$1@node2.news.atman.pl>
<f...@n...googlegroups.com>
<j8dgas$474$1@node2.news.atman.pl>
<c...@a...googlegroups.com>
<4...@p...googlegroups.com>
<j8e70u$5vh$1@inews.gazeta.pl> <o...@a...home>
<j8ejfl$c33$1@inews.gazeta.pl>
Date: Fri, 28 Oct 2011 18:30:53 +0200
MIME-Version: 1.0
Content-Transfer-Encoding: Quoted-Printable
From: "Jordan Szubert" <u...@j...us.to>
Organization: HELL inc.
Message-ID: <o...@a...home>
User-Agent: Opera Mail/11.52 (Win32)
Lines: 111
NNTP-Posting-Host: 83.26.226.70
X-Trace: 1319819457 unt-rea-a-01.news.neostrada.pl 2187 83.26.226.70:11453
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.comp.programming:193252
[ ukryj 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
- 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
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-10-18 Marsz niepodleglosci
- 2024-10-18 Pożar parkingu w Luton
- 2024-10-18 Łódź => Spedytor Międzynarodowy <=
- 2024-10-18 Gdańsk => Technical Lead ( (Java Background)) <=
- 2024-10-18 Warszawa => Head of International Freight Forwarding Department <=
- 2024-10-18 uwazajmy na haczyki w umowach
- 2024-10-18 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2024-10-18 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-10-18 Gdańsk => Software .Net Developer <=
- 2024-10-18 Warszawa => Junior Rekruter <=
- 2024-10-18 Warszawa => Key Account Manager <=
- 2024-10-18 Przeróbka na zgrzewarkę "równoległą"
- 2024-10-18 Ostrów Wielkopolski => Laravel PHP Developer <=
- 2024-10-18 Warszawa => Data Scientist / Data Engineer (modele predykcyjne) <=
- 2024-10-18 doładowania 5zł