我正在将纹理传递给片段着色器,我想将该像素值中的纹理颜色与Blue Alpha 0.2混合在一起?我该怎么做?
片段着色器
fragment float4 bezier_fragment(VertexOutBezier params[[stage_in]],
texture2d<float> texture [[texture(0)]]
VertexOutBezier
struct VertexOutBezier {
float4 pos[[position]];
float4 color;
};
当前,我正在执行此操作,但是示例中的此着色器函数出现错误。 “在float canvasColor初始化行中没有匹配的成员函数来调用'sample'
fragment float4 bezier_fragment(VertexOutBezier params[[stage_in]],
texture2d<float> texture [[texture(0)]]
)
{
constexpr sampler defaultSampler;
float4 canvasColor = texture.sample(defaultSampler, params.pos);
float4 finalColor = mix(canvasColor, params.color, 0.2);
return finalColor;
}
答案 0 :(得分:2)
替换此行:
float4 canvasColor = texture.sample(defaultSampler, params.pos);
使用
float4 canvasColor = texture.sample(defaultSampler, params.pos.xy);
通过2个坐标采样2D纹理,您提供了4个。