программы-инструменты, которыми я пользуюсь большую часть дня:
Notepad++
Denwer
Яндекс.браузер(из него и пишу)
Delphi 2006 lite
Visual C++ 2010
Intel C++ compiler
и реже, без сортировки по какому-то критерию:
Open Server
Firefox
Chrome
Opera 12.16
Open Office
Corel_DRAW_X4 + photoshop 7 (portable editions)
PhotoshopPortable-cs6
Adobe.Illustrator.Portable.CS6-PortableApps.com
Fireworks MX
Delphi 6
Visual C++ 6(для компиляции старых, но неплохих исходников типа vaahtokarkit и WinOsi)
Visual C++ 2013
MinGW/Msys/gcc 4.8.1
Keyshot 5
Maxwell Renderer
3ds max 2016 student
cinema4d
blender
vray
cycles
corona
воскресенье, 6 декабря 2015 г.
среда, 25 ноября 2015 г.
new todo
- lazarus opengl window
- create
- draw
- frustrum culling
- lazarus mouse и клавиатура как в играх - управление сценой
- obj load
fast load
24 nov 15hashingдобработать имеющуюся реализацию с adler32parsestore in memmats
18.03.2016
- MNEE
- qbvh scene, tris
- hdr, ibl
понедельник, 16 ноября 2015 г.
листая старые уроки, листинги
- blob primitive
- procedural textures
- normal mapping
- skybox(6 изображений на каждой поверхности куба)
http://www.massal.net/article/raytrace/page4.html
воскресенье, 15 ноября 2015 г.
что можно взять у психопата
BBox4 - sse _mm_movemask_ps
LightTree
обьекты bicubic, bilinear, micro_surface
самплинги halton, sobol
работа с цветом
психопат - https://github.com/cessen/psychopath
LightTree
обьекты bicubic, bilinear, micro_surface
самплинги halton, sobol
работа с цветом
психопат - https://github.com/cessen/psychopath
среда, 4 ноября 2015 г.
delphi again!
сегодня прочел, что на Delphi можно использовать SSE - SSE в D7 / Форум / Дельфинарий (Delphi, FreePascal) / Сообщества / GameDev.ru — Разработка игр
буду первым, кто перепишет qbvh на delphi ;-)
буду первым, кто перепишет qbvh на delphi ;-)
пятница, 30 октября 2015 г.
simple adaptive antialias pass
- просмотреть все соседние пикселы(если 0 по х, сравнить с пикселом сверху)
- сравнение пикселов
- по каждой из x, y, z получить коэффициент отличия = min(x1,x2)/max(x1,x2)
- если этот коэффициент > константы макс. отличия(0.3 например), то установить флаг необходимости антиалиазинга и прервать цикл по x, y, z
- расчет точек углов, в которых затем усредняется делением на 4 получившиеся цвета в субпикселах, Java:
float xScale = scene.viewWidth / width;
float yScale = scene.viewHeight / height;
float left = (x - 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * xScale; //(0.8 .. 1.1)/4 = 0.2 .. 0.275
float right = (x + 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * xScale;
float above = (y - 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * yScale;
float below = (y + 0.25f*(1.1f-rndrnd.getFloat()*0.3f)) * yScale;
среда, 28 октября 2015 г.
bidirectional path tracing и ускорения
на основе https://github.com/githole/edubpt можно потестировать некоторые ускорения для bidirectional path tracing:
- Probabilistic Connections for Bidirectional Path Tracing
http://www.researchgate.net/figure/280603062_fig2_Figure-1-Our-Probabilistic-Connections-for-Bidirectional-Path-Tracing-approach -
Reducing the number of shadow rays in bidirectional path tracing
http://graphics.cs.kuleuven.be/publications/RTNOSRIBPT/
- Robust Adaptive Photon Tracing using Photon Path Visibility
http://cs.au.dk/~toshiya/amcmcppm.pdf - A Path Space Extension for Robust Light Transport Simulation
http://cs.au.dk/~toshiya/ups_tr.pdf
о distributed ray tracing и процедурных текстурах из старой книги
что сделано на сейчас
- взял чтение obj из akari2 и ускорил его в 2 раза. разбивка на фразы - strtok, затем токенизация в int с помощью adler32 и бинарный поиск. парсер obj легко расширяется новыми лексемами
- vcm. нашел, как, регулируя количество ligthing paths, сделать рендер более bpt или sppm-based. эта настройка также делает рендеры более или менее быстрыми. меняется от этой настройки и количество шума. нужно еще поработать с нею, т.к. картинки получаются временами более тёмными. что-то не то с делением на количество реально обработанных ligthing paths
- читаю исходники своего java renderer и беру оттуда работу с adaptive antialias
1/4
1/2
с adaptive antialias
to do
говорят, списки очень мотивируют на более быстрое воплощение мечты.
потому как получается визуально.
буду зачеркивать готовые пункты и писать дату и коментарии.
итак:
потому как получается визуально.
буду зачеркивать готовые пункты и писать дату и коментарии.
итак:
- 1/4, 1/2 превью, simple adaptive antialias pass
- obj чтение
- сделать фиксированный буфер (64kb)
- чтение формата сделать более полным
- qbvh для всей сцены
- чтение сцены
- текстуры и материалы
- текстуры
- процедурные материалы
- opengl работа с мышью
в simplemlt оптимизировать Color direct_radiance_sample() ибо очень ужасно выглядит
моя версия simplemlt https://github.com/tigrazone/simple-mlt/blob/master/simplemlt.cpp
четверг, 2 июля 2015 г.
vcm. небольшое ускорение
выдалась свободная минутка и я окинул взором свою версию реализации VCM.
нашёл несколько мест, где можно упростить алгебраически формулы, запоминать часто встречающиеся расчеты.
вышло 5% прироста, что я считаю неплохим результатом для быстрых и простых оптимизаций.
старый вариант
новый вариант
нашёл несколько мест, где можно упростить алгебраически формулы, запоминать часто встречающиеся расчеты.
вышло 5% прироста, что я считаю неплохим результатом для быстрых и простых оптимизаций.
старый вариант
новый вариант
вычислял ускорение исходя из количества просчитаных лучей за одинаковое время 186 секунд.
в первом варианте 7,89+7,86=15,75
во втором варианте 8,32+8,29=16,61
15,75/16,61=0,9482239614689946. если эту цифру отнять от 1, то выйдет 0,05177, то есть чуть больше 5%.
в первом варианте 7,89+7,86=15,75
во втором варианте 8,32+8,29=16,61
15,75/16,61=0,9482239614689946. если эту цифру отнять от 1, то выйдет 0,05177, то есть чуть больше 5%.
четверг, 18 июня 2015 г.
Keleman-style Metropolis light transport - simplemlt by hole/githole
https://github.com/githole/simple-mlt/blob/master/simplemlt.cpp
мои изменения https://github.com/tigrazone/simple-mlt/blob/master/simplemlt.cpp дали небольшое ускорение.
надо будет прицепить этот тип мутаций луча для vertex connection and merging
мои изменения https://github.com/tigrazone/simple-mlt/blob/master/simplemlt.cpp дали небольшое ускорение.
надо будет прицепить этот тип мутаций луча для vertex connection and merging
воскресенье, 10 мая 2015 г.
воскресенье, 19 апреля 2015 г.
mt_rand vs xorshift
слева - mt_rand, справа - xorshift
mt_rand не такой быстрый, как xorshift - это 2 алгоритма для генерации псевдослучайных чисел.
переписал на Pascal реализацию xorshift с http://stackoverflow.com/questions/13213395/adjusting-xorshift-generator-to-return-a-number-within-a-maximum/13533895
понедельник, 30 марта 2015 г.
как я пишу свой рендер
Источниками воплощенных идей для меня были:
- Dart Renderer от David Cline, создателя алгоритма ERPT(Energy redistribution path tracing). В исходниках этого рендера я нашёл воплощение Metropolis Light Transport и, экспериментируя со случайными последовательностями и находя в последовательностях закономерности, вывел возможность настраивать Metropolis Light Transport для скорости и точности. Написан на с++.
- Progressive Path Tracer от Bacterius. Реализация алгоритма Progressive Path Tracer на Delphi. Исходный вариант программы я переделал, ускорив расчеты сфер, треугольников, плоскостей, изменил интерфейс, добавил тоновую коррекцию. Также добавил реализацию importance sampling.
- SmallVCM от Tomáš Davidovič. Реализация замечательного алгоритма Vertex connection and merging, который уже реализован в рендерах Corona и Vray. Я добавил вывод изображения в окне с помощью библиотеки fltk, оптимизировал алгоритмы пересечения луча и сфер, треугольников, сделал более частое обновление и более быстрое отображение изображения. Планирую ускорить с помощью реализации ускорителя пересечения луча с обьектами сцены Bounding interval hierarchy из следующего в списке рендера. Написан на с++.
- SunFlow от Christopher Kulla. Хороший рендер с реализацией photon mapping, path tracing, множеством обьектов и материалов, ускорителями пересечения луча со сценой kd-tree и bounding interval hierarchy. Написан на java.
- Реализация Stochastic progressive photon mapping для GPU с поддержкой glossy-материалов, спектральным рендерингом и Motion Blur. Написан на с++. http://www.bee-www.com/gpusppm2.zip
- и остальные списком: Arauna, WinOsi, Pane, R.I.S.E., Mitsuba
На скриншоте - результат моей реализации SmallVCM после 1 часа 55 минуты. На фоне открыто окно браузера с сайтом www.bee-www.com с результатом Stochastic progressive photon mapping для GPU
Не сложно догадаться, что мой рендер будет включать в себя и GPU-версию и Vertex Connection and Merging с Metropolis Light Transport на этапе генерации лучей из источников света. И всё это с оптимизациями и удобствами!
пятница, 23 января 2015 г.
Bounding Interval Hierarchy source code from Sunflow
да продлятся многократно годы счастливой жизни Кристофера Кулла!
https://github.com/fpsunflower/sunflow/blob/master/src/org/sunflow/core/accel/BoundingIntervalHierarchy.java
https://github.com/fpsunflower/sunflow/blob/master/src/org/sunflow/core/accel/BoundingIntervalHierarchy.java
пятница, 9 января 2015 г.
суббота, 3 января 2015 г.
Подписаться на:
Сообщения (Atom)