summaryrefslogtreecommitdiffstatshomepage
path: root/hlsl/downsample.fx
blob: e4e3b400ee7c8f042020fa9c384324c1325a34b5 (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
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
//-----------------------------------------------------------------------------
// Effect File Variables
//-----------------------------------------------------------------------------

texture Diffuse;

sampler DiffuseSampler = sampler_state
{
	Texture   = <Diffuse>;
	MipFilter = LINEAR;
	MinFilter = LINEAR;
	MagFilter = LINEAR;
	AddressU = CLAMP;
	AddressV = CLAMP;
	AddressW = CLAMP;
};

//-----------------------------------------------------------------------------
// Vertex Definitions
//-----------------------------------------------------------------------------

struct VS_OUTPUT
{
	float4 Position : POSITION;
	float4 Color : COLOR0;
	float4 TexCoord01 : TEXCOORD0;
	float4 TexCoord23 : TEXCOORD1;
};

struct VS_INPUT
{
	float3 Position : POSITION;
	float4 Color : COLOR0;
	float2 TexCoord : TEXCOORD0;
	float2 Unused : TEXCOORD1;
};

struct PS_INPUT
{
	float4 Color : COLOR0;
	float4 TexCoord01 : TEXCOORD0;
	float4 TexCoord23 : TEXCOORD1;
};

//-----------------------------------------------------------------------------
// Downsample Vertex Shader
//-----------------------------------------------------------------------------

uniform float2 ScreenSize;
uniform float2 TargetSize;
uniform float2 SourceSize;
uniform float2 PrimRatio;
uniform float BloomRescale;

VS_OUTPUT vs_main(VS_INPUT Input)
{
	VS_OUTPUT Output = (VS_OUTPUT)0;
	
	Output.Position = float4(Input.Position.xyz, 1.0f);
	Output.Position.xy /= ScreenSize;
	Output.Position.y = 1.0f - Output.Position.y;
	Output.Position.xy -= float2(0.5f, 0.5f);
	Output.Position.xy *= float2(2.0f, 2.0f);
	Output.Color = Input.Color;
	float2 inversePixel = 1.0f / ScreenSize;
	Output.TexCoord01.xy = Input.Position.xy / ScreenSize + float2(1.0f, 1.0f) / TargetSize;
	//Output.TexCoord01.xy = Input.Position.xy / ScreenSize + float2(0.5f, 0.5f) / TargetSize;
	//Output.TexCoord01.zw = Input.Position.xy / ScreenSize + float2(1.5f, 0.5f) / TargetSize;
	//Output.TexCoord23.xy = Input.Position.xy / ScreenSize + float2(0.5f, 1.5f) / TargetSize;
	//Output.TexCoord23.zw = Input.Position.xy / ScreenSize + float2(1.5f, 1.5f) / TargetSize;

	return Output;
}

//-----------------------------------------------------------------------------
// Downsample Pixel Shader
//-----------------------------------------------------------------------------

float4 ps_main(PS_INPUT Input) : COLOR
{
	float4 texel0 = tex2D(DiffuseSampler, Input.TexCoord01.xy);
	//float4 texel1 = tex2D(DiffuseSampler, Input.TexCoord01.zw);
	//float4 texel2 = tex2D(DiffuseSampler, Input.TexCoord23.xy);
	//float4 texel3 = tex2D(DiffuseSampler, Input.TexCoord23.zw);
	//float4 outTexel = (texel0 + texel1 + texel2 + texel3) * BloomRescale;
	//return float4(outTexel.rgb, 1.0f);
	return float4(texel0.rgb, 1.0f);
}

//-----------------------------------------------------------------------------
// Downsample Effect
//-----------------------------------------------------------------------------

technique TestTechnique
{
	pass Pass0
	{
		Lighting = FALSE;

		Sampler[0] = <DiffuseSampler>;

		VertexShader = compile vs_2_0 vs_main();
		PixelShader  = compile ps_2_0 ps_main();
	}
}
d>1-52/+60 * ui, docs: Added menus to fill a couple of gaps, improved consistency. (#9915) Vas Crabb2022-06-112-3/+3 * hiscore.dat: updates [Leezer] cracyc2022-03-231-229/+377 * Lua engine improvements (#9453) Vas Crabb2022-03-234-20/+20 * plugins/cheatfind: don't try to call a handler for the previous menu option cracyc2022-03-051-0/+1 * hiscore.dat: fix renamed sets cracyc2022-02-131-15/+22 * Moved localised I/O port name lookup into I/O port manager. Vas Crabb2021-12-093-4/+4 * srcclean in preparation for release of MAME 0.238. Vas Crabb2021-11-211-1/+1 * plugins: Work around menu not remembering selection when ref is nullptr. Vas Crabb2021-11-081-1/+3 * plugins: Rewrote timer plugin fixing multiple issues. Vas Crabb2021-11-067-106/+317 * plugins: Reduced amnesia for autofire and inputmacro plugins. Vas Crabb2021-11-058-89/+131 * plugins/cheat: one more flag cracyc2021-11-031-1/+1 * plugins: fix cheatfind menu flags and write xml cheat text to ui container so... cracyc2021-11-033-27/+30 * Two small fixes (bad menu flags in cheat plugin, copy/paste in docs). Vas Crabb2021-11-041-4/+4 * frontend: Don't let the non-menus get as far as trying to draw. Vas Crabb2021-11-041-1/+1 * plugins: Ensure state is destroyed on stop. Vas Crabb2021-11-041-3/+5 * plugins: Simplify logic in autofire and inputmacro plugins to try and avoid l... Vas Crabb2021-11-044-63/+51 * -emu/ioport.cpp: Fixed "MAME lost my joystick settings!!!1!11!