У меня есть две прозрачные текстуры.Первый - это Исходная текстура, Второй - Маска.Я хочу смешать две текстуры.
Сценарий 1
- исходная текстура, имеющая цвет и альфа-маску Текстура, имеющая цвет и альфа
- Результирующий цвет и альфа должны быть умножены
Сценарий 2
- исходная текстура, имеющая цвет и альфа-маску Текстура альфа равна нулю
- Результирующий цвет и альфа должны иметь исходную текстуру Цвет и альфа
Сценарий3
- исходная текстура с альфа-нулевой маской Текстура альфа имеет цвет и альфа
- Результирующий цвет и альфа должны быть равны нулю
Как этого добитьсяв металлическом фрагментном шейдере.
fragment float4 fragmentShaderone(VertexOut params[[stage_in]],
texture2d<float, access::sample>srcTexture [[texture(0)]],
texture2d<float, access::sample> maskTexture [[texture(1)]])
{
constexpr sampler defaultSampler;
float srcColor = float4(texture.sample(defaultSampler, float2(params.textureCoordinates))) * float4(1,0,0,40.0/255.0);
float4 maskColor = float4(texture4.sample(defaultSampler, float2(params.textureCoordinates))) ;
return srcColor * maskColor
}
Если мне так нравится, то сценарий 2 отсутствует.Во всяком случае, решить в металлическом фрагменте шейдера.Мне нужно выполнить три сценария.