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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@
// //
// Buffer Definitions: // Buffer Definitions:
// //
// cbuffer XeCasSharpenConstants // cbuffer xesl_push_constants
// { // {
// //
// int2 xe_cas_output_offset; // Offset: 0 Size: 8 // int2 xe_cas_output_offset; // Offset: 0 Size: 8
@ -18,8 +18,8 @@
// //
// Name Type Format Dim ID HLSL Bind Count // Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------ // ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_texture texture float3 2d T0 t0 1 // xesl_id_texture_xe_cas_source texture float4 2d T0 t0 1
// XeCasSharpenConstants cbuffer NA NA CB0 cb0 1 // xesl_push_constants cbuffer NA NA CB0 cb0 1
// //
// //
// //
@ -97,21 +97,21 @@ ret
const BYTE guest_output_ffx_cas_sharpen_ps[] = const BYTE guest_output_ffx_cas_sharpen_ps[] =
{ {
68, 88, 66, 67, 2, 226, 68, 88, 66, 67, 156, 173,
230, 16, 201, 205, 207, 54, 216, 107, 79, 128, 79, 193,
189, 193, 184, 163, 140, 156, 241, 218, 239, 80, 94, 13,
247, 96, 1, 0, 0, 0, 168, 81, 1, 0, 0, 0,
40, 9, 0, 0, 5, 0, 56, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0, 0, 0, 52, 0, 0, 0,
4, 2, 0, 0, 56, 2, 20, 2, 0, 0, 72, 2,
0, 0, 108, 2, 0, 0, 0, 0, 124, 2, 0, 0,
140, 8, 0, 0, 82, 68, 156, 8, 0, 0, 82, 68,
69, 70, 200, 1, 0, 0, 69, 70, 216, 1, 0, 0,
1, 0, 0, 0, 176, 0, 1, 0, 0, 0, 192, 0,
0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
60, 0, 0, 0, 1, 5, 60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0, 255, 255, 0, 5, 0, 0,
160, 1, 0, 0, 19, 19, 176, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0, 68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0, 24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 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, 0, 0, 5, 0, 0, 0,
4, 0, 0, 0, 255, 255, 4, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0, 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, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 120, 101, 95, 116, 0, 0, 120, 101, 115, 108,
101, 120, 116, 117, 114, 101, 95, 105, 100, 95, 116, 101,
0, 88, 101, 67, 97, 115, 120, 116, 117, 114, 101, 95,
83, 104, 97, 114, 112, 101, 120, 101, 95, 99, 97, 115,
110, 67, 111, 110, 115, 116, 95, 115, 111, 117, 114, 99,
97, 110, 116, 115, 0, 171, 101, 0, 120, 101, 115, 108,
171, 171, 151, 0, 0, 0, 95, 112, 117, 115, 104, 95,
2, 0, 0, 0, 200, 0, 99, 111, 110, 115, 116, 97,
0, 0, 16, 0, 0, 0, 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, 0, 0, 0, 0,
0, 0, 24, 1, 0, 0, 40, 1, 0, 0, 0, 0,
0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0,
0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 68, 1,
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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 120, 101, 0, 0, 0, 0, 104, 1,
95, 99, 97, 115, 95, 111, 0, 0, 8, 0, 0, 0,
117, 116, 112, 117, 116, 95, 4, 0, 0, 0, 2, 0,
111, 102, 102, 115, 101, 116, 0, 0, 140, 1, 0, 0,
0, 105, 110, 116, 50, 0, 0, 0, 0, 0, 255, 255,
171, 171, 1, 0, 2, 0, 255, 255, 0, 0, 0, 0,
1, 0, 2, 0, 0, 0, 255, 255, 255, 255, 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, 120, 101, 95, 99, 0, 0, 120, 101, 95, 99,
97, 115, 95, 115, 104, 97, 97, 115, 95, 111, 117, 116,
114, 112, 110, 101, 115, 115, 112, 117, 116, 95, 111, 102,
95, 112, 111, 115, 116, 95, 102, 115, 101, 116, 0, 105,
115, 101, 116, 117, 112, 0, 110, 116, 50, 0, 171, 171,
102, 108, 111, 97, 116, 0, 1, 0, 2, 0, 1, 0,
171, 171, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0,
1, 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, 116, 1, 0, 0, 61, 1, 0, 0,
0, 0, 77, 105, 99, 114, 120, 101, 95, 99, 97, 115,
111, 115, 111, 102, 116, 32, 95, 115, 104, 97, 114, 112,
40, 82, 41, 32, 72, 76, 110, 101, 115, 115, 95, 112,
83, 76, 32, 83, 104, 97, 111, 115, 116, 95, 115, 101,
100, 101, 114, 32, 67, 111, 116, 117, 112, 0, 102, 108,
109, 112, 105, 108, 101, 114, 111, 97, 116, 0, 171, 171,
32, 49, 48, 46, 49, 0, 0, 0, 3, 0, 1, 0,
73, 83, 71, 78, 44, 0, 1, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
15, 3, 0, 0, 83, 86, 0, 0, 0, 0, 0, 0,
95, 80, 111, 115, 105, 116, 0, 0, 132, 1, 0, 0,
105, 111, 110, 0, 79, 83, 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, 71, 78, 44, 0, 0, 0,
1, 0, 0, 0, 8, 0, 1, 0, 0, 0, 8, 0,
0, 0, 32, 0, 0, 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, 3, 0, 0, 0,
0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15, 3,
0, 0, 83, 86, 95, 84, 0, 0, 83, 86, 95, 80,
97, 114, 103, 101, 116, 0, 111, 115, 105, 116, 105, 111,
171, 171, 83, 72, 69, 88, 110, 0, 79, 83, 71, 78,
24, 6, 0, 0, 81, 0, 44, 0, 0, 0, 1, 0,
0, 0, 134, 1, 0, 0, 0, 0, 8, 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, 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,
32, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
45, 0, 0, 8, 114, 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, 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, 70, 126, 32, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 8, 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, 0, 0,
0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 45, 0,
0, 8, 114, 0, 16, 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, 16, 0, 0, 0, 0, 0,
70, 126, 32, 0, 0, 0, 70, 126, 32, 0, 0, 0,
0, 0, 0, 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, 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, 16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 1, 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, 0, 0, 56, 0, 0, 7,
114, 0, 16, 0, 4, 0, 130, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0, 0, 0, 26, 0, 16, 0,
4, 0, 0, 0, 70, 2, 3, 0, 0, 0, 26, 0,
16, 0, 4, 0, 0, 0, 16, 0, 3, 0, 0, 0,
56, 0, 0, 7, 114, 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, 16, 0, 0, 0, 0, 0,
70, 2, 16, 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, 0, 0, 51, 0, 0, 7,
130, 0, 16, 0, 1, 0, 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, 58, 0, 16, 0,
0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 26, 0,
16, 0, 4, 0, 0, 0, 16, 0, 4, 0, 0, 0,
52, 0, 0, 7, 130, 0, 51, 0, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0, 16, 0, 1, 0, 0, 0,
58, 0, 16, 0, 0, 0, 58, 0, 16, 0, 1, 0,
0, 0, 26, 0, 16, 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, 0, 7, 130, 0, 16, 0,
2, 0, 0, 0, 26, 0, 2, 0, 0, 0, 26, 0,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
26, 0, 16, 0, 2, 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, 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, 130, 0, 16, 0, 0, 0,
0, 0, 58, 0, 16, 0, 0, 0, 58, 0, 16, 0,
0, 0, 0, 0, 58, 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, 30, 0, 0, 8, 130, 0,
16, 0, 2, 0, 0, 0, 16, 0, 2, 0, 0, 0,
58, 0, 16, 128, 65, 0, 58, 0, 16, 128, 65, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
1, 64, 0, 0, 187, 126, 1, 64, 0, 0, 255, 159,
240, 126, 0, 0, 0, 8, 241, 126, 50, 0, 0, 10,
130, 0, 16, 0, 0, 0, 130, 0, 16, 0, 1, 0,
0, 0, 58, 0, 16, 128, 0, 0, 58, 0, 16, 128,
65, 0, 0, 0, 0, 0, 65, 0, 0, 0, 2, 0,
0, 0, 1, 64, 0, 0, 0, 0, 58, 0, 16, 0,
0, 0, 128, 63, 51, 0, 1, 0, 0, 0, 1, 64,
0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 0, 64,
0, 0, 0, 0, 58, 0, 56, 0, 0, 7, 130, 0,
16, 0, 0, 0, 0, 0, 16, 0, 1, 0, 0, 0,
58, 0, 16, 0, 1, 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, 0, 0, 58, 0, 16, 0,
2, 0, 0, 0, 58, 0, 2, 0, 0, 0, 56, 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,
0, 7, 114, 0, 16, 0, 0, 7, 114, 0, 16, 0,
0, 0, 0, 0, 246, 15, 1, 0, 0, 0, 246, 15,
16, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0, 70, 2, 16, 0, 1, 0,
0, 0, 75, 0, 0, 5, 0, 0, 50, 0, 0, 9,
114, 32, 16, 0, 0, 0, 114, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 54, 0, 2, 0, 0, 0, 246, 15,
0, 5, 130, 32, 16, 0, 16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 64, 70, 2, 16, 0, 1, 0,
0, 0, 0, 0, 128, 63, 0, 0, 50, 0, 0, 9,
62, 0, 0, 1, 83, 84, 114, 0, 16, 0, 1, 0,
65, 84, 148, 0, 0, 0, 0, 0, 70, 2, 16, 0,
49, 0, 0, 0, 5, 0, 4, 0, 0, 0, 246, 15,
0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
2, 0, 0, 0, 27, 0, 70, 2, 16, 0, 1, 0,
0, 0, 6, 0, 0, 0, 0, 0, 50, 0, 0, 9,
1, 0, 0, 0, 1, 0, 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, 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, 0, 0, 0, 0, 0, 0,
5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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,
@ -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, 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: // Buffer Definitions:
// //
// cbuffer XeFsrEasuConstants // cbuffer xesl_push_constants
// { // {
// //
// float2 xe_fsr_easu_input_output_size_ratio;// Offset: 0 Size: 8 // float2 xe_fsr_easu_input_output_size_ratio;// Offset: 0 Size: 8
@ -18,9 +18,9 @@
// //
// Name Type Format Dim ID HLSL Bind Count // Name Type Format Dim ID HLSL Bind Count
// ------------------------------ ---------- ------- ----------- ------- -------------- ------ // ------------------------------ ---------- ------- ----------- ------- -------------- ------
// xe_sampler_linear_clamp sampler NA NA S0 s0 1 // xesl_id_sampler_xe_fsr_easu_source sampler NA NA S0 s0 1
// xe_texture texture float3 2d T0 t0 1 // xesl_id_texture_xe_fsr_easu_source texture float4 2d T0 t0 1
// XeFsrEasuConstants cbuffer NA NA CB0 cb0 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_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw dcl_output o0.xyzw
dcl_temps 22 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) 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 ftou r2.xy, v0.xyxx
utof r2.xy, r2.xyxx utof r2.xy, r2.xyxx
mad r0.xy, r2.xyxx, CB0[0][0].xyxx, r0.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[] = const BYTE guest_output_ffx_fsr_easu_ps[] =
{ {
68, 88, 66, 67, 240, 45, 68, 88, 66, 67, 244, 213,
22, 153, 167, 152, 10, 67, 198, 18, 209, 124, 162, 152,
48, 29, 75, 57, 104, 138, 164, 52, 152, 171, 230, 26,
197, 43, 1, 0, 0, 0, 6, 168, 1, 0, 0, 0,
236, 40, 0, 0, 5, 0, 16, 41, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0, 0, 0, 52, 0, 0, 0,
36, 2, 0, 0, 88, 2, 72, 2, 0, 0, 124, 2,
0, 0, 140, 2, 0, 0, 0, 0, 176, 2, 0, 0,
80, 40, 0, 0, 82, 68, 116, 40, 0, 0, 82, 68,
69, 70, 232, 1, 0, 0, 69, 70, 12, 2, 0, 0,
1, 0, 0, 0, 236, 0, 1, 0, 0, 0, 16, 1,
0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0,
60, 0, 0, 0, 1, 5, 60, 0, 0, 0, 1, 5,
255, 255, 0, 5, 0, 0, 255, 255, 0, 5, 0, 0,
191, 1, 0, 0, 19, 19, 227, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0, 68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0, 24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 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, 0, 0, 0, 0, 0, 0,
1, 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, 204, 0, 0, 0, 0, 0, 215, 0,
0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
5, 0, 0, 0, 4, 0, 5, 0, 0, 0, 4, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 1, 0, 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, 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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
120, 101, 95, 115, 97, 109, 120, 101, 115, 108, 95, 105,
112, 108, 101, 114, 95, 108, 100, 95, 115, 97, 109, 112,
105, 110, 101, 97, 114, 95, 108, 101, 114, 95, 120, 101,
99, 108, 97, 109, 112, 0, 95, 102, 115, 114, 95, 101,
120, 101, 95, 116, 101, 120, 97, 115, 117, 95, 115, 111,
116, 117, 114, 101, 0, 88, 117, 114, 99, 101, 0, 120,
101, 70, 115, 114, 69, 97, 101, 115, 108, 95, 105, 100,
115, 117, 67, 111, 110, 115, 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, 116, 97, 110, 116, 115, 0,
171, 171, 215, 0, 0, 0, 171, 171, 250, 0, 0, 0,
2, 0, 0, 0, 4, 1, 2, 0, 0, 0, 40, 1,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
0, 0, 0, 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, 0, 0, 8, 0,
0, 0, 2, 0, 0, 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, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
164, 1, 0, 0, 8, 0, 200, 1, 0, 0, 8, 0,
0, 0, 8, 0, 0, 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, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255, 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, 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, 120, 101, 95, 102, 115, 114,
95, 101, 97, 115, 117, 95, 95, 101, 97, 115, 117, 95,
105, 110, 112, 117, 116, 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, 104, 0, 0, 2, 22, 0,
0, 0, 56, 0, 0, 9, 0, 0, 56, 0, 0, 9,
130, 0, 16, 0, 0, 0, 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,
0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 17,
1, 64, 0, 0, 0, 0,
128, 64, 50, 0, 0, 17,
50, 0, 16, 0, 0, 0, 50, 0, 16, 0, 0, 0,
0, 0, 70, 128, 48, 0, 0, 0, 70, 128, 48, 0,
0, 0, 0, 0, 0, 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, 191, 0, 0, 0, 0,
0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 56, 0,
0, 12, 114, 0, 16, 0, 0, 12, 114, 0, 16, 0,
1, 0, 0, 0, 230, 139, 1, 0, 0, 0, 2, 64,
48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63,
0, 0, 0, 0, 0, 0,
0, 0, 2, 64, 0, 0,
0, 0, 128, 63, 0, 0, 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, 0, 0, 0, 28, 0,
0, 5, 50, 0, 16, 0, 0, 5, 50, 0, 16, 0,
2, 0, 0, 0, 70, 16, 2, 0, 0, 0, 70, 16,

View File

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

View File

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

View File

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

View File

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

View File

@ -5,7 +5,7 @@
// //
// Buffer Definitions: // Buffer Definitions:
// //
// cbuffer XeImmediateVertexConstants // cbuffer xesl_push_constants
// { // {
// //
// float2 xe_coordinate_space_size_inv;// Offset: 0 Size: 8 // float2 xe_coordinate_space_size_inv;// Offset: 0 Size: 8
@ -17,7 +17,7 @@
// //
// Name Type Format Dim ID HLSL Bind Count // 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 // Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------ // -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xy 0 NONE float xy // 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 // SV_Position 0 xyzw 2 POS float xyzw
// //
vs_5_1 vs_5_1
@ -59,21 +59,21 @@ ret
const BYTE immediate_vs[] = const BYTE immediate_vs[] =
{ {
68, 88, 66, 67, 141, 232, 68, 88, 66, 67, 15, 240,
76, 204, 152, 38, 127, 131, 112, 179, 37, 234, 188, 136,
125, 87, 10, 113, 217, 159, 206, 192, 216, 134, 250, 183,
27, 143, 1, 0, 0, 0, 16, 201, 1, 0, 0, 0,
24, 4, 0, 0, 5, 0, 20, 4, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0, 0, 0, 52, 0, 0, 0,
108, 1, 0, 0, 220, 1, 100, 1, 0, 0, 212, 1,
0, 0, 76, 2, 0, 0, 0, 0, 72, 2, 0, 0,
124, 3, 0, 0, 82, 68, 120, 3, 0, 0, 82, 68,
69, 70, 48, 1, 0, 0, 69, 70, 40, 1, 0, 0,
1, 0, 0, 0, 128, 0, 1, 0, 0, 0, 120, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
60, 0, 0, 0, 1, 5, 60, 0, 0, 0, 1, 5,
254, 255, 0, 5, 0, 0, 254, 255, 0, 5, 0, 0,
8, 1, 0, 0, 19, 19, 0, 1, 0, 0, 19, 19,
68, 37, 60, 0, 0, 0, 68, 37, 60, 0, 0, 0,
24, 0, 0, 0, 40, 0, 24, 0, 0, 0, 40, 0,
0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 0,
@ -85,144 +85,143 @@ const BYTE immediate_vs[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 88, 101, 0, 0, 0, 0, 120, 101,
73, 109, 109, 101, 100, 105, 115, 108, 95, 112, 117, 115,
97, 116, 101, 86, 101, 114, 104, 95, 99, 111, 110, 115,
116, 101, 120, 67, 111, 110, 116, 97, 110, 116, 115, 0,
115, 116, 97, 110, 116, 115, 100, 0, 0, 0, 1, 0,
0, 171, 100, 0, 0, 0, 0, 0, 144, 0, 0, 0,
1, 0, 0, 0, 152, 0, 16, 0, 0, 0, 0, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 192, 0, 0, 0, 184, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0,
0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 220, 0,
228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 120, 101,
255, 255, 0, 0, 0, 0, 95, 99, 111, 111, 114, 100,
120, 101, 95, 99, 111, 111, 105, 110, 97, 116, 101, 95,
114, 100, 105, 110, 97, 116, 115, 112, 97, 99, 101, 95,
101, 95, 115, 112, 97, 99, 115, 105, 122, 101, 95, 105,
101, 95, 115, 105, 122, 101, 110, 118, 0, 102, 108, 111,
95, 105, 110, 118, 0, 102, 97, 116, 50, 0, 1, 0,
108, 111, 97, 116, 50, 0, 3, 0, 1, 0, 2, 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, 0, 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, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0, 213, 0, 0, 0, 77, 105,
0, 0, 0, 0, 3, 3, 99, 114, 111, 115, 111, 102,
0, 0, 89, 0, 0, 0, 116, 32, 40, 82, 41, 32,
0, 0, 0, 0, 0, 0, 72, 76, 83, 76, 32, 83,
0, 0, 3, 0, 0, 0, 104, 97, 100, 101, 114, 32,
1, 0, 0, 0, 3, 3, 67, 111, 109, 112, 105, 108,
0, 0, 98, 0, 0, 0, 101, 114, 32, 49, 48, 46,
0, 0, 0, 0, 0, 0, 49, 0, 73, 83, 71, 78,
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,
104, 0, 0, 0, 3, 0, 104, 0, 0, 0, 3, 0,
0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 0, 0,
80, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 3, 12, 0, 0, 0, 0, 3, 3, 0, 0,
80, 0, 0, 0, 1, 0, 89, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0,
0, 0, 15, 0, 0, 0, 0, 0, 3, 3, 0, 0,
89, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 2, 0, 3, 0, 0, 0, 2, 0,
0, 0, 15, 0, 0, 0, 0, 0, 15, 15, 0, 0,
84, 69, 88, 67, 79, 79, 80, 79, 83, 73, 84, 73,
82, 68, 0, 83, 86, 95, 79, 78, 0, 84, 69, 88,
80, 111, 115, 105, 116, 105, 67, 79, 79, 82, 68, 0,
111, 110, 0, 171, 171, 171, 67, 79, 76, 79, 82, 0,
83, 72, 69, 88, 40, 1, 79, 83, 71, 78, 108, 0,
0, 0, 81, 0, 1, 0, 0, 0, 3, 0, 0, 0,
74, 0, 0, 0, 106, 8, 8, 0, 0, 0, 80, 0,
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, 0, 0,
0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 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, 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, 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 OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450" %1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5120 OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5312
OpExecutionMode %5663 OriginUpperLeft OpExecutionMode %5663 OriginUpperLeft
OpDecorate %gl_FragCoord BuiltIn FragCoord OpDecorate %gl_FragCoord BuiltIn FragCoord
OpMemberDecorate %_struct_1028 0 Offset 16 OpMemberDecorate %_struct_1028 0 Offset 16
OpMemberDecorate %_struct_1028 1 Offset 24 OpMemberDecorate %_struct_1028 1 Offset 24
OpDecorate %_struct_1028 Block OpDecorate %_struct_1028 Block
OpDecorate %5120 Location 0 OpDecorate %5312 Location 0
OpDecorate %3150 DescriptorSet 0 OpDecorate %4448 DescriptorSet 0
OpDecorate %3150 Binding 0 OpDecorate %4448 Binding 0
%void = OpTypeVoid %void = OpTypeVoid
%1282 = OpTypeFunction %void %1282 = OpTypeFunction %void
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
@ -30,15 +30,15 @@
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%_struct_1028 = OpTypeStruct %v2int %v2float %_struct_1028 = OpTypeStruct %v2int %v2float
%_ptr_PushConstant__struct_1028 = OpTypePointer PushConstant %_struct_1028 %_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 %int_0 = OpConstant %int 0
%_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int %_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int
%_ptr_Output_v4float = OpTypePointer Output %v4float %_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 %150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150 %510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510 %_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 %float_0_5 = OpConstant %float 0.5
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float %_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
@ -55,27 +55,27 @@
%18571 = OpLoad %v4float %gl_FragCoord %18571 = OpLoad %v4float %gl_FragCoord
%14008 = OpVectorShuffle %v2float %18571 %18571 0 1 %14008 = OpVectorShuffle %v2float %18571 %18571 0 1
%17656 = OpConvertFToS %v2int %14008 %17656 = OpConvertFToS %v2int %14008
%19279 = OpAccessChain %_ptr_PushConstant_v2int %4930 %int_0 %19279 = OpAccessChain %_ptr_PushConstant_v2int %3052 %int_0
%22822 = OpLoad %v2int %19279 %22822 = OpLoad %v2int %19279
%23236 = OpISub %v2int %17656 %22822 %23236 = OpISub %v2int %17656 %22822
%11599 = OpBitcast %v2uint %23236 %11599 = OpBitcast %v2uint %23236
%6899 = OpLoad %510 %3150 %6899 = OpLoad %510 %4448
%10352 = OpConvertUToF %v2float %11599 %10352 = OpConvertUToF %v2float %11599
%18354 = OpFAdd %v2float %10352 %1566 %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 %20800 = OpLoad %v2float %11863
%24032 = OpFMul %v2float %18354 %20800 %24032 = OpFMul %v2float %18354 %20800
%11997 = OpImageSampleExplicitLod %v4float %6899 %24032 Lod %float_0 %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 %17344 = OpCompositeExtract %float %11997 0
OpStore %18957 %17344 OpStore %18957 %17344
%16378 = OpAccessChain %_ptr_Output_float %5120 %uint_1 %16378 = OpAccessChain %_ptr_Output_float %5312 %uint_1
%15746 = OpCompositeExtract %float %11997 1 %15746 = OpCompositeExtract %float %11997 1
OpStore %16378 %15746 OpStore %16378 %15746
%16379 = OpAccessChain %_ptr_Output_float %5120 %uint_2 %16379 = OpAccessChain %_ptr_Output_float %5312 %uint_2
%15747 = OpCompositeExtract %float %11997 2 %15747 = OpCompositeExtract %float %11997 2
OpStore %16379 %15747 OpStore %16379 %15747
%23294 = OpAccessChain %_ptr_Output_float %5120 %uint_3 %23294 = OpAccessChain %_ptr_Output_float %5312 %uint_3
OpStore %23294 %float_1 OpStore %23294 %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
@ -85,12 +85,12 @@ const uint32_t guest_output_bilinear_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x00006176, 0x00000000, 0x00020011, 0x07230203, 0x00010000, 0x0008000A, 0x00006176, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E, 0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004, 0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x00001400, 0x00030010, 0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x000014C0, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F, 0x0000161F, 0x00000007, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F,
0x00050048, 0x00000404, 0x00000000, 0x00000023, 0x00000010, 0x00050048, 0x00050048, 0x00000404, 0x00000000, 0x00000023, 0x00000010, 0x00050048,
0x00000404, 0x00000001, 0x00000023, 0x00000018, 0x00030047, 0x00000404, 0x00000404, 0x00000001, 0x00000023, 0x00000018, 0x00030047, 0x00000404,
0x00000002, 0x00040047, 0x00001400, 0x0000001E, 0x00000000, 0x00040047, 0x00000002, 0x00040047, 0x000014C0, 0x0000001E, 0x00000000, 0x00040047,
0x00000C4E, 0x00000022, 0x00000000, 0x00040047, 0x00000C4E, 0x00000021, 0x00001160, 0x00000022, 0x00000000, 0x00040047, 0x00001160, 0x00000021,
0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008,
0x00040015, 0x0000000B, 0x00000020, 0x00000000, 0x00040017, 0x00000011, 0x00040015, 0x0000000B, 0x00000020, 0x00000000, 0x00040017, 0x00000011,
0x0000000B, 0x00000002, 0x00030016, 0x0000000D, 0x00000020, 0x00040017, 0x0000000B, 0x00000002, 0x00030016, 0x0000000D, 0x00000020, 0x00040017,
@ -99,13 +99,13 @@ const uint32_t guest_output_bilinear_ps[] = {
0x00000013, 0x0000000D, 0x00000002, 0x00040015, 0x0000000C, 0x00000020, 0x00000013, 0x0000000D, 0x00000002, 0x00040015, 0x0000000C, 0x00000020,
0x00000001, 0x00040017, 0x00000012, 0x0000000C, 0x00000002, 0x0004001E, 0x00000001, 0x00040017, 0x00000012, 0x0000000C, 0x00000002, 0x0004001E,
0x00000404, 0x00000012, 0x00000013, 0x00040020, 0x00000681, 0x00000009, 0x00000404, 0x00000012, 0x00000013, 0x00040020, 0x00000681, 0x00000009,
0x00000404, 0x0004003B, 0x00000681, 0x00001342, 0x00000009, 0x0004002B, 0x00000404, 0x0004003B, 0x00000681, 0x00000BEC, 0x00000009, 0x0004002B,
0x0000000C, 0x00000A0B, 0x00000000, 0x00040020, 0x0000028F, 0x00000009, 0x0000000C, 0x00000A0B, 0x00000000, 0x00040020, 0x0000028F, 0x00000009,
0x00000012, 0x00040020, 0x0000029B, 0x00000003, 0x0000001D, 0x0004003B, 0x00000012, 0x00040020, 0x0000029B, 0x00000003, 0x0000001D, 0x0004003B,
0x0000029B, 0x00001400, 0x00000003, 0x00090019, 0x00000096, 0x0000000D, 0x0000029B, 0x000014C0, 0x00000003, 0x00090019, 0x00000096, 0x0000000D,
0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
0x0003001B, 0x000001FE, 0x00000096, 0x00040020, 0x0000047B, 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, 0x0000000D, 0x000000FC, 0x3F000000, 0x0004002B, 0x0000000C, 0x00000A0E,
0x00000001, 0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x0004002B, 0x00000001, 0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x0004002B,
0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B, 0x0000000B, 0x00000A0A, 0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B, 0x0000000B, 0x00000A0A,
@ -117,21 +117,21 @@ const uint32_t guest_output_bilinear_ps[] = {
0x00000502, 0x000200F8, 0x00006175, 0x0004003D, 0x0000001D, 0x0000488B, 0x00000502, 0x000200F8, 0x00006175, 0x0004003D, 0x0000001D, 0x0000488B,
0x00000C93, 0x0007004F, 0x00000013, 0x000036B8, 0x0000488B, 0x0000488B, 0x00000C93, 0x0007004F, 0x00000013, 0x000036B8, 0x0000488B, 0x0000488B,
0x00000000, 0x00000001, 0x0004006E, 0x00000012, 0x000044F8, 0x000036B8, 0x00000000, 0x00000001, 0x0004006E, 0x00000012, 0x000044F8, 0x000036B8,
0x00050041, 0x0000028F, 0x00004B4F, 0x00001342, 0x00000A0B, 0x0004003D, 0x00050041, 0x0000028F, 0x00004B4F, 0x00000BEC, 0x00000A0B, 0x0004003D,
0x00000012, 0x00005926, 0x00004B4F, 0x00050082, 0x00000012, 0x00005AC4, 0x00000012, 0x00005926, 0x00004B4F, 0x00050082, 0x00000012, 0x00005AC4,
0x000044F8, 0x00005926, 0x0004007C, 0x00000011, 0x00002D4F, 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, 0x00002870, 0x00002D4F, 0x00050081, 0x00000013, 0x000047B2, 0x00002870,
0x0000061E, 0x00050041, 0x00000290, 0x00002E57, 0x00001342, 0x00000A0E, 0x0000061E, 0x00050041, 0x00000290, 0x00002E57, 0x00000BEC, 0x00000A0E,
0x0004003D, 0x00000013, 0x00005140, 0x00002E57, 0x00050085, 0x00000013, 0x0004003D, 0x00000013, 0x00005140, 0x00002E57, 0x00050085, 0x00000013,
0x00005DE0, 0x000047B2, 0x00005140, 0x00070058, 0x0000001D, 0x00002EDD, 0x00005DE0, 0x000047B2, 0x00005140, 0x00070058, 0x0000001D, 0x00002EDD,
0x00001AF3, 0x00005DE0, 0x00000002, 0x00000A0C, 0x00050041, 0x0000028A, 0x00001AF3, 0x00005DE0, 0x00000002, 0x00000A0C, 0x00050041, 0x0000028A,
0x00004A0D, 0x00001400, 0x00000A0A, 0x00050051, 0x0000000D, 0x000043C0, 0x00004A0D, 0x000014C0, 0x00000A0A, 0x00050051, 0x0000000D, 0x000043C0,
0x00002EDD, 0x00000000, 0x0003003E, 0x00004A0D, 0x000043C0, 0x00050041, 0x00002EDD, 0x00000000, 0x0003003E, 0x00004A0D, 0x000043C0, 0x00050041,
0x0000028A, 0x00003FFA, 0x00001400, 0x00000A0D, 0x00050051, 0x0000000D, 0x0000028A, 0x00003FFA, 0x000014C0, 0x00000A0D, 0x00050051, 0x0000000D,
0x00003D82, 0x00002EDD, 0x00000001, 0x0003003E, 0x00003FFA, 0x00003D82, 0x00003D82, 0x00002EDD, 0x00000001, 0x0003003E, 0x00003FFA, 0x00003D82,
0x00050041, 0x0000028A, 0x00003FFB, 0x00001400, 0x00000A10, 0x00050051, 0x00050041, 0x0000028A, 0x00003FFB, 0x000014C0, 0x00000A10, 0x00050051,
0x0000000D, 0x00003D83, 0x00002EDD, 0x00000002, 0x0003003E, 0x00003FFB, 0x0000000D, 0x00003D83, 0x00002EDD, 0x00000002, 0x0003003E, 0x00003FFB,
0x00003D83, 0x00050041, 0x0000028A, 0x00005AFE, 0x00001400, 0x00000A13, 0x00003D83, 0x00050041, 0x0000028A, 0x00005AFE, 0x000014C0, 0x00000A13,
0x0003003E, 0x00005AFE, 0x0000008A, 0x000100FD, 0x00010038, 0x0003003E, 0x00005AFE, 0x0000008A, 0x000100FD, 0x00010038,
}; };

File diff suppressed because one or more lines are too long

View File

@ -8,16 +8,16 @@
OpCapability Shader OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450" %1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5120 OpEntryPoint Fragment %5663 "main" %gl_FragCoord %5334
OpExecutionMode %5663 OriginUpperLeft OpExecutionMode %5663 OriginUpperLeft
OpDecorate %3150 DescriptorSet 0
OpDecorate %3150 Binding 0
OpDecorate %gl_FragCoord BuiltIn FragCoord OpDecorate %gl_FragCoord BuiltIn FragCoord
OpMemberDecorate %_struct_1048 0 Offset 16 OpMemberDecorate %_struct_1048 0 Offset 16
OpMemberDecorate %_struct_1048 1 Offset 24 OpMemberDecorate %_struct_1048 1 Offset 24
OpMemberDecorate %_struct_1048 2 Offset 32 OpMemberDecorate %_struct_1048 2 Offset 32
OpDecorate %_struct_1048 Block OpDecorate %_struct_1048 Block
OpDecorate %5120 Location 0 OpDecorate %5334 Location 0
OpDecorate %5163 DescriptorSet 0
OpDecorate %5163 Binding 0
%void = OpTypeVoid %void = OpTypeVoid
%1282 = OpTypeFunction %void %1282 = OpTypeFunction %void
%float = OpTypeFloat 32 %float = OpTypeFloat 32
@ -26,9 +26,29 @@
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%v3float = OpTypeVector %float 3 %v3float = OpTypeVector %float 3
%v2uint = OpTypeVector %uint 2 %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_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_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_532432441 = OpConstant %uint 532432441
%uint_2129690299 = OpConstant %uint 2129690299 %uint_2129690299 = OpConstant %uint 2129690299
%uint_2129764351 = OpConstant %uint 2129764351 %uint_2129764351 = OpConstant %uint 2129764351
@ -36,57 +56,37 @@
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown %150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150 %510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510 %_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510
%3150 = OpVariable %_ptr_UniformConstant_510 UniformConstant %5163 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int_0 = OpConstant %int 0
%v4float = OpTypeVector %float 4
%int_n1 = OpConstant %int -1 %int_n1 = OpConstant %int -1
%1803 = OpConstantComposite %v2int %int_0 %int_n1 %1803 = OpConstantComposite %v2int %int_0 %int_n1
%int_1 = OpConstant %int 1
%1812 = OpConstantComposite %v2int %int_1 %int_n1 %1812 = OpConstantComposite %v2int %int_1 %int_n1
%1806 = OpConstantComposite %v2int %int_n1 %int_0 %1806 = OpConstantComposite %v2int %int_n1 %int_0
%1824 = OpConstantComposite %v2int %int_1 %int_0 %1824 = OpConstantComposite %v2int %int_1 %int_0
%1818 = OpConstantComposite %v2int %int_n1 %int_1 %1818 = OpConstantComposite %v2int %int_n1 %int_1
%1827 = OpConstantComposite %v2int %int_0 %int_1 %1827 = OpConstantComposite %v2int %int_0 %int_1
%1836 = OpConstantComposite %v2int %int_1 %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 %1833 = OpConstantComposite %v2int %int_2 %int_0
%1839 = OpConstantComposite %v2int %int_0 %int_2 %1839 = OpConstantComposite %v2int %int_0 %int_2
%1845 = OpConstantComposite %v2int %int_2 %int_1 %1845 = OpConstantComposite %v2int %int_2 %int_1
%1848 = OpConstantComposite %v2int %int_1 %int_2 %1848 = OpConstantComposite %v2int %int_1 %int_2
%float_0_03125 = OpConstant %float 0.03125 %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 %1566 = OpConstantComposite %v2float %float_0_5 %float_0_5
%5663 = OpFunction %void None %1282 %5663 = OpFunction %void None %1282
%24949 = OpLabel %24949 = OpLabel
%18571 = OpLoad %v4float %gl_FragCoord %18571 = OpLoad %v4float %gl_FragCoord
%14008 = OpVectorShuffle %v2float %18571 %18571 0 1 %14008 = OpVectorShuffle %v2float %18571 %18571 0 1
%17656 = OpConvertFToS %v2int %14008 %17656 = OpConvertFToS %v2int %14008
%19279 = OpAccessChain %_ptr_PushConstant_v2int %4930 %int_0 %19279 = OpAccessChain %_ptr_PushConstant_v2int %3052 %int_0
%22822 = OpLoad %v2int %19279 %22822 = OpLoad %v2int %19279
%23312 = OpISub %v2int %17656 %22822 %23312 = OpISub %v2int %17656 %22822
%9938 = OpBitcast %v2uint %23312 %9938 = OpBitcast %v2uint %23312
%20997 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_1 %20997 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_1
%22579 = OpLoad %v2float %20997 %22579 = OpLoad %v2float %20997
%13397 = OpBitcast %v2uint %22579 %13397 = OpBitcast %v2uint %22579
%12762 = OpVectorTimesScalar %v2float %22579 %float_0_5 %12762 = OpVectorTimesScalar %v2float %22579 %float_0_5
%24291 = OpFSub %v2float %12762 %1566 %24291 = OpFSub %v2float %12762 %1566
%20131 = OpBitcast %v2uint %24291 %20131 = OpBitcast %v2uint %24291
%18575 = OpAccessChain %_ptr_PushConstant_float %4930 %int_2 %18575 = OpAccessChain %_ptr_PushConstant_float %3052 %int_2
%22009 = OpLoad %float %18575 %22009 = OpLoad %float %18575
%18454 = OpBitcast %uint %22009 %18454 = OpBitcast %uint %22009
%12011 = OpConvertUToF %v2float %9938 %12011 = OpConvertUToF %v2float %9938
@ -98,7 +98,7 @@
%16290 = OpFSub %v2float %24878 %12719 %16290 = OpFSub %v2float %24878 %12719
%17064 = OpConvertFToS %v2int %12719 %17064 = OpConvertFToS %v2int %12719
%20663 = OpIAdd %v2int %17064 %1803 %20663 = OpIAdd %v2int %17064 %1803
%16731 = OpLoad %510 %3150 %16731 = OpLoad %510 %5163
%23618 = OpImage %150 %16731 %23618 = OpImage %150 %16731
%16595 = OpImageFetch %v4float %23618 %20663 Lod %int_0 %16595 = OpImageFetch %v4float %23618 %20663 Lod %int_0
%15454 = OpIAdd %v2int %17064 %1806 %15454 = OpIAdd %v2int %17064 %1806
@ -415,13 +415,13 @@
%15975 = OpFAdd %float %18176 %9469 %15975 = OpFAdd %float %18176 %9469
%6921 = OpFMul %float %15975 %9442 %6921 = OpFMul %float %15975 %9442
%24941 = OpExtInst %float %1 FClamp %6921 %float_0 %float_1 %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 OpStore %20577 %15218
%19732 = OpAccessChain %_ptr_Output_float %5120 %uint_1 %19732 = OpAccessChain %_ptr_Output_float %5334 %uint_1
OpStore %19732 %15219 OpStore %19732 %15219
%19656 = OpAccessChain %_ptr_Output_float %5120 %uint_2 %19656 = OpAccessChain %_ptr_Output_float %5334 %uint_2
OpStore %19656 %24941 OpStore %19656 %24941
%10445 = OpLoad %v4float %5120 %10445 = OpLoad %v4float %5334
%9111 = OpVectorShuffle %v3float %10445 %10445 0 1 2 %9111 = OpVectorShuffle %v3float %10445 %10445 0 1 2
%17911 = OpExtInst %v3float %1 Sqrt %9111 %17911 = OpExtInst %v3float %1 Sqrt %9111
%7131 = OpCompositeExtract %float %17911 0 %7131 = OpCompositeExtract %float %17911 0
@ -430,7 +430,7 @@
OpStore %19732 %22435 OpStore %19732 %22435
%22131 = OpCompositeExtract %float %17911 2 %22131 = OpCompositeExtract %float %17911 2
OpStore %19656 %22131 OpStore %19656 %22131
%23294 = OpAccessChain %_ptr_Output_float %5120 %uint_3 %23294 = OpAccessChain %_ptr_Output_float %5334 %uint_3
OpStore %23294 %float_1 OpStore %23294 %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
@ -440,63 +440,63 @@ const uint32_t guest_output_ffx_cas_resample_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x0000627D, 0x00000000, 0x00020011, 0x07230203, 0x00010000, 0x0008000A, 0x0000627D, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E, 0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004, 0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x00001400, 0x00030010, 0x0000161F, 0x6E69616D, 0x00000000, 0x00000C93, 0x000014D6, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C4E, 0x00000022, 0x00000000, 0x0000161F, 0x00000007, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F,
0x00040047, 0x00000C4E, 0x00000021, 0x00000000, 0x00040047, 0x00000C93, 0x00050048, 0x00000418, 0x00000000, 0x00000023, 0x00000010, 0x00050048,
0x0000000B, 0x0000000F, 0x00050048, 0x00000418, 0x00000000, 0x00000023, 0x00000418, 0x00000001, 0x00000023, 0x00000018, 0x00050048, 0x00000418,
0x00000010, 0x00050048, 0x00000418, 0x00000001, 0x00000023, 0x00000018, 0x00000002, 0x00000023, 0x00000020, 0x00030047, 0x00000418, 0x00000002,
0x00050048, 0x00000418, 0x00000002, 0x00000023, 0x00000020, 0x00030047, 0x00040047, 0x000014D6, 0x0000001E, 0x00000000, 0x00040047, 0x0000142B,
0x00000418, 0x00000002, 0x00040047, 0x00001400, 0x0000001E, 0x00000000, 0x00000022, 0x00000000, 0x00040047, 0x0000142B, 0x00000021, 0x00000000,
0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00030016, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00030016,
0x0000000D, 0x00000020, 0x00040015, 0x0000000B, 0x00000020, 0x00000000, 0x0000000D, 0x00000020, 0x00040015, 0x0000000B, 0x00000020, 0x00000000,
0x00040015, 0x0000000C, 0x00000020, 0x00000001, 0x00040017, 0x00000012, 0x00040015, 0x0000000C, 0x00000020, 0x00000001, 0x00040017, 0x00000012,
0x0000000C, 0x00000002, 0x00040017, 0x00000018, 0x0000000D, 0x00000003, 0x0000000C, 0x00000002, 0x00040017, 0x00000018, 0x0000000D, 0x00000003,
0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x0004002B, 0x0000000D, 0x00040017, 0x00000011, 0x0000000B, 0x00000002, 0x00040017, 0x0000001D,
0x00000A0C, 0x00000000, 0x0004002B, 0x0000000D, 0x0000008A, 0x3F800000, 0x0000000D, 0x00000004, 0x00040020, 0x0000029A, 0x00000001, 0x0000001D,
0x0004002B, 0x0000000B, 0x00000A0D, 0x00000001, 0x0004002B, 0x0000000B, 0x0004003B, 0x0000029A, 0x00000C93, 0x00000001, 0x00040017, 0x00000013,
0x0000020D, 0x1FBC4639, 0x0004002B, 0x0000000B, 0x00000344, 0x7EF07EBB, 0x0000000D, 0x00000002, 0x0005001E, 0x00000418, 0x00000012, 0x00000013,
0x0004002B, 0x0000000B, 0x000000B2, 0x7EF19FFF, 0x0004002B, 0x0000000D, 0x0000000D, 0x00040020, 0x00000695, 0x00000009, 0x00000418, 0x0004003B,
0x00000019, 0x40000000, 0x00090019, 0x00000096, 0x0000000D, 0x00000001, 0x00000695, 0x00000BEC, 0x00000009, 0x0004002B, 0x0000000C, 0x00000A0B,
0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001B, 0x00000000, 0x00040020, 0x0000028F, 0x00000009, 0x00000012, 0x0004002B,
0x000001FE, 0x00000096, 0x00040020, 0x0000047B, 0x00000000, 0x000001FE, 0x0000000C, 0x00000A0E, 0x00000001, 0x00040020, 0x00000290, 0x00000009,
0x0004003B, 0x0000047B, 0x00000C4E, 0x00000000, 0x0004002B, 0x0000000C, 0x00000013, 0x0004002B, 0x0000000D, 0x000000FC, 0x3F000000, 0x0004002B,
0x00000A0B, 0x00000000, 0x00040017, 0x0000001D, 0x0000000D, 0x00000004, 0x0000000C, 0x00000A11, 0x00000002, 0x00040020, 0x0000028A, 0x00000009,
0x0004002B, 0x0000000C, 0x00000A08, 0xFFFFFFFF, 0x0005002C, 0x00000012, 0x0000000D, 0x0004002B, 0x0000000D, 0x00000A0C, 0x00000000, 0x0004002B,
0x0000070B, 0x00000A0B, 0x00000A08, 0x0004002B, 0x0000000C, 0x00000A0E, 0x0000000B, 0x00000A0A, 0x00000000, 0x00040020, 0x0000029B, 0x00000003,
0x00000001, 0x0005002C, 0x00000012, 0x00000714, 0x00000A0E, 0x00000A08, 0x0000001D, 0x0004003B, 0x0000029B, 0x000014D6, 0x00000003, 0x00040020,
0x0005002C, 0x00000012, 0x0000070E, 0x00000A08, 0x00000A0B, 0x0005002C, 0x0000028B, 0x00000003, 0x0000000D, 0x0004002B, 0x0000000B, 0x00000A0D,
0x00000012, 0x00000720, 0x00000A0E, 0x00000A0B, 0x0005002C, 0x00000012, 0x00000001, 0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B,
0x0000071A, 0x00000A08, 0x00000A0E, 0x0005002C, 0x00000012, 0x00000723, 0x0000000D, 0x0000008A, 0x3F800000, 0x0004002B, 0x0000000B, 0x00000A13,
0x00000A0B, 0x00000A0E, 0x0005002C, 0x00000012, 0x0000072C, 0x00000A0E, 0x00000003, 0x0004002B, 0x0000000B, 0x0000020D, 0x1FBC4639, 0x0004002B,
0x00000A0E, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x0004002B, 0x0000000B, 0x00000344, 0x7EF07EBB, 0x0004002B, 0x0000000B, 0x000000B2,
0x0000000B, 0x00000A10, 0x00000002, 0x00040017, 0x00000013, 0x0000000D, 0x7EF19FFF, 0x0004002B, 0x0000000D, 0x00000019, 0x40000000, 0x00090019,
0x00000002, 0x0004002B, 0x0000000C, 0x00000A11, 0x00000002, 0x0005002C, 0x00000096, 0x0000000D, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
0x00000012, 0x00000729, 0x00000A11, 0x00000A0B, 0x0005002C, 0x00000012, 0x00000001, 0x00000000, 0x0003001B, 0x000001FE, 0x00000096, 0x00040020,
0x0000072F, 0x00000A0B, 0x00000A11, 0x0005002C, 0x00000012, 0x00000735, 0x0000047B, 0x00000000, 0x000001FE, 0x0004003B, 0x0000047B, 0x0000142B,
0x00000A11, 0x00000A0E, 0x0005002C, 0x00000012, 0x00000738, 0x00000A0E, 0x00000000, 0x0004002B, 0x0000000C, 0x00000A08, 0xFFFFFFFF, 0x0005002C,
0x00000A11, 0x0004002B, 0x0000000D, 0x000002C4, 0x3D000000, 0x00040020, 0x00000012, 0x0000070B, 0x00000A0B, 0x00000A08, 0x0005002C, 0x00000012,
0x0000029A, 0x00000001, 0x0000001D, 0x0004003B, 0x0000029A, 0x00000C93, 0x00000714, 0x00000A0E, 0x00000A08, 0x0005002C, 0x00000012, 0x0000070E,
0x00000001, 0x0005001E, 0x00000418, 0x00000012, 0x00000013, 0x0000000D, 0x00000A08, 0x00000A0B, 0x0005002C, 0x00000012, 0x00000720, 0x00000A0E,
0x00040020, 0x00000695, 0x00000009, 0x00000418, 0x0004003B, 0x00000695, 0x00000A0B, 0x0005002C, 0x00000012, 0x0000071A, 0x00000A08, 0x00000A0E,
0x00001342, 0x00000009, 0x00040020, 0x0000028F, 0x00000009, 0x00000012, 0x0005002C, 0x00000012, 0x00000723, 0x00000A0B, 0x00000A0E, 0x0005002C,
0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x0004002B, 0x0000000D, 0x00000012, 0x0000072C, 0x00000A0E, 0x00000A0E, 0x0005002C, 0x00000012,
0x000000FC, 0x3F000000, 0x00040020, 0x0000028A, 0x00000009, 0x0000000D, 0x00000729, 0x00000A11, 0x00000A0B, 0x0005002C, 0x00000012, 0x0000072F,
0x00040020, 0x0000029B, 0x00000003, 0x0000001D, 0x0004003B, 0x0000029B, 0x00000A0B, 0x00000A11, 0x0005002C, 0x00000012, 0x00000735, 0x00000A11,
0x00001400, 0x00000003, 0x00040020, 0x0000028B, 0x00000003, 0x0000000D, 0x00000A0E, 0x0005002C, 0x00000012, 0x00000738, 0x00000A0E, 0x00000A11,
0x0004002B, 0x0000000B, 0x00000A13, 0x00000003, 0x0005002C, 0x00000013, 0x0004002B, 0x0000000D, 0x000002C4, 0x3D000000, 0x0005002C, 0x00000013,
0x0000061E, 0x000000FC, 0x000000FC, 0x00050036, 0x00000008, 0x0000161F, 0x0000061E, 0x000000FC, 0x000000FC, 0x00050036, 0x00000008, 0x0000161F,
0x00000000, 0x00000502, 0x000200F8, 0x00006175, 0x0004003D, 0x0000001D, 0x00000000, 0x00000502, 0x000200F8, 0x00006175, 0x0004003D, 0x0000001D,
0x0000488B, 0x00000C93, 0x0007004F, 0x00000013, 0x000036B8, 0x0000488B, 0x0000488B, 0x00000C93, 0x0007004F, 0x00000013, 0x000036B8, 0x0000488B,
0x0000488B, 0x00000000, 0x00000001, 0x0004006E, 0x00000012, 0x000044F8, 0x0000488B, 0x00000000, 0x00000001, 0x0004006E, 0x00000012, 0x000044F8,
0x000036B8, 0x00050041, 0x0000028F, 0x00004B4F, 0x00001342, 0x00000A0B, 0x000036B8, 0x00050041, 0x0000028F, 0x00004B4F, 0x00000BEC, 0x00000A0B,
0x0004003D, 0x00000012, 0x00005926, 0x00004B4F, 0x00050082, 0x00000012, 0x0004003D, 0x00000012, 0x00005926, 0x00004B4F, 0x00050082, 0x00000012,
0x00005B10, 0x000044F8, 0x00005926, 0x0004007C, 0x00000011, 0x000026D2, 0x00005B10, 0x000044F8, 0x00005926, 0x0004007C, 0x00000011, 0x000026D2,
0x00005B10, 0x00050041, 0x00000290, 0x00005205, 0x00001342, 0x00000A0E, 0x00005B10, 0x00050041, 0x00000290, 0x00005205, 0x00000BEC, 0x00000A0E,
0x0004003D, 0x00000013, 0x00005833, 0x00005205, 0x0004007C, 0x00000011, 0x0004003D, 0x00000013, 0x00005833, 0x00005205, 0x0004007C, 0x00000011,
0x00003455, 0x00005833, 0x0005008E, 0x00000013, 0x000031DA, 0x00005833, 0x00003455, 0x00005833, 0x0005008E, 0x00000013, 0x000031DA, 0x00005833,
0x000000FC, 0x00050083, 0x00000013, 0x00005EE3, 0x000031DA, 0x0000061E, 0x000000FC, 0x00050083, 0x00000013, 0x00005EE3, 0x000031DA, 0x0000061E,
0x0004007C, 0x00000011, 0x00004EA3, 0x00005EE3, 0x00050041, 0x0000028A, 0x0004007C, 0x00000011, 0x00004EA3, 0x00005EE3, 0x00050041, 0x0000028A,
0x0000488F, 0x00001342, 0x00000A11, 0x0004003D, 0x0000000D, 0x000055F9, 0x0000488F, 0x00000BEC, 0x00000A11, 0x0004003D, 0x0000000D, 0x000055F9,
0x0000488F, 0x0004007C, 0x0000000B, 0x00004816, 0x000055F9, 0x00040070, 0x0000488F, 0x0004007C, 0x0000000B, 0x00004816, 0x000055F9, 0x00040070,
0x00000013, 0x00002EEB, 0x000026D2, 0x0004007C, 0x00000013, 0x00004BF9, 0x00000013, 0x00002EEB, 0x000026D2, 0x0004007C, 0x00000013, 0x00004BF9,
0x00003455, 0x00050085, 0x00000013, 0x000042F3, 0x00002EEB, 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, 0x00000001, 0x00000008, 0x0000612E, 0x00050083, 0x00000013, 0x00003FA2,
0x0000612E, 0x000031AF, 0x0004006E, 0x00000012, 0x000042A8, 0x000031AF, 0x0000612E, 0x000031AF, 0x0004006E, 0x00000012, 0x000042A8, 0x000031AF,
0x00050080, 0x00000012, 0x000050B7, 0x000042A8, 0x0000070B, 0x0004003D, 0x00050080, 0x00000012, 0x000050B7, 0x000042A8, 0x0000070B, 0x0004003D,
0x000001FE, 0x0000415B, 0x00000C4E, 0x00040064, 0x00000096, 0x00005C42, 0x000001FE, 0x0000415B, 0x0000142B, 0x00040064, 0x00000096, 0x00005C42,
0x0000415B, 0x0007005F, 0x0000001D, 0x000040D3, 0x00005C42, 0x000050B7, 0x0000415B, 0x0007005F, 0x0000001D, 0x000040D3, 0x00005C42, 0x000050B7,
0x00000002, 0x00000A0B, 0x00050080, 0x00000012, 0x00003C5E, 0x000042A8, 0x00000002, 0x00000A0B, 0x00050080, 0x00000012, 0x00003C5E, 0x000042A8,
0x0000070E, 0x00040064, 0x00000096, 0x00004DF7, 0x0000415B, 0x0007005F, 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, 0x00004700, 0x000024FD, 0x00050085, 0x0000000D, 0x00001B09,
0x00003E67, 0x000024E2, 0x0008000C, 0x0000000D, 0x0000616D, 0x00000001, 0x00003E67, 0x000024E2, 0x0008000C, 0x0000000D, 0x0000616D, 0x00000001,
0x0000002B, 0x00001B09, 0x00000A0C, 0x0000008A, 0x00050041, 0x0000028B, 0x0000002B, 0x00001B09, 0x00000A0C, 0x0000008A, 0x00050041, 0x0000028B,
0x00005061, 0x00001400, 0x00000A0A, 0x0003003E, 0x00005061, 0x00003B72, 0x00005061, 0x000014D6, 0x00000A0A, 0x0003003E, 0x00005061, 0x00003B72,
0x00050041, 0x0000028B, 0x00004D14, 0x00001400, 0x00000A0D, 0x0003003E, 0x00050041, 0x0000028B, 0x00004D14, 0x000014D6, 0x00000A0D, 0x0003003E,
0x00004D14, 0x00003B73, 0x00050041, 0x0000028B, 0x00004CC8, 0x00001400, 0x00004D14, 0x00003B73, 0x00050041, 0x0000028B, 0x00004CC8, 0x000014D6,
0x00000A10, 0x0003003E, 0x00004CC8, 0x0000616D, 0x0004003D, 0x0000001D, 0x00000A10, 0x0003003E, 0x00004CC8, 0x0000616D, 0x0004003D, 0x0000001D,
0x000028CD, 0x00001400, 0x0008004F, 0x00000018, 0x00002397, 0x000028CD, 0x000028CD, 0x000014D6, 0x0008004F, 0x00000018, 0x00002397, 0x000028CD,
0x000028CD, 0x00000000, 0x00000001, 0x00000002, 0x0006000C, 0x00000018, 0x000028CD, 0x00000000, 0x00000001, 0x00000002, 0x0006000C, 0x00000018,
0x000045F7, 0x00000001, 0x0000001F, 0x00002397, 0x00050051, 0x0000000D, 0x000045F7, 0x00000001, 0x0000001F, 0x00002397, 0x00050051, 0x0000000D,
0x00001BDB, 0x000045F7, 0x00000000, 0x0003003E, 0x00005061, 0x00001BDB, 0x00001BDB, 0x000045F7, 0x00000000, 0x0003003E, 0x00005061, 0x00001BDB,
0x00050051, 0x0000000D, 0x000057A3, 0x000045F7, 0x00000001, 0x0003003E, 0x00050051, 0x0000000D, 0x000057A3, 0x000045F7, 0x00000001, 0x0003003E,
0x00004D14, 0x000057A3, 0x00050051, 0x0000000D, 0x00005673, 0x000045F7, 0x00004D14, 0x000057A3, 0x00050051, 0x0000000D, 0x00005673, 0x000045F7,
0x00000002, 0x0003003E, 0x00004CC8, 0x00005673, 0x00050041, 0x0000028B, 0x00000002, 0x0003003E, 0x00004CC8, 0x00005673, 0x00050041, 0x0000028B,
0x00005AFE, 0x00001400, 0x00000A13, 0x0003003E, 0x00005AFE, 0x0000008A, 0x00005AFE, 0x000014D6, 0x00000A13, 0x0003003E, 0x00005AFE, 0x0000008A,
0x000100FD, 0x00010038, 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 OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450" %1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %5663 "main" %5120 %gl_FragCoord OpEntryPoint Fragment %5663 "main" %5777 %gl_FragCoord
OpExecutionMode %5663 OriginUpperLeft OpExecutionMode %5663 OriginUpperLeft
OpDecorate %3150 DescriptorSet 0
OpDecorate %3150 Binding 0
OpMemberDecorate %_struct_1030 0 Offset 16 OpMemberDecorate %_struct_1030 0 Offset 16
OpMemberDecorate %_struct_1030 1 Offset 24 OpMemberDecorate %_struct_1030 1 Offset 24
OpDecorate %_struct_1030 Block OpDecorate %_struct_1030 Block
OpDecorate %5120 Location 0 OpDecorate %5777 Location 0
OpDecorate %gl_FragCoord BuiltIn FragCoord OpDecorate %gl_FragCoord BuiltIn FragCoord
OpDecorate %5056 DescriptorSet 0
OpDecorate %5056 Binding 0
%void = OpTypeVoid %void = OpTypeVoid
%1282 = OpTypeFunction %void %1282 = OpTypeFunction %void
%float = OpTypeFloat 32 %float = OpTypeFloat 32
@ -27,27 +27,41 @@
%bool = OpTypeBool %bool = OpTypeBool
%v2uint = OpTypeVector %uint 2 %v2uint = OpTypeVector %uint 2
%v4uint = OpTypeVector %uint 4 %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_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_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_2129690299 = OpConstant %uint 2129690299
%uint_1597275508 = OpConstant %uint 1597275508 %uint_1597275508 = OpConstant %uint 1597275508
%uint_1 = OpConstant %uint 1
%150 = OpTypeImage %float 2D 0 0 0 1 Unknown %150 = OpTypeImage %float 2D 0 0 0 1 Unknown
%510 = OpTypeSampledImage %150 %510 = OpTypeSampledImage %150
%_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510 %_ptr_UniformConstant_510 = OpTypePointer UniformConstant %510
%3150 = OpVariable %_ptr_UniformConstant_510 UniformConstant %5056 = OpVariable %_ptr_UniformConstant_510 UniformConstant
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%uint_0 = OpConstant %uint 0
%float_0_400000006 = OpConstant %float 0.400000006 %float_0_400000006 = OpConstant %float 0.400000006
%float_n1 = OpConstant %float -1
%float_1_5625 = OpConstant %float 1.5625 %float_1_5625 = OpConstant %float 1.5625
%float_n0_5625 = OpConstant %float -0.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_3_05175781en05 = OpConstant %float 3.05175781e-05
%float_n0_5 = OpConstant %float -0.5 %float_n0_5 = OpConstant %float -0.5
%float_n0_289999992 = OpConstant %float -0.289999992 %float_n0_289999992 = OpConstant %float -0.289999992
@ -57,44 +71,30 @@
%890 = OpConstantComposite %v2float %float_0 %float_1 %890 = OpConstantComposite %v2float %float_0 %float_1
%2628 = OpConstantComposite %v2float %float_n1 %float_0 %2628 = OpConstantComposite %v2float %float_n1 %float_0
%769 = OpConstantComposite %v2float %float_1 %float_1 %769 = OpConstantComposite %v2float %float_1 %float_1
%float_2 = OpConstant %float 2
%426 = OpConstantComposite %v2float %float_2 %float_1 %426 = OpConstantComposite %v2float %float_2 %float_1
%2981 = OpConstantComposite %v2float %float_2 %float_0 %2981 = OpConstantComposite %v2float %float_2 %float_0
%312 = OpConstantComposite %v2float %float_1 %float_0 %312 = OpConstantComposite %v2float %float_1 %float_0
%313 = OpConstantComposite %v2float %float_1 %float_2 %313 = OpConstantComposite %v2float %float_1 %float_2
%1823 = OpConstantComposite %v2float %float_0 %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 %1566 = OpConstantComposite %v2float %float_0_5 %float_0_5
%325 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5 %325 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
%10264 = OpUndef %v2float %10264 = OpUndef %v2float
%5663 = OpFunction %void None %1282 %5663 = OpFunction %void None %1282
%23915 = OpLabel %23915 = OpLabel
%8250 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_0 %8250 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_0
%6959 = OpLoad %v2float %8250 %6959 = OpLoad %v2float %8250
%13397 = OpBitcast %v2uint %6959 %13397 = OpBitcast %v2uint %6959
%12762 = OpVectorTimesScalar %v2float %6959 %float_0_5 %12762 = OpVectorTimesScalar %v2float %6959 %float_0_5
%24291 = OpFSub %v2float %12762 %1566 %24291 = OpFSub %v2float %12762 %1566
%20131 = OpBitcast %v2uint %24291 %20131 = OpBitcast %v2uint %24291
%17720 = OpAccessChain %_ptr_PushConstant_v2float %4930 %int_1 %17720 = OpAccessChain %_ptr_PushConstant_v2float %3052 %int_1
%11122 = OpLoad %v2float %17720 %11122 = OpLoad %v2float %17720
%8543 = OpVectorShuffle %v4float %11122 %11122 0 1 0 1 %8543 = OpVectorShuffle %v4float %11122 %11122 0 1 0 1
%11088 = OpFMul %v4float %1284 %8543 %11088 = OpFMul %v4float %1284 %8543
%12841 = OpBitcast %v4uint %11088 %12841 = OpBitcast %v4uint %11088
%16717 = OpFMul %v4float %2460 %8543 %16717 = OpFMul %v4float %2460 %8543
%11573 = OpBitcast %v4uint %16717 %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 %20680 = OpLoad %float %20359
%17728 = OpFMul %float %float_4 %20680 %17728 = OpFMul %float %float_4 %20680
%22839 = OpBitcast %uint %17728 %22839 = OpBitcast %uint %17728
@ -131,7 +131,7 @@
%8254 = OpCompositeConstruct %v2uint %uint_0 %22839 %8254 = OpCompositeConstruct %v2uint %uint_0 %22839
%15702 = OpBitcast %v2float %8254 %15702 = OpBitcast %v2float %8254
%15604 = OpFAdd %v2float %11859 %15702 %15604 = OpFAdd %v2float %11859 %15702
%15570 = OpLoad %510 %3150 %15570 = OpLoad %510 %5056
%15045 = OpImageGather %v4float %15570 %11859 %int_0 %15045 = OpImageGather %v4float %15570 %11859 %int_0
%21315 = OpImageGather %v4float %15570 %11859 %int_1 %21315 = OpImageGather %v4float %15570 %11859 %int_1
%7872 = OpImageGather %v4float %15570 %11859 %int_2 %7872 = OpImageGather %v4float %15570 %11859 %int_2
@ -763,16 +763,16 @@
%17132 = OpFMul %v3float %7049 %16189 %17132 = OpFMul %v3float %7049 %16189
%18007 = OpExtInst %v3float %1 FMax %10578 %17132 %18007 = OpExtInst %v3float %1 FMax %10578 %17132
%12443 = OpExtInst %v3float %1 FMin %18959 %18007 %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 %24795 = OpCompositeExtract %float %12443 0
OpStore %9794 %24795 OpStore %9794 %24795
%16378 = OpAccessChain %_ptr_Output_float %5120 %uint_1 %16378 = OpAccessChain %_ptr_Output_float %5777 %uint_1
%15746 = OpCompositeExtract %float %12443 1 %15746 = OpCompositeExtract %float %12443 1
OpStore %16378 %15746 OpStore %16378 %15746
%16379 = OpAccessChain %_ptr_Output_float %5120 %uint_2 %16379 = OpAccessChain %_ptr_Output_float %5777 %uint_2
%15747 = OpCompositeExtract %float %12443 2 %15747 = OpCompositeExtract %float %12443 2
OpStore %16379 %15747 OpStore %16379 %15747
%23294 = OpAccessChain %_ptr_Output_float %5120 %uint_3 %23294 = OpAccessChain %_ptr_Output_float %5777 %uint_3
OpStore %23294 %float_1 OpStore %23294 %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
@ -782,69 +782,69 @@ const uint32_t guest_output_ffx_fsr_easu_ps[] = {
0x07230203, 0x00010000, 0x0008000A, 0x0000617C, 0x00000000, 0x00020011, 0x07230203, 0x00010000, 0x0008000A, 0x0000617C, 0x00000000, 0x00020011,
0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E, 0x00000001, 0x0006000B, 0x00000001, 0x4C534C47, 0x6474732E, 0x3035342E,
0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004, 0x00000000, 0x0003000E, 0x00000000, 0x00000001, 0x0007000F, 0x00000004,
0x0000161F, 0x6E69616D, 0x00000000, 0x00001400, 0x00000C93, 0x00030010, 0x0000161F, 0x6E69616D, 0x00000000, 0x00001691, 0x00000C93, 0x00030010,
0x0000161F, 0x00000007, 0x00040047, 0x00000C4E, 0x00000022, 0x00000000, 0x0000161F, 0x00000007, 0x00050048, 0x00000406, 0x00000000, 0x00000023,
0x00040047, 0x00000C4E, 0x00000021, 0x00000000, 0x00050048, 0x00000406, 0x00000010, 0x00050048, 0x00000406, 0x00000001, 0x00000023, 0x00000018,
0x00000000, 0x00000023, 0x00000010, 0x00050048, 0x00000406, 0x00000001, 0x00030047, 0x00000406, 0x00000002, 0x00040047, 0x00001691, 0x0000001E,
0x00000023, 0x00000018, 0x00030047, 0x00000406, 0x00000002, 0x00040047, 0x00000000, 0x00040047, 0x00000C93, 0x0000000B, 0x0000000F, 0x00040047,
0x00001400, 0x0000001E, 0x00000000, 0x00040047, 0x00000C93, 0x0000000B, 0x000013C0, 0x00000022, 0x00000000, 0x00040047, 0x000013C0, 0x00000021,
0x0000000F, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008, 0x00000000, 0x00020013, 0x00000008, 0x00030021, 0x00000502, 0x00000008,
0x00030016, 0x0000000D, 0x00000020, 0x00040017, 0x00000013, 0x0000000D, 0x00030016, 0x0000000D, 0x00000020, 0x00040017, 0x00000013, 0x0000000D,
0x00000002, 0x00040017, 0x00000018, 0x0000000D, 0x00000003, 0x00040017, 0x00000002, 0x00040017, 0x00000018, 0x0000000D, 0x00000003, 0x00040017,
0x0000001D, 0x0000000D, 0x00000004, 0x00040015, 0x0000000B, 0x00000020, 0x0000001D, 0x0000000D, 0x00000004, 0x00040015, 0x0000000B, 0x00000020,
0x00000000, 0x00020014, 0x00000009, 0x00040017, 0x00000011, 0x0000000B, 0x00000000, 0x00020014, 0x00000009, 0x00040017, 0x00000011, 0x0000000B,
0x00000002, 0x00040017, 0x00000017, 0x0000000B, 0x00000004, 0x0004002B, 0x00000002, 0x00040017, 0x00000017, 0x0000000B, 0x00000004, 0x0004001E,
0x0000000D, 0x0000008A, 0x3F800000, 0x0004002B, 0x0000000D, 0x00000A0C, 0x00000406, 0x00000013, 0x00000013, 0x00040020, 0x00000683, 0x00000009,
0x00000000, 0x0004002B, 0x0000000B, 0x00000344, 0x7EF07EBB, 0x0004002B, 0x00000406, 0x0004003B, 0x00000683, 0x00000BEC, 0x00000009, 0x00040015,
0x0000000B, 0x00000661, 0x5F347D74, 0x0004002B, 0x0000000B, 0x00000A0D, 0x0000000C, 0x00000020, 0x00000001, 0x0004002B, 0x0000000C, 0x00000A0B,
0x00000001, 0x00090019, 0x00000096, 0x0000000D, 0x00000001, 0x00000000, 0x00000000, 0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x0004002B,
0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0003001B, 0x000001FE, 0x0000000D, 0x000000FC, 0x3F000000, 0x0004002B, 0x0000000D, 0x0000008A,
0x00000096, 0x00040020, 0x0000047B, 0x00000000, 0x000001FE, 0x0004003B, 0x3F800000, 0x0004002B, 0x0000000D, 0x00000341, 0xBF800000, 0x0007002C,
0x0000047B, 0x00000C4E, 0x00000000, 0x00040015, 0x0000000C, 0x00000020, 0x0000001D, 0x00000504, 0x0000008A, 0x0000008A, 0x0000008A, 0x00000341,
0x00000001, 0x0004002B, 0x0000000C, 0x00000A0B, 0x00000000, 0x0004002B, 0x0004002B, 0x0000000C, 0x00000A0E, 0x00000001, 0x0004002B, 0x0000000D,
0x0000000C, 0x00000A0E, 0x00000001, 0x0004002B, 0x0000000C, 0x00000A11, 0x00000019, 0x40000000, 0x0007002C, 0x0000001D, 0x0000099C, 0x00000341,
0x00000002, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x0004002B, 0x00000019, 0x0000008A, 0x00000019, 0x0004002B, 0x0000000D, 0x00000A0C,
0x0000000D, 0x00000A93, 0x3ECCCCCD, 0x0004002B, 0x0000000D, 0x00000341, 0x00000000, 0x0004002B, 0x0000000D, 0x00000B69, 0x40800000, 0x0004002B,
0xBF800000, 0x0004002B, 0x0000000D, 0x000004B3, 0x3FC80000, 0x0004002B, 0x0000000B, 0x00000A0D, 0x00000001, 0x00040020, 0x0000028A, 0x00000009,
0x0000000D, 0x000000B4, 0xBF100000, 0x0004002B, 0x0000000D, 0x000000FC, 0x0000000D, 0x0004002B, 0x0000000B, 0x00000A0A, 0x00000000, 0x00040020,
0x3F000000, 0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B, 0x0000029A, 0x00000003, 0x0000001D, 0x0004003B, 0x0000029A, 0x00001691,
0x0000000B, 0x00000A13, 0x00000003, 0x0004002B, 0x0000000D, 0x00000738, 0x00000003, 0x00040020, 0x0000029B, 0x00000001, 0x0000001D, 0x0004003B,
0x38000000, 0x0004002B, 0x0000000D, 0x000003B3, 0xBF000000, 0x0004002B, 0x0000029B, 0x00000C93, 0x00000001, 0x00040020, 0x0000028B, 0x00000003,
0x0000000D, 0x0000075D, 0xBE947AE1, 0x0005002C, 0x00000013, 0x00000379, 0x0000000D, 0x0004002B, 0x0000000B, 0x00000A10, 0x00000002, 0x0004002B,
0x00000A0C, 0x00000341, 0x0005002C, 0x00000013, 0x00000300, 0x0000008A, 0x0000000B, 0x00000A13, 0x00000003, 0x0004002B, 0x0000000B, 0x00000344,
0x00000341, 0x0005002C, 0x00000013, 0x00000049, 0x00000341, 0x0000008A, 0x7EF07EBB, 0x0004002B, 0x0000000B, 0x00000661, 0x5F347D74, 0x00090019,
0x0005002C, 0x00000013, 0x0000037A, 0x00000A0C, 0x0000008A, 0x0005002C, 0x00000096, 0x0000000D, 0x00000001, 0x00000000, 0x00000000, 0x00000000,
0x00000013, 0x00000A44, 0x00000341, 0x00000A0C, 0x0005002C, 0x00000013, 0x00000001, 0x00000000, 0x0003001B, 0x000001FE, 0x00000096, 0x00040020,
0x00000301, 0x0000008A, 0x0000008A, 0x0004002B, 0x0000000D, 0x00000019, 0x0000047B, 0x00000000, 0x000001FE, 0x0004003B, 0x0000047B, 0x000013C0,
0x40000000, 0x0005002C, 0x00000013, 0x000001AA, 0x00000019, 0x0000008A, 0x00000000, 0x0004002B, 0x0000000C, 0x00000A11, 0x00000002, 0x0004002B,
0x0005002C, 0x00000013, 0x00000BA5, 0x00000019, 0x00000A0C, 0x0005002C, 0x0000000D, 0x00000A93, 0x3ECCCCCD, 0x0004002B, 0x0000000D, 0x000004B3,
0x00000013, 0x00000138, 0x0000008A, 0x00000A0C, 0x0005002C, 0x00000013, 0x3FC80000, 0x0004002B, 0x0000000D, 0x000000B4, 0xBF100000, 0x0004002B,
0x00000139, 0x0000008A, 0x00000019, 0x0005002C, 0x00000013, 0x0000071F, 0x0000000D, 0x00000738, 0x38000000, 0x0004002B, 0x0000000D, 0x000003B3,
0x00000A0C, 0x00000019, 0x0004001E, 0x00000406, 0x00000013, 0x00000013, 0xBF000000, 0x0004002B, 0x0000000D, 0x0000075D, 0xBE947AE1, 0x0005002C,
0x00040020, 0x00000683, 0x00000009, 0x00000406, 0x0004003B, 0x00000683, 0x00000013, 0x00000379, 0x00000A0C, 0x00000341, 0x0005002C, 0x00000013,
0x00001342, 0x00000009, 0x00040020, 0x00000290, 0x00000009, 0x00000013, 0x00000300, 0x0000008A, 0x00000341, 0x0005002C, 0x00000013, 0x00000049,
0x0007002C, 0x0000001D, 0x00000504, 0x0000008A, 0x0000008A, 0x0000008A, 0x00000341, 0x0000008A, 0x0005002C, 0x00000013, 0x0000037A, 0x00000A0C,
0x00000341, 0x0007002C, 0x0000001D, 0x0000099C, 0x00000341, 0x00000019, 0x0000008A, 0x0005002C, 0x00000013, 0x00000A44, 0x00000341, 0x00000A0C,
0x0000008A, 0x00000019, 0x0004002B, 0x0000000D, 0x00000B69, 0x40800000, 0x0005002C, 0x00000013, 0x00000301, 0x0000008A, 0x0000008A, 0x0005002C,
0x00040020, 0x0000028A, 0x00000009, 0x0000000D, 0x00040020, 0x0000029A, 0x00000013, 0x000001AA, 0x00000019, 0x0000008A, 0x0005002C, 0x00000013,
0x00000003, 0x0000001D, 0x0004003B, 0x0000029A, 0x00001400, 0x00000003, 0x00000BA5, 0x00000019, 0x00000A0C, 0x0005002C, 0x00000013, 0x00000138,
0x00040020, 0x0000029B, 0x00000001, 0x0000001D, 0x0004003B, 0x0000029B, 0x0000008A, 0x00000A0C, 0x0005002C, 0x00000013, 0x00000139, 0x0000008A,
0x00000C93, 0x00000001, 0x00040020, 0x0000028B, 0x00000003, 0x0000000D, 0x00000019, 0x0005002C, 0x00000013, 0x0000071F, 0x00000A0C, 0x00000019,
0x0005002C, 0x00000013, 0x0000061E, 0x000000FC, 0x000000FC, 0x0007002C, 0x0005002C, 0x00000013, 0x0000061E, 0x000000FC, 0x000000FC, 0x0007002C,
0x0000001D, 0x00000145, 0x000000FC, 0x000000FC, 0x000000FC, 0x000000FC, 0x0000001D, 0x00000145, 0x000000FC, 0x000000FC, 0x000000FC, 0x000000FC,
0x00030001, 0x00000013, 0x00002818, 0x00050036, 0x00000008, 0x0000161F, 0x00030001, 0x00000013, 0x00002818, 0x00050036, 0x00000008, 0x0000161F,
0x00000000, 0x00000502, 0x000200F8, 0x00005D6B, 0x00050041, 0x00000290, 0x00000000, 0x00000502, 0x000200F8, 0x00005D6B, 0x00050041, 0x00000290,
0x0000203A, 0x00001342, 0x00000A0B, 0x0004003D, 0x00000013, 0x00001B2F, 0x0000203A, 0x00000BEC, 0x00000A0B, 0x0004003D, 0x00000013, 0x00001B2F,
0x0000203A, 0x0004007C, 0x00000011, 0x00003455, 0x00001B2F, 0x0005008E, 0x0000203A, 0x0004007C, 0x00000011, 0x00003455, 0x00001B2F, 0x0005008E,
0x00000013, 0x000031DA, 0x00001B2F, 0x000000FC, 0x00050083, 0x00000013, 0x00000013, 0x000031DA, 0x00001B2F, 0x000000FC, 0x00050083, 0x00000013,
0x00005EE3, 0x000031DA, 0x0000061E, 0x0004007C, 0x00000011, 0x00004EA3, 0x00005EE3, 0x000031DA, 0x0000061E, 0x0004007C, 0x00000011, 0x00004EA3,
0x00005EE3, 0x00050041, 0x00000290, 0x00004538, 0x00001342, 0x00000A0E, 0x00005EE3, 0x00050041, 0x00000290, 0x00004538, 0x00000BEC, 0x00000A0E,
0x0004003D, 0x00000013, 0x00002B72, 0x00004538, 0x0009004F, 0x0000001D, 0x0004003D, 0x00000013, 0x00002B72, 0x00004538, 0x0009004F, 0x0000001D,
0x0000215F, 0x00002B72, 0x00002B72, 0x00000000, 0x00000001, 0x00000000, 0x0000215F, 0x00002B72, 0x00002B72, 0x00000000, 0x00000001, 0x00000000,
0x00000001, 0x00050085, 0x0000001D, 0x00002B50, 0x00000504, 0x0000215F, 0x00000001, 0x00050085, 0x0000001D, 0x00002B50, 0x00000504, 0x0000215F,
0x0004007C, 0x00000017, 0x00003229, 0x00002B50, 0x00050085, 0x0000001D, 0x0004007C, 0x00000017, 0x00003229, 0x00002B50, 0x00050085, 0x0000001D,
0x0000414D, 0x0000099C, 0x0000215F, 0x0004007C, 0x00000017, 0x00002D35, 0x0000414D, 0x0000099C, 0x0000215F, 0x0004007C, 0x00000017, 0x00002D35,
0x0000414D, 0x00060041, 0x0000028A, 0x00004F87, 0x00001342, 0x00000A0E, 0x0000414D, 0x00060041, 0x0000028A, 0x00004F87, 0x00000BEC, 0x00000A0E,
0x00000A0D, 0x0004003D, 0x0000000D, 0x000050C8, 0x00004F87, 0x00050085, 0x00000A0D, 0x0004003D, 0x0000000D, 0x000050C8, 0x00004F87, 0x00050085,
0x0000000D, 0x00004540, 0x00000B69, 0x000050C8, 0x0004007C, 0x0000000B, 0x0000000D, 0x00004540, 0x00000B69, 0x000050C8, 0x0004007C, 0x0000000B,
0x00005937, 0x00004540, 0x0004003D, 0x0000001D, 0x00002C9B, 0x00000C93, 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, 0x00002E53, 0x000025A4, 0x00050050, 0x00000011, 0x0000203E, 0x00000A0A,
0x00005937, 0x0004007C, 0x00000013, 0x00003D56, 0x0000203E, 0x00050081, 0x00005937, 0x0004007C, 0x00000013, 0x00003D56, 0x0000203E, 0x00050081,
0x00000013, 0x00003CF4, 0x00002E53, 0x00003D56, 0x0004003D, 0x000001FE, 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, 0x00000A0B, 0x00060060, 0x0000001D, 0x00005343, 0x00003CD2,
0x00002E53, 0x00000A0E, 0x00060060, 0x0000001D, 0x00001EC0, 0x00003CD2, 0x00002E53, 0x00000A0E, 0x00060060, 0x0000001D, 0x00001EC0, 0x00003CD2,
0x00002E53, 0x00000A11, 0x00060060, 0x0000001D, 0x00001EC1, 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, 0x00003F3D, 0x0007000C, 0x00000018, 0x00004657, 0x00000001, 0x00000028,
0x00002952, 0x000042EC, 0x0007000C, 0x00000018, 0x0000309B, 0x00000001, 0x00002952, 0x000042EC, 0x0007000C, 0x00000018, 0x0000309B, 0x00000001,
0x00000025, 0x00004A0F, 0x00004657, 0x00050041, 0x0000028B, 0x00002642, 0x00000025, 0x00004A0F, 0x00004657, 0x00050041, 0x0000028B, 0x00002642,
0x00001400, 0x00000A0A, 0x00050051, 0x0000000D, 0x000060DB, 0x0000309B, 0x00001691, 0x00000A0A, 0x00050051, 0x0000000D, 0x000060DB, 0x0000309B,
0x00000000, 0x0003003E, 0x00002642, 0x000060DB, 0x00050041, 0x0000028B, 0x00000000, 0x0003003E, 0x00002642, 0x000060DB, 0x00050041, 0x0000028B,
0x00003FFA, 0x00001400, 0x00000A0D, 0x00050051, 0x0000000D, 0x00003D82, 0x00003FFA, 0x00001691, 0x00000A0D, 0x00050051, 0x0000000D, 0x00003D82,
0x0000309B, 0x00000001, 0x0003003E, 0x00003FFA, 0x00003D82, 0x00050041, 0x0000309B, 0x00000001, 0x0003003E, 0x00003FFA, 0x00003D82, 0x00050041,
0x0000028B, 0x00003FFB, 0x00001400, 0x00000A10, 0x00050051, 0x0000000D, 0x0000028B, 0x00003FFB, 0x00001691, 0x00000A10, 0x00050051, 0x0000000D,
0x00003D83, 0x0000309B, 0x00000002, 0x0003003E, 0x00003FFB, 0x00003D83, 0x00003D83, 0x0000309B, 0x00000002, 0x0003003E, 0x00003FFB, 0x00003D83,
0x00050041, 0x0000028B, 0x00005AFE, 0x00001400, 0x00000A13, 0x0003003E, 0x00050041, 0x0000028B, 0x00005AFE, 0x00001691, 0x00000A13, 0x0003003E,
0x00005AFE, 0x0000008A, 0x000100FD, 0x00010038, 0x00005AFE, 0x0000008A, 0x000100FD, 0x00010038,
}; };

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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