Cccalibrator.glsl (3098B)
1 /*==========================================*/ 2 /*=======Calibrator by PavelDurov1488=======*/ 3 /*==========It's not ready yet...===========*/ 4 /*===I need to add blur, dynamic noise...===*/ 5 6 /* 7 [configuration] 8 9 10 [OptionRangeFloat] 11 GUIName = Luminance(Y) 12 OptionName = LUMINANCE 13 MinValue = 0.000 14 MaxValue = 3.000 15 StepAmount = 0.050 16 DefaultValue = 1.200 17 18 [OptionRangeFloat] 19 GUIName = Orange-Cyan(I) 20 OptionName = ORANGECYAN 21 MinValue = 0.000 22 MaxValue = 3.000 23 StepAmount = 0.050 24 DefaultValue = 1.200 25 26 [OptionRangeFloat] 27 GUIName = Magenta-Green(Q) 28 OptionName = MAGENTAGREEN 29 MinValue = 0.000 30 MaxValue = 3.000 31 StepAmount = 0.050 32 DefaultValue = 1.200 33 34 [OptionRangeFloat] 35 GUIName = Black 36 OptionName = BLACK 37 MinValue = 0.000 38 MaxValue = 255.000 39 StepAmount = 1.000 40 DefaultValue = 10.000 41 42 [OptionRangeFloat] 43 GUIName = White 44 OptionName = WHITE 45 MinValue = 0.000 46 MaxValue = 255.000 47 StepAmount = 1.000 48 DefaultValue = 240.000 49 50 [OptionRangeFloat] 51 GUIName = Noise 52 OptionName = NOISE 53 MinValue = 0.000 54 MaxValue = 50.000 55 StepAmount = 1.000 56 DefaultValue = 10.000 57 58 [OptionRangeFloat] 59 GUIName = Saturation 60 OptionName = SATURATION 61 MinValue = 0.000 62 MaxValue = 100.000 63 StepAmount = 1.000 64 DefaultValue = 50.000 65 66 [/configuration] 67 */ 68 69 float pseudoNoise(vec2 co) 70 { 71 return fract(sin(dot(vec2(co.x+0.513,co.y+0.4124) ,vec2(12.9898,78.233))) * 43758.5453);// *fract(sin(dot(vec2(co.x+4.231,co.y+3.143) ,vec2(12.9898,78.233)*2.0)) * 43758.5453); //pseudo random number generator 72 } 73 74 CONSTANT vec3 RGBtoY = vec3(0.299, 0.587, 0.114); 75 CONSTANT vec3 RGBtoI = vec3(0.596,-0.275,-0.321); 76 CONSTANT vec3 RGBtoQ = vec3(0.212,-0.523, 0.311); 77 CONSTANT vec3 YIQtoR = vec3(1.0, 0.95568806036115671171, 0.61985809445637075388); 78 CONSTANT vec3 YIQtoG = vec3(1.0,-0.27158179694405859326,-0.64687381613840131330); 79 CONSTANT vec3 YIQtoB = vec3(1.0,-1.10817732668266195230, 1.70506455991918171490); 80 81 void main() 82 { 83 84 85 float2 texcoord = GetCoordinates(); 86 float2 time = float2(GetTime(), GetTime()); 87 // int FrameCount = GetFrameCount(); 88 float4 color = Sample(); 89 // float brightness_scale = GetOption(BRIGHTNESS_SCALE); 90 91 //vec3 czm_saturation(vec3 rgb, float adjustment) 92 //{ 93 // // Algorithm from Chapter 16 of OpenGL Shading Language 94 // const vec3 W = vec3(0.2125, 0.7154, 0.0721); 95 // vec3 intensity = vec3(dot(rgb, W)); 96 // return mix(intensity, rgb, adjustment); 97 //} 98 99 // rgb->yiq 100 float3 yuv; 101 yuv.r = pow(dot(color.rgb, float3(0.299, 0.587, 0.114)),LUMINANCE); 102 yuv.g = dot(color.rgb, float3(0.595716,-0.274453,-0.321263))*ORANGECYAN; 103 yuv.b = dot(color.rgb, float3(0.211456,-0.522591, 0.311135))*MAGENTAGREEN; 104 105 // apply brightness to y 106 // yuv.r = saturate(yuv.r * brightness_scale); 107 108 // yuv->rgb 109 color.r = dot(yuv, float3(1.0, 0.95629572, 0.62102442)); 110 color.g = dot(yuv, float3(1.0,-0.27212210,-0.64738060)); 111 color.b = dot(yuv, float3(1.0,-1.10698902, 1.70461500)); 112 color.rgb = saturate(color.rgb*WHITE/255.0+BLACK/255.0-color.rgb*BLACK/255.0+(pseudoNoise(texcoord))*1.0/255.0); 113 114 color.rgb = saturate(color.rgb+(pseudoNoise(vec2(color.r+color.b,color.g+color.b))-0.5)*NOISE/255.0); 115 SetOutput(saturate(color)); 116 }