#ios #metal
Вопрос:
Я работал над учебником Apple по металлу, создавая и отбирая текстуры.
В этом уроке я показал, как сопоставить текстуру с набором вершин, и он хорошо работает. Мой вопрос касается сэмплера в шейдере фрагментов и фильтра увеличения.
Важно, чтобы цвета текстуры не усреднялись по горизонтали, но я бы хотел, чтобы они усреднялись по вертикали.
Моя функция фрагмента вставлена ниже. По сути, я хотел бы mag_filter::nearest
, чтобы меня применяли горизонтально и mag_filter::linear
применяли вертикально.
Есть ли какой-нибудь способ достичь этого или что-то в этом роде?
fragment float4
samplingShader(RasterizerData in [[stage_in]],
texture2d<half> colorTexture [[ texture(AAPLTextureIndexBaseColor) ]])
{
constexpr sampler textureSampler (mag_filter::linear,
min_filter::nearest);
// Sample the texture to obtain a color
const half4 colorSample = colorTexture.sample(textureSampler, in.textureCoordinate);
// return the color of the texture
return float4(colorSample);
}
Комментарии:
1. Я думаю, что можно использовать эту
gather
функцию и реализовать свою собственную фильтрацию. В качестве альтернативы вы можете изменить координаты УФ-излучения таким образом, чтобыin.textureCoordinate
y
компонент был прикреплен к центру текселя.