home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 April / PCWorld_2007-04_cd.bin / audio-video / kmplayer / kmp.exe / Shader / Procamp.txt < prev    next >
Text File  |  2006-11-01  |  1KB  |  65 lines

  1. // procamp=ps_2_0
  2. // Code from MPC
  3.  
  4. sampler s0 : register(s0);
  5. float4 p0 : register(c0);
  6. float4 p1 : register(c1);
  7.  
  8. #define width (p0[0])
  9. #define height (p0[1])
  10. #define counter (p0[2])
  11. #define clock (p0[3])
  12. #define one_over_width (p1[0])
  13. #define one_over_height (p1[1])
  14.  
  15. #define PI acos(-1)
  16.  
  17. static float4x4 r2y =
  18. {
  19.     0.299, 0.587, 0.114, 0,
  20.     -0.147, -0.289, 0.437, 0,
  21.     0.615, -0.515, -0.100, 0,
  22.     0, 0, 0, 0
  23. };
  24.  
  25. static float4x4 y2r =
  26. {
  27.     1.0, 0.0, 1.140, 0, 
  28.     1.0, -0.394, -0.581, 0,
  29.     1.0, 2.028, 0.0, 0, 
  30.     0, 0, 0, 0
  31. };
  32.  
  33. #define ymin (16.0/255)
  34. #define ymax (235.0/255)
  35.  
  36. // Brightness: -1.0 to 1.0, default 0.0
  37. // Contrast: 0.0 to 10.0, default 1.0
  38. // Hue: -180.0 to +180.0, default 0.0
  39. // Saturation: 0.0 to 10.0, default 1.0
  40.  
  41. #define Brightness 0.0
  42. #define Contrast 1.0
  43. #define Hue 0.0
  44. #define Saturation 1.0
  45.  
  46. // tv -> pc scale
  47. // #define Brightness (-ymin)
  48. // #define Contrast (1.0/(ymax-ymin))
  49.  
  50. static float2x2 HueMatrix =
  51. {
  52.     cos(Hue * PI / 180), sin(Hue * PI / 180),
  53.     -sin(Hue * PI / 180), cos(Hue * PI / 180)
  54. };
  55.  
  56. float4 main(float2 tex : TEXCOORD0) : COLOR
  57. {
  58.     float4 c0 = tex2D(s0, tex);
  59.     c0 = mul(r2y, c0);
  60.     c0.r = Contrast * (c0.r - ymin) + ymin + Brightness;
  61.     c0.gb = mul(HueMatrix, c0.gb) * Saturation;
  62.     c0 = mul(y2r, c0);
  63.     return c0; 
  64. }
  65.