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

Raytracing - the new helloworld

Embed Size (px)

Citation preview

Page 1: Raytracing - the new helloworld

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

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

Page 2: Raytracing - the new helloworld

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

$whoami

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

DiaDrawWe help developers build cross-platform applications.

ХристоЛесев

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

Page 3: Raytracing - the new helloworld

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

Raytracing 101

Page 4: Raytracing - the new helloworld

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

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

Page 5: Raytracing - the new helloworld

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

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

Page 6: Raytracing - the new helloworld

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

Снимка или CG?

Page 7: Raytracing - the new helloworld

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

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

Photo Photo

PhotoCG

CG

CG

Page 8: Raytracing - the new helloworld

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

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

Page 9: Raytracing - the new helloworld

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

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

Page 10: Raytracing - the new helloworld

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

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

Page 11: Raytracing - the new helloworld

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

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

Page 12: Raytracing - the new helloworld

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

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

Page 13: Raytracing - the new helloworld

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

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

Page 14: Raytracing - the new helloworld

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

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

1

2

3

Page 15: Raytracing - the new helloworld

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

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

Page 16: Raytracing - the new helloworld

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

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

Page 17: Raytracing - the new helloworld

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

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

Page 18: Raytracing - the new helloworld

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

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

Page 19: Raytracing - the new helloworld

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

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

Page 20: Raytracing - the new helloworld

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

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

Page 21: Raytracing - the new helloworld

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

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

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

Page 22: Raytracing - the new helloworld

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

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

Page 23: Raytracing - the new helloworld

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

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

Page 24: Raytracing - the new helloworld

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

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

Page 25: Raytracing - the new helloworld

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

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

Page 26: Raytracing - the new helloworld

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

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

Page 27: Raytracing - the new helloworld

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

или

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

Page 28: Raytracing - the new helloworld

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

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

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

1 2

3

Page 29: Raytracing - the new helloworld

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

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

Page 30: Raytracing - the new helloworld

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

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

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

Page 31: Raytracing - the new helloworld

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

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

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

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

Page 32: Raytracing - the new helloworld

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

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

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

Ray

Sphere

MAINintersectradiance

Лъч

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

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

Page 33: Raytracing - the new helloworld

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

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

Page 34: Raytracing - the new helloworld

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

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

Page 35: Raytracing - the new helloworld

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

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

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

Page 36: Raytracing - the new helloworld

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

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

Page 37: Raytracing - the new helloworld

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

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

Geometry

Sphere TriangleMesh

Material

BRDF

Page 38: Raytracing - the new helloworld

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

2.Скорост

Page 39: Raytracing - the new helloworld

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

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

– Intersect– Rangesearch

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

Page 40: Raytracing - the new helloworld

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

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

Page 41: Raytracing - the new helloworld

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

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

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

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

Page 42: Raytracing - the new helloworld

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

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

Page 43: Raytracing - the new helloworld

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

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

Page 44: Raytracing - the new helloworld

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

Practicewhatyoupreach

Page 45: Raytracing - the new helloworld

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

Пример1

Page 46: Raytracing - the new helloworld

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

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

smallpt.cpp

WebSockets

Webbrowser

Async callback

Page 47: Raytracing - the new helloworld

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

Пример2

Page 48: Raytracing - the new helloworld

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

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

worker

Webbrowser

worker worker

raytracer

scene

raytracer

scene

raytracer

scene

Page 49: Raytracing - the new helloworld

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

Пример3

http://diadraw-rt.herokuapp.com

Page 50: Raytracing - the new helloworld

ХристоЛесев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

Page 51: Raytracing - the new helloworld

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

Demos’Repo

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