#include "common.hlsl_psh" #include "colorblind.hlsl_psh" // x = center, y = 1/range, z = peak, w = value scalar float4 ParamsA; // x = shift, y = 1/range, z = peak, w = unused float4 ParamsB; sampler Sampler_Pattern : register(s0); sampler Sampler_Hue : register(s1); struct PS_INPUT { float2 UV : TEXCOORD0; }; float4 Main( PS_INPUT In ) : COLOR { const float4 Pattern = tex2D( Sampler_Pattern, In.UV ); const float4 Hue = tex2D( Sampler_Hue, In.UV ); const float PatternValueA = saturate( ParamsA.z * ( 1.0f - ( ParamsA.y * abs( ParamsA.x - Pattern.r ) ) ) ); const float ValueA = PatternValueA * Pattern.g; const float PatternValueB = saturate( ParamsB.z * ( 1.0f - ( ParamsB.y * abs( ( ParamsB.x + ParamsA.x ) - Pattern.r ) ) ) ); const float ValueB = PatternValueB * Pattern.a; const float Value = saturate( ValueA + ValueB ) * ParamsA.w; const float4 FinalColor = Value * Hue; #if COLOR_BLIND return mul( ColorBlindMat, FinalColor ); #else return FinalColor; #endif }