Pārlūkot izejas kodu

neercs: do not pass the texture coordinates from the application to

the GL server; instead, simply deduce them from the vertex coordinates
and interpolate them in the fragment shader.
master
Sam Hocevar pirms 12 gadiem
vecāks
revīzija
804e386ca4
12 mainītis faili ar 71 papildinājumiem un 39 dzēšanām
  1. +6
    -2
      neercs/video/blurh.lolfx
  2. +6
    -2
      neercs/video/blurv.lolfx
  3. +2
    -3
      neercs/video/color.lolfx
  4. +7
    -3
      neercs/video/copper.lolfx
  5. +8
    -2
      neercs/video/glow.lolfx
  6. +7
    -3
      neercs/video/mirror.lolfx
  7. +4
    -5
      neercs/video/noise.lolfx
  8. +2
    -3
      neercs/video/postfx.lolfx
  9. +7
    -3
      neercs/video/radial.lolfx
  10. +7
    -3
      neercs/video/remanence.lolfx
  11. +9
    -8
      neercs/video/render.cpp
  12. +6
    -2
      neercs/video/simple.lolfx

+ 6
- 2
neercs/video/blurh.lolfx Parādīt failu

@@ -2,23 +2,27 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D texture;
uniform vec2 radius;

void main(void)
{
vec4 total = vec4(0.0);
vec2 p = gl_TexCoord[0].xy;
vec2 p = pass_TexCoord;
float mask = 2.0-p.x*(6.0-p.x*6.0)*p.y*(6.0-p.y*6.0);
float b = radius.x+radius.y*mask;
total += texture2D(texture,vec2(p.x-b*4.0,p.y))*0.04;


+ 6
- 2
neercs/video/blurv.lolfx Parādīt failu

@@ -2,23 +2,27 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D texture;
uniform vec2 radius;

void main(void)
{
vec4 total = vec4(0.0);
vec2 p = gl_TexCoord[0].xy;
vec2 p = pass_TexCoord;
float mask = 2.0-p.x*(6.0-p.x*6.0)*p.y*(6.0-p.y*6.0);
float b = radius.x+radius.y*mask;
total += texture2D(texture,vec2(p.x,p.y-b*4.0))*0.04;


+ 2
- 3
neercs/video/color.lolfx Parādīt failu

@@ -5,7 +5,6 @@
void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
}

[frag.glsl]
@@ -20,7 +19,7 @@ uniform float flash;

void main(void)
{
vec2 p = gl_FragCoord.xy/screen_size.xy;
vec2 p = gl_FragCoord.xy / screen_size.xy;
vec3 c = texture2D(texture,p).xyz;

float a = (c.x + c.y + c.z) / 3.0;
@@ -32,4 +31,4 @@ void main(void)
c += flash; // flash

gl_FragColor = vec4(c, 1.0);
}
}

+ 7
- 3
neercs/video/copper.lolfx Parādīt failu

@@ -2,16 +2,20 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D texture;
uniform vec2 screen_size;
uniform float time;
@@ -20,7 +24,7 @@ uniform vec3 mask_color;

void main(void)
{
vec2 p = gl_TexCoord[0].xy;
vec2 p = pass_TexCoord;
vec3 source = texture2D(texture, p).xyz;

vec3 color = vec3(0.5);
@@ -35,4 +39,4 @@ void main(void)
color.z = float(int(color.z * 8.0) * 32) / 256.0;

gl_FragColor = vec4((source == mask_color) ? color : source, 1.0);
}
}

+ 8
- 2
neercs/video/glow.lolfx Parādīt failu

@@ -2,21 +2,27 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D glow;
uniform sampler2D source;
uniform vec2 mix;

void main(void)
{
gl_FragColor = texture2D(source,gl_TexCoord[0].xy)*mix.x+texture2D(glow,gl_TexCoord[0].xy)*mix.y;
gl_FragColor = texture2D(source, pass_TexCoord) * mix.x
+ texture2D(glow, pass_TexCoord) * mix.y;
}


+ 7
- 3
neercs/video/mirror.lolfx Parādīt failu

@@ -2,23 +2,27 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D texture;
uniform vec2 screen_size;
uniform vec4 mirror;

void main(void)
{
vec2 p = gl_TexCoord[0].xy;
vec2 p = pass_TexCoord;
vec3 s = texture2D(texture, p).xyz;

vec3 c = vec3(0.0);
@@ -28,4 +32,4 @@ void main(void)
if(p.y > 1.0 - mirror.y) c += texture2D(texture, vec2(p.x * (0.8 + 2.0 * (1.0 - p.y)) + 0.1 - 1.0 * (1.0 - p.y), - mirror.y - (mirror.y + p.y) * mirror.w)).xyz * (mirror.z / mirror.y * (1.0 - p.y));

gl_FragColor = vec4(s + c, 1.0);
}
}

+ 4
- 5
neercs/video/noise.lolfx Parādīt failu

@@ -4,8 +4,7 @@

