В этом документе представлен обзор двух отдельных проектов: gRPC/Spring, стартовой версии Spring Boot для gRPC, и Mitsuba 3, исследовательско-ориентированной системы рендеринга. В разделе gRPC/Spring подробно описаны его функции, инструкции по использованию и информация о совместимости. В разделе Mitsuba 3 рассказывается о его установке, использовании, функциях и участниках. Оба раздела включают примеры кода и ссылки на дополнительную документацию.
Опрос — gRPC/весна
Уважаемые пользователи gRPC/Spring, чтобы улучшить взаимодействие с пользователем
grpc-ecosystem/grpc-spring, мы разработали этот опрос как средство
установление прямой линии связи. Ваш отзыв очень ценен.
gRPC Spring Boot Стартер
README: английский | 中文
Документация: английский | 中文
Функции
Автоматически настраивает и запускает сервер gRPC с вашими реализациями @GrpcService.
Автоматически создает каналы и заглушки grpc и управляет ими с помощью @GrpcClient.
Поддерживает другие варианты grpc-java (например,
Реактивный gRPC (RxJava),
grpc-котлин, ...)
Поддерживает Spring-Security
Поддерживает весеннее облако
Поддерживает Spring Sleuth как решение для распределенной трассировки.
(Если присутствует храбрый инструментарий-grpc)
Поддерживает глобальные и пользовательские перехватчики сервера/клиента gRPC.
Автоматическая метрическая поддержка (на основе микрометра/актуатора)
Также работает с (не закрашенным) grpc-netty.
Версии
Последняя версия — 3.1.0.RELEASE она была скомпилирована с помощью Spring-Boot 3.2.4 и Spring-Cloud 2023.0.0.
но он также совместим с большим количеством других версий.
Обзор всех версий и соответствующих версий библиотек можно найти в нашей документации.
Примечание. Этот проект также можно использовать без Spring-Boot, однако для этого потребуется некоторая настройка компонента вручную.
Использование
gRPC-сервер + клиент
Чтобы добавить зависимость с помощью Maven, используйте следующее:
Чтобы добавить зависимость с помощью Gradle:
gRPC-сервер
Чтобы добавить зависимость с помощью Maven, используйте следующее:
Чтобы добавить зависимость с помощью Gradle:
Аннотируйте реализацию интерфейса вашего сервера с помощью @GrpcService.
По умолчанию сервер grpc будет прослушивать порт 9090. Эти и другие
настройки
можно изменить с помощью механизма свойств Spring. Сервер использует grpc.server. префикс.
Более подробную информацию можно найти в нашей документации.
gRPC-клиент
Чтобы добавить зависимость с помощью Maven, используйте следующее:
Чтобы добавить зависимость с помощью Gradle:
Аннотируйте поле заглушки клиента grpc с помощью @GrpcClient(serverName).
Не используйте вместе с @Autowired или @Inject.
Примечание. Вы можете использовать одно и то же имя сервера grpc для нескольких каналов, а также разные заглушки (даже с разными
перехватчики).
Затем вы можете отправлять запросы на свой сервер следующим образом:
Целевой адрес можно настроить для каждого клиента индивидуально.
Однако в некоторых случаях вы можете просто полагаться на конфигурацию по умолчанию.
Вы можете настроить сопоставление URL-адресов по умолчанию с помощью bean-компонентов NameResolver.Factory. Если вы не настроите этот компонент,
тогда URI по умолчанию будет угадываться с использованием схемы по умолчанию и имени (например: dns:/
):
Эти и другие
настройки
можно изменить с помощью механизма свойств Spring. Клиенты используют grpc.client.(serverName). префикс.
Более подробную информацию можно найти в нашей документации.
Запуск с (не затененным) grpc-netty
Эта библиотека поддерживает как grpc-netty, так и grpc-netty-shaded.
Последний вариант может предотвратить конфликты с несовместимыми версиями grpc или конфликты между библиотеками, которым требуются разные версии netty.
Примечание. Если в пути к классам присутствует затененная сеть, то эта библиотека всегда будет отдавать ей предпочтение перед незатененной grpc-netty.
Вы можете использовать его с Maven следующим образом:
и вот так при использовании Gradle:
Примеры проектов
Подробнее о наших примерах проектов читайте здесь.
Поиск неисправностей
Обратитесь за помощью к нашей документации.
Содействие
Взносы всегда приветствуются! Пожалуйста, посетите CONTRIBUTING.md для получения подробных инструкций.
пример:
Мицуба Рендерер 3
Документация
Обучающие видео
Линукс
MacOS
Окна
ПиПИ
Предупреждение
В настоящее время в мире ведется большой объем недокументированной и нестабильной работы.
главная ветка. Мы настоятельно рекомендуем вам воспользоваться нашим
последний выпуск
до дальнейшего уведомления.
Если вы уже хотите опробовать предстоящие изменения, ознакомьтесь с
это руководство по портированию.
Он должен охватывать большинство новых функций и предстоящих кардинальных изменений.
Введение
Mitsuba 3 — это исследовательская система рендеринга прямого и обратного света.
транспортное моделирование, разработанное в EPFL в Швейцарии.
Он состоит из базовой библиотеки и набора плагинов, реализующих функциональность.
начиная от материалов и источников света и заканчивая полными алгоритмами рендеринга.
Mitsuba 3 можно перенацелить: это означает, что базовые реализации и
Структуры данных могут трансформироваться для выполнения различных задач. Для
Например, один и тот же код может моделировать скалярный (классический по одному лучу) транспорт RGB
или дифференциальный спектральный транспорт на графическом процессоре. Все это основано на
Dr.Jit — специализированный JIT-компилятор, разработанный специально для этого проекта.
Основные характеристики
Кроссплатформенность: Mitsuba 3 протестирована на Linux (x86_64), macOS.
(aarch64, x8664) и Windows (x8664).
Высокая производительность: базовый компилятор Dr.Jit объединяет код рендеринга.
в ядра, которые достигают высочайшей производительности, используя
серверная часть LLVM, ориентированная на ЦП, и серверная часть CUDA/OptiX
ориентированы на графические процессоры NVIDIA с аппаратным ускорением трассировки лучей.
Python прежде всего: Mitsuba 3 глубоко интегрирован с Python. Материалы,
текстуры и даже полные алгоритмы рендеринга могут быть разработаны на Python,
который система JIT-компилирует (и, при необходимости, дифференцирует) на лету.
Это позволяет проводить эксперименты, необходимые для исследований в области компьютерной графики и
другие дисциплины.
Дифференциация: Mitsuba 3 — это дифференцируемый рендерер, то есть он
может вычислять производные всей симуляции относительно входных данных
такие параметры, как поза камеры, геометрия, BSDF, текстуры и объемы. Это
реализует последние алгоритмы дифференцируемого рендеринга, разработанные в EPFL.
Спектральный и поляризационный: Mitsuba 3 можно использовать как монохроматический.
рендерер, рендерер на основе RGB или спектральный рендерер. Каждый вариант может
при необходимости, при необходимости, учтите эффекты поляризации.
Обучающие видеоролики, документация
Мы записали несколько видеороликов на YouTube, которые дают краткое представление.
Мицуба 3 и Доктор Джит. Помимо этого вы можете найти полные блокноты Juypter.
охватывающий различные приложения, практические руководства и справочную документацию.
на прочтенной документации.
Установка
Мы предоставляем предварительно скомпилированные двоичные колеса через PyPI. Установить Mitsuba таким способом так же просто, как запустить
pip установить Мицубу
в командной строке. Пакет Python по умолчанию включает тринадцать вариантов:
скалярный_rgb
скалярный_спектрал
скалярспектральнополяризованный
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
кудаадмоно
cudaadmono_polarized
Кудаадспектральный
cudaadspectral_polarized
Первые два выполняют классическое моделирование по одному лучу с использованием RGB
или спектральное представление цвета, тогда как последние два могут использоваться для обратного
рендеринг на CPU или GPU. Чтобы получить доступ к дополнительным вариантам, вам необходимо
скомпилируйте собственную версию Dr.Jit с помощью CMake. Пожалуйста, ознакомьтесь с
документация
для получения подробной информации об этом.
Требования
Питон >= 3,8
(необязательно) Для вычислений на графическом процессоре: драйвер Nvidia >= 495,89.
(необязательно) Для векторизованных/параллельных вычислений на ЦП: LLVM >= 11.1
Использование
Вот простой пример «Hello World», который показывает, насколько просто визуализировать
сцена с использованием Mitsuba 3 из Python:
# Импортируйте библиотеку, используя псевдоним "mi"import mitsuba as mi# Установите вариант renderermi.setvariant('scalarrgb')# Загрузите сценуscene = mi.loaddict(mi.cornellbox())# Отрисуйте сценуimg = mi. render(scene)# Запишите визуализированное изображение в файл EXRmi.Bitmap(img).write('cbox.exr')
Учебные пособия и блокноты с примерами, охватывающие различные приложения, можно найти.
в документации.
О
Этот проект создал Венцель Якоб.
Значительные функции и/или улучшения кода были внесены
Себастьян Шпейерер,
Николя Руссель,
Мерлин Нимье-Дэвид,
Делио Вичини,
Тициан Зельтнер,
Батист Николе,
Мигель Креспо,
Винсент Лерой и
Цзыи Чжан.
При использовании Mitsuba 3 в академических проектах указывайте:
@software{Mitsuba3,title = {рендерер Mitsuba 3},author = {Венцель Якоб и Себастьян Шпейерер и Николя Руссель и Мерлин Нимьер-Давид и Делио Вичини и Тициан Зельтнер и Батист Николе и Мигель Креспо и Винсент Лерой и Зийи Чжан},note = {https://mitsuba-renderer.org},версия = {3.1.1}, год = 2022}