代码之家  ›  专栏  ›  技术社区  ›  luvieere

如何为WPF实现漂白绕过着色器效果?

  •  1
  • luvieere  · 技术社区  · 14 年前

    bleach bypass WPF的着色器效果?
    Tehnicolor Film Processes

    1 回复  |  直到 14 年前
        1
  •  1
  •   Robert Fraser    14 年前

    退房: http://developer.download.nvidia.com/shaderlibrary/packages/post_bleach_bypass.fx.zip

    重要的是:

    float4 bypassPS(QuadVertexOutput IN, uniform sampler2D SceneSampler) : COLOR
    {
        float4 base = tex2D(SceneSampler, IN.UV);
        float3 lumCoeff = float3(0.25,0.65,0.1);
        float lum = dot(lumCoeff,base.rgb);
        float3 blend = lum.rrr;
        float L = min(1,max(0,10*(lum- 0.45)));
        float3 result1 = 2.0f * base.rgb * blend;
        float3 result2 = 1.0f - 2.0f*(1.0f-blend)*(1.0f-base.rgb);
        float3 newColor = lerp(result1,result2,L);
        float A2 = Opacity * base.a;
        float3 mixRGB = A2 * newColor.rgb;
        mixRGB += ((1.0f-A2) * base.rgb);
        return float4(mixRGB,base.a);
    }