blob: 77ff0091136212b82011f819dc84b8143da23cac [file] [log] [blame]
void main() {
// Generate a random number based on the fragment position. For this
// random number generator, we use the "GLSL rand" function
// that seems to be floating around on the internet. It works under
// the assumption that sin(<big number>) oscillates with high frequency
// and sampling it will generate "randomness". Since we're using this
// for rendering and not cryptography it should be OK.
// For each channel c, add the random offset to the pixel to either bump
// it up or let it remain constant during quantization.
float r = fract(sin(dot(sk_FragCoord.xy, vec2(12.9898, 78.233))) * 43758.5453);
sk_OutColor = clamp(1.0 / 255.0 * vec4(r) + sk_InColor, 0, 1);
}
@test(testData) {
return GrDitherEffect::Make();
}