Raytracing - the new helloworld

Post on 12-Apr-2017

139 views 1 download

Transcript of Raytracing - the new helloworld

ХристоЛесевRaytracing - новиятhelloworld

Raytracing – новиятhelloworldХристоЛесевDiaDraw.com

ХристоЛесевRaytracing - новиятhelloworld

$whoami

Живееидиша компютърна графика.

DiaDrawWe help developers build cross-platform applications.

ХристоЛесев

Съоснователна

ХристоЛесевRaytracing - новиятhelloworld

Raytracing 101

ХристоЛесевRaytracing - новиятhelloworld

Нуждаотреалистичниизображения

ХристоЛесевRaytracing - новиятhelloworld

Филми,архитектура,рекламииоще...

ХристоЛесевRaytracing - новиятhelloworld

Снимка или CG?

ХристоЛесевRaytracing - новиятhelloworld

Успяхте ли да ги разпознаете?

Photo Photo

PhotoCG

CG

CG

ХристоЛесевRaytracing - новиятhelloworld

Нуждаиотнереалистичниизображения

ХристоЛесевRaytracing - новиятhelloworld

Койикакгенерираизображения?

ХристоЛесевRaytracing - новиятhelloworld

Рендерътпревръщаописаниетонагеометриятанасценатаинейнитесвойствавизображение

ХристоЛесевRaytracing - новиятhelloworld

Каксеслучвавприродата?

ХристоЛесевRaytracing - новиятhelloworld

Изстрелвамелъчипрезизображението

ХристоЛесевRaytracing - новиятhelloworld

Лъчитеопределят,каквовиждавсекипиксел

ХристоЛесевRaytracing - новиятhelloworld

Намираненапресечнитеточкиналъчсобектиотсцената• Избираменай-близкатапресечнаточкадоначалотоналъча

1

2

3

ХристоЛесевRaytracing - новиятhelloworld

Изборнановапосоказапродължаваненапътя• Посокатанановиялъчсеопределяотматериаланаобекта

ХристоЛесевRaytracing - новиятhelloworld

Достиганедосветлиненизточник• Стремимседадостигнемдообект,зареденсъссветлиннаенергия

ХристоЛесевRaytracing - новиятhelloworld

“Бомбардираме”сценатаслъчи• Нужнисамилиардилъчи,загенерираненакрасивакартинка

ХристоЛесевRaytracing - новиятhelloworld

Щесподеляеднаистория

ХристоЛесевRaytracing - новиятhelloworld

Далечната92-ра

ХристоЛесевRaytracing - новиятhelloworld

Далечната92-ра

ХристоЛесевRaytracing - новиятhelloworld

Начинаещпрограмистилиискамданаучановатехнология:

Откъдедазапочна?

ХристоЛесевRaytracing - новиятhelloworld

Намирамеподходящпримеризапочвамедакодираме

ХристоЛесевRaytracing - новиятhelloworld

Класикатавtutorials жанра:Програма заподдръжка накнижна библиотека

ХристоЛесевRaytracing - новиятhelloworld

Тайнатанапрограмиста

ХристоЛесевRaytracing - новиятhelloworld

Изисквания:илиоткаквосевълнувабиблиотекарят• Дазаписваиизтривакнига• Датърсикнигипозаглавие,автор,ISBN….• Нямамникаквапредставаоткакводруго???• Можебиотгодишнатасбирканабиблиотекарите?

ХристоЛесевRaytracing - новиятhelloworld

Изисквания:откаквосевълнувапрограмистът• Какдаседокоснадоповечеаспектиотизбранитетехнологии?• Какдасипострояархитектурата?Каквищесамодулите?• Какщепредавамданнимеждуотделнитемодули?• ТрябвалидаползвамDB ?• Какъвщееинтерфейсът– web,native,console?• Можелидаеразпределено,многонишково,ит.н.?• Идруги...

ХристоЛесевRaytracing - новиятhelloworld

или

Каквоепо-леснодасинаправим?

ХристоЛесевRaytracing - новиятhelloworld

Отбазовитеизисквания...

