Zabawy z fotonami

08.03.2009 14:19 in grafika 3D

gm1.jpg
gm2.jpggm3.jpggm4.jpg

Rainbox Raytracer

Kilka przemyśleń:

  • niestety Photon Mapping za żadne skarby nie chce działać na obecnym sprzęcie w czasie rzeczywistym ;)
  • raytracing można zaimlementować na GPU na tyle wydajnie, żeby za 2-3 generacje kart graficznych można było skorzystać z niego w większości gier
  • niestety raytracing sam z siebie nie jest cudownym środkiem na fotorealizm - mimo wszystko nie uwzględnia oświetlenia globalnego, przez co w sumie jego przewaga na rasteryzacją polega jedynie na:
    • odbicia i załamania - tutaj RT daje nam oczywiście możliwość zabawy z materiałami, pytanie czy jest to bardzo przydatne (płaskie materiały odbijające można załatwić dodatkowym renderowaniem, a większość "powyginanych" obiektów da się zrobić statyczną cubemapą - w większości przypadków gracz nie zauważy różnicy)
    • nie musimy się martwić o kolejność przezroczystych obiektów na scenie
    • możemy używać powierzchni dających się opisać wzorem, z pominięciem dzielenia na trójkąty. W gruncie rzeczy jest to fajna sprawa, bo znacząco zmniejsza rozmiary modeli 3D przy doskonałej jakości w dowolnych rozdzielczościach. Trzeba by jednak zmienić podejście grafików do modelowania i sposób pracy z softem do modelowania 3D
    • raytracing można bardzo łatwo zrównoleglić na dowolną ilość procesorów (w przeciwieństwie do rasteryzacji)

W najbliższym czasie postaram się wydać małe RTRT-demo. :)

Comments:

  1. Gynvael Coldwind

    Gynvael Coldwind:

    Fajnie wyglądają screeny ;> Inspirujące ;>

    Btw, rasteryzacje też można bardzo łatwo zrównoleglić (imo), przecież jest to zrobione w kartach graficznych. Natomiast owszem, przyznaje, że większość z tego zrównoleglenia to sprawa shaderów, ale samo rzutowanie pozycji trójkątów 3D->2D też się da zrobić (z pewnymi rozwiązywalnymi problemami, ale to chyba eliminuje wyrażenie klucz - "bardzo łatwo" ;>).
    Chyba że chodzi ci o coś innego ;>

    08.03.2009 17:48:25

  2. Tomasz Dąbrowski

    Tomasz Dąbrowski:

    Generalnie mam na myśli wyższy stopień równoległości - nie na poziomie shaderów, tylko całych kart. W przypadku rasteryzacji nie jest to tak proste, bo chcąc rozbić ją na 2 wątki (albo i więcej) najpierw i tak musisz przetworzyć trójkąty, a potem mając je już w Screen Space możesz dopiero je dzielić na wątki (+ problem trójkątów należących do obu "połówek" jednocześnie). Nie mówię, że jest to awykonalne, ale nie jest też trywialne. Dlatego rozwiązania typu SLI nie dają wzrostu 2x wydajności (czasem wzrost jest minimalny).

    Natomiast klasyczny raytracing wypada pod względem zrównoleglania po prostu perfekcyjnie. Masz kilka wątków i każdemu po prostu przypisujesz pewien fragment ekranu. Każdy fragment jest kompletnie niezależny od innych.

    08.03.2009 19:41:26

  3. revo

    revo:

    Mógłbyś chociaż napisać ile ten photon mapping jest wolniejszy w stosunku do zwykłego raytracingu (skoro nie w czasie rzeczywistym, to domyślam się, że conajmniej kilkusetkrotnie) ;)

    08.03.2009 21:54:45

  4. Tomasz Dąbrowski

    Tomasz Dąbrowski:

    Obrazek na górze po prawej liczy się kilka-kilkanaście sekund. A przecież nie jest to jeszcze jakość, która zwala z nóg. ;)

    08.03.2009 22:54:13

  5. Riddlemaster

    Riddlemaster:

    Dab: no to Ci powiem, że coś robisz źle ;) Bo takie i lepsze (chodzi mi o efekt końcowy) implementacje były już robione w Real-Time.

    Ale tak jak gdzieś napisałem. Photon-mapping teraz to można co najwyżej do kaustyk używać (bo daje lepsze wyniki niż ray-tracowane w shaderze). Oczywiście przy założeniu że fotonów jest mało.

    10.03.2009 11:48:01

  6. Riddlemaster

    Riddlemaster:

    Co oczywiście nie zmienia faktu, że wygląda zacnie :)

    10.03.2009 14:32:49

  7. Tomasz Dąbrowski

    Tomasz Dąbrowski:

    Riddlemaster: Nie wątpię, że da się zrobić to dużo, dużo lepiej. ;) Ale tak czy inaczej, o ile RTRT w hires ze skomplikowaną sceną jest realny, to sądzę, że PM wysokiej jakości jeszcze długo będzie poza zasięgiem normalnego sprzętu.

    10.03.2009 15:01:56

Leave comment: