Pete´s Messageboard... No ISO/BIOS requests!

Homepage Members Register Login Search Old board


Neuer Thread ...
More : [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]


AuthorTopics » Book an abo for this threadClose Thread Move Thread Fix the thread Print view Delete this thread

guest ...
Real addict
.........

...

Status:Offline
Date registered: 30.07.2004
Post:856
Send Message
...   Created on 17.05.2007 - 17:30Jump to top Quote this post Report this post Edit Delete


I guess they're hoping for smart shader coders. :P




Z 
Strong supporter
......

...

Status:Offline
Date registered: 03.08.2005
Post:72
Send Message
...   Created on 18.05.2007 - 13:33Jump to top Quote this post Report this post Edit Delete


Is there anything similar to ATIs smart shaders included in nvidia's drivers, meanwhile?




VerGreeneyes 
Strong supporter
......

...

Status:Offline
Date registered: 26.04.2007
Post:89
Send Message
...   Created on 19.05.2007 - 02:56Jump to top Quote this post Report this post Edit Delete


Well.. what are these Smart Shaders?




GreenImp ...
Strong supporter
......



Status:Offline
Date registered: 18.10.2005
Post:22
Send Message
...   Created on 12.06.2007 - 21:00Jump to top Quote this post Report this post Edit Delete


Woohoo! Finally a 2xSaI shader! Can't wait to try it out. You guys rock!





Signature
-GreenImp

http://greenimp.epsxe.com/GreenImp-ePSXeDoc.html

OS: Windows XP professional (SP2) CPU: AMD Atholon XP 2800+ (Barton) Graphics Card: Leadtek GeForce A7600 GT THD (256 DDR3 - AGP) Memory: 1 GB DDR Corsair value Sound Card: Sound Blaster Live! value Mobo: ASUS A7N8X-E Deluxe (nForce 2 Ultra 400)

VerGreeneyes 
Strong supporter
......

...

Status:Offline
Date registered: 26.04.2007
Post:89
Send Message
...   Created on 15.06.2007 - 01:42Jump to top Quote this post Report this post Edit Delete


Hey GreenImp, it's been a while since I messed with this, but here's the fastest version I ever made, so if you're looking for a bit more speed try this

vertex file:

Code:
1:
2:
3:
4:
5:
 
void main(){
    gl_Position = ftransform();
    gl_TexCoord[0] = gl_MultiTexCoord0;
}

fragment file:
Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
 
const vec4 dt = vec4(16777216.,65536.,256.,1.);
uniform vec4 OGL2Size,OGL2InvSize;
uniform sampler2D OGL2Texture;

float reduce(vec4);
float GET_RESULT(float,float,float,float);
vec4 TWOxSaI();

void main()
{
  gl_FragColor = TWOxSaI();
}

float reduce(vec4 colour)
{
  return dot(colour,dt);
}

float GET_RESULT(float A, float B, float C, float D)
{
  return float(A!=C && A!=D && B==C && B==D)-float(A==C && A==D);
}

