yuv10 бит текстуры в металле

Я пытаюсь преобразовать свои шейдеры openGL в металлические шейдеры для преобразования текстуры битов yuv10 в текстуру rgba.

С openGL я использовал этот код GLSL из этого ссылка

Я сделал конвертацию, но результат не тот, который я ожидал.

Я думаю, это потому, что я использую

 tex2d.sample(sampler2d, x, y).rgba;

вместо

texelFetch(tex, ivec2(sourceColumnIndexY, texcoordDenorm.y)

Есть ли эквивалент texelFetch в Metal?


person vtruant    schedule 13.11.2017    source источник


Ответы (1)


Вы толком не объясняете, каким образом "результат не тот, который я ожидал". Вы также не объяснили такие вещи, как формат металлических пикселей, который вы используете для входной текстуры.

В любом случае, функция Metal, соответствующая texelFetch(), является просто функцией-членом read() типов текстур. Например, texture2d<T> имеет следующие две функции-члена:

Tv read(uint2 coord, uint lod = 0) const
Tv read(ushort2 coord, ushort lod = 0) const

где Tv — четырехкомпонентный вектор, тип компонента которого равен T.

person Ken Thomases    schedule 13.11.2017
comment
Большое спасибо. Это именно то, что я искал. И теперь это работает. - person vtruant; 13.11.2017