procamp.psh
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:1k
源码类别:

多媒体编程

开发平台:

Visual C++

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