Created
December 4, 2023 12:28
-
-
Save CaptainGPU/dd96bae0341a9493f69200c75b4dade7 to your computer and use it in GitHub Desktop.
ChromaticAberration.glsl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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