[UI] UI common shaders to XeSL

This commit is contained in:
Triang3l 2022-02-06 22:48:24 +03:00
parent e07ed95f53
commit 9b1fdac986
76 changed files with 6490 additions and 6926 deletions

View File

@ -0,0 +1,21 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XENIA_UI_SHADERS_AMD_LANGUAGE_XESLI_
#define XENIA_UI_SHADERS_AMD_LANGUAGE_XESLI_
#if XESL_LANGUAGE_GLSL
#define A_GLSL 1
#elif XESL_LANGUAGE_HLSL
#define A_HLSL 1
#else
#error Unknown shading language for AMD shaders.
#endif
#endif // XENIA_UI_SHADERS_AMD_LANGUAGE_XESLI_

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeBilinearConstants
// cbuffer xesl_push_constants
// {
//
// int2 xe_bilinear_output_offset; // Offset: 0 Size: 8
@ -18,9 +18,9 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_sampler_linear_clamp sampler NA NA S0 s0 1
// xe_texture texture float3 2d T0 t0 1
// XeBilinearConstants cbuffer NA NA CB0 cb0 1
// xesl_id_sampler_xe_bilinear_source sampler NA NA S0 s0 1
// xesl_id_texture_xe_bilinear_source texture float4 2d T0 t0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -309,7 +309,7 @@ mul r0.zw, r0.zzzw, CB0[0][0].zzzw
sample_l r1.xyz, r0.zwzz, T0[0].xyzw, S0[0], l(0.000000)
bfi r0.y, l(4), l(4), r0.y, l(0)
bfi r0.x, l(4), l(0), r0.x, r0.y
add o0.xyz, r1.xyzx, icb[r0.x + 0].xxxx
add_sat o0.xyz, r1.xyzx, icb[r0.x + 0].xxxx
mov o0.w, l(1.000000)
ret
// Approximately 11 instruction slots used
@ -317,21 +317,21 @@ ret
const BYTE guest_output_bilinear_dither_ps[] =
{
68, 88, 66, 67, 238, 251,
7, 36, 12, 102, 119, 199,
78, 59, 74, 185, 195, 243,
55, 64, 1, 0, 0, 0,
56, 21, 0, 0, 5, 0,
68, 88, 66, 67, 33, 174,
209, 229, 79, 78, 56, 218,
208, 208, 178, 136, 129, 86,
50, 203, 1, 0, 0, 0,
92, 21, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
68, 2, 0, 0, 120, 2,
0, 0, 172, 2, 0, 0,
156, 20, 0, 0, 82, 68,
69, 70, 8, 2, 0, 0,
1, 0, 0, 0, 236, 0,
104, 2, 0, 0, 156, 2,
0, 0, 208, 2, 0, 0,
192, 20, 0, 0, 82, 68,
69, 70, 44, 2, 0, 0,
1, 0, 0, 0, 16, 1,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
224, 1, 0, 0, 19, 19,
4, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -343,43 +343,49 @@ const BYTE guest_output_bilinear_dither_ps[] =
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 204, 0,
0, 0, 0, 0, 215, 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, 8, 0, 0, 0,
0, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 215, 0, 0, 0,
0, 0, 250, 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,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
120, 101, 95, 115, 97, 109,
112, 108, 101, 114, 95, 108,
105, 110, 101, 97, 114, 95,
99, 108, 97, 109, 112, 0,
120, 101, 95, 116, 101, 120,
116, 117, 114, 101, 0, 88,
101, 66, 105, 108, 105, 110,
101, 97, 114, 67, 111, 110,
115, 116, 97, 110, 116, 115,
0, 171, 215, 0, 0, 0,
2, 0, 0, 0, 4, 1,
120, 101, 115, 108, 95, 105,
100, 95, 115, 97, 109, 112,
108, 101, 114, 95, 120, 101,
95, 98, 105, 108, 105, 110,
101, 97, 114, 95, 115, 111,
117, 114, 99, 101, 0, 120,
101, 115, 108, 95, 105, 100,
95, 116, 101, 120, 116, 117,
114, 101, 95, 120, 101, 95,
98, 105, 108, 105, 110, 101,
97, 114, 95, 115, 111, 117,
114, 99, 101, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
171, 171, 250, 0, 0, 0,
2, 0, 0, 0, 40, 1,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 84, 1, 0, 0,
0, 0, 120, 1, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 2, 0, 0, 0,
116, 1, 0, 0, 0, 0,
152, 1, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
152, 1, 0, 0, 8, 0,
188, 1, 0, 0, 8, 0,
0, 0, 8, 0, 0, 0,
2, 0, 0, 0, 188, 1,
2, 0, 0, 0, 224, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
@ -394,7 +400,7 @@ const BYTE guest_output_bilinear_dither_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 110, 1, 0, 0,
0, 0, 146, 1, 0, 0,
120, 101, 95, 98, 105, 108,
105, 110, 101, 97, 114, 95,
111, 117, 116, 112, 117, 116,
@ -406,7 +412,7 @@ const BYTE guest_output_bilinear_dither_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 180, 1, 0, 0,
0, 0, 216, 1, 0, 0,
77, 105, 99, 114, 111, 115,
111, 102, 116, 32, 40, 82,
41, 32, 72, 76, 83, 76,
@ -1187,7 +1193,7 @@ const BYTE guest_output_bilinear_dither_ps[] =
0, 0, 10, 0, 16, 0,
0, 0, 0, 0, 26, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 8, 114, 32,
0, 32, 0, 8, 114, 32,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 6, 144, 144, 0,

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeBilinearConstants
// cbuffer xesl_push_constants
// {
//
// int2 xe_bilinear_output_offset; // Offset: 0 Size: 8
@ -18,9 +18,9 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_sampler_linear_clamp sampler NA NA S0 s0 1
// xe_texture texture float3 2d T0 t0 1
// XeBilinearConstants cbuffer NA NA CB0 cb0 1
// xesl_id_sampler_xe_bilinear_source sampler NA NA S0 s0 1
// xesl_id_texture_xe_bilinear_source texture float4 2d T0 t0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -59,21 +59,21 @@ ret
const BYTE guest_output_bilinear_ps[] =
{
68, 88, 66, 67, 195, 73,
6, 106, 30, 227, 35, 134,
146, 186, 4, 157, 98, 172,
18, 157, 1, 0, 0, 0,
204, 4, 0, 0, 5, 0,
68, 88, 66, 67, 44, 10,
188, 16, 29, 197, 185, 8,
92, 81, 39, 219, 196, 94,
69, 224, 1, 0, 0, 0,
240, 4, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
68, 2, 0, 0, 120, 2,
0, 0, 172, 2, 0, 0,
48, 4, 0, 0, 82, 68,
69, 70, 8, 2, 0, 0,
1, 0, 0, 0, 236, 0,
104, 2, 0, 0, 156, 2,
0, 0, 208, 2, 0, 0,
84, 4, 0, 0, 82, 68,
69, 70, 44, 2, 0, 0,
1, 0, 0, 0, 16, 1,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
224, 1, 0, 0, 19, 19,
4, 2, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -85,43 +85,49 @@ const BYTE guest_output_bilinear_ps[] =
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 204, 0,
0, 0, 0, 0, 215, 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, 8, 0, 0, 0,
0, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 215, 0, 0, 0,
0, 0, 250, 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,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
120, 101, 95, 115, 97, 109,
112, 108, 101, 114, 95, 108,
105, 110, 101, 97, 114, 95,
99, 108, 97, 109, 112, 0,
120, 101, 95, 116, 101, 120,
116, 117, 114, 101, 0, 88,
101, 66, 105, 108, 105, 110,
101, 97, 114, 67, 111, 110,
115, 116, 97, 110, 116, 115,
0, 171, 215, 0, 0, 0,
2, 0, 0, 0, 4, 1,
120, 101, 115, 108, 95, 105,
100, 95, 115, 97, 109, 112,
108, 101, 114, 95, 120, 101,
95, 98, 105, 108, 105, 110,
101, 97, 114, 95, 115, 111,
117, 114, 99, 101, 0, 120,
101, 115, 108, 95, 105, 100,
95, 116, 101, 120, 116, 117,
114, 101, 95, 120, 101, 95,
98, 105, 108, 105, 110, 101,
97, 114, 95, 115, 111, 117,
114, 99, 101, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
171, 171, 250, 0, 0, 0,
2, 0, 0, 0, 40, 1,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 84, 1, 0, 0,
0, 0, 120, 1, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 2, 0, 0, 0,
116, 1, 0, 0, 0, 0,
152, 1, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
152, 1, 0, 0, 8, 0,
188, 1, 0, 0, 8, 0,
0, 0, 8, 0, 0, 0,
2, 0, 0, 0, 188, 1,
2, 0, 0, 0, 224, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
@ -136,7 +142,7 @@ const BYTE guest_output_bilinear_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 110, 1, 0, 0,
0, 0, 146, 1, 0, 0,
120, 101, 95, 98, 105, 108,
105, 110, 101, 97, 114, 95,
111, 117, 116, 112, 117, 116,
@ -148,7 +154,7 @@ const BYTE guest_output_bilinear_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 180, 1, 0, 0,
0, 0, 216, 1, 0, 0,
77, 105, 99, 114, 111, 115,
111, 102, 116, 32, 40, 82,
41, 32, 72, 76, 83, 76,

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeCasSharpenConstants
// cbuffer xesl_push_constants
// {
//
// int2 xe_cas_output_offset; // Offset: 0 Size: 8
@ -18,8 +18,8 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_texture texture float3 2d T0 t0 1
// XeCasSharpenConstants cbuffer NA NA CB0 cb0 1
// xesl_id_texture_xe_cas_source texture float4 2d T0 t0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -97,21 +97,21 @@ ret
const BYTE guest_output_ffx_cas_sharpen_ps[] =
{
68, 88, 66, 67, 2, 226,
230, 16, 201, 205, 207, 54,
189, 193, 184, 163, 140, 156,
247, 96, 1, 0, 0, 0,
40, 9, 0, 0, 5, 0,
68, 88, 66, 67, 156, 173,
216, 107, 79, 128, 79, 193,
241, 218, 239, 80, 94, 13,
168, 81, 1, 0, 0, 0,
56, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
4, 2, 0, 0, 56, 2,
0, 0, 108, 2, 0, 0,
140, 8, 0, 0, 82, 68,
69, 70, 200, 1, 0, 0,
1, 0, 0, 0, 176, 0,
20, 2, 0, 0, 72, 2,
0, 0, 124, 2, 0, 0,
156, 8, 0, 0, 82, 68,
69, 70, 216, 1, 0, 0,
1, 0, 0, 0, 192, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
160, 1, 0, 0, 19, 19,
176, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -121,143 +121,177 @@ const BYTE guest_output_ffx_cas_sharpen_ps[] =
0, 0, 5, 0, 0, 0,
4, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
1, 0, 0, 0, 8, 0,
1, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 151, 0,
0, 0, 0, 0, 170, 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, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 120, 101, 95, 116,
101, 120, 116, 117, 114, 101,
0, 88, 101, 67, 97, 115,
83, 104, 97, 114, 112, 101,
110, 67, 111, 110, 115, 116,
97, 110, 116, 115, 0, 171,
171, 171, 151, 0, 0, 0,
2, 0, 0, 0, 200, 0,
0, 0, 16, 0, 0, 0,
0, 0, 120, 101, 115, 108,
95, 105, 100, 95, 116, 101,
120, 116, 117, 114, 101, 95,
120, 101, 95, 99, 97, 115,
95, 115, 111, 117, 114, 99,
101, 0, 120, 101, 115, 108,
95, 112, 117, 115, 104, 95,
99, 111, 110, 115, 116, 97,
110, 116, 115, 0, 171, 171,
170, 0, 0, 0, 2, 0,
0, 0, 216, 0, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 24, 1, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 2, 0, 0, 0,
52, 1, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
88, 1, 0, 0, 8, 0,
0, 0, 4, 0, 0, 0,
2, 0, 0, 0, 124, 1,
40, 1, 0, 0, 0, 0,
0, 0, 8, 0, 0, 0,
2, 0, 0, 0, 68, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 120, 101,
95, 99, 97, 115, 95, 111,
117, 116, 112, 117, 116, 95,
111, 102, 102, 115, 101, 116,
0, 105, 110, 116, 50, 0,
171, 171, 1, 0, 2, 0,
1, 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, 45, 1,
0, 0, 0, 0, 104, 1,
0, 0, 8, 0, 0, 0,
4, 0, 0, 0, 2, 0,
0, 0, 140, 1, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 120, 101, 95, 99,
97, 115, 95, 115, 104, 97,
114, 112, 110, 101, 115, 115,
95, 112, 111, 115, 116, 95,
115, 101, 116, 117, 112, 0,
102, 108, 111, 97, 116, 0,
171, 171, 0, 0, 3, 0,
1, 0, 1, 0, 0, 0,
97, 115, 95, 111, 117, 116,
112, 117, 116, 95, 111, 102,
102, 115, 101, 116, 0, 105,
110, 116, 50, 0, 171, 171,
1, 0, 2, 0, 1, 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, 116, 1,
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, 49, 48, 46, 49, 0,
73, 83, 71, 78, 44, 0,
0, 0, 1, 0, 0, 0,
8, 0, 0, 0, 32, 0,
0, 0, 61, 1, 0, 0,
120, 101, 95, 99, 97, 115,
95, 115, 104, 97, 114, 112,
110, 101, 115, 115, 95, 112,
111, 115, 116, 95, 115, 101,
116, 117, 112, 0, 102, 108,
111, 97, 116, 0, 171, 171,
0, 0, 3, 0, 1, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
15, 3, 0, 0, 83, 86,
95, 80, 111, 115, 105, 116,
105, 111, 110, 0, 79, 83,
0, 0, 0, 0, 0, 0,
0, 0, 132, 1, 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, 49,
48, 46, 49, 0, 73, 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, 0, 0, 1, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 15, 0,
0, 0, 83, 86, 95, 84,
97, 114, 103, 101, 116, 0,
171, 171, 83, 72, 69, 88,
24, 6, 0, 0, 81, 0,
0, 0, 134, 1, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 88, 24, 0, 7,
70, 126, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 85, 85,
0, 0, 0, 0, 0, 0,
100, 32, 0, 4, 50, 16,
16, 0, 0, 0, 0, 0,
1, 0, 0, 0, 101, 0,
0, 3, 242, 32, 16, 0,
0, 0, 0, 0, 104, 0,
0, 2, 5, 0, 0, 0,
27, 0, 0, 5, 50, 0,
16, 0, 0, 0, 0, 0,
70, 16, 16, 0, 0, 0,
0, 0, 30, 0, 0, 10,
50, 0, 16, 0, 0, 0,
0, 0, 70, 0, 16, 0,
0, 0, 0, 0, 70, 128,
48, 128, 65, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
30, 0, 0, 10, 242, 0,
16, 0, 1, 0, 0, 0,
70, 4, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 54, 0,
0, 5, 50, 0, 16, 0,
2, 0, 0, 0, 230, 10,
16, 0, 1, 0, 0, 0,
54, 0, 0, 8, 194, 0,
16, 0, 2, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
114, 0, 16, 0, 2, 0,
0, 0, 70, 14, 16, 0,
2, 0, 0, 0, 70, 126,
0, 0, 0, 0, 15, 3,
0, 0, 83, 86, 95, 80,
111, 115, 105, 116, 105, 111,
110, 0, 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, 54, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0,
0, 0, 15, 0, 0, 0,
83, 86, 95, 84, 97, 114,
103, 101, 116, 0, 171, 171,
83, 72, 69, 88, 24, 6,
0, 0, 81, 0, 0, 0,
134, 1, 0, 0, 106, 8,
0, 1, 89, 0, 0, 7,
70, 142, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
88, 24, 0, 7, 70, 126,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 85, 85, 0, 0,
0, 0, 0, 0, 100, 32,
0, 4, 50, 16, 16, 0,
0, 0, 0, 0, 1, 0,
0, 0, 101, 0, 0, 3,
242, 32, 16, 0, 0, 0,
0, 0, 104, 0, 0, 2,
5, 0, 0, 0, 27, 0,
0, 5, 50, 0, 16, 0,
0, 0, 0, 0, 70, 16,
16, 0, 0, 0, 0, 0,
30, 0, 0, 10, 50, 0,
16, 0, 0, 0, 0, 0,
70, 0, 16, 0, 0, 0,
0, 0, 70, 128, 48, 128,
65, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
1, 0, 0, 0, 70, 4,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 54, 0, 0, 5,
50, 0, 16, 0, 2, 0,
0, 0, 230, 10, 16, 0,
1, 0, 0, 0, 54, 0,
0, 8, 194, 0, 16, 0,
1, 0, 0, 0, 2, 64,
2, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
45, 0, 0, 8, 114, 0,
16, 0, 2, 0, 0, 0,
70, 14, 16, 0, 2, 0,
0, 0, 70, 126, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 8,
194, 0, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 45, 0,
0, 8, 114, 0, 16, 0,
1, 0, 0, 0, 70, 14,
16, 0, 1, 0, 0, 0,
70, 14, 16, 0, 1, 0,
70, 126, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
54, 0, 0, 8, 194, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
114, 0, 16, 0, 3, 0,
0, 0, 70, 14, 16, 0,
0, 0, 0, 0, 70, 126,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 30, 0,
0, 10, 242, 0, 16, 0,
0, 0, 0, 0, 70, 4,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 5,
50, 0, 16, 0, 4, 0,
0, 0, 230, 10, 16, 0,
0, 0, 0, 0, 54, 0,
0, 8, 194, 0, 16, 0,
4, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
45, 0, 0, 8, 114, 0,
16, 0, 4, 0, 0, 0,
70, 14, 16, 0, 4, 0,
0, 0, 70, 126, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 8,
@ -267,217 +301,185 @@ const BYTE guest_output_ffx_cas_sharpen_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 45, 0,
0, 8, 114, 0, 16, 0,
3, 0, 0, 0, 70, 14,
0, 0, 0, 0, 70, 14,
16, 0, 0, 0, 0, 0,
70, 126, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
30, 0, 0, 10, 242, 0,
16, 0, 0, 0, 0, 0,
70, 4, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 54, 0,
0, 5, 50, 0, 16, 0,
4, 0, 0, 0, 230, 10,
16, 0, 0, 0, 0, 0,
54, 0, 0, 8, 194, 0,
16, 0, 4, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 0, 8,
114, 0, 16, 0, 4, 0,
0, 0, 70, 14, 16, 0,
4, 0, 0, 0, 70, 126,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 54, 0,
0, 8, 194, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
45, 0, 0, 8, 114, 0,
16, 0, 0, 0, 0, 0,
70, 14, 16, 0, 0, 0,
0, 0, 70, 126, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 7,
114, 0, 16, 0, 2, 0,
0, 0, 70, 2, 16, 0,
2, 0, 0, 0, 70, 2,
16, 0, 2, 0, 0, 0,
56, 0, 0, 7, 114, 0,
16, 0, 2, 0, 0, 0,
70, 2, 16, 0, 2, 0,
0, 0, 70, 2, 16, 0,
2, 0, 0, 0, 56, 0,
0, 7, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 56, 0,
0, 7, 130, 0, 16, 0,
0, 0, 0, 0, 26, 0,
16, 0, 3, 0, 0, 0,
26, 0, 16, 0, 3, 0,
0, 0, 56, 0, 0, 7,
114, 0, 16, 0, 4, 0,
0, 0, 70, 2, 16, 0,
4, 0, 0, 0, 70, 2,
16, 0, 4, 0, 0, 0,
130, 0, 16, 0, 0, 0,
0, 0, 26, 0, 16, 0,
3, 0, 0, 0, 26, 0,
16, 0, 3, 0, 0, 0,
56, 0, 0, 7, 114, 0,
16, 0, 4, 0, 0, 0,
70, 2, 16, 0, 4, 0,
0, 0, 70, 2, 16, 0,
4, 0, 0, 0, 56, 0,
0, 7, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 51, 0,
0, 7, 130, 0, 16, 0,
1, 0, 0, 0, 58, 0,
16, 0, 0, 0, 0, 0,
26, 0, 16, 0, 4, 0,
0, 0, 51, 0, 0, 7,
130, 0, 16, 0, 1, 0,
0, 0, 58, 0, 16, 0,
1, 0, 0, 0, 26, 0,
16, 0, 1, 0, 0, 0,
51, 0, 0, 7, 130, 0,
16, 0, 2, 0, 0, 0,
26, 0, 16, 0, 0, 0,
0, 0, 26, 0, 16, 0,
2, 0, 0, 0, 51, 0,
0, 7, 130, 0, 16, 0,
1, 0, 0, 0, 58, 0,
16, 0, 1, 0, 0, 0,
58, 0, 16, 0, 2, 0,
0, 0, 52, 0, 0, 7,
130, 0, 16, 0, 0, 0,
0, 0, 58, 0, 16, 0,
0, 0, 0, 0, 26, 0,
16, 0, 4, 0, 0, 0,
52, 0, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0,
58, 0, 16, 0, 0, 0,
51, 0, 0, 7, 130, 0,
16, 0, 1, 0, 0, 0,
58, 0, 16, 0, 1, 0,
0, 0, 26, 0, 16, 0,
1, 0, 0, 0, 52, 0,
1, 0, 0, 0, 51, 0,
0, 7, 130, 0, 16, 0,
2, 0, 0, 0, 26, 0,
16, 0, 0, 0, 0, 0,
26, 0, 16, 0, 2, 0,
0, 0, 51, 0, 0, 7,
130, 0, 16, 0, 1, 0,
0, 0, 58, 0, 16, 0,
1, 0, 0, 0, 58, 0,
16, 0, 2, 0, 0, 0,
52, 0, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0,
58, 0, 16, 0, 0, 0,
0, 0, 26, 0, 16, 0,
4, 0, 0, 0, 52, 0,
0, 7, 130, 0, 16, 0,
0, 0, 0, 0, 58, 0,
16, 0, 0, 0, 0, 0,
26, 0, 16, 0, 1, 0,
0, 0, 52, 0, 0, 7,
130, 0, 16, 0, 2, 0,
0, 0, 26, 0, 16, 0,
0, 0, 0, 0, 26, 0,
16, 0, 2, 0, 0, 0,
52, 0, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0,
58, 0, 16, 0, 0, 0,
0, 0, 58, 0, 16, 0,
2, 0, 0, 0, 30, 0,
0, 8, 130, 0, 16, 0,
2, 0, 0, 0, 58, 0,
16, 128, 65, 0, 0, 0,
0, 0, 0, 0, 1, 64,
0, 0, 187, 126, 240, 126,
0, 0, 0, 8, 130, 0,
16, 0, 0, 0, 0, 0,
58, 0, 16, 128, 65, 0,
0, 0, 0, 0, 0, 0,
1, 64, 0, 0, 0, 0,
128, 63, 51, 0, 0, 7,
130, 0, 16, 0, 0, 0,
0, 0, 58, 0, 16, 0,
0, 0, 0, 0, 58, 0,
16, 0, 2, 0, 0, 0,
16, 0, 1, 0, 0, 0,
56, 32, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0,
58, 0, 16, 0, 2, 0,
0, 0, 58, 0, 16, 0,
0, 0, 0, 0, 85, 0,
0, 7, 130, 0, 16, 0,
0, 0, 0, 0, 58, 0,
16, 0, 0, 0, 0, 0,
1, 64, 0, 0, 1, 0,
0, 0, 30, 0, 0, 7,
130, 0, 16, 0, 0, 0,
0, 0, 58, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 57, 70, 188, 31,
56, 0, 0, 9, 130, 0,
16, 0, 0, 0, 0, 0,
58, 0, 16, 0, 0, 0,
0, 0, 42, 128, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
50, 0, 0, 9, 130, 0,
16, 0, 1, 0, 0, 0,
58, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 128, 64, 1, 64,
0, 0, 0, 0, 128, 63,
30, 0, 0, 8, 130, 0,
16, 0, 2, 0, 0, 0,
58, 0, 16, 128, 65, 0,
0, 0, 0, 0, 0, 0,
1, 64, 0, 0, 187, 126,
240, 126, 0, 0, 0, 8,
130, 0, 16, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 64, 0, 0, 255, 159,
241, 126, 50, 0, 0, 10,
130, 0, 16, 0, 1, 0,
0, 0, 58, 0, 16, 128,
65, 0, 0, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 128, 63, 51, 0,
0, 7, 130, 0, 16, 0,
0, 0, 0, 0, 58, 0,
16, 0, 0, 0, 0, 0,
65, 0, 0, 0, 2, 0,
0, 0, 58, 0, 16, 0,
1, 0, 0, 0, 1, 64,
0, 0, 0, 0, 0, 64,
56, 0, 0, 7, 130, 0,
16, 0, 1, 0, 0, 0,
58, 0, 16, 0, 1, 0,
0, 0, 56, 32, 0, 7,
130, 0, 16, 0, 0, 0,
0, 0, 58, 0, 16, 0,
2, 0, 0, 0, 58, 0,
16, 0, 0, 0, 0, 0,
85, 0, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0,
58, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
1, 0, 0, 0, 30, 0,
0, 7, 130, 0, 16, 0,
0, 0, 0, 0, 58, 0,
16, 0, 0, 0, 0, 0,
1, 64, 0, 0, 57, 70,
188, 31, 56, 0, 0, 9,
130, 0, 16, 0, 0, 0,
0, 0, 58, 0, 16, 0,
0, 0, 0, 0, 42, 128,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 50, 0, 0, 9,
130, 0, 16, 0, 1, 0,
0, 0, 58, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 0, 0, 128, 64,
1, 64, 0, 0, 0, 0,
128, 63, 30, 0, 0, 8,
130, 0, 16, 0, 2, 0,
0, 0, 58, 0, 16, 128,
65, 0, 0, 0, 1, 0,
0, 0, 1, 64, 0, 0,
255, 159, 241, 126, 50, 0,
0, 10, 130, 0, 16, 0,
1, 0, 0, 0, 58, 0,
16, 128, 65, 0, 0, 0,
2, 0, 0, 0, 58, 0,
16, 0, 1, 0, 0, 0,
1, 64, 0, 0, 0, 0,
0, 64, 56, 0, 0, 7,
130, 0, 16, 0, 1, 0,
0, 0, 58, 0, 16, 0,
1, 0, 0, 0, 58, 0,
16, 0, 2, 0, 0, 0,
56, 0, 0, 7, 114, 0,
16, 0, 1, 0, 0, 0,
246, 15, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 50, 0,
0, 9, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 2, 0, 0, 0,
246, 15, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 50, 0,
0, 9, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 4, 0, 0, 0,
246, 15, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 50, 0,
0, 9, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
246, 15, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 50, 0,
0, 9, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 56, 32,
2, 0, 0, 0, 56, 0,
0, 7, 114, 0, 16, 0,
0, 0, 0, 0, 246, 15,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 75, 0, 0, 5,
114, 32, 16, 0, 0, 0,
1, 0, 0, 0, 246, 15,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 50, 0, 0, 9,
114, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 54, 0,
0, 5, 130, 32, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 0, 0, 128, 63,
62, 0, 0, 1, 83, 84,
65, 84, 148, 0, 0, 0,
49, 0, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0,
2, 0, 0, 0, 27, 0,
0, 0, 6, 0, 0, 0,
1, 0, 0, 0, 1, 0,
2, 0, 0, 0, 246, 15,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 50, 0, 0, 9,
114, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0,
4, 0, 0, 0, 246, 15,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 50, 0, 0, 9,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 246, 15,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 50, 0, 0, 9,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 56, 32, 0, 7,
114, 0, 16, 0, 0, 0,
0, 0, 246, 15, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
75, 0, 0, 5, 114, 32,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 54, 0, 0, 5,
130, 32, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0,
0, 0, 128, 63, 62, 0,
0, 1, 83, 84, 65, 84,
148, 0, 0, 0, 49, 0,
0, 0, 5, 0, 0, 0,
0, 0, 0, 0, 2, 0,
0, 0, 27, 0, 0, 0,
6, 0, 0, 0, 1, 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, 5, 0,
0, 0, 0, 0, 0, 0,
5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 8, 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,
@ -487,5 +489,6 @@ const BYTE guest_output_ffx_cas_sharpen_ps[] =
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
};

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeFsrEasuConstants
// cbuffer xesl_push_constants
// {
//
// float2 xe_fsr_easu_input_output_size_ratio;// Offset: 0 Size: 8
@ -18,9 +18,9 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_sampler_linear_clamp sampler NA NA S0 s0 1
// xe_texture texture float3 2d T0 t0 1
// XeFsrEasuConstants cbuffer NA NA CB0 cb0 1
// xesl_id_sampler_xe_fsr_easu_source sampler NA NA S0 s0 1
// xesl_id_texture_xe_fsr_easu_source texture float4 2d T0 t0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -45,9 +45,9 @@ dcl_resource_texture2d (float,float,float,float) T0[0:0], space=0
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 22
mul r0.w, CB0[0][0].w, l(4.000000)
mul r0.w, l(4.000000), CB0[0][0].w
mad r0.xy, CB0[0][0].xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(-0.500000, -0.500000, 0.000000, 0.000000)
mul r1.xyz, CB0[0][0].zwwz, l(1.000000, 1.000000, -1.000000, 0.000000)
mul r1.xyz, l(1.000000, 1.000000, -1.000000, 0.000000), CB0[0][0].zwwz
ftou r2.xy, v0.xyxx
utof r2.xy, r2.xyxx
mad r0.xy, r2.xyxx, CB0[0][0].xyxx, r0.xyxx
@ -349,21 +349,21 @@ ret
const BYTE guest_output_ffx_fsr_easu_ps[] =
{
68, 88, 66, 67, 240, 45,
22, 153, 167, 152, 10, 67,
48, 29, 75, 57, 104, 138,
197, 43, 1, 0, 0, 0,
236, 40, 0, 0, 5, 0,
68, 88, 66, 67, 244, 213,
198, 18, 209, 124, 162, 152,
164, 52, 152, 171, 230, 26,
6, 168, 1, 0, 0, 0,
16, 41, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
36, 2, 0, 0, 88, 2,
0, 0, 140, 2, 0, 0,
80, 40, 0, 0, 82, 68,
69, 70, 232, 1, 0, 0,
1, 0, 0, 0, 236, 0,
72, 2, 0, 0, 124, 2,
0, 0, 176, 2, 0, 0,
116, 40, 0, 0, 82, 68,
69, 70, 12, 2, 0, 0,
1, 0, 0, 0, 16, 1,
0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
191, 1, 0, 0, 19, 19,
227, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -375,43 +375,49 @@ const BYTE guest_output_ffx_fsr_easu_ps[] =
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 204, 0,
0, 0, 0, 0, 215, 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, 8, 0, 0, 0,
0, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 215, 0, 0, 0,
0, 0, 250, 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,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
120, 101, 95, 115, 97, 109,
112, 108, 101, 114, 95, 108,
105, 110, 101, 97, 114, 95,
99, 108, 97, 109, 112, 0,
120, 101, 95, 116, 101, 120,
116, 117, 114, 101, 0, 88,
101, 70, 115, 114, 69, 97,
115, 117, 67, 111, 110, 115,
120, 101, 115, 108, 95, 105,
100, 95, 115, 97, 109, 112,
108, 101, 114, 95, 120, 101,
95, 102, 115, 114, 95, 101,
97, 115, 117, 95, 115, 111,
117, 114, 99, 101, 0, 120,
101, 115, 108, 95, 105, 100,
95, 116, 101, 120, 116, 117,
114, 101, 95, 120, 101, 95,
102, 115, 114, 95, 101, 97,
115, 117, 95, 115, 111, 117,
114, 99, 101, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
171, 171, 215, 0, 0, 0,
2, 0, 0, 0, 4, 1,
171, 171, 250, 0, 0, 0,
2, 0, 0, 0, 40, 1,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 84, 1, 0, 0,
0, 0, 120, 1, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 2, 0, 0, 0,
128, 1, 0, 0, 0, 0,
164, 1, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
164, 1, 0, 0, 8, 0,
200, 1, 0, 0, 8, 0,
0, 0, 8, 0, 0, 0,
2, 0, 0, 0, 128, 1,
2, 0, 0, 0, 164, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
@ -428,7 +434,7 @@ const BYTE guest_output_ffx_fsr_easu_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 120, 1, 0, 0,
0, 0, 156, 1, 0, 0,
120, 101, 95, 102, 115, 114,
95, 101, 97, 115, 117, 95,
105, 110, 112, 117, 116, 95,
@ -482,11 +488,11 @@ const BYTE guest_output_ffx_fsr_easu_ps[] =
104, 0, 0, 2, 22, 0,
0, 0, 56, 0, 0, 9,
130, 0, 16, 0, 0, 0,
0, 0, 58, 128, 48, 0,
0, 0, 1, 64, 0, 0,
0, 0, 128, 64, 58, 128,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 64, 0, 0, 0, 0,
128, 64, 50, 0, 0, 17,
0, 0, 50, 0, 0, 17,
50, 0, 16, 0, 0, 0,
0, 0, 70, 128, 48, 0,
0, 0, 0, 0, 0, 0,
@ -499,12 +505,12 @@ const BYTE guest_output_ffx_fsr_easu_ps[] =
0, 191, 0, 0, 0, 0,
0, 0, 0, 0, 56, 0,
0, 12, 114, 0, 16, 0,
1, 0, 0, 0, 230, 139,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 2, 64, 0, 0,
1, 0, 0, 0, 2, 64,
0, 0, 0, 0, 128, 63,
0, 0, 128, 63, 0, 0,
128, 63, 0, 0, 128, 191,
128, 191, 0, 0, 0, 0,
230, 139, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 28, 0,
0, 5, 50, 0, 16, 0,
2, 0, 0, 0, 70, 16,

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeFsrRcasConstants
// cbuffer xesl_push_constants
// {
//
// int2 xe_fsr_rcas_output_offset; // Offset: 0 Size: 8
@ -18,8 +18,8 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_texture texture float3 2d T0 t0 1
// XeFsrRcasConstants cbuffer NA NA CB0 cb0 1
// xesl_id_texture_xe_fsr_rcas_source texture float4 2d T0 t0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -347,7 +347,7 @@ mad r1.xyz, r0.zzzz, r5.xyzx, r1.xyzx
add r1.xyz, r3.xyzx, r1.xyzx
bfi r0.y, l(4), l(4), r0.y, l(0)
bfi r0.x, l(4), l(0), r0.x, r0.y
mad o0.xyz, r1.xyzx, r0.wwww, icb[r0.x + 0].xxxx
mad_sat o0.xyz, r1.xyzx, r0.wwww, icb[r0.x + 0].xxxx
mov o0.w, l(1.000000)
ret
// Approximately 51 instruction slots used
@ -355,21 +355,21 @@ ret
const BYTE guest_output_ffx_fsr_rcas_dither_ps[] =
{
68, 88, 66, 67, 171, 87,
217, 222, 87, 57, 211, 199,
141, 108, 123, 139, 108, 18,
226, 124, 1, 0, 0, 0,
192, 25, 0, 0, 5, 0,
68, 88, 66, 67, 243, 208,
149, 237, 137, 44, 118, 107,
240, 46, 48, 108, 54, 213,
2, 137, 1, 0, 0, 0,
216, 25, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
8, 2, 0, 0, 60, 2,
0, 0, 112, 2, 0, 0,
36, 25, 0, 0, 82, 68,
69, 70, 204, 1, 0, 0,
1, 0, 0, 0, 172, 0,
32, 2, 0, 0, 84, 2,
0, 0, 136, 2, 0, 0,
60, 25, 0, 0, 82, 68,
69, 70, 228, 1, 0, 0,
1, 0, 0, 0, 196, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
164, 1, 0, 0, 19, 19,
188, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -379,35 +379,39 @@ const BYTE guest_output_ffx_fsr_rcas_dither_ps[] =
0, 0, 5, 0, 0, 0,
4, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
1, 0, 0, 0, 8, 0,
1, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 151, 0,
0, 0, 0, 0, 175, 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, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 120, 101, 95, 116,
101, 120, 116, 117, 114, 101,
0, 88, 101, 70, 115, 114,
82, 99, 97, 115, 67, 111,
110, 115, 116, 97, 110, 116,
115, 0, 171, 171, 151, 0,
0, 0, 120, 101, 115, 108,
95, 105, 100, 95, 116, 101,
120, 116, 117, 114, 101, 95,
120, 101, 95, 102, 115, 114,
95, 114, 99, 97, 115, 95,
115, 111, 117, 114, 99, 101,
0, 120, 101, 115, 108, 95,
112, 117, 115, 104, 95, 99,
111, 110, 115, 116, 97, 110,
116, 115, 0, 171, 175, 0,
0, 0, 2, 0, 0, 0,
196, 0, 0, 0, 16, 0,
220, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 20, 1,
0, 0, 0, 0, 44, 1,
0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 2, 0,
0, 0, 52, 1, 0, 0,
0, 0, 76, 1, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 88, 1, 0, 0,
0, 0, 112, 1, 0, 0,
8, 0, 0, 0, 4, 0,
0, 0, 2, 0, 0, 0,
128, 1, 0, 0, 0, 0,
152, 1, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
@ -421,7 +425,7 @@ const BYTE guest_output_ffx_fsr_rcas_dither_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 46, 1,
0, 0, 0, 0, 70, 1,
0, 0, 120, 101, 95, 102,
115, 114, 95, 114, 99, 97,
115, 95, 115, 104, 97, 114,
@ -434,7 +438,7 @@ const BYTE guest_output_ffx_fsr_rcas_dither_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 121, 1, 0, 0,
0, 0, 145, 1, 0, 0,
77, 105, 99, 114, 111, 115,
111, 102, 116, 32, 40, 82,
41, 32, 72, 76, 83, 76,
@ -1417,7 +1421,7 @@ const BYTE guest_output_ffx_fsr_rcas_dither_ps[] =
0, 0, 10, 0, 16, 0,
0, 0, 0, 0, 26, 0,
16, 0, 0, 0, 0, 0,
50, 0, 0, 10, 114, 32,
50, 32, 0, 10, 114, 32,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 246, 15, 16, 0,

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeFsrRcasConstants
// cbuffer xesl_push_constants
// {
//
// int2 xe_fsr_rcas_output_offset; // Offset: 0 Size: 8
@ -18,8 +18,8 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_texture texture float3 2d T0 t0 1
// XeFsrRcasConstants cbuffer NA NA CB0 cb0 1
// xesl_id_texture_xe_fsr_rcas_source texture float4 2d T0 t0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -97,21 +97,21 @@ ret
const BYTE guest_output_ffx_fsr_rcas_ps[] =
{
68, 88, 66, 67, 185, 223,
242, 110, 212, 184, 173, 198,
168, 143, 147, 205, 178, 152,
68, 191, 1, 0, 0, 0,
84, 9, 0, 0, 5, 0,
68, 88, 66, 67, 166, 229,
254, 191, 58, 156, 80, 230,
98, 56, 59, 50, 111, 142,
200, 152, 1, 0, 0, 0,
108, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
8, 2, 0, 0, 60, 2,
0, 0, 112, 2, 0, 0,
184, 8, 0, 0, 82, 68,
69, 70, 204, 1, 0, 0,
1, 0, 0, 0, 172, 0,
32, 2, 0, 0, 84, 2,
0, 0, 136, 2, 0, 0,
208, 8, 0, 0, 82, 68,
69, 70, 228, 1, 0, 0,
1, 0, 0, 0, 196, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
164, 1, 0, 0, 19, 19,
188, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -121,35 +121,39 @@ const BYTE guest_output_ffx_fsr_rcas_ps[] =
0, 0, 5, 0, 0, 0,
4, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
1, 0, 0, 0, 8, 0,
1, 0, 0, 0, 12, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 151, 0,
0, 0, 0, 0, 175, 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, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 120, 101, 95, 116,
101, 120, 116, 117, 114, 101,
0, 88, 101, 70, 115, 114,
82, 99, 97, 115, 67, 111,
110, 115, 116, 97, 110, 116,
115, 0, 171, 171, 151, 0,
0, 0, 120, 101, 115, 108,
95, 105, 100, 95, 116, 101,
120, 116, 117, 114, 101, 95,
120, 101, 95, 102, 115, 114,
95, 114, 99, 97, 115, 95,
115, 111, 117, 114, 99, 101,
0, 120, 101, 115, 108, 95,
112, 117, 115, 104, 95, 99,
111, 110, 115, 116, 97, 110,
116, 115, 0, 171, 175, 0,
0, 0, 2, 0, 0, 0,
196, 0, 0, 0, 16, 0,
220, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 20, 1,
0, 0, 0, 0, 44, 1,
0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 2, 0,
0, 0, 52, 1, 0, 0,
0, 0, 76, 1, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 88, 1, 0, 0,
0, 0, 112, 1, 0, 0,
8, 0, 0, 0, 4, 0,
0, 0, 2, 0, 0, 0,
128, 1, 0, 0, 0, 0,
152, 1, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
@ -163,7 +167,7 @@ const BYTE guest_output_ffx_fsr_rcas_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 46, 1,
0, 0, 0, 0, 70, 1,
0, 0, 120, 101, 95, 102,
115, 114, 95, 114, 99, 97,
115, 95, 115, 104, 97, 114,
@ -176,7 +180,7 @@ const BYTE guest_output_ffx_fsr_rcas_ps[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 121, 1, 0, 0,
0, 0, 145, 1, 0, 0,
77, 105, 99, 114, 111, 115,
111, 102, 116, 32, 40, 82,
41, 32, 72, 76, 83, 76,

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeTriangleStripRectConstants
// cbuffer xesl_push_constants
// {
//
// float2 xe_triangle_strip_rect_offset;// Offset: 0 Size: 8
@ -18,7 +18,7 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// XeTriangleStripRectConstants cbuffer NA NA CB0 cb0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -53,21 +53,21 @@ ret
const BYTE guest_output_triangle_strip_rect_vs[] =
{
68, 88, 66, 67, 67, 209,
250, 163, 3, 195, 64, 100,
167, 54, 190, 31, 173, 113,
120, 163, 1, 0, 0, 0,
216, 3, 0, 0, 5, 0,
68, 88, 66, 67, 149, 206,
103, 147, 159, 147, 2, 90,
215, 81, 85, 83, 111, 183,
165, 48, 1, 0, 0, 0,
204, 3, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
184, 1, 0, 0, 236, 1,
0, 0, 32, 2, 0, 0,
60, 3, 0, 0, 82, 68,
69, 70, 124, 1, 0, 0,
1, 0, 0, 0, 132, 0,
172, 1, 0, 0, 224, 1,
0, 0, 20, 2, 0, 0,
48, 3, 0, 0, 82, 68,
69, 70, 112, 1, 0, 0,
1, 0, 0, 0, 120, 0,
0, 0, 1, 0, 0, 0,
60, 0, 0, 0, 1, 5,
254, 255, 0, 5, 0, 0,
84, 1, 0, 0, 19, 19,
72, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -79,26 +79,24 @@ const BYTE guest_output_triangle_strip_rect_vs[] =
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 88, 101,
84, 114, 105, 97, 110, 103,
108, 101, 83, 116, 114, 105,
112, 82, 101, 99, 116, 67,
111, 110, 115, 116, 97, 110,
116, 115, 0, 171, 171, 171,
0, 0, 0, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
100, 0, 0, 0, 2, 0,
0, 0, 156, 0, 0, 0,
0, 0, 144, 0, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
236, 0, 0, 0, 0, 0,
224, 0, 0, 0, 0, 0,
0, 0, 8, 0, 0, 0,
2, 0, 0, 0, 20, 1,
2, 0, 0, 0, 8, 1,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 56, 1,
0, 0, 0, 0, 44, 1,
0, 0, 8, 0, 0, 0,
8, 0, 0, 0, 2, 0,
0, 0, 20, 1, 0, 0,
0, 0, 8, 1, 0, 0,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
@ -114,7 +112,7 @@ const BYTE guest_output_triangle_strip_rect_vs[] =
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 10, 1, 0, 0,
0, 0, 254, 0, 0, 0,
120, 101, 95, 116, 114, 105,
97, 110, 103, 108, 101, 95,
115, 116, 114, 105, 112, 95,

View File

@ -7,8 +7,8 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_immediate_sampler sampler NA NA S0 s0 1
// xe_immediate_texture texture float4 2d T0 t0 1
// xesl_id_sampler_xe_immediate_texture sampler NA NA S0 s0 1
// xesl_id_texture_xe_immediate_texture texture float4 2d T0 t0 1
//
//
//
@ -17,7 +17,7 @@
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xy 0 NONE float xy
// TEXCOORD 1 xyzw 1 NONE float xyzw
// COLOR 0 xyzw 1 NONE float xyzw
//
//
// Output signature:
@ -42,21 +42,21 @@ ret
const BYTE immediate_ps[] =
{
68, 88, 66, 67, 218, 200,
108, 196, 58, 28, 70, 226,
98, 137, 89, 199, 218, 58,
155, 172, 1, 0, 0, 0,
0, 3, 0, 0, 5, 0,
68, 88, 66, 67, 16, 180,
111, 94, 249, 238, 63, 126,
172, 161, 159, 61, 24, 3,
19, 209, 1, 0, 0, 0,
36, 3, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
28, 1, 0, 0, 104, 1,
0, 0, 156, 1, 0, 0,
100, 2, 0, 0, 82, 68,
69, 70, 224, 0, 0, 0,
60, 1, 0, 0, 140, 1,
0, 0, 192, 1, 0, 0,
136, 2, 0, 0, 82, 68,
69, 70, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0,
182, 0, 0, 0, 19, 19,
214, 0, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -68,40 +68,46 @@ const BYTE immediate_ps[] =
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 161, 0,
0, 0, 0, 0, 177, 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, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 120, 101, 95, 105,
109, 109, 101, 100, 105, 97,
116, 101, 95, 115, 97, 109,
112, 108, 101, 114, 0, 120,
101, 95, 105, 109, 109, 101,
100, 105, 97, 116, 101, 95,
116, 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, 49, 48, 46, 49, 0,
171, 171, 73, 83, 71, 78,
68, 0, 0, 0, 2, 0,
0, 0, 8, 0, 0, 0,
56, 0, 0, 0, 0, 0,
0, 0, 120, 101, 115, 108,
95, 105, 100, 95, 115, 97,
109, 112, 108, 101, 114, 95,
120, 101, 95, 105, 109, 109,
101, 100, 105, 97, 116, 101,
95, 116, 101, 120, 116, 117,
114, 101, 0, 120, 101, 115,
108, 95, 105, 100, 95, 116,
101, 120, 116, 117, 114, 101,
95, 120, 101, 95, 105, 109,
109, 101, 100, 105, 97, 116,
101, 95, 116, 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, 49, 48, 46,
49, 0, 171, 171, 73, 83,
71, 78, 72, 0, 0, 0,
2, 0, 0, 0, 8, 0,
0, 0, 56, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0,
0, 0, 3, 3, 0, 0,
56, 0, 0, 0, 1, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 3, 3,
0, 0, 65, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 1, 0,
0, 0, 15, 15, 0, 0,
84, 69, 88, 67, 79, 79,
82, 68, 0, 171, 171, 171,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 15, 15,
0, 0, 84, 69, 88, 67,
79, 79, 82, 68, 0, 67,
79, 76, 79, 82, 0, 171,
79, 83, 71, 78, 44, 0,
0, 0, 1, 0, 0, 0,
8, 0, 0, 0, 32, 0,

View File

@ -5,7 +5,7 @@
//
// Buffer Definitions:
//
// cbuffer XeImmediateVertexConstants
// cbuffer xesl_push_constants
// {
//
// float2 xe_coordinate_space_size_inv;// Offset: 0 Size: 8
@ -17,7 +17,7 @@
//
// Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------
// XeImmediateVertexConstants cbuffer NA NA CB0 cb0 1
// xesl_push_constants cbuffer NA NA CB0 cb0 1
//
//
//
@ -35,7 +35,7 @@
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xy 0 NONE float xy
// TEXCOORD 1 xyzw 1 NONE float xyzw
// COLOR 0 xyzw 1 NONE float xyzw
// SV_Position 0 xyzw 2 POS float xyzw
//
vs_5_1
@ -59,21 +59,21 @@ ret
const BYTE immediate_vs[] =
{
68, 88, 66, 67, 141, 232,
76, 204, 152, 38, 127, 131,
125, 87, 10, 113, 217, 159,
27, 143, 1, 0, 0, 0,
24, 4, 0, 0, 5, 0,
68, 88, 66, 67, 15, 240,
112, 179, 37, 234, 188, 136,
206, 192, 216, 134, 250, 183,
16, 201, 1, 0, 0, 0,
20, 4, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0,
108, 1, 0, 0, 220, 1,
0, 0, 76, 2, 0, 0,
124, 3, 0, 0, 82, 68,
69, 70, 48, 1, 0, 0,
1, 0, 0, 0, 128, 0,
100, 1, 0, 0, 212, 1,
0, 0, 72, 2, 0, 0,
120, 3, 0, 0, 82, 68,
69, 70, 40, 1, 0, 0,
1, 0, 0, 0, 120, 0,
0, 0, 1, 0, 0, 0,
60, 0, 0, 0, 1, 5,
254, 255, 0, 5, 0, 0,
8, 1, 0, 0, 19, 19,
0, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0,
@ -85,144 +85,143 @@ const BYTE immediate_vs[] =
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 88, 101,
73, 109, 109, 101, 100, 105,
97, 116, 101, 86, 101, 114,
116, 101, 120, 67, 111, 110,
115, 116, 97, 110, 116, 115,
0, 171, 100, 0, 0, 0,
1, 0, 0, 0, 152, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 120, 101,
115, 108, 95, 112, 117, 115,
104, 95, 99, 111, 110, 115,
116, 97, 110, 116, 115, 0,
100, 0, 0, 0, 1, 0,
0, 0, 144, 0, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 192, 0, 0, 0,
0, 0, 0, 0, 8, 0,
0, 0, 2, 0, 0, 0,
228, 0, 0, 0, 0, 0,
184, 0, 0, 0, 0, 0,
0, 0, 8, 0, 0, 0,
2, 0, 0, 0, 220, 0,
0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0,
120, 101, 95, 99, 111, 111,
114, 100, 105, 110, 97, 116,
101, 95, 115, 112, 97, 99,
101, 95, 115, 105, 122, 101,
95, 105, 110, 118, 0, 102,
108, 111, 97, 116, 50, 0,
1, 0, 3, 0, 1, 0,
2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 120, 101,
95, 99, 111, 111, 114, 100,
105, 110, 97, 116, 101, 95,
115, 112, 97, 99, 101, 95,
115, 105, 122, 101, 95, 105,
110, 118, 0, 102, 108, 111,
97, 116, 50, 0, 1, 0,
3, 0, 1, 0, 2, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 221, 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, 49,
48, 46, 49, 0, 73, 83,
71, 78, 104, 0, 0, 0,
3, 0, 0, 0, 8, 0,
0, 0, 80, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 3, 3,
0, 0, 89, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 3, 3,
0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
2, 0, 0, 0, 15, 15,
0, 0, 80, 79, 83, 73,
84, 73, 79, 78, 0, 84,
69, 88, 67, 79, 79, 82,
68, 0, 67, 79, 76, 79,
82, 0, 79, 83, 71, 78,
213, 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, 49, 48, 46,
49, 0, 73, 83, 71, 78,
104, 0, 0, 0, 3, 0,
0, 0, 8, 0, 0, 0,
80, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0,
0, 0, 3, 12, 0, 0,
80, 0, 0, 0, 1, 0,
0, 0, 3, 3, 0, 0,
89, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 1, 0,
0, 0, 15, 0, 0, 0,
89, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
0, 0, 3, 3, 0, 0,
98, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 2, 0,
0, 0, 15, 0, 0, 0,
84, 69, 88, 67, 79, 79,
82, 68, 0, 83, 86, 95,
80, 111, 115, 105, 116, 105,
111, 110, 0, 171, 171, 171,
83, 72, 69, 88, 40, 1,
0, 0, 81, 0, 1, 0,
74, 0, 0, 0, 106, 8,
0, 1, 89, 0, 0, 7,
70, 142, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 0, 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,
95, 0, 0, 3, 242, 16,
16, 0, 2, 0, 0, 0,
101, 0, 0, 3, 50, 32,
16, 0, 0, 0, 0, 0,
101, 0, 0, 3, 242, 32,
16, 0, 1, 0, 0, 0,
103, 0, 0, 4, 242, 32,
16, 0, 2, 0, 0, 0,
1, 0, 0, 0, 104, 0,
0, 2, 1, 0, 0, 0,
56, 0, 0, 9, 50, 0,
16, 0, 0, 0, 0, 0,
70, 16, 16, 0, 0, 0,
0, 0, 70, 128, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
50, 0, 0, 15, 50, 32,
16, 0, 2, 0, 0, 0,
70, 0, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 64, 0, 0,
0, 192, 0, 0, 0, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 128, 191,
0, 0, 128, 63, 0, 0,
0, 0, 0, 0, 0, 0,
54, 0, 0, 5, 242, 32,
16, 0, 1, 0, 0, 0,
70, 30, 16, 0, 2, 0,
0, 0, 54, 0, 0, 8,
194, 32, 16, 0, 2, 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,
0, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0,
62, 0, 0, 1, 83, 84,
65, 84, 148, 0, 0, 0,
6, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
6, 0, 0, 0, 2, 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, 15, 15, 0, 0,
80, 79, 83, 73, 84, 73,
79, 78, 0, 84, 69, 88,
67, 79, 79, 82, 68, 0,
67, 79, 76, 79, 82, 0,
79, 83, 71, 78, 108, 0,
0, 0, 3, 0, 0, 0,
8, 0, 0, 0, 80, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
3, 12, 0, 0, 89, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 1, 0, 0, 0,
15, 0, 0, 0, 95, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0,
15, 0, 0, 0, 84, 69,
88, 67, 79, 79, 82, 68,
0, 67, 79, 76, 79, 82,
0, 83, 86, 95, 80, 111,
115, 105, 116, 105, 111, 110,
0, 171, 83, 72, 69, 88,
40, 1, 0, 0, 81, 0,
1, 0, 74, 0, 0, 0,
106, 8, 0, 1, 89, 0,
0, 7, 70, 142, 48, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 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, 95, 0, 0, 3,
242, 16, 16, 0, 2, 0,
0, 0, 101, 0, 0, 3,
50, 32, 16, 0, 0, 0,
0, 0, 101, 0, 0, 3,
242, 32, 16, 0, 1, 0,
0, 0, 103, 0, 0, 4,
242, 32, 16, 0, 2, 0,
0, 0, 1, 0, 0, 0,
104, 0, 0, 2, 1, 0,
0, 0, 56, 0, 0, 9,
50, 0, 16, 0, 0, 0,
0, 0, 70, 16, 16, 0,
0, 0, 0, 0, 70, 128,
48, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 50, 0, 0, 15,
50, 32, 16, 0, 2, 0,
0, 0, 70, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 64,
0, 0, 0, 192, 0, 0,
0, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 0,
128, 191, 0, 0, 128, 63,
0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 5,
242, 32, 16, 0, 1, 0,
0, 0, 70, 30, 16, 0,
2, 0, 0, 0, 54, 0,
0, 8, 194, 32, 16, 0,
2, 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, 0, 0, 0, 0,
70, 16, 16, 0, 1, 0,
0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 148, 0,
0, 0, 6, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 6, 0, 0, 0,
2, 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,
3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
@ -233,5 +232,5 @@ const BYTE immediate_vs[] =
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
};

File diff suppressed because one or more lines are too long

View File

@ -8,15 +8,15 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5120
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5312
OpExecutionMode %5663 OriginUpperLeft
OpDecorate %gl_FragCoord BuiltIn FragCoord
OpMemberDecorate %_struct_1028 0 Offset 16
OpMemberDecorate %_struct_1028 1 Offset 24
OpDecorate %_struct_1028 Block
OpDecorate %5120 Location 0
OpDecorate %3150 DescriptorSet 0
OpDecorate %3150 Binding 0
OpDecorate %5312 Location 0
OpDecorate %4448 DescriptorSet 0
OpDecorate %4448 Binding 0
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%uint = OpTypeInt 32 0
@ -30,15 +30,15 @@
%v2int = OpTypeVector %int 2
%_struct_1028 = OpTypeStruct %v2int %v2float
%_ptr_PushConstant__struct_1028 = OpTypePointer PushConstant %_struct_1028
%4930 = OpVariable %_ptr_PushConstant__struct_1028 PushConstant
%3052 = OpVariable %_ptr_PushConstant__struct_1028 PushConstant
%int_0 = OpConstant %int 0
%_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5120 = OpVariable %_ptr_Output_v4float Output
%5312 = OpVariable %_ptr_Output_v4float Output
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510
%3150 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%4448 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%float_0_5 = OpConstant %float 0.5
%int_1 = OpConstant %int 1
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
@ -55,27 +55,27 @@
%18571 = OpLoad %v4float %gl_FragCoord
%14008 = OpVectorShuffle %v2float %18571 %18571 0 1
%17656 = OpConvertFToS %v2int %14008
%19279 = OpAccessChain %_ptr_PushConstant_v2int %4930 %int_0
%19279 = OpAccessChain %_ptr_PushConstant_v2int %3052 %int_0
%22822 = OpLoad %v2int %19279
%23236 = OpISub %v2int %17656 %22822
%11599 = OpBitcast %v2uint %23236
%6899 = OpLoad %510 %3150
%6899 = OpLoad %510 %4448
%10352 = OpConvertUToF %v2float %11599
%18354 = OpFAdd %v2float %10352 %1566
%11863 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_1
%11863 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_1
%20800 = OpLoad %v2float %11863
%24032 = OpFMul %v2float %18354 %20800
%11997 = OpImageSampleExplicitLod %v4float %6899 %24032 Lod %float_0
%18957 = OpAccessChain %_ptr_Output_float %5120 %uint_0
%18957 = OpAccessChain %_ptr_Output_float %5312 %uint_0
%17344 = OpCompositeExtract %float %11997 0
OpStore %18957 %17344
%16378 = OpAccessChain %_ptr_Output_float %5120 %uint_1
%16378 = OpAccessChain %_ptr_Output_float %5312 %uint_1
%15746 = OpCompositeExtract %float %11997 1
OpStore %16378 %15746
%16379 = OpAccessChain %_ptr_Output_float %5120 %uint_2
%16379 = OpAccessChain %_ptr_Output_float %5312 %uint_2
%15747 = OpCompositeExtract %float %11997 2
OpStore %16379 %15747
%23294 = OpAccessChain %_ptr_Output_float %5120 %uint_3
%23294 = OpAccessChain %_ptr_Output_float %5312 %uint_3
OpStore %23294 %float_1
OpReturn
OpFunctionEnd
@ -85,12 +85,12 @@ const uint32_t guest_output_bilinear_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x00006176, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x00001400, 0x00030010,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x000014C0, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F,
0x00050048, 0x00000404, 0x00000000, 0x00000023, 0x00000010, 0x00050048,
0x00000404, 0x00000001, 0x00000023, 0x00000018, 0x00030047, 0x00000404,
0x00000002, 0x00040047, 0x00001400, 0x0000001E, 0x00000000, 0x00040047,
0x00000C4E, 0x00000022, 0x00000000, 0x00040047, 0x00000C4E, 0x00000021,
0x00000002, 0x00040047, 0x000014C0, 0x0000001E, 0x00000000, 0x00040047,
0x00001160, 0x00000022, 0x00000000, 0x00040047, 0x00001160, 0x00000021,
0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008,
0x00040015, 0x0000000B, 0x00000020, 0x00000000, 0x00040017, 0x00000011,
0x0000000B, 0x00000002, 0x00030016, 0x0000000D, 0x00000020, 0x00040017,
@ -99,13 +99,13 @@ const uint32_t guest_output_bilinear_ps[] = {
0x00000013, 0x0000000D, 0x00000002, 0x00040015, 0x0000000C, 0x00000020,
0x00000001, 0x00040017, 0x00000012, 0x0000000C, 0x00000002, 0x0004001E,
0x00000404, 0x00000012, 0x00000013, 0x00040020, 0x00000681, 0x00000009,
0x00000404, 0x0004003B, 0x00000681, 0x00001342, 0x00000009, 0x0004002B,
0x00000404, 0x0004003B, 0x00000681, 0x00000BEC, 0x00000009, 0x0004002B,
0x0000000C, 0x00000A0B, 0x00000000, 0x00040020, 0x0000028F, 0x00000009,
0x00000012, 0x00040020, 0x0000029B, 0x00000003, 0x0000001D, 0x0004003B,
0x0000029B, 0x00001400, 0x00000003, 0x00090019, 0x00000096, 0x0000000D,
0x0000029B, 0x000014C0, 0x00000003, 0x00090019, 0x00000096, 0x0000000D,
0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
0x0003001B, 0x000001FE, 0x00000096, 0x00040020, 0x0000047B, 0x00000000,
0x000001FE, 0x0004003B, 0x0000047B, 0x00000C4E, 0x00000000, 0x0004002B,
0x000001FE, 0x0004003B, 0x0000047B, 0x00001160, 0x00000000, 0x0004002B,
0x0000000D, 0x000000FC, 0x3F000000, 0x0004002B, 0x0000000C, 0x00000A0E,
0x00000001, 0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x0004002B,
0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B, 0x0000000B, 0x00000A0A,
@ -117,21 +117,21 @@ const uint32_t guest_output_bilinear_ps[] = {
0x00000502, 0x000200F8, 0x00006175, 0x0004003D, 0x0000001D, 0x0000488B,
0x00000C93, 0x0007004F, 0x00000013, 0x000036B8, 0x0000488B, 0x0000488B,
0x00000000, 0x00000001, 0x0004006E, 0x00000012, 0x000044F8, 0x000036B8,
0x00050041, 0x0000028F, 0x00004B4F, 0x00001342, 0x00000A0B, 0x0004003D,
0x00050041, 0x0000028F, 0x00004B4F, 0x00000BEC, 0x00000A0B, 0x0004003D,
0x00000012, 0x00005926, 0x00004B4F, 0x00050082, 0x00000012, 0x00005AC4,
0x000044F8, 0x00005926, 0x0004007C, 0x00000011, 0x00002D4F, 0x00005AC4,
0x0004003D, 0x000001FE, 0x00001AF3, 0x00000C4E, 0x00040070, 0x00000013,
0x0004003D, 0x000001FE, 0x00001AF3, 0x00001160, 0x00040070, 0x00000013,
0x00002870, 0x00002D4F, 0x00050081, 0x00000013, 0x000047B2, 0x00002870,
0x0000061E, 0x00050041, 0x00000290, 0x00002E57, 0x00001342, 0x00000A0E,
0x0000061E, 0x00050041, 0x00000290, 0x00002E57, 0x00000BEC, 0x00000A0E,
0x0004003D, 0x00000013, 0x00005140, 0x00002E57, 0x00050085, 0x00000013,
0x00005DE0, 0x000047B2, 0x00005140, 0x00070058, 0x0000001D, 0x00002EDD,
0x00001AF3, 0x00005DE0, 0x00000002, 0x00000A0C, 0x00050041, 0x0000028A,
0x00004A0D, 0x00001400, 0x00000A0A, 0x00050051, 0x0000000D, 0x000043C0,
0x00004A0D, 0x000014C0, 0x00000A0A, 0x00050051, 0x0000000D, 0x000043C0,
0x00002EDD, 0x00000000, 0x0003003E, 0x00004A0D, 0x000043C0, 0x00050041,
0x0000028A, 0x00003FFA, 0x00001400, 0x00000A0D, 0x00050051, 0x0000000D,
0x0000028A, 0x00003FFA, 0x000014C0, 0x00000A0D, 0x00050051, 0x0000000D,
0x00003D82, 0x00002EDD, 0x00000001, 0x0003003E, 0x00003FFA, 0x00003D82,
0x00050041, 0x0000028A, 0x00003FFB, 0x00001400, 0x00000A10, 0x00050051,
0x00050041, 0x0000028A, 0x00003FFB, 0x000014C0, 0x00000A10, 0x00050051,
0x0000000D, 0x00003D83, 0x00002EDD, 0x00000002, 0x0003003E, 0x00003FFB,
0x00003D83, 0x00050041, 0x0000028A, 0x00005AFE, 0x00001400, 0x00000A13,
0x00003D83, 0x00050041, 0x0000028A, 0x00005AFE, 0x000014C0, 0x00000A13,
0x0003003E, 0x00005AFE, 0x0000008A, 0x000100FD, 0x00010038,
};

File diff suppressed because one or more lines are too long

View File

@ -8,16 +8,16 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5120
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5334
OpExecutionMode %5663 OriginUpperLeft
OpDecorate %3150 DescriptorSet 0
OpDecorate %3150 Binding 0
OpDecorate %gl_FragCoord BuiltIn FragCoord
OpMemberDecorate %_struct_1048 0 Offset 16
OpMemberDecorate %_struct_1048 1 Offset 24
OpMemberDecorate %_struct_1048 2 Offset 32
OpDecorate %_struct_1048 Block
OpDecorate %5120 Location 0
OpDecorate %5334 Location 0
OpDecorate %5163 DescriptorSet 0
OpDecorate %5163 Binding 0
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%float = OpTypeFloat 32
@ -26,9 +26,29 @@
%v2int = OpTypeVector %int 2
%v3float = OpTypeVector %float 3
%v2uint = OpTypeVector %uint 2
%v4float = OpTypeVector %float 4
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%v2float = OpTypeVector %float 2
%_struct_1048 = OpTypeStruct %v2int %v2float %float
%_ptr_PushConstant__struct_1048 = OpTypePointer PushConstant %_struct_1048
%3052 = OpVariable %_ptr_PushConstant__struct_1048 PushConstant
%int_0 = OpConstant %int 0
%_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int
%int_1 = OpConstant %int 1
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
%float_0_5 = OpConstant %float 0.5
%int_2 = OpConstant %int 2
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%float_0 = OpConstant %float 0
%float_1 = OpConstant %float 1
%uint_0 = OpConstant %uint 0
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5334 = OpVariable %_ptr_Output_v4float Output
%_ptr_Output_float = OpTypePointer Output %float
%uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2
%float_1 = OpConstant %float 1
%uint_3 = OpConstant %uint 3
%uint_532432441 = OpConstant %uint 532432441
%uint_2129690299 = OpConstant %uint 2129690299
%uint_2129764351 = OpConstant %uint 2129764351
@ -36,57 +56,37 @@
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510
%3150 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int_0 = OpConstant %int 0
%v4float = OpTypeVector %float 4
%5163 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int_n1 = OpConstant %int -1
%1803 = OpConstantComposite %v2int %int_0 %int_n1
%int_1 = OpConstant %int 1
%1812 = OpConstantComposite %v2int %int_1 %int_n1
%1806 = OpConstantComposite %v2int %int_n1 %int_0
%1824 = OpConstantComposite %v2int %int_1 %int_0
%1818 = OpConstantComposite %v2int %int_n1 %int_1
%1827 = OpConstantComposite %v2int %int_0 %int_1
%1836 = OpConstantComposite %v2int %int_1 %int_1
%uint_0 = OpConstant %uint 0
%uint_2 = OpConstant %uint 2
%v2float = OpTypeVector %float 2
%int_2 = OpConstant %int 2
%1833 = OpConstantComposite %v2int %int_2 %int_0
%1839 = OpConstantComposite %v2int %int_0 %int_2
%1845 = OpConstantComposite %v2int %int_2 %int_1
%1848 = OpConstantComposite %v2int %int_1 %int_2
%float_0_03125 = OpConstant %float 0.03125
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%_struct_1048 = OpTypeStruct %v2int %v2float %float
%_ptr_PushConstant__struct_1048 = OpTypePointer PushConstant %_struct_1048
%4930 = OpVariable %_ptr_PushConstant__struct_1048 PushConstant
%_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
%float_0_5 = OpConstant %float 0.5
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5120 = OpVariable %_ptr_Output_v4float Output
%_ptr_Output_float = OpTypePointer Output %float
%uint_3 = OpConstant %uint 3
%1566 = OpConstantComposite %v2float %float_0_5 %float_0_5
%5663 = OpFunction %void None %1282
%24949 = OpLabel
%18571 = OpLoad %v4float %gl_FragCoord
%14008 = OpVectorShuffle %v2float %18571 %18571 0 1
%17656 = OpConvertFToS %v2int %14008
%19279 = OpAccessChain %_ptr_PushConstant_v2int %4930 %int_0
%19279 = OpAccessChain %_ptr_PushConstant_v2int %3052 %int_0
%22822 = OpLoad %v2int %19279
%23312 = OpISub %v2int %17656 %22822
%9938 = OpBitcast %v2uint %23312
%20997 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_1
%20997 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_1
%22579 = OpLoad %v2float %20997
%13397 = OpBitcast %v2uint %22579
%12762 = OpVectorTimesScalar %v2float %22579 %float_0_5
%24291 = OpFSub %v2float %12762 %1566
%20131 = OpBitcast %v2uint %24291
%18575 = OpAccessChain %_ptr_PushConstant_float %4930 %int_2
%18575 = OpAccessChain %_ptr_PushConstant_float %3052 %int_2
%22009 = OpLoad %float %18575
%18454 = OpBitcast %uint %22009
%12011 = OpConvertUToF %v2float %9938
@ -98,7 +98,7 @@
%16290 = OpFSub %v2float %24878 %12719
%17064 = OpConvertFToS %v2int %12719
%20663 = OpIAdd %v2int %17064 %1803
%16731 = OpLoad %510 %3150
%16731 = OpLoad %510 %5163
%23618 = OpImage %150 %16731
%16595 = OpImageFetch %v4float %23618 %20663 Lod %int_0
%15454 = OpIAdd %v2int %17064 %1806
@ -415,13 +415,13 @@
%15975 = OpFAdd %float %18176 %9469
%6921 = OpFMul %float %15975 %9442
%24941 = OpExtInst %float %1 FClamp %6921 %float_0 %float_1
%20577 = OpAccessChain %_ptr_Output_float %5120 %uint_0
%20577 = OpAccessChain %_ptr_Output_float %5334 %uint_0
OpStore %20577 %15218
%19732 = OpAccessChain %_ptr_Output_float %5120 %uint_1
%19732 = OpAccessChain %_ptr_Output_float %5334 %uint_1
OpStore %19732 %15219
%19656 = OpAccessChain %_ptr_Output_float %5120 %uint_2
%19656 = OpAccessChain %_ptr_Output_float %5334 %uint_2
OpStore %19656 %24941
%10445 = OpLoad %v4float %5120
%10445 = OpLoad %v4float %5334
%9111 = OpVectorShuffle %v3float %10445 %10445 0 1 2
%17911 = OpExtInst %v3float %1 Sqrt %9111
%7131 = OpCompositeExtract %float %17911 0
@ -430,7 +430,7 @@
OpStore %19732 %22435
%22131 = OpCompositeExtract %float %17911 2
OpStore %19656 %22131
%23294 = OpAccessChain %_ptr_Output_float %5120 %uint_3
%23294 = OpAccessChain %_ptr_Output_float %5334 %uint_3
OpStore %23294 %float_1
OpReturn
OpFunctionEnd
@ -440,63 +440,63 @@ const uint32_t guest_output_ffx_cas_resample_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x0000627D, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x00001400, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C4E, 0x00000022, 0x00000000,
0x00040047, 0x00000C4E, 0x00000021, 0x00000000, 0x00040047, 0x00000C93,
0x0000000B, 0x0000000F, 0x00050048, 0x00000418, 0x00000000, 0x00000023,
0x00000010, 0x00050048, 0x00000418, 0x00000001, 0x00000023, 0x00000018,
0x00050048, 0x00000418, 0x00000002, 0x00000023, 0x00000020, 0x00030047,
0x00000418, 0x00000002, 0x00040047, 0x00001400, 0x0000001E, 0x00000000,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x000014D6, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F,
0x00050048, 0x00000418, 0x00000000, 0x00000023, 0x00000010, 0x00050048,
0x00000418, 0x00000001, 0x00000023, 0x00000018, 0x00050048, 0x00000418,
0x00000002, 0x00000023, 0x00000020, 0x00030047, 0x00000418, 0x00000002,
0x00040047, 0x000014D6, 0x0000001E, 0x00000000, 0x00040047, 0x0000142B,
0x00000022, 0x00000000, 0x00040047, 0x0000142B, 0x00000021, 0x00000000,
0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00030016,
0x0000000D, 0x00000020, 0x00040015, 0x0000000B, 0x00000020, 0x00000000,
0x00040015, 0x0000000C, 0x00000020, 0x00000001, 0x00040017, 0x00000012,
0x0000000C, 0x00000002, 0x00040017, 0x00000018, 0x0000000D, 0x00000003,
0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x0004002B, 0x0000000D,
0x00000A0C, 0x00000000, 0x0004002B, 0x0000000D, 0x0000008A, 0x3F800000,
0x0004002B, 0x0000000B, 0x00000A0D, 0x00000001, 0x0004002B, 0x0000000B,
0x0000020D, 0x1FBC4639, 0x0004002B, 0x0000000B, 0x00000344, 0x7EF07EBB,
0x0004002B, 0x0000000B, 0x000000B2, 0x7EF19FFF, 0x0004002B, 0x0000000D,
0x00000019, 0x40000000, 0x00090019, 0x00000096, 0x0000000D, 0x00000001,
0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001B,
0x000001FE, 0x00000096, 0x00040020, 0x0000047B, 0x00000000, 0x000001FE,
0x0004003B, 0x0000047B, 0x00000C4E, 0x00000000, 0x0004002B, 0x0000000C,
0x00000A0B, 0x00000000, 0x00040017, 0x0000001D, 0x0000000D, 0x00000004,
0x0004002B, 0x0000000C, 0x00000A08, 0xFFFFFFFF, 0x0005002C, 0x00000012,
0x0000070B, 0x00000A0B, 0x00000A08, 0x0004002B, 0x0000000C, 0x00000A0E,
0x00000001, 0x0005002C, 0x00000012, 0x00000714, 0x00000A0E, 0x00000A08,
0x0005002C, 0x00000012, 0x0000070E, 0x00000A08, 0x00000A0B, 0x0005002C,
0x00000012, 0x00000720, 0x00000A0E, 0x00000A0B, 0x0005002C, 0x00000012,
0x0000071A, 0x00000A08, 0x00000A0E, 0x0005002C, 0x00000012, 0x00000723,
0x00000A0B, 0x00000A0E, 0x0005002C, 0x00000012, 0x0000072C, 0x00000A0E,
0x00000A0E, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x0004002B,
0x0000000B, 0x00000A10, 0x00000002, 0x00040017, 0x00000013, 0x0000000D,
0x00000002, 0x0004002B, 0x0000000C, 0x00000A11, 0x00000002, 0x0005002C,
0x00000012, 0x00000729, 0x00000A11, 0x00000A0B, 0x0005002C, 0x00000012,
0x0000072F, 0x00000A0B, 0x00000A11, 0x0005002C, 0x00000012, 0x00000735,
0x00000A11, 0x00000A0E, 0x0005002C, 0x00000012, 0x00000738, 0x00000A0E,
0x00000A11, 0x0004002B, 0x0000000D, 0x000002C4, 0x3D000000, 0x00040020,
0x0000029A, 0x00000001, 0x0000001D, 0x0004003B, 0x0000029A, 0x00000C93,
0x00000001, 0x0005001E, 0x00000418, 0x00000012, 0x00000013, 0x0000000D,
0x00040020, 0x00000695, 0x00000009, 0x00000418, 0x0004003B, 0x00000695,
0x00001342, 0x00000009, 0x00040020, 0x0000028F, 0x00000009, 0x00000012,
0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x0004002B, 0x0000000D,
0x000000FC, 0x3F000000, 0x00040020, 0x0000028A, 0x00000009, 0x0000000D,
0x00040020, 0x0000029B, 0x00000003, 0x0000001D, 0x0004003B, 0x0000029B,
0x00001400, 0x00000003, 0x00040020, 0x0000028B, 0x00000003, 0x0000000D,
0x0004002B, 0x0000000B, 0x00000A13, 0x00000003, 0x0005002C, 0x00000013,
0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x00040017, 0x0000001D,
0x0000000D, 0x00000004, 0x00040020, 0x0000029A, 0x00000001, 0x0000001D,
0x0004003B, 0x0000029A, 0x00000C93, 0x00000001, 0x00040017, 0x00000013,
0x0000000D, 0x00000002, 0x0005001E, 0x00000418, 0x00000012, 0x00000013,
0x0000000D, 0x00040020, 0x00000695, 0x00000009, 0x00000418, 0x0004003B,
0x00000695, 0x00000BEC, 0x00000009, 0x0004002B, 0x0000000C, 0x00000A0B,
0x00000000, 0x00040020, 0x0000028F, 0x00000009, 0x00000012, 0x0004002B,
0x0000000C, 0x00000A0E, 0x00000001, 0x00040020, 0x00000290, 0x00000009,
0x00000013, 0x0004002B, 0x0000000D, 0x000000FC, 0x3F000000, 0x0004002B,
0x0000000C, 0x00000A11, 0x00000002, 0x00040020, 0x0000028A, 0x00000009,
0x0000000D, 0x0004002B, 0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B,
0x0000000B, 0x00000A0A, 0x00000000, 0x00040020, 0x0000029B, 0x00000003,
0x0000001D, 0x0004003B, 0x0000029B, 0x000014D6, 0x00000003, 0x00040020,
0x0000028B, 0x00000003, 0x0000000D, 0x0004002B, 0x0000000B, 0x00000A0D,
0x00000001, 0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B,
0x0000000D, 0x0000008A, 0x3F800000, 0x0004002B, 0x0000000B, 0x00000A13,
0x00000003, 0x0004002B, 0x0000000B, 0x0000020D, 0x1FBC4639, 0x0004002B,
0x0000000B, 0x00000344, 0x7EF07EBB, 0x0004002B, 0x0000000B, 0x000000B2,
0x7EF19FFF, 0x0004002B, 0x0000000D, 0x00000019, 0x40000000, 0x00090019,
0x00000096, 0x0000000D, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
0x00000001, 0x00000000, 0x0003001B, 0x000001FE, 0x00000096, 0x00040020,
0x0000047B, 0x00000000, 0x000001FE, 0x0004003B, 0x0000047B, 0x0000142B,
0x00000000, 0x0004002B, 0x0000000C, 0x00000A08, 0xFFFFFFFF, 0x0005002C,
0x00000012, 0x0000070B, 0x00000A0B, 0x00000A08, 0x0005002C, 0x00000012,
0x00000714, 0x00000A0E, 0x00000A08, 0x0005002C, 0x00000012, 0x0000070E,
0x00000A08, 0x00000A0B, 0x0005002C, 0x00000012, 0x00000720, 0x00000A0E,
0x00000A0B, 0x0005002C, 0x00000012, 0x0000071A, 0x00000A08, 0x00000A0E,
0x0005002C, 0x00000012, 0x00000723, 0x00000A0B, 0x00000A0E, 0x0005002C,
0x00000012, 0x0000072C, 0x00000A0E, 0x00000A0E, 0x0005002C, 0x00000012,
0x00000729, 0x00000A11, 0x00000A0B, 0x0005002C, 0x00000012, 0x0000072F,
0x00000A0B, 0x00000A11, 0x0005002C, 0x00000012, 0x00000735, 0x00000A11,
0x00000A0E, 0x0005002C, 0x00000012, 0x00000738, 0x00000A0E, 0x00000A11,
0x0004002B, 0x0000000D, 0x000002C4, 0x3D000000, 0x0005002C, 0x00000013,
0x0000061E, 0x000000FC, 0x000000FC, 0x00050036, 0x00000008, 0x0000161F,
0x00000000, 0x00000502, 0x000200F8, 0x00006175, 0x0004003D, 0x0000001D,
0x0000488B, 0x00000C93, 0x0007004F, 0x00000013, 0x000036B8, 0x0000488B,
0x0000488B, 0x00000000, 0x00000001, 0x0004006E, 0x00000012, 0x000044F8,
0x000036B8, 0x00050041, 0x0000028F, 0x00004B4F, 0x00001342, 0x00000A0B,
0x000036B8, 0x00050041, 0x0000028F, 0x00004B4F, 0x00000BEC, 0x00000A0B,
0x0004003D, 0x00000012, 0x00005926, 0x00004B4F, 0x00050082, 0x00000012,
0x00005B10, 0x000044F8, 0x00005926, 0x0004007C, 0x00000011, 0x000026D2,
0x00005B10, 0x00050041, 0x00000290, 0x00005205, 0x00001342, 0x00000A0E,
0x00005B10, 0x00050041, 0x00000290, 0x00005205, 0x00000BEC, 0x00000A0E,
0x0004003D, 0x00000013, 0x00005833, 0x00005205, 0x0004007C, 0x00000011,
0x00003455, 0x00005833, 0x0005008E, 0x00000013, 0x000031DA, 0x00005833,
0x000000FC, 0x00050083, 0x00000013, 0x00005EE3, 0x000031DA, 0x0000061E,
0x0004007C, 0x00000011, 0x00004EA3, 0x00005EE3, 0x00050041, 0x0000028A,
0x0000488F, 0x00001342, 0x00000A11, 0x0004003D, 0x0000000D, 0x000055F9,
0x0000488F, 0x00000BEC, 0x00000A11, 0x0004003D, 0x0000000D, 0x000055F9,
0x0000488F, 0x0004007C, 0x0000000B, 0x00004816, 0x000055F9, 0x00040070,
0x00000013, 0x00002EEB, 0x000026D2, 0x0004007C, 0x00000013, 0x00004BF9,
0x00003455, 0x00050085, 0x00000013, 0x000042F3, 0x00002EEB, 0x00004BF9,
@ -505,7 +505,7 @@ const uint32_t guest_output_ffx_cas_resample_ps[] = {
0x00000001, 0x00000008, 0x0000612E, 0x00050083, 0x00000013, 0x00003FA2,
0x0000612E, 0x000031AF, 0x0004006E, 0x00000012, 0x000042A8, 0x000031AF,
0x00050080, 0x00000012, 0x000050B7, 0x000042A8, 0x0000070B, 0x0004003D,
0x000001FE, 0x0000415B, 0x00000C4E, 0x00040064, 0x00000096, 0x00005C42,
0x000001FE, 0x0000415B, 0x0000142B, 0x00040064, 0x00000096, 0x00005C42,
0x0000415B, 0x0007005F, 0x0000001D, 0x000040D3, 0x00005C42, 0x000050B7,
0x00000002, 0x00000A0B, 0x00050080, 0x00000012, 0x00003C5E, 0x000042A8,
0x0000070E, 0x00040064, 0x00000096, 0x00004DF7, 0x0000415B, 0x0007005F,
@ -782,17 +782,17 @@ const uint32_t guest_output_ffx_cas_resample_ps[] = {
0x00003E67, 0x00004700, 0x000024FD, 0x00050085, 0x0000000D, 0x00001B09,
0x00003E67, 0x000024E2, 0x0008000C, 0x0000000D, 0x0000616D, 0x00000001,
0x0000002B, 0x00001B09, 0x00000A0C, 0x0000008A, 0x00050041, 0x0000028B,
0x00005061, 0x00001400, 0x00000A0A, 0x0003003E, 0x00005061, 0x00003B72,
0x00050041, 0x0000028B, 0x00004D14, 0x00001400, 0x00000A0D, 0x0003003E,
0x00004D14, 0x00003B73, 0x00050041, 0x0000028B, 0x00004CC8, 0x00001400,
0x00005061, 0x000014D6, 0x00000A0A, 0x0003003E, 0x00005061, 0x00003B72,
0x00050041, 0x0000028B, 0x00004D14, 0x000014D6, 0x00000A0D, 0x0003003E,
0x00004D14, 0x00003B73, 0x00050041, 0x0000028B, 0x00004CC8, 0x000014D6,
0x00000A10, 0x0003003E, 0x00004CC8, 0x0000616D, 0x0004003D, 0x0000001D,
0x000028CD, 0x00001400, 0x0008004F, 0x00000018, 0x00002397, 0x000028CD,
0x000028CD, 0x000014D6, 0x0008004F, 0x00000018, 0x00002397, 0x000028CD,
0x000028CD, 0x00000000, 0x00000001, 0x00000002, 0x0006000C, 0x00000018,
0x000045F7, 0x00000001, 0x0000001F, 0x00002397, 0x00050051, 0x0000000D,
0x00001BDB, 0x000045F7, 0x00000000, 0x0003003E, 0x00005061, 0x00001BDB,
0x00050051, 0x0000000D, 0x000057A3, 0x000045F7, 0x00000001, 0x0003003E,
0x00004D14, 0x000057A3, 0x00050051, 0x0000000D, 0x00005673, 0x000045F7,
0x00000002, 0x0003003E, 0x00004CC8, 0x00005673, 0x00050041, 0x0000028B,
0x00005AFE, 0x00001400, 0x00000A13, 0x0003003E, 0x00005AFE, 0x0000008A,
0x00005AFE, 0x000014D6, 0x00000A13, 0x0003003E, 0x00005AFE, 0x0000008A,
0x000100FD, 0x00010038,
};

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -8,15 +8,15 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %5120 %gl_FragCoord
OpEntryPoint Fragment %5663 "main" %5777 %gl_FragCoord
OpExecutionMode %5663 OriginUpperLeft
OpDecorate %3150 DescriptorSet 0
OpDecorate %3150 Binding 0
OpMemberDecorate %_struct_1030 0 Offset 16
OpMemberDecorate %_struct_1030 1 Offset 24
OpDecorate %_struct_1030 Block
OpDecorate %5120 Location 0
OpDecorate %5777 Location 0
OpDecorate %gl_FragCoord BuiltIn FragCoord
OpDecorate %5056 DescriptorSet 0
OpDecorate %5056 Binding 0
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%float = OpTypeFloat 32
@ -27,27 +27,41 @@
%bool = OpTypeBool
%v2uint = OpTypeVector %uint 2
%v4uint = OpTypeVector %uint 4
%_struct_1030 = OpTypeStruct %v2float %v2float
%_ptr_PushConstant__struct_1030 = OpTypePointer PushConstant %_struct_1030
%3052 = OpVariable %_ptr_PushConstant__struct_1030 PushConstant
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
%float_0_5 = OpConstant %float 0.5
%float_1 = OpConstant %float 1
%float_n1 = OpConstant %float -1
%1284 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_n1
%int_1 = OpConstant %int 1
%float_2 = OpConstant %float 2
%2460 = OpConstantComposite %v4float %float_n1 %float_2 %float_1 %float_2
%float_0 = OpConstant %float 0
%float_4 = OpConstant %float 4
%uint_1 = OpConstant %uint 1
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%uint_0 = OpConstant %uint 0
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5777 = OpVariable %_ptr_Output_v4float Output
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%_ptr_Output_float = OpTypePointer Output %float
%uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3
%uint_2129690299 = OpConstant %uint 2129690299
%uint_1597275508 = OpConstant %uint 1597275508
%uint_1 = OpConstant %uint 1
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510
%3150 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%5056 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int_2 = OpConstant %int 2
%uint_0 = OpConstant %uint 0
%float_0_400000006 = OpConstant %float 0.400000006
%float_n1 = OpConstant %float -1
%float_1_5625 = OpConstant %float 1.5625
%float_n0_5625 = OpConstant %float -0.5625
%float_0_5 = OpConstant %float 0.5
%uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3
%float_3_05175781en05 = OpConstant %float 3.05175781e-05
%float_n0_5 = OpConstant %float -0.5
%float_n0_289999992 = OpConstant %float -0.289999992
@ -57,44 +71,30 @@
%890 = OpConstantComposite %v2float %float_0 %float_1
%2628 = OpConstantComposite %v2float %float_n1 %float_0
%769 = OpConstantComposite %v2float %float_1 %float_1
%float_2 = OpConstant %float 2
%426 = OpConstantComposite %v2float %float_2 %float_1
%2981 = OpConstantComposite %v2float %float_2 %float_0
%312 = OpConstantComposite %v2float %float_1 %float_0
%313 = OpConstantComposite %v2float %float_1 %float_2
%1823 = OpConstantComposite %v2float %float_0 %float_2
%_struct_1030 = OpTypeStruct %v2float %v2float
%_ptr_PushConstant__struct_1030 = OpTypePointer PushConstant %_struct_1030
%4930 = OpVariable %_ptr_PushConstant__struct_1030 PushConstant
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
%1284 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_n1
%2460 = OpConstantComposite %v4float %float_n1 %float_2 %float_1 %float_2
%float_4 = OpConstant %float 4
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5120 = OpVariable %_ptr_Output_v4float Output
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%_ptr_Output_float = OpTypePointer Output %float
%1566 = OpConstantComposite %v2float %float_0_5 %float_0_5
%325 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
%10264 = OpUndef %v2float
%5663 = OpFunction %void None %1282
%23915 = OpLabel
%8250 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_0
%8250 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_0
%6959 = OpLoad %v2float %8250
%13397 = OpBitcast %v2uint %6959
%12762 = OpVectorTimesScalar %v2float %6959 %float_0_5
%24291 = OpFSub %v2float %12762 %1566
%20131 = OpBitcast %v2uint %24291
%17720 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_1
%17720 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_1
%11122 = OpLoad %v2float %17720
%8543 = OpVectorShuffle %v4float %11122 %11122 0 1 0 1
%11088 = OpFMul %v4float %1284 %8543
%12841 = OpBitcast %v4uint %11088
%16717 = OpFMul %v4float %2460 %8543
%11573 = OpBitcast %v4uint %16717
%20359 = OpAccessChain %_ptr_PushConstant_float %4930 %int_1 %uint_1
%20359 = OpAccessChain %_ptr_PushConstant_float %3052 %int_1 %uint_1
%20680 = OpLoad %float %20359
%17728 = OpFMul %float %float_4 %20680
%22839 = OpBitcast %uint %17728
@ -131,7 +131,7 @@
%8254 = OpCompositeConstruct %v2uint %uint_0 %22839
%15702 = OpBitcast %v2float %8254
%15604 = OpFAdd %v2float %11859 %15702
%15570 = OpLoad %510 %3150
%15570 = OpLoad %510 %5056
%15045 = OpImageGather %v4float %15570 %11859 %int_0
%21315 = OpImageGather %v4float %15570 %11859 %int_1
%7872 = OpImageGather %v4float %15570 %11859 %int_2
@ -763,16 +763,16 @@
%17132 = OpFMul %v3float %7049 %16189
%18007 = OpExtInst %v3float %1 FMax %10578 %17132
%12443 = OpExtInst %v3float %1 FMin %18959 %18007
%9794 = OpAccessChain %_ptr_Output_float %5120 %uint_0
%9794 = OpAccessChain %_ptr_Output_float %5777 %uint_0
%24795 = OpCompositeExtract %float %12443 0
OpStore %9794 %24795
%16378 = OpAccessChain %_ptr_Output_float %5120 %uint_1
%16378 = OpAccessChain %_ptr_Output_float %5777 %uint_1
%15746 = OpCompositeExtract %float %12443 1
OpStore %16378 %15746
%16379 = OpAccessChain %_ptr_Output_float %5120 %uint_2
%16379 = OpAccessChain %_ptr_Output_float %5777 %uint_2
%15747 = OpCompositeExtract %float %12443 2
OpStore %16379 %15747
%23294 = OpAccessChain %_ptr_Output_float %5120 %uint_3
%23294 = OpAccessChain %_ptr_Output_float %5777 %uint_3
OpStore %23294 %float_1
OpReturn
OpFunctionEnd
@ -782,69 +782,69 @@ const uint32_t guest_output_ffx_fsr_easu_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x0000617C, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00001400, 0x00000C93, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C4E, 0x00000022, 0x00000000,
0x00040047, 0x00000C4E, 0x00000021, 0x00000000, 0x00050048, 0x00000406,
0x00000000, 0x00000023, 0x00000010, 0x00050048, 0x00000406, 0x00000001,
0x00000023, 0x00000018, 0x00030047, 0x00000406, 0x00000002, 0x00040047,
0x00001400, 0x0000001E, 0x00000000, 0x00040047, 0x00000C93, 0x0000000B,
0x0000000F, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008,
0x0000161F, 0x6E69616D, 0x00000000, 0x00001691, 0x00000C93, 0x00030010,
0x0000161F, 0x00000007, 0x00050048, 0x00000406, 0x00000000, 0x00000023,
0x00000010, 0x00050048, 0x00000406, 0x00000001, 0x00000023, 0x00000018,
0x00030047, 0x00000406, 0x00000002, 0x00040047, 0x00001691, 0x0000001E,
0x00000000, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F, 0x00040047,
0x000013C0, 0x00000022, 0x00000000, 0x00040047, 0x000013C0, 0x00000021,
0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008,
0x00030016, 0x0000000D, 0x00000020, 0x00040017, 0x00000013, 0x0000000D,
0x00000002, 0x00040017, 0x00000018, 0x0000000D, 0x00000003, 0x00040017,
0x0000001D, 0x0000000D, 0x00000004, 0x00040015, 0x0000000B, 0x00000020,
0x00000000, 0x00020014, 0x00000009, 0x00040017, 0x00000011, 0x0000000B,
0x00000002, 0x00040017, 0x00000017, 0x0000000B, 0x00000004, 0x0004002B,
0x0000000D, 0x0000008A, 0x3F800000, 0x0004002B, 0x0000000D, 0x00000A0C,
0x00000000, 0x0004002B, 0x0000000B, 0x00000344, 0x7EF07EBB, 0x0004002B,
0x0000000B, 0x00000661, 0x5F347D74, 0x0004002B, 0x0000000B, 0x00000A0D,
0x00000001, 0x00090019, 0x00000096, 0x0000000D, 0x00000001, 0x00000000,
0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001B, 0x000001FE,
0x00000096, 0x00040020, 0x0000047B, 0x00000000, 0x000001FE, 0x0004003B,
0x0000047B, 0x00000C4E, 0x00000000, 0x00040015, 0x0000000C, 0x00000020,
0x00000001, 0x0004002B, 0x0000000C, 0x00000A0B, 0x00000000, 0x0004002B,
0x0000000C, 0x00000A0E, 0x00000001, 0x0004002B, 0x0000000C, 0x00000A11,
0x00000002, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x0004002B,
0x0000000D, 0x00000A93, 0x3ECCCCCD, 0x0004002B, 0x0000000D, 0x00000341,
0xBF800000, 0x0004002B, 0x0000000D, 0x000004B3, 0x3FC80000, 0x0004002B,
0x0000000D, 0x000000B4, 0xBF100000, 0x0004002B, 0x0000000D, 0x000000FC,
0x3F000000, 0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B,
0x0000000B, 0x00000A13, 0x00000003, 0x0004002B, 0x0000000D, 0x00000738,
0x38000000, 0x0004002B, 0x0000000D, 0x000003B3, 0xBF000000, 0x0004002B,
0x0000000D, 0x0000075D, 0xBE947AE1, 0x0005002C, 0x00000013, 0x00000379,
0x00000A0C, 0x00000341, 0x0005002C, 0x00000013, 0x00000300, 0x0000008A,
0x00000341, 0x0005002C, 0x00000013, 0x00000049, 0x00000341, 0x0000008A,
0x0005002C, 0x00000013, 0x0000037A, 0x00000A0C, 0x0000008A, 0x0005002C,
0x00000013, 0x00000A44, 0x00000341, 0x00000A0C, 0x0005002C, 0x00000013,
0x00000301, 0x0000008A, 0x0000008A, 0x0004002B, 0x0000000D, 0x00000019,
0x40000000, 0x0005002C, 0x00000013, 0x000001AA, 0x00000019, 0x0000008A,
0x0005002C, 0x00000013, 0x00000BA5, 0x00000019, 0x00000A0C, 0x0005002C,
0x00000013, 0x00000138, 0x0000008A, 0x00000A0C, 0x0005002C, 0x00000013,
0x00000139, 0x0000008A, 0x00000019, 0x0005002C, 0x00000013, 0x0000071F,
0x00000A0C, 0x00000019, 0x0004001E, 0x00000406, 0x00000013, 0x00000013,
0x00040020, 0x00000683, 0x00000009, 0x00000406, 0x0004003B, 0x00000683,
0x00001342, 0x00000009, 0x00040020, 0x00000290, 0x00000009, 0x00000013,
0x0007002C, 0x0000001D, 0x00000504, 0x0000008A, 0x0000008A, 0x0000008A,
0x00000341, 0x0007002C, 0x0000001D, 0x0000099C, 0x00000341, 0x00000019,
0x0000008A, 0x00000019, 0x0004002B, 0x0000000D, 0x00000B69, 0x40800000,
0x00040020, 0x0000028A, 0x00000009, 0x0000000D, 0x00040020, 0x0000029A,
0x00000003, 0x0000001D, 0x0004003B, 0x0000029A, 0x00001400, 0x00000003,
0x00040020, 0x0000029B, 0x00000001, 0x0000001D, 0x0004003B, 0x0000029B,
0x00000C93, 0x00000001, 0x00040020, 0x0000028B, 0x00000003, 0x0000000D,
0x00000002, 0x00040017, 0x00000017, 0x0000000B, 0x00000004, 0x0004001E,
0x00000406, 0x00000013, 0x00000013, 0x00040020, 0x00000683, 0x00000009,
0x00000406, 0x0004003B, 0x00000683, 0x00000BEC, 0x00000009, 0x00040015,
0x0000000C, 0x00000020, 0x00000001, 0x0004002B, 0x0000000C, 0x00000A0B,
0x00000000, 0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x0004002B,
0x0000000D, 0x000000FC, 0x3F000000, 0x0004002B, 0x0000000D, 0x0000008A,
0x3F800000, 0x0004002B, 0x0000000D, 0x00000341, 0xBF800000, 0x0007002C,
0x0000001D, 0x00000504, 0x0000008A, 0x0000008A, 0x0000008A, 0x00000341,
0x0004002B, 0x0000000C, 0x00000A0E, 0x00000001, 0x0004002B, 0x0000000D,
0x00000019, 0x40000000, 0x0007002C, 0x0000001D, 0x0000099C, 0x00000341,
0x00000019, 0x0000008A, 0x00000019, 0x0004002B, 0x0000000D, 0x00000A0C,
0x00000000, 0x0004002B, 0x0000000D, 0x00000B69, 0x40800000, 0x0004002B,
0x0000000B, 0x00000A0D, 0x00000001, 0x00040020, 0x0000028A, 0x00000009,
0x0000000D, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x00040020,
0x0000029A, 0x00000003, 0x0000001D, 0x0004003B, 0x0000029A, 0x00001691,
0x00000003, 0x00040020, 0x0000029B, 0x00000001, 0x0000001D, 0x0004003B,
0x0000029B, 0x00000C93, 0x00000001, 0x00040020, 0x0000028B, 0x00000003,
0x0000000D, 0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B,
0x0000000B, 0x00000A13, 0x00000003, 0x0004002B, 0x0000000B, 0x00000344,
0x7EF07EBB, 0x0004002B, 0x0000000B, 0x00000661, 0x5F347D74, 0x00090019,
0x00000096, 0x0000000D, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
0x00000001, 0x00000000, 0x0003001B, 0x000001FE, 0x00000096, 0x00040020,
0x0000047B, 0x00000000, 0x000001FE, 0x0004003B, 0x0000047B, 0x000013C0,
0x00000000, 0x0004002B, 0x0000000C, 0x00000A11, 0x00000002, 0x0004002B,
0x0000000D, 0x00000A93, 0x3ECCCCCD, 0x0004002B, 0x0000000D, 0x000004B3,
0x3FC80000, 0x0004002B, 0x0000000D, 0x000000B4, 0xBF100000, 0x0004002B,
0x0000000D, 0x00000738, 0x38000000, 0x0004002B, 0x0000000D, 0x000003B3,
0xBF000000, 0x0004002B, 0x0000000D, 0x0000075D, 0xBE947AE1, 0x0005002C,
0x00000013, 0x00000379, 0x00000A0C, 0x00000341, 0x0005002C, 0x00000013,
0x00000300, 0x0000008A, 0x00000341, 0x0005002C, 0x00000013, 0x00000049,
0x00000341, 0x0000008A, 0x0005002C, 0x00000013, 0x0000037A, 0x00000A0C,
0x0000008A, 0x0005002C, 0x00000013, 0x00000A44, 0x00000341, 0x00000A0C,
0x0005002C, 0x00000013, 0x00000301, 0x0000008A, 0x0000008A, 0x0005002C,
0x00000013, 0x000001AA, 0x00000019, 0x0000008A, 0x0005002C, 0x00000013,
0x00000BA5, 0x00000019, 0x00000A0C, 0x0005002C, 0x00000013, 0x00000138,
0x0000008A, 0x00000A0C, 0x0005002C, 0x00000013, 0x00000139, 0x0000008A,
0x00000019, 0x0005002C, 0x00000013, 0x0000071F, 0x00000A0C, 0x00000019,
0x0005002C, 0x00000013, 0x0000061E, 0x000000FC, 0x000000FC, 0x0007002C,
0x0000001D, 0x00000145, 0x000000FC, 0x000000FC, 0x000000FC, 0x000000FC,
0x00030001, 0x00000013, 0x00002818, 0x00050036, 0x00000008, 0x0000161F,
0x00000000, 0x00000502, 0x000200F8, 0x00005D6B, 0x00050041, 0x00000290,
0x0000203A, 0x00001342, 0x00000A0B, 0x0004003D, 0x00000013, 0x00001B2F,
0x0000203A, 0x00000BEC, 0x00000A0B, 0x0004003D, 0x00000013, 0x00001B2F,
0x0000203A, 0x0004007C, 0x00000011, 0x00003455, 0x00001B2F, 0x0005008E,
0x00000013, 0x000031DA, 0x00001B2F, 0x000000FC, 0x00050083, 0x00000013,
0x00005EE3, 0x000031DA, 0x0000061E, 0x0004007C, 0x00000011, 0x00004EA3,
0x00005EE3, 0x00050041, 0x00000290, 0x00004538, 0x00001342, 0x00000A0E,
0x00005EE3, 0x00050041, 0x00000290, 0x00004538, 0x00000BEC, 0x00000A0E,
0x0004003D, 0x00000013, 0x00002B72, 0x00004538, 0x0009004F, 0x0000001D,
0x0000215F, 0x00002B72, 0x00002B72, 0x00000000, 0x00000001, 0x00000000,
0x00000001, 0x00050085, 0x0000001D, 0x00002B50, 0x00000504, 0x0000215F,
0x0004007C, 0x00000017, 0x00003229, 0x00002B50, 0x00050085, 0x0000001D,
0x0000414D, 0x0000099C, 0x0000215F, 0x0004007C, 0x00000017, 0x00002D35,
0x0000414D, 0x00060041, 0x0000028A, 0x00004F87, 0x00001342, 0x00000A0E,
0x0000414D, 0x00060041, 0x0000028A, 0x00004F87, 0x00000BEC, 0x00000A0E,
0x00000A0D, 0x0004003D, 0x0000000D, 0x000050C8, 0x00004F87, 0x00050085,
0x0000000D, 0x00004540, 0x00000B69, 0x000050C8, 0x0004007C, 0x0000000B,
0x00005937, 0x00004540, 0x0004003D, 0x0000001D, 0x00002C9B, 0x00000C93,
@ -874,7 +874,7 @@ const uint32_t guest_output_ffx_fsr_easu_ps[] = {
0x00002E53, 0x000025A4, 0x00050050, 0x00000011, 0x0000203E, 0x00000A0A,
0x00005937, 0x0004007C, 0x00000013, 0x00003D56, 0x0000203E, 0x00050081,
0x00000013, 0x00003CF4, 0x00002E53, 0x00003D56, 0x0004003D, 0x000001FE,
0x00003CD2, 0x00000C4E, 0x00060060, 0x0000001D, 0x00003AC5, 0x00003CD2,
0x00003CD2, 0x000013C0, 0x00060060, 0x0000001D, 0x00003AC5, 0x00003CD2,
0x00002E53, 0x00000A0B, 0x00060060, 0x0000001D, 0x00005343, 0x00003CD2,
0x00002E53, 0x00000A0E, 0x00060060, 0x0000001D, 0x00001EC0, 0x00003CD2,
0x00002E53, 0x00000A11, 0x00060060, 0x0000001D, 0x00001EC1, 0x00003CD2,
@ -1423,12 +1423,12 @@ const uint32_t guest_output_ffx_fsr_easu_ps[] = {
0x00003F3D, 0x0007000C, 0x00000018, 0x00004657, 0x00000001, 0x00000028,
0x00002952, 0x000042EC, 0x0007000C, 0x00000018, 0x0000309B, 0x00000001,
0x00000025, 0x00004A0F, 0x00004657, 0x00050041, 0x0000028B, 0x00002642,
0x00001400, 0x00000A0A, 0x00050051, 0x0000000D, 0x000060DB, 0x0000309B,
0x00001691, 0x00000A0A, 0x00050051, 0x0000000D, 0x000060DB, 0x0000309B,
0x00000000, 0x0003003E, 0x00002642, 0x000060DB, 0x00050041, 0x0000028B,
0x00003FFA, 0x00001400, 0x00000A0D, 0x00050051, 0x0000000D, 0x00003D82,
0x00003FFA, 0x00001691, 0x00000A0D, 0x00050051, 0x0000000D, 0x00003D82,
0x0000309B, 0x00000001, 0x0003003E, 0x00003FFA, 0x00003D82, 0x00050041,
0x0000028B, 0x00003FFB, 0x00001400, 0x00000A10, 0x00050051, 0x0000000D,
0x0000028B, 0x00003FFB, 0x00001691, 0x00000A10, 0x00050051, 0x0000000D,
0x00003D83, 0x0000309B, 0x00000002, 0x0003003E, 0x00003FFB, 0x00003D83,
0x00050041, 0x0000028B, 0x00005AFE, 0x00001400, 0x00000A13, 0x0003003E,
0x00050041, 0x0000028B, 0x00005AFE, 0x00001691, 0x00000A13, 0x0003003E,
0x00005AFE, 0x0000008A, 0x000100FD, 0x00010038,
};

File diff suppressed because one or more lines are too long

View File

@ -8,15 +8,15 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5120
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %3253
OpExecutionMode %5663 OriginUpperLeft
OpDecorate %3150 DescriptorSet 0
OpDecorate %3150 Binding 0
OpDecorate %gl_FragCoord BuiltIn FragCoord
OpMemberDecorate %_struct_1010 0 Offset 16
OpMemberDecorate %_struct_1010 1 Offset 24
OpDecorate %_struct_1010 Block
OpDecorate %5120 Location 0
OpDecorate %3253 Location 0
OpDecorate %3575 DescriptorSet 0
OpDecorate %3575 Binding 0
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%float = OpTypeFloat 32
@ -25,55 +25,55 @@
%v2int = OpTypeVector %int 2
%v4float = OpTypeVector %float 4
%v2uint = OpTypeVector %uint 2
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%v2float = OpTypeVector %float 2
%_struct_1010 = OpTypeStruct %v2int %float
%_ptr_PushConstant__struct_1010 = OpTypePointer PushConstant %_struct_1010
%3052 = OpVariable %_ptr_PushConstant__struct_1010 PushConstant
%int_0 = OpConstant %int 0
%_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int
%int_1 = OpConstant %int 1
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%uint_0 = OpConstant %uint 0
%_ptr_Output_v4float = OpTypePointer Output %v4float
%3253 = OpVariable %_ptr_Output_v4float Output
%_ptr_Output_float = OpTypePointer Output %float
%uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2
%float_1 = OpConstant %float 1
%uint_3 = OpConstant %uint 3
%float_0 = OpConstant %float 0
%uint_2129764351 = OpConstant %uint 2129764351
%float_2 = OpConstant %float 2
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510
%3150 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int_0 = OpConstant %int 0
%3575 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int_n1 = OpConstant %int -1
%1803 = OpConstantComposite %v2int %int_0 %int_n1
%1806 = OpConstantComposite %v2int %int_n1 %int_0
%int_1 = OpConstant %int 1
%1824 = OpConstantComposite %v2int %int_1 %int_0
%1827 = OpConstantComposite %v2int %int_0 %int_1
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2
%v2float = OpTypeVector %float 2
%float_n4 = OpConstant %float -4
%float_4 = OpConstant %float 4
%float_n0_1875 = OpConstant %float -0.1875
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
%_struct_1010 = OpTypeStruct %v2int %float
%_ptr_PushConstant__struct_1010 = OpTypePointer PushConstant %_struct_1010
%4930 = OpVariable %_ptr_PushConstant__struct_1010 PushConstant
%_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int
%_ptr_PushConstant_float = OpTypePointer PushConstant %float
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5120 = OpVariable %_ptr_Output_v4float Output
%_ptr_Output_float = OpTypePointer Output %float
%uint_3 = OpConstant %uint 3
%float_0_25 = OpConstant %float 0.25
%5663 = OpFunction %void None %1282
%24949 = OpLabel
%18571 = OpLoad %v4float %gl_FragCoord
%14008 = OpVectorShuffle %v2float %18571 %18571 0 1
%17656 = OpConvertFToS %v2int %14008
%19279 = OpAccessChain %_ptr_PushConstant_v2int %4930 %int_0
%19279 = OpAccessChain %_ptr_PushConstant_v2int %3052 %int_0
%22822 = OpLoad %v2int %19279
%23312 = OpISub %v2int %17656 %22822
%9938 = OpBitcast %v2uint %23312
%20997 = OpAccessChain %_ptr_PushConstant_float %4930 %int_1
%20997 = OpAccessChain %_ptr_PushConstant_float %3052 %int_1
%22237 = OpLoad %float %20997
%16454 = OpBitcast %uint %22237
%6990 = OpBitcast %v2int %9938
%14460 = OpIAdd %v2int %6990 %1803
%21565 = OpLoad %510 %3150
%21565 = OpLoad %510 %3575
%22725 = OpImage %150 %21565
%24365 = OpImageFetch %v4float %22725 %14460 Lod %int_0
%22126 = OpCompositeExtract %float %24365 0
@ -186,13 +186,13 @@
%12675 = OpFMul %float %20919 %6537
%16937 = OpFAdd %float %12675 %18962
%19165 = OpFMul %float %16937 %9366
%19584 = OpAccessChain %_ptr_Output_float %5120 %uint_0
%19584 = OpAccessChain %_ptr_Output_float %3253 %uint_0
OpStore %19584 %9367
%19732 = OpAccessChain %_ptr_Output_float %5120 %uint_1
%19732 = OpAccessChain %_ptr_Output_float %3253 %uint_1
OpStore %19732 %9368
%19733 = OpAccessChain %_ptr_Output_float %5120 %uint_2
%19733 = OpAccessChain %_ptr_Output_float %3253 %uint_2
OpStore %19733 %19165
%23304 = OpAccessChain %_ptr_Output_float %5120 %uint_3
%23304 = OpAccessChain %_ptr_Output_float %3253 %uint_3
OpStore %23304 %float_1
OpReturn
OpFunctionEnd
@ -202,52 +202,52 @@ const uint32_t guest_output_ffx_fsr_rcas_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x00006240, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x00001400, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C4E, 0x00000022, 0x00000000,
0x00040047, 0x00000C4E, 0x00000021, 0x00000000, 0x00040047, 0x00000C93,
0x0000000B, 0x0000000F, 0x00050048, 0x000003F2, 0x00000000, 0x00000023,
0x00000010, 0x00050048, 0x000003F2, 0x00000001, 0x00000023, 0x00000018,
0x00030047, 0x000003F2, 0x00000002, 0x00040047, 0x00001400, 0x0000001E,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x00000CB5, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F,
0x00050048, 0x000003F2, 0x00000000, 0x00000023, 0x00000010, 0x00050048,
0x000003F2, 0x00000001, 0x00000023, 0x00000018, 0x00030047, 0x000003F2,
0x00000002, 0x00040047, 0x00000CB5, 0x0000001E, 0x00000000, 0x00040047,
0x00000DF7, 0x00000022, 0x00000000, 0x00040047, 0x00000DF7, 0x00000021,
0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008,
0x00030016, 0x0000000D, 0x00000020, 0x00040015, 0x0000000B, 0x00000020,
0x00000000, 0x00040015, 0x0000000C, 0x00000020, 0x00000001, 0x00040017,
0x00000012, 0x0000000C, 0x00000002, 0x00040017, 0x0000001D, 0x0000000D,
0x00000004, 0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x0004002B,
0x0000000D, 0x0000008A, 0x3F800000, 0x0004002B, 0x0000000D, 0x00000A0C,
0x00000000, 0x0004002B, 0x0000000B, 0x000000B2, 0x7EF19FFF, 0x0004002B,
0x0000000D, 0x00000018, 0x40000000, 0x00090019, 0x00000096, 0x0000000D,
0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
0x0003001B, 0x000001FE, 0x00000096, 0x00040020, 0x0000047B, 0x00000000,
0x000001FE, 0x0004003B, 0x0000047B, 0x00000C4E, 0x00000000, 0x0004002B,
0x0000000C, 0x00000A0B, 0x00000000, 0x0004002B, 0x0000000C, 0x00000A08,
0xFFFFFFFF, 0x0005002C, 0x00000012, 0x0000070B, 0x00000A0B, 0x00000A08,
0x0005002C, 0x00000012, 0x0000070E, 0x00000A08, 0x00000A0B, 0x0004002B,
0x0000000C, 0x00000A0E, 0x00000001, 0x0005002C, 0x00000012, 0x00000720,
0x00000A0E, 0x00000A0B, 0x0005002C, 0x00000012, 0x00000723, 0x00000A0B,
0x00000A0E, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x0004002B,
0x0000000B, 0x00000A0D, 0x00000001, 0x0004002B, 0x0000000B, 0x00000A10,
0x00000002, 0x00040017, 0x00000013, 0x0000000D, 0x00000002, 0x0004002B,
0x0000000D, 0x0000025D, 0xC0800000, 0x0004002B, 0x0000000D, 0x00000B69,
0x40800000, 0x0004002B, 0x0000000D, 0x0000045E, 0xBE400000, 0x00040020,
0x00000004, 0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x00040020,
0x0000029A, 0x00000001, 0x0000001D, 0x0004003B, 0x0000029A, 0x00000C93,
0x00000001, 0x0004001E, 0x000003F2, 0x00000012, 0x0000000D, 0x00040020,
0x0000066F, 0x00000009, 0x000003F2, 0x0004003B, 0x0000066F, 0x00001342,
0x00000009, 0x00040020, 0x0000028F, 0x00000009, 0x00000012, 0x00040020,
0x0000028A, 0x00000009, 0x0000000D, 0x00040020, 0x0000029B, 0x00000003,
0x0000001D, 0x0004003B, 0x0000029B, 0x00001400, 0x00000003, 0x00040020,
0x0000028B, 0x00000003, 0x0000000D, 0x0004002B, 0x0000000B, 0x00000A13,
0x00000003, 0x0004002B, 0x0000000D, 0x0000016E, 0x3E800000, 0x00050036,
0x00000001, 0x00040017, 0x00000013, 0x0000000D, 0x00000002, 0x0004001E,
0x000003F2, 0x00000012, 0x0000000D, 0x00040020, 0x0000066F, 0x00000009,
0x000003F2, 0x0004003B, 0x0000066F, 0x00000BEC, 0x00000009, 0x0004002B,
0x0000000C, 0x00000A0B, 0x00000000, 0x00040020, 0x0000028F, 0x00000009,
0x00000012, 0x0004002B, 0x0000000C, 0x00000A0E, 0x00000001, 0x00040020,
0x0000028A, 0x00000009, 0x0000000D, 0x0004002B, 0x0000000B, 0x00000A0A,
0x00000000, 0x00040020, 0x0000029B, 0x00000003, 0x0000001D, 0x0004003B,
0x0000029B, 0x00000CB5, 0x00000003, 0x00040020, 0x0000028B, 0x00000003,
0x0000000D, 0x0004002B, 0x0000000B, 0x00000A0D, 0x00000001, 0x0004002B,
0x0000000B, 0x00000A10, 0x00000002, 0x0004002B, 0x0000000D, 0x0000008A,
0x3F800000, 0x0004002B, 0x0000000B, 0x00000A13, 0x00000003, 0x0004002B,
0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B, 0x0000000B, 0x000000B2,
0x7EF19FFF, 0x0004002B, 0x0000000D, 0x00000018, 0x40000000, 0x00090019,
0x00000096, 0x0000000D, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
0x00000001, 0x00000000, 0x0003001B, 0x000001FE, 0x00000096, 0x00040020,
0x0000047B, 0x00000000, 0x000001FE, 0x0004003B, 0x0000047B, 0x00000DF7,
0x00000000, 0x0004002B, 0x0000000C, 0x00000A08, 0xFFFFFFFF, 0x0005002C,
0x00000012, 0x0000070B, 0x00000A0B, 0x00000A08, 0x0005002C, 0x00000012,
0x0000070E, 0x00000A08, 0x00000A0B, 0x0005002C, 0x00000012, 0x00000720,
0x00000A0E, 0x00000A0B, 0x0005002C, 0x00000012, 0x00000723, 0x00000A0B,
0x00000A0E, 0x0004002B, 0x0000000D, 0x0000025D, 0xC0800000, 0x0004002B,
0x0000000D, 0x00000B69, 0x40800000, 0x0004002B, 0x0000000D, 0x0000045E,
0xBE400000, 0x0004002B, 0x0000000D, 0x0000016E, 0x3E800000, 0x00050036,
0x00000008, 0x0000161F, 0x00000000, 0x00000502, 0x000200F8, 0x00006175,
0x0004003D, 0x0000001D, 0x0000488B, 0x00000C93, 0x0007004F, 0x00000013,
0x000036B8, 0x0000488B, 0x0000488B, 0x00000000, 0x00000001, 0x0004006E,
0x00000012, 0x000044F8, 0x000036B8, 0x00050041, 0x0000028F, 0x00004B4F,
0x00001342, 0x00000A0B, 0x0004003D, 0x00000012, 0x00005926, 0x00004B4F,
0x00000BEC, 0x00000A0B, 0x0004003D, 0x00000012, 0x00005926, 0x00004B4F,
0x00050082, 0x00000012, 0x00005B10, 0x000044F8, 0x00005926, 0x0004007C,
0x00000011, 0x000026D2, 0x00005B10, 0x00050041, 0x0000028A, 0x00005205,
0x00001342, 0x00000A0E, 0x0004003D, 0x0000000D, 0x000056DD, 0x00005205,
0x00000BEC, 0x00000A0E, 0x0004003D, 0x0000000D, 0x000056DD, 0x00005205,
0x0004007C, 0x0000000B, 0x00004046, 0x000056DD, 0x0004007C, 0x00000012,
0x00001B4E, 0x000026D2, 0x00050080, 0x00000012, 0x0000387C, 0x00001B4E,
0x0000070B, 0x0004003D, 0x000001FE, 0x0000543D, 0x00000C4E, 0x00040064,
0x0000070B, 0x0004003D, 0x000001FE, 0x0000543D, 0x00000DF7, 0x00040064,
0x00000096, 0x000058C5, 0x0000543D, 0x0007005F, 0x0000001D, 0x00005F2D,
0x000058C5, 0x0000387C, 0x00000002, 0x00000A0B, 0x00050051, 0x0000000D,
0x0000566E, 0x00005F2D, 0x00000000, 0x00050051, 0x0000000D, 0x00001B12,
@ -351,10 +351,10 @@ const uint32_t guest_output_ffx_fsr_rcas_ps[] = {
0x0000000D, 0x00001989, 0x00005A69, 0x00004A13, 0x00050085, 0x0000000D,
0x00003183, 0x000051B7, 0x00001989, 0x00050081, 0x0000000D, 0x00004229,
0x00003183, 0x00004A12, 0x00050085, 0x0000000D, 0x00004ADD, 0x00004229,
0x00002496, 0x00050041, 0x0000028B, 0x00004C80, 0x00001400, 0x00000A0A,
0x00002496, 0x00050041, 0x0000028B, 0x00004C80, 0x00000CB5, 0x00000A0A,
0x0003003E, 0x00004C80, 0x00002497, 0x00050041, 0x0000028B, 0x00004D14,
0x00001400, 0x00000A0D, 0x0003003E, 0x00004D14, 0x00002498, 0x00050041,
0x0000028B, 0x00004D15, 0x00001400, 0x00000A10, 0x0003003E, 0x00004D15,
0x00004ADD, 0x00050041, 0x0000028B, 0x00005B08, 0x00001400, 0x00000A13,
0x00000CB5, 0x00000A0D, 0x0003003E, 0x00004D14, 0x00002498, 0x00050041,
0x0000028B, 0x00004D15, 0x00000CB5, 0x00000A10, 0x0003003E, 0x00004D15,
0x00004ADD, 0x00050041, 0x0000028B, 0x00005B08, 0x00000CB5, 0x00000A13,
0x0003003E, 0x00005B08, 0x0000008A, 0x000100FD, 0x00010038,
};

View File

@ -8,10 +8,12 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %5663 "main" %22044 %gl_VertexIndex
OpMemberDecorate %_struct_1032 0 BuiltIn Position
OpMemberDecorate %_struct_1032 1 BuiltIn PointSize
OpDecorate %_struct_1032 Block
OpEntryPoint Vertex %5663 "main" %4930 %gl_VertexIndex
OpMemberDecorate %_struct_2935 0 BuiltIn Position
OpMemberDecorate %_struct_2935 1 BuiltIn PointSize
OpMemberDecorate %_struct_2935 2 BuiltIn ClipDistance
OpMemberDecorate %_struct_2935 3 BuiltIn CullDistance
OpDecorate %_struct_2935 Block
OpMemberDecorate %_struct_1030 0 Offset 0
OpMemberDecorate %_struct_1030 1 Offset 8
OpDecorate %_struct_1030 Block
@ -20,22 +22,23 @@
%1282 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_struct_1032 = OpTypeStruct %v4float %float
%_ptr_Output__struct_1032 = OpTypePointer Output %_struct_1032
%22044 = OpVariable %_ptr_Output__struct_1032 Output
%uint = OpTypeInt 32 0
%uint_1 = OpConstant %uint 1
%_arr_float_uint_1 = OpTypeArray %float %uint_1
%_struct_2935 = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
%_ptr_Output__struct_2935 = OpTypePointer Output %_struct_2935
%4930 = OpVariable %_ptr_Output__struct_2935 Output
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%v2float = OpTypeVector %float 2
%_struct_1030 = OpTypeStruct %v2float %v2float
%_ptr_PushConstant__struct_1030 = OpTypePointer PushConstant %_struct_1030
%4930 = OpVariable %_ptr_PushConstant__struct_1030 PushConstant
%3052 = OpVariable %_ptr_PushConstant__struct_1030 PushConstant
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
%_ptr_Input_int = OpTypePointer Input %int
%gl_VertexIndex = OpVariable %_ptr_Input_int Input
%uint = OpTypeInt 32 0
%v2uint = OpTypeVector %uint 2
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%1819 = OpConstantComposite %v2uint %uint_0 %uint_1
%int_1 = OpConstant %int 1
%float_0 = OpConstant %float 0
@ -44,7 +47,7 @@
%1828 = OpConstantComposite %v2uint %uint_1 %uint_1
%5663 = OpFunction %void None %1282
%23915 = OpLabel
%7053 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_0
%7053 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_0
%17516 = OpLoad %v2float %7053
%23241 = OpLoad %int %gl_VertexIndex
%9480 = OpBitcast %uint %23241
@ -52,14 +55,14 @@
%14991 = OpShiftRightLogical %v2uint %15408 %1819
%17567 = OpBitwiseAnd %v2uint %14991 %1828
%7856 = OpConvertUToF %v2float %17567
%12606 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_1
%12606 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_1
%24011 = OpLoad %v2float %12606
%17243 = OpFMul %v2float %7856 %24011
%16594 = OpFAdd %v2float %17516 %17243
%10599 = OpCompositeExtract %float %16594 0
%13956 = OpCompositeExtract %float %16594 1
%18260 = OpCompositeConstruct %v4float %10599 %13956 %float_0 %float_1
%12055 = OpAccessChain %_ptr_Output_v4float %22044 %int_0
%12055 = OpAccessChain %_ptr_Output_v4float %4930 %int_0
OpStore %12055 %18260
OpReturn
OpFunctionEnd
@ -69,42 +72,45 @@ const uint32_t guest_output_triangle_strip_rect_vs[] = {
0x07230203, 0x00010000, 0x0008000A, 0x00005DCC, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000000,
0x0000161F, 0x6E69616D, 0x00000000, 0x0000561C, 0x00001029, 0x00050048,
0x00000408, 0x00000000, 0x0000000B, 0x00000000, 0x00050048, 0x00000408,
0x00000001, 0x0000000B, 0x00000001, 0x00030047, 0x00000408, 0x00000002,
0x00050048, 0x00000406, 0x00000000, 0x00000023, 0x00000000, 0x00050048,
0x00000406, 0x00000001, 0x00000023, 0x00000008, 0x00030047, 0x00000406,
0x00000002, 0x00040047, 0x00001029, 0x0000000B, 0x0000002A, 0x00020013,
0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00030016, 0x0000000D,
0x00000020, 0x00040017, 0x0000001D, 0x0000000D, 0x00000004, 0x0004001E,
0x00000408, 0x0000001D, 0x0000000D, 0x00040020, 0x00000685, 0x00000003,
0x00000408, 0x0004003B, 0x00000685, 0x0000561C, 0x00000003, 0x00040015,
0x0000161F, 0x6E69616D, 0x00000000, 0x00001342, 0x00001029, 0x00050048,
0x00000B77, 0x00000000, 0x0000000B, 0x00000000, 0x00050048, 0x00000B77,
0x00000001, 0x0000000B, 0x00000001, 0x00050048, 0x00000B77, 0x00000002,
0x0000000B, 0x00000003, 0x00050048, 0x00000B77, 0x00000003, 0x0000000B,
0x00000004, 0x00030047, 0x00000B77, 0x00000002, 0x00050048, 0x00000406,
0x00000000, 0x00000023, 0x00000000, 0x00050048, 0x00000406, 0x00000001,
0x00000023, 0x00000008, 0x00030047, 0x00000406, 0x00000002, 0x00040047,
0x00001029, 0x0000000B, 0x0000002A, 0x00020013, 0x00000008, 0x00030021,
0x00000502, 0x00000008, 0x00030016, 0x0000000D, 0x00000020, 0x00040017,
0x0000001D, 0x0000000D, 0x00000004, 0x00040015, 0x0000000B, 0x00000020,
0x00000000, 0x0004002B, 0x0000000B, 0x00000A0D, 0x00000001, 0x0004001C,
0x0000022A, 0x0000000D, 0x00000A0D, 0x0006001E, 0x00000B77, 0x0000001D,
0x0000000D, 0x0000022A, 0x0000022A, 0x00040020, 0x00000231, 0x00000003,
0x00000B77, 0x0004003B, 0x00000231, 0x00001342, 0x00000003, 0x00040015,
0x0000000C, 0x00000020, 0x00000001, 0x0004002B, 0x0000000C, 0x00000A0B,
0x00000000, 0x00040017, 0x00000013, 0x0000000D, 0x00000002, 0x0004001E,
0x00000406, 0x00000013, 0x00000013, 0x00040020, 0x00000683, 0x00000009,
0x00000406, 0x0004003B, 0x00000683, 0x00001342, 0x00000009, 0x00040020,
0x00000406, 0x0004003B, 0x00000683, 0x00000BEC, 0x00000009, 0x00040020,
0x00000290, 0x00000009, 0x00000013, 0x00040020, 0x00000289, 0x00000001,
0x0000000C, 0x0004003B, 0x00000289, 0x00001029, 0x00000001, 0x00040015,
0x0000000B, 0x00000020, 0x00000000, 0x00040017, 0x00000011, 0x0000000B,
0x00000002, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x0004002B,
0x0000000B, 0x00000A0D, 0x00000001, 0x0005002C, 0x00000011, 0x0000071B,
0x00000A0A, 0x00000A0D, 0x0004002B, 0x0000000C, 0x00000A0E, 0x00000001,
0x0004002B, 0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B, 0x0000000D,
0x0000008A, 0x3F800000, 0x00040020, 0x0000029A, 0x00000003, 0x0000001D,
0x0005002C, 0x00000011, 0x00000724, 0x00000A0D, 0x00000A0D, 0x00050036,
0x00000008, 0x0000161F, 0x00000000, 0x00000502, 0x000200F8, 0x00005D6B,
0x00050041, 0x00000290, 0x00001B8D, 0x00001342, 0x00000A0B, 0x0004003D,
0x00000013, 0x0000446C, 0x00001B8D, 0x0004003D, 0x0000000C, 0x00005AC9,
0x00001029, 0x0004007C, 0x0000000B, 0x00002508, 0x00005AC9, 0x00050050,
0x00000011, 0x00003C30, 0x00002508, 0x00002508, 0x000500C2, 0x00000011,
0x00003A8F, 0x00003C30, 0x0000071B, 0x000500C7, 0x00000011, 0x0000449F,
0x00003A8F, 0x00000724, 0x00040070, 0x00000013, 0x00001EB0, 0x0000449F,
0x00050041, 0x00000290, 0x0000313E, 0x00001342, 0x00000A0E, 0x0004003D,
0x00000013, 0x00005DCB, 0x0000313E, 0x00050085, 0x00000013, 0x0000435B,
0x00001EB0, 0x00005DCB, 0x00050081, 0x00000013, 0x000040D2, 0x0000446C,
0x0000435B, 0x00050051, 0x0000000D, 0x00002967, 0x000040D2, 0x00000000,
0x00050051, 0x0000000D, 0x00003684, 0x000040D2, 0x00000001, 0x00070050,
0x0000001D, 0x00004754, 0x00002967, 0x00003684, 0x00000A0C, 0x0000008A,
0x00050041, 0x0000029A, 0x00002F17, 0x0000561C, 0x00000A0B, 0x0003003E,
0x00002F17, 0x00004754, 0x000100FD, 0x00010038,
0x0000000C, 0x0004003B, 0x00000289, 0x00001029, 0x00000001, 0x00040017,
0x00000011, 0x0000000B, 0x00000002, 0x0004002B, 0x0000000B, 0x00000A0A,
0x00000000, 0x0005002C, 0x00000011, 0x0000071B, 0x00000A0A, 0x00000A0D,
0x0004002B, 0x0000000C, 0x00000A0E, 0x00000001, 0x0004002B, 0x0000000D,
0x00000A0C, 0x00000000, 0x0004002B, 0x0000000D, 0x0000008A, 0x3F800000,
0x00040020, 0x0000029A, 0x00000003, 0x0000001D, 0x0005002C, 0x00000011,
0x00000724, 0x00000A0D, 0x00000A0D, 0x00050036, 0x00000008, 0x0000161F,
0x00000000, 0x00000502, 0x000200F8, 0x00005D6B, 0x00050041, 0x00000290,
0x00001B8D, 0x00000BEC, 0x00000A0B, 0x0004003D, 0x00000013, 0x0000446C,
0x00001B8D, 0x0004003D, 0x0000000C, 0x00005AC9, 0x00001029, 0x0004007C,
0x0000000B, 0x00002508, 0x00005AC9, 0x00050050, 0x00000011, 0x00003C30,
0x00002508, 0x00002508, 0x000500C2, 0x00000011, 0x00003A8F, 0x00003C30,
0x0000071B, 0x000500C7, 0x00000011, 0x0000449F, 0x00003A8F, 0x00000724,
0x00040070, 0x00000013, 0x00001EB0, 0x0000449F, 0x00050041, 0x00000290,
0x0000313E, 0x00000BEC, 0x00000A0E, 0x0004003D, 0x00000013, 0x00005DCB,
0x0000313E, 0x00050085, 0x00000013, 0x0000435B, 0x00001EB0, 0x00005DCB,
0x00050081, 0x00000013, 0x000040D2, 0x0000446C, 0x0000435B, 0x00050051,
0x0000000D, 0x00002967, 0x000040D2, 0x00000000, 0x00050051, 0x0000000D,
0x00003684, 0x000040D2, 0x00000001, 0x00070050, 0x0000001D, 0x00004754,
0x00002967, 0x00003684, 0x00000A0C, 0x0000008A, 0x00050041, 0x0000029A,
0x00002F17, 0x00001342, 0x00000A0B, 0x0003003E, 0x00002F17, 0x00004754,
0x000100FD, 0x00010038,
};

View File

@ -8,44 +8,37 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %5120 %5049 %3877
OpEntryPoint Fragment %5663 "main" %3080 %5914 %4693
OpExecutionMode %5663 OriginUpperLeft
OpDecorate %5120 RelaxedPrecision
OpDecorate %5120 Location 0
OpDecorate %5049 RelaxedPrecision
OpDecorate %5049 Location 1
OpDecorate %20754 RelaxedPrecision
OpDecorate %5818 RelaxedPrecision
OpDecorate %3080 Location 0
OpDecorate %5914 Location 1
OpDecorate %5818 DescriptorSet 0
OpDecorate %5818 Binding 0
OpDecorate %24285 RelaxedPrecision
OpDecorate %3877 Location 0
OpDecorate %6686 RelaxedPrecision
OpDecorate %8939 RelaxedPrecision
OpDecorate %4693 Location 0
%void = OpTypeVoid
%1282 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5120 = OpVariable %_ptr_Output_v4float Output
%3080 = OpVariable %_ptr_Output_v4float Output
%_ptr_Input_v4float = OpTypePointer Input %v4float
%5049 = OpVariable %_ptr_Input_v4float Input
%5914 = OpVariable %_ptr_Input_v4float Input
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510
%5818 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%3877 = OpVariable %_ptr_Input_v2float Input
%4693 = OpVariable %_ptr_Input_v2float Input
%float_0 = OpConstant %float 0
%5663 = OpFunction %void None %1282
%24607 = OpLabel
%20754 = OpLoad %v4float %5049
%20754 = OpLoad %v4float %5914
%24285 = OpLoad %510 %5818
%8179 = OpLoad %v2float %3877
%8179 = OpLoad %v2float %4693
%6686 = OpImageSampleExplicitLod %v4float %24285 %8179 Lod %float_0
%8939 = OpFMul %v4float %20754 %6686
OpStore %5120 %8939
OpStore %3080 %8939
OpReturn
OpFunctionEnd
#endif
@ -54,29 +47,26 @@ const uint32_t immediate_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x00006020, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0008000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00001400, 0x000013B9, 0x00000F25,
0x00030010, 0x0000161F, 0x00000007, 0x00030047, 0x00001400, 0x00000000,
0x00040047, 0x00001400, 0x0000001E, 0x00000000, 0x00030047, 0x000013B9,
0x00000000, 0x00040047, 0x000013B9, 0x0000001E, 0x00000001, 0x00030047,
0x00005112, 0x00000000, 0x00030047, 0x000016BA, 0x00000000, 0x00040047,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C08, 0x0000171A, 0x00001255,
0x00030010, 0x0000161F, 0x00000007, 0x00040047, 0x00000C08, 0x0000001E,
0x00000000, 0x00040047, 0x0000171A, 0x0000001E, 0x00000001, 0x00040047,
0x000016BA, 0x00000022, 0x00000000, 0x00040047, 0x000016BA, 0x00000021,
0x00000000, 0x00030047, 0x00005EDD, 0x00000000, 0x00040047, 0x00000F25,
0x0000001E, 0x00000000, 0x00030047, 0x00001A1E, 0x00000000, 0x00030047,
0x000022EB, 0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502,
0x00000008, 0x00030016, 0x0000000D, 0x00000020, 0x00040017, 0x0000001D,
0x0000000D, 0x00000004, 0x00040020, 0x0000029A, 0x00000003, 0x0000001D,
0x0004003B, 0x0000029A, 0x00001400, 0x00000003, 0x00040020, 0x0000029B,
0x00000001, 0x0000001D, 0x0004003B, 0x0000029B, 0x000013B9, 0x00000001,
0x00090019, 0x00000096, 0x0000000D, 0x00000001, 0x00000000, 0x00000000,
0x00000000, 0x00000001, 0x00000000, 0x0003001B, 0x000001FE, 0x00000096,
0x00040020, 0x0000047B, 0x00000000, 0x000001FE, 0x0004003B, 0x0000047B,
0x000016BA, 0x00000000, 0x00040017, 0x00000013, 0x0000000D, 0x00000002,
0x00040020, 0x00000290, 0x00000001, 0x00000013, 0x0004003B, 0x00000290,
0x00000F25, 0x00000001, 0x0004002B, 0x0000000D, 0x00000A0C, 0x00000000,
0x00050036, 0x00000008, 0x0000161F, 0x00000000, 0x00000502, 0x000200F8,
0x0000601F, 0x0004003D, 0x0000001D, 0x00005112, 0x000013B9, 0x0004003D,
0x000001FE, 0x00005EDD, 0x000016BA, 0x0004003D, 0x00000013, 0x00001FF3,
0x00000F25, 0x00070058, 0x0000001D, 0x00001A1E, 0x00005EDD, 0x00001FF3,
0x00000002, 0x00000A0C, 0x00050085, 0x0000001D, 0x000022EB, 0x00005112,
0x00001A1E, 0x0003003E, 0x00001400, 0x000022EB, 0x000100FD, 0x00010038,
0x00000000, 0x00040047, 0x00001255, 0x0000001E, 0x00000000, 0x00020013,
0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00030016, 0x0000000D,
0x00000020, 0x00040017, 0x0000001D, 0x0000000D, 0x00000004, 0x00040020,
0x0000029A, 0x00000003, 0x0000001D, 0x0004003B, 0x0000029A, 0x00000C08,
0x00000003, 0x00040020, 0x0000029B, 0x00000001, 0x0000001D, 0x0004003B,
0x0000029B, 0x0000171A, 0x00000001, 0x00090019, 0x00000096, 0x0000000D,
0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
0x0003001B, 0x000001FE, 0x00000096, 0x00040020, 0x0000047B, 0x00000000,
0x000001FE, 0x0004003B, 0x0000047B, 0x000016BA, 0x00000000, 0x00040017,
0x00000013, 0x0000000D, 0x00000002, 0x00040020, 0x00000290, 0x00000001,
0x00000013, 0x0004003B, 0x00000290, 0x00001255, 0x00000001, 0x0004002B,
0x0000000D, 0x00000A0C, 0x00000000, 0x00050036, 0x00000008, 0x0000161F,
0x00000000, 0x00000502, 0x000200F8, 0x0000601F, 0x0004003D, 0x0000001D,
0x00005112, 0x0000171A, 0x0004003D, 0x000001FE, 0x00005EDD, 0x000016BA,
0x0004003D, 0x00000013, 0x00001FF3, 0x00001255, 0x00070058, 0x0000001D,
0x00001A1E, 0x00005EDD, 0x00001FF3, 0x00000002, 0x00000A0C, 0x00050085,
0x0000001D, 0x000022EB, 0x00005112, 0x00001A1E, 0x0003003E, 0x00000C08,
0x000022EB, 0x000100FD, 0x00010038,
};

View File

@ -8,18 +8,17 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %5663 "main" %3877 %3591 %5049 %5249 %9116 %4372
OpDecorate %3877 Location 0
OpDecorate %3591 Location 1
OpDecorate %5049 RelaxedPrecision
OpDecorate %5049 Location 1
OpDecorate %5249 RelaxedPrecision
OpDecorate %5249 Location 2
OpDecorate %11060 RelaxedPrecision
OpMemberDecorate %_struct_1032 0 BuiltIn Position
OpMemberDecorate %_struct_1032 1 BuiltIn PointSize
OpDecorate %_struct_1032 Block
OpDecorate %4372 Location 0
OpEntryPoint Vertex %5663 "main" %4159 %4693 %3080 %5914 %4930 %5474
OpDecorate %4159 Location 0
OpDecorate %4693 Location 1
OpDecorate %3080 Location 1
OpDecorate %5914 Location 2
OpMemberDecorate %_struct_419 0 BuiltIn Position
OpMemberDecorate %_struct_419 1 BuiltIn PointSize
OpMemberDecorate %_struct_419 2 BuiltIn ClipDistance
OpMemberDecorate %_struct_419 3 BuiltIn CullDistance
OpDecorate %_struct_419 Block
OpDecorate %5474 Location 0
OpMemberDecorate %_struct_997 0 Offset 0
OpDecorate %_struct_997 Block
%void = OpTypeVoid
@ -27,44 +26,48 @@
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%_ptr_Output_v2float = OpTypePointer Output %v2float
%3877 = OpVariable %_ptr_Output_v2float Output
%4159 = OpVariable %_ptr_Output_v2float Output
%_ptr_Input_v2float = OpTypePointer Input %v2float
%3591 = OpVariable %_ptr_Input_v2float Input
%4693 = OpVariable %_ptr_Input_v2float Input
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%5049 = OpVariable %_ptr_Output_v4float Output
%3080 = OpVariable %_ptr_Output_v4float Output
%_ptr_Input_v4float = OpTypePointer Input %v4float
%5249 = OpVariable %_ptr_Input_v4float Input
%_struct_1032 = OpTypeStruct %v4float %float
%_ptr_Output__struct_1032 = OpTypePointer Output %_struct_1032
%9116 = OpVariable %_ptr_Output__struct_1032 Output
%5914 = OpVariable %_ptr_Input_v4float Input
%uint = OpTypeInt 32 0
%uint_1 = OpConstant %uint 1
%_arr_float_uint_1 = OpTypeArray %float %uint_1
%_struct_419 = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
%_ptr_Output__struct_419 = OpTypePointer Output %_struct_419
%4930 = OpVariable %_ptr_Output__struct_419 Output
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%4372 = OpVariable %_ptr_Input_v2float Input
%5474 = OpVariable %_ptr_Input_v2float Input
%_struct_997 = OpTypeStruct %v2float
%_ptr_PushConstant__struct_997 = OpTypePointer PushConstant %_struct_997
%4930 = OpVariable %_ptr_PushConstant__struct_997 PushConstant
%3052 = OpVariable %_ptr_PushConstant__struct_997 PushConstant
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
%float_2 = OpConstant %float 2
%2981 = OpConstantComposite %v2float %float_2 %float_2
%float_1 = OpConstant %float 1
%float_0 = OpConstant %float 0
%768 = OpConstantComposite %v2float %float_1 %float_1
%float_0 = OpConstant %float 0
%5663 = OpFunction %void None %1282
%24626 = OpLabel
%20581 = OpLoad %v2float %3591
OpStore %3877 %20581
%11060 = OpLoad %v4float %5249
OpStore %5049 %11060
%10541 = OpLoad %v2float %4372
%22255 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_0
%12183 = OpLoad %v2float %22255
%15944 = OpFMul %v2float %10541 %12183
%15861 = OpVectorTimesScalar %v2float %15944 %float_2
%10536 = OpFSub %v2float %15861 %768
%7674 = OpCompositeExtract %float %10536 0
%15569 = OpCompositeExtract %float %10536 1
%18260 = OpCompositeConstruct %v4float %7674 %15569 %float_0 %float_1
%12055 = OpAccessChain %_ptr_Output_v4float %9116 %int_0
%20581 = OpLoad %v2float %4693
OpStore %4159 %20581
%11060 = OpLoad %v4float %5914
OpStore %3080 %11060
%10541 = OpLoad %v2float %5474
%22255 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_0
%12012 = OpLoad %v2float %22255
%17501 = OpFMul %v2float %10541 %12012
%13314 = OpFMul %v2float %17501 %2981
%6620 = OpFSub %v2float %13314 %768
%22715 = OpCompositeExtract %float %6620 0
%15569 = OpCompositeExtract %float %6620 1
%18260 = OpCompositeConstruct %v4float %22715 %15569 %float_0 %float_1
%12055 = OpAccessChain %_ptr_Output_v4float %4930 %int_0
OpStore %12055 %18260
OpReturn
OpFunctionEnd
@ -74,44 +77,48 @@ const uint32_t immediate_vs[] = {
0x07230203, 0x00010000, 0x0008000A, 0x00006033, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x000B000F, 0x00000000,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000F25, 0x00000E07, 0x000013B9,
0x00001481, 0x0000239C, 0x00001114, 0x00040047, 0x00000F25, 0x0000001E,
0x00000000, 0x00040047, 0x00000E07, 0x0000001E, 0x00000001, 0x00030047,
0x000013B9, 0x00000000, 0x00040047, 0x000013B9, 0x0000001E, 0x00000001,
0x00030047, 0x00001481, 0x00000000, 0x00040047, 0x00001481, 0x0000001E,
0x00000002, 0x00030047, 0x00002B34, 0x00000000, 0x00050048, 0x00000408,
0x00000000, 0x0000000B, 0x00000000, 0x00050048, 0x00000408, 0x00000001,
0x0000000B, 0x00000001, 0x00030047, 0x00000408, 0x00000002, 0x00040047,
0x00001114, 0x0000001E, 0x00000000, 0x00050048, 0x000003E5, 0x00000000,
0x00000023, 0x00000000, 0x00030047, 0x000003E5, 0x00000002, 0x00020013,
0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00030016, 0x0000000D,
0x00000020, 0x00040017, 0x00000013, 0x0000000D, 0x00000002, 0x00040020,
0x00000290, 0x00000003, 0x00000013, 0x0004003B, 0x00000290, 0x00000F25,
0x00000003, 0x00040020, 0x00000291, 0x00000001, 0x00000013, 0x0004003B,
0x00000291, 0x00000E07, 0x00000001, 0x00040017, 0x0000001D, 0x0000000D,
0x00000004, 0x00040020, 0x0000029A, 0x00000003, 0x0000001D, 0x0004003B,
0x0000029A, 0x000013B9, 0x00000003, 0x00040020, 0x0000029B, 0x00000001,
0x0000001D, 0x0004003B, 0x0000029B, 0x00001481, 0x00000001, 0x0004001E,
0x00000408, 0x0000001D, 0x0000000D, 0x00040020, 0x00000685, 0x00000003,
0x00000408, 0x0004003B, 0x00000685, 0x0000239C, 0x00000003, 0x00040015,
0x0000000C, 0x00000020, 0x00000001, 0x0004002B, 0x0000000C, 0x00000A0B,
0x00000000, 0x0004003B, 0x00000291, 0x00001114, 0x00000001, 0x0003001E,
0x000003E5, 0x00000013, 0x00040020, 0x00000662, 0x00000009, 0x000003E5,
0x0004003B, 0x00000662, 0x00001342, 0x00000009, 0x00040020, 0x00000292,
0x00000009, 0x00000013, 0x0004002B, 0x0000000D, 0x00000018, 0x40000000,
0x0004002B, 0x0000000D, 0x0000008A, 0x3F800000, 0x0004002B, 0x0000000D,
0x00000A0C, 0x00000000, 0x0005002C, 0x00000013, 0x00000300, 0x0000008A,
0x0000008A, 0x00050036, 0x00000008, 0x0000161F, 0x00000000, 0x00000502,
0x000200F8, 0x00006032, 0x0004003D, 0x00000013, 0x00005065, 0x00000E07,
0x0003003E, 0x00000F25, 0x00005065, 0x0004003D, 0x0000001D, 0x00002B34,
0x00001481, 0x0003003E, 0x000013B9, 0x00002B34, 0x0004003D, 0x00000013,
0x0000292D, 0x00001114, 0x00050041, 0x00000292, 0x000056EF, 0x00001342,
0x00000A0B, 0x0004003D, 0x00000013, 0x00002F97, 0x000056EF, 0x00050085,
0x00000013, 0x00003E48, 0x0000292D, 0x00002F97, 0x0005008E, 0x00000013,
0x00003DF5, 0x00003E48, 0x00000018, 0x00050083, 0x00000013, 0x00002928,
0x00003DF5, 0x00000300, 0x00050051, 0x0000000D, 0x00001DFA, 0x00002928,
0x00000000, 0x00050051, 0x0000000D, 0x00003CD1, 0x00002928, 0x00000001,
0x00070050, 0x0000001D, 0x00004754, 0x00001DFA, 0x00003CD1, 0x00000A0C,
0x0000008A, 0x00050041, 0x0000029A, 0x00002F17, 0x0000239C, 0x00000A0B,
0x0003003E, 0x00002F17, 0x00004754, 0x000100FD, 0x00010038,
0x0000161F, 0x6E69616D, 0x00000000, 0x0000103F, 0x00001255, 0x00000C08,
0x0000171A, 0x00001342, 0x00001562, 0x00040047, 0x0000103F, 0x0000001E,
0x00000000, 0x00040047, 0x00001255, 0x0000001E, 0x00000001, 0x00040047,
0x00000C08, 0x0000001E, 0x00000001, 0x00040047, 0x0000171A, 0x0000001E,
0x00000002, 0x00050048, 0x000001A3, 0x00000000, 0x0000000B, 0x00000000,
0x00050048, 0x000001A3, 0x00000001, 0x0000000B, 0x00000001, 0x00050048,
0x000001A3, 0x00000002, 0x0000000B, 0x00000003, 0x00050048, 0x000001A3,
0x00000003, 0x0000000B, 0x00000004, 0x00030047, 0x000001A3, 0x00000002,
0x00040047, 0x00001562, 0x0000001E, 0x00000000, 0x00050048, 0x000003E5,
0x00000000, 0x00000023, 0x00000000, 0x00030047, 0x000003E5, 0x00000002,
0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00030016,
0x0000000D, 0x00000020, 0x00040017, 0x00000013, 0x0000000D, 0x00000002,
0x00040020, 0x00000290, 0x00000003, 0x00000013, 0x0004003B, 0x00000290,
0x0000103F, 0x00000003, 0x00040020, 0x00000291, 0x00000001, 0x00000013,
0x0004003B, 0x00000291, 0x00001255, 0x00000001, 0x00040017, 0x0000001D,
0x0000000D, 0x00000004, 0x00040020, 0x0000029A, 0x00000003, 0x0000001D,
0x0004003B, 0x0000029A, 0x00000C08, 0x00000003, 0x00040020, 0x0000029B,
0x00000001, 0x0000001D, 0x0004003B, 0x0000029B, 0x0000171A, 0x00000001,
0x00040015, 0x0000000B, 0x00000020, 0x00000000, 0x0004002B, 0x0000000B,
0x00000A0D, 0x00000001, 0x0004001C, 0x00000261, 0x0000000D, 0x00000A0D,
0x0006001E, 0x000001A3, 0x0000001D, 0x0000000D, 0x00000261, 0x00000261,
0x00040020, 0x00000420, 0x00000003, 0x000001A3, 0x0004003B, 0x00000420,
0x00001342, 0x00000003, 0x00040015, 0x0000000C, 0x00000020, 0x00000001,
0x0004002B, 0x0000000C, 0x00000A0B, 0x00000000, 0x0004003B, 0x00000291,
0x00001562, 0x00000001, 0x0003001E, 0x000003E5, 0x00000013, 0x00040020,
0x00000662, 0x00000009, 0x000003E5, 0x0004003B, 0x00000662, 0x00000BEC,
0x00000009, 0x00040020, 0x00000292, 0x00000009, 0x00000013, 0x0004002B,
0x0000000D, 0x00000018, 0x40000000, 0x0005002C, 0x00000013, 0x00000BA5,
0x00000018, 0x00000018, 0x0004002B, 0x0000000D, 0x0000008A, 0x3F800000,
0x0005002C, 0x00000013, 0x00000300, 0x0000008A, 0x0000008A, 0x0004002B,
0x0000000D, 0x00000A0C, 0x00000000, 0x00050036, 0x00000008, 0x0000161F,
0x00000000, 0x00000502, 0x000200F8, 0x00006032, 0x0004003D, 0x00000013,
0x00005065, 0x00001255, 0x0003003E, 0x0000103F, 0x00005065, 0x0004003D,
0x0000001D, 0x00002B34, 0x0000171A, 0x0003003E, 0x00000C08, 0x00002B34,
0x0004003D, 0x00000013, 0x0000292D, 0x00001562, 0x00050041, 0x00000292,
0x000056EF, 0x00000BEC, 0x00000A0B, 0x0004003D, 0x00000013, 0x00002EEC,
0x000056EF, 0x00050085, 0x00000013, 0x0000445D, 0x0000292D, 0x00002EEC,
0x00050085, 0x00000013, 0x00003402, 0x0000445D, 0x00000BA5, 0x00050083,
0x00000013, 0x000019DC, 0x00003402, 0x00000300, 0x00050051, 0x0000000D,
0x000058BB, 0x000019DC, 0x00000000, 0x00050051, 0x0000000D, 0x00003CD1,
0x000019DC, 0x00000001, 0x00070050, 0x0000001D, 0x00004754, 0x000058BB,
0x00003CD1, 0x00000A0C, 0x0000008A, 0x00050041, 0x0000029A, 0x00002F17,
0x00001342, 0x00000A0B, 0x0003003E, 0x00002F17, 0x00004754, 0x000100FD,
0x00010038,
};

View File

@ -1,3 +1,12 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XENIA_UI_SHADERS_DITHER_8BPC_XESLI_
#define XENIA_UI_SHADERS_DITHER_8BPC_XESLI_

View File

@ -1,38 +0,0 @@
// At least #version 420.
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
layout(push_constant) uniform XeBilinearConstants {
// 16 occupied by the vertex shader.
layout(offset = 16) ivec2 xe_bilinear_output_offset;
layout(offset = 24) vec2 xe_bilinear_output_size_inv;
};
layout(set = 0, binding = 0) uniform sampler2D xe_texture;
layout(location = 0) out vec4 xe_frag_color;
void main() {
uvec2 pixel_coord = uvec2(ivec2(gl_FragCoord.xy) - xe_bilinear_output_offset);
// + 0.5 so the origin is at the pixel center, and at 1:1 the original pixel
// is taken.
// Interpolating the four colors in the perceptual space because doing it in
// linear space causes, in particular, bright text on a dark background to
// become too thick, and aliasing of bright parts on top of dark areas to be
// too apparent (4D5307E6 HUD, for example, mainly the edges of the
// multiplayer score bars).
xe_frag_color.rgb =
textureLod(xe_texture,
(vec2(pixel_coord) + 0.5) * xe_bilinear_output_size_inv,
0.0).rgb;
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_frag_color.rgb =
clamp(xe_frag_color.rgb + XeDitherOffset8bpc(pixel_coord),
vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));
#endif // XE_GUEST_OUTPUT_DITHER
xe_frag_color.a = 1.0;
}

View File

@ -1,31 +0,0 @@
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
cbuffer XeBilinearConstants : register(b0) {
int2 xe_bilinear_output_offset;
float2 xe_bilinear_output_size_inv;
};
Texture2D<float3> xe_texture : register(t0);
SamplerState xe_sampler_linear_clamp : register(s0);
float4 main(float4 xe_position : SV_Position) : SV_Target {
uint2 pixel_coord = uint2(int2(xe_position.xy) - xe_bilinear_output_offset);
// + 0.5 so the origin is at the pixel center, and at 1:1 the original pixel
// is taken.
// Interpolating the four colors in the perceptual space because doing it in
// linear space causes, in particular, bright text on a dark background to
// become too thick, and aliasing of bright parts on top of dark areas to be
// too apparent (4D5307E6 HUD, for example, mainly the edges of the
// multiplayer score bars).
float3 color = xe_texture.SampleLevel(
xe_sampler_linear_clamp,
(float2(pixel_coord) + 0.5f) * xe_bilinear_output_size_inv,
0.0f);
#if XE_GUEST_OUTPUT_DITHER
// Not clamping because a normalized format is explicitly requested on DXGI.
color += XeDitherOffset8bpc(pixel_coord);
#endif // XE_GUEST_OUTPUT_DITHER
return float4(color, 1.0f);
}

View File

@ -1,3 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#include "guest_output_bilinear.glsli"

View File

@ -1 +0,0 @@
#include "guest_output_bilinear.hlsli"

View File

@ -0,0 +1,10 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "guest_output_bilinear.xesli"

View File

@ -0,0 +1,55 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
xesl_push_constants_begin(b0, space0)
// 16 used by the vertex shader (GLSL push constant offsets are across
// stages).
xesl_block_offset_member(16, c0.x, xesl_int2, xe_bilinear_output_offset)
// CasSetup const1.x.
xesl_block_offset_member(24, c0.z, xesl_float2, xe_bilinear_output_size_inv)
xesl_push_constants_end
xesl_entry
xesl_sampler(xesl_sampler2D, xe_bilinear_source, set=0, binding=0, t0,
space0, s0, space0)
xesl_entry_bindings_end
xesl_input_frag_coord
xesl_entry_signature_next
xesl_output_color(xesl_float4, xe_bilinear_color, 0)
xesl_entry_signature_end
xesl_uint2 pixel_coord =
xesl_uint2(xesl_int2(xesl_FragCoord.xy) -
xesl_push_constant(xe_bilinear_output_offset));
// + 0.5 so the origin is at the pixel center, and at 1:1 the original pixel
// is taken.
// Interpolating the four colors in the perceptual space because doing it in
// linear space causes, in particular, bright text on a dark background to
// become too thick, and aliasing of bright parts on top of dark areas to be
// too apparent (4D5307E6 HUD, for example, mainly the edges of the
// multiplayer score bars).
xe_bilinear_color.rgb =
xesl_textureSampleLod2D_comb(
xe_bilinear_source,
(xesl_float2(pixel_coord) + 0.5) *
xesl_push_constant(xe_bilinear_output_size_inv),
0.0).rgb;
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_bilinear_color.rgb =
xesl_saturate(xe_bilinear_color.rgb + XeDitherOffset8bpc(pixel_coord));
#endif // XE_GUEST_OUTPUT_DITHER
xe_bilinear_color.a = 1.0;
xesl_entry_end

View File

@ -1,4 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_bilinear.glsli"

View File

@ -1,2 +0,0 @@
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_bilinear.hlsli"

View File

@ -0,0 +1,11 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_bilinear.xesli"

View File

@ -1,57 +0,0 @@
// At least #version 420.
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
layout(push_constant) uniform XeCasResampleConstants {
// 16 occupied by the vertex shader.
layout(offset = 16) ivec2 xe_cas_output_offset;
// CasSetup const0.xy.
layout(offset = 24) vec2 xe_cas_input_output_size_ratio;
// CasSetup const1.x.
layout(offset = 32) float xe_cas_sharpness_post_setup;
};
layout(set = 0, binding = 0) uniform sampler2D xe_texture;
layout(location = 0) out vec4 xe_frag_color;
#define A_GPU 1
#define A_GLSL 1
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_a.h"
vec3 CasLoad(ivec2 p) {
return texelFetch(xe_texture, p, 0).rgb;
}
void CasInput(inout float r, inout float g, inout float b) {
// Linear conversion approximation as recommended in the CAS presentation.
r *= r;
g *= g;
b *= b;
}
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_cas.h"
void main() {
uvec2 pixel_coord = uvec2(ivec2(gl_FragCoord.xy) - xe_cas_output_offset);
// CasSetup with smaller push constant usage.
uvec4 cas_const_0 =
uvec4(floatBitsToUint(xe_cas_input_output_size_ratio),
floatBitsToUint(0.5 * xe_cas_input_output_size_ratio - 0.5));
uvec4 cas_const_1 =
uvec4(floatBitsToUint(xe_cas_sharpness_post_setup),
packHalf2x16(vec2(xe_cas_sharpness_post_setup, 0.0)),
floatBitsToUint(8.0 * xe_cas_input_output_size_ratio.x), 0u);
CasFilter(xe_frag_color.r, xe_frag_color.g, xe_frag_color.b, pixel_coord,
cas_const_0, cas_const_1, false);
// Linear conversion approximation as recommended in the CAS presentation.
xe_frag_color.rgb = sqrt(xe_frag_color.rgb);
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_frag_color.rgb =
clamp(xe_frag_color.rgb + XeDitherOffset8bpc(pixel_coord),
vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));
#endif // XE_GUEST_OUTPUT_DITHER
// Force alpha to 1 to make sure the surface won't be translucent.
xe_frag_color.a = 1.0;
}

View File

@ -1,49 +0,0 @@
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
cbuffer XeCasResampleConstants : register(b0) {
int2 xe_cas_output_offset;
// CasSetup const0.xy.
float2 xe_cas_input_output_size_ratio;
// CasSetup const1.x.
float xe_cas_sharpness_post_setup;
};
Texture2D<float3> xe_texture : register(t0);
#define A_GPU 1
#define A_HLSL 1
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_a.h"
float3 CasLoad(int2 p) {
return xe_texture.Load(int3(p, 0)).rgb;
}
void CasInput(inout float r, inout float g, inout float b) {
// Linear conversion approximation as recommended in the CAS presentation.
r *= r;
g *= g;
b *= b;
}
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_cas.h"
float4 main(float4 xe_position : SV_Position) : SV_Target {
uint2 pixel_coord = uint2(int2(xe_position.xy) - xe_cas_output_offset);
// CasSetup with smaller root signature usage.
uint4 cas_const_0 =
uint4(asuint(xe_cas_input_output_size_ratio),
asuint(0.5f * xe_cas_input_output_size_ratio - 0.5f));
uint4 cas_const_1 =
uint4(asuint(xe_cas_sharpness_post_setup),
f32tof16(xe_cas_sharpness_post_setup),
asuint(8.0f * xe_cas_input_output_size_ratio.x), 0u);
float3 cas_color;
CasFilter(cas_color.r, cas_color.g, cas_color.b, pixel_coord, cas_const_0,
cas_const_1, false);
// Linear conversion approximation as recommended in the CAS presentation.
cas_color = sqrt(cas_color);
#if XE_GUEST_OUTPUT_DITHER
// Not clamping because a normalized format is explicitly requested on DXGI.
cas_color += XeDitherOffset8bpc(pixel_coord);
#endif // XE_GUEST_OUTPUT_DITHER
return float4(cas_color, 1.0f);
}

View File

@ -1,3 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#include "guest_output_ffx_cas_resample.glsli"

View File

@ -1 +0,0 @@
#include "guest_output_ffx_cas_resample.hlsli"

View File

@ -0,0 +1,10 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "guest_output_ffx_cas_resample.xesli"

View File

@ -0,0 +1,83 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
#include "amd_language.xesli"
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
xesl_push_constants_begin(b0, space0)
// 16 used by the vertex shader (GLSL push constant offsets are across
// stages).
xesl_block_offset_member(16, c0.x, xesl_int2, xe_cas_output_offset)
// CasSetup const0.xy.
xesl_block_offset_member(24, c0.z, xesl_float2,
xe_cas_input_output_size_ratio)
// CasSetup const1.x.
xesl_block_offset_member(32, c1.x, float, xe_cas_sharpness_post_setup)
xesl_push_constants_end
// Forward declaration because CasLoad needs xe_cas_source from the entry point
// bindings.
void CasFilter(out float pixel_r, out float pixel_g, out float pixel_b,
xesl_uint2 pixel_position, xesl_uint4 const0, xesl_uint4 const1,
bool no_scaling);
xesl_entry
xesl_fetchSampler(xesl_sampler2D, xe_cas_source, set=0, binding=0, t0, space0)
xesl_entry_bindings_end
xesl_input_frag_coord
xesl_entry_signature_next
xesl_output_color(xesl_float4, xe_cas_color, 0)
xesl_entry_signature_end
xesl_uint2 pixel_coord =
xesl_uint2(xesl_int2(xesl_FragCoord.xy) -
xesl_push_constant(xe_cas_output_offset));
// CasSetup with smaller push constants usage.
xesl_uint4 cas_const_0 =
xesl_uint4(
xesl_floatBitsToUint(
xesl_push_constant(xe_cas_input_output_size_ratio)),
xesl_floatBitsToUint(
0.5 * xesl_push_constant(xe_cas_input_output_size_ratio) - 0.5));
xesl_uint4 cas_const_1 =
xesl_uint4(
xesl_floatBitsToUint(xesl_push_constant(xe_cas_sharpness_post_setup)),
xesl_packHalf2x16(xesl_float2(
xesl_push_constant(xe_cas_sharpness_post_setup), 0.0)),
xesl_floatBitsToUint(8.0), 0u);
CasFilter(xe_cas_color.r, xe_cas_color.g, xe_cas_color.b, pixel_coord,
cas_const_0, cas_const_1, false);
// Linear conversion approximation as recommended in the CAS presentation.
xe_cas_color.rgb = sqrt(xe_cas_color.rgb);
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_cas_color.rgb =
xesl_saturate(xe_cas_color.rgb + XeDitherOffset8bpc(pixel_coord));
#endif // XE_GUEST_OUTPUT_DITHER
// Force alpha to 1 to make sure the surface won't be translucent.
xe_cas_color.a = 1.0;
xesl_entry_end
#define A_GPU 1
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_a.h"
xesl_float3 CasLoad(xesl_int2 p) {
return xesl_texelFetch2D_comb(xe_cas_source, p, 0).rgb;
}
void CasInput(inout float r, inout float g, inout float b) {
// Linear conversion approximation as recommended in the CAS presentation.
r *= r;
g *= g;
b *= b;
}
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_cas.h"

View File

@ -1,4 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_cas_resample.glsli"

View File

@ -1,2 +0,0 @@
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_cas_resample.hlsli"

View File

@ -0,0 +1,11 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_cas_resample.xesli"

View File

@ -1,53 +0,0 @@
// At least #version 420.
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
layout(push_constant) uniform XeCasSharpenConstants {
// 16 occupied by the vertex shader.
layout(offset = 16) ivec2 xe_cas_output_offset;
// CasSetup const1.x.
layout(offset = 24) float xe_cas_sharpness_post_setup;
};
layout(set = 0, binding = 0) uniform sampler2D xe_texture;
layout(location = 0) out vec4 xe_frag_color;
#define A_GPU 1
#define A_GLSL 1
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_a.h"
vec3 CasLoad(ivec2 p) {
return texelFetch(xe_texture, p, 0).rgb;
}
void CasInput(inout float r, inout float g, inout float b) {
// Linear conversion approximation as recommended in the CAS presentation.
r *= r;
g *= g;
b *= b;
}
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_cas.h"
void main() {
uvec2 pixel_coord = uvec2(ivec2(gl_FragCoord.xy) - xe_cas_output_offset);
// CasSetup with smaller push constant usage.
uvec4 cas_const_0 = floatBitsToUint(vec4(1.0, 1.0, 0.0, 0.0));
uvec4 cas_const_1 =
uvec4(floatBitsToUint(xe_cas_sharpness_post_setup),
packHalf2x16(vec2(xe_cas_sharpness_post_setup, 0.0)),
floatBitsToUint(8.0), 0u);
CasFilter(xe_frag_color.r, xe_frag_color.g, xe_frag_color.b, pixel_coord,
cas_const_0, cas_const_1, false);
// Linear conversion approximation as recommended in the CAS presentation.
xe_frag_color.rgb = sqrt(xe_frag_color.rgb);
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_frag_color.rgb =
clamp(xe_frag_color.rgb + XeDitherOffset8bpc(pixel_coord),
vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));
#endif // XE_GUEST_OUTPUT_DITHER
// Force alpha to 1 to make sure the surface won't be translucent.
xe_frag_color.a = 1.0;
}

View File

@ -1,44 +0,0 @@
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
cbuffer XeCasSharpenConstants : register(b0) {
int2 xe_cas_output_offset;
// CasSetup const1.x.
float xe_cas_sharpness_post_setup;
};
Texture2D<float3> xe_texture : register(t0);
#define A_GPU 1
#define A_HLSL 1
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_a.h"
float3 CasLoad(int2 p) {
return xe_texture.Load(int3(p, 0)).rgb;
}
void CasInput(inout float r, inout float g, inout float b) {
// Linear conversion approximation as recommended in the CAS presentation.
r *= r;
g *= g;
b *= b;
}
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_cas.h"
float4 main(float4 xe_position : SV_Position) : SV_Target {
uint2 pixel_coord = uint2(int2(xe_position.xy) - xe_cas_output_offset);
// CasSetup with smaller root signature usage.
uint4 cas_const_0 = asuint(float4(1.0f, 1.0f, 0.0f, 0.0f));
uint4 cas_const_1 =
uint4(asuint(xe_cas_sharpness_post_setup),
f32tof16(xe_cas_sharpness_post_setup), asuint(8.0f), 0u);
float3 cas_color;
CasFilter(cas_color.r, cas_color.g, cas_color.b, pixel_coord, cas_const_0,
cas_const_1, true);
// Linear conversion approximation as recommended in the CAS presentation.
cas_color = sqrt(cas_color);
#if XE_GUEST_OUTPUT_DITHER
// Not clamping because a normalized format is explicitly requested on DXGI.
cas_color += XeDitherOffset8bpc(pixel_coord);
#endif // XE_GUEST_OUTPUT_DITHER
return float4(cas_color, 1.0f);
}

View File

@ -1,3 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#include "guest_output_ffx_cas_sharpen.glsli"

View File

@ -1 +0,0 @@
#include "guest_output_ffx_cas_sharpen.hlsli"

View File

@ -0,0 +1,10 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "guest_output_ffx_cas_sharpen.xesli"

View File

@ -0,0 +1,76 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
#include "amd_language.xesli"
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
xesl_push_constants_begin(b0, space0)
// 16 used by the vertex shader (GLSL push constant offsets are across
// stages).
xesl_block_offset_member(16, c0.x, xesl_int2, xe_cas_output_offset)
// CasSetup const1.x.
xesl_block_offset_member(24, c0.z, float, xe_cas_sharpness_post_setup)
xesl_push_constants_end
// Forward declaration because CasLoad needs xe_cas_source from the entry point
// bindings.
void CasFilter(out float pixel_r, out float pixel_g, out float pixel_b,
xesl_uint2 pixel_position, xesl_uint4 const0, xesl_uint4 const1,
bool no_scaling);
xesl_entry
xesl_fetchSampler(xesl_sampler2D, xe_cas_source, set=0, binding=0, t0, space0)
xesl_entry_bindings_end
xesl_input_frag_coord
xesl_entry_signature_next
xesl_output_color(xesl_float4, xe_cas_color, 0)
xesl_entry_signature_end
xesl_uint2 pixel_coord =
xesl_uint2(xesl_int2(xesl_FragCoord.xy) -
xesl_push_constant(xe_cas_output_offset));
// CasSetup with smaller push constants usage.
xesl_uint4 cas_const_0 =
xesl_floatBitsToUint(xesl_float4(1.0, 1.0, 0.0, 0.0));
xesl_uint4 cas_const_1 =
xesl_uint4(
xesl_floatBitsToUint(xesl_push_constant(xe_cas_sharpness_post_setup)),
xesl_packHalf2x16(xesl_float2(
xesl_push_constant(xe_cas_sharpness_post_setup), 0.0)),
xesl_floatBitsToUint(8.0), 0u);
CasFilter(xe_cas_color.r, xe_cas_color.g, xe_cas_color.b, pixel_coord,
cas_const_0, cas_const_1, true);
// Linear conversion approximation as recommended in the CAS presentation.
xe_cas_color.rgb = sqrt(xe_cas_color.rgb);
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_cas_color.rgb =
xesl_saturate(xe_cas_color.rgb + XeDitherOffset8bpc(pixel_coord));
#endif // XE_GUEST_OUTPUT_DITHER
// Force alpha to 1 to make sure the surface won't be translucent.
xe_cas_color.a = 1.0;
xesl_entry_end
#define A_GPU 1
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_a.h"
xesl_float3 CasLoad(xesl_int2 p) {
return xesl_texelFetch2D_comb(xe_cas_source, p, 0).rgb;
}
void CasInput(inout float r, inout float g, inout float b) {
// Linear conversion approximation as recommended in the CAS presentation.
r *= r;
g *= g;
b *= b;
}
#include "../../../../third_party/FidelityFX-CAS/ffx-cas/ffx_cas.h"

View File

@ -1,4 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_cas_sharpen.glsli"

View File

@ -1,2 +0,0 @@
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_cas_sharpen.hlsli"

View File

@ -0,0 +1,11 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_cas_sharpen.xesli"

View File

@ -1,38 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
layout(push_constant) uniform XeFsrEasuConstants {
// 16 occupied by the vertex shader.
layout(offset = 16) vec2 xe_fsr_easu_input_output_size_ratio;
layout(offset = 24) vec2 xe_fsr_easu_input_size_inv;
};
layout(set = 0, binding = 0) uniform sampler2D xe_texture;
layout(location = 0) out vec4 xe_frag_color;
#define A_GPU 1
#define A_GLSL 1
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_a.h"
#define FSR_EASU_F 1
vec4 FsrEasuRF(vec2 p) { return textureGather(xe_texture, p, 0); }
vec4 FsrEasuGF(vec2 p) { return textureGather(xe_texture, p, 1); }
vec4 FsrEasuBF(vec2 p) { return textureGather(xe_texture, p, 2); }
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_fsr1.h"
void main() {
// FsrEasuCon with smaller push constant usage.
uvec4 easu_const_0 =
uvec4(floatBitsToUint(xe_fsr_easu_input_output_size_ratio),
floatBitsToUint(0.5 * xe_fsr_easu_input_output_size_ratio - 0.5));
uvec4 easu_const_1 = floatBitsToUint(vec4(1.0, 1.0, 1.0, -1.0) *
xe_fsr_easu_input_size_inv.xyxy);
uvec4 easu_const_2 = floatBitsToUint(vec4(-1.0, 2.0, 1.0, 2.0) *
xe_fsr_easu_input_size_inv.xyxy);
uvec4 easu_const_3 =
uvec4(floatBitsToUint(0.0),
floatBitsToUint(4.0 * xe_fsr_easu_input_size_inv.y), 0u, 0u);
FsrEasuF(xe_frag_color.rgb, uvec2(gl_FragCoord.xy), easu_const_0,
easu_const_1, easu_const_2, easu_const_3);
xe_frag_color.a = 1.0;
}

View File

@ -1,39 +0,0 @@
cbuffer XeFsrEasuConstants : register(b0) {
float2 xe_fsr_easu_input_output_size_ratio;
float2 xe_fsr_easu_input_size_inv;
};
Texture2D<float3> xe_texture : register(t0);
SamplerState xe_sampler_linear_clamp : register(s0);
#define A_GPU 1
#define A_HLSL 1
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_a.h"
#define FSR_EASU_F 1
float4 FsrEasuRF(float2 p) {
return xe_texture.GatherRed(xe_sampler_linear_clamp, p);
}
float4 FsrEasuGF(float2 p) {
return xe_texture.GatherGreen(xe_sampler_linear_clamp, p);
}
float4 FsrEasuBF(float2 p) {
return xe_texture.GatherBlue(xe_sampler_linear_clamp, p);
}
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_fsr1.h"
float4 main(float4 xe_position : SV_Position) : SV_Target {
// FsrEasuCon with smaller root signature usage.
uint4 easu_const_0 =
uint4(asuint(xe_fsr_easu_input_output_size_ratio),
asuint(0.5f * xe_fsr_easu_input_output_size_ratio - 0.5f));
uint4 easu_const_1 =
asuint(float4(1.0f, 1.0f, 1.0f, -1.0f) * xe_fsr_easu_input_size_inv.xyxy);
uint4 easu_const_2 =
asuint(float4(-1.0f, 2.0f, 1.0f, 2.0f) * xe_fsr_easu_input_size_inv.xyxy);
uint4 easu_const_3 =
uint4(asuint(0.0f), asuint(4.0f * xe_fsr_easu_input_size_inv.y), 0u, 0u);
float3 easu_color;
FsrEasuF(easu_color, uint2(xe_position.xy), easu_const_0, easu_const_1,
easu_const_2, easu_const_3);
return float4(easu_color, 1.0f);
}

View File

@ -0,0 +1,72 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
#include "amd_language.xesli"
xesl_push_constants_begin(b0, space0)
// 16 used by the vertex shader (GLSL push constant offsets are across
// stages).
xesl_block_offset_member(16, c0.x, xesl_float2,
xe_fsr_easu_input_output_size_ratio)
xesl_block_offset_member(24, c0.z, xesl_float2, xe_fsr_easu_input_size_inv)
xesl_push_constants_end
// Forward declaration because FsrEasu#F need xe_fsr_easu_source from the entry
// point bindings.
void FsrEasuF(out xesl_float3 pixel, xesl_uint2 pixel_position,
xesl_uint4 const0, xesl_uint4 const1, xesl_uint4 const2,
xesl_uint4 const3);
xesl_entry
xesl_sampler(xesl_sampler2D, xe_fsr_easu_source, set=0, binding=0, t0, space0,
s0, space0)
xesl_entry_bindings_end
xesl_input_frag_coord
xesl_entry_signature_next
xesl_output_color(xesl_float4, xe_fsr_easu_color, 0)
xesl_entry_signature_end
// FsrEasuCon with smaller push constant usage.
xesl_uint4 easu_const_0 =
xesl_uint4(
xesl_floatBitsToUint(
xesl_push_constant(xe_fsr_easu_input_output_size_ratio)),
xesl_floatBitsToUint(
0.5 * xesl_push_constant(xe_fsr_easu_input_output_size_ratio) -
0.5));
xesl_uint4 easu_const_1 =
xesl_floatBitsToUint(xesl_float4(1.0, 1.0, 1.0, -1.0) *
xesl_push_constant(xe_fsr_easu_input_size_inv).xyxy);
xesl_uint4 easu_const_2 =
xesl_floatBitsToUint(xesl_float4(-1.0, 2.0, 1.0, 2.0) *
xesl_push_constant(xe_fsr_easu_input_size_inv).xyxy);
xesl_uint4 easu_const_3 =
xesl_uint4(xesl_floatBitsToUint(0.0),
xesl_floatBitsToUint(
4.0 * xesl_push_constant(xe_fsr_easu_input_size_inv).y),
0u, 0u);
FsrEasuF(xe_fsr_easu_color.rgb, xesl_uint2(xesl_FragCoord.xy), easu_const_0,
easu_const_1, easu_const_2, easu_const_3);
xe_fsr_easu_color.a = 1.0;
xesl_entry_end
#define A_GPU 1
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_a.h"
#define FSR_EASU_F 1
xesl_float4 FsrEasuRF(xesl_float2 p) {
return xesl_textureGatherRed2D_comb(xe_fsr_easu_source, p);
}
xesl_float4 FsrEasuGF(xesl_float2 p) {
return xesl_textureGatherGreen2D_comb(xe_fsr_easu_source, p);
}
xesl_float4 FsrEasuBF(xesl_float2 p) {
return xesl_textureGatherBlue2D_comb(xe_fsr_easu_source, p);
}
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_fsr1.h"

View File

@ -1,45 +0,0 @@
// At least #version 420.
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
layout(push_constant) uniform XeFsrRcasConstants {
// 16 occupied by the vertex shader.
layout(offset = 16) ivec2 xe_fsr_rcas_output_offset;
// FsrRcasCon const0.x.
layout(offset = 24) float xe_fsr_rcas_sharpness_post_setup;
};
layout(set = 0, binding = 0) uniform sampler2D xe_texture;
layout(location = 0) out vec4 xe_frag_color;
#define A_GPU 1
#define A_GLSL 1
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_a.h"
#define FSR_RCAS_F 1
vec4 FsrRcasLoadF(ivec2 p) {
return vec4(texelFetch(xe_texture, p, 0).rgb, 1.0);
}
void FsrRcasInputF(inout float r, inout float g, inout float b) {}
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_fsr1.h"
void main() {
uvec2 pixel_coord = uvec2(ivec2(gl_FragCoord.xy) - xe_fsr_rcas_output_offset);
// FsrRcasCon with smaller push constant usage.
uvec4 rcas_const =
uvec4(floatBitsToUint(xe_fsr_rcas_sharpness_post_setup),
packHalf2x16(vec2(xe_fsr_rcas_sharpness_post_setup)), 0u, 0u);
FsrRcasF(xe_frag_color.r, xe_frag_color.g, xe_frag_color.b, pixel_coord,
rcas_const);
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_frag_color.rgb =
clamp(xe_frag_color.rgb + XeDitherOffset8bpc(pixel_coord),
vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));
#endif // XE_GUEST_OUTPUT_DITHER
// Force alpha to 1 to make sure the surface won't be translucent.
xe_frag_color.a = 1.0;
}

View File

@ -1,36 +0,0 @@
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
cbuffer XeFsrRcasConstants : register(b0) {
int2 xe_fsr_rcas_output_offset;
// FsrRcasCon const0.x.
float xe_fsr_rcas_sharpness_post_setup;
};
Texture2D<float3> xe_texture : register(t0);
#define A_GPU 1
#define A_HLSL 1
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_a.h"
#define FSR_RCAS_F 1
float4 FsrRcasLoadF(int2 p) {
return float4(xe_texture.Load(int3(p, 0)).rgb, 1.0f);
}
void FsrRcasInputF(inout float r, inout float g, inout float b) {}
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_fsr1.h"
float4 main(float4 xe_position : SV_Position) : SV_Target {
uint2 pixel_coord = uint2(int2(xe_position.xy) - xe_fsr_rcas_output_offset);
// FsrRcasCon with smaller root signature usage.
uint4 rcas_const =
uint4(asuint(xe_fsr_rcas_sharpness_post_setup),
f32tof16(xe_fsr_rcas_sharpness_post_setup) * 0x00010001u, 0u, 0u);
float3 rcas_color;
FsrRcasF(rcas_color.r, rcas_color.g, rcas_color.b, pixel_coord, rcas_const);
#if XE_GUEST_OUTPUT_DITHER
// Not clamping because a normalized format is explicitly requested on DXGI.
rcas_color += XeDitherOffset8bpc(pixel_coord);
#endif // XE_GUEST_OUTPUT_DITHER
return float4(rcas_color, 1.0f);
}

View File

@ -1,3 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#include "guest_output_ffx_fsr_rcas.glsli"

View File

@ -1 +0,0 @@
#include "guest_output_ffx_fsr_rcas.hlsli"

View File

@ -0,0 +1,10 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "guest_output_ffx_fsr_rcas.xesli"

View File

@ -0,0 +1,66 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
#include "amd_language.xesli"
#if XE_GUEST_OUTPUT_DITHER
#include "dither_8bpc.xesli"
#endif // XE_GUEST_OUTPUT_DITHER
xesl_push_constants_begin(b0, space0)
// 16 used by the vertex shader (GLSL push constant offsets are across
// stages).
xesl_block_offset_member(16, c0.x, xesl_int2,
xe_fsr_rcas_output_offset)
xesl_block_offset_member(24, c0.z, float, xe_fsr_rcas_sharpness_post_setup)
xesl_push_constants_end
// Forward declaration because FsrRcasLoadF needs xe_fsr_rcas_source from the
// entry point bindings.
void FsrRcasF(out float pixel_r, out float pixel_g, out float pixel_b,
xesl_uint2 pixel_position, xesl_uint4 constants);
xesl_entry
xesl_fetchSampler(xesl_sampler2D, xe_fsr_rcas_source, set=0, binding=0, t0,
space0)
xesl_entry_bindings_end
xesl_input_frag_coord
xesl_entry_signature_next
xesl_output_color(xesl_float4, xe_fsr_rcas_color, 0)
xesl_entry_signature_end
xesl_uint2 pixel_coord =
xesl_uint2(xesl_int2(xesl_FragCoord.xy) -
xesl_push_constant(xe_fsr_rcas_output_offset));
float sharpness = xesl_push_constant(xe_fsr_rcas_sharpness_post_setup);
// FsrRcasCon with smaller push constant usage.
xesl_uint4 rcas_const =
xesl_uint4(xesl_floatBitsToUint(sharpness),
xesl_packHalf2x16(xesl_float2(sharpness, sharpness)), 0u, 0u);
FsrRcasF(xe_fsr_rcas_color.r, xe_fsr_rcas_color.g, xe_fsr_rcas_color.b,
pixel_coord, rcas_const);
#if XE_GUEST_OUTPUT_DITHER
// Clamping because on Vulkan, the surface may specify any format, including
// floating-point.
xe_fsr_rcas_color.rgb =
xesl_saturate(xe_fsr_rcas_color.rgb + XeDitherOffset8bpc(pixel_coord));
#endif // XE_GUEST_OUTPUT_DITHER
// Force alpha to 1 to make sure the surface won't be translucent.
xe_fsr_rcas_color.a = 1.0;
xesl_entry_end
#define A_GPU 1
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_a.h"
#define FSR_RCAS_F 1
xesl_float4 FsrRcasLoadF(xesl_int2 p) {
return xesl_float4(xesl_texelFetch2D_comb(xe_fsr_rcas_source, p, 0).rgb, 1.0);
}
void FsrRcasInputF(inout float r, inout float g, inout float b) {}
#include "../../../../third_party/FidelityFX-FSR/ffx-fsr/ffx_fsr1.h"

View File

@ -1,4 +0,0 @@
#version 420
#extension GL_GOOGLE_include_directive : require
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_fsr_rcas.glsli"

View File

@ -1,2 +0,0 @@
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_fsr_rcas.hlsli"

View File

@ -0,0 +1,11 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#define XE_GUEST_OUTPUT_DITHER 1
#include "guest_output_ffx_fsr_rcas.xesli"

View File

@ -1,17 +0,0 @@
#version 310 es
layout(push_constant) uniform XeTriangleStripRectConstants {
// If the layout is changed, update the base offset in all guest output
// fragment shaders!
vec2 xe_triangle_strip_rect_offset;
// Can be negative.
vec2 xe_triangle_strip_rect_size;
};
void main() {
// Passthrough - coordinate system differences are to be handled externally.
gl_Position = vec4(xe_triangle_strip_rect_offset +
vec2((uvec2(gl_VertexIndex) >> uvec2(0u, 1u)) & 1u) *
xe_triangle_strip_rect_size,
0.0, 1.0);
}

View File

@ -1,14 +0,0 @@
cbuffer XeTriangleStripRectConstants : register(b0) {
float2 xe_triangle_strip_rect_offset;
// Can be negative.
float2 xe_triangle_strip_rect_size;
};
void main(uint xe_vertex_id : SV_VertexID,
out float4 xe_position : SV_Position) {
// Passthrough - coordinate system differences are to be handled externally.
xe_position = float4(xe_triangle_strip_rect_offset +
float2((xe_vertex_id >> uint2(0u, 1u)) & 1u) *
xe_triangle_strip_rect_size,
0.0f, 1.0f);
}

View File

@ -0,0 +1,33 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
xesl_push_constants_begin(b0, space0)
// If the layout is changed, update the base offset in all guest output pixel
// shaders!
xesl_float2 xe_triangle_strip_rect_offset;
// Can be negative.
xesl_float2 xe_triangle_strip_rect_size;
xesl_push_constants_end
xesl_entry
xesl_entry_bindings_end
xesl_input_vertex_id
xesl_entry_signature_next
xesl_output_position
xesl_entry_signature_end
xesl_Position =
xesl_float4(
xesl_push_constant(xe_triangle_strip_rect_offset) +
xesl_float2((xesl_uint2(xesl_VertexID, xesl_VertexID) >>
xesl_uint2(0u, 1u)) & 1u) *
xesl_push_constant(xe_triangle_strip_rect_size),
0.0, 1.0);
xesl_entry_end

View File

@ -1,14 +0,0 @@
#version 310 es
precision highp float;
layout(set = 0, binding = 0) uniform lowp sampler2D xe_immediate_texture;
layout(location = 0) in vec2 xe_var_texcoord;
layout(location = 1) in lowp vec4 xe_var_color;
layout(location = 0) out lowp vec4 xe_frag_color;
void main() {
xe_frag_color =
xe_var_color * textureLod(xe_immediate_texture, xe_var_texcoord, 0.0);
}

View File

@ -1,12 +0,0 @@
Texture2D<float4> xe_immediate_texture : register(t0);
SamplerState xe_immediate_sampler : register(s0);
struct XePixelShaderInput {
float2 texcoord : TEXCOORD0;
float4 color : TEXCOORD1;
};
float4 main(XePixelShaderInput input) : SV_Target {
return input.color * xe_immediate_texture.SampleLevel(xe_immediate_sampler,
input.texcoord, 0.0f);
}

View File

@ -0,0 +1,25 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
xesl_entry
xesl_sampler(xesl_sampler2D, xe_immediate_texture, set=0, binding=0, t0,
space0, s0, space0)
xesl_entry_bindings_end
xesl_input(xesl_float2, xe_in_texcoord, 0, TEXCOORD)
xesl_entry_signature_next
xesl_input(xesl_float4, xe_in_color, 1, COLOR)
xesl_entry_signature_next
xesl_output_color(xesl_float4, xe_out_color, 0)
xesl_entry_signature_end
xe_out_color =
xe_in_color *
xesl_textureSampleLod2D_comb(xe_immediate_texture, xe_in_texcoord, 0.0);
xesl_entry_end

View File

@ -1,20 +0,0 @@
#version 310 es
layout(push_constant) uniform XePushConstants {
vec2 xe_coordinate_space_size_inv;
};
layout(location = 0) in vec2 xe_attr_position;
layout(location = 1) in vec2 xe_attr_texcoord;
layout(location = 2) in lowp vec4 xe_attr_color;
layout(location = 0) out vec2 xe_var_texcoord;
layout(location = 1) out lowp vec4 xe_var_color;
void main() {
xe_var_texcoord = xe_attr_texcoord;
xe_var_color = xe_attr_color;
gl_Position =
vec4(xe_attr_position * xe_coordinate_space_size_inv * 2.0 - 1.0, 0.0,
1.0);
}

View File

@ -1,25 +0,0 @@
cbuffer XeImmediateVertexConstants : register(b0) {
float2 xe_coordinate_space_size_inv;
};
struct XeVertexShaderInput {
float2 position : POSITION;
float2 texcoord : TEXCOORD;
float4 color : COLOR;
};
struct XeVertexShaderOutput {
float2 texcoord : TEXCOORD0;
float4 color : TEXCOORD1;
float4 position : SV_Position;
};
XeVertexShaderOutput main(XeVertexShaderInput input) {
XeVertexShaderOutput output;
output.position = float4(
input.position * xe_coordinate_space_size_inv * float2(2.0, -2.0) +
float2(-1.0, 1.0), 0.0, 1.0);
output.texcoord = input.texcoord;
output.color = input.color;
return output;
}

View File

@ -0,0 +1,38 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#include "xesl.xesli"
xesl_push_constants_begin(b0, space0)
xesl_float2 xe_coordinate_space_size_inv;
xesl_push_constants_end
xesl_entry
xesl_entry_bindings_end
xesl_input(xesl_float2, xe_in_position, 0, POSITION)
xesl_entry_signature_next
xesl_input(xesl_float2, xe_in_texcoord, 1, TEXCOORD)
xesl_entry_signature_next
xesl_input(xesl_float4, xe_in_color, 2, COLOR)
xesl_entry_signature_next
xesl_output(xesl_float2, xe_out_texcoord, 0, TEXCOORD)
xesl_entry_signature_next
xesl_output(xesl_float4, xe_out_color, 1, COLOR)
xesl_entry_signature_next
xesl_output_position
xesl_entry_signature_end
xe_out_texcoord = xe_in_texcoord;
xe_out_color = xe_in_color;
xesl_Position =
xesl_float4(xe_in_position *
xesl_push_constant(xe_coordinate_space_size_inv) *
xesl_float2(2.0, 2.0 * XESL_Y_SCREEN_DIRECTION) -
xesl_float2(1.0, XESL_Y_SCREEN_DIRECTION),
0.0, 1.0);
xesl_entry_end

View File

@ -1,3 +1,12 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XENIA_UI_SHADERS_NOISE_XESLI_
#define XENIA_UI_SHADERS_NOISE_XESLI_

View File

@ -1,9 +1,39 @@
/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2022 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XENIA_UI_SHADERS_XESL_XESLI_
#define XENIA_UI_SHADERS_XESL_XESLI_
// XESL_LANGUAGE_GLSL / HLSL are expected to be defined via compiler arguments.
// XESL_LANGUAGE_GLSL / HLSL = 1 are expected to be defined via compiler
// arguments.
// For functions, it's preferable to take the identifiers here from an existing
// target language, such as GLSL or HLSL, prefixing them with xesl_, only
// modifying the names when altering (generalizing or specializing usually)
// their functionality compared to that of the original function. The preferred
// name choice from all the shading languages is the name that reflects the
// functionality the closest, especially if some languages have a narrower input
// domain (for instance, HLSL has asuint that can accept both float and int,
// while GLSL has floatBitsToUint that accepts only float - there are two
// options here, a xesl_floatBitsToUint alias, or xesl_asuint overloads, but the
// former is more precisely descriptive, so it's preferred; xesl_lerp is
// preferred over xesl_mix because the former describes how exactly the mixing
// will be performed), and / or that is the most visually consistent
// (xesl_float4 over xesl_vec4 considering it's a float vector).
// Vectors.
// Scalars for definition consistency.
#define xesl_bool bool
#define xesl_int int
#define xesl_uint uint
#define xesl_float float
#if XESL_LANGUAGE_GLSL
#define xesl_bool2 bvec2
#define xesl_bool3 bvec3
@ -33,13 +63,377 @@
#endif // XESL_LANGUAGE_GLSL
// Declarations.
//
// Resource binding is very different between shading languages, so any
// customizations are fine in it. All binding slots for all APIs, however,
// should be explicitly specified by the shader for ease of manual lookup and
// tweaking. They should be alphabetically ordered by the name of the target
// shading language in the argument lists (GLSL before HLSL). For readability,
// the `set=` and `binding=` specifiers, and register types and the `space`
// prefix in HLSL, are exposed to the shader, even though they're redundant.
//
// The xesl_id_ prefix (with context-specific sub-prefixes) can be used to
// create internal derivative identifiers (such as buffer block names from
// instance names, or separate texture and sampler from a combined texture /
// sampler for languages not supporting the latter).
// Shader entry point must be declared as:
// xesl_entry
// Everything here must be separated with xesl_entry_binding_next, with no
// leading or trailing separators.
// - Texel buffer, texture, sampler bindings.
// xesl_entry_bindings_end
// Everything here must be separated with xesl_entry_signature_next, with no
// leading or trailing separators.
// - Linked stage inputs.
// - Linked system stage inputs (like pixel position).
// - System stage inputs.
// - Linked stage outputs.
// - Linked system stage outputs (like vertex position).
// - System stage outputs.
// xesl_entry_signature_end
// - Main function code.
// xesl_entry_end
// Bindings are in the entry point because they are passed this way in MSL.
// Note that for the stage inputs / outputs, the order must be the same as in
// HLSL linkage.
// Both binding and signature entry names may be placed in the global scope in
// the target language, make sure they don't collide with anything there.
#if XESL_LANGUAGE_GLSL
#define xesl_entry_signature_end void main() {
#elif XESL_LANGUAGE_HLSL
#define xesl_entry_bindings_end void main(
#define xesl_entry_signature_next ,
#define xesl_entry_signature_end ) {
#else
#error xesl_entry not defined for the target language.
#endif // XE_LANGUAGE
#ifndef xesl_entry
#define xesl_entry
#endif // !xesl_entry
#ifndef xesl_entry_binding_next
#define xesl_entry_binding_next
#endif // !xesl_entry_binding_next
#ifndef xesl_entry_bindings_end
#define xesl_entry_bindings_end
#endif // !xesl_entry_bindings_end
#ifndef xesl_entry_signature_next
#define xesl_entry_signature_next
#endif // !xesl_entry_signature_next
#ifndef xesl_entry_end
#define xesl_entry_end }
#endif // !xesl_entry_end
#if XESL_LANGUAGE_HLSL
// HLSL requires static const to declare a constant in the global scope so it
// doesn't go to $Globals instead.
// HLSL requires static const for declaring a constant in the global scope so
// it doesn't go to $Globals instead.
#define xesl_static static
#else
// GLSL requires just const to declare a constant in the global scope.
// GLSL requires just const for declaring a constant in the global scope.
#define xesl_static
#endif // XESL_LANGUAGE_HLSL
#if XESL_LANGUAGE_GLSL
#define xesl_block_offset_member(glsl_offset_bytes, hlsl_packoffset, type, \
name_element_count) \
layout(offset=glsl_offset_bytes) type name_element_count;
#elif XESL_LANGUAGE_HLSL
#define xesl_block_offset_member(glsl_offset_bytes, hlsl_packoffset, type, \
name_element_count) \
type name_element_count : packoffset(hlsl_packoffset);
#else
#error xesl_block_offset_member not defined for the target language.
#endif // XESL_LANGUAGE
// Structures of constant and structured buffer bindings must be declared before
// the entry point declaration.
// Constant buffers and push constants must be manually packed as std140 (which
// is stricter than HLSL packing) due to the GLSL requirement. This means that
// 32x4 and 32x3 vectors must start at 16-byte alignment, 32x2 at 8-byte, and a
// single 32-bit value can be placed immediately after a 32x3 vector (the Vulkan
// definition of this behavior). Specifically, all alignment padding must be
// inserted explicitly (or xesl_block_offset_member must be used), as by default
// HLSL doesn't have the alignment requirement, only the rule that elements
// (array elements, or single non-array members) must not cross 32x4 vector
// boundaries, so something like float|float3 or float|float2|float will be
// packed differently in GLSL (float|pad3|float3 or float|pad|float2|float) and
// HLSL (float|float3 or float|float2|float).
// Constant buffer and push constant member names will be in the global scope in
// some target languages - they must not collide with anything else there. To
// access a constant, use xesl_constant or xesl_push_constant.
// Push constants, even though may be spread across multiple constant buffers in
// the Direct3D 12 API, must be declared in a single structure in XeSL - the
// reason is that layout qualifiers in GLSL can't be used in regular structures,
// only in blocks, and sub-blocks can't be declared in a block, so there's no
// way to create separate identifiers for push constant ranges in GLSL. Though
// both GLSL and HLSL support anonymous push constants / cbuffers, MSL requires
// a name for the buffer binding.
// In GLSL, the offsets in the push constants are global across shader stages.
// In HLSL, they're local to the specific root constant buffer.
#if XESL_LANGUAGE_GLSL
#define xesl_push_constants_begin(hlsl_b, hlsl_b_space) \
layout(push_constant) uniform xesl_push_constants_block {
#define xesl_push_constants_end \
} xesl_push_constants;
#elif XESL_LANGUAGE_HLSL
#define XESL_PUSH_CONSTANTS_GLOBAL 1
#define xesl_push_constants_begin(hlsl_b, hlsl_b_space) \
cbuffer xesl_push_constants : register(hlsl_b, hlsl_b_space) {
#define xesl_push_constants_end \
};
#else
#error xesl_push_constants not defined for the target language.
#endif // XESL_LANGUAGE
#if XESL_PUSH_CONSTANTS_GLOBAL
#define xesl_push_constant(name) name
#else
#define xesl_push_constant(name) xesl_push_constants.name
#endif // XESL_PUSH_CONSTANTS_GLOBAL
// Texture, sampler and image declarations must be in the entry point bindings
// declaration.
// - xesl_texture is a separate texture.
// - xesl_samplerState is a separate sampler.
// - xesl_sampler is a combined texture / sampler where available, internally
// separate where not.
// - xesl_fetchSampler is a special kind of xesl_sampler for use when only
// texelFetch is needed - it can be used with xesl_texelFetch#D_comb just like
// a xesl_sampler, but when the target language doesn't need the sampler state
// for texelFetch, the unused sampler will not be created.
#if XESL_LANGUAGE_GLSL
#define XESL_COMBINED_TEXTURE_SAMPLER 1
#define XESL_TEXEL_FETCH_USES_SAMPLER 1
// Types.
#define xesl_texture2D texture2D
#define xesl_sampler2D sampler2D
// Binding declarations.
#define xesl_texture(texture_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space) \
layout(glsl_set, glsl_binding) uniform texture_type name;
#define xesl_samplerState(name, glsl_set, glsl_binding, hlsl_s, \
hlsl_s_space) \
layout(glsl_set, glsl_binding) uniform sampler name;
#define xesl_sampler(sampler_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space, hlsl_s, hlsl_s_space) \
layout(glsl_set, glsl_binding) uniform sampler_type name;
// Fetching.
#define xesl_texelFetch2D_sep(texture_name, sampler_name, position, lod) \
texelFetch(sampler2D(texture_name, sampler_name), position, lod)
#define xesl_texelFetch2D_comb(texture_sampler_name, position, lod) \
texelFetch(texture_sampler_name, position, lod)
#define xesl_textureSampleLod2D_sep(texture, sampler_name, position, lod) \
textureLod(sampler2D(texture_name, sampler_name), position, lod)
#define xesl_textureSampleLod2D_comb(texture_sampler_name, position, lod) \
textureLod(texture_sampler_name, position, lod)
#define xesl_textureGatherRed2D_sep(texture_name, sampler_name, position) \
textureGather(sampler2D(texture_name, sampler_name), position, 0)
#define xesl_textureGatherGreen2D_sep(texture_name, sampler_name, position) \
textureGather(sampler2D(texture_name, sampler_name), position, 1)
#define xesl_textureGatherBlue2D_sep(texture_name, sampler_name, position) \
textureGather(sampler2D(texture_name, sampler_name), position, 2)
#define xesl_textureGatherAlpha2D_sep(texture_name, sampler_name, position) \
textureGather(sampler2D(texture_name, sampler_name), position, 3)
#define xesl_textureGatherRed2D_comb(texture_sampler_name, position) \
textureGather(texture_sampler_name, position, 0)
#define xesl_textureGatherGreen2D_comb(texture_sampler_name, position) \
textureGather(texture_sampler_name, position, 1)
#define xesl_textureGatherBlue2D_comb(texture_sampler_name, position) \
textureGather(texture_sampler_name, position, 2)
#define xesl_textureGatherAlpha2D_comb(texture_sampler_name, position) \
textureGather(texture_sampler_name, position, 3)
#elif XESL_LANGUAGE_HLSL
// Types.
#define xesl_texture2D Texture2D
// Binding declarations.
#define xesl_texture(texture_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space) \
texture_type name : register(hlsl_t, hlsl_t_space);
#define xesl_samplerState(name, glsl_set, glsl_binding, hlsl_s, \
hlsl_s_space) \
SamplerState name : register(hlsl_s, hlsl_s_space);
// Fetching.
#define xesl_texelFetch2D_sep(texture_name, sampler_name, position, lod) \
((texture_name).Load(int3(position, lod)))
#define xesl_texelFetch2D_comb(texture_sampler_name, position, lod) \
((xesl_id_texture_##texture_sampler_name).Load(int3(position, lod)))
#define xesl_textureSampleLod2D_sep(texture_name, sampler_name, position, \
lod) \
((texture_name).SampleLevel(sampler_name, position, lod))
#define xesl_textureGatherRed2D_sep(texture_name, sampler_name, position) \
((texture_name).GatherRed(sampler_name, position))
#define xesl_textureGatherGreen2D_sep(texture_name, sampler_name, position) \
((texture_name).GatherGreen(sampler_name, position))
#define xesl_textureGatherBlue2D_sep(texture_name, sampler_name, position) \
((texture_name).GatherBlue(sampler_name, position))
#define xesl_textureGatherAlpha2D_sep(texture_name, sampler_name, position) \
((texture_name).GatherAlpha(sampler_name, position))
#else
#error xesl_texture and xesl_samplerState not defined for the target language.
#endif // XESL_LANGUAGE
// If there's no language specialization doing this already, implement combined
// textures / samplers as separate, with `xesl_id_texture_` and
// `xesl_id_sampler_` prefixes. The sampler types become the texture types.
#if !XESL_COMBINED_TEXTURE_SAMPLER
#ifndef xesl_sampler2D
#define xesl_sampler2D xesl_texture2D
#endif // !xesl_sampler2D
#ifndef xesl_sampler
#define xesl_sampler(sampler_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space, hlsl_s, hlsl_s_space) \
xesl_texture(sampler_type, xesl_id_texture_##name, glsl_set, \
glsl_binding, hlsl_t, hlsl_t_space) \
xesl_entry_binding_next \
xesl_samplerState(xesl_id_sampler_##name, glsl_set, glsl_binding, \
hlsl_s, hlsl_s_space)
#endif // !xesl_sampler
#ifndef xesl_textureSampleLod2D_comb
#define xesl_textureSampleLod2D_comb(texture_sampler_name, position, lod) \
xesl_textureSampleLod2D_sep(xesl_id_texture_##texture_sampler_name, \
xesl_id_sampler_##texture_sampler_name, \
position, lod)
#endif // !xesl_textureSampleLod2D_comb
#ifndef xesl_textureGatherRed2D_comb
#define xesl_textureGatherRed2D_comb(texture_sampler_name, position) \
xesl_textureGatherRed2D_sep(xesl_id_texture_##texture_sampler_name, \
xesl_id_sampler_##texture_sampler_name, \
position)
#endif // !xesl_textureGatherRed2D_comb
#ifndef xesl_textureGatherGreen2D_comb
#define xesl_textureGatherGreen2D_comb(texture_sampler_name, position) \
xesl_textureGatherGreen2D_sep(xesl_id_texture_##texture_sampler_name, \
xesl_id_sampler_##texture_sampler_name, \
position)
#endif // !xesl_textureGatherGreen2D_comb
#ifndef xesl_textureGatherBlue2D_comb
#define xesl_textureGatherBlue2D_comb(texture_sampler_name, position) \
xesl_textureGatherBlue2D_sep(xesl_id_texture_##texture_sampler_name, \
xesl_id_sampler_##texture_sampler_name, \
position)
#endif // !xesl_textureGatherBlue2D_comb
#ifndef xesl_textureGatherAlpha2D_comb
#define xesl_textureGatherAlpha2D_comb(texture_sampler_name, position) \
xesl_textureGatherAlpha2D_sep(xesl_id_texture_##texture_sampler_name, \
xesl_id_sampler_##texture_sampler_name, \
position)
#endif // !xesl_textureGatherAlpha2D_comb
#endif // !XESL_COMBINED_TEXTURE_SAMPLER
#if XESL_TEXEL_FETCH_USES_SAMPLER
#ifndef xesl_fetchSampler
#define xesl_fetchSampler(sampler_type, name, glsl_set, glsl_binding, \
hlsl_t, hlsl_t_space) \
xesl_sampler(sampler_type, name, glsl_set, glsl_binding, hlsl_t, \
hlsl_t_space, s0, space0)
#endif // !xesl_fetchSampler
#else
#ifndef xesl_fetchSampler
#define xesl_fetchSampler(sampler_type, name, glsl_set, glsl_binding, \
hlsl_t, hlsl_t_space) \
xesl_texture(sampler_type, xesl_id_texture_##name, glsl_set, \
glsl_binding, hlsl_t, hlsl_t_space)
#endif // !xesl_fetchSampler
#endif // XESL_TEXEL_FETCH_USES_SAMPLER
// xesl_input_vertex_id declares int xesl_VertexID.
// xesl_input_frag_coord declares xesl_float4 xesl_FragCoord.
// xesl_FragCoord.w is 1/W if XESL_FRAG_COORD_W_IS_INVERSE, W otherwise.
// xesl_output_position declares xesl_float4 xesl_Position.
#if XESL_LANGUAGE_GLSL
#define XESL_FRAG_COORD_W_IS_INVERSE 1
#define xesl_VertexID gl_VertexIndex
#define xesl_FragCoord gl_FragCoord
#define xesl_Position gl_Position
#define xesl_input(type, name, index, hlsl_semantic) \
layout(location=index) in type name;
#define xesl_input_vertex_id
#define xesl_input_frag_coord
#define xesl_output(type, name, index, hlsl_semantic) \
layout(location=index) out type name;
#define xesl_output_position
#define xesl_output_color(type, name, index) \
layout(location=index) out type name;
#elif XESL_LANGUAGE_HLSL
#define xesl_VertexID (int(xesl_id_vertex_id))
#define xesl_input(type, name, index, hlsl_semantic) \
type name : hlsl_semantic
#define xesl_input_vertex_id \
uint xesl_id_vertex_id : SV_VertexID
#define xesl_input_frag_coord \
xesl_float4 xesl_FragCoord : SV_Position
#define xesl_output(type, name, index, hlsl_semantic) \
out type name : hlsl_semantic
#define xesl_output_position \
out xesl_float4 xesl_Position : SV_Position
#define xesl_output_color(type, name, index) \
out type name : SV_Target##index
#else
#error xesl_input and xesl_output not defined for the target language.
#endif // XESL_LANGUAGE
// XESL_Y_SCREEN_DIRECTION is 1.0 if with a positive viewport height,
// +xesl_Position.y is towards +xesl_FragCoord.y, -1.0 if +xesl_Position.y is
// towards -xesl_FragCoord.y.
#if XESL_LANGUAGE_GLSL
#define XESL_Y_SCREEN_DIRECTION 1.0
#else
#define XESL_Y_SCREEN_DIRECTION -1.0
#endif // XESL_LANGUAGE_GLSL
// Function aliases.
#if XESL_LANGUAGE_HLSL
// Using functions instead of #define for implicit argument conversion.
int xesl_floatBitsToInt(float value) { return asint(value); }
xesl_int2 xesl_floatBitsToInt(xesl_float2 value) { return asint(value); }
xesl_int3 xesl_floatBitsToInt(xesl_float3 value) { return asint(value); }
xesl_int4 xesl_floatBitsToInt(xesl_float4 value) { return asint(value); }
uint xesl_floatBitsToUint(float value) { return asuint(value); }
xesl_uint2 xesl_floatBitsToUint(xesl_float2 value) { return asuint(value); }
xesl_uint3 xesl_floatBitsToUint(xesl_float3 value) { return asuint(value); }
xesl_uint4 xesl_floatBitsToUint(xesl_float4 value) { return asuint(value); }
float xesl_intBitsToFloat(int value) { return asfloat(value); }
xesl_float2 xesl_intBitsToFloat(xesl_int2 value) { return asfloat(value); }
xesl_float3 xesl_intBitsToFloat(xesl_int3 value) { return asfloat(value); }
xesl_float4 xesl_intBitsToFloat(xesl_int4 value) { return asfloat(value); }
float xesl_uintBitsToFloat(uint value) { return asfloat(value); }
xesl_float2 xesl_uintBitsToFloat(xesl_uint2 value) { return asfloat(value); }
xesl_float3 xesl_uintBitsToFloat(xesl_uint3 value) { return asfloat(value); }
xesl_float4 xesl_uintBitsToFloat(xesl_uint4 value) { return asfloat(value); }
#else
#define xesl_floatBitsToInt floatBitsToInt
#define xesl_floatBitsToUint floatBitsToUint
#define xesl_intBitsToFloat intBitsToFloat
#define xesl_uintBitsToFloat uintBitsToFloat
#endif // XESL_LANGUAGE_HLSL
#if XESL_LANGUAGE_GLSL
float xesl_saturate(float value) {
return clamp(value, 0.0, 1.0);
}
xesl_float2 xesl_saturate(xesl_float2 value) {
return clamp(value, xesl_float2(0.0, 0.0), xesl_float2(1.0, 1.0));
}
xesl_float3 xesl_saturate(xesl_float3 value) {
return clamp(value, xesl_float3(0.0, 0.0, 0.0), xesl_float3(1.0, 1.0, 1.0));
}
xesl_float4 xesl_saturate(xesl_float4 value) {
return clamp(value, xesl_float4(0.0, 0.0, 0.0, 0.0),
xesl_float4(1.0, 1.0, 1.0, 1.0));
}
#else
#define xesl_saturate saturate
#endif // XESL_LANGUAGE_GLSL
#if XESL_LANGUAGE_GLSL
#define xesl_packHalf2x16 packHalf2x16
#elif XESL_LANGUAGE_HLSL
uint xesl_packHalf2x16(xesl_float2 value) {
return f32tof16(value.x) | (f32tof16(value.y) << 16u);
}
#else
#error xesl_packHalf2x16 not defined for the target language.
#endif // XESL_LANGUAGE
#endif // XENIA_UI_SHADERS_XESL_XESLI_