summaryrefslogtreecommitdiffstats
path: root/hlsl/2xBRZ.vsh
blob: 3034bff2998d1217207d479706d8f0086de8da86 (plain) (blame)
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
	// Copyright (C) 2014-2016 DeSmuME team
	//
	// This file is free software: you can redistribute it and/or modify
	// it under the terms of the GNU General Public License as published by
	// the Free Software Foundation, either version 2 of the License, or
	// (at your option) any later version.
	//
	// This file is distributed in the hope that it will be useful,
	// but WITHOUT ANY WARRANTY; without even the implied warranty of
	// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	// GNU General Public License for more details.
	//
	// You should have received a copy of the GNU General Public License
	// along with the this software.  If not, see <http://www.gnu.org/licenses/>.

	//---------------------------------------
	// Input Pixel Mapping:  20|21|22|23|24
	//                       19|06|07|08|09
	//                       18|05|00|01|10
	//                       17|04|03|02|11
	//                       16|15|14|13|12
	
	uniform vec2 color_texture_pow2_sz;

	varying vec2 texCoord[25];
	
	void main()
	{
		gl_Position = ftransform();

		float dx = 1.0 / color_texture_pow2_sz.x;
		float dy = 1.0 / color_texture_pow2_sz.y;

		vec2 inTexCoord0 = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;

		texCoord[20] = inTexCoord0 + vec2(-2.0 * dx,-2.0 * dy);
		texCoord[21] = inTexCoord0 + vec2(      -dx,-2.0 * dy);
		texCoord[22] = inTexCoord0 + vec2( 0.0     ,-2.0 * dy);
		texCoord[23] = inTexCoord0 + vec2(       dx,-2.0 * dy);
		texCoord[24] = inTexCoord0 + vec2( 2.0 * dx,-2.0 * dy);
		
		texCoord[19] = inTexCoord0 + vec2(-2.0 * dx,      -dy);
		texCoord[ 6] = inTexCoord0 + vec2(      -dx,      -dy);
		texCoord[ 7] = inTexCoord0 + vec2( 0.0     ,      -dy);
		texCoord[ 8] = inTexCoord0 + vec2(       dx,      -dy);
		texCoord[ 9] = inTexCoord0 + vec2( 2.0 * dx,      -dy);
		
		texCoord[18] = inTexCoord0 + vec2(-2.0 * dx, 0.0     );
		texCoord[ 5] = inTexCoord0 + vec2(      -dx, 0.0     );
		texCoord[ 0] = inTexCoord0 + vec2( 0.0     , 0.0     ); // Center pixel
		texCoord[ 1] = inTexCoord0 + vec2(       dx, 0.0     );
		texCoord[10] = inTexCoord0 + vec2( 2.0 * dx, 0.0     );
		
		texCoord[17] = inTexCoord0 + vec2(-2.0 * dx,       dy);
		texCoord[ 4] = inTexCoord0 + vec2(      -dx,       dy);
		texCoord[ 3] = inTexCoord0 + vec2( 0.0     ,       dy);
		texCoord[ 2] = inTexCoord0 + vec2(       dx,       dy);
		texCoord[11] = inTexCoord0 + vec2( 2.0 * dx,       dy);
		
		texCoord[16] = inTexCoord0 + vec2(-2.0 * dx, 2.0 * dy);
		texCoord[15] = inTexCoord0 + vec2(      -dx, 2.0 * dy);
		texCoord[14] = inTexCoord0 + vec2( 0.0     , 2.0 * dy);
		texCoord[13] = inTexCoord0 + vec2(       dx, 2.0 * dy);
		texCoord[12] = inTexCoord0 + vec2( 2.0 * dx, 2.0 * dy);
	}