vec4 TWOxSaI()
{
  vec4 rValue;
  vec2 OGL2Pos = gl_TexCoord[0].xy*OGL2Size.xy,
     fp = fract(OGL2Pos), dx, dy,
     pC4 = floor(OGL2Pos)/OGL2Size.xy;
  if(fp.x<.5 || fp.y>=.5)
  {
    dx = vec2(OGL2InvSize.x,0.);
    dy = vec2(0.,OGL2InvSize.y);
  }
  else
  {
    dx = vec2(0.,OGL2InvSize.y);
    dy = vec2(OGL2InvSize.x,0.);
  }
  vec4 C0 = texture2D(OGL2Texture,pC4-   dx-   dy),
       C1 = texture2D(OGL2Texture,pC4      -   dy),
       C2 = texture2D(OGL2Texture,pC4+   dx-   dy),
       C3 = texture2D(OGL2Texture,pC4-   dx      ),
       C4 = texture2D(OGL2Texture,pC4            ),
       C5 = texture2D(OGL2Texture,pC4+   dx      ),
       C6 = texture2D(OGL2Texture,pC4-   dx+   dy),
       C7 = texture2D(OGL2Texture,pC4      +   dy),
       C8 = texture2D(OGL2Texture,pC4+   dx+   dy),
       D0 = texture2D(OGL2Texture,pC4-   dx+2.*dy),
       D1 = texture2D(OGL2Texture,pC4      +2.*dy),
       D2 = texture2D(OGL2Texture,pC4+   dx+2.*dy),
       D4 = texture2D(OGL2Texture,pC4+2.*dx      ),
       D5 = texture2D(OGL2Texture,pC4+2.*dx+   dy),
       p10,p11;
  float c0 = reduce(C0),c1 = reduce(C1),c2 = reduce(C2),c3 = reduce(C3),
        c4 = reduce(C4),c5 = reduce(C5),c6 = reduce(C6),c7 = reduce(C7),
        c8 = reduce(C8),d0 = reduce(D0),d1 = reduce(D1),d2 = reduce(D2),
        d4 = reduce(D4),d5 = reduce(D5);
  if(c4==c8)
  {
    if(c5!=c7)
    {
      p10 = (c4==c3 && c7==d2 || c4==c5 && c4==c6 && c3!=c7 && c7==d0) ? C4 : .5*(C4+C7);
      p11 = C4;
    }
    else
    {
      if(c4==c5) p11 = (p10 = C4);
      else
      {
        float r = GET_RESULT(c4,c5,c3,c1)+GET_RESULT(c4,c5,d5,d2)
                 -GET_RESULT(c5,c4,d4,c2)-GET_RESULT(c5,c4,c6,d1);
        p10 = .5*(C4+C7);
        if(r>0.) p11 = C4;
        else if(r<0.) p11 = C5;
        else p11 = .25*(C4+C5+C7+C8);
      }
    }
  }
  else if(c5==c7)
  {
    p10 = (c7==c6 && c4==c2 || c7==c3 && c7==c8 && c4!=c6 && c4==c0) ? C7 : .5*(C4+C7);
    p11 = C5;
  }
  else
  {
    p11 = .25*(C4+C5+C7+C8);
    if(c4==c5 && c4==c6 && c3!=c7 && c7==d0) p10 = C4;
    else if(c7==c3 && c7==c8 && c4!=c6 && c4==c0) p10 = C7;
    else p10 = .5*(C4+C7);
  }
  if(fp.x>=.5 && fp.y>=.5) rValue = p11;
  else if(fp.x>=.5 || fp.y>=.5) rValue = p10;
  else rValue = C4;
  return rValue;
}




VerGreeneyes 
Strong supporter
......

...

Status:Offline
Date registered: 26.04.2007
Post:89
Send Message
...   Created on 15.06.2007 - 02:52Jump to top Quote this post Report this post Edit Delete


Also, to guest: I made some more modifications to the weighed average 2xSaI filter, cutting down on the amount of texture lookups (although speed suffers). Give it a try

Fragment file (vertex file the same as usual):

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
 
uniform vec4 OGL2Size, OGL2InvSize;
uniform sampler2D OGL2Texture;
const float pi = 1.570796326794896619231321691640;
const vec2 pC4 = gl_TexCoord[0].xy;
const vec2 rx = vec2(OGL2InvSize.x,0.);
const vec2 ry = vec2(0.,OGL2InvSize.y);
vec2 dx, dy;
const vec4 dt = vec4(16777216.,65536.,256.,1.);

float reduce(vec4);
float GET_RESULT(float,float,float,float);
vec4 WA2xSaI();
vec4 TWOxSaI(vec2, vec2);

void main()
{
  gl_FragColor = WA2xSaI();
}

float reduce(vec4 colour)
{
  return dot(colour,dt);
}

float GET_RESULT(float A,float B,float C,float D)
{
  return float(A!=C && A!=D && B==C && B==D)-float(A==C && A==D);
}

