1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-tungsten

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
Readme.md

Tungsten Renderer

О программе

Tungsten — это физически обоснованный рендерер, изначально написанный для ежегодного конкурса рендеринга в ETH. Он имитирует полный перенос света через произвольную геометрию на основе беспристрастной интеграции уравнения рендеринга. Для этого Tungsten поддерживает различные алгоритмы переноса света, такие как двунаправленная трассировка пути, прогрессивное фотонное картирование, первичный пространственный метаполис переноса света и другие.

Tungsten написан на C++11 и использует высокопроизводительную библиотеку пересечения геометрии Intel embree. Tungsten полностью использует многоядерные системы и старается обеспечить хорошую производительность за счёт частого тестирования и оптимизации. Для запуска рендерера требуется поддержка SSE3.

Документация

Документация запланирована, но в настоящее время недоступна (извините!). Подробный обзор функций доступен в финальном отчёте о проекте, написанном как часть заявки на конкурс рендеринга, хотя этот документ может быть устаревшим.

Небольшой выбор примеров сцен можно найти в data/example-scenes. Также есть сцена тестирования материалов, которая находится в data/materialtest и содержит тестовый шар Tungsten, который можно использовать для проверки различных материалов и настроек освещения.

Лицензия

Чтобы предоставить разработчикам как можно больше свободы, Tungsten распространяется под лицензией libpng/zlib. Это позволяет вам изменять, распространять и продавать весь код или его части без указания авторства.

Обратите внимание, что Tungsten включает несколько сторонних библиотек в папке src/thirdparty, которые поставляются со своими собственными лицензиями. Дополнительную информацию см. в файле LICENSE.txt.

Компиляция

Windows + MinGW

Для сборки с помощью MinGW вам потребуется последняя версия CMake + gcc. Дистрибутивы CMake доступны здесь. Я рекомендую использовать MinGW-w64, доступный здесь.

В корневой папке репозитория используйте следующие команды в оболочке MSYS для сборки:

./setup_builds.sh
cd builds/release
make

После сборки двоичные файлы будут помещены в каталог build/release.

При желании вы можете установить фреймворк Qt для создания утилиты редактора сцен. Если во время настройки Qt не будет обнаружен, редактор сцен не будет создан (вы по-прежнему сможете использовать рендерер).

Windows + MSVC

Для сборки с использованием MSVC вам понадобится последняя версия CMake и MSVC 2013. Дистрибутивы CMake доступны здесь.

После установки CMake дважды щёлкните файл setup_builds.bat. Проект MSVC будет создан в папке vstudio. Откройте решение vstudio/Tungsten.sln и нажмите F7 для сборки.

Linux

Сборка в 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 также поставляется с несколькими инструментами, облегчающими создание контента.

tungsten_server

Это автономная версия рендерера со встроенным HTTP-сервером состояния.

Он будет обслуживать следующие файлы:

/render: текущий буфер кадра (возможно, в незавершённом состоянии). — /status: строка JSON, содержащая информацию о текущем статусе рендеринга. — /log: текстовая версия журнала рендеринга.

Используйте tungsten_server --help для получения дополнительной информации.

scenemanip

scenemanip поставляется с рядом инструментов для управления файлами сцен, среди прочего, возможностью упаковывать сцены и все ссылки на ресурсы (текстуры, сетки и т. д.) в zip-архив.

Используйте scenemanip --help для получения дополнительной информации.

hdrmanip

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

Команда

obj2json srcFile.obj dstFile.json

проанализирует Wavefront OBJ srcFile.obj, включая иерархию объектов и материалы, и создаст файл сцены dstFile.json, воспроизводящий иерархию и назначения материалов.

Кроме того, сетки в файле OBJ будут автоматически преобразованы и сохранены в собственный формат сетки Tungsten *.wo3, что значительно сокращает время загрузки больших сеток. Это может создать большое количество новых файлов — рассмотрите возможность указания пути dstFile.json в пустую подпапку, чтобы избежать беспорядка в файлах.

json2xml

Команда

json2xml srcFile.json dstFile.xml

проанализирует файл сцены srcFile.json и преобразует его в описание сцены в формате XML, совместимое с рендерером Mitsuba. Все файлы *.wo3 будут преобразованы в OBJ, совместимые с Mitsuba, что может создать большое количество новых файлов — рассмотрите размещение dstFile.xml в пустой подпапке, чтобы избежать беспорядка в файлах.

Обратите внимание, что этот инструмент не проходит тщательное тестирование и не поддерживает все функции Tungsten, поэтому он может не всегда работать должным образом.

editor

Это минималистичный редактор сцен, написанный на Qt и OpenGL. Он поддерживает настройку камеры, манипулирование преобразованиями и т.д. Он пригоден к использованию, но в нём отсутствуют некоторые важные функции (в том числе документация). Код нельзя назвать ни особенно чистым, ни стабильным, поэтому используйте его на свой страх и риск.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Tungsten — это физический графический рендерер, который изначально был написан для ежегодного конкурса рендеринга ETH. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-tungsten.git
git@api.gitlife.ru:oschina-mirror/mirrors-tungsten.git
oschina-mirror
mirrors-tungsten
mirrors-tungsten
master