| Author | Topics » Book an abo for this thread |  |
guest  Real addict
  

Status:Offline Date registered: 30.07.2004 Post:856 Send Message | Created on 17.05.2007 - 17:30 |  |
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:33 |  |
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:56 |  |
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:00 |  |
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:42 |  |
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: | | | | 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:52 |  |
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:37 |  |
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:56 |  |
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:06 |  |
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:34 |  |
Well, this is it: | | | | void main(){
| gl_Position = ftransform();
| gl_TexCoord[0] = gl_MultiTexCoord0;
| }
| | |
What error are you getting?
|