- взял чтение 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
среда, 28 октября 2015 г.
что сделано на сейчас
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 г.
воскресенье, 9 ноября 2014 г.
суббота, 12 июля 2014 г.
среда, 23 апреля 2014 г.
вторник, 11 марта 2014 г.
пятница, 20 сентября 2013 г.
четверг, 19 сентября 2013 г.
суббота, 7 сентября 2013 г.
Vertex Connection and Merging
алгоритм - оригинальный Vertex Connection and Merging, SmallVCM
время просчёта - 2 часа 13 минут
скачать и попробовать самостоятельно можно отсюда.
генерирует bmp и hdr, который в 32 бит на пикс можно глядеть в фотошопе с профилем по умолч. нагружает все ядра на всю.
bmp любой смотрелкой файлов смотри. файлы обновляются динамически
110 кб ;)
пятница, 30 августа 2013 г.
немного новостей и обновление
- заменил стандартный генератор случайных чисел rand() на подвид mtrand() [1]. это улучшило качество сходимости картинки и картинка выглядит более гладкой. разброс лучей стал более однородным
- в статистику добавил количество лучей в секунду
- реализовал гибридный метод просчёта, с помощью которого можно просчитывать картинку с помощью смеси алгоритма Дэвида Клейна и моей модификации, дающей более разбросанные лучи, в этом гибридном методе многие параметры можно настраивать
- добавил возможность динамически менять тактику принятия решения abso алгоритм или old
- выбросил ненужные части программы, размер исполняемого файла уменьшился на 50 кб
- начал работу по переходу на kd-tree, которое ускорит работу примерно в 2 раза
- необходим переход на многопоточную модель вычислений, что даст более сильную загрузку процессоров (сейчас доходит до 50%)
время просчёта - 15 минут
Ссылки:
mt19937.c Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura.для сравнения - картинка, просчитаная в течении 15 минут на том же компьютере, но без изменений сегодняшних
скачать и попробовать можно отсюда. после распаковки архива в отдельную папку запустите d2.bat и в распакованной папке любым просмотрщиком картинок смотрите, как меняется сгенерированная картинка
понедельник, 26 августа 2013 г.
четверг, 18 апреля 2013 г.
новая стратегия для моего экспериментального рендерера - new strategy for my new renderer
Я придумал новую стратегию разброса лучей. Это дало более массовое покрытие сцены лучами и увеличение детализации с каждым шагом.
В результате - картинка просчитывается быстро и качественно.

Вот такое посчитал мой старенький ноут с Celeron 540 на частоте 1.8GHz за 6 часов.
Процессор всё это время здорово был загружен около 100%. При этом фактически времени потребовалось для просчёта больше, так как в это всё время я работал на моём многострадальном ноуте, переключаясь из браузера в текстовый редактор и еще фильмы фоном смотрел временами.

Можно скачать для теста 1mb. Распакуйте содержимое архива в отдельную папку. Запускайте d2.bat и любым просмотрщиком картинок оценивайте результаты в файле image.ppm
В результате - картинка просчитывается быстро и качественно.
Вот такое посчитал мой старенький ноут с Celeron 540 на частоте 1.8GHz за 6 часов.
Процессор всё это время здорово был загружен около 100%. При этом фактически времени потребовалось для просчёта больше, так как в это всё время я работал на моём многострадальном ноуте, переключаясь из браузера в текстовый редактор и еще фильмы фоном смотрел временами.
Можно скачать для теста 1mb. Распакуйте содержимое архива в отдельную папку. Запускайте d2.bat и любым просмотрщиком картинок оценивайте результаты в файле image.ppm
воскресенье, 24 марта 2013 г.
вторник, 16 октября 2012 г.
sppm & mlt & sppm+mlt
i want to implement and reimplement:
stochastic progressive photon mapping
metropolis light transport
hybride stochastic progressive photon mapping with metropolis light transport
document to read: Improved Stochastic Progressive Photon Mapping with Metropolis Sampling
Jiating Chen, Bin Wang, and Jun-Hai Yong
School of Software, Tsinghua University
Computer Graphics Forum, volume 30, Number 4 (Proceedings of the EGSR2011), to appear.
stochastic progressive photon mapping
metropolis light transport
hybride stochastic progressive photon mapping with metropolis light transport
document to read: Improved Stochastic Progressive Photon Mapping with Metropolis Sampling
Jiating Chen, Bin Wang, and Jun-Hai Yong
School of Software, Tsinghua University
Computer Graphics Forum, volume 30, Number 4 (Proceedings of the EGSR2011), to appear.
пятница, 20 июля 2012 г.
вторник, 21 февраля 2012 г.
RISE - Realistic Image Synthesis Engine
Программа R.I.S.E. предназначена, в первую очередь, для исследователей, занимающихся моделированием природных явлений. Однако она может пригодиться и художникам для генерирования неповторимых изображений. Еще одна возможная область применения R.I.S.E. - обучение. Надежный, прозрачный и выверенный исходный код программы будет полезно изучить желающим ознакомиться с основами отрисовки изображений и трассировки лучей.
What is R.I.S.E.?
R.I.S.E., which stands for Realistic Image Synthesis Engine is a state of the art engine and framework for the simulation and realistic image synthesis of natural phenomenon based on physics, biology and chemistry.
What R.I.S.E. is not.
R.I.S.E. is not meant to be a competitor to commercially avaiable ray tracing engines such as Brazil, finalRender, or v-ray. It is definitely not meant to be a competitor to scanline renderers or micro-polygon tesselating engines such as Pixar's RenderMan. R.I.S.E. is not meant to be a tool to be used by a studio to produce content for time-critical projects. It is not meant to be an alternative to other open source renderers such as Aqsis, Pixie or POVRay.
Who is R.I.S.E. for?
R.I.S.E. is primarily intended for researchers involved in the simulation of natural phenomenon. However, artists should be able to use R.I.S.E. to generate compelling images as long as they aren't afraid to get their hands a little dirty (and have massive CPU cycles to spare).
Another primary focus of R.I.S.E. is to provide code that is lucid, readible and correct so that people who want to learn the fundamentals of physically-based rendering and ray tracing have something to learn from.
http://rise.sourceforge.net
среда, 21 декабря 2011 г.
winosi, caustics, spectral in 3h 30 min on my crappy celeron 1.8ghz
5 mill photons per pass
real photons traced ~190 mill per pass
понедельник, 18 октября 2010 г.
Подписаться на:
Сообщения (Atom)