void main()
{
gl_Position=gl_Vertex;
gl_TexCoord[0]=gl_MultiTexCoord0;
gl_Position = gl_Vertex;
}

[frag.glsl]
@@ -19,9 +18,9 @@ uniform vec2 offset;
uniform float noise;
uniform vec3 retrace;

float rand(in vec2 p,in float t,in float v)
float rand(in vec2 p, in float t, in float v)
{
return fract(sin(dot(p+mod(t,1.0),vec2(12.9898,78.2333)))*v);
return fract(sin(dot(p + mod(t, 1.0), vec2(12.9898, 78.2333))) * v);
}

void main(void)
@@ -36,4 +35,4 @@ void main(void)
c*=1.0+(noise-noise*2.0*r1); // noise
c-=retrace.x*0.01*mod(p.y*retrace.y+time*retrace.z,1.0); // retrace
gl_FragColor=vec4(c,1.0);
}
}

+ 2
- 3
neercs/video/postfx.lolfx Parādīt failu

@@ -4,8 +4,7 @@

void main()
{
gl_Position=gl_Vertex;
gl_TexCoord[0]=gl_MultiTexCoord0;
gl_Position = gl_Vertex;
}

[frag.glsl]
@@ -104,4 +103,4 @@ void main(void)
c*=letterbox(z,corner.x+2.0,corner.y,corner.z); // corner
c+=(g3+g4)*glass.z; // glass
gl_FragColor=vec4(c,1.0);
}
}

+ 7
- 3
neercs/video/radial.lolfx Parādīt failu

@@ -2,16 +2,20 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D texture;
uniform vec2 screen_size;
uniform vec4 radial;
@@ -25,7 +29,7 @@ vec3 deform(in vec2 p)

void main(void)
{
vec2 p = -1.0+2.0*gl_TexCoord[0].xy;
vec2 p = -1.0 + 2.0 * pass_TexCoord;
vec2 s = p;
vec3 source=deform(s);

@@ -41,4 +45,4 @@ void main(void)
s += d;
}
gl_FragColor = vec4(source + color * radial.w, 1.0);
}
}

+ 7
- 3
neercs/video/remanence.lolfx Parādīt failu

@@ -2,24 +2,28 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D source;
uniform sampler2D buffer;
uniform vec2 mix;

void main(void)
{
vec4 old_color = texture2D(buffer, gl_TexCoord[0].xy);
vec4 new_color = texture2D(source, gl_TexCoord[0].xy);
vec4 old_color = texture2D(buffer, pass_TexCoord);
vec4 new_color = texture2D(source, pass_TexCoord);

/* The old way */
//gl_FragColor = new_color * mix.x + old_color * mix.y;


+ 9
- 8
neercs/video/render.cpp Parādīt failu

@@ -67,8 +67,13 @@ float main_angle = 0.0f; // main angle
float part_angle = 0.0f; // part angle
float fx_angle; // current angle
/* fs_quad variable */
float fs_quad_vtx[] = {-1.0f, 1.0f, 0, 1.0f, -1.0f, -1.0f, 0, 1.0f, 1.0f, -1.0f, 0, 1.0f, 1.0f, 1.0f, 0, 1.0f};
float fs_quad_tex[] = {0, 1.0f, 0, 0, 1.0f, 0, 1.0f, 1.0f};
float fs_quad_vtx[] =
{
-1.0f, 1.0f, 0, 1.0f,
-1.0f, -1.0f, 0, 1.0f,
1.0f, -1.0f, 0, 1.0f,
1.0f, 1.0f, 0, 1.0f
};
/* flash variable */
bool flash_flag = false; // flag
float flash_angle = 0; // angle
@@ -1471,7 +1476,7 @@ void Render::Draw2D()
glLoadMatrixf(&m[0][0]);
glMatrixMode(GL_MODELVIEW);

fx_angle=main_angle-part_angle;
fx_angle = main_angle - part_angle;
}

void Render::Draw3D()
@@ -1485,9 +1490,6 @@ void Render::Draw3D()
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(4, GL_FLOAT, 0, fs_quad_vtx);

glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, fs_quad_tex);

if (m_shader_copper)
{
// shader copper
@@ -1723,11 +1725,10 @@ void Render::Draw3D()
ShaderSimple(fbo_front, 0);

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}

Render::~Render()
{
if (m_fps_debug)
Ticker::Unref(m_fps_debug);
}
}

+ 6
- 2
neercs/video/simple.lolfx Parādīt failu

@@ -2,20 +2,24 @@

#version 120

varying vec2 pass_TexCoord;

void main()
{
gl_Position = gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
pass_TexCoord = vec2(0.5, 0.5) + 0.5 * gl_Vertex.xy;
}

[frag.glsl]

#version 120

varying vec2 pass_TexCoord;

uniform sampler2D texture;

void main(void)
{
gl_FragColor = texture2D(texture, gl_TexCoord[0].xy);
gl_FragColor = texture2D(texture, pass_TexCoord);
}


Notiek ielāde…
Atcelt
Saglabāt