Metal API: изменение индексов текстуры на лету - PullRequest
0 голосов
/ 06 февраля 2020

Я сделал парсер glsl -> metal, который работает довольно хорошо, если в коде glsl не используются очень старые функции.

Самая большая проблема, с которой я сталкиваюсь, это когда код glsl не не явно определяют местоположение привязки текстуры, например:

uniform layout(binding = 0) sampler2D myTexture; // this is fine
uniform sampler2D myTexture2;  // this is the problem

В металле вы должны определить индекс текстуры во время компиляции. В то время как в glsl вам разрешено указать (и изменить) его во время выполнения.

Я считаю, что это невозможно, особенно потому, что я не могу найти его в spe c, но кто-нибудь знает возможно ли указать (или изменить) индекс текстуры металлического шейдера на лету на стороне процессора?

texture2d < half > myTexture[[ texture(IDX) ]]  // where IDX is not constexpr?
...