|
|
/* FNA3D - 3D Graphics Library for FNA
|
|
|
*
|
|
|
* Copyright (c) 2020-2022 Ethan Lee
|
|
|
*
|
|
|
* This software is provided 'as-is', without any express or implied warranty.
|
|
|
* In no event will the authors be held liable for any damages arising from
|
|
|
* the use of this software.
|
|
|
*
|
|
|
* Permission is granted to anyone to use this software for any purpose,
|
|
|
* including commercial applications, and to alter it and redistribute it
|
|
|
* freely, subject to the following restrictions:
|
|
|
*
|
|
|
* 1. The origin of this software must not be misrepresented; you must not
|
|
|
* claim that you wrote the original software. If you use this software in a
|
|
|
* product, an acknowledgment in the product documentation would be
|
|
|
* appreciated but is not required.
|
|
|
*
|
|
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
|
* misrepresented as being the original software.
|
|
|
*
|
|
|
* 3. This notice may not be removed or altered from any source distribution.
|
|
|
*
|
|
|
* Ethan "flibitijibibo" Lee <flibitijibibo@flibitijibibo.com>
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
/*
|
|
|
* Shader Source
|
|
|
*/
|
|
|
|
|
|
#if 0
|
|
|
void main(
|
|
|
inout float4 position : SV_POSITION,
|
|
|
inout float2 texcoord : TEXCOORD0
|
|
|
) {
|
|
|
position.y *= -1;
|
|
|
position.zw = float2(0.0f, 1.0f);
|
|
|
}
|
|
|
|
|
|
Texture2D Texture : register(t0);
|
|
|
sampler TextureSampler : register(s0);
|
|
|
float4 main(
|
|
|
float4 position : SV_POSITION,
|
|
|
float2 texcoord : TEXCOORD0
|
|
|
) : SV_TARGET {
|
|
|
return Texture.Sample(TextureSampler, texcoord);
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
|
* Compiled Vertex Shader
|
|
|
*/
|
|
|
|
|
|
#if 0
|
|
|
//
|
|
|
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
|
|
|
//
|
|
|
//
|
|
|
// fxc /T vs_4_0 vertex.fx /Fh vertex.h
|
|
|
//
|
|
|
//
|
|
|
//
|
|
|
// Input signature:
|
|
|
//
|
|
|
// Name Index Mask Register SysValue Format Used
|
|
|
// -------------------- ----- ------ -------- -------- ------ ------
|
|
|
// SV_POSITION 0 xyzw 0 NONE float xy
|
|
|
// TEXCOORD 0 xy 1 NONE float xy
|
|
|
//
|
|
|
//
|
|
|
// Output signature:
|
|
|
//
|
|
|
// Name Index Mask Register SysValue Format Used
|
|
|
// -------------------- ----- ------ -------- -------- ------ ------
|
|
|
// SV_POSITION 0 xyzw 0 POS float xyzw
|
|
|
// TEXCOORD 0 xy 1 NONE float xy
|
|
|
//
|
|
|
vs_4_0
|
|
|
dcl_input v0.xy
|
|
|
dcl_input v1.xy
|
|
|
dcl_output_siv o0.xyzw, position
|
|
|
dcl_output o1.xy
|
|
|
mul o0.xy, v0.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000)
|
|
|
mov o0.zw, l(0,0,0,1.000000)
|
|
|
mov o1.xy, v1.xyxx
|
|
|
ret
|
|
|
// Approximately 4 instruction slots used
|
|
|
#endif
|
|
|
|
|
|
static const uint8_t FAUX_BLIT_VERTEX_SHADER[] =
|
|
|
{
|
|
|
68, 88, 66, 67, 66, 43,
|
|
|
199, 206, 109, 8, 43, 130,
|
|
|
109, 130, 80, 112, 243, 115,
|
|
|
14, 92, 1, 0, 0, 0,
|
|
|
92, 2, 0, 0, 5, 0,
|
|
|
0, 0, 52, 0, 0, 0,
|
|
|
140, 0, 0, 0, 228, 0,
|
|
|
0, 0, 60, 1, 0, 0,
|
|
|
224, 1, 0, 0, 82, 68,
|
|
|
69, 70, 80, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
28, 0, 0, 0, 0, 4,
|
|
|
254, 255, 0, 1, 0, 0,
|
|
|
28, 0, 0, 0, 77, 105,
|
|
|
99, 114, 111, 115, 111, 102,
|
|
|
116, 32, 40, 82, 41, 32,
|
|
|
72, 76, 83, 76, 32, 83,
|
|
|
104, 97, 100, 101, 114, 32,
|
|
|
67, 111, 109, 112, 105, 108,
|
|
|
101, 114, 32, 57, 46, 50,
|
|
|
57, 46, 57, 53, 50, 46,
|
|
|
51, 49, 49, 49, 0, 171,
|
|
|
171, 171, 73, 83, 71, 78,
|
|
|
80, 0, 0, 0, 2, 0,
|
|
|
0, 0, 8, 0, 0, 0,
|
|
|
56, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
3, 0, 0, 0, 0, 0,
|
|
|
0, 0, 15, 3, 0, 0,
|
|
|
68, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
3, 0, 0, 0, 1, 0,
|
|
|
0, 0, 3, 3, 0, 0,
|
|
|
83, 86, 95, 80, 79, 83,
|
|
|
73, 84, 73, 79, 78, 0,
|
|
|
84, 69, 88, 67, 79, 79,
|
|
|
82, 68, 0, 171, 171, 171,
|
|
|
79, 83, 71, 78, 80, 0,
|
|
|
0, 0, 2, 0, 0, 0,
|
|
|
8, 0, 0, 0, 56, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
1, 0, 0, 0, 3, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
15, 0, 0, 0, 68, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 3, 0,
|
|
|
0, 0, 1, 0, 0, 0,
|
|
|
3, 12, 0, 0, 83, 86,
|
|
|
95, 80, 79, 83, 73, 84,
|
|
|
73, 79, 78, 0, 84, 69,
|
|
|
88, 67, 79, 79, 82, 68,
|
|
|
0, 171, 171, 171, 83, 72,
|
|
|
68, 82, 156, 0, 0, 0,
|
|
|
64, 0, 1, 0, 39, 0,
|
|
|
0, 0, 95, 0, 0, 3,
|
|
|
50, 16, 16, 0, 0, 0,
|
|
|
0, 0, 95, 0, 0, 3,
|
|
|
50, 16, 16, 0, 1, 0,
|
|
|
0, 0, 103, 0, 0, 4,
|
|
|
242, 32, 16, 0, 0, 0,
|
|
|
0, 0, 1, 0, 0, 0,
|
|
|
101, 0, 0, 3, 50, 32,
|
|
|
16, 0, 1, 0, 0, 0,
|
|
|
56, 0, 0, 10, 50, 32,
|
|
|
16, 0, 0, 0, 0, 0,
|
|
|
70, 16, 16, 0, 0, 0,
|
|
|
0, 0, 2, 64, 0, 0,
|
|
|
0, 0, 128, 63, 0, 0,
|
|
|
128, 191, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 54, 0,
|
|
|
0, 8, 194, 32, 16, 0,
|
|
|
0, 0, 0, 0, 2, 64,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 128, 63,
|
|
|
54, 0, 0, 5, 50, 32,
|
|
|
16, 0, 1, 0, 0, 0,
|
|
|
70, 16, 16, 0, 1, 0,
|
|
|
0, 0, 62, 0, 0, 1,
|
|
|
83, 84, 65, 84, 116, 0,
|
|
|
0, 0, 4, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 4, 0, 0, 0,
|
|
|
1, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
1, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
2, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0
|
|
|
};
|
|
|
|
|
|
/*
|
|
|
* Compiled Pixel Shader
|
|
|
*/
|
|
|
|
|
|
#if 0
|
|
|
//
|
|
|
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
|
|
|
//
|
|
|
//
|
|
|
// fxc /T ps_4_0 pixel.fx /Fh pixel.h
|
|
|
//
|
|
|
//
|
|
|
// Resource Bindings:
|
|
|
//
|
|
|
// Name Type Format Dim Slot Elements
|
|
|
// ------------------------------ ---------- ------- ----------- ---- --------
|
|
|
// TextureSampler sampler NA NA 0 1
|
|
|
// Texture texture float4 2d 0 1
|
|
|
//
|
|
|
//
|
|
|
//
|
|
|
// Input signature:
|
|
|
//
|
|
|
// Name Index Mask Register SysValue Format Used
|
|
|
// -------------------- ----- ------ -------- -------- ------ ------
|
|
|
// SV_POSITION 0 xyzw 0 POS float
|
|
|
// TEXCOORD 0 xy 1 NONE float xy
|
|
|
//
|
|
|
//
|
|
|
// Output signature:
|
|
|
//
|
|
|
// Name Index Mask Register SysValue Format Used
|
|
|
// -------------------- ----- ------ -------- -------- ------ ------
|
|
|
// SV_TARGET 0 xyzw 0 TARGET float xyzw
|
|
|
//
|
|
|
ps_4_0
|
|
|
dcl_sampler s0, mode_default
|
|
|
dcl_resource_texture2d (float,float,float,float) t0
|
|
|
dcl_input_ps linear v1.xy
|
|
|
dcl_output o0.xyzw
|
|
|
sample o0.xyzw, v1.xyxx, t0.xyzw, s0
|
|
|
ret
|
|
|
// Approximately 2 instruction slots used
|
|
|
#endif
|
|
|
|
|
|
static const uint8_t FAUX_BLIT_PIXEL_SHADER[] =
|
|
|
{
|
|
|
68, 88, 66, 67, 22, 207,
|
|
|
143, 212, 239, 10, 84, 153,
|
|
|
80, 214, 26, 89, 62, 50,
|
|
|
215, 238, 1, 0, 0, 0,
|
|
|
84, 2, 0, 0, 5, 0,
|
|
|
0, 0, 52, 0, 0, 0,
|
|
|
224, 0, 0, 0, 56, 1,
|
|
|
0, 0, 108, 1, 0, 0,
|
|
|
216, 1, 0, 0, 82, 68,
|
|
|
69, 70, 164, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 2, 0, 0, 0,
|
|
|
28, 0, 0, 0, 0, 4,
|
|
|
255, 255, 0, 1, 0, 0,
|
|
|
115, 0, 0, 0, 92, 0,
|
|
|
0, 0, 3, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 1, 0,
|
|
|
0, 0, 1, 0, 0, 0,
|
|
|
107, 0, 0, 0, 2, 0,
|
|
|
0, 0, 5, 0, 0, 0,
|
|
|
4, 0, 0, 0, 255, 255,
|
|
|
255, 255, 0, 0, 0, 0,
|
|
|
1, 0, 0, 0, 13, 0,
|
|
|
0, 0, 84, 101, 120, 116,
|
|
|
117, 114, 101, 83, 97, 109,
|
|
|
112, 108, 101, 114, 0, 84,
|
|
|
101, 120, 116, 117, 114, 101,
|
|
|
0, 77, 105, 99, 114, 111,
|
|
|
115, 111, 102, 116, 32, 40,
|
|
|
82, 41, 32, 72, 76, 83,
|
|
|
76, 32, 83, 104, 97, 100,
|
|
|
101, 114, 32, 67, 111, 109,
|
|
|
112, 105, 108, 101, 114, 32,
|
|
|
57, 46, 50, 57, 46, 57,
|
|
|
53, 50, 46, 51, 49, 49,
|
|
|
49, 0, 73, 83, 71, 78,
|
|
|
80, 0, 0, 0, 2, 0,
|
|
|
0, 0, 8, 0, 0, 0,
|
|
|
56, 0, 0, 0, 0, 0,
|
|
|
0, 0, 1, 0, 0, 0,
|
|
|
3, 0, 0, 0, 0, 0,
|
|
|
0, 0, 15, 0, 0, 0,
|
|
|
68, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
3, 0, 0, 0, 1, 0,
|
|
|
0, 0, 3, 3, 0, 0,
|
|
|
83, 86, 95, 80, 79, 83,
|
|
|
73, 84, 73, 79, 78, 0,
|
|
|
84, 69, 88, 67, 79, 79,
|
|
|
82, 68, 0, 171, 171, 171,
|
|
|
79, 83, 71, 78, 44, 0,
|
|
|
0, 0, 1, 0, 0, 0,
|
|
|
8, 0, 0, 0, 32, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 3, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
15, 0, 0, 0, 83, 86,
|
|
|
95, 84, 65, 82, 71, 69,
|
|
|
84, 0, 171, 171, 83, 72,
|
|
|
68, 82, 100, 0, 0, 0,
|
|
|
64, 0, 0, 0, 25, 0,
|
|
|
0, 0, 90, 0, 0, 3,
|
|
|
0, 96, 16, 0, 0, 0,
|
|
|
0, 0, 88, 24, 0, 4,
|
|
|
0, 112, 16, 0, 0, 0,
|
|
|
0, 0, 85, 85, 0, 0,
|
|
|
98, 16, 0, 3, 50, 16,
|
|
|
16, 0, 1, 0, 0, 0,
|
|
|
101, 0, 0, 3, 242, 32,
|
|
|
16, 0, 0, 0, 0, 0,
|
|
|
69, 0, 0, 9, 242, 32,
|
|
|
16, 0, 0, 0, 0, 0,
|
|
|
70, 16, 16, 0, 1, 0,
|
|
|
0, 0, 70, 126, 16, 0,
|
|
|
0, 0, 0, 0, 0, 96,
|
|
|
16, 0, 0, 0, 0, 0,
|
|
|
62, 0, 0, 1, 83, 84,
|
|
|
65, 84, 116, 0, 0, 0,
|
|
|
2, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
2, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 1, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 1, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
0, 0
|
|
|
};
|
|
|
|