gpt4 book ai didi

c# - 为自定义 ShaderEffect 创建黑色滤镜

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:27 24 4
gpt4 key购买 nike

我正在使用 this code example为我的 WPF 应用调整 BitmapImage 的亮度和对比度。 HLSL 代码的相关位是这样的:

sampler2D input : register(s0);
float brightness : register(c0);
float contrast : register(c1);

float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 color = tex2D(input, uv);
float4 result = color;
result = color + brightness;
result = result * (1.0+contrast)/1.0;

return result;
}

我想做的是添加一些东西来过滤掉低强度像素 - 我的想法是我想说图像的任何部分(我只是猜测我必须对每个像素都这样做)低于一定的阈值,使其变黑。我正在尝试过滤掉低强度的灰色,以使较亮的部分更加突出(这是灰度图像)。然后我会使用 slider 来调整该阈值。

我只是不知道这是一个过滤器还是什么,我希望它只是对上面代码的一个简单修改。总计 n00b 到 HLSL。

最佳答案

这是@Ed 版本的替代方法。

这会接受任何颜色的输入并将原始颜色替换为黑色。

/// <class>AdjustToBlack</class>
/// <description>An effect that makes pixels of a particular color black.</description>

sampler2D inputSampler : register(S0);


/// <summary>The color that becomes black.</summary>
/// <defaultValue>Green</defaultValue>
float4 ColorKey : register(C0);

/// <summary>The tolerance in color differences.</summary>
/// <minValue>0</minValue>
/// <maxValue>1</maxValue>
/// <defaultValue>0.3</defaultValue>
float Tolerance : register(C1);

float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 color = tex2D( inputSampler, uv );

if (all(abs(color.rgb - ColorKey.rgb) < Tolerance)) {
color.rgb = 0;
}

return color;
}

示例来自 Shazzam 中包含的示例着色器之一。注意,///注释是自定义标签,用在 Shazzam Shader Editor 中。

关于c# - 为自定义 ShaderEffect 创建黑色滤镜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com