commit 3f35f0572096f172faf46f765d1b328b86db1d82
parent 1bf4df5febd6735dff817a2e6daa02b2987d9f3b
Author: Brian Swetland <swetland@frotz.net>
Date: Sun, 16 Jun 2013 15:03:43 -0700
simplify - remove all the D3D stuff
Diffstat:
16 files changed, 214 insertions(+), 4257 deletions(-)
diff --git a/common/TextPS.h b/common/TextPS.h
@@ -1,523 +0,0 @@
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
-//
-//
-// fxc /nologo /Emain /T ps_4_0 /Fh C:\Work\graphics\Debug\TextPS.h /Fo
-// C:\Work\graphics\Debug\TextPS.cso /Vn codeTextPS /Od /Zi
-// ..\common\TextPS.hlsl
-//
-//
-// Resource Bindings:
-//
-// Name Type Format Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// samLinear sampler NA NA 0 1
-// Texture0 texture float4 2d 0 1
-//
-//
-//
-// Input signature:
-//
-// Name Index Mask Register SysValue Format Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION 0 xyzw 0 POS float
-// TEXCOORD 0 xy 1 NONE float xy
-//
-//
-// Output signature:
-//
-// Name Index Mask Register SysValue Format Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_Target 0 xyzw 0 TARGET float xyzw
-//
-ps_4_0
-dcl_sampler s0, mode_default
-dcl_resource_texture2d (float,float,float,float) t0
-dcl_input_ps linear v1.xy
-dcl_output o0.xyzw
-
-#line 12 "C:\Work\graphics\common\TextPS.hlsl"
-sample o0.xyzw, v1.xyxx, t0.xyzw, s0 // main<0:Inf,1:Inf,2:Inf,3:Inf>
-ret
-// Approximately 2 instruction slots used
-#endif
-
-const BYTE codeTextPS[] =
-{
- 68, 88, 66, 67, 115, 168,
- 18, 253, 246, 81, 130, 62,
- 206, 239, 145, 164, 250, 204,
- 121, 18, 1, 0, 0, 0,
- 34, 11, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 224, 0, 0, 0, 56, 1,
- 0, 0, 108, 1, 0, 0,
- 216, 1, 0, 0, 84, 2,
- 0, 0, 82, 68, 69, 70,
- 160, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 28, 0,
- 0, 0, 0, 4, 255, 255,
- 5, 1, 0, 0, 111, 0,
- 0, 0, 92, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 102, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 12, 0, 0, 0,
- 115, 97, 109, 76, 105, 110,
- 101, 97, 114, 0, 84, 101,
- 120, 116, 117, 114, 101, 48,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 57, 46, 50, 57, 46, 57,
- 53, 50, 46, 51, 49, 49,
- 49, 0, 73, 83, 71, 78,
- 80, 0, 0, 0, 2, 0,
- 0, 0, 8, 0, 0, 0,
- 56, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 3, 0, 0,
- 83, 86, 95, 80, 79, 83,
- 73, 84, 73, 79, 78, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 79, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 83, 86,
- 95, 84, 97, 114, 103, 101,
- 116, 0, 171, 171, 83, 72,
- 68, 82, 100, 0, 0, 0,
- 64, 0, 0, 0, 25, 0,
- 0, 0, 90, 0, 0, 3,
- 0, 96, 16, 0, 0, 0,
- 0, 0, 88, 24, 0, 4,
- 0, 112, 16, 0, 0, 0,
- 0, 0, 85, 85, 0, 0,
- 98, 16, 0, 3, 50, 16,
- 16, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 69, 0, 0, 9, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 1, 0,
- 0, 0, 70, 126, 16, 0,
- 0, 0, 0, 0, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 62, 0, 0, 1, 83, 84,
- 65, 84, 116, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 83, 68, 66, 71,
- 198, 8, 0, 0, 84, 0,
- 0, 0, 65, 1, 0, 0,
- 114, 1, 0, 0, 119, 1,
- 0, 0, 5, 1, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 16, 0, 0, 0, 12, 0,
- 0, 0, 40, 3, 0, 0,
- 4, 0, 0, 0, 72, 4,
- 0, 0, 11, 0, 0, 0,
- 168, 4, 0, 0, 3, 0,
- 0, 0, 132, 5, 0, 0,
- 6, 0, 0, 0, 192, 5,
- 0, 0, 200, 6, 0, 0,
- 244, 6, 0, 0, 0, 0,
- 0, 0, 35, 0, 0, 0,
- 35, 0, 0, 0, 241, 0,
- 0, 0, 0, 0, 0, 0,
- 69, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 3, 0, 0, 0,
- 8, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 128, 255, 255,
- 255, 127, 0, 0, 128, 255,
- 0, 0, 128, 127, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 9, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 128, 255, 255,
- 255, 127, 0, 0, 128, 255,
- 0, 0, 128, 127, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 10, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 128, 255, 255,
- 255, 127, 0, 0, 128, 255,
- 0, 0, 128, 127, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 11, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 128, 255, 255,
- 255, 127, 0, 0, 128, 255,
- 0, 0, 128, 127, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 10, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 36, 0, 0, 0,
- 3, 0, 0, 0, 24, 0,
- 0, 0, 1, 0, 0, 0,
- 62, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 10, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 36, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 8, 0, 0, 0,
- 7, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 9, 0, 0, 0,
- 10, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 5, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 5, 0, 0, 0, 1, 0,
- 0, 0, 6, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 5, 0, 0, 0, 2, 0,
- 0, 0, 6, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 5, 0, 0, 0, 3, 0,
- 0, 0, 6, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 6, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 5, 0, 0, 0, 5, 0,
- 0, 0, 7, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 7, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 4, 0, 0, 0, 1, 0,
- 0, 0, 7, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 4, 0, 0, 0, 2, 0,
- 0, 0, 7, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 4, 0, 0, 0, 3, 0,
- 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 1, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 7, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 1, 0, 0, 0,
- 1, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 6, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 1, 0, 0, 0,
- 7, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 7, 0, 0, 0, 8, 0,
- 0, 0, 19, 0, 0, 0,
- 27, 1, 0, 0, 0, 0,
- 0, 0, 8, 0, 0, 0,
- 8, 0, 0, 0, 19, 0,
- 0, 0, 46, 1, 0, 0,
- 0, 0, 0, 0, 11, 0,
- 0, 0, 22, 0, 0, 0,
- 5, 0, 0, 0, 198, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 10, 0,
- 0, 0, 8, 0, 0, 0,
- 47, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 13, 0, 0, 0, 9, 0,
- 0, 0, 73, 0, 0, 0,
- 0, 0, 0, 0, 11, 0,
- 0, 0, 7, 0, 0, 0,
- 4, 0, 0, 0, 183, 0,
- 0, 0, 0, 0, 0, 0,
- 11, 0, 0, 0, 22, 0,
- 0, 0, 5, 0, 0, 0,
- 198, 0, 0, 0, 0, 0,
- 0, 0, 11, 0, 0, 0,
- 7, 0, 0, 0, 4, 0,
- 0, 0, 183, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 10, 0, 0, 0,
- 8, 0, 0, 0, 47, 0,
- 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 13, 0,
- 0, 0, 9, 0, 0, 0,
- 73, 0, 0, 0, 0, 0,
- 0, 0, 12, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 94, 0,
- 0, 0, 9, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 183, 0, 0, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 0, 0,
- 0, 0, 20, 1, 0, 0,
- 7, 0, 0, 0, 3, 0,
- 0, 0, 12, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 255, 255,
- 255, 255, 5, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 8, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0,
- 0, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 5, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 5, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 67, 58, 92, 87,
- 111, 114, 107, 92, 103, 114,
- 97, 112, 104, 105, 99, 115,
- 92, 99, 111, 109, 109, 111,
- 110, 92, 84, 101, 120, 116,
- 80, 83, 46, 104, 108, 115,
- 108, 13, 10, 84, 101, 120,
- 116, 117, 114, 101, 50, 68,
- 32, 84, 101, 120, 116, 117,
- 114, 101, 48, 59, 13, 10,
- 13, 10, 83, 97, 109, 112,
- 108, 101, 114, 83, 116, 97,
- 116, 101, 32, 115, 97, 109,
- 76, 105, 110, 101, 97, 114,
- 59, 13, 10, 13, 10, 115,
- 116, 114, 117, 99, 116, 32,
- 86, 83, 95, 79, 85, 84,
- 80, 85, 84, 32, 123, 13,
- 10, 9, 102, 108, 111, 97,
- 116, 52, 32, 80, 111, 115,
- 105, 116, 105, 111, 110, 32,
- 58, 32, 83, 86, 95, 80,
- 79, 83, 73, 84, 73, 79,
- 78, 59, 13, 10, 9, 102,
- 108, 111, 97, 116, 50, 32,
- 84, 101, 120, 67, 111, 111,
- 114, 100, 32, 58, 32, 84,
- 69, 88, 67, 79, 79, 82,
- 68, 59, 13, 10, 125, 59,
- 13, 10, 13, 10, 102, 108,
- 111, 97, 116, 52, 32, 109,
- 97, 105, 110, 40, 86, 83,
- 95, 79, 85, 84, 80, 85,
- 84, 32, 105, 110, 112, 117,
- 116, 41, 32, 58, 32, 83,
- 86, 95, 84, 97, 114, 103,
- 101, 116, 32, 123, 13, 10,
- 9, 114, 101, 116, 117, 114,
- 110, 32, 84, 101, 120, 116,
- 117, 114, 101, 48, 46, 83,
- 97, 109, 112, 108, 101, 40,
- 115, 97, 109, 76, 105, 110,
- 101, 97, 114, 44, 32, 105,
- 110, 112, 117, 116, 46, 84,
- 101, 120, 67, 111, 111, 114,
- 100, 41, 59, 13, 10, 125,
- 13, 10, 71, 108, 111, 98,
- 97, 108, 115, 86, 83, 95,
- 79, 85, 84, 80, 85, 84,
- 58, 58, 80, 111, 115, 105,
- 116, 105, 111, 110, 86, 83,
- 95, 79, 85, 84, 80, 85,
- 84, 58, 58, 84, 101, 120,
- 67, 111, 111, 114, 100, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 57, 46,
- 50, 57, 46, 57, 53, 50,
- 46, 51, 49, 49, 49, 0,
- 109, 97, 105, 110, 0, 112,
- 115, 95, 52, 95, 48, 0
-};
diff --git a/common/TextVS.h b/common/TextVS.h
@@ -1,2435 +0,0 @@
-#if 0
-//
-// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
-//
-//
-// fxc /nologo /Emain /T vs_4_0 /Fh C:\Work\graphics\Debug\TextVS.h /Fo
-// C:\Work\graphics\Debug\TextVS.cso /Vn codeTextVS /Zi
-// ..\common\TextVS.hlsl
-//
-//
-// Buffer Definitions:
-//
-// cbuffer cb0
-// {
-//
-// float4x4 MVP; // Offset: 0 Size: 64
-// uint cw; // Offset: 64 Size: 4
-// uint ch; // Offset: 68 Size: 4
-//
-// }
-//
-//
-// Resource Bindings:
-//
-// Name Type Format Dim Slot Elements
-// ------------------------------ ---------- ------- ----------- ---- --------
-// cb0 cbuffer NA NA 0 1
-//
-//
-//
-// Input signature:
-//
-// Name Index Mask Register SysValue Format Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// POSITION 0 xyzw 0 NONE float xyzw
-// TEXCOORD 0 xy 1 NONE float xy
-// CHARACTER 0 x 2 NONE uint x
-// SV_INSTANCEID 0 x 3 INSTID uint x
-//
-//
-// Output signature:
-//
-// Name Index Mask Register SysValue Format Used
-// -------------------- ----- ------ -------- -------- ------ ------
-// SV_POSITION 0 xyzw 0 POS float xyzw
-// TEXCOORD 0 xy 1 NONE float xy
-//
-vs_4_0
-dcl_constantbuffer cb0[5], immediateIndexed
-dcl_input v0.xyzw
-dcl_input v1.xy
-dcl_input v2.x
-dcl_input_sgv v3.x, instance_id
-dcl_output_siv o0.xyzw, position
-dcl_output o1.xy
-dcl_temps 2
-
-#line 22 "C:\Work\graphics\common\TextVS.hlsl"
-iadd r0.x, cb0[4].y, l(-1)
-udiv r0.y, null, v3.x, cb0[4].y
-iadd r0.x, r0.x, -r0.y
-utof r0.y, r0.x
-udiv null, r0.z, v3.x, cb0[4].x
-utof r0.x, r0.z
-add r0.xy, r0.xyxx, v0.xyxx // pos<0,1>
-
-#line 28
-mul r1.xyzw, r0.yyyy, cb0[1].xyzw
-mad r0.xyzw, cb0[0].xyzw, r0.xxxx, r1.xyzw
-mad r0.xyzw, cb0[2].xyzw, v0.zzzz, r0.xyzw
-mad r0.xyzw, cb0[3].xyzw, v0.wwww, r0.xyzw // output<0:NaN:Inf,1:NaN:Inf,2:NaN:Inf,3:NaN:Inf>
-
-#line 38
-movc o0.z, v2.x, r0.z, l(-1.100000) // main<2:NaN:Inf>
-mov o0.xyw, r0.xyxw // main<0:NaN:Inf,1:NaN:Inf,3:NaN:Inf>
-
-#line 25
-and r0.x, v2.x, l(15)
-utof r0.x, r0.x // tx<0:[0f,15f]>
-ushr r0.z, v2.x, l(4)
-utof r0.z, r0.z // ty<0:[0f,2.68435e+008f]>
-
-#line 35
-mul r0.xy, r0.xzxx, l(0.062500, 0.062500, 0.000000, 0.000000)
-mad r0.xy, v1.xyxx, l(0.062500, 0.062500, 0.000000, 0.000000), r0.xyxx
-add o1.xy, r0.xyxx, l(0.003906, 0.003906, 0.000000, 0.000000) // main<4:[-2.12676e+037f,2.12676e+037f],5:[-2.12676e+037f,2.12676e+037f]>
-
-#line 40
-ret
-// Approximately 21 instruction slots used
-#endif
-
-const BYTE codeTextVS[] =
-{
- 68, 88, 66, 67, 57, 29,
- 242, 234, 77, 129, 163, 144,
- 43, 154, 91, 62, 44, 78,
- 140, 14, 1, 0, 0, 0,
- 213, 54, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 60, 1, 0, 0, 216, 1,
- 0, 0, 48, 2, 0, 0,
- 40, 5, 0, 0, 164, 5,
- 0, 0, 82, 68, 69, 70,
- 252, 0, 0, 0, 1, 0,
- 0, 0, 64, 0, 0, 0,
- 1, 0, 0, 0, 28, 0,
- 0, 0, 0, 4, 254, 255,
- 1, 1, 0, 0, 203, 0,
- 0, 0, 60, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 99, 98,
- 48, 0, 60, 0, 0, 0,
- 3, 0, 0, 0, 88, 0,
- 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 160, 0, 0, 0,
- 0, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 164, 0, 0, 0, 0, 0,
- 0, 0, 180, 0, 0, 0,
- 64, 0, 0, 0, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 184, 0, 0, 0, 0, 0,
- 0, 0, 200, 0, 0, 0,
- 68, 0, 0, 0, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 184, 0, 0, 0, 0, 0,
- 0, 0, 77, 86, 80, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 99, 119,
- 0, 171, 0, 0, 19, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 99, 104, 0, 77, 105, 99,
- 114, 111, 115, 111, 102, 116,
- 32, 40, 82, 41, 32, 72,
- 76, 83, 76, 32, 83, 104,
- 97, 100, 101, 114, 32, 67,
- 111, 109, 112, 105, 108, 101,
- 114, 32, 57, 46, 50, 57,
- 46, 57, 53, 50, 46, 51,
- 49, 49, 49, 0, 73, 83,
- 71, 78, 148, 0, 0, 0,
- 4, 0, 0, 0, 8, 0,
- 0, 0, 104, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 15,
- 0, 0, 113, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 3,
- 0, 0, 122, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 1, 1,
- 0, 0, 132, 0, 0, 0,
- 0, 0, 0, 0, 8, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 1, 1,
- 0, 0, 80, 79, 83, 73,
- 84, 73, 79, 78, 0, 84,
- 69, 88, 67, 79, 79, 82,
- 68, 0, 67, 72, 65, 82,
- 65, 67, 84, 69, 82, 0,
- 83, 86, 95, 73, 78, 83,
- 84, 65, 78, 67, 69, 73,
- 68, 0, 171, 171, 79, 83,
- 71, 78, 80, 0, 0, 0,
- 2, 0, 0, 0, 8, 0,
- 0, 0, 56, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 68, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 12,
- 0, 0, 83, 86, 95, 80,
- 79, 83, 73, 84, 73, 79,
- 78, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 83, 72, 68, 82,
- 240, 2, 0, 0, 64, 0,
- 1, 0, 188, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 95, 0,
- 0, 3, 242, 16, 16, 0,
- 0, 0, 0, 0, 95, 0,
- 0, 3, 50, 16, 16, 0,
- 1, 0, 0, 0, 95, 0,
- 0, 3, 18, 16, 16, 0,
- 2, 0, 0, 0, 96, 0,
- 0, 4, 18, 16, 16, 0,
- 3, 0, 0, 0, 8, 0,
- 0, 0, 103, 0, 0, 4,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 30, 0, 0, 8,
- 18, 0, 16, 0, 0, 0,
- 0, 0, 26, 128, 32, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 1, 64, 0, 0,
- 255, 255, 255, 255, 78, 0,
- 0, 9, 34, 0, 16, 0,
- 0, 0, 0, 0, 0, 208,
- 0, 0, 10, 16, 16, 0,
- 3, 0, 0, 0, 26, 128,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 30, 0,
- 0, 8, 18, 0, 16, 0,
- 0, 0, 0, 0, 10, 0,
- 16, 0, 0, 0, 0, 0,
- 26, 0, 16, 128, 65, 0,
- 0, 0, 0, 0, 0, 0,
- 86, 0, 0, 5, 34, 0,
- 16, 0, 0, 0, 0, 0,
- 10, 0, 16, 0, 0, 0,
- 0, 0, 78, 0, 0, 9,
- 0, 208, 0, 0, 66, 0,
- 16, 0, 0, 0, 0, 0,
- 10, 16, 16, 0, 3, 0,
- 0, 0, 10, 128, 32, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 86, 0, 0, 5,
- 18, 0, 16, 0, 0, 0,
- 0, 0, 42, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 166, 26, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 246, 31, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 55, 0,
- 0, 9, 66, 32, 16, 0,
- 0, 0, 0, 0, 10, 16,
- 16, 0, 2, 0, 0, 0,
- 42, 0, 16, 0, 0, 0,
- 0, 0, 1, 64, 0, 0,
- 205, 204, 140, 191, 54, 0,
- 0, 5, 178, 32, 16, 0,
- 0, 0, 0, 0, 70, 12,
- 16, 0, 0, 0, 0, 0,
- 1, 0, 0, 7, 18, 0,
- 16, 0, 0, 0, 0, 0,
- 10, 16, 16, 0, 2, 0,
- 0, 0, 1, 64, 0, 0,
- 15, 0, 0, 0, 86, 0,
- 0, 5, 18, 0, 16, 0,
- 0, 0, 0, 0, 10, 0,
- 16, 0, 0, 0, 0, 0,
- 85, 0, 0, 7, 66, 0,
- 16, 0, 0, 0, 0, 0,
- 10, 16, 16, 0, 2, 0,
- 0, 0, 1, 64, 0, 0,
- 4, 0, 0, 0, 86, 0,
- 0, 5, 66, 0, 16, 0,
- 0, 0, 0, 0, 42, 0,
- 16, 0, 0, 0, 0, 0,
- 56, 0, 0, 10, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 134, 0, 16, 0, 0, 0,
- 0, 0, 2, 64, 0, 0,
- 0, 0, 128, 61, 0, 0,
- 128, 61, 0, 0, 0, 0,
- 0, 0, 0, 0, 50, 0,
- 0, 12, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 1, 0, 0, 0,
- 2, 64, 0, 0, 0, 0,
- 128, 61, 0, 0, 128, 61,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 70, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 10, 50, 32, 16, 0,
- 1, 0, 0, 0, 70, 0,
- 16, 0, 0, 0, 0, 0,
- 2, 64, 0, 0, 0, 0,
- 128, 59, 0, 0, 128, 59,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 21, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0,
- 4, 0, 0, 0, 2, 0,
- 0, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 83, 68,
- 66, 71, 41, 49, 0, 0,
- 84, 0, 0, 0, 212, 3,
- 0, 0, 5, 4, 0, 0,
- 10, 4, 0, 0, 1, 1,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 21, 0,
- 0, 0, 16, 0, 0, 0,
- 38, 0, 0, 0, 140, 32,
- 0, 0, 26, 0, 0, 0,
- 28, 36, 0, 0, 32, 0,
- 0, 0, 140, 38, 0, 0,
- 9, 0, 0, 0, 12, 41,
- 0, 0, 13, 0, 0, 0,
- 192, 41, 0, 0, 252, 43,
- 0, 0, 196, 44, 0, 0,
- 0, 0, 0, 0, 35, 0,
- 0, 0, 35, 0, 0, 0,
- 126, 3, 0, 0, 0, 0,
- 0, 0, 30, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 78, 0, 0, 0,
- 2, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 1, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 2, 0, 0, 0,
- 132, 0, 0, 0, 2, 0,
- 0, 0, 30, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 86, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 1, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 0, 0, 0, 0, 128, 79,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 78, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 2, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 2, 0, 0, 0,
- 140, 0, 0, 0, 5, 0,
- 0, 0, 86, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 0, 0, 0, 0, 128, 79,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 18, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 255, 255,
- 127, 255, 255, 255, 127, 127,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 255, 255,
- 127, 255, 255, 255, 127, 127,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 7, 0,
- 0, 0, 56, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 2, 0, 0, 0,
- 148, 0, 0, 0, 8, 0,
- 0, 0, 50, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 2, 0, 0, 0,
- 148, 0, 0, 0, 9, 0,
- 0, 0, 50, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 2, 0, 0, 0,
- 148, 0, 0, 0, 10, 0,
- 0, 0, 50, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 33, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 34, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 35, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 3, 0, 0, 0,
- 168, 0, 0, 0, 11, 0,
- 0, 0, 55, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 2, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 26, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 2, 0, 0, 0,
- 180, 0, 0, 0, 12, 0,
- 0, 0, 54, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 3, 0,
- 0, 0, 26, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 27, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 29, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 128, 255, 0, 0, 128, 127,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 27, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 13, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 0, 0,
- 0, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 28, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 14, 0,
- 0, 0, 86, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 36, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 0, 0, 0, 0, 112, 65,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 28, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 120, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 85, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 2, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 15, 0, 0, 0, 0,
- 255, 255, 255, 15, 0, 0,
- 0, 0, 255, 255, 255, 15,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 188, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 86, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 2, 0, 0, 0, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 37, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 0, 0, 0, 0, 128, 77,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 188, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 17, 0,
- 0, 0, 56, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 0, 0, 0, 0, 112, 63,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 0, 0,
- 0, 0, 0, 0, 128, 75,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 2, 0, 0, 0,
- 84, 0, 0, 0, 18, 0,
- 0, 0, 50, 0, 0, 0,
- 1, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 255, 255,
- 127, 253, 255, 255, 127, 125,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 255, 255,
- 127, 253, 255, 255, 127, 125,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 19, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 30, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 255, 255,
- 127, 253, 255, 255, 127, 125,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 31, 0, 0, 0,
- 0, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 128,
- 255, 255, 255, 127, 255, 255,
- 127, 253, 255, 255, 127, 125,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 20, 0,
- 0, 0, 62, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 31, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 156, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 1, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 2, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 3, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 4, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 5, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 6, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 7, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 8, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 9, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 10, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 11, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 12, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 13, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 14, 0, 0, 0, 21, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 15, 0, 0, 0, 22, 0,
- 0, 0, 19, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 1, 0, 0, 0,
- 0, 0, 0, 0, 23, 0,
- 0, 0, 19, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 2, 0, 0, 0,
- 0, 0, 0, 0, 13, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 6, 0, 0, 0,
- 0, 0, 0, 0, 13, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 6, 0, 0, 0,
- 1, 0, 0, 0, 13, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 6, 0, 0, 0,
- 2, 0, 0, 0, 13, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 6, 0, 0, 0,
- 3, 0, 0, 0, 14, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 7, 0, 0, 0,
- 0, 0, 0, 0, 14, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 7, 0, 0, 0,
- 1, 0, 0, 0, 15, 0,
- 0, 0, 19, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 8, 0, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 19, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 9, 0, 0, 0,
- 0, 0, 0, 0, 17, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 5, 0, 0, 0,
- 0, 0, 0, 0, 17, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 5, 0, 0, 0,
- 1, 0, 0, 0, 17, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 5, 0, 0, 0,
- 2, 0, 0, 0, 17, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 5, 0, 0, 0,
- 3, 0, 0, 0, 17, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 5, 0, 0, 0,
- 4, 0, 0, 0, 17, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 5, 0, 0, 0,
- 5, 0, 0, 0, 20, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 10, 0, 0, 0,
- 0, 0, 0, 0, 20, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 10, 0, 0, 0,
- 1, 0, 0, 0, 20, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 10, 0, 0, 0,
- 2, 0, 0, 0, 20, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 10, 0, 0, 0,
- 3, 0, 0, 0, 18, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 11, 0, 0, 0,
- 0, 0, 0, 0, 19, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 255, 255,
- 255, 255, 12, 0, 0, 0,
- 0, 0, 0, 0, 18, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 19, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 20, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 255, 255, 255, 255, 21, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 22, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 23, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 24, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 25, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 8, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 255, 255, 255, 255, 12, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 5, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 9, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 255, 255, 255, 255, 13, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 2, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 6, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 10, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 2, 0, 0, 0,
- 255, 255, 255, 255, 14, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 3, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 7, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 11, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 2, 0, 0, 0,
- 255, 255, 255, 255, 15, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 17, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 8, 0, 0, 0, 3, 0,
- 0, 0, 60, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 14, 0, 0, 0,
- 2, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 14, 0,
- 0, 0, 2, 0, 0, 0,
- 99, 0, 0, 0, 0, 0,
- 0, 0, 12, 0, 0, 0,
- 10, 0, 0, 0, 4, 0,
- 0, 0, 207, 0, 0, 0,
- 0, 0, 0, 0, 8, 0,
- 0, 0, 8, 0, 0, 0,
- 19, 0, 0, 0, 174, 3,
- 0, 0, 0, 0, 0, 0,
- 9, 0, 0, 0, 8, 0,
- 0, 0, 19, 0, 0, 0,
- 193, 3, 0, 0, 0, 0,
- 0, 0, 13, 0, 0, 0,
- 8, 0, 0, 0, 3, 0,
- 0, 0, 222, 0, 0, 0,
- 0, 0, 0, 0, 14, 0,
- 0, 0, 8, 0, 0, 0,
- 2, 0, 0, 0, 247, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 14, 0,
- 0, 0, 1, 0, 0, 0,
- 14, 0, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 14, 0, 0, 0, 2, 0,
- 0, 0, 51, 1, 0, 0,
- 0, 0, 0, 0, 19, 0,
- 0, 0, 11, 0, 0, 0,
- 6, 0, 0, 0, 90, 1,
- 0, 0, 0, 0, 0, 0,
- 25, 0, 0, 0, 7, 0,
- 0, 0, 2, 0, 0, 0,
- 25, 2, 0, 0, 0, 0,
- 0, 0, 26, 0, 0, 0,
- 7, 0, 0, 0, 2, 0,
- 0, 0, 48, 2, 0, 0,
- 0, 0, 0, 0, 13, 0,
- 0, 0, 8, 0, 0, 0,
- 3, 0, 0, 0, 222, 0,
- 0, 0, 0, 0, 0, 0,
- 14, 0, 0, 0, 8, 0,
- 0, 0, 2, 0, 0, 0,
- 247, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 14, 0, 0, 0, 1, 0,
- 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 14, 0, 0, 0,
- 2, 0, 0, 0, 51, 1,
- 0, 0, 0, 0, 0, 0,
- 12, 0, 0, 0, 10, 0,
- 0, 0, 4, 0, 0, 0,
- 207, 0, 0, 0, 0, 0,
- 0, 0, 25, 0, 0, 0,
- 7, 0, 0, 0, 2, 0,
- 0, 0, 25, 2, 0, 0,
- 0, 0, 0, 0, 26, 0,
- 0, 0, 7, 0, 0, 0,
- 2, 0, 0, 0, 48, 2,
- 0, 0, 0, 0, 0, 0,
- 19, 0, 0, 0, 11, 0,
- 0, 0, 6, 0, 0, 0,
- 90, 1, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 8, 0, 0, 0, 3, 0,
- 0, 0, 60, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 14, 0, 0, 0,
- 2, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 14, 0,
- 0, 0, 2, 0, 0, 0,
- 99, 0, 0, 0, 0, 0,
- 0, 0, 22, 0, 0, 0,
- 8, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 28, 0,
- 0, 0, 17, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 38, 0, 0, 0, 5, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 40, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0,
- 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 26, 0, 0, 0, 7, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 35, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 40, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 115, 0, 0, 0, 9, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 161, 3, 0, 0,
- 7, 0, 0, 0, 4, 0,
- 0, 0, 8, 0, 0, 0,
- 3, 0, 0, 0, 115, 0,
- 0, 0, 9, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 168, 3, 0, 0, 6, 0,
- 0, 0, 1, 0, 0, 0,
- 24, 0, 0, 0, 4, 0,
- 0, 0, 207, 0, 0, 0,
- 4, 0, 0, 0, 5, 0,
- 0, 0, 28, 0, 0, 0,
- 1, 0, 0, 0, 168, 3,
- 0, 0, 6, 0, 0, 0,
- 2, 0, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 207, 0, 0, 0, 4, 0,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 1, 0,
- 0, 0, 168, 3, 0, 0,
- 6, 0, 0, 0, 3, 0,
- 0, 0, 80, 0, 0, 0,
- 4, 0, 0, 0, 207, 0,
- 0, 0, 4, 0, 0, 0,
- 7, 0, 0, 0, 92, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 4, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 17, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 5, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 255, 255, 255, 255,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 6, 0, 0, 0, 26, 0,
- 0, 0, 6, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 18, 0, 0, 0, 7, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 22, 0, 0, 0,
- 8, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 24, 0,
- 0, 0, 9, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 25, 0, 0, 0, 10, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 0,
- 0, 0, 32, 0, 0, 0,
- 11, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 36, 0,
- 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 37, 0, 0, 0, 3, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 10, 0,
- 0, 0, 6, 0, 0, 0,
- 7, 0, 0, 0, 8, 0,
- 0, 0, 9, 0, 0, 0,
- 10, 0, 0, 0, 10, 0,
- 0, 0, 11, 0, 0, 0,
- 6, 0, 0, 0, 7, 0,
- 0, 0, 8, 0, 0, 0,
- 9, 0, 0, 0, 10, 0,
- 0, 0, 11, 0, 0, 0,
- 10, 0, 0, 0, 11, 0,
- 0, 0, 12, 0, 0, 0,
- 6, 0, 0, 0, 7, 0,
- 0, 0, 8, 0, 0, 0,
- 9, 0, 0, 0, 10, 0,
- 0, 0, 11, 0, 0, 0,
- 12, 0, 0, 0, 3, 0,
- 0, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 9, 0, 0, 0,
- 1, 0, 0, 0, 9, 0,
- 0, 0, 0, 0, 0, 0,
- 6, 0, 0, 0, 7, 0,
- 0, 0, 8, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0,
- 10, 0, 0, 0, 8, 0,
- 0, 0, 10, 0, 0, 0,
- 5, 0, 0, 0, 6, 0,
- 0, 0, 1, 0, 0, 0,
- 67, 58, 92, 87, 111, 114,
- 107, 92, 103, 114, 97, 112,
- 104, 105, 99, 115, 92, 99,
- 111, 109, 109, 111, 110, 92,
- 84, 101, 120, 116, 86, 83,
- 46, 104, 108, 115, 108, 13,
- 10, 99, 98, 117, 102, 102,
- 101, 114, 32, 99, 98, 48,
- 32, 123, 13, 10, 9, 109,
- 97, 116, 114, 105, 120, 32,
- 77, 86, 80, 59, 13, 10,
- 9, 117, 110, 115, 105, 103,
- 110, 101, 100, 32, 105, 110,
- 116, 32, 99, 119, 59, 13,
- 10, 9, 117, 110, 115, 105,
- 103, 110, 101, 100, 32, 105,
- 110, 116, 32, 99, 104, 59,
- 13, 10, 125, 59, 13, 10,
- 115, 116, 114, 117, 99, 116,
- 32, 86, 83, 95, 79, 85,
- 84, 80, 85, 84, 32, 123,
- 13, 10, 9, 102, 108, 111,
- 97, 116, 52, 32, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 32, 58, 32, 83, 86, 95,
- 80, 79, 83, 73, 84, 73,
- 79, 78, 59, 13, 10, 9,
- 102, 108, 111, 97, 116, 50,
- 32, 84, 101, 120, 67, 111,
- 111, 114, 100, 32, 58, 32,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 59, 13, 10, 125,
- 59, 13, 10, 13, 10, 86,
- 83, 95, 79, 85, 84, 80,
- 85, 84, 32, 109, 97, 105,
- 110, 40, 13, 10, 9, 102,
- 108, 111, 97, 116, 52, 32,
- 112, 111, 115, 32, 58, 32,
- 80, 79, 83, 73, 84, 73,
- 79, 78, 44, 13, 10, 9,
- 102, 108, 111, 97, 116, 50,
- 32, 117, 118, 32, 58, 32,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 44, 13, 10, 9,
- 117, 110, 115, 105, 103, 110,
- 101, 100, 32, 105, 110, 116,
- 32, 99, 32, 58, 32, 67,
- 72, 65, 82, 65, 67, 84,
- 69, 82, 44, 13, 10, 9,
- 117, 110, 115, 105, 103, 110,
- 101, 100, 32, 105, 110, 116,
- 32, 105, 100, 32, 58, 32,
- 83, 86, 95, 73, 78, 83,
- 84, 65, 78, 67, 69, 73,
- 68, 13, 10, 9, 41, 32,
- 123, 13, 10, 13, 10, 9,
- 86, 83, 95, 79, 85, 84,
- 80, 85, 84, 32, 111, 117,
- 116, 112, 117, 116, 32, 61,
- 32, 40, 86, 83, 95, 79,
- 85, 84, 80, 85, 84, 41,
- 32, 48, 59, 13, 10, 13,
- 10, 9, 47, 47, 32, 115,
- 104, 105, 102, 116, 32, 117,
- 110, 105, 116, 32, 114, 101,
- 99, 116, 97, 110, 103, 108,
- 101, 32, 116, 111, 32, 99,
- 104, 97, 114, 97, 99, 116,
- 101, 114, 32, 99, 101, 108,
- 108, 32, 114, 101, 99, 116,
- 97, 110, 103, 108, 101, 13,
- 10, 9, 112, 111, 115, 46,
- 120, 121, 32, 43, 61, 32,
- 102, 108, 111, 97, 116, 50,
- 40, 105, 100, 32, 37, 32,
- 99, 119, 44, 32, 40, 99,
- 104, 45, 49, 41, 32, 45,
- 32, 105, 100, 32, 47, 32,
- 99, 104, 41, 59, 13, 10,
- 13, 10, 9, 47, 47, 32,
- 97, 100, 106, 117, 115, 116,
- 32, 117, 110, 105, 116, 32,
- 116, 101, 120, 116, 117, 114,
- 101, 32, 99, 111, 111, 114,
- 100, 32, 116, 111, 32, 102,
- 111, 110, 116, 32, 99, 101,
- 108, 108, 32, 114, 101, 99,
- 116, 97, 110, 103, 108, 101,
- 13, 10, 9, 102, 108, 111,
- 97, 116, 32, 116, 120, 32,
- 61, 32, 40, 99, 32, 37,
- 32, 49, 54, 41, 59, 13,
- 10, 9, 102, 108, 111, 97,
- 116, 32, 116, 121, 32, 61,
- 32, 40, 99, 32, 47, 32,
- 49, 54, 41, 59, 13, 10,
- 13, 10, 9, 111, 117, 116,
- 112, 117, 116, 46, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 32, 61, 32, 109, 117, 108,
- 40, 77, 86, 80, 44, 32,
- 112, 111, 115, 41, 59, 32,
- 13, 10, 9, 111, 117, 116,
- 112, 117, 116, 46, 84, 101,
- 120, 67, 111, 111, 114, 100,
- 32, 61, 13, 10, 9, 9,
- 47, 47, 32, 115, 99, 97,
- 108, 101, 32, 116, 111, 32,
- 115, 105, 122, 101, 32, 111,
- 102, 32, 99, 104, 97, 114,
- 97, 99, 116, 101, 114, 32,
- 105, 110, 32, 102, 111, 110,
- 116, 116, 101, 120, 116, 117,
- 114, 101, 13, 10, 9, 9,
- 117, 118, 32, 42, 32, 102,
- 108, 111, 97, 116, 50, 40,
- 49, 46, 48, 47, 49, 54,
- 46, 48, 44, 49, 46, 48,
- 47, 49, 54, 46, 48, 41,
- 13, 10, 9, 9, 47, 47,
- 32, 109, 111, 118, 101, 32,
- 116, 111, 32, 99, 111, 114,
- 114, 101, 99, 116, 32, 99,
- 104, 97, 114, 97, 99, 116,
- 101, 114, 13, 10, 9, 9,
- 43, 32, 102, 108, 111, 97,
- 116, 50, 40, 116, 120, 47,
- 49, 54, 46, 48, 44, 116,
- 121, 47, 49, 54, 46, 48,
- 41, 13, 10, 9, 9, 47,
- 47, 32, 111, 102, 102, 115,
- 101, 116, 32, 116, 111, 32,
- 97, 118, 111, 105, 100, 32,
- 99, 114, 117, 102, 116, 13,
- 10, 9, 9, 43, 32, 102,
- 108, 111, 97, 116, 50, 40,
- 49, 46, 48, 47, 50, 53,
- 54, 46, 48, 44, 49, 46,
- 48, 47, 50, 53, 54, 46,
- 48, 41, 59, 13, 10, 13,
- 10, 9, 47, 47, 32, 100,
- 105, 115, 99, 97, 114, 100,
- 32, 118, 105, 97, 32, 99,
- 108, 105, 112, 112, 105, 110,
- 103, 13, 10, 9, 105, 102,
- 32, 40, 99, 32, 61, 61,
- 32, 48, 41, 32, 111, 117,
- 116, 112, 117, 116, 46, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 46, 122, 32, 61, 32,
- 45, 49, 46, 49, 59, 13,
- 10, 13, 10, 9, 114, 101,
- 116, 117, 114, 110, 32, 111,
- 117, 116, 112, 117, 116, 59,
- 13, 10, 125, 13, 10, 71,
- 108, 111, 98, 97, 108, 115,
- 76, 111, 99, 97, 108, 115,
- 86, 83, 95, 79, 85, 84,
- 80, 85, 84, 58, 58, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 86, 83, 95, 79, 85,
- 84, 80, 85, 84, 58, 58,
- 84, 101, 120, 67, 111, 111,
- 114, 100, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 57, 46, 50, 57, 46,
- 57, 53, 50, 46, 51, 49,
- 49, 49, 0, 109, 97, 105,
- 110, 0, 118, 115, 95, 52,
- 95, 48, 0
-};
diff --git a/common/app.h b/common/app.h
@@ -1,10 +1,210 @@
-#ifndef _APP_H_
-#define _APP_H_
+/* Copyright 2013 Brian Swetland <swetland@frotz.net>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
-#if defined(USE_OPENGL) || !defined(_WIN32)
-#include "glapp.h"
+#ifndef _GL_APP_H_
+#define _GL_APP_H_
+
+#ifdef _WIN32
+#define NO_SDL_GLEXT 1
+#include <SDL.h>
+#include <SDL_opengl.h>
+#include "opengl.h"
#else
-#include "dxapp.h"
+#define GL_GLEXT_PROTOTYPES 1
+#define NO_SDL_GLEXT 1
+#include <SDL.h>
+#include <SDL_opengl.h>
+#include "glcorearb.h"
#endif
+#include <math.h>
+
+enum {
+ FMT_32x4_FLOAT = 1,
+ FMT_32x3_FLOAT = 2,
+ FMT_32x2_FLOAT = 3,
+ FMT_32x1_FLOAT = 4,
+
+ FMT_8x4_SNORM = 5,
+
+ FMT_8x4_UNORM = 6,
+ FMT_8x2_UNORM = 7,
+ FMT_8x1_UNORM = 8,
+
+ FMT_8x4_UINT = 9,
+ FMT_8x2_UINT = 10,
+ FMT_8x1_UINT = 11,
+};
+
+enum {
+ VERTEX_DATA = 1,
+ INSTANCE_DATA = 2,
+};
+
+struct AttribInfo {
+ const char *name;
+ unsigned nidx;
+ unsigned format;
+ unsigned slot;
+ unsigned offset;
+ unsigned type;
+ unsigned divisor;
+};
+
+
+struct GLAttrInfo {
+#define KIND_ATTRIB_POINTER 0
+#define KIND_ATTRIB_IPOINTER 1
+ int kind;
+
+/* which VBO {0...} to associate with */
+ int vidx;
+
+/* arguments for VertexAttrib[I]Pointer() */
+ int index;
+ int size;
+ int type;
+ int normalized;
+ int pointer;
+ int divisor;
+};
+
+struct PixelShader {
+ unsigned ps;
+ PixelShader() : ps(0) {};
+ ~PixelShader() { if (ps) glDeleteShader(ps); };
+};
+
+struct VertexShader {
+ unsigned vs;
+ GLAttrInfo *ai;
+ AttribInfo *info;
+ unsigned count;
+ VertexShader() : vs(0), ai(NULL), info(NULL), count(0) {};
+ ~VertexShader() { if (vs) { glDeleteShader(vs); free(ai); } };
+};
+
+struct Texture2D {
+ unsigned tex;
+ Texture2D() : tex(0) {};
+ ~Texture2D() { if (tex) { glDeleteTextures(1, &tex); } };
+};
+
+struct UniformBuffer {
+ unsigned buf;
+ unsigned sz;
+ UniformBuffer() : buf(0) {};
+ ~UniformBuffer() { if (buf) glDeleteBuffers(1, &buf); };
+};
+
+struct VertexBuffer {
+ unsigned buf;
+ unsigned sz;
+ VertexBuffer() : buf(0) {};
+ ~VertexBuffer() { if (buf) glDeleteBuffers(1, &buf); };
+};
+
+struct IndexBuffer {
+ unsigned buf;
+ unsigned sz;
+ IndexBuffer() : buf(0) {};
+ ~IndexBuffer() { if (buf) glDeleteBuffers(1, &buf); };
+};
+
+struct InputConfiguration {
+ PixelShader *ps;
+ VertexShader *vs;
+ unsigned vao;
+ unsigned pgm;
+ VertexBuffer *vbuf[16];
+ UniformBuffer *ubuf[16];
+ IndexBuffer *ibuf;
+ InputConfiguration() : ps(NULL), vs(NULL), vao(0), pgm(0), ibuf(NULL) {
+ memset(vbuf, 0, sizeof(vbuf)); memset(ubuf, 0, sizeof(ubuf)); };
+ ~InputConfiguration() { if (vao) glDeleteVertexArrays(1, &vao); if (pgm) glDeleteProgram(pgm); };
+};
+
+class App {
+public:
+ App();
+ virtual ~App();
+
+ virtual int init(void) = 0;
+ virtual void render(void) = 0;
+ virtual void release(void) {};
+
+ /* glue - do not use */
+ int start(void);
+ void handleEvents(void);
+
+ // TODO: move away from D3D10_INPUT...
+ int compileShader(VertexShader *vs, const char *fn,
+ void *data, unsigned len, int raw,
+ AttribInfo *layout, unsigned lcount);
+ int compileShader(PixelShader *ps, const char *fn,
+ void *data, unsigned len, int raw);
+ int loadShader(VertexShader *vs, const char *fn,
+ AttribInfo *layout, unsigned lcount);
+ int loadShader(PixelShader *ps, const char *fn);
+
+ int loadTextureRGBA(Texture2D *tex, const char *fn, int genmips);
+ int createTextureRGBA(Texture2D *tex, void *data, unsigned w, unsigned h, int genmips);
+
+ int initConfig(InputConfiguration *ic, VertexShader *vs, PixelShader *ps);
+ int initBuffer(VertexBuffer *vb, void *data, int sz);
+ int initBuffer(IndexBuffer *ib, void *data, int sz);
+ int initBuffer(UniformBuffer *ub, void *data, int sz);
+
+ void updateBuffer(VertexBuffer *vb, void *data);
+ void updateBuffer(IndexBuffer *ib, void *data);
+ void updateBuffer(UniformBuffer *ub, void *data);
+
+ void useConfig(InputConfiguration *ic);
+ void useBuffer(VertexBuffer *vb, int slot, unsigned stride, unsigned offset);
+ void useBuffer(IndexBuffer *ib);
+ void useBuffer(UniformBuffer *ub, int slot);
+ void useTexture(Texture2D *tex, int slot);
+ void drawIndexedInstanced(unsigned numindices, unsigned numinstances);
+ void drawInstanced(unsigned numvertices, unsigned numinstances);
+ void drawIndexed(unsigned numindices);
+ void setBlend(int enable);
+protected:
+ int width;
+ int height;
+
+ /* mouse motion since last frame */
+ int mouseDX, mouseDY, mouseDZ;
+ /* mouse button state */
+ int mouseBTN;
+ /* mouse position in window coordinates */
+ int mouseWX, mouseWY;
+ /* keys down */
+ unsigned char keystate[256];
+
+ InputConfiguration *ic;
+
+private:
+ int _vsync;
+ SDL_Window *win;
+ SDL_GLContext glcontext;
+};
+
+App *createApp(void);
+
+void printx(const char *fmt, ...);
+void printmtx(float *m, const char *name);
+int error(const char *fmt, ...);
+
#endif
diff --git a/common/assets/TextPS.hlsl b/common/assets/TextPS.hlsl
@@ -1,13 +0,0 @@
-
-Texture2D Texture0;
-
-SamplerState samLinear;
-
-struct VS_OUTPUT {
- float4 Position : SV_POSITION;
- float2 TexCoord : TEXCOORD;
-};
-
-float4 main(VS_OUTPUT input) : SV_Target {
- return Texture0.Sample(samLinear, input.TexCoord);
-}
diff --git a/common/assets/TextVS.hlsl b/common/assets/TextVS.hlsl
@@ -1,41 +0,0 @@
-
-cbuffer cb0 {
- matrix MVP;
- unsigned int cw;
- unsigned int ch;
-};
-struct VS_OUTPUT {
- float4 Position : SV_POSITION;
- float2 TexCoord : TEXCOORD;
-};
-
-VS_OUTPUT main(
- float4 pos : POSITION,
- float2 uv : TEXCOORD,
- unsigned int c : CHARACTER,
- unsigned int id : SV_INSTANCEID
- ) {
-
- VS_OUTPUT output = (VS_OUTPUT) 0;
-
- // shift unit rectangle to character cell rectangle
- pos.xy += float2(id % cw, (ch-1) - id / ch);
-
- // adjust unit texture coord to font cell rectangle
- float tx = (c % 16);
- float ty = (c / 16);
-
- output.Position = mul(MVP, pos);
- output.TexCoord =
- // scale to size of character in fonttexture
- uv * float2(1.0/16.0,1.0/16.0)
- // move to correct character
- + float2(tx/16.0,ty/16.0)
- // offset to avoid cruft
- + float2(1.0/256.0,1.0/256.0);
-
- // discard via clipping
- if (c == 0) output.Position.z = -1.1;
-
- return output;
-}
diff --git a/common/dxapp.cc b/common/dxapp.cc
@@ -1,680 +0,0 @@
-/* Copyright 2013 Brian Swetland <swetland@frotz.net>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <float.h>
-
-#include "util.h"
-#include "app.h"
-
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-
-App::App() : width(800), height(600), active(0),
- mouseDX(0), mouseDY(0), mouseDZ(0), mouseBTN(0),
- device(NULL), targetView(NULL), depthView(NULL),
- swapchain(NULL), rsDefault(NULL), dsDepthEnabled(NULL), dsDepthDisabled(NULL) {
-}
-
-App::~App() {
-}
-
-void App::stop(void) {
- if (swapchain) {
- // teardown during fullscreen will crash
- // ensure we're not fullscreen first...
- swapchain->SetFullscreenState(false, NULL);
- }
- if (device) device->Release();
-
- release();
-
- if (rsDefault) rsDefault->Release();
- if (dsDepthEnabled) dsDepthEnabled->Release();
- if (dsDepthDisabled) dsDepthDisabled->Release();
- if (depthView) depthView->Release();
- if (depthBuffer) depthBuffer->Release();
- if (targetView) targetView->Release();
- if (swapchain) swapchain->Release();
- if (device) device->ClearState();
-
- printx("-- goodbye --\n");
-}
-
-static App *app;
-static int moving = 0;
-static int frame = 0;
-
-static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
- PAINTSTRUCT ps;
- HDC hdc;
- switch( message ) {
- case WM_PAINT:
- hdc = BeginPaint( hWnd, &ps );
- EndPaint( hWnd, &ps );
- break;
- case WM_DESTROY:
- PostQuitMessage( 0 );
- break;
- case WM_SIZE:
-#if 0
- if (wParam == SIZE_MINIMIZED) printx("win: minimized\n");
- else if (wParam == SIZE_MAXIMIZED) printx("win: maximized\n");
- else if (wParam == SIZE_RESTORED) printx("win: restored\n");
- else printx("win: sized %d??\n", wParam);
-#endif
- if (!moving)
- app->reconfigure(0);
- break;
- case WM_ENTERSIZEMOVE:
- moving = 1;
- break;
- case WM_EXITSIZEMOVE:
- moving = 0;
- app->reconfigure(0);
- break;
- case WM_MOUSEMOVE:
- app->setMouseXY((short) LOWORD(lParam), (short) HIWORD(lParam));
- break;
- case WM_ACTIVATEAPP:
- printx("win: activate: %d\n", wParam);
- app->setActive(wParam);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
-}
-
-void init_io(void);
-
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
- init_io();
- app = createApp();
- if (app->start(hInstance, nCmdShow))
- return 0;
- app->eventloop();
- app->stop();
- delete app;
- return 0;
-}
-
-void App::eventloop(void) {
- HRESULT hr;
- MSG msg = {0};
- while (msg.message != WM_QUIT) {
- if (1) {
- if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- continue;
- }
- } else {
- if (GetMessage(&msg, 0, 0, 0) == -1)
- return;
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- continue;
- }
-
- hr = dkeyboard->GetDeviceState(sizeof(keystate), (void*) keystate);
- if (FAILED(hr)) {
- // We can lose the keyboard if we lose focus
- // Try to reacquire it
- dkeyboard->Acquire();
- } else {
- if (keystate[DIK_ESCAPE] & 0x80)
- break;
- }
-
- DIMOUSESTATE2 state;
- hr = dmouse->GetDeviceState(sizeof(DIMOUSESTATE2), &state);
- if (FAILED(hr)) {
- dmouse->Acquire();
- mouseDX = mouseDY = mouseDZ = 0;
- } else {
- mouseDX = state.lX;
- mouseDY = state.lY;
- mouseDZ = state.lZ;
- mouseBTN =
- ((state.rgbButtons[0] >> 7) & 1) |
- ((state.rgbButtons[1] >> 6) & 2) |
- ((state.rgbButtons[2] >> 5) & 4);
- }
-
- float rgba[4] = { 0.0f, 0.125f, 0.3f, 1.0f };
- device->ClearRenderTargetView(targetView, rgba);
- device->ClearDepthStencilView(depthView, D3D10_CLEAR_DEPTH, 1.0f, 0 );
-
- app->render();
-
- swapchain->Present(1, 0);
- frame++;
- }
-}
-
-int App::start(HINSTANCE hInstance, int nCmdShow) {
- hinstance = hInstance;
-
- WNDCLASSEX wc;
- memset(&wc, 0, sizeof(wc));
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = WndProc;
- wc.hInstance = hInstance;
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
- wc.lpszClassName = "MyWindowClass";
-
- if (!RegisterClassEx(&wc))
- return -1;
-
- RECT rc = { 0, 0, width, height };
-
- AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, false);
- hwnd = CreateWindow("MyWindowCLass", "Hello", WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, width, height,
- NULL, NULL, hInstance, NULL);
- if (!hwnd)
- return -1;
-
- ShowWindow(hwnd, nCmdShow);
-
- if (FAILED(initD3D()))
- return -1;
- if (initDirectInput())
- return -1;
- if (init())
- return -1;
- return 0;
-}
-
-int App::initDirectInput(void) {
- HRESULT hr;
- hr = DirectInput8Create(hinstance,
- DIRECTINPUT_VERSION, IID_IDirectInput8,
- (void**) &dinput, NULL);
- if (FAILED(hr))
- return -1;
-
- hr = dinput->CreateDevice(GUID_SysKeyboard, &dkeyboard, NULL);
- if (FAILED(hr))
- return -1;
- hr = dkeyboard->SetDataFormat(&c_dfDIKeyboard);
- if (FAILED(hr))
- return -1;
- hr = dkeyboard->SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
- if (FAILED(hr))
- return -1;
-
- hr = dinput->CreateDevice(GUID_SysMouse, &dmouse, NULL);
- if (FAILED(hr))
- return -1;
- hr = dmouse->SetDataFormat(&c_dfDIMouse2);
- if (FAILED(hr))
- return -1;
- hr = dmouse->SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
- if (FAILED(hr))
- return -1;
-
- return 0;
-}
-
-int App::reconfigure(int init) {
- HRESULT hr;
- int w, h;
-
- if (init) {
- printx("reconfigure: init\n");
- } else {
- RECT r;
- GetClientRect(hwnd, &r);
- w = r.right - r.left;
- h = r.bottom - r.top;
-
- // TODO: handle minimized state
- if (w < 320) w = 320;
- if (h < 240) h = 240;
-
- if ((width == w) && (height == h))
- return 0;
-
- width = w;
- height = h;
- if (targetView) {
- targetView->Release();
- targetView = NULL;
- }
- if (depthView) {
- depthView->Release();
- depthView = NULL;
- }
- if (depthBuffer) {
- depthBuffer->Release();
- depthBuffer = NULL;
- }
-
- hr = swapchain->ResizeBuffers(1, width, height, DXGI_FORMAT_R8G8B8A8_UNORM, 0);
- if (FAILED(hr))
- return -1;
- }
-
- ID3D10Texture2D *buffer;
- hr = swapchain->GetBuffer(0, __uuidof(ID3D10Texture2D), (LPVOID*) &buffer);
- if (FAILED(hr)) printx("OOPS\n");
- hr = device->CreateRenderTargetView(buffer, NULL, &targetView);
- buffer->Release();
- if (FAILED(hr))
- return -1;
-
- D3D10_TEXTURE2D_DESC td;
- td.Width = width;
- td.Height = height;
- td.MipLevels = 1;
- td.ArraySize = 1;
-// td.Format = DXGI_FORMAT_D32_FLOAT;
- td.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; // NVIDIA suggested
- td.SampleDesc.Count = 1;
- td.SampleDesc.Quality = 0;
- td.Usage = D3D10_USAGE_DEFAULT;
- td.BindFlags = D3D10_BIND_DEPTH_STENCIL;
- td.CPUAccessFlags = 0;
- td.MiscFlags = 0;
- hr = device->CreateTexture2D(&td, NULL, &depthBuffer);
- if (FAILED(hr))
- return -1;
-
- D3D10_DEPTH_STENCIL_VIEW_DESC dsvd;
- dsvd.Format = td.Format;
- dsvd.ViewDimension = D3D10_DSV_DIMENSION_TEXTURE2D;
- dsvd.Texture2D.MipSlice = 0;
- hr = device->CreateDepthStencilView(depthBuffer, &dsvd, &depthView);
- if (FAILED(hr))
- return -1;
-
- D3D10_VIEWPORT vp;
- vp.Width = width;
- vp.Height = height;
- vp.MinDepth = 0.0f;
- vp.MaxDepth = 1.0f;
- vp.TopLeftX = 0;
- vp.TopLeftY = 0;
- device->RSSetViewports(1, &vp);
-
- device->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
-
- device->OMSetRenderTargets(1, &targetView, depthView);
- return 0;
-}
-
-int App::initD3D(void) {
- HRESULT hr;
- RECT rc;
- GetClientRect(hwnd, &rc);
-
- unsigned width = rc.right - rc.left;
- unsigned height = rc.bottom - rc.top;
-
- DXGI_SWAP_CHAIN_DESC sc;
- ZeroMemory(&sc, sizeof(sc));
- sc.BufferCount = 1;
- sc.BufferDesc.Width = width;
- sc.BufferDesc.Height = height;
- sc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- sc.BufferDesc.RefreshRate.Numerator = 60;
- sc.BufferDesc.RefreshRate.Denominator = 1;
- sc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- sc.OutputWindow = hwnd;
- sc.SampleDesc.Count = 1;
- sc.SampleDesc.Quality = 0;
- sc.Windowed = TRUE;
-
- hr = D3D10CreateDeviceAndSwapChain(NULL,
- D3D10_DRIVER_TYPE_HARDWARE, NULL, DEVICE_DEBUG_FLAGS,
- D3D10_SDK_VERSION, &sc, &swapchain, &device);
- if (FAILED(hr))
- return -1;
-
- if (reconfigure(1))
- return -1;
-
- D3D10_RASTERIZER_DESC rd;
- rd.FillMode = D3D10_FILL_SOLID;
- rd.CullMode = D3D10_CULL_BACK;
- rd.FrontCounterClockwise = true;
- rd.DepthBias = 0;
- rd.DepthBiasClamp = 0.0f;
- rd.SlopeScaledDepthBias =0.0f;
- rd.DepthClipEnable = true;
- rd.ScissorEnable = false;
- rd.MultisampleEnable = false;
- rd.AntialiasedLineEnable = false;
- hr = device->CreateRasterizerState(&rd, &rsDefault);
- if (FAILED(hr))
- return -1;
-
- D3D10_DEPTH_STENCIL_DESC dsd;
- memset(&dsd, 0, sizeof(dsd));
- dsd.DepthEnable = true;
- dsd.DepthWriteMask = D3D10_DEPTH_WRITE_MASK_ALL;
- dsd.DepthFunc = D3D10_COMPARISON_LESS;
- dsd.StencilEnable = false;
- dsd.StencilReadMask = D3D10_DEFAULT_STENCIL_READ_MASK;
- dsd.StencilWriteMask = D3D10_DEFAULT_STENCIL_WRITE_MASK;
- hr = device->CreateDepthStencilState(&dsd, &dsDepthEnabled);
- if (FAILED(hr))
- return -1;
- hr = device->CreateDepthStencilState(&dsd, &dsDepthDisabled);
- if (FAILED(hr))
- return -1;
-
- D3D10_SAMPLER_DESC sd;
- //sd.Filter = D3D10_FILTER_MIN_MAG_MIP_LINEAR;
- sd.Filter = D3D10_FILTER_MIN_MAG_MIP_POINT;
- sd.AddressU = D3D10_TEXTURE_ADDRESS_CLAMP;
- sd.AddressV = D3D10_TEXTURE_ADDRESS_CLAMP;
- sd.AddressW = D3D10_TEXTURE_ADDRESS_CLAMP;
- sd.MipLODBias = 0;
- sd.MaxAnisotropy = 1;
- sd.ComparisonFunc = D3D10_COMPARISON_NEVER;
- sd.BorderColor[0] = 1;
- sd.BorderColor[1] = 1;
- sd.BorderColor[2] = 1;
- sd.BorderColor[3] = 1;
- sd.MinLOD = -FLT_MAX;
- sd.MaxLOD = FLT_MAX;
- hr = device->CreateSamplerState(&sd, &defaultSamplerState);
- if (FAILED(hr))
- return -1;
-
- D3D10_BLEND_DESC bd;
- memset(&bd, 0, sizeof(bd));
- bd.SrcBlend = D3D10_BLEND_SRC_ALPHA;
- bd.DestBlend = D3D10_BLEND_INV_SRC_ALPHA;
- bd.BlendOp = D3D10_BLEND_OP_ADD;
- bd.SrcBlendAlpha = D3D10_BLEND_ONE;
- bd.DestBlendAlpha = D3D10_BLEND_ZERO;
- bd.BlendOpAlpha = D3D10_BLEND_OP_ADD;
- bd.BlendEnable[0] = true;
- bd.RenderTargetWriteMask[0] = D3D10_COLOR_WRITE_ENABLE_ALL;
- device->CreateBlendState(&bd, &bsAlpha);
-
- bd.SrcBlend = D3D10_BLEND_ONE;
- bd.DestBlend = D3D10_BLEND_ZERO;
- bd.BlendEnable[0] = false;
- device->CreateBlendState(&bd, &bsOpaque);
-
- device->RSSetState(rsDefault);
- device->PSSetSamplers(0, 1, &defaultSamplerState);
- return S_OK;
-}
-
-void App::setBlend(int enable) {
- if (enable)
- device->OMSetBlendState(bsAlpha, NULL, 0xffffffff);
- else
- device->OMSetBlendState(bsOpaque, NULL, 0xffffffff);
-}
-
-// ----
-
-static int _compile_shader(const char *fn, void *data, unsigned sz,
- const char *profile, ID3D10Blob **shader) {
- HRESULT hr;
- ID3D10Blob *errors = NULL;
-
- hr = D3D10CompileShader((char*) data, sz, fn,
- NULL, NULL, "main", profile,
- D3D10_SHADER_ENABLE_STRICTNESS,
- shader, &errors);
-
- if (errors) {
- printx("--- error compiling '%s' ---\n", fn);
- OutputDebugString((char*) errors->GetBufferPointer());
- errors->Release();
- return -1;
- }
- if (FAILED(hr))
- return error("cannot compile shader 0x%08x", hr);
-
- printx("Compiled '%s' to %d bytes\n", fn, (*shader)->GetBufferSize());
- return 0;
-}
-
-int App::compileShader(VertexShader *_vs, const char *fn,
- void *data, unsigned len, int raw,
- AttribInfo *desc, unsigned dcount) {
- ID3D10VertexShader *vs = NULL;
- ID3D10InputLayout *layout = NULL;
- ID3D10Blob *bin = NULL;
- HRESULT hr;
-
- if (raw) {
- hr = device->CreateVertexShader(data, len, &vs);
- if (FAILED(hr))
- return error("failed to create shader '%s' 0x%08x", fn, hr);
- hr = device->CreateInputLayout((D3D10_INPUT_ELEMENT_DESC*) desc,
- dcount, data, len, &layout);
- } else {
- if (_compile_shader(fn, data, len, "vs_4_0", &bin))
- return -1;
- hr = device->CreateVertexShader(bin->GetBufferPointer(), bin->GetBufferSize(), &vs);
- if (FAILED(hr)) {
- bin->Release();
- return error("failed to create shader '%s' 0x%08x", fn, hr);
- }
- hr = device->CreateInputLayout((D3D10_INPUT_ELEMENT_DESC*) desc, dcount,
- bin->GetBufferPointer(), bin->GetBufferSize(), &layout);
- bin->Release();
- }
- if (FAILED(hr))
- return error("failed to bind layout for '%s' 0x%08x", fn, hr);
- if (_vs->vs)
- _vs->vs->Release();
- if (_vs->layout)
- _vs->layout->Release();
- _vs->vs = vs;
- _vs->layout = layout;
- _vs->desc = (D3D10_INPUT_ELEMENT_DESC*) desc;
- _vs->dcount = dcount;
- return 0;
-}
-
-int App::compileShader(PixelShader *_ps, const char *fn,
- void *data, unsigned len, int raw) {
- ID3D10PixelShader *ps;
- HRESULT hr;
- if (raw) {
- hr = device->CreatePixelShader(data, len, &ps);
- } else {
- ID3D10Blob *bin = NULL;
- if (_compile_shader(fn, data, len, "ps_4_0", &bin))
- return -1;
- hr = device->CreatePixelShader(bin->GetBufferPointer(), bin->GetBufferSize(), &ps);
- bin->Release();
- }
- if (FAILED(hr))
- return error("failed to create shader '%s' 0x%08x", fn, hr);
- if (_ps->ps)
- _ps->ps->Release();
- _ps->ps = ps;
- return 0;
-}
-
-// TODO choose raw based on content or extension
-int App::loadShader(VertexShader *vs, const char *fn,
- AttribInfo *layout, unsigned lcount) {
- void *data;
- unsigned sz;
- if (!(data = load_file(fn, &sz)))
- return -1;
- int r = compileShader(vs, fn, data, sz, 0, layout, lcount);
- free(data);
- return r;
-}
-
-int App::loadShader(PixelShader *ps, const char *fn) {
- void *data;
- unsigned sz;
- if (!(data = load_file(fn, &sz)))
- return -1;
- int r = compileShader(ps, fn, data, sz, 0);
- free(data);
- return r;
-}
-
-int App::loadTextureRGBA(Texture2D *tex, const char *fn, int genmips) {
- void *data;
- unsigned dw, dh;
- int r;
- if (!(data = load_png_rgba(fn, &dw, &dh, 0)))
- return -1;
- r = createTextureRGBA(tex, data, dw, dh, genmips);
- free(data);
- return r;
-}
-
-int App::createTextureRGBA(Texture2D *tex, void *data, unsigned tw, unsigned th, int genmips) {
- int stride = tw * 4;
- int size = stride * th;
- HRESULT hr;
- ID3D10Texture2D *texture;
-
- D3D10_TEXTURE2D_DESC txd;
- txd.Width = tw;
- txd.Height = th;
- txd.MipLevels = genmips ? 0 : 1;
- txd.ArraySize = 1;
- txd.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- txd.SampleDesc.Count = 1;
- txd.SampleDesc.Quality = 0;
- txd.Usage = D3D10_USAGE_DEFAULT;
- txd.BindFlags = D3D10_BIND_SHADER_RESOURCE;
- if (genmips)
- txd.BindFlags |= D3D10_BIND_RENDER_TARGET;
- txd.CPUAccessFlags = 0; // no cpu access
- txd.MiscFlags = genmips ? D3D10_RESOURCE_MISC_GENERATE_MIPS : 0;
-
- D3D10_SUBRESOURCE_DATA idata;
- idata.pSysMem = data;
- idata.SysMemPitch = stride;
- idata.SysMemSlicePitch = size;
-
- hr = device->CreateTexture2D(&txd, genmips ? NULL : &idata, &texture);
- if (FAILED(hr))
- return error("failed to create texture 0x%08x",hr);
-
- D3D10_SHADER_RESOURCE_VIEW_DESC srvd;
- srvd.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- srvd.ViewDimension = D3D10_SRV_DIMENSION_TEXTURE2D;
- srvd.Texture2D.MipLevels = genmips ? -1 : 1;
- srvd.Texture2D.MostDetailedMip = 0;
- hr = device->CreateShaderResourceView(texture, &srvd, &tex->srv);
- if (FAILED(hr)) {
- tex->tex->Release();
- tex->tex = NULL;
- return error("failed to create shader resource view 0x%08x",hr);
- }
-
- if (genmips) {
- device->UpdateSubresource(texture, 0, NULL, data, stride, size);
- device->GenerateMips(tex->srv);
- }
-
- return 0;
-}
-
-int App::initConfig(InputConfiguration *ic, VertexShader *vs, PixelShader *ps) {
- ic->vs = vs;
- ic->ps = ps;
- return 0;
-};
-void App::useConfig(InputConfiguration *_ic) {
- int i;
- ic = _ic;
- ID3D10Buffer *buf[16];
- ID3D10ShaderResourceView *srv[16];
-
- device->PSSetShader(ic->ps->ps);
- device->VSSetShader(ic->vs->vs);
- device->IASetInputLayout(ic->vs->layout);
- for (i = 0; i < ic->vcount; i++)
- buf[i] = ic->vbuf[i]->buf;
- device->IASetVertexBuffers(0, ic->vcount, buf, ic->vstride, ic->voffset);
- for (i = 0; i < ic->ucount; i++)
- buf[i] = ic->ubuf[i]->buf;
- device->VSSetConstantBuffers(0, ic->ucount, buf);
- if (ic->tcount) {
- for (i = 0; i < ic->tcount; i++)
- srv[i] = ic->tex[i]->srv;
- device->PSSetShaderResources(0, ic->tcount, srv);
- }
- if (ic->ibuf)
- device->IASetIndexBuffer(ic->ibuf->buf, DXGI_FORMAT_R16_UINT, 0);
-}
-
-void App::useBuffer(VertexBuffer *vb, int slot, UINT stride, UINT offset) {
- ic->vbuf[slot] = vb;
- ic->vstride[slot] = stride;
- ic->voffset[slot] = offset;
- if (slot >= ic->vcount)
- ic->vcount = slot + 1;
-}
-void App::useBuffer(IndexBuffer *ib) {
- ic->ibuf = ib;
-}
-void App::useBuffer(UniformBuffer *ub, int slot) {
- ic->ubuf[slot] = ub;
- if (slot >= ic->ucount)
- ic->ucount = slot + 1;
-}
-void App::useTexture(Texture2D *tex, int slot) {
- ic->tex[slot] = tex;
- if (slot >= ic->tcount)
- ic->tcount = slot + 1;
-}
-
-int _create_buffer(ID3D10Device *device, D3D10_BIND_FLAG flag,
- void *data, int sz, ID3D10Buffer **buf) {
- HRESULT hr;
- ID3D10Buffer *old = *buf;
-
- D3D10_BUFFER_DESC bd;
- bd.Usage = D3D10_USAGE_DEFAULT;
- bd.ByteWidth = sz;
- bd.BindFlags = flag;
- bd.CPUAccessFlags = 0;
- bd.MiscFlags = 0;
-
- D3D10_SUBRESOURCE_DATA idata;
- idata.pSysMem = data;
- hr = device->CreateBuffer(&bd, data ? &idata : NULL, buf);
- if (FAILED(hr))
- return error("create buffer failed 0x%08x", hr);
- if (old != NULL)
- old->Release();
- return 0;
-}
-
-int App::initBuffer(VertexBuffer *vb, void *data, int sz) {
- return _create_buffer(device, D3D10_BIND_VERTEX_BUFFER, data, sz, &vb->buf);
-}
-int App::initBuffer(IndexBuffer *ib, void *data, int sz) {
- return _create_buffer(device, D3D10_BIND_INDEX_BUFFER, data, sz, &ib->buf);
-}
-int App::initBuffer(UniformBuffer *ub, void *data, int sz) {
- return _create_buffer(device, D3D10_BIND_CONSTANT_BUFFER, data, sz, &ub->buf);
-}
-
diff --git a/common/dxapp.h b/common/dxapp.h
@@ -1,230 +0,0 @@
-/* Copyright 2013 Brian Swetland <swetland@frotz.net>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _DX_APP_H_
-#define _DX_APP_H_
-
-#include <windows.h>
-
-/* TODO: figure out wtf is up with dxgitype.h macro redefinitions... */
-#pragma warning ( disable : 4005 )
-
-#include <d3d10.h>
-#include <dinput.h>
-
-#ifdef _DEBUG
-#define DEVICE_DEBUG_FLAGS D3D10_CREATE_DEVICE_DEBUG
-#define SHADER_DEBUG_FLAGS D3D10_SHADER_DEBUG
-#else
-#define DEVICE_DEBUG_FLAGS 0
-#define SHADER_DEBUG_FLAGS 0
-#endif
-
-#define SL "hlsl"
-
-enum {
- FMT_32x4_FLOAT = DXGI_FORMAT_R32G32B32A32_FLOAT,
- FMT_32x3_FLOAT = DXGI_FORMAT_R32G32B32_FLOAT,
- FMT_32x2_FLOAT = DXGI_FORMAT_R32G32_FLOAT,
- FMT_32x1_FLOAT = DXGI_FORMAT_R32_FLOAT,
-
- FMT_8x4_SNORM = DXGI_FORMAT_R8G8B8A8_SNORM,
-
- FMT_8x4_UNORM = DXGI_FORMAT_R8G8B8A8_UNORM,
- FMT_8x2_UNORM = DXGI_FORMAT_R8G8_UNORM,
- FMT_8x1_UNORM = DXGI_FORMAT_R8_UNORM,
-
- FMT_8x4_UINT = DXGI_FORMAT_R8G8B8A8_UINT,
- FMT_8x2_UINT = DXGI_FORMAT_R8G8_UINT,
- FMT_8x1_UINT = DXGI_FORMAT_R8_UINT,
-};
-
-enum {
- VERTEX_DATA = D3D10_INPUT_PER_VERTEX_DATA,
- INSTANCE_DATA = D3D10_INPUT_PER_INSTANCE_DATA,
-};
-
-struct AttribInfo {
- const char *name;
- unsigned nidx;
- unsigned format;
- unsigned slot;
- unsigned offset;
- unsigned type;
- unsigned divisor;
-};
-
-struct PixelShader {
- ID3D10PixelShader *ps;
- PixelShader() : ps(NULL) {};
- ~PixelShader() { if (ps) ps->Release(); };
-};
-
-struct VertexShader {
- ID3D10VertexShader *vs;
- ID3D10InputLayout *layout;
- D3D10_INPUT_ELEMENT_DESC *desc;
- unsigned dcount;
- VertexShader() : vs(NULL), layout(NULL), desc(NULL), dcount(0) {};
- ~VertexShader() { if (vs) { vs->Release(); layout->Release(); } };
-};
-
-struct Texture2D {
- ID3D10Texture2D *tex;
- ID3D10ShaderResourceView *srv;
- Texture2D() : tex(NULL), srv(NULL) {};
- ~Texture2D() { if (tex) { tex->Release(); srv->Release(); } };
-};
-
-struct UniformBuffer {
- ID3D10Buffer *buf;
- UniformBuffer() : buf(NULL) {};
- ~UniformBuffer() { if (buf) buf->Release(); };
-};
-
-struct VertexBuffer {
- ID3D10Buffer *buf;
- VertexBuffer() : buf(NULL) {};
- ~VertexBuffer() { if (buf) buf->Release(); };
-};
-
-struct IndexBuffer {
- ID3D10Buffer *buf;
- IndexBuffer() : buf(NULL) {};
- ~IndexBuffer() { if (buf) buf->Release(); };
-};
-
-struct InputConfiguration {
- VertexShader *vs;
- PixelShader *ps;
-
- IndexBuffer *ibuf;
- VertexBuffer *vbuf[16];
- unsigned vstride[16];
- unsigned voffset[16];
- UniformBuffer *ubuf[16];
- Texture2D *tex[16];
-
- int vcount;
- int ucount;
- int tcount;
-
- InputConfiguration() : vs(NULL), ps(NULL), vcount(0), ucount(0), tcount(0), ibuf(NULL) {
- memset(vbuf, 0, sizeof(vbuf));
- memset(ubuf, 0, sizeof(ubuf));
- }
-};
-
-class App {
-public:
- App();
- virtual ~App();
-
- virtual int init(void) = 0;
- virtual void render(void) = 0;
- virtual void release(void) {};
-
- /* glue - do not use */
- int start(HINSTANCE hInstance, int nCmdShow);
- void eventloop(void);
- void stop(void);
- int reconfigure(int init);
- void setActive(int a) { active = a; };
- void setMouseXY(int x, int y) { mouseWX = x; mouseWY = y; };
-
- // TODO: move away from D3D10_INPUT...
- int compileShader(VertexShader *vs, const char *fn,
- void *data, unsigned len, int raw,
- AttribInfo *layout, unsigned lcount);
- int compileShader(PixelShader *ps, const char *fn,
- void *data, unsigned len, int raw);
- int loadShader(VertexShader *vs, const char *fn,
- AttribInfo *layout, unsigned lcount);
- int loadShader(PixelShader *ps, const char *fn);
-
- int loadTextureRGBA(Texture2D *tex, const char *fn, int genmips);
- int createTextureRGBA(Texture2D *tex, void *data, unsigned w, unsigned h, int genmips);
-
- int initConfig(InputConfiguration *ic, VertexShader *vs, PixelShader *ps);
- int initBuffer(VertexBuffer *vb, void *data, int sz);
- int initBuffer(IndexBuffer *ib, void *data, int sz);
- int initBuffer(UniformBuffer *ub, void *data, int sz);
-
- void updateBuffer(VertexBuffer *vb, void *data) {
- device->UpdateSubresource(vb->buf, 0, NULL, data, 0, 0);
- }
- void updateBuffer(IndexBuffer *ib, void *data) {
- device->UpdateSubresource(ib->buf, 0, NULL, data, 0, 0);
- }
- void updateBuffer(UniformBuffer *ub, void *data) {
- device->UpdateSubresource(ub->buf, 0, NULL, data, 0, 0);
- }
-
- void useConfig(InputConfiguration *ic);
- void useBuffer(VertexBuffer *vb, int slot, UINT stride, UINT offset);
- void useBuffer(IndexBuffer *ib);
- void useBuffer(UniformBuffer *ub, int slot);
- void useTexture(Texture2D *tex, int slot);
- void drawIndexedInstanced(unsigned numindices, unsigned numinstances) {
- device->DrawIndexedInstanced(numindices, numinstances, 0, 0, 0);
- }
- void drawInstanced(unsigned numvertices, unsigned numinstances) {
- device->DrawInstanced(numvertices, numinstances, 0, 0);
- }
- void drawIndexed(unsigned numindices) {
- device->DrawIndexed(numindices, 0, 0);
- };
- void setBlend(int enabled);
-protected:
- int width;
- int height;
-
- /* mouse motion since last frame */
- int mouseDX, mouseDY, mouseDZ;
- /* mouse button state */
- int mouseBTN;
- /* mouse position in window coordinates */
- int mouseWX, mouseWY;
- /* keys down */
- unsigned char keystate[256];
-
- ID3D10Device *device;
- IDXGISwapChain *swapchain;
- ID3D10RenderTargetView *targetView;
- ID3D10Texture2D *depthBuffer;
- ID3D10DepthStencilView *depthView;
- ID3D10RasterizerState *rsDefault;
- ID3D10DepthStencilState *dsDepthEnabled;
- ID3D10DepthStencilState *dsDepthDisabled;
- ID3D10SamplerState *defaultSamplerState;
- ID3D10BlendState *bsAlpha;
- ID3D10BlendState *bsOpaque;
-private:
- InputConfiguration *ic;
- LPDIRECTINPUT8 dinput;
- LPDIRECTINPUTDEVICE8 dkeyboard;
- LPDIRECTINPUTDEVICE8 dmouse;
- int initD3D(void);
- int initDirectInput(void);
- HWND hwnd;
- HINSTANCE hinstance;
- int active;
-};
-
-//int compileShader(const char *fn, const char *profile, ID3D10Blob **shader);
-
-App *createApp(void);
-
-#endif
diff --git a/common/glapp.cc b/common/glapp.cc
@@ -20,7 +20,7 @@
#define GLUE_DEFINE_EXTENSIONS 1
#endif
-#include "glapp.h"
+#include "app.h"
#include "util.h"
#if 1
diff --git a/common/glapp.h b/common/glapp.h
@@ -1,212 +0,0 @@
-/* Copyright 2013 Brian Swetland <swetland@frotz.net>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _GL_APP_H_
-#define _GL_APP_H_
-
-#ifdef _WIN32
-#define NO_SDL_GLEXT 1
-#include <SDL.h>
-#include <SDL_opengl.h>
-#include "opengl.h"
-#else
-#define GL_GLEXT_PROTOTYPES 1
-#define NO_SDL_GLEXT 1
-#include <SDL.h>
-#include <SDL_opengl.h>
-#include "glcorearb.h"
-#endif
-
-#include <math.h>
-
-#define SL "glsl"
-
-enum {
- FMT_32x4_FLOAT = 1,
- FMT_32x3_FLOAT = 2,
- FMT_32x2_FLOAT = 3,
- FMT_32x1_FLOAT = 4,
-
- FMT_8x4_SNORM = 5,
-
- FMT_8x4_UNORM = 6,
- FMT_8x2_UNORM = 7,
- FMT_8x1_UNORM = 8,
-
- FMT_8x4_UINT = 9,
- FMT_8x2_UINT = 10,
- FMT_8x1_UINT = 11,
-};
-
-enum {
- VERTEX_DATA = 1,
- INSTANCE_DATA = 2,
-};
-
-struct AttribInfo {
- const char *name;
- unsigned nidx;
- unsigned format;
- unsigned slot;
- unsigned offset;
- unsigned type;
- unsigned divisor;
-};
-
-
-struct GLAttrInfo {
-#define KIND_ATTRIB_POINTER 0
-#define KIND_ATTRIB_IPOINTER 1
- int kind;
-
-/* which VBO {0...} to associate with */
- int vidx;
-
-/* arguments for VertexAttrib[I]Pointer() */
- int index;
- int size;
- int type;
- int normalized;
- int pointer;
- int divisor;
-};
-
-struct PixelShader {
- unsigned ps;
- PixelShader() : ps(0) {};
- ~PixelShader() { if (ps) glDeleteShader(ps); };
-};
-
-struct VertexShader {
- unsigned vs;
- GLAttrInfo *ai;
- AttribInfo *info;
- unsigned count;
- VertexShader() : vs(0), ai(NULL), info(NULL), count(0) {};
- ~VertexShader() { if (vs) { glDeleteShader(vs); free(ai); } };
-};
-
-struct Texture2D {
- unsigned tex;
- Texture2D() : tex(0) {};
- ~Texture2D() { if (tex) { glDeleteTextures(1, &tex); } };
-};
-
-struct UniformBuffer {
- unsigned buf;
- unsigned sz;
- UniformBuffer() : buf(0) {};
- ~UniformBuffer() { if (buf) glDeleteBuffers(1, &buf); };
-};
-
-struct VertexBuffer {
- unsigned buf;
- unsigned sz;
- VertexBuffer() : buf(0) {};
- ~VertexBuffer() { if (buf) glDeleteBuffers(1, &buf); };
-};
-
-struct IndexBuffer {
- unsigned buf;
- unsigned sz;
- IndexBuffer() : buf(0) {};
- ~IndexBuffer() { if (buf) glDeleteBuffers(1, &buf); };
-};
-
-struct InputConfiguration {
- PixelShader *ps;
- VertexShader *vs;
- unsigned vao;
- unsigned pgm;
- VertexBuffer *vbuf[16];
- UniformBuffer *ubuf[16];
- IndexBuffer *ibuf;
- InputConfiguration() : ps(NULL), vs(NULL), vao(0), pgm(0), ibuf(NULL) {
- memset(vbuf, 0, sizeof(vbuf)); memset(ubuf, 0, sizeof(ubuf)); };
- ~InputConfiguration() { if (vao) glDeleteVertexArrays(1, &vao); if (pgm) glDeleteProgram(pgm); };
-};
-
-class App {
-public:
- App();
- virtual ~App();
-
- virtual int init(void) = 0;
- virtual void render(void) = 0;
- virtual void release(void) {};
-
- /* glue - do not use */
- int start(void);
- void handleEvents(void);
-
- // TODO: move away from D3D10_INPUT...
- int compileShader(VertexShader *vs, const char *fn,
- void *data, unsigned len, int raw,
- AttribInfo *layout, unsigned lcount);
- int compileShader(PixelShader *ps, const char *fn,
- void *data, unsigned len, int raw);
- int loadShader(VertexShader *vs, const char *fn,
- AttribInfo *layout, unsigned lcount);
- int loadShader(PixelShader *ps, const char *fn);
-
- int loadTextureRGBA(Texture2D *tex, const char *fn, int genmips);
- int createTextureRGBA(Texture2D *tex, void *data, unsigned w, unsigned h, int genmips);
-
- int initConfig(InputConfiguration *ic, VertexShader *vs, PixelShader *ps);
- int initBuffer(VertexBuffer *vb, void *data, int sz);
- int initBuffer(IndexBuffer *ib, void *data, int sz);
- int initBuffer(UniformBuffer *ub, void *data, int sz);
-
- void updateBuffer(VertexBuffer *vb, void *data);
- void updateBuffer(IndexBuffer *ib, void *data);
- void updateBuffer(UniformBuffer *ub, void *data);
-
- void useConfig(InputConfiguration *ic);
- void useBuffer(VertexBuffer *vb, int slot, unsigned stride, unsigned offset);
- void useBuffer(IndexBuffer *ib);
- void useBuffer(UniformBuffer *ub, int slot);
- void useTexture(Texture2D *tex, int slot);
- void drawIndexedInstanced(unsigned numindices, unsigned numinstances);
- void drawInstanced(unsigned numvertices, unsigned numinstances);
- void drawIndexed(unsigned numindices);
- void setBlend(int enable);
-protected:
- int width;
- int height;
-
- /* mouse motion since last frame */
- int mouseDX, mouseDY, mouseDZ;
- /* mouse button state */
- int mouseBTN;
- /* mouse position in window coordinates */
- int mouseWX, mouseWY;
- /* keys down */
- unsigned char keystate[256];
-
- InputConfiguration *ic;
-
-private:
- int _vsync;
- SDL_Window *win;
- SDL_GLContext glcontext;
-};
-
-App *createApp(void);
-
-void printx(const char *fmt, ...);
-void printmtx(float *m, const char *name);
-int error(const char *fmt, ...);
-
-#endif
diff --git a/common/textgrid.cc b/common/textgrid.cc
@@ -70,21 +70,11 @@ int TextGrid::init(App *a, int w, int h) {
return -1;
if (a->initBuffer(&ubuf, NULL, sizeof(cb)))
return -1;
-#if BUILTIN
- if (a->compileShader(&ps, "TextPS." SL,
- (void*) codeTextPS, sizeof(codeTextPS), 1))
+ if (a->loadShader(&ps, "TextPS.glsl"))
return -1;
- if (a->compileShader(&vs, "TextVS." SL,
- (void*) codeTextVS, sizeof(codeTextVS), 1,
+ if (a->loadShader(&vs, "TextVS.glsl",
text_layout_desc, sizeof(text_layout_desc)/sizeof(text_layout_desc[0])))
return -1;
-#else
- if (a->loadShader(&ps, "TextPS." SL))
- return -1;
- if (a->loadShader(&vs, "TextVS." SL,
- text_layout_desc, sizeof(text_layout_desc)/sizeof(text_layout_desc[0])))
- return -1;
-#endif
cb.proj.setOrtho(0, w, 0, h, -1, 1);
cb.cw = width;
diff --git a/hello/assets/SimplePS.hlsl b/hello/assets/SimplePS.hlsl
@@ -1,15 +0,0 @@
-
-//Texture2D Texture0;
-//SamplerState samLinear;
-
-struct VS_OUTPUT {
- float4 Position : SV_POSITION;
- float2 TexCoord : TEXCOORD;
- float Diffuse : DIFFUSE;
-};
-
-float4 main(VS_OUTPUT input) : SV_Target {
-// return Texture0.Sample(samLinear, input.TexCoord);
- float4 c = float4(1.0, 0.0, 0.0, 1.0);
- return c * 0.25 + c * input.Diffuse;
-}
diff --git a/hello/assets/SimpleVS.hlsl b/hello/assets/SimpleVS.hlsl
@@ -1,36 +0,0 @@
-
-cbuffer cb0 {
- matrix MVP;
- matrix MV;
-}
-
-struct VS_OUTPUT {
- float4 Position : SV_POSITION;
- float2 TexCoord : TEXCOORD;
- float Diffuse : DIFFUSE;
-};
-
-VS_OUTPUT main(
- float4 Position : POSITION,
- float4 Normal : NORMAL,
- float2 TexCoord : TEXCOORD,
- float4 Location : LOCATION
- ) {
-
- VS_OUTPUT output = (VS_OUTPUT) 0;
-
- Position.xyz += Location.xyz * float3(127,127,127);
-
- float3 mvPosition = mul(MV, Position).xyz;
- float3 mvNormal = mul(MV, float4(Normal.xyz,0.0)).xyz;
-
-// float3 lightVec = normalize(float3(10,20,25) - float3(0,0,0));
- float3 lightVec = normalize(float3(10,20,25) - mvPosition);
- float diffuse = max(dot(mvNormal, lightVec), 0.0);
-
- output.Position = mul(MVP, Position);
- output.TexCoord = TexCoord;
- output.Diffuse = diffuse;
-
- return output;
-}
diff --git a/hello/hello.cc b/hello/hello.cc
@@ -114,9 +114,9 @@ void TestApp::build(void) {
}
int TestApp::init(void) {
- if (loadShader(&ps, "SimplePS." SL ))
+ if (loadShader(&ps, "SimplePS.glsl"))
return -1;
- if (loadShader(&vs, "SimpleVS." SL, obj_layout, sizeof(obj_layout) / sizeof(obj_layout[0])))
+ if (loadShader(&vs, "SimpleVS.glsl", obj_layout, sizeof(obj_layout) / sizeof(obj_layout[0])))
return -1;
if (!(m = load_wavefront_obj("unitcubeoid.obj")))
@@ -178,8 +178,8 @@ void TestApp::render(void) {
if (keystate[DIK_W]) { ny -= 0.01; update = 1; }
if (keystate[DIK_S]) { ny += 0.01; update = 1; }
if (keystate[DIK_P]) {
- loadShader(&ps, "SimplePS."SL);
- loadShader(&vs, "SimpleVS."SL, obj_layout,
+ loadShader(&ps, "SimplePS.glsl");
+ loadShader(&vs, "SimpleVS.glsl", obj_layout,
sizeof(obj_layout) / sizeof(obj_layout[0]));
}
oops:
diff --git a/test/assets/TestPS.hlsl b/test/assets/TestPS.hlsl
@@ -1,15 +0,0 @@
-
-//Texture2D Texture0;
-//SamplerState samLinear;
-
-struct VS_OUTPUT {
- float4 Position : SV_POSITION;
- float2 TexCoord : TEXCOORD;
- float Diffuse : DIFFUSE;
-};
-
-float4 main(VS_OUTPUT input) : SV_Target {
-// return Texture0.Sample(samLinear, input.TexCoord);
- float4 c = float4(1.0, 0.0, 0.0, 1.0);
- return c * 0.25 + c * input.Diffuse;
-}
diff --git a/test/assets/TestVS.hlsl b/test/assets/TestVS.hlsl
@@ -1,33 +0,0 @@
-
-cbuffer cb0 {
- matrix MVP;
- matrix MV;
-}
-
-struct VS_OUTPUT {
- float4 Position : SV_POSITION;
- float2 TexCoord : TEXCOORD;
- float Diffuse : DIFFUSE;
-};
-
-VS_OUTPUT main(
- float4 Position : POSITION,
- float4 Normal : NORMAL,
- float2 TexCoord : TEXCOORD
- ) {
-
- VS_OUTPUT output = (VS_OUTPUT) 0;
-
- float3 mvPosition = mul(MV, Position).xyz;
- float3 mvNormal = mul(MV, float4(Normal.xyz,0.0)).xyz;
-
-// float3 lightVec = normalize(float3(10,20,25) - float3(0,0,0));
- float3 lightVec = normalize(float3(10,20,25) - mvPosition);
- float diffuse = max(dot(mvNormal, lightVec), 0.0);
-
- output.Position = mul(MVP, Position);
- output.TexCoord = TexCoord;
- output.Diffuse = diffuse;
-
- return output;
-}
diff --git a/test/test.cc b/test/test.cc
@@ -53,8 +53,8 @@ private:
int vs_mtime;
};
-static const char *psfn = "TestPS." SL;
-static const char *vsfn = "TestVS." SL;
+static const char *psfn = "TestPS.glsl";
+static const char *vsfn = "TestVS.glsl";
TestApp::TestApp() : App(), r(0.0) {
}