Skip to content

Instantly share code, notes, and snippets.

@CaptainGPU
Created December 4, 2023 12:28
Show Gist options
  • Save CaptainGPU/dd96bae0341a9493f69200c75b4dade7 to your computer and use it in GitHub Desktop.
Save CaptainGPU/dd96bae0341a9493f69200c75b4dade7 to your computer and use it in GitHub Desktop.
ChromaticAberration.glsl
#ifdef GL_ES
precision mediump float;
#endif
// Розмір екрану
uniform vec2 u_resolution;
// Текстура для який будемо робити хроматичну аберацію
uniform sampler2D u_texture_0;
// Функція відхилення uv-координат
vec2 getOffsetUV(vec2 center_pos, vec2 uv, float offset)
{
// Відхилиня від центру
vec2 offsetUV = uv - center_pos;
// Помножуємо на коєфіцієнт відхилення
offsetUV *= offset;
// Вираховуємо відхилення uv-координат
return uv - offsetUV;
}
void main()
{
// Позиція центру аберації
vec2 center_pos = vec2(.5 , .5);
// UV-координати текстури
vec2 uv = gl_FragCoord.xy / u_resolution.xy;
// Отримуємо аберацію (відхилення) для кожного каналу RGB
vec2 uvRed = getOffsetUV(center_pos, uv, .0);
vec2 uvGreen = getOffsetUV(center_pos, uv, .02);
vec2 uvBlue = getOffsetUV(center_pos, uv, .01);
// Вибираемо RBG значення з текстури
float r = texture2D(u_texture_0, uvRed).r;
float g = texture2D(u_texture_0, uvGreen).g;
float b = texture2D(u_texture_0, uvBlue).b;
// Хроматична аберація
vec3 chromaticAberration = vec3(r, g, b);
// Фінальний колір = хроматична аберація
vec3 finalColor = chromaticAberration;
gl_FragColor = vec4(finalColor, 1.);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment