У меня очень большой шейдер с большим количеством вариантов (у нас более 30 ключевых слов). Это приложение среды выполнения, в котором конечный пользователь имеет полный контроль над шейдером. Это означает, что все ключевые слова/варианты должны быть доступны конечному пользователю. Таким образом, удаление вариантов становится очень трудным, поскольку мы на самом деле не знаем, какие варианты понадобятся конечному пользователю. И да, все 30 ключевых слов необходимы во время выполнения. Мы будем рассматривать миллиарды вариантов.
Лучшим решением будет возможность скомпилировать вариант на лету только тогда, когда это необходимо во время выполнения. Аналогично тому, как редактор Unity обрабатывает варианты. Небольшая задержка во время компиляции — это нормально. Есть ли способ добиться этого?
Мы пытались сделать это с помощью ShaderVariantCollection, но безуспешно. Вот код
var keywords = material.shaderKeywords;
ShaderVariantCollection variants = new ShaderVariantCollection();
ShaderVariant variant = new ShaderVariant
{
shader = material.shader,
passType = PassType.Normal, // Adjust this as needed
keywords = keywords
};
// Add the variant to the collection
variants.Add(variant);
variants.WarmUp();
Подробнее здесь: https://stackoverflow.com/questions/790 ... at-runtime
Компиляция вариантов шейдеров «на лету» во время выполнения ⇐ C#
Место общения программистов C#
-
Anonymous
1727208635
Anonymous
У меня очень большой шейдер с большим количеством вариантов (у нас более 30 ключевых слов). Это приложение среды выполнения, в котором конечный пользователь имеет полный контроль над шейдером. Это означает, что все ключевые слова/варианты должны быть доступны конечному пользователю. Таким образом, удаление вариантов становится очень трудным, поскольку мы на самом деле не знаем, какие варианты понадобятся конечному пользователю. И да, все 30 ключевых слов необходимы во время выполнения. Мы будем рассматривать миллиарды вариантов.
Лучшим решением будет возможность скомпилировать вариант на лету только тогда, когда это необходимо во время выполнения. Аналогично тому, как редактор Unity обрабатывает варианты. Небольшая задержка во время компиляции — это нормально. Есть ли способ добиться этого?
Мы пытались сделать это с помощью ShaderVariantCollection, но безуспешно. Вот код
var keywords = material.shaderKeywords;
ShaderVariantCollection variants = new ShaderVariantCollection();
ShaderVariant variant = new ShaderVariant
{
shader = material.shader,
passType = PassType.Normal, // Adjust this as needed
keywords = keywords
};
// Add the variant to the collection
variants.Add(variant);
variants.WarmUp();
Подробнее здесь: [url]https://stackoverflow.com/questions/79018887/compiling-shader-variants-on-the-fly-at-runtime[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия