Компиляция вариантов шейдеров «на лету» во время выполненияC#

Место общения программистов C#
Ответить
Anonymous
 Компиляция вариантов шейдеров «на лету» во время выполнения

Сообщение 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();


Подробнее здесь: https://stackoverflow.com/questions/790 ... at-runtime
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»