Tungsten — это физически обоснованный рендерер, изначально написанный для ежегодного конкурса рендеринга в ETH. Он имитирует полный перенос света через произвольную геометрию на основе беспристрастной интеграции уравнения рендеринга. Для этого Tungsten поддерживает различные алгоритмы переноса света, такие как двунаправленная трассировка пути, прогрессивное фотонное картирование, первичный пространственный метаполис переноса света и другие.
Tungsten написан на C++11 и использует высокопроизводительную библиотеку пересечения геометрии Intel embree. Tungsten полностью использует многоядерные системы и старается обеспечить хорошую производительность за счёт частого тестирования и оптимизации. Для запуска рендерера требуется поддержка SSE3.
Документация запланирована, но в настоящее время недоступна (извините!). Подробный обзор функций доступен в финальном отчёте о проекте, написанном как часть заявки на конкурс рендеринга, хотя этот документ может быть устаревшим.
Небольшой выбор примеров сцен можно найти в data/example-scenes. Также есть сцена тестирования материалов, которая находится в data/materialtest и содержит тестовый шар Tungsten, который можно использовать для проверки различных материалов и настроек освещения.
Чтобы предоставить разработчикам как можно больше свободы, Tungsten распространяется под лицензией libpng/zlib. Это позволяет вам изменять, распространять и продавать весь код или его части без указания авторства.
Обратите внимание, что Tungsten включает несколько сторонних библиотек в папке src/thirdparty, которые поставляются со своими собственными лицензиями. Дополнительную информацию см. в файле LICENSE.txt.
Для сборки с помощью MinGW вам потребуется последняя версия CMake + gcc. Дистрибутивы CMake доступны здесь. Я рекомендую использовать MinGW-w64, доступный здесь.
В корневой папке репозитория используйте следующие команды в оболочке MSYS для сборки:
./setup_builds.sh
cd builds/release
make
После сборки двоичные файлы будут помещены в каталог build/release.
При желании вы можете установить фреймворк Qt для создания утилиты редактора сцен. Если во время настройки Qt не будет обнаружен, редактор сцен не будет создан (вы по-прежнему сможете использовать рендерер).
Для сборки с использованием MSVC вам понадобится последняя версия CMake и MSVC 2013. Дистрибутивы CMake доступны здесь.
После установки CMake дважды щёлкните файл setup_builds.bat. Проект MSVC будет создан в папке vstudio. Откройте решение vstudio/Tungsten.sln и нажмите F7 для сборки.
Сборка в Linux работает так же, как сборка в MINGW.
Основной рендерер можно вызвать с помощью
tungsten scene.json
Вы также можете поставить в очередь несколько сцен с помощью
tungsten scene1.json scene2.json scene3.json
и так далее. Все параметры рендерера, включая выходные файлы, указаны в файле json.
Вы можете протестировать свою локальную сборку, визуализировав сцену тестирования материалов в data/materialtest/materialtest.json.
Также вы можете использовать
tungsten --help
для получения дополнительной информации.
src/core/ содержит весь код для пересечения примитивов, материалов, выборки, интеграции и т. д. Это основная часть рендерера и место, с которого стоит начать, если вы хотите изучить код.
src/thirdparty содержит все библиотеки, используемые в проекте. Они включены в репозиторий, поскольку большинство из них представляют собой либо крошечные однофайловые библиотеки, либо, в случае embree, их пришлось модифицировать. Работа с рендерером.
В папке src/tungsten
находится само приложение для рендеринга, которое представляет собой небольшой интерфейс командной строки для основного кода рендеринга.
Все остальные папки в src
— это небольшие утилиты, описанные ниже.
Помимо основного рендерера, Tungsten также поставляется с несколькими инструментами, облегчающими создание контента.
Это автономная версия рендерера со встроенным HTTP-сервером состояния.
Он будет обслуживать следующие файлы:
— /render
: текущий буфер кадра (возможно, в незавершённом состоянии).
— /status
: строка JSON, содержащая информацию о текущем статусе рендеринга.
— /log
: текстовая версия журнала рендеринга.
Используйте tungsten_server --help
для получения дополнительной информации.
scenemanip
поставляется с рядом инструментов для управления файлами сцен, среди прочего, возможностью упаковывать сцены и все ссылки на ресурсы (текстуры, сетки и т. д.) в zip-архив.
Используйте scenemanip --help
для получения дополнительной информации.
hdrmanip
поставляется с несколькими полезными инструментами для работы с файлами вывода HDR, созданными рендерером. Там, где это возможно, мы рекомендуем использовать установленные инструменты обработки изображений, но там, где поддержка HDR доступна редко, этот инструмент может быть полезен.
Чтобы преобразовать изображение HDR в динамический диапазон с низкой динамикой, используйте
hdrmanip -o output.png input.exr
Вы также можете указать оператор тонирования, который будет применяться при преобразовании. Например, чтобы использовать тонирование плёнки, используйте
hdrmanip --tonemap filmic -o output.png input.exr
Чтобы настроить экспозицию файла HDR, вы можете использовать
hdrmanip --exposure -1.0 -o output.exr input.exr
Если вы не укажете выходной файл, инструмент перезапишет входной файл. Вы также можете изменить несколько входных файлов одновременно. Например, вы можете использовать
hdrmanip --exposure -1.0 input1.exr input2.exr input3.exr
чтобы настроить экспозицию нескольких файлов одновременно.
Если вы не хотите перезаписывать входные файлы, вы можете указать каталог вывода с помощью -o
hdrmanip -o outputdir --exposure -1.0 input1.exr input2.exr input3.exr
При указании нескольких файлов -o
интерпретируется как каталог вывода, а его расширение файла игнорируется. Если вы хотите преобразовать несколько входных файлов в другой формат файла или даже в динамический диапазон с низкой динамикой, вы можете использовать --file-type
hdrmanip --file-type png input1.exr input2.exr input3.exr
Наконец, hdrmanip
также поддерживает объединение нескольких файлов HDR вместе. Это полезно, когда вы разбиваете рендер на несколько машин и хотите усреднить результаты, чтобы получить менее шумное изображение. Для этого вы можете использовать --merge
hdrmanip --merge -o output.exr input1.exr input2.exr input3.exr
Конечно, вы также можете настроить экспозицию и преобразовать её в динамический диапазон с низкой динамикой за один шаг.
Используйте
hdrmanip --help
для получения дополнительной информации.
Команда
obj2json srcFile.obj dstFile.json
проанализирует Wavefront OBJ srcFile.obj
, включая иерархию объектов и материалы, и создаст файл сцены dstFile.json
, воспроизводящий иерархию и назначения материалов.
Кроме того, сетки в файле OBJ будут автоматически преобразованы и сохранены в собственный формат сетки Tungsten *.wo3
, что значительно сокращает время загрузки больших сеток. Это может создать большое количество новых файлов — рассмотрите возможность указания пути dstFile.json
в пустую подпапку, чтобы избежать беспорядка в файлах.
Команда
json2xml srcFile.json dstFile.xml
проанализирует файл сцены srcFile.json
и преобразует его в описание сцены в формате XML, совместимое с рендерером Mitsuba. Все файлы *.wo3
будут преобразованы в OBJ, совместимые с Mitsuba, что может создать большое количество новых файлов — рассмотрите размещение dstFile.xml
в пустой подпапке, чтобы избежать беспорядка в файлах.
Обратите внимание, что этот инструмент не проходит тщательное тестирование и не поддерживает все функции Tungsten, поэтому он может не всегда работать должным образом.
Это минималистичный редактор сцен, написанный на Qt и OpenGL. Он поддерживает настройку камеры, манипулирование преобразованиями и т.д. Он пригоден к использованию, но в нём отсутствуют некоторые важные функции (в том числе документация). Код нельзя назвать ни особенно чистым, ни стабильным, поэтому используйте его на свой страх и риск.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )