mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-06-04 18:14:57 +02:00
byuu says: A few issues crept up in the last release, this should take care of them. First, it seems that the 32-bit runtime on 64-bit versions of Windows have 64-bit time functions; whereas true 32-bit Windows does not. This was causing a DLL error when attempting to load bsnes v090. Second, when there were more than 2,000 files in the same folder on Windows, it was lagging the file browser. With OV2's help, I've fixed that and it'll now load the list instantly. Lastly, I've included the missing video shaders this time.
56 lines
1.7 KiB
GLSL
56 lines
1.7 KiB
GLSL
<?xml version="1.0" encoding="UTF-8"?>
|
|
<shader language="GLSL">
|
|
<vertex><![CDATA[
|
|
uniform vec2 rubyTextureSize;
|
|
|
|
void main() {
|
|
vec4 offsetx;
|
|
vec4 offsety;
|
|
|
|
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
|
|
|
offsetx.x = 1.0 / rubyTextureSize.x;
|
|
offsetx.y = 0.0;
|
|
offsetx.w = 0.0;
|
|
offsetx.z = 0.0;
|
|
offsety.y = 1.0 / rubyTextureSize.y;
|
|
offsety.x = 0.0;
|
|
offsety.w = 0.0;
|
|
offsety.z = 0.0;
|
|
|
|
gl_TexCoord[0] = gl_MultiTexCoord0; //center
|
|
gl_TexCoord[1] = gl_TexCoord[0] - offsetx; //left
|
|
gl_TexCoord[2] = gl_TexCoord[0] + offsetx; //right
|
|
gl_TexCoord[3] = gl_TexCoord[0] - offsety; //top
|
|
gl_TexCoord[4] = gl_TexCoord[0] + offsety; //bottom
|
|
}
|
|
]]></vertex>
|
|
|
|
<fragment filter="nearest"><![CDATA[
|
|
uniform sampler2D rubyTexture;
|
|
uniform vec2 rubyTextureSize;
|
|
|
|
void main() {
|
|
vec4 colD, colF, colB, colH, col, tmp;
|
|
vec2 sel;
|
|
|
|
col = texture2DProj(rubyTexture, gl_TexCoord[0]); //central (can be E0-E3)
|
|
colD = texture2DProj(rubyTexture, gl_TexCoord[1]); //D (left)
|
|
colF = texture2DProj(rubyTexture, gl_TexCoord[2]); //F (right)
|
|
colB = texture2DProj(rubyTexture, gl_TexCoord[3]); //B (top)
|
|
colH = texture2DProj(rubyTexture, gl_TexCoord[4]); //H (bottom)
|
|
|
|
sel = fract(gl_TexCoord[0].xy * rubyTextureSize.xy); //where are we (E0-E3)? E0 is default
|
|
|
|
if(sel.y >= 0.5) { tmp = colB; colB = colH; colH = tmp; } //E1 (or E3): swap B and H
|
|
if(sel.x >= 0.5) { tmp = colF; colF = colD; colD = tmp; } //E2 (or E3): swap D and F
|
|
|
|
if(colB == colD && colB != colF && colD != colH) { //do the Scale2x rule
|
|
col = colD;
|
|
}
|
|
|
|
gl_FragColor = col;
|
|
}
|
|
]]></fragment>
|
|
</shader>
|