Upload
hristolesev
View
141
Download
1
Embed Size (px)
Citation preview
ХристоЛесев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