The raytracing algorithm plays key role in generating photorealistic graphics for ads, movie productions, architectural visualisations and etc. This presentation will show how we can build a raytracer starting from a 100 lines of code and turning it to a feature complete system. We will show how the development process can help the developer to learn new technology. Several raytracers are demoed. The demos are written in node.js and typescrypt and work in a webbrowser.
26. Христо ЛесевRaytracing - новият helloworld
Изисквания: от какво се вълнува програмистът
• Как да се докосна до повече аспекти от избраните технологии?
• Как да си построя архитектурата? Какви ще са модулите?
• Как ще предавам данни между отделните модули?
• Трябва ли да ползвам DB ?
• Какъв ще е интерфейсът – web, native, console?
• Може ли да е разпределено, многонишково, и т.н. ?
• И други...
31. Христо ЛесевRaytracing - новият helloworld
Raytracing в 99 реда C++ код
• smallpt – Kevin Beason
• Сцена изградена изцяло от сфери
• Глобално осветяване !!!
• Три вида материали
– Дифузен
– Отражателен
– Прозрачен
32. Христо ЛесевRaytracing - новият helloworld
Raytracing в 99 реда C++ код
Тримерен вектор и цвятVec
Ray
Sphere
MAIN
intersect
radiance
Лъч
Геометричен обект, пресичане с лъч
Управление на сцена
Пресмятане на глобалното осветяване
50. Христо ЛесевRaytracing - новият helloworld
Пример 3: разпределен raytracing
Web browser
Monitor
Web browser
Render node
w w w w w
Web browser
Render node
w w w w w
Web browser
Render node
w w w w w
WebSockets
WebSo ckets