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