TextAntialiasPS.hlsl 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // RUN: %dxc -E main -T ps_6_0 %s | FileCheck %s
  2. // CHECK: sample
  3. // CHECK: Saturate
  4. //
  5. // Copyright (c) Microsoft. All rights reserved.
  6. // This code is licensed under the MIT License (MIT).
  7. // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
  8. // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
  9. // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
  10. // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
  11. //
  12. // Developed by Minigraph
  13. //
  14. // Author: James Stanard
  15. //
  16. #include "TextRS.hlsli"
  17. cbuffer cbFontParams : register( b0 )
  18. {
  19. float4 Color;
  20. float2 ShadowOffset;
  21. float ShadowHardness;
  22. float ShadowOpacity;
  23. float HeightRange; // The range of the signed distance field.
  24. }
  25. Texture2D<float> SignedDistanceFieldTex : register( t0 );
  26. SamplerState LinearSampler : register( s0 );
  27. struct PS_INPUT
  28. {
  29. float4 pos : SV_POSITION;
  30. float2 uv : TEXCOORD0;
  31. };
  32. float GetAlpha( float2 uv )
  33. {
  34. return saturate(SignedDistanceFieldTex.Sample(LinearSampler, uv) * HeightRange + 0.5);
  35. }
  36. [RootSignature(Text_RootSig)]
  37. float4 main( PS_INPUT Input ) : SV_Target
  38. {
  39. return float4(Color.rgb, 1) * GetAlpha(Input.uv) * Color.a;
  40. }