片段着色器中的纹理读取
Texture Reading in Fragment Shader
我正在将纹理传递给片段着色器 我想将该像素值中的纹理颜色与蓝色 Alpha 0.2 混合 我该怎么做?
片段着色器
fragment float4 bezier_fragment(VertexOutBezier params[[stage_in]],
texture2d<float> texture [[texture(0)]]
VertexOutBezier
struct VertexOutBezier {
float4 pos[[position]];
float4 color;
};
目前我正在这样做,但我在示例中的此着色器函数中遇到错误。 “No matching member function for call to 'sample'”在 float canvasColor Initialization
行
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;
}
替换此行:
float4 canvasColor = texture.sample(defaultSampler, params.pos);
和
float4 canvasColor = texture.sample(defaultSampler, params.pos.xy);
2D 纹理按 2 个坐标采样,您提供了 4 个。
我正在将纹理传递给片段着色器 我想将该像素值中的纹理颜色与蓝色 Alpha 0.2 混合 我该怎么做?
片段着色器
fragment float4 bezier_fragment(VertexOutBezier params[[stage_in]],
texture2d<float> texture [[texture(0)]]
VertexOutBezier
struct VertexOutBezier {
float4 pos[[position]];
float4 color;
};
目前我正在这样做,但我在示例中的此着色器函数中遇到错误。 “No matching member function for call to 'sample'”在 float canvasColor Initialization
行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;
}
替换此行:
float4 canvasColor = texture.sample(defaultSampler, params.pos);
和
float4 canvasColor = texture.sample(defaultSampler, params.pos.xy);
2D 纹理按 2 个坐标采样,您提供了 4 个。