Unity 6.3
0 онлайн 42 гостей 3 в системе
Вход

Используйте HLSL и ShaderLab в вычислительном шейдере

Использование семплеров текстур

Текстыли и семплеры не являются отдельными объектами в Unity, так что для использования их в вычислительных шейдерах вы должны следовать одному из следующих правил, специфичных для Unity:

  • Используйте то же самое имя, что и имя Текстуры, с sampler в начале (например, Texture2D MyTex; SamplerState samplerMyTex). В этом случае семплер инициализируется с настройками фильтров, обвода и анизо Текстуры.

  • Используйте предопределенный пробоотборник. Для этого имя должно иметь Linear или Point (для режима фильтрации) и Clamp или Repeat (для режима переплетения). Например, SamplerState MyLinearClampSampler создает пробоотборник, который имеет режим Linear filter и режим Clamp wrap.

Дополнительные сведения см. в документации по Состояния пробоотборника.

Используйте ключевые слова

Вы можете использовать ключевые слова для создания нескольких вариантов вычислительных шейдеров, так же как и для графических шейдеров.

Общую информацию о вариантах см. Варианты шейдеров. Сведения о том, как реализовать эти возможности в вычислительных шейдерах, см. Заявление и использование ключевых слов в HLSL и ComputeShader API документация.

HLSL-только или GLSL-только вычислительные шейдеры

Обычно файлы вычислительных шейдеров пишутся на HLSL, и компилируются или переводятся на все необходимые платформы автоматически. Однако можно либо предотвратить перевод на другие языки (то есть сохранить только платформы HLSL), либо написать вычислительный код GLSL вручную.

Следующая информация относится только к HLSL- только или GLSL-только вычислительные шейдеры, а не кросс-платформенные сборки. Это потому, что эта информация может привести к исключению источника вычислительных шейдеров из некоторых платформ.

  • Источник вычисления шейдера, окруженный ключевыми словами CGPROGRAM и ENDCG, не обрабатывается для платформ, не относящихся к HLSL.

  • Вычислите источник шейдера, окружённый ключевыми словами GLSLPROGRAM и ENDGLSL, который рассматривается как источник GLSL и выводится дословно. Это работает только для платформ OpenGL или GLSL. Также следует отметить, что в то время как автоматически переводимые шейдеры следуют HLSL расположению данных на буферах, вручную написанные GLSL шейдеры следуют GLSL правилам расположения.