diff --git a/fpPS4.lpi b/fpPS4.lpi index 13aeee0..17ddd12 100644 --- a/fpPS4.lpi +++ b/fpPS4.lpi @@ -31,7 +31,7 @@ - + @@ -431,6 +431,24 @@ + + + + + + + + + + + + + + + + + + @@ -442,7 +460,7 @@ - + diff --git a/shaders/FLIP_CURSOR.spv b/shaders/FLIP_CURSOR.spv deleted file mode 100644 index 2077b2c..0000000 Binary files a/shaders/FLIP_CURSOR.spv and /dev/null differ diff --git a/shaders/FLIP_LINE_A8R8G8B8_SRGB.spv b/shaders/FLIP_LINE_A8R8G8B8_SRGB.spv deleted file mode 100644 index b161436..0000000 Binary files a/shaders/FLIP_LINE_A8R8G8B8_SRGB.spv and /dev/null differ diff --git a/shaders/FLIP_TILE_A8B8G8R8_SRGB.spv b/shaders/FLIP_TILE_A8B8G8R8_SRGB.spv deleted file mode 100644 index 4bc633d..0000000 Binary files a/shaders/FLIP_TILE_A8B8G8R8_SRGB.spv and /dev/null differ diff --git a/shaders/FLIP_TILE_A8R8G8B8_SRGB.spv b/shaders/FLIP_TILE_A8R8G8B8_SRGB.spv deleted file mode 100644 index 8013353..0000000 Binary files a/shaders/FLIP_TILE_A8R8G8B8_SRGB.spv and /dev/null differ diff --git a/shaders/FLIP_TILE_A8R8G8B8_SRGB_NEO.spv b/shaders/FLIP_TILE_A8R8G8B8_SRGB_NEO.spv deleted file mode 100644 index 29b4faa..0000000 Binary files a/shaders/FLIP_TILE_A8R8G8B8_SRGB_NEO.spv and /dev/null differ diff --git a/shaders/compile.cmd b/shaders/compile.cmd index 79495d2..a2fe63d 100644 --- a/shaders/compile.cmd +++ b/shaders/compile.cmd @@ -1,19 +1,32 @@ @echo off +Rem The source of "glslangValidator" and "spirv-opt" is Vulkan SDK +Rem The source of "lazres" is Lazarus IDE + Set spirvgls=glslangValidator -g0 -V --target-env vulkan1.0 Set spirvopt=spirv-opt --eliminate-dead-branches --eliminate-local-multi-store --inline-entry-points-exhaustive --eliminate-dead-code-aggressive --scalar-replacement --simplify-instructions -For /F %%a in ('dir /B') do if "%%~xa"==".comp" (call :compil %%a %%~na) +Set lrs=shaders.lrs -For /F %%a in ('dir /B') do if "%%~xa"==".vert" (call :compil %%a %%~na) +echo [build comp] +For /F %%a in ('dir /B') do if "%%~xa"==".comp" (call :build %%a %%~na) + +echo [build vert] +For /F %%a in ('dir /B') do if "%%~xa"==".vert" (call :build %%a %%~na) + +echo [build lrs] +lazres %lrs% + +echo [clean] +For /F %%a in ('dir /B') do if "%%~xa"==".spv" (call del /Q %%a) pause exit -:compil - echo %2 +:build + Set lrs=%lrs% %2.spv %spirvgls% %1 -o %2.spv %spirvopt% %2.spv -o %2.spv exit /b diff --git a/shaders/shaders.lrs b/shaders/shaders.lrs new file mode 100644 index 0000000..863440e --- /dev/null +++ b/shaders/shaders.lrs @@ -0,0 +1,431 @@ +LazarusResources.Add('FLIP_CURSOR','SPV',[ + #3#2'#'#7#0#0#1#0#10#0#8#0'\'#0#0#0#0#0#0#0#17#0#2#0#1#0#0#0#11#0#6#0#1#0#0#0 + +'GLSL.std.450'#0#0#0#0#14#0#3#0#0#0#0#0#1#0#0#0#15#0#6#0#5#0#0#0#4#0#0#0'mai' + +'n'#0#0#0#0#13#0#0#0#16#0#6#0#4#0#0#0#17#0#0#0#16#0#0#0#16#0#0#0#1#0#0#0'G'#0 + +#4#0#13#0#0#0#11#0#0#0#28#0#0#0'G'#0#4#0#31#0#0#0#6#0#0#0#4#0#0#0'H'#0#4#0' ' + +#0#0#0#0#0#0#0#24#0#0#0'H'#0#5#0' '#0#0#0#0#0#0#0'#'#0#0#0#0#0#0#0'G'#0#3#0 + +' '#0#0#0#3#0#0#0'G'#0#4#0'"'#0#0#0'"'#0#0#0#0#0#0#0'G'#0#4#0'"'#0#0#0'!'#0#0 + +#0#0#0#0#0'H'#0#5#0'1'#0#0#0#0#0#0#0'#'#0#0#0#0#0#0#0'H'#0#5#0'1'#0#0#0#1#0#0 + +#0'#'#0#0#0#16#0#0#0'G'#0#3#0'1'#0#0#0#2#0#0#0'G'#0#4#0'A'#0#0#0'"'#0#0#0#0#0 + +#0#0'G'#0#4#0'A'#0#0#0'!'#0#0#0#1#0#0#0'G'#0#4#0'['#0#0#0#11#0#0#0#25#0#0#0 + +#19#0#2#0#2#0#0#0'!'#0#3#0#3#0#0#0#2#0#0#0#21#0#4#0#6#0#0#0' '#0#0#0#1#0#0#0 + +#23#0#4#0#7#0#0#0#6#0#0#0#2#0#0#0' '#0#4#0#8#0#0#0#7#0#0#0#7#0#0#0#21#0#4#0 + +#10#0#0#0' '#0#0#0#0#0#0#0#23#0#4#0#11#0#0#0#10#0#0#0#3#0#0#0' '#0#4#0#12#0#0 + +#0#1#0#0#0#11#0#0#0';'#0#4#0#12#0#0#0#13#0#0#0#1#0#0#0#23#0#4#0#14#0#0#0#10#0 + +#0#0#2#0#0#0' '#0#4#0#18#0#0#0#7#0#0#0#6#0#0#0'+'#0#4#0#10#0#0#0#20#0#0#0#1#0 + +#0#0'+'#0#4#0#6#0#0#0#23#0#0#0'@'#0#0#0'+'#0#4#0#10#0#0#0#25#0#0#0#0#0#0#0#29 + +#0#3#0#31#0#0#0#10#0#0#0#30#0#3#0' '#0#0#0#31#0#0#0' '#0#4#0'!'#0#0#0#2#0#0#0 + +' '#0#0#0';'#0#4#0'!'#0#0#0'"'#0#0#0#2#0#0#0'+'#0#4#0#6#0#0#0'#'#0#0#0#0#0#0 + +#0' '#0#4#0'%'#0#0#0#2#0#0#0#10#0#0#0#22#0#3#0'('#0#0#0' '#0#0#0#23#0#4#0')' + +#0#0#0'('#0#0#0#4#0#0#0' '#0#4#0'*'#0#0#0#7#0#0#0')'#0#0#0#30#0#4#0'1'#0#0#0 + +')'#0#0#0#7#0#0#0' '#0#4#0'2'#0#0#0#9#0#0#0'1'#0#0#0';'#0#4#0'2'#0#0#0'3'#0#0 + +#0#9#0#0#0' '#0#4#0'4'#0#0#0#9#0#0#0')'#0#0#0'+'#0#4#0#6#0#0#0'9'#0#0#0#1#0#0 + +#0' '#0#4#0':'#0#0#0#9#0#0#0#7#0#0#0#25#0#9#0'?'#0#0#0'('#0#0#0#1#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#2#0#0#0#4#0#0#0' '#0#4#0'@'#0#0#0#0#0#0#0'?'#0#0#0';'#0#4 + +#0'@'#0#0#0'A'#0#0#0#0#0#0#0#23#0#4#0'E'#0#0#0'('#0#0#0#3#0#0#0'+'#0#4#0#10#0 + +#0#0'J'#0#0#0#3#0#0#0' '#0#4#0'K'#0#0#0#7#0#0#0'('#0#0#0'+'#0#4#0#10#0#0#0'T' + +#0#0#0#2#0#0#0'+'#0#4#0#10#0#0#0'Z'#0#0#0#16#0#0#0','#0#6#0#11#0#0#0'['#0#0#0 + +'Z'#0#0#0'Z'#0#0#0#20#0#0#0'6'#0#5#0#2#0#0#0#4#0#0#0#0#0#0#0#3#0#0#0#248#0#2 + +#0#5#0#0#0';'#0#4#0#8#0#0#0#9#0#0#0#7#0#0#0';'#0#4#0'*'#0#0#0'+'#0#0#0#7#0#0 + +#0'='#0#4#0#11#0#0#0#15#0#0#0#13#0#0#0'O'#0#7#0#14#0#0#0#16#0#0#0#15#0#0#0#15 + +#0#0#0#0#0#0#0#1#0#0#0'|'#0#4#0#7#0#0#0#17#0#0#0#16#0#0#0'>'#0#3#0#9#0#0#0#17 + +#0#0#0'A'#0#5#0#18#0#0#0#21#0#0#0#9#0#0#0#20#0#0#0'='#0#4#0#6#0#0#0#22#0#0#0 + +#21#0#0#0#132#0#5#0#6#0#0#0#24#0#0#0#22#0#0#0#23#0#0#0'A'#0#5#0#18#0#0#0#26#0 + +#0#0#9#0#0#0#25#0#0#0'='#0#4#0#6#0#0#0#27#0#0#0#26#0#0#0#128#0#5#0#6#0#0#0#28 + +#0#0#0#24#0#0#0#27#0#0#0'A'#0#6#0'%'#0#0#0'&'#0#0#0'"'#0#0#0'#'#0#0#0#28#0#0 + +#0'='#0#4#0#10#0#0#0''''#0#0#0'&'#0#0#0#12#0#6#0')'#0#0#0'-'#0#0#0#1#0#0#0'@' + +#0#0#0''''#0#0#0'>'#0#3#0'+'#0#0#0'-'#0#0#0'='#0#4#0')'#0#0#0'.'#0#0#0'+'#0#0 + +#0'O'#0#9#0')'#0#0#0'/'#0#0#0'.'#0#0#0'.'#0#0#0#2#0#0#0#1#0#0#0#0#0#0#0#3#0#0 + +#0'>'#0#3#0'+'#0#0#0'/'#0#0#0'='#0#4#0')'#0#0#0'0'#0#0#0'+'#0#0#0'A'#0#5#0'4' + +#0#0#0'5'#0#0#0'3'#0#0#0'#'#0#0#0'='#0#4#0')'#0#0#0'6'#0#0#0'5'#0#0#0#12#0#7 + +#0')'#0#0#0'7'#0#0#0#1#0#0#0#26#0#0#0'0'#0#0#0'6'#0#0#0'>'#0#3#0'+'#0#0#0'7' + +#0#0#0'='#0#4#0#7#0#0#0'8'#0#0#0#9#0#0#0'A'#0#5#0':'#0#0#0';'#0#0#0'3'#0#0#0 + +'9'#0#0#0'='#0#4#0#7#0#0#0'<'#0#0#0';'#0#0#0#128#0#5#0#7#0#0#0'='#0#0#0'8'#0 + +#0#0'<'#0#0#0'>'#0#3#0#9#0#0#0'='#0#0#0'='#0#4#0'?'#0#0#0'B'#0#0#0'A'#0#0#0 + +'='#0#4#0#7#0#0#0'C'#0#0#0#9#0#0#0'b'#0#5#0')'#0#0#0'D'#0#0#0'B'#0#0#0'C'#0#0 + +#0'O'#0#8#0'E'#0#0#0'G'#0#0#0'D'#0#0#0'D'#0#0#0#0#0#0#0#1#0#0#0#2#0#0#0'='#0 + +#4#0')'#0#0#0'H'#0#0#0'+'#0#0#0'O'#0#8#0'E'#0#0#0'I'#0#0#0'H'#0#0#0'H'#0#0#0 + +#0#0#0#0#1#0#0#0#2#0#0#0'A'#0#5#0'K'#0#0#0'L'#0#0#0'+'#0#0#0'J'#0#0#0'='#0#4 + +#0'('#0#0#0'M'#0#0#0'L'#0#0#0'P'#0#6#0'E'#0#0#0'N'#0#0#0'M'#0#0#0'M'#0#0#0'M' + +#0#0#0#12#0#8#0'E'#0#0#0'O'#0#0#0#1#0#0#0'.'#0#0#0'G'#0#0#0'I'#0#0#0'N'#0#0#0 + +'A'#0#5#0'K'#0#0#0'P'#0#0#0'+'#0#0#0#25#0#0#0'Q'#0#5#0'('#0#0#0'Q'#0#0#0'O'#0 + +#0#0#0#0#0#0'>'#0#3#0'P'#0#0#0'Q'#0#0#0'A'#0#5#0'K'#0#0#0'R'#0#0#0'+'#0#0#0 + +#20#0#0#0'Q'#0#5#0'('#0#0#0'S'#0#0#0'O'#0#0#0#1#0#0#0'>'#0#3#0'R'#0#0#0'S'#0 + +#0#0'A'#0#5#0'K'#0#0#0'U'#0#0#0'+'#0#0#0'T'#0#0#0'Q'#0#5#0'('#0#0#0'V'#0#0#0 + +'O'#0#0#0#2#0#0#0'>'#0#3#0'U'#0#0#0'V'#0#0#0'='#0#4#0'?'#0#0#0'W'#0#0#0'A'#0 + +#0#0'='#0#4#0#7#0#0#0'X'#0#0#0#9#0#0#0'='#0#4#0')'#0#0#0'Y'#0#0#0'+'#0#0#0'c' + +#0#4#0'W'#0#0#0'X'#0#0#0'Y'#0#0#0#253#0#1#0'8'#0#1#0 +]); +LazarusResources.Add('FLIP_LINE_A8R8G8B8_SRGB','SPV',[ + #3#2'#'#7#0#0#1#0#10#0#8#0'C'#0#0#0#0#0#0#0#17#0#2#0#1#0#0#0#11#0#6#0#1#0#0#0 + +'GLSL.std.450'#0#0#0#0#14#0#3#0#0#0#0#0#1#0#0#0#15#0#6#0#5#0#0#0#4#0#0#0'mai' + +'n'#0#0#0#0#13#0#0#0#16#0#6#0#4#0#0#0#17#0#0#0#16#0#0#0#16#0#0#0#1#0#0#0'G'#0 + +#4#0#13#0#0#0#11#0#0#0#28#0#0#0'H'#0#5#0#25#0#0#0#0#0#0#0'#'#0#0#0#0#0#0#0'H' + +#0#5#0#25#0#0#0#1#0#0#0'#'#0#0#0#16#0#0#0'G'#0#3#0#25#0#0#0#2#0#0#0'G'#0#4#0 + +''''#0#0#0#6#0#0#0#4#0#0#0'H'#0#4#0'('#0#0#0#0#0#0#0#24#0#0#0'H'#0#5#0'('#0#0 + +#0#0#0#0#0'#'#0#0#0#0#0#0#0'G'#0#3#0'('#0#0#0#3#0#0#0'G'#0#4#0'*'#0#0#0'"'#0 + +#0#0#0#0#0#0'G'#0#4#0'*'#0#0#0'!'#0#0#0#0#0#0#0'G'#0#4#0'='#0#0#0'"'#0#0#0#0 + +#0#0#0'G'#0#4#0'='#0#0#0'!'#0#0#0#1#0#0#0'G'#0#3#0'='#0#0#0#25#0#0#0'G'#0#4#0 + +'B'#0#0#0#11#0#0#0#25#0#0#0#19#0#2#0#2#0#0#0'!'#0#3#0#3#0#0#0#2#0#0#0#21#0#4 + +#0#6#0#0#0' '#0#0#0#1#0#0#0#23#0#4#0#7#0#0#0#6#0#0#0#2#0#0#0' '#0#4#0#8#0#0#0 + +#7#0#0#0#7#0#0#0#21#0#4#0#10#0#0#0' '#0#0#0#0#0#0#0#23#0#4#0#11#0#0#0#10#0#0 + +#0#3#0#0#0' '#0#4#0#12#0#0#0#1#0#0#0#11#0#0#0';'#0#4#0#12#0#0#0#13#0#0#0#1#0 + +#0#0#23#0#4#0#14#0#0#0#10#0#0#0#2#0#0#0' '#0#4#0#18#0#0#0#7#0#0#0#6#0#0#0'+' + +#0#4#0#10#0#0#0#20#0#0#0#1#0#0#0#22#0#3#0#23#0#0#0' '#0#0#0#23#0#4#0#24#0#0#0 + +#23#0#0#0#4#0#0#0#30#0#4#0#25#0#0#0#24#0#0#0#7#0#0#0' '#0#4#0#26#0#0#0#9#0#0 + +#0#25#0#0#0';'#0#4#0#26#0#0#0#27#0#0#0#9#0#0#0'+'#0#4#0#6#0#0#0#28#0#0#0#1#0 + +#0#0' '#0#4#0#29#0#0#0#9#0#0#0#6#0#0#0'+'#0#4#0#10#0#0#0'!'#0#0#0#0#0#0#0#29 + +#0#3#0''''#0#0#0#10#0#0#0#30#0#3#0'('#0#0#0''''#0#0#0' '#0#4#0')'#0#0#0#2#0#0 + +#0'('#0#0#0';'#0#4#0')'#0#0#0'*'#0#0#0#2#0#0#0'+'#0#4#0#6#0#0#0'+'#0#0#0#0#0 + +#0#0' '#0#4#0'-'#0#0#0#2#0#0#0#10#0#0#0' '#0#4#0'7'#0#0#0#9#0#0#0#24#0#0#0#25 + +#0#9#0';'#0#0#0#23#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2#0#0#0#4#0#0#0' '#0 + +#4#0'<'#0#0#0#0#0#0#0';'#0#0#0';'#0#4#0'<'#0#0#0'='#0#0#0#0#0#0#0'+'#0#4#0#10 + +#0#0#0'A'#0#0#0#16#0#0#0','#0#6#0#11#0#0#0'B'#0#0#0'A'#0#0#0'A'#0#0#0#20#0#0 + +#0'6'#0#5#0#2#0#0#0#4#0#0#0#0#0#0#0#3#0#0#0#248#0#2#0#5#0#0#0';'#0#4#0#8#0#0 + +#0#9#0#0#0#7#0#0#0'='#0#4#0#11#0#0#0#15#0#0#0#13#0#0#0'O'#0#7#0#14#0#0#0#16#0 + +#0#0#15#0#0#0#15#0#0#0#0#0#0#0#1#0#0#0'|'#0#4#0#7#0#0#0#17#0#0#0#16#0#0#0'>' + +#0#3#0#9#0#0#0#17#0#0#0'A'#0#5#0#18#0#0#0#21#0#0#0#9#0#0#0#20#0#0#0'='#0#4#0 + +#6#0#0#0#22#0#0#0#21#0#0#0'A'#0#6#0#29#0#0#0#30#0#0#0#27#0#0#0#28#0#0#0#20#0 + +#0#0'='#0#4#0#6#0#0#0#31#0#0#0#30#0#0#0#132#0#5#0#6#0#0#0' '#0#0#0#22#0#0#0 + +#31#0#0#0'A'#0#5#0#18#0#0#0'"'#0#0#0#9#0#0#0'!'#0#0#0'='#0#4#0#6#0#0#0'#'#0#0 + +#0'"'#0#0#0#128#0#5#0#6#0#0#0'$'#0#0#0' '#0#0#0'#'#0#0#0'A'#0#6#0'-'#0#0#0'.' + +#0#0#0'*'#0#0#0'+'#0#0#0'$'#0#0#0'='#0#4#0#10#0#0#0'/'#0#0#0'.'#0#0#0#12#0#6 + +#0#24#0#0#0'3'#0#0#0#1#0#0#0'@'#0#0#0'/'#0#0#0'O'#0#9#0#24#0#0#0'5'#0#0#0'3' + +#0#0#0'3'#0#0#0#2#0#0#0#1#0#0#0#0#0#0#0#3#0#0#0'A'#0#5#0'7'#0#0#0'8'#0#0#0#27 + +#0#0#0'+'#0#0#0'='#0#4#0#24#0#0#0'9'#0#0#0'8'#0#0#0#12#0#7#0#24#0#0#0':'#0#0 + +#0#1#0#0#0#26#0#0#0'5'#0#0#0'9'#0#0#0'='#0#4#0';'#0#0#0'>'#0#0#0'='#0#0#0'=' + +#0#4#0#7#0#0#0'?'#0#0#0#9#0#0#0'c'#0#4#0'>'#0#0#0'?'#0#0#0':'#0#0#0#253#0#1#0 + +'8'#0#1#0 +]); +LazarusResources.Add('FLIP_TILE_A8B8G8R8_SRGB','SPV',[ + #3#2'#'#7#0#0#1#0#10#0#8#0#23#1#0#0#0#0#0#0#17#0#2#0#1#0#0#0#11#0#6#0#1#0#0#0 + +'GLSL.std.450'#0#0#0#0#14#0#3#0#0#0#0#0#1#0#0#0#15#0#6#0#5#0#0#0#4#0#0#0'mai' + +'n'#0#0#0#0#132#0#0#0#16#0#6#0#4#0#0#0#17#0#0#0#16#0#0#0#16#0#0#0#1#0#0#0'G' + +#0#4#0#132#0#0#0#11#0#0#0#28#0#0#0'H'#0#5#0#157#0#0#0#0#0#0#0'#'#0#0#0#0#0#0 + +#0'H'#0#5#0#157#0#0#0#1#0#0#0'#'#0#0#0#16#0#0#0'G'#0#3#0#157#0#0#0#2#0#0#0'G' + +#0#4#0#180#0#0#0#6#0#0#0#4#0#0#0'H'#0#4#0#181#0#0#0#0#0#0#0#24#0#0#0'H'#0#5#0 + +#181#0#0#0#0#0#0#0'#'#0#0#0#0#0#0#0'G'#0#3#0#181#0#0#0#3#0#0#0'G'#0#4#0#183#0 + +#0#0'"'#0#0#0#0#0#0#0'G'#0#4#0#183#0#0#0'!'#0#0#0#0#0#0#0'G'#0#4#0#200#0#0#0 + +'"'#0#0#0#0#0#0#0'G'#0#4#0#200#0#0#0'!'#0#0#0#1#0#0#0'G'#0#3#0#200#0#0#0#25#0 + +#0#0'G'#0#4#0#205#0#0#0#11#0#0#0#25#0#0#0#19#0#2#0#2#0#0#0'!'#0#3#0#3#0#0#0#2 + +#0#0#0#21#0#4#0#6#0#0#0' '#0#0#0#1#0#0#0#23#0#4#0#7#0#0#0#6#0#0#0#2#0#0#0' ' + +#0#4#0#8#0#0#0#7#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0#21#0#0#0#1#0#0#0','#0#5#0#7#0 + +#0#0#22#0#0#0#21#0#0#0#21#0#0#0'+'#0#4#0#6#0#0#0#24#0#0#0#0#0#0#0'+'#0#4#0#6 + +#0#0#0#25#0#0#0#2#0#0#0','#0#5#0#7#0#0#0#26#0#0#0#24#0#0#0#25#0#0#0#23#0#4#0 + +#28#0#0#0#6#0#0#0#4#0#0#0','#0#7#0#28#0#0#0'!'#0#0#0#21#0#0#0#25#0#0#0#21#0#0 + +#0#25#0#0#0','#0#7#0#28#0#0#0'#'#0#0#0#21#0#0#0#21#0#0#0#21#0#0#0#21#0#0#0'+' + +#0#4#0#6#0#0#0'%'#0#0#0#3#0#0#0'+'#0#4#0#6#0#0#0'&'#0#0#0#4#0#0#0'+'#0#4#0#6 + +#0#0#0''''#0#0#0#5#0#0#0','#0#7#0#28#0#0#0'('#0#0#0#21#0#0#0'%'#0#0#0'&'#0#0 + +#0''''#0#0#0#21#0#4#0'1'#0#0#0' '#0#0#0#0#0#0#0'+'#0#4#0'1'#0#0#0'2'#0#0#0#0 + +#0#0#0' '#0#4#0'3'#0#0#0#7#0#0#0#6#0#0#0'+'#0#4#0'1'#0#0#0'6'#0#0#0#1#0#0#0 + +#23#0#4#0'<'#0#0#0#6#0#0#0#3#0#0#0' '#0#4#0'='#0#0#0#7#0#0#0'<'#0#0#0','#0#6 + +#0'<'#0#0#0'A'#0#0#0'%'#0#0#0'&'#0#0#0''''#0#0#0','#0#6#0'<'#0#0#0'L'#0#0#0 + +#21#0#0#0#21#0#0#0#21#0#0#0'+'#0#4#0#6#0#0#0'N'#0#0#0#6#0#0#0'+'#0#4#0#6#0#0 + +#0'O'#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0'P'#0#0#0#8#0#0#0','#0#6#0'<'#0#0#0'Q'#0 + +#0#0'N'#0#0#0'O'#0#0#0'P'#0#0#0'+'#0#4#0'1'#0#0#0'X'#0#0#0#2#0#0#0'+'#0#4#0#6 + +#0#0#0'a'#0#0#0#9#0#0#0','#0#7#0#28#0#0#0'b'#0#0#0'N'#0#0#0'O'#0#0#0'P'#0#0#0 + +'a'#0#0#0','#0#7#0#28#0#0#0'f'#0#0#0'N'#0#0#0''''#0#0#0'&'#0#0#0'%'#0#0#0'+' + +#0#4#0#6#0#0#0'o'#0#0#0#10#0#0#0'+'#0#4#0#6#0#0#0'p'#0#0#0#11#0#0#0'+'#0#4#0 + +#6#0#0#0'q'#0#0#0#12#0#0#0','#0#7#0#28#0#0#0'r'#0#0#0'a'#0#0#0'o'#0#0#0'p'#0 + +#0#0'q'#0#0#0#23#0#4#0#130#0#0#0'1'#0#0#0#3#0#0#0' '#0#4#0#131#0#0#0#1#0#0#0 + +#130#0#0#0';'#0#4#0#131#0#0#0#132#0#0#0#1#0#0#0#23#0#4#0#133#0#0#0'1'#0#0#0#2 + +#0#0#0','#0#5#0#7#0#0#0#151#0#0#0'O'#0#0#0'N'#0#0#0#22#0#3#0#155#0#0#0' '#0#0 + +#0#23#0#4#0#156#0#0#0#155#0#0#0#4#0#0#0#30#0#4#0#157#0#0#0#156#0#0#0#7#0#0#0 + +' '#0#4#0#158#0#0#0#9#0#0#0#157#0#0#0';'#0#4#0#158#0#0#0#159#0#0#0#9#0#0#0' ' + +#0#4#0#160#0#0#0#9#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0#175#0#0#0#13#0#0#0#29#0#3#0 + +#180#0#0#0'1'#0#0#0#30#0#3#0#181#0#0#0#180#0#0#0' '#0#4#0#182#0#0#0#2#0#0#0 + +#181#0#0#0';'#0#4#0#182#0#0#0#183#0#0#0#2#0#0#0' '#0#4#0#185#0#0#0#2#0#0#0'1' + +#0#0#0' '#0#4#0#194#0#0#0#9#0#0#0#156#0#0#0#25#0#9#0#198#0#0#0#155#0#0#0#1#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2#0#0#0#4#0#0#0' '#0#4#0#199#0#0#0#0#0#0#0#198#0 + +#0#0';'#0#4#0#199#0#0#0#200#0#0#0#0#0#0#0'+'#0#4#0'1'#0#0#0#204#0#0#0#16#0#0 + +#0','#0#6#0#130#0#0#0#205#0#0#0#204#0#0#0#204#0#0#0'6'#0#0#0'6'#0#5#0#2#0#0#0 + +#4#0#0#0#0#0#0#0#3#0#0#0#248#0#2#0#5#0#0#0';'#0#4#0#8#0#0#0#254#0#0#0#7#0#0#0 + +';'#0#4#0'3'#0#0#0#255#0#0#0#7#0#0#0';'#0#4#0'='#0#0#0#228#0#0#0#7#0#0#0';'#0 + +#4#0'3'#0#0#0#229#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#206#0#0#0#7#0#0#0';'#0#4#0 + +'3'#0#0#0#208#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#138#0#0#0#7#0#0#0';'#0#4#0#8#0#0 + +#0#142#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#146#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#153 + +#0#0#0#7#0#0#0'='#0#4#0#130#0#0#0#134#0#0#0#132#0#0#0'O'#0#7#0#133#0#0#0#135 + +#0#0#0#134#0#0#0#134#0#0#0#0#0#0#0#1#0#0#0'|'#0#4#0#7#0#0#0#136#0#0#0#135#0#0 + +#0'>'#0#3#0#138#0#0#0#136#0#0#0'='#0#4#0#7#0#0#0#210#0#0#0#138#0#0#0#199#0#5 + +#0#7#0#0#0#211#0#0#0#210#0#0#0#22#0#0#0#196#0#5#0#7#0#0#0#212#0#0#0#211#0#0#0 + +#26#0#0#0'>'#0#3#0#206#0#0#0#212#0#0#0'='#0#4#0#7#0#0#0#213#0#0#0#138#0#0#0 + +'O'#0#9#0#28#0#0#0#214#0#0#0#213#0#0#0#213#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0 + +#0#0#195#0#5#0#28#0#0#0#215#0#0#0#214#0#0#0'!'#0#0#0#199#0#5#0#28#0#0#0#216#0 + +#0#0#215#0#0#0'#'#0#0#0#196#0#5#0#28#0#0#0#217#0#0#0#216#0#0#0'('#0#0#0'='#0 + +#4#0#7#0#0#0#218#0#0#0#206#0#0#0'O'#0#7#0#7#0#0#0#219#0#0#0#217#0#0#0#217#0#0 + +#0#0#0#0#0#1#0#0#0#197#0#5#0#7#0#0#0#220#0#0#0#218#0#0#0#219#0#0#0'O'#0#7#0#7 + +#0#0#0#221#0#0#0#217#0#0#0#217#0#0#0#2#0#0#0#3#0#0#0#197#0#5#0#7#0#0#0#222#0 + +#0#0#220#0#0#0#221#0#0#0'>'#0#3#0#206#0#0#0#222#0#0#0'A'#0#5#0'3'#0#0#0#223#0 + +#0#0#206#0#0#0'2'#0#0#0'='#0#4#0#6#0#0#0#224#0#0#0#223#0#0#0'A'#0#5#0'3'#0#0 + +#0#225#0#0#0#206#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0#226#0#0#0#225#0#0#0#197#0#5 + +#0#6#0#0#0#227#0#0#0#224#0#0#0#226#0#0#0'>'#0#3#0#208#0#0#0#227#0#0#0'='#0#4 + +#0#6#0#0#0#140#0#0#0#208#0#0#0'>'#0#3#0#142#0#0#0#136#0#0#0'='#0#4#0#7#0#0#0 + +#231#0#0#0#142#0#0#0'O'#0#8#0'<'#0#0#0#232#0#0#0#231#0#0#0#231#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#195#0#5#0'<'#0#0#0#233#0#0#0#232#0#0#0'A'#0#0#0'='#0#4#0#7#0 + ,#0#0#234#0#0#0#142#0#0#0'O'#0#8#0'<'#0#0#0#235#0#0#0#234#0#0#0#234#0#0#0#1#0 + +#0#0#1#0#0#0#1#0#0#0#195#0#5#0'<'#0#0#0#236#0#0#0#235#0#0#0'A'#0#0#0#198#0#5 + +#0'<'#0#0#0#237#0#0#0#233#0#0#0#236#0#0#0'A'#0#5#0'3'#0#0#0#238#0#0#0#142#0#0 + +#0'2'#0#0#0'='#0#4#0#6#0#0#0#239#0#0#0#238#0#0#0#195#0#5#0#6#0#0#0#240#0#0#0 + +#239#0#0#0'&'#0#0#0'P'#0#6#0'<'#0#0#0#241#0#0#0#240#0#0#0#24#0#0#0#24#0#0#0 + +#198#0#5#0'<'#0#0#0#242#0#0#0#237#0#0#0#241#0#0#0#199#0#5#0'<'#0#0#0#243#0#0 + +#0#242#0#0#0'L'#0#0#0#196#0#5#0'<'#0#0#0#244#0#0#0#243#0#0#0'Q'#0#0#0'>'#0#3 + +#0#228#0#0#0#244#0#0#0'A'#0#5#0'3'#0#0#0#245#0#0#0#228#0#0#0'2'#0#0#0'='#0#4 + +#0#6#0#0#0#246#0#0#0#245#0#0#0'A'#0#5#0'3'#0#0#0#247#0#0#0#228#0#0#0'6'#0#0#0 + +'='#0#4#0#6#0#0#0#248#0#0#0#247#0#0#0#197#0#5#0#6#0#0#0#249#0#0#0#246#0#0#0 + +#248#0#0#0'A'#0#5#0'3'#0#0#0#250#0#0#0#228#0#0#0'X'#0#0#0'='#0#4#0#6#0#0#0 + +#251#0#0#0#250#0#0#0#197#0#5#0#6#0#0#0#252#0#0#0#249#0#0#0#251#0#0#0'>'#0#3#0 + +#229#0#0#0#252#0#0#0'='#0#4#0#6#0#0#0#144#0#0#0#229#0#0#0'>'#0#3#0#146#0#0#0 + +#136#0#0#0'='#0#4#0#7#0#0#0#1#1#0#0#146#0#0#0'O'#0#9#0#28#0#0#0#2#1#0#0#1#1#0 + +#0#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#195#0#5#0#28#0#0#0#3#1#0#0#2#1#0#0 + +'b'#0#0#0'='#0#4#0#7#0#0#0#4#1#0#0#146#0#0#0'O'#0#9#0#28#0#0#0#5#1#0#0#4#1#0 + +#0#4#1#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#195#0#5#0#28#0#0#0#6#1#0#0#5#1#0#0 + +'f'#0#0#0#198#0#5#0#28#0#0#0#7#1#0#0#3#1#0#0#6#1#0#0'A'#0#5#0'3'#0#0#0#8#1#0 + +#0#146#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0#9#1#0#0#8#1#0#0#195#0#5#0#6#0#0#0#10#1 + +#0#0#9#1#0#0'N'#0#0#0'P'#0#7#0#28#0#0#0#11#1#0#0#24#0#0#0#10#1#0#0#24#0#0#0 + +#24#0#0#0#198#0#5#0#28#0#0#0#12#1#0#0#7#1#0#0#11#1#0#0#199#0#5#0#28#0#0#0#13 + +#1#0#0#12#1#0#0'#'#0#0#0#196#0#5#0#28#0#0#0#14#1#0#0#13#1#0#0'r'#0#0#0'O'#0#7 + +#0#7#0#0#0#15#1#0#0#14#1#0#0#14#1#0#0#0#0#0#0#1#0#0#0'O'#0#7#0#7#0#0#0#16#1#0 + +#0#14#1#0#0#14#1#0#0#2#0#0#0#3#0#0#0#197#0#5#0#7#0#0#0#17#1#0#0#15#1#0#0#16#1 + +#0#0'>'#0#3#0#254#0#0#0#17#1#0#0'A'#0#5#0'3'#0#0#0#18#1#0#0#254#0#0#0'2'#0#0 + +#0'='#0#4#0#6#0#0#0#19#1#0#0#18#1#0#0'A'#0#5#0'3'#0#0#0#20#1#0#0#254#0#0#0'6' + +#0#0#0'='#0#4#0#6#0#0#0#21#1#0#0#20#1#0#0#197#0#5#0#6#0#0#0#22#1#0#0#19#1#0#0 + +#21#1#0#0'>'#0#3#0#255#0#0#0#22#1#0#0'='#0#4#0#6#0#0#0#148#0#0#0#255#0#0#0 + +#195#0#5#0#7#0#0#0#152#0#0#0#136#0#0#0#151#0#0#0'A'#0#5#0#160#0#0#0#161#0#0#0 + +#159#0#0#0#21#0#0#0'='#0#4#0#7#0#0#0#162#0#0#0#161#0#0#0#132#0#5#0#7#0#0#0 + +#163#0#0#0#152#0#0#0#162#0#0#0'>'#0#3#0#153#0#0#0#163#0#0#0#197#0#5#0#6#0#0#0 + +#167#0#0#0#140#0#0#0#144#0#0#0#197#0#5#0#6#0#0#0#169#0#0#0#167#0#0#0#148#0#0 + +#0'A'#0#5#0'3'#0#0#0#170#0#0#0#153#0#0#0'2'#0#0#0'='#0#4#0#6#0#0#0#171#0#0#0 + +#170#0#0#0'A'#0#5#0'3'#0#0#0#172#0#0#0#153#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0 + +#173#0#0#0#172#0#0#0#128#0#5#0#6#0#0#0#174#0#0#0#171#0#0#0#173#0#0#0#196#0#5 + +#0#6#0#0#0#176#0#0#0#174#0#0#0#175#0#0#0#197#0#5#0#6#0#0#0#177#0#0#0#169#0#0 + +#0#176#0#0#0'A'#0#6#0#185#0#0#0#186#0#0#0#183#0#0#0#24#0#0#0#177#0#0#0'='#0#4 + +#0'1'#0#0#0#187#0#0#0#186#0#0#0#12#0#6#0#156#0#0#0#191#0#0#0#1#0#0#0'@'#0#0#0 + +#187#0#0#0'A'#0#5#0#194#0#0#0#195#0#0#0#159#0#0#0#24#0#0#0'='#0#4#0#156#0#0#0 + +#196#0#0#0#195#0#0#0#12#0#7#0#156#0#0#0#197#0#0#0#1#0#0#0#26#0#0#0#191#0#0#0 + +#196#0#0#0'='#0#4#0#198#0#0#0#201#0#0#0#200#0#0#0'c'#0#4#0#201#0#0#0#136#0#0 + +#0#197#0#0#0#253#0#1#0'8'#0#1#0 +]); +LazarusResources.Add('FLIP_TILE_A8R8G8B8_SRGB','SPV',[ + #3#2'#'#7#0#0#1#0#10#0#8#0#24#1#0#0#0#0#0#0#17#0#2#0#1#0#0#0#11#0#6#0#1#0#0#0 + +'GLSL.std.450'#0#0#0#0#14#0#3#0#0#0#0#0#1#0#0#0#15#0#6#0#5#0#0#0#4#0#0#0'mai' + +'n'#0#0#0#0#132#0#0#0#16#0#6#0#4#0#0#0#17#0#0#0#16#0#0#0#16#0#0#0#1#0#0#0'G' + +#0#4#0#132#0#0#0#11#0#0#0#28#0#0#0'H'#0#5#0#157#0#0#0#0#0#0#0'#'#0#0#0#0#0#0 + +#0'H'#0#5#0#157#0#0#0#1#0#0#0'#'#0#0#0#16#0#0#0'G'#0#3#0#157#0#0#0#2#0#0#0'G' + +#0#4#0#180#0#0#0#6#0#0#0#4#0#0#0'H'#0#4#0#181#0#0#0#0#0#0#0#24#0#0#0'H'#0#5#0 + +#181#0#0#0#0#0#0#0'#'#0#0#0#0#0#0#0'G'#0#3#0#181#0#0#0#3#0#0#0'G'#0#4#0#183#0 + +#0#0'"'#0#0#0#0#0#0#0'G'#0#4#0#183#0#0#0'!'#0#0#0#0#0#0#0'G'#0#4#0#201#0#0#0 + +'"'#0#0#0#0#0#0#0'G'#0#4#0#201#0#0#0'!'#0#0#0#1#0#0#0'G'#0#3#0#201#0#0#0#25#0 + +#0#0'G'#0#4#0#206#0#0#0#11#0#0#0#25#0#0#0#19#0#2#0#2#0#0#0'!'#0#3#0#3#0#0#0#2 + +#0#0#0#21#0#4#0#6#0#0#0' '#0#0#0#1#0#0#0#23#0#4#0#7#0#0#0#6#0#0#0#2#0#0#0' ' + +#0#4#0#8#0#0#0#7#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0#21#0#0#0#1#0#0#0','#0#5#0#7#0 + +#0#0#22#0#0#0#21#0#0#0#21#0#0#0'+'#0#4#0#6#0#0#0#24#0#0#0#0#0#0#0'+'#0#4#0#6 + +#0#0#0#25#0#0#0#2#0#0#0','#0#5#0#7#0#0#0#26#0#0#0#24#0#0#0#25#0#0#0#23#0#4#0 + +#28#0#0#0#6#0#0#0#4#0#0#0','#0#7#0#28#0#0#0'!'#0#0#0#21#0#0#0#25#0#0#0#21#0#0 + +#0#25#0#0#0','#0#7#0#28#0#0#0'#'#0#0#0#21#0#0#0#21#0#0#0#21#0#0#0#21#0#0#0'+' + +#0#4#0#6#0#0#0'%'#0#0#0#3#0#0#0'+'#0#4#0#6#0#0#0'&'#0#0#0#4#0#0#0'+'#0#4#0#6 + +#0#0#0''''#0#0#0#5#0#0#0','#0#7#0#28#0#0#0'('#0#0#0#21#0#0#0'%'#0#0#0'&'#0#0 + +#0''''#0#0#0#21#0#4#0'1'#0#0#0' '#0#0#0#0#0#0#0'+'#0#4#0'1'#0#0#0'2'#0#0#0#0 + +#0#0#0' '#0#4#0'3'#0#0#0#7#0#0#0#6#0#0#0'+'#0#4#0'1'#0#0#0'6'#0#0#0#1#0#0#0 + +#23#0#4#0'<'#0#0#0#6#0#0#0#3#0#0#0' '#0#4#0'='#0#0#0#7#0#0#0'<'#0#0#0','#0#6 + +#0'<'#0#0#0'A'#0#0#0'%'#0#0#0'&'#0#0#0''''#0#0#0','#0#6#0'<'#0#0#0'L'#0#0#0 + +#21#0#0#0#21#0#0#0#21#0#0#0'+'#0#4#0#6#0#0#0'N'#0#0#0#6#0#0#0'+'#0#4#0#6#0#0 + +#0'O'#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0'P'#0#0#0#8#0#0#0','#0#6#0'<'#0#0#0'Q'#0 + +#0#0'N'#0#0#0'O'#0#0#0'P'#0#0#0'+'#0#4#0'1'#0#0#0'X'#0#0#0#2#0#0#0'+'#0#4#0#6 + +#0#0#0'a'#0#0#0#9#0#0#0','#0#7#0#28#0#0#0'b'#0#0#0'N'#0#0#0'O'#0#0#0'P'#0#0#0 + +'a'#0#0#0','#0#7#0#28#0#0#0'f'#0#0#0'N'#0#0#0''''#0#0#0'&'#0#0#0'%'#0#0#0'+' + +#0#4#0#6#0#0#0'o'#0#0#0#10#0#0#0'+'#0#4#0#6#0#0#0'p'#0#0#0#11#0#0#0'+'#0#4#0 + +#6#0#0#0'q'#0#0#0#12#0#0#0','#0#7#0#28#0#0#0'r'#0#0#0'a'#0#0#0'o'#0#0#0'p'#0 + +#0#0'q'#0#0#0#23#0#4#0#130#0#0#0'1'#0#0#0#3#0#0#0' '#0#4#0#131#0#0#0#1#0#0#0 + +#130#0#0#0';'#0#4#0#131#0#0#0#132#0#0#0#1#0#0#0#23#0#4#0#133#0#0#0'1'#0#0#0#2 + +#0#0#0','#0#5#0#7#0#0#0#151#0#0#0'O'#0#0#0'N'#0#0#0#22#0#3#0#155#0#0#0' '#0#0 + +#0#23#0#4#0#156#0#0#0#155#0#0#0#4#0#0#0#30#0#4#0#157#0#0#0#156#0#0#0#7#0#0#0 + +' '#0#4#0#158#0#0#0#9#0#0#0#157#0#0#0';'#0#4#0#158#0#0#0#159#0#0#0#9#0#0#0' ' + +#0#4#0#160#0#0#0#9#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0#175#0#0#0#13#0#0#0#29#0#3#0 + +#180#0#0#0'1'#0#0#0#30#0#3#0#181#0#0#0#180#0#0#0' '#0#4#0#182#0#0#0#2#0#0#0 + +#181#0#0#0';'#0#4#0#182#0#0#0#183#0#0#0#2#0#0#0' '#0#4#0#185#0#0#0#2#0#0#0'1' + +#0#0#0' '#0#4#0#195#0#0#0#9#0#0#0#156#0#0#0#25#0#9#0#199#0#0#0#155#0#0#0#1#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2#0#0#0#4#0#0#0' '#0#4#0#200#0#0#0#0#0#0#0#199#0 + +#0#0';'#0#4#0#200#0#0#0#201#0#0#0#0#0#0#0'+'#0#4#0'1'#0#0#0#205#0#0#0#16#0#0 + +#0','#0#6#0#130#0#0#0#206#0#0#0#205#0#0#0#205#0#0#0'6'#0#0#0'6'#0#5#0#2#0#0#0 + +#4#0#0#0#0#0#0#0#3#0#0#0#248#0#2#0#5#0#0#0';'#0#4#0#8#0#0#0#255#0#0#0#7#0#0#0 + +';'#0#4#0'3'#0#0#0#0#1#0#0#7#0#0#0';'#0#4#0'='#0#0#0#229#0#0#0#7#0#0#0';'#0#4 + +#0'3'#0#0#0#230#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#207#0#0#0#7#0#0#0';'#0#4#0'3' + +#0#0#0#209#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#138#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0 + +#142#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#146#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#153#0 + +#0#0#7#0#0#0'='#0#4#0#130#0#0#0#134#0#0#0#132#0#0#0'O'#0#7#0#133#0#0#0#135#0 + +#0#0#134#0#0#0#134#0#0#0#0#0#0#0#1#0#0#0'|'#0#4#0#7#0#0#0#136#0#0#0#135#0#0#0 + +'>'#0#3#0#138#0#0#0#136#0#0#0'='#0#4#0#7#0#0#0#211#0#0#0#138#0#0#0#199#0#5#0 + +#7#0#0#0#212#0#0#0#211#0#0#0#22#0#0#0#196#0#5#0#7#0#0#0#213#0#0#0#212#0#0#0 + +#26#0#0#0'>'#0#3#0#207#0#0#0#213#0#0#0'='#0#4#0#7#0#0#0#214#0#0#0#138#0#0#0 + +'O'#0#9#0#28#0#0#0#215#0#0#0#214#0#0#0#214#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0 + +#0#0#195#0#5#0#28#0#0#0#216#0#0#0#215#0#0#0'!'#0#0#0#199#0#5#0#28#0#0#0#217#0 + +#0#0#216#0#0#0'#'#0#0#0#196#0#5#0#28#0#0#0#218#0#0#0#217#0#0#0'('#0#0#0'='#0 + +#4#0#7#0#0#0#219#0#0#0#207#0#0#0'O'#0#7#0#7#0#0#0#220#0#0#0#218#0#0#0#218#0#0 + +#0#0#0#0#0#1#0#0#0#197#0#5#0#7#0#0#0#221#0#0#0#219#0#0#0#220#0#0#0'O'#0#7#0#7 + +#0#0#0#222#0#0#0#218#0#0#0#218#0#0#0#2#0#0#0#3#0#0#0#197#0#5#0#7#0#0#0#223#0 + +#0#0#221#0#0#0#222#0#0#0'>'#0#3#0#207#0#0#0#223#0#0#0'A'#0#5#0'3'#0#0#0#224#0 + +#0#0#207#0#0#0'2'#0#0#0'='#0#4#0#6#0#0#0#225#0#0#0#224#0#0#0'A'#0#5#0'3'#0#0 + +#0#226#0#0#0#207#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0#227#0#0#0#226#0#0#0#197#0#5 + +#0#6#0#0#0#228#0#0#0#225#0#0#0#227#0#0#0'>'#0#3#0#209#0#0#0#228#0#0#0'='#0#4 + +#0#6#0#0#0#140#0#0#0#209#0#0#0'>'#0#3#0#142#0#0#0#136#0#0#0'='#0#4#0#7#0#0#0 + +#232#0#0#0#142#0#0#0'O'#0#8#0'<'#0#0#0#233#0#0#0#232#0#0#0#232#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#195#0#5#0'<'#0#0#0#234#0#0#0#233#0#0#0'A'#0#0#0'='#0#4#0#7#0 + ,#0#0#235#0#0#0#142#0#0#0'O'#0#8#0'<'#0#0#0#236#0#0#0#235#0#0#0#235#0#0#0#1#0 + +#0#0#1#0#0#0#1#0#0#0#195#0#5#0'<'#0#0#0#237#0#0#0#236#0#0#0'A'#0#0#0#198#0#5 + +#0'<'#0#0#0#238#0#0#0#234#0#0#0#237#0#0#0'A'#0#5#0'3'#0#0#0#239#0#0#0#142#0#0 + +#0'2'#0#0#0'='#0#4#0#6#0#0#0#240#0#0#0#239#0#0#0#195#0#5#0#6#0#0#0#241#0#0#0 + +#240#0#0#0'&'#0#0#0'P'#0#6#0'<'#0#0#0#242#0#0#0#241#0#0#0#24#0#0#0#24#0#0#0 + +#198#0#5#0'<'#0#0#0#243#0#0#0#238#0#0#0#242#0#0#0#199#0#5#0'<'#0#0#0#244#0#0 + +#0#243#0#0#0'L'#0#0#0#196#0#5#0'<'#0#0#0#245#0#0#0#244#0#0#0'Q'#0#0#0'>'#0#3 + +#0#229#0#0#0#245#0#0#0'A'#0#5#0'3'#0#0#0#246#0#0#0#229#0#0#0'2'#0#0#0'='#0#4 + +#0#6#0#0#0#247#0#0#0#246#0#0#0'A'#0#5#0'3'#0#0#0#248#0#0#0#229#0#0#0'6'#0#0#0 + +'='#0#4#0#6#0#0#0#249#0#0#0#248#0#0#0#197#0#5#0#6#0#0#0#250#0#0#0#247#0#0#0 + +#249#0#0#0'A'#0#5#0'3'#0#0#0#251#0#0#0#229#0#0#0'X'#0#0#0'='#0#4#0#6#0#0#0 + +#252#0#0#0#251#0#0#0#197#0#5#0#6#0#0#0#253#0#0#0#250#0#0#0#252#0#0#0'>'#0#3#0 + +#230#0#0#0#253#0#0#0'='#0#4#0#6#0#0#0#144#0#0#0#230#0#0#0'>'#0#3#0#146#0#0#0 + +#136#0#0#0'='#0#4#0#7#0#0#0#2#1#0#0#146#0#0#0'O'#0#9#0#28#0#0#0#3#1#0#0#2#1#0 + +#0#2#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#195#0#5#0#28#0#0#0#4#1#0#0#3#1#0#0 + +'b'#0#0#0'='#0#4#0#7#0#0#0#5#1#0#0#146#0#0#0'O'#0#9#0#28#0#0#0#6#1#0#0#5#1#0 + +#0#5#1#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#195#0#5#0#28#0#0#0#7#1#0#0#6#1#0#0 + +'f'#0#0#0#198#0#5#0#28#0#0#0#8#1#0#0#4#1#0#0#7#1#0#0'A'#0#5#0'3'#0#0#0#9#1#0 + +#0#146#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0#10#1#0#0#9#1#0#0#195#0#5#0#6#0#0#0#11 + +#1#0#0#10#1#0#0'N'#0#0#0'P'#0#7#0#28#0#0#0#12#1#0#0#24#0#0#0#11#1#0#0#24#0#0 + +#0#24#0#0#0#198#0#5#0#28#0#0#0#13#1#0#0#8#1#0#0#12#1#0#0#199#0#5#0#28#0#0#0 + +#14#1#0#0#13#1#0#0'#'#0#0#0#196#0#5#0#28#0#0#0#15#1#0#0#14#1#0#0'r'#0#0#0'O' + +#0#7#0#7#0#0#0#16#1#0#0#15#1#0#0#15#1#0#0#0#0#0#0#1#0#0#0'O'#0#7#0#7#0#0#0#17 + +#1#0#0#15#1#0#0#15#1#0#0#2#0#0#0#3#0#0#0#197#0#5#0#7#0#0#0#18#1#0#0#16#1#0#0 + +#17#1#0#0'>'#0#3#0#255#0#0#0#18#1#0#0'A'#0#5#0'3'#0#0#0#19#1#0#0#255#0#0#0'2' + +#0#0#0'='#0#4#0#6#0#0#0#20#1#0#0#19#1#0#0'A'#0#5#0'3'#0#0#0#21#1#0#0#255#0#0 + +#0'6'#0#0#0'='#0#4#0#6#0#0#0#22#1#0#0#21#1#0#0#197#0#5#0#6#0#0#0#23#1#0#0#20 + +#1#0#0#22#1#0#0'>'#0#3#0#0#1#0#0#23#1#0#0'='#0#4#0#6#0#0#0#148#0#0#0#0#1#0#0 + +#195#0#5#0#7#0#0#0#152#0#0#0#136#0#0#0#151#0#0#0'A'#0#5#0#160#0#0#0#161#0#0#0 + +#159#0#0#0#21#0#0#0'='#0#4#0#7#0#0#0#162#0#0#0#161#0#0#0#132#0#5#0#7#0#0#0 + +#163#0#0#0#152#0#0#0#162#0#0#0'>'#0#3#0#153#0#0#0#163#0#0#0#197#0#5#0#6#0#0#0 + +#167#0#0#0#140#0#0#0#144#0#0#0#197#0#5#0#6#0#0#0#169#0#0#0#167#0#0#0#148#0#0 + +#0'A'#0#5#0'3'#0#0#0#170#0#0#0#153#0#0#0'2'#0#0#0'='#0#4#0#6#0#0#0#171#0#0#0 + +#170#0#0#0'A'#0#5#0'3'#0#0#0#172#0#0#0#153#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0 + +#173#0#0#0#172#0#0#0#128#0#5#0#6#0#0#0#174#0#0#0#171#0#0#0#173#0#0#0#196#0#5 + +#0#6#0#0#0#176#0#0#0#174#0#0#0#175#0#0#0#197#0#5#0#6#0#0#0#177#0#0#0#169#0#0 + +#0#176#0#0#0'A'#0#6#0#185#0#0#0#186#0#0#0#183#0#0#0#24#0#0#0#177#0#0#0'='#0#4 + +#0'1'#0#0#0#187#0#0#0#186#0#0#0#12#0#6#0#156#0#0#0#191#0#0#0#1#0#0#0'@'#0#0#0 + +#187#0#0#0'O'#0#9#0#156#0#0#0#193#0#0#0#191#0#0#0#191#0#0#0#2#0#0#0#1#0#0#0#0 + +#0#0#0#3#0#0#0'A'#0#5#0#195#0#0#0#196#0#0#0#159#0#0#0#24#0#0#0'='#0#4#0#156#0 + +#0#0#197#0#0#0#196#0#0#0#12#0#7#0#156#0#0#0#198#0#0#0#1#0#0#0#26#0#0#0#193#0 + +#0#0#197#0#0#0'='#0#4#0#199#0#0#0#202#0#0#0#201#0#0#0'c'#0#4#0#202#0#0#0#136 + +#0#0#0#198#0#0#0#253#0#1#0'8'#0#1#0 +]); +LazarusResources.Add('FLIP_TILE_A8R8G8B8_SRGB_NEO','SPV',[ + #3#2'#'#7#0#0#1#0#10#0#8#0'!'#1#0#0#0#0#0#0#17#0#2#0#1#0#0#0#11#0#6#0#1#0#0#0 + +'GLSL.std.450'#0#0#0#0#14#0#3#0#0#0#0#0#1#0#0#0#15#0#6#0#5#0#0#0#4#0#0#0'mai' + +'n'#0#0#0#0#133#0#0#0#16#0#6#0#4#0#0#0#17#0#0#0#16#0#0#0#16#0#0#0#1#0#0#0'G' + +#0#4#0#133#0#0#0#11#0#0#0#28#0#0#0'H'#0#5#0#160#0#0#0#0#0#0#0'#'#0#0#0#0#0#0 + +#0'H'#0#5#0#160#0#0#0#1#0#0#0'#'#0#0#0#16#0#0#0'G'#0#3#0#160#0#0#0#2#0#0#0'G' + +#0#4#0#189#0#0#0#6#0#0#0#4#0#0#0'H'#0#4#0#190#0#0#0#0#0#0#0#24#0#0#0'H'#0#5#0 + +#190#0#0#0#0#0#0#0'#'#0#0#0#0#0#0#0'G'#0#3#0#190#0#0#0#3#0#0#0'G'#0#4#0#192#0 + +#0#0'"'#0#0#0#0#0#0#0'G'#0#4#0#192#0#0#0'!'#0#0#0#0#0#0#0'G'#0#4#0#210#0#0#0 + +'"'#0#0#0#0#0#0#0'G'#0#4#0#210#0#0#0'!'#0#0#0#1#0#0#0'G'#0#3#0#210#0#0#0#25#0 + +#0#0'G'#0#4#0#215#0#0#0#11#0#0#0#25#0#0#0#19#0#2#0#2#0#0#0'!'#0#3#0#3#0#0#0#2 + +#0#0#0#21#0#4#0#6#0#0#0' '#0#0#0#1#0#0#0#23#0#4#0#7#0#0#0#6#0#0#0#2#0#0#0' ' + +#0#4#0#8#0#0#0#7#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0#21#0#0#0#1#0#0#0','#0#5#0#7#0 + +#0#0#22#0#0#0#21#0#0#0#21#0#0#0'+'#0#4#0#6#0#0#0#24#0#0#0#0#0#0#0'+'#0#4#0#6 + +#0#0#0#25#0#0#0#2#0#0#0','#0#5#0#7#0#0#0#26#0#0#0#24#0#0#0#25#0#0#0#23#0#4#0 + +#28#0#0#0#6#0#0#0#4#0#0#0','#0#7#0#28#0#0#0'!'#0#0#0#21#0#0#0#25#0#0#0#21#0#0 + +#0#25#0#0#0','#0#7#0#28#0#0#0'#'#0#0#0#21#0#0#0#21#0#0#0#21#0#0#0#21#0#0#0'+' + +#0#4#0#6#0#0#0'%'#0#0#0#3#0#0#0'+'#0#4#0#6#0#0#0'&'#0#0#0#4#0#0#0'+'#0#4#0#6 + +#0#0#0''''#0#0#0#5#0#0#0','#0#7#0#28#0#0#0'('#0#0#0#21#0#0#0'%'#0#0#0'&'#0#0 + +#0''''#0#0#0#21#0#4#0'1'#0#0#0' '#0#0#0#0#0#0#0'+'#0#4#0'1'#0#0#0'2'#0#0#0#0 + +#0#0#0' '#0#4#0'3'#0#0#0#7#0#0#0#6#0#0#0'+'#0#4#0'1'#0#0#0'6'#0#0#0#1#0#0#0 + +'+'#0#4#0#6#0#0#0'?'#0#0#0#6#0#0#0','#0#7#0#28#0#0#0'@'#0#0#0'%'#0#0#0'&'#0#0 + +#0''''#0#0#0'?'#0#0#0','#0#7#0#28#0#0#0'D'#0#0#0'%'#0#0#0'&'#0#0#0''''#0#0#0 + +''''#0#0#0'+'#0#4#0#6#0#0#0'M'#0#0#0#7#0#0#0'+'#0#4#0#6#0#0#0'N'#0#0#0#8#0#0 + +#0'+'#0#4#0#6#0#0#0'O'#0#0#0#9#0#0#0','#0#7#0#28#0#0#0'P'#0#0#0'?'#0#0#0'M'#0 + +#0#0'N'#0#0#0'O'#0#0#0#23#0#4#0'_'#0#0#0#6#0#0#0#3#0#0#0' '#0#4#0'`'#0#0#0#7 + +#0#0#0'_'#0#0#0','#0#6#0'_'#0#0#0'd'#0#0#0'M'#0#0#0'N'#0#0#0'O'#0#0#0','#0#6 + +#0'_'#0#0#0'h'#0#0#0'?'#0#0#0''''#0#0#0'&'#0#0#0','#0#6#0'_'#0#0#0'p'#0#0#0 + +#21#0#0#0#21#0#0#0#21#0#0#0'+'#0#4#0#6#0#0#0'r'#0#0#0#10#0#0#0'+'#0#4#0#6#0#0 + +#0's'#0#0#0#11#0#0#0'+'#0#4#0#6#0#0#0't'#0#0#0#12#0#0#0','#0#6#0'_'#0#0#0'u' + +#0#0#0'r'#0#0#0's'#0#0#0't'#0#0#0'+'#0#4#0'1'#0#0#0'|'#0#0#0#2#0#0#0#23#0#4#0 + +#131#0#0#0'1'#0#0#0#3#0#0#0' '#0#4#0#132#0#0#0#1#0#0#0#131#0#0#0';'#0#4#0#132 + +#0#0#0#133#0#0#0#1#0#0#0#23#0#4#0#134#0#0#0'1'#0#0#0#2#0#0#0','#0#7#0#28#0#0 + +#0#153#0#0#0'M'#0#0#0'M'#0#0#0'M'#0#0#0'%'#0#0#0#22#0#3#0#158#0#0#0' '#0#0#0 + +#23#0#4#0#159#0#0#0#158#0#0#0#4#0#0#0#30#0#4#0#160#0#0#0#159#0#0#0#7#0#0#0' ' + +#0#4#0#161#0#0#0#9#0#0#0#160#0#0#0';'#0#4#0#161#0#0#0#162#0#0#0#9#0#0#0' '#0 + +#4#0#163#0#0#0#9#0#0#0#7#0#0#0','#0#5#0#7#0#0#0#170#0#0#0#21#0#0#0#25#0#0#0 + +'+'#0#4#0#6#0#0#0#184#0#0#0#13#0#0#0#29#0#3#0#189#0#0#0'1'#0#0#0#30#0#3#0#190 + +#0#0#0#189#0#0#0' '#0#4#0#191#0#0#0#2#0#0#0#190#0#0#0';'#0#4#0#191#0#0#0#192 + +#0#0#0#2#0#0#0' '#0#4#0#194#0#0#0#2#0#0#0'1'#0#0#0' '#0#4#0#204#0#0#0#9#0#0#0 + +#159#0#0#0#25#0#9#0#208#0#0#0#158#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2#0#0 + +#0#4#0#0#0' '#0#4#0#209#0#0#0#0#0#0#0#208#0#0#0';'#0#4#0#209#0#0#0#210#0#0#0 + +#0#0#0#0'+'#0#4#0'1'#0#0#0#214#0#0#0#16#0#0#0','#0#6#0#131#0#0#0#215#0#0#0 + +#214#0#0#0#214#0#0#0'6'#0#0#0'6'#0#5#0#2#0#0#0#4#0#0#0#0#0#0#0#3#0#0#0#248#0 + +#2#0#5#0#0#0';'#0#4#0'`'#0#0#0#8#1#0#0#7#0#0#0';'#0#4#0'3'#0#0#0#9#1#0#0#7#0 + +#0#0';'#0#4#0#8#0#0#0#239#0#0#0#7#0#0#0';'#0#4#0'3'#0#0#0#240#0#0#0#7#0#0#0 + +';'#0#4#0#8#0#0#0#216#0#0#0#7#0#0#0';'#0#4#0'3'#0#0#0#218#0#0#0#7#0#0#0';'#0 + +#4#0#8#0#0#0#139#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#143#0#0#0#7#0#0#0';'#0#4#0#8 + +#0#0#0#147#0#0#0#7#0#0#0';'#0#4#0#8#0#0#0#155#0#0#0#7#0#0#0'='#0#4#0#131#0#0 + +#0#135#0#0#0#133#0#0#0'O'#0#7#0#134#0#0#0#136#0#0#0#135#0#0#0#135#0#0#0#0#0#0 + +#0#1#0#0#0'|'#0#4#0#7#0#0#0#137#0#0#0#136#0#0#0'>'#0#3#0#139#0#0#0#137#0#0#0 + +'='#0#4#0#7#0#0#0#220#0#0#0#139#0#0#0#199#0#5#0#7#0#0#0#221#0#0#0#220#0#0#0 + +#22#0#0#0#196#0#5#0#7#0#0#0#222#0#0#0#221#0#0#0#26#0#0#0'>'#0#3#0#216#0#0#0 + +#222#0#0#0'='#0#4#0#7#0#0#0#223#0#0#0#139#0#0#0'O'#0#9#0#28#0#0#0#224#0#0#0 + +#223#0#0#0#223#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#0#195#0#5#0#28#0#0#0#225#0 + +#0#0#224#0#0#0'!'#0#0#0#199#0#5#0#28#0#0#0#226#0#0#0#225#0#0#0'#'#0#0#0#196#0 + +#5#0#28#0#0#0#227#0#0#0#226#0#0#0'('#0#0#0'='#0#4#0#7#0#0#0#228#0#0#0#216#0#0 + +#0'O'#0#7#0#7#0#0#0#229#0#0#0#227#0#0#0#227#0#0#0#0#0#0#0#1#0#0#0#197#0#5#0#7 + +#0#0#0#230#0#0#0#228#0#0#0#229#0#0#0'O'#0#7#0#7#0#0#0#231#0#0#0#227#0#0#0#227 + +#0#0#0#2#0#0#0#3#0#0#0#197#0#5#0#7#0#0#0#232#0#0#0#230#0#0#0#231#0#0#0'>'#0#3 + +#0#216#0#0#0#232#0#0#0'A'#0#5#0'3'#0#0#0#233#0#0#0#216#0#0#0'2'#0#0#0'='#0#4 + +#0#6#0#0#0#234#0#0#0#233#0#0#0'A'#0#5#0'3'#0#0#0#235#0#0#0#216#0#0#0'6'#0#0#0 + +'='#0#4#0#6#0#0#0#236#0#0#0#235#0#0#0#197#0#5#0#6#0#0#0#237#0#0#0#234#0#0#0 + +#236#0#0#0'>'#0#3#0#218#0#0#0#237#0#0#0'='#0#4#0#6#0#0#0#141#0#0#0#218#0#0#0 + +'>'#0#3#0#143#0#0#0#137#0#0#0'='#0#4#0#7#0#0#0#242#0#0#0#143#0#0#0'O'#0#9#0 + ,#28#0#0#0#243#0#0#0#242#0#0#0#242#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#195#0 + +#5#0#28#0#0#0#244#0#0#0#243#0#0#0'@'#0#0#0'='#0#4#0#7#0#0#0#245#0#0#0#143#0#0 + +#0'O'#0#9#0#28#0#0#0#246#0#0#0#245#0#0#0#245#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1 + +#0#0#0#195#0#5#0#28#0#0#0#247#0#0#0#246#0#0#0'D'#0#0#0#198#0#5#0#28#0#0#0#248 + +#0#0#0#244#0#0#0#247#0#0#0'A'#0#5#0'3'#0#0#0#249#0#0#0#143#0#0#0'2'#0#0#0'=' + +#0#4#0#6#0#0#0#250#0#0#0#249#0#0#0#195#0#5#0#6#0#0#0#251#0#0#0#250#0#0#0'&'#0 + +#0#0'P'#0#7#0#28#0#0#0#252#0#0#0#251#0#0#0#24#0#0#0#24#0#0#0#24#0#0#0#198#0#5 + +#0#28#0#0#0#253#0#0#0#248#0#0#0#252#0#0#0#199#0#5#0#28#0#0#0#254#0#0#0#253#0 + +#0#0'#'#0#0#0#196#0#5#0#28#0#0#0#255#0#0#0#254#0#0#0'P'#0#0#0'O'#0#7#0#7#0#0 + +#0#0#1#0#0#255#0#0#0#255#0#0#0#0#0#0#0#1#0#0#0'O'#0#7#0#7#0#0#0#1#1#0#0#255#0 + +#0#0#255#0#0#0#2#0#0#0#3#0#0#0#197#0#5#0#7#0#0#0#2#1#0#0#0#1#0#0#1#1#0#0'>'#0 + +#3#0#239#0#0#0#2#1#0#0'A'#0#5#0'3'#0#0#0#3#1#0#0#239#0#0#0'2'#0#0#0'='#0#4#0 + +#6#0#0#0#4#1#0#0#3#1#0#0'A'#0#5#0'3'#0#0#0#5#1#0#0#239#0#0#0'6'#0#0#0'='#0#4 + +#0#6#0#0#0#6#1#0#0#5#1#0#0#197#0#5#0#6#0#0#0#7#1#0#0#4#1#0#0#6#1#0#0'>'#0#3#0 + +#240#0#0#0#7#1#0#0'='#0#4#0#6#0#0#0#145#0#0#0#240#0#0#0'>'#0#3#0#147#0#0#0 + +#137#0#0#0'='#0#4#0#7#0#0#0#11#1#0#0#147#0#0#0'O'#0#8#0'_'#0#0#0#12#1#0#0#11 + +#1#0#0#11#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#195#0#5#0'_'#0#0#0#13#1#0#0#12#1#0#0 + +'d'#0#0#0'='#0#4#0#7#0#0#0#14#1#0#0#147#0#0#0'O'#0#8#0'_'#0#0#0#15#1#0#0#14#1 + +#0#0#14#1#0#0#1#0#0#0#1#0#0#0#1#0#0#0#195#0#5#0'_'#0#0#0#16#1#0#0#15#1#0#0'h' + +#0#0#0#198#0#5#0'_'#0#0#0#17#1#0#0#13#1#0#0#16#1#0#0'A'#0#5#0'3'#0#0#0#18#1#0 + +#0#147#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0#19#1#0#0#18#1#0#0#195#0#5#0#6#0#0#0#20 + +#1#0#0#19#1#0#0'?'#0#0#0'P'#0#6#0'_'#0#0#0#21#1#0#0#24#0#0#0#20#1#0#0#24#0#0 + +#0#198#0#5#0'_'#0#0#0#22#1#0#0#17#1#0#0#21#1#0#0#199#0#5#0'_'#0#0#0#23#1#0#0 + +#22#1#0#0'p'#0#0#0#196#0#5#0'_'#0#0#0#24#1#0#0#23#1#0#0'u'#0#0#0'>'#0#3#0#8#1 + +#0#0#24#1#0#0'A'#0#5#0'3'#0#0#0#25#1#0#0#8#1#0#0'2'#0#0#0'='#0#4#0#6#0#0#0#26 + +#1#0#0#25#1#0#0'A'#0#5#0'3'#0#0#0#27#1#0#0#8#1#0#0'6'#0#0#0'='#0#4#0#6#0#0#0 + +#28#1#0#0#27#1#0#0#197#0#5#0#6#0#0#0#29#1#0#0#26#1#0#0#28#1#0#0'A'#0#5#0'3'#0 + +#0#0#30#1#0#0#8#1#0#0'|'#0#0#0'='#0#4#0#6#0#0#0#31#1#0#0#30#1#0#0#197#0#5#0#6 + +#0#0#0' '#1#0#0#29#1#0#0#31#1#0#0'>'#0#3#0#9#1#0#0' '#1#0#0'='#0#4#0#6#0#0#0 + +#149#0#0#0#9#1#0#0'O'#0#9#0#28#0#0#0#152#0#0#0#137#0#0#0#137#0#0#0#0#0#0#0#1 + +#0#0#0#0#0#0#0#1#0#0#0#195#0#5#0#28#0#0#0#154#0#0#0#152#0#0#0#153#0#0#0'O'#0 + +#7#0#7#0#0#0#157#0#0#0#154#0#0#0#154#0#0#0#0#0#0#0#1#0#0#0'A'#0#5#0#163#0#0#0 + +#164#0#0#0#162#0#0#0#21#0#0#0'='#0#4#0#7#0#0#0#165#0#0#0#164#0#0#0#132#0#5#0 + +#7#0#0#0#166#0#0#0#157#0#0#0#165#0#0#0#196#0#5#0#7#0#0#0#167#0#0#0#166#0#0#0 + +#22#0#0#0'O'#0#7#0#7#0#0#0#169#0#0#0#154#0#0#0#154#0#0#0#2#0#0#0#3#0#0#0#139 + +#0#5#0#7#0#0#0#171#0#0#0#169#0#0#0#170#0#0#0#128#0#5#0#7#0#0#0#172#0#0#0#167 + +#0#0#0#171#0#0#0'>'#0#3#0#155#0#0#0#172#0#0#0#197#0#5#0#6#0#0#0#176#0#0#0#141 + +#0#0#0#145#0#0#0#197#0#5#0#6#0#0#0#178#0#0#0#176#0#0#0#149#0#0#0'A'#0#5#0'3' + +#0#0#0#179#0#0#0#155#0#0#0'2'#0#0#0'='#0#4#0#6#0#0#0#180#0#0#0#179#0#0#0'A'#0 + +#5#0'3'#0#0#0#181#0#0#0#155#0#0#0'6'#0#0#0'='#0#4#0#6#0#0#0#182#0#0#0#181#0#0 + +#0#128#0#5#0#6#0#0#0#183#0#0#0#180#0#0#0#182#0#0#0#196#0#5#0#6#0#0#0#185#0#0 + +#0#183#0#0#0#184#0#0#0#197#0#5#0#6#0#0#0#186#0#0#0#178#0#0#0#185#0#0#0'A'#0#6 + +#0#194#0#0#0#195#0#0#0#192#0#0#0#24#0#0#0#186#0#0#0'='#0#4#0'1'#0#0#0#196#0#0 + +#0#195#0#0#0#12#0#6#0#159#0#0#0#200#0#0#0#1#0#0#0'@'#0#0#0#196#0#0#0'O'#0#9#0 + +#159#0#0#0#202#0#0#0#200#0#0#0#200#0#0#0#2#0#0#0#1#0#0#0#0#0#0#0#3#0#0#0'A'#0 + +#5#0#204#0#0#0#205#0#0#0#162#0#0#0#24#0#0#0'='#0#4#0#159#0#0#0#206#0#0#0#205 + +#0#0#0#12#0#7#0#159#0#0#0#207#0#0#0#1#0#0#0#26#0#0#0#202#0#0#0#206#0#0#0'='#0 + +#4#0#208#0#0#0#211#0#0#0#210#0#0#0'c'#0#4#0#211#0#0#0#137#0#0#0#207#0#0#0#253 + +#0#1#0'8'#0#1#0 +]); diff --git a/shaders/shaders.pas b/shaders/shaders.pas new file mode 100644 index 0000000..bf49063 --- /dev/null +++ b/shaders/shaders.pas @@ -0,0 +1,25 @@ +unit shaders; + +{$mode ObjFPC}{$H+} + +interface + +uses + LResources, + Classes, + SysUtils; + +function GetResourceStream(const ResName:string;ResType:PChar=nil):TStream; + +implementation + +function GetResourceStream(const ResName:string;ResType:PChar=nil):TStream; +begin + Result:=TLazarusResourceStream.Create(ResName,ResType); +end; + +initialization + {$I shaders.lrs} + +end. + diff --git a/vulkan/vFlip.pas b/vulkan/vFlip.pas index 54e232c..aaab21c 100644 --- a/vulkan/vFlip.pas +++ b/vulkan/vFlip.pas @@ -342,7 +342,7 @@ begin FreeAndNil(Ffilp_shader); Ffilp_shader:=TvShaderCompute.Create; - Ffilp_shader.LoadFromFile('shaders\FLIP_LINE_A8R8G8B8_SRGB.spv'); + Ffilp_shader.LoadFromResource('FLIP_LINE_A8R8G8B8_SRGB'); FPipelineFlip.SetShader(Ffilp_shader); end; else @@ -360,10 +360,10 @@ begin if FNeoMode then begin - Ffilp_shader.LoadFromFile('shaders\FLIP_TILE_A8R8G8B8_SRGB_NEO.spv'); + Ffilp_shader.LoadFromResource('FLIP_TILE_A8R8G8B8_SRGB_NEO'); end else begin - Ffilp_shader.LoadFromFile('shaders\FLIP_TILE_A8R8G8B8_SRGB.spv'); + Ffilp_shader.LoadFromResource('FLIP_TILE_A8R8G8B8_SRGB'); end; FPipelineFlip.SetShader(Ffilp_shader); @@ -381,7 +381,7 @@ begin Assert(false,'TODO'); end else begin - Ffilp_shader.LoadFromFile('shaders\FLIP_TILE_A8B8G8R8_SRGB.spv'); + Ffilp_shader.LoadFromResource('FLIP_TILE_A8B8G8R8_SRGB'); end; FPipelineFlip.SetShader(Ffilp_shader); @@ -543,7 +543,7 @@ begin if (Fcursor_shader=nil) then begin Fcursor_shader:=TvShaderCompute.Create; - Fcursor_shader.LoadFromFile('shaders\FLIP_CURSOR.spv'); + Fcursor_shader.LoadFromResource('FLIP_CURSOR'); FPipelineCursor.SetShader(Fcursor_shader); end; diff --git a/vulkan/vShader.pas b/vulkan/vShader.pas index e2ea35e..2375aeb 100644 --- a/vulkan/vShader.pas +++ b/vulkan/vShader.pas @@ -5,7 +5,11 @@ unit vShader; interface uses - Classes, SysUtils, vulkan, vDevice; + Classes, + SysUtils, + shaders, + vulkan, + vDevice; type TvSupportDescriptorType=array[0..1] of TVkDescriptorType; @@ -29,6 +33,7 @@ type procedure LoadFromMemory(data:Pointer;size:Ptruint); procedure LoadFromStream(Stream:TStream); procedure LoadFromFile(const FileName:RawByteString); + procedure LoadFromResource(const FileName:RawByteString); procedure Parse(data:Pointer;size:Ptruint); procedure OnEntryPoint(Stage:DWORD;P:PChar); virtual; procedure OnSourceExtension(P:PChar); virtual; @@ -126,6 +131,14 @@ begin FileClose(F); end; +procedure TvShader.LoadFromResource(const FileName:RawByteString); +var + Stream:TStream; +begin + Stream:=GetResourceStream(FileName,'SPV'); + LoadFromStream(Stream); +end; + type PSPIRVHeader=^TSPIRVHeader; TSPIRVHeader=packed record