Precompile shaders

This commit is contained in:
Pavel 2022-12-01 13:41:48 +03:00
parent cb7b624e3d
commit d698001d06
11 changed files with 512 additions and 12 deletions

View File

@ -31,7 +31,7 @@
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item1> </Item1>
</RequiredPackages> </RequiredPackages>
<Units Count="94"> <Units Count="98">
<Unit0> <Unit0>
<Filename Value="fpPS4.lpr"/> <Filename Value="fpPS4.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
@ -431,6 +431,24 @@
<Filename Value="sys\sys_path.pas"/> <Filename Value="sys\sys_path.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
</Unit93> </Unit93>
<Unit94>
<Filename Value="kernel\ps4_mspace.pas"/>
<IsPartOfProject Value="True"/>
</Unit94>
<Unit95>
<Filename Value="src\ps4_libscerudp.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ps4_libSceRudp"/>
</Unit95>
<Unit96>
<Filename Value="src\ps4_libscevoice.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ps4_libSceVoice"/>
</Unit96>
<Unit97>
<Filename Value="shaders\shaders.pas"/>
<IsPartOfProject Value="True"/>
</Unit97>
</Units> </Units>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>
@ -442,7 +460,7 @@
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir);kernel;src\ajm;sys"/> <IncludeFiles Value="$(ProjOutDir);kernel;src\ajm;sys"/>
<Libraries Value="static"/> <Libraries Value="static"/>
<OtherUnitFiles Value="rtl;sys;vulkan;chip;spirv;kernel;src;src\ajm;src\audio;src\np"/> <OtherUnitFiles Value="rtl;sys;vulkan;chip;spirv;kernel;src;src\ajm;src\audio;src\np;shaders"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths> </SearchPaths>
<Parsing> <Parsing>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,19 +1,32 @@
@echo off @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 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 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 pause
exit exit
:compil :build
echo %2 Set lrs=%lrs% %2.spv
%spirvgls% %1 -o %2.spv %spirvgls% %1 -o %2.spv
%spirvopt% %2.spv -o %2.spv %spirvopt% %2.spv -o %2.spv
exit /b exit /b

431
shaders/shaders.lrs Normal file
View File

@ -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
]);

25
shaders/shaders.pas Normal file
View File

@ -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.

View File

@ -342,7 +342,7 @@ begin
FreeAndNil(Ffilp_shader); FreeAndNil(Ffilp_shader);
Ffilp_shader:=TvShaderCompute.Create; Ffilp_shader:=TvShaderCompute.Create;
Ffilp_shader.LoadFromFile('shaders\FLIP_LINE_A8R8G8B8_SRGB.spv'); Ffilp_shader.LoadFromResource('FLIP_LINE_A8R8G8B8_SRGB');
FPipelineFlip.SetShader(Ffilp_shader); FPipelineFlip.SetShader(Ffilp_shader);
end; end;
else else
@ -360,10 +360,10 @@ begin
if FNeoMode then if FNeoMode then
begin begin
Ffilp_shader.LoadFromFile('shaders\FLIP_TILE_A8R8G8B8_SRGB_NEO.spv'); Ffilp_shader.LoadFromResource('FLIP_TILE_A8R8G8B8_SRGB_NEO');
end else end else
begin begin
Ffilp_shader.LoadFromFile('shaders\FLIP_TILE_A8R8G8B8_SRGB.spv'); Ffilp_shader.LoadFromResource('FLIP_TILE_A8R8G8B8_SRGB');
end; end;
FPipelineFlip.SetShader(Ffilp_shader); FPipelineFlip.SetShader(Ffilp_shader);
@ -381,7 +381,7 @@ begin
Assert(false,'TODO'); Assert(false,'TODO');
end else end else
begin begin
Ffilp_shader.LoadFromFile('shaders\FLIP_TILE_A8B8G8R8_SRGB.spv'); Ffilp_shader.LoadFromResource('FLIP_TILE_A8B8G8R8_SRGB');
end; end;
FPipelineFlip.SetShader(Ffilp_shader); FPipelineFlip.SetShader(Ffilp_shader);
@ -543,7 +543,7 @@ begin
if (Fcursor_shader=nil) then if (Fcursor_shader=nil) then
begin begin
Fcursor_shader:=TvShaderCompute.Create; Fcursor_shader:=TvShaderCompute.Create;
Fcursor_shader.LoadFromFile('shaders\FLIP_CURSOR.spv'); Fcursor_shader.LoadFromResource('FLIP_CURSOR');
FPipelineCursor.SetShader(Fcursor_shader); FPipelineCursor.SetShader(Fcursor_shader);
end; end;

View File

@ -5,7 +5,11 @@ unit vShader;
interface interface
uses uses
Classes, SysUtils, vulkan, vDevice; Classes,
SysUtils,
shaders,
vulkan,
vDevice;
type type
TvSupportDescriptorType=array[0..1] of TVkDescriptorType; TvSupportDescriptorType=array[0..1] of TVkDescriptorType;
@ -29,6 +33,7 @@ type
procedure LoadFromMemory(data:Pointer;size:Ptruint); procedure LoadFromMemory(data:Pointer;size:Ptruint);
procedure LoadFromStream(Stream:TStream); procedure LoadFromStream(Stream:TStream);
procedure LoadFromFile(const FileName:RawByteString); procedure LoadFromFile(const FileName:RawByteString);
procedure LoadFromResource(const FileName:RawByteString);
procedure Parse(data:Pointer;size:Ptruint); procedure Parse(data:Pointer;size:Ptruint);
procedure OnEntryPoint(Stage:DWORD;P:PChar); virtual; procedure OnEntryPoint(Stage:DWORD;P:PChar); virtual;
procedure OnSourceExtension(P:PChar); virtual; procedure OnSourceExtension(P:PChar); virtual;
@ -126,6 +131,14 @@ begin
FileClose(F); FileClose(F);
end; end;
procedure TvShader.LoadFromResource(const FileName:RawByteString);
var
Stream:TStream;
begin
Stream:=GetResourceStream(FileName,'SPV');
LoadFromStream(Stream);
end;
type type
PSPIRVHeader=^TSPIRVHeader; PSPIRVHeader=^TSPIRVHeader;
TSPIRVHeader=packed record TSPIRVHeader=packed record