vec4 WA2xSaI()
{
  vec2 fp = fract(pC4*OGL2Size.xy),
       dx = vec2(OGL2InvSize.x,0.), dy = vec2(0.,OGL2InvSize.y),
       s0 = vec2(1.-fp.x,1.-fp.y), s1 = vec2(1.-fp.x,fp.y),
       s2 = vec2(   fp.x,1.-fp.y), s3 = vec2(   fp.x,fp.y);
  if(fp.x>=.5){fp.x = 1. - fp.x; dx = -dx;}
  if(fp.y>=.5){fp.y = 1. - fp.y; dy = -dy;}
  fp *= 2.;
  if(fp.x>=.5){fp.x = 1. - fp.x; dx = vec2(0.);}
  if(fp.y>=.5){fp.y = 1. - fp.y; dy = vec2(0.);}
  mat4 C = mat4(TWOxSaI(s0,pC4-dx-dy),TWOxSaI(s1,pC4-dx),
                TWOxSaI(s2,pC4   -dy),TWOxSaI(s3,pC4   ));
  mat2 gp = mat2((fp+.5)*(fp+.5),(fp-.5)*(fp-.5));
  vec4 c = vec4(gp[0][0]+gp[0][1],gp[0][0]+gp[1][1],
                gp[1][0]+gp[0][1],gp[1][0]+gp[1][1];
  c=-sqrt(c);if(c.x<-1.)c.x=-1.;if(c.y<-1.)c.y=-1.;if(c.z<-1.)c.z=-1.;c=cos(pi*c);
  return (C[0]*c.x+C[1]*c.y+C[2]*c.z+C[3]*c.w)/(c.x+c.y+c.z+c.w);
}

vec4 TWOxSaI(vec2 fp, vec2 pC4)
{
  vec4 rValue;
  if(fp.x < .5 && fp.y < .5) rValue = texture2D(OGL2Texture,pC4);
  else
  {
    if(fp.x < .5 || fp.y >= .5){dx = rx; dy = ry;}else{dx = ry; dy = rx;}
    vec4 C4 = texture2D(OGL2Texture,pC4            ),
         C5 = texture2D(OGL2Texture,pC4+   dx      ),
         C7 = texture2D(OGL2Texture,pC4      +   dy),
         C8 = texture2D(OGL2Texture,pC4+   dx+   dy),
         p10,p11;
    float c4 = reduce(C4),c5 = reduce(C5),c7 = reduce(C7),c8 = reduce(C8);
    if(c4==c8)
    {
      if(c5!=c7)
      {
        vec4 C3 = texture2D(OGL2Texture,pC4-   dx      ),
             C6 = texture2D(OGL2Texture,pC4-   dx+   dy),
             D0 = texture2D(OGL2Texture,pC4-   dx+2.*dy),
             D2 = texture2D(OGL2Texture,pC4+   dx+2.*dy);
        float c3 = reduce(C3),c6 = reduce(C6),d0 = reduce(D0),d2 = reduce(D2);
        p10 = (c4==c3 && c7==d2 || c4==c5 && c4==c6 && c3!=c7 && c7==d0) ? C4 : .5*(C4+C7);
        p11 = C4;
      }
      else if(c4==c5) p11 = (p10 = C4);
      else
      {
        vec4 C1 = texture2D(OGL2Texture,pC4      -   dy),
             C2 = texture2D(OGL2Texture,pC4+   dx-   dy),
             C3 = texture2D(OGL2Texture,pC4-   dx      ),
             C6 = texture2D(OGL2Texture,pC4-   dx+   dy),
             D1 = texture2D(OGL2Texture,pC4      +2.*dy),
             D2 = texture2D(OGL2Texture,pC4+   dx+2.*dy),
             D4 = texture2D(OGL2Texture,pC4+2.*dx      ),
             D5 = texture2D(OGL2Texture,pC4+2.*dx+   dy);
        float c1 = reduce(C1),c2 = reduce(C2),c3 = reduce(C3),c6 = reduce(C6),
              d1 = reduce(D1),d2 = reduce(D2),d4 = reduce(D4),d5 = reduce(D5);
        float r = GET_RESULT(c4,c5,c3,c1)+GET_RESULT(c4,c5,d5,d2)
                 -GET_RESULT(c5,c4,d4,c2)-GET_RESULT(c5,c4,c6,d1);
        p10 = .5*(C4+C7);
        if(r>0.) p11 = C4;
        else if(r<0.) p11 = C5;
        else p11 = .25*(C4+C5+C7+C8);
      }
    }
    else if(c5==c7)
    {
      vec4 C0 = texture2D(OGL2Texture,pC4-   dx-   dy),
           C2 = texture2D(OGL2Texture,pC4+   dx-   dy),
           C3 = texture2D(OGL2Texture,pC4-   dx      ),
           C6 = texture2D(OGL2Texture,pC4-   dx+   dy);
      float c0 = reduce(C0),c2 = reduce(C2),c3 = reduce(C3),c6 = reduce(C6);
      p10 = (c7==c6 && c4==c2 || c7==c3 && c7==c8 && c4!=c6 && c4==c0) ? C7 : .5*(C4+C7);
      p11 = C5;
    }
    else
    {
      vec4 C0 = texture2D(OGL2Texture,pC4-   dx-   dy),
           C3 = texture2D(OGL2Texture,pC4-   dx      ),
           C6 = texture2D(OGL2Texture,pC4-   dx+   dy),
           D0 = texture2D(OGL2Texture,pC4-   dx+2.*dy);
      float c0 = reduce(C0),c3 = reduce(C3),c6 = reduce(C6),d0 = reduce(D0);
      p11 = .25*(C4+C5+C7+C8);
      if(c4==c5 && c4==c6 && c3!=c7 && c7==d0) p10 = C4;
      else if(c7==c3 && c7==c8 && c4!=c6 && c4==c0) p10 = C7;
      else p10 = .5*(C4+C7);
    }
    rValue = (fp.x>=.5 && fp.y>=.5) ? p11 : p10;
  }
  return rValue;
}


Edit: corrected code and replaced the loop with something more sensible. Let me know if it works. (it does on my system)

[Dieser Beitrag wurde am 27.06.2007 - 16:59 von VerGreeneyes aktualisiert]




GreenImp ...
Strong supporter
......



Status:Offline
Date registered: 18.10.2005
Post:22
Send Message
...   Created on 26.06.2007 - 22:37Jump to top Quote this post Report this post Edit Delete


I think the 2xSaI looks great at the native rez. Your fast one worked fine for me, but the Weighted one said it expected (. I'll try one of the older weighted one you posted and see if I can get that to work.





Signature
-GreenImp

http://greenimp.epsxe.com/GreenImp-ePSXeDoc.html

OS: Windows XP professional (SP2) CPU: AMD Atholon XP 2800+ (Barton) Graphics Card: Leadtek GeForce A7600 GT THD (256 DDR3 - AGP) Memory: 1 GB DDR Corsair value Sound Card: Sound Blaster Live! value Mobo: ASUS A7N8X-E Deluxe (nForce 2 Ultra 400)

VerGreeneyes 
Strong supporter
......

...

Status:Offline
Date registered: 26.04.2007
Post:89
Send Message
...   Created on 27.06.2007 - 16:56Jump to top Quote this post Report this post Edit Delete


I corrected the error in the above code, sorry about that. Only try it if the below version doesn't work for you, because it's a bit slower and this filter is slow enough as it is!

Original (faster):

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
 
uniform vec4 OGL2Size, OGL2InvSize;
uniform sampler2D OGL2Texture;
const float pi = 1.570796326794896619231321691640;
const vec2 pC4 = gl_TexCoord[0].xy;
const vec2 rx = vec2(OGL2InvSize.x,0.);
const vec2 ry = vec2(0.,OGL2InvSize.y);
vec2 dx, dy;
const vec4 dt = vec4(16777216.,65536.,256.,1.);

float reduce(vec4);
float GET_RESULT(float, float, float, float);
vec4 WA2xSaI();
vec4 TWOxSaI(vec2, vec2);

void main()
{
  gl_FragColor = WA2xSaI();
}

float reduce(vec4 colour)
{
  return dot(colour,dt);
}

float GET_RESULT(float A,float B,float C,float D)
{
  return float(A!=C && A!=D && B==C && B==D)-float(A==C && A==D);
}

vec4 WA2xSaI()
{
  vec2 fp = fract(pC4*OGL2Size.xy),
       dx = vec2(OGL2InvSize.x,0.), dy = vec2(0.,OGL2InvSize.y),
       s0 = vec2(1.-fp.x,1.-fp.y), s1 = vec2(1.-fp.x,fp.y),
       s2 = vec2(   fp.x,1.-fp.y), s3 = vec2(   fp.x,fp.y);
  if(fp.x>=.5){fp.x = 1. - fp.x; dx = -dx;}
  if(fp.y>=.5){fp.y = 1. - fp.y; dy = -dy;}
  fp *= 2.;
  if(fp.x>=.5){fp.x = 1. - fp.x; dx = vec2(0.);}
  if(fp.y>=.5){fp.y = 1. - fp.y; dy = vec2(0.);}
  mat4 C = mat4(TWOxSaI(s0,pC4-dx-dy),TWOxSaI(s1,pC4-dx),
                TWOxSaI(s2,pC4   -dy),TWOxSaI(s3,pC4   ));
  mat2 gp = mat2((fp+.5)*(fp+.5),(fp-.5)*(fp-.5));
  vec4 c = vec4(gp[0][0]+gp[0][1],gp[0][0]+gp[1][1],
                gp[1][0]+gp[0][1],gp[1][0]+gp[1][1];
  c=-sqrt(c);if(c.x<-1.)c.x=-1.;if(c.y<-1.)c.y=-1.;if(c.z<-1.)c.z=-1.;c=cos(pi*c);
  return (C[0]*c.x+C[1]*c.y+C[2]*c.z+C[3]*c.w)/(c.x+c.y+c.z+c.w);
}

vec4 TWOxSaI(vec2 fp, vec2 pC4)
{
  vec4 rValue;
  if(fp.x < .5 || fp.y >= .5){dx = rx; dy = ry;}else{dx = ry; dy = rx;}
  if(fp.x<.5 || fp.y>=.5)
  {
    dx = vec2(OGL2InvSize.x,0.);
    dy = vec2(0.,OGL2InvSize.y);
  }
  else
  {
    dx = vec2(0.,OGL2InvSize.y);
    dy = vec2(OGL2InvSize.x,0.);
  }
  vec4 C0 = texture2D(OGL2Texture,pC4-   dx-   dy),
       C1 = texture2D(OGL2Texture,pC4      -   dy),
       C2 = texture2D(OGL2Texture,pC4+   dx-   dy),
       C3 = texture2D(OGL2Texture,pC4-   dx      ),
       C4 = texture2D(OGL2Texture,pC4            ),
       C5 = texture2D(OGL2Texture,pC4+   dx      ),
       C6 = texture2D(OGL2Texture,pC4-   dx+   dy),
       C7 = texture2D(OGL2Texture,pC4      +   dy),
       C8 = texture2D(OGL2Texture,pC4+   dx+   dy),
       D0 = texture2D(OGL2Texture,pC4-   dx+2.*dy),
       D1 = texture2D(OGL2Texture,pC4      +2.*dy),
       D2 = texture2D(OGL2Texture,pC4+   dx+2.*dy),
       D4 = texture2D(OGL2Texture,pC4+2.*dx      ),
       D5 = texture2D(OGL2Texture,pC4+2.*dx+   dy),
       p10,p11;
  float c0 = reduce(C0),c1 = reduce(C1),c2 = reduce(C2),c3 = reduce(C3),
        c4 = reduce(C4),c5 = reduce(C5),c6 = reduce(C6),c7 = reduce(C7),
        c8 = reduce(C8),d0 = reduce(D0),d1 = reduce(D1),d2 = reduce(D2),
        d4 = reduce(D4),d5 = reduce(D5);
  if(c4==c8)
  {
    if(c5!=c7)
    {
      p10 = (c4==c3 && c7==d2 || c4==c5 && c4==c6 && c3!=c7 && c7==d0) ? C4 : .5*(C4+C7);
      p11 = C4;
    }
    else
    {
      if(c4==c5) p11 = (p10 = C4);
      else
      {
        float r = GET_RESULT(c4,c5,c3,c1)+GET_RESULT(c4,c5,d5,d2)
                 -GET_RESULT(c5,c4,d4,c2)-GET_RESULT(c5,c4,c6,d1);
        p10 = .5*(C4+C7);
        if(r>0.) p11 = C4;
        else if(r<0.) p11 = C5;
        else p11 = .25*(C4+C5+C7+C8);
      }
    }
  }
  else if(c5==c7)
  {
    p10 = (c7==c6 && c4==c2 || c7==c3 && c7==c8 && c4!=c6 && c4==c0) ? C7 : .5*(C4+C7);
    p11 = C5;
  }
  else
  {
    p11 = .25*(C4+C5+C7+C8);
    if(c4==c5 && c4==c6 && c3!=c7 && c7==d0) p10 = C4;
    else if(c7==c3 && c7==c8 && c4!=c6 && c4==c0) p10 = C7;
    else p10 = .5*(C4+C7);
  }
  if(fp.x>=.5 && fp.y>=.5) rValue = p11;
  else if(fp.x>=.5 || fp.y>=.5) rValue = p10;
  else rValue = C4;
  return rValue;
}


[Dieser Beitrag wurde am 27.06.2007 - 17:01 von VerGreeneyes aktualisiert]




GreenImp ...
Strong supporter
......



Status:Offline
Date registered: 18.10.2005
Post:22
Send Message
...   Created on 28.06.2007 - 21:06Jump to top Quote this post Report this post Edit Delete


Still isn't working here. is the Vertex file different?





Signature
-GreenImp

http://greenimp.epsxe.com/GreenImp-ePSXeDoc.html

OS: Windows XP professional (SP2) CPU: AMD Atholon XP 2800+ (Barton) Graphics Card: Leadtek GeForce A7600 GT THD (256 DDR3 - AGP) Memory: 1 GB DDR Corsair value Sound Card: Sound Blaster Live! value Mobo: ASUS A7N8X-E Deluxe (nForce 2 Ultra 400)

VerGreeneyes 
Strong supporter
......

...

Status:Offline
Date registered: 26.04.2007
Post:89
Send Message
...   Created on 28.06.2007 - 23:34Jump to top Quote this post Report this post Edit Delete


Well, this is it:

Code:
1:
2:
3:
4:
5:
 
void main(){
    gl_Position = ftransform();
    gl_TexCoord[0] = gl_MultiTexCoord0;
}

What error are you getting?




More : [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

Similarly threads:
Topics Created by Replies Boardname
Cartoon GLSL shader guest 7 pete_bernert
Is there a OGL2 2xSaI Shader out there? GreenImp 0 pete_bernert
Scale2x Plus GLSL shader guest 0 pete_bernert
SuperEagle GLSL shader guest 0 pete_bernert
Super2xSaI GLSL shader guest 0 pete_bernert
Neuer Thread ...





Masthead

This forum is a free service of razyboard.com powered by:
Geizkragen Price Comparison. Top product in the price comparison: Krups Nespresso Essenza (XN2001)
Do you want a free forum in less than two minutes? Then click here!



Verwandte Suchbegriffe:
2xsai filter for epsxe
blank