Skip to content

Instantly share code, notes, and snippets.

@auroranockert
Created February 3, 2010 23:23
Show Gist options
  • Save auroranockert/294178 to your computer and use it in GitHub Desktop.
Save auroranockert/294178 to your computer and use it in GitHub Desktop.
float sample_delta(sampler src, float x, float y) {
return 1.0 - sample(src, samplerCoord(src) + vec2(x, y)).r;
}
float fun_a(float p2, float p3, float p4, float p5, float p6, float p7, float p8, float p9) {
float b1 = step(0.5, p3 - p2);
float b2 = step(0.5, p4 - p3);
float b3 = step(0.5, p5 - p4);
float b4 = step(0.5, p6 - p5);
float b5 = step(0.5, p7 - p6);
float b6 = step(0.5, p8 - p7);
float b7 = step(0.5, p9 - p8);
float b8 = step(0.5, p2 - p9);
return b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8;
}
float fun_b(float p2, float p3, float p4, float p5, float p6, float p7, float p8, float p9) {
return p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9;
}
kernel vec4 thinEffectStepOne(sampler src) {
float p2 = sample_delta(src, 0.0, 1.0);
float p3 = sample_delta(src, 1.0, 1.0);
float p4 = sample_delta(src, 1.0, 0.0);
float p5 = sample_delta(src, 1.0, -1.0);
float p6 = sample_delta(src, 0.0, -1.0);
float p7 = sample_delta(src, -1.0, -1.0);
float p8 = sample_delta(src, -1.0, 0.0);
float p9 = sample_delta(src, -1.0, 1.0);
// COMMON
float c1 = 1.0 - step(2.5, abs(fun_b(p2, p3, p4, p5, p6, p7, p8, p9) - 4.0));
float c2 = 1.0 - step(0.5, abs(fun_a(p2, p3, p4, p5, p6, p7, p8, p9) - 1.0));
// FIRST
float c1_3 = 1.0 - p2 * p4 * p6;
float c1_4 = 1.0 - p4 * p6 * p8;
// SECOND
// float c2_3 = 1.0 - p2 * p4 * p8;
// float c2_4 = 1.0 - p2 * p6 * p8;
float color = sample_delta(src, 0.0, 0.0);
// RESULT
float result = 1.0 - color * (1.0 - c1 * c2 * c1_3 * c1_4);
// float result = 1.0 - color * (1.0 - c1 * c2 * c2_3 * c2_4);
return vec4(result, result, result, 1.0);
}
kernel vec4 thinEffectStepTwo(sampler src) {
float p2 = sample_delta(src, 0.0, 1.0);
float p3 = sample_delta(src, 1.0, 1.0);
float p4 = sample_delta(src, 1.0, 0.0);
float p5 = sample_delta(src, 1.0, -1.0);
float p6 = sample_delta(src, 0.0, -1.0);
float p7 = sample_delta(src, -1.0, -1.0);
float p8 = sample_delta(src, -1.0, 0.0);
float p9 = sample_delta(src, -1.0, 1.0);
// COMMON
float c1 = 1.0 - step(2.5, abs(fun_b(p2, p3, p4, p5, p6, p7, p8, p9) - 4.0));
float c2 = 1.0 - step(0.5, abs(fun_a(p2, p3, p4, p5, p6, p7, p8, p9) - 1.0));
// FIRST
// float c1_3 = 1.0 - p2 * p4 * p6;
// float c1_4 = 1.0 - p4 * p6 * p8;
// SECOND
float c2_3 = 1.0 - p2 * p4 * p8;
float c2_4 = 1.0 - p2 * p6 * p8;
float color = sample_delta(src, 0.0, 0.0);
// RESULT
// float result = 1.0 - color * (1.0 - c1 * c2 * c1_3 * c1_4);
float result = 1.0 - color * (1.0 - c1 * c2 * c2_3 * c2_4);
return vec4(result, result, result, 1.0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment