有人能指出我正确的方向来创建一个可以在GL ES 2.0上运行的效果similar to this吗?
.vert
uniform vec2 uAberrationOffset;
void main() {
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
}
.frag
uniform sampler2DRect baseTex;
uniform vec2 uAberrationOffset;
void main() {
vec4 coords = gl_TexCoord[0];
// baseTex is FBO of screen (1280x800 -> non-square)
// offset red
vec4 fbo1 = texture2DRect(baseTex, coords.xy - uAberrationOffset);
// keep green where it is
vec4 fbo2 = texture2DRect(baseTex, coords.xy);
// offset blue
vec4 fbo3 = texture2DRect(baseTex, coords.xy + uAberrationOffset);
// FBO channels mixed (incl. offsets)
vec4 colFinal = vec4(fbo1.r, fbo2.g, fbo3.b, 1.);
// Output final pixel color
gl_FragColor = colFinal;
}
答案 0 :(得分:2)
以下婴儿步骤将允许您将这些着色器移植到ES 2.0。
请勿使用老式校服:gl_ProjectionMatrix
和gl_ModelViewMatrix
。用用户定义的制服替换它们。
sampler2DRect
和texture2DRect
,但您可以使用普通的sampler
和texture2D
来调用此效果。
gl_MultiTexCoord0
和gl_Vertex
是旧式属性。您需要使用用户定义的顶点属性替换它们。