1. Двигателсвитло– придвижвасамолетанапред2. “Крила”– подемнасилаиуправление3. Колесник – задаимавтороизлитане

1 2

3

ХристоЛесевRaytracing - новиятhelloworld

...докомплекснатасистема

ХристоЛесевRaytracing - новиятhelloworld

Raytracer – самолетътвпрограмирането

100редаC++ ChaosGroup V-Ray

ХристоЛесевRaytracing - новиятhelloworld

Raytracing в99редаC++код

• smallpt – KevinBeason• Сценаизграденаизцялоотсфери• Глобалноосветяване!!!• Тривидаматериали

– Дифузен– Отражателен– Прозрачен

ХристоЛесевRaytracing - новиятhelloworld

Raytracing в99редаC++код

ТримеренвекторицвятVec

Ray

Sphere

MAINintersectradiance

Лъч

Геометриченобект,пресичанеслъч

УправлениенасценаПресмятаненаглобалнотоосветяване

ХристоЛесевRaytracing - новиятhelloworld

Първотонещо,коетотрябвадасиприпомним

ХристоЛесевRaytracing - новиятhelloworld

Безкрайнитечасовематематикавуниверситета• Вектори• Матрици• Цветоваалгебра– цветовипространства• Геометрия• Статистика• Числениметоди• Дискретнаматематика

ХристоЛесевRaytracing - новиятhelloworld

“Клиентски”изискваниякъмraytracer-a1. Даподдържаголямнаборотобектииматериали

2. Дабъдебърз

ХристоЛесевRaytracing - новиятhelloworld

1.Голямнаборотобектииматериали

ХристоЛесевRaytracing - новиятhelloworld

Голямнаборотобектииматериали• Приличнасофтуернаархитектура• Изгражданенайерархия• Понятиезасцена• Парсър насцена• Разделяненаалгоритъмаотданните• Плъгини

Geometry

Sphere TriangleMesh

Material

BRDF

ХристоЛесевRaytracing - новиятhelloworld

2.Скорост

ХристоЛесевRaytracing - новиятhelloworld

Ускорителниструктури• Геометричнибазиотданни• Търсеневпространството,заявки:

– Intersect– Rangesearch

• Идватвъввсякаквиразновидности:– Kd-tree,BVH,Octree,BSP,Grid,…....

ХристоЛесевRaytracing - новиятhelloworld

Ощескорост...

ХристоЛесевRaytracing - новиятhelloworld

Паралелнотрасиранес“нишки”

• Raytracing– синонимзапаралеленалгоритъм

• Всяка“нишка”работисданнитенасцената,нопресмятарезултатиотразличнилъчи

ХристоЛесевRaytracing - новиятhelloworld

Ощеповеческорост...

ХристоЛесевRaytracing - новиятhelloworld

Пресмятаненачастиоткартинкатанадругимашини• Мрежовакомуникация• Предаваненасценатаиресурси• Връщаненачастотизображението• Сглобяваненацялотоизображение

ХристоЛесевRaytracing - новиятhelloworld

Practicewhatyoupreach

ХристоЛесевRaytracing - новиятhelloworld

Пример1

ХристоЛесевRaytracing - новиятhelloworld

Пример1:Node.js +C++

smallpt.cpp

WebSockets

Webbrowser

Async callback

ХристоЛесевRaytracing - новиятhelloworld

Пример2

ХристоЛесевRaytracing - новиятhelloworld

Пример2:js raytracing,изцяловбраузър

worker

Webbrowser

worker worker

raytracer

scene

raytracer

scene

raytracer

scene

ХристоЛесевRaytracing - новиятhelloworld

Пример3

http://diadraw-rt.herokuapp.com

ХристоЛесевRaytracing - новиятhelloworld

Пример 3:разпределенraytracing

Webbrowser

Monitor

Webbrowser

Rendernode

w w w w w

Webbrowser

Rendernode

w w w w w

Webbrowser

Rendernode

w w w w w

WebSockets

WebSo ckets

ХристоЛесевRaytracing - новиятhelloworld

Demos’Repo

https://github.com/hlesev?tab=repositories