diff --git a/deploy/data/ambient/1_posX.tga b/deploy/data/ambient/1_posX.tga
new file mode 100644
index 0000000..4f6fe3d
--- /dev/null
+++ b/deploy/data/ambient/1_posX.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45812db95bd21535b6a14db30c949d67aa39545b9dd1866c103da6b74e1c62b1
+size 49196
diff --git a/deploy/data/ambient/2_negX.tga b/deploy/data/ambient/2_negX.tga
new file mode 100644
index 0000000..97c95c7
--- /dev/null
+++ b/deploy/data/ambient/2_negX.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:daf58d6d059395121cfff3340645b1790fce56c988d5414b29d393e5f64c90cc
+size 49196
diff --git a/deploy/data/ambient/3_posY.tga b/deploy/data/ambient/3_posY.tga
new file mode 100644
index 0000000..a4aaddf
--- /dev/null
+++ b/deploy/data/ambient/3_posY.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:904069dc6c60ed9823d6379827fe6434b3a05a7331631a508f6f4b96eb208a7a
+size 49196
diff --git a/deploy/data/ambient/4_negY.tga b/deploy/data/ambient/4_negY.tga
new file mode 100644
index 0000000..7623b5e
--- /dev/null
+++ b/deploy/data/ambient/4_negY.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f4864454868b3c5b7625e82584e6a28adb1b8727e96266984c4dfc23850f25d
+size 49196
diff --git a/deploy/data/ambient/5_posZ.tga b/deploy/data/ambient/5_posZ.tga
new file mode 100644
index 0000000..f6df846
--- /dev/null
+++ b/deploy/data/ambient/5_posZ.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08a8539cdb09329b5404e2aef67265c4bade0d7761474cd650450d94cb2b9493
+size 49196
diff --git a/deploy/data/ambient/6_negZ.tga b/deploy/data/ambient/6_negZ.tga
new file mode 100644
index 0000000..295f66a
--- /dev/null
+++ b/deploy/data/ambient/6_negZ.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d835a097cb53d3e43ffb3e4be852c2047c8fdfed8c9d8eb218cefb2147bf3f74
+size 49196
diff --git a/deploy/data/consolas.fnt b/deploy/data/font/consolas.fnt
similarity index 100%
rename from deploy/data/consolas.fnt
rename to deploy/data/font/consolas.fnt
diff --git a/deploy/data/consolas.png b/deploy/data/font/consolas.png
similarity index 100%
rename from deploy/data/consolas.png
rename to deploy/data/font/consolas.png
diff --git a/deploy/data/ibl_brdf_lut.png b/deploy/data/ibl_brdf_lut.png
new file mode 100644
index 0000000..35b1f4b
--- /dev/null
+++ b/deploy/data/ibl_brdf_lut.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98fc63eada3ca5549bd74d518fd3e2fd5f84abcbe54366771f9c0224fa2c19f1
+size 35823
diff --git a/deploy/data/sandbox.mtl b/deploy/data/sandbox.mtl
index 2324019..8bdd151 100644
--- a/deploy/data/sandbox.mtl
+++ b/deploy/data/sandbox.mtl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5952d768c5e6d96a52c4029d441c87cd2fb84141958eadd569ec9f582813e229
-size 74
+oid sha256:8e2729d1b53d001080f0e4709b597a8103a98564c7e8b40753158c7a8c0744a2
+size 75
diff --git a/deploy/data/skybox/1_posX.tga b/deploy/data/skybox/1_posX.tga
new file mode 100644
index 0000000..3ea5b7f
--- /dev/null
+++ b/deploy/data/skybox/1_posX.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:936d3c5ea0589cb0600ae0d7116cafd2792e025055e0a3b7eb4ecfda2291e93b
+size 12582930
diff --git a/deploy/data/skybox/2_negX.tga b/deploy/data/skybox/2_negX.tga
new file mode 100644
index 0000000..89bd1e8
--- /dev/null
+++ b/deploy/data/skybox/2_negX.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68288c1a11df99056d5009ddf67accc5f52677ceff0c990152ef4b643ee2e8c4
+size 12582930
diff --git a/deploy/data/skybox/3_posY.tga b/deploy/data/skybox/3_posY.tga
new file mode 100644
index 0000000..8dc3621
--- /dev/null
+++ b/deploy/data/skybox/3_posY.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ce096e0ce8da69464a183c9d80ea9e7937b4e960ef2774237f2a6ade2bddf50
+size 241711
diff --git a/deploy/data/skybox/4_negY.tga b/deploy/data/skybox/4_negY.tga
new file mode 100644
index 0000000..de517e4
--- /dev/null
+++ b/deploy/data/skybox/4_negY.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7bce18ac878bf0df16f9a55d881ab076a074c257b7c24f40249ddd77d43d36c6
+size 2848272
diff --git a/deploy/data/skybox/5_posZ.tga b/deploy/data/skybox/5_posZ.tga
new file mode 100644
index 0000000..aeec736
--- /dev/null
+++ b/deploy/data/skybox/5_posZ.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:58192d9fa5dcbc58884d90db48469197561b4b8d49d7a39c71b4521743fdc4b2
+size 12582930
diff --git a/deploy/data/skybox/6_negZ.tga b/deploy/data/skybox/6_negZ.tga
new file mode 100644
index 0000000..e8c245e
--- /dev/null
+++ b/deploy/data/skybox/6_negZ.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:087883d665611ebec43e4b3e10abb10595a40bdd1084dbd350c1f0b4f59f542e
+size 12582930
diff --git a/deploy/data/skybox/craterlake_bk.tga b/deploy/data/skybox/craterlake_bk.tga
new file mode 100644
index 0000000..ac7bff3
--- /dev/null
+++ b/deploy/data/skybox/craterlake_bk.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e916551b97b12ebd31228fe8ccc06523cc7ac98eee1daa76032b8fee1b0cee11
+size 769437
diff --git a/deploy/data/skybox/craterlake_dn.tga b/deploy/data/skybox/craterlake_dn.tga
new file mode 100644
index 0000000..0c3146e
--- /dev/null
+++ b/deploy/data/skybox/craterlake_dn.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47a24fd77edac34fbd9b9031754624e1fca3c047830b0820654b74e202969891
+size 757939
diff --git a/deploy/data/skybox/craterlake_ft.tga b/deploy/data/skybox/craterlake_ft.tga
new file mode 100644
index 0000000..10dfccb
--- /dev/null
+++ b/deploy/data/skybox/craterlake_ft.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7b25f9cfdaa42f9ea37596e07edc120df9261c0c695ab3cead68d7c646c2a73
+size 737349
diff --git a/deploy/data/skybox/craterlake_lf.tga b/deploy/data/skybox/craterlake_lf.tga
new file mode 100644
index 0000000..e7224de
--- /dev/null
+++ b/deploy/data/skybox/craterlake_lf.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1d5aee7e0a4041674f1ce844fbfd194972e6968002e05570c098e65530c862b
+size 766552
diff --git a/deploy/data/skybox/craterlake_rt.tga b/deploy/data/skybox/craterlake_rt.tga
new file mode 100644
index 0000000..f415f14
--- /dev/null
+++ b/deploy/data/skybox/craterlake_rt.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:037b77efe579a762a1acc920388d4da1d16658893179502324ee89598eb69cff
+size 704063
diff --git a/deploy/data/skybox/craterlake_up.tga b/deploy/data/skybox/craterlake_up.tga
new file mode 100644
index 0000000..cdd495e
--- /dev/null
+++ b/deploy/data/skybox/craterlake_up.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc2c22f138ad728700079827f0202a91dcd7c5be10d683c887c0b2970def5d95
+size 626448
diff --git a/deploy/data/sponza.mtl b/deploy/data/sponza.mtl
index 3f182bd..1b5724c 100644
--- a/deploy/data/sponza.mtl
+++ b/deploy/data/sponza.mtl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cd740556a0e8e853532bb3df7642fc9f5f0f2a409f6a0831148db304ad445b1c
-size 5295
+oid sha256:cd6ccb4673fb99d8ee5780b60e63f307d8e839bed88df0ba5d1eab8f35239128
+size 4393
diff --git a/deploy/data/sponza/Background_Albedo.tga b/deploy/data/sponza/Background_Albedo.tga
new file mode 100644
index 0000000..93c8c4a
--- /dev/null
+++ b/deploy/data/sponza/Background_Albedo.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:618d9dea98ee7f09b8ae157866800161db24a0ab53baa7dbbbaa5f84ddfa8d46
+size 4194348
diff --git a/deploy/data/sponza/Background_Normal.tga b/deploy/data/sponza/Background_Normal.tga
new file mode 100644
index 0000000..ff11181
--- /dev/null
+++ b/deploy/data/sponza/Background_Normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09042d1134d331ab3f231c2bd0033c7d770e5c070353fe1339af29129c1d36d5
+size 4194348
diff --git a/deploy/data/sponza/Background_Roughness.tga b/deploy/data/sponza/Background_Roughness.tga
new file mode 100644
index 0000000..3b7a6c3
--- /dev/null
+++ b/deploy/data/sponza/Background_Roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed37a704b5cec18ec5ab2f6862a2bd21adc2d2bb329a608a79a5bcd2ada642ec
+size 1048620
diff --git a/deploy/data/sponza/ChainTexture_Albedo.tga b/deploy/data/sponza/ChainTexture_Albedo.tga
new file mode 100644
index 0000000..e45e320
--- /dev/null
+++ b/deploy/data/sponza/ChainTexture_Albedo.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3c5c70113f006dd2d7d37f200a0e83d4eed29977a714e3c194b1368a83365a2d
+size 4194348
diff --git a/deploy/data/sponza/ChainTexture_Metallic.tga b/deploy/data/sponza/ChainTexture_Metallic.tga
new file mode 100644
index 0000000..4df0fff
--- /dev/null
+++ b/deploy/data/sponza/ChainTexture_Metallic.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fff0d58ecb1804947aaac5f290cfc3cdf3744ec2f4d7451ad66f43990d0f0e69
+size 1048620
diff --git a/deploy/data/sponza/ChainTexture_Normal.tga b/deploy/data/sponza/ChainTexture_Normal.tga
new file mode 100644
index 0000000..b8de754
--- /dev/null
+++ b/deploy/data/sponza/ChainTexture_Normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21a672d94a32f8971063fd9b4c0fad967cc7d92617a8a544f80d253c9db966b5
+size 4194348
diff --git a/deploy/data/sponza/ChainTexture_Roughness.tga b/deploy/data/sponza/ChainTexture_Roughness.tga
new file mode 100644
index 0000000..bef5555
--- /dev/null
+++ b/deploy/data/sponza/ChainTexture_Roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89f7770251a80537661f19cce6dccc87376df662b39550f38e61df43f9fc46e6
+size 1048620
diff --git a/deploy/data/sponza/Dielectric_metallic.tga b/deploy/data/sponza/Dielectric_metallic.tga
new file mode 100644
index 0000000..5a074df
--- /dev/null
+++ b/deploy/data/sponza/Dielectric_metallic.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2255256f2be0e5ac02a9cfe796b6aaf153b3f793782833eedce84d8a9201304
+size 1048620
diff --git a/deploy/data/sponza/Lion_Albedo.tga b/deploy/data/sponza/Lion_Albedo.tga
new file mode 100644
index 0000000..b344cc1
--- /dev/null
+++ b/deploy/data/sponza/Lion_Albedo.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c3caf37a33546ac3e4f9d357f72097cbe1d516f67a71782af6d23060b869511
+size 4194348
diff --git a/deploy/data/sponza/Lion_Normal.tga b/deploy/data/sponza/Lion_Normal.tga
new file mode 100644
index 0000000..98ca0b7
--- /dev/null
+++ b/deploy/data/sponza/Lion_Normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54aa45c9f7f594bad78d0b4c8c6e7eb5e59f5e0990d76adc82ca2c888826eb68
+size 4194348
diff --git a/deploy/data/sponza/Lion_Roughness.tga b/deploy/data/sponza/Lion_Roughness.tga
new file mode 100644
index 0000000..6f153df
--- /dev/null
+++ b/deploy/data/sponza/Lion_Roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9a65608a5e7a9bdfccc61e257584b0b40345a7c1e0d6fa29be270d29a2fe048
+size 1048620
diff --git a/deploy/data/sponza/Metallic_metallic.tga b/deploy/data/sponza/Metallic_metallic.tga
new file mode 100644
index 0000000..06794ea
--- /dev/null
+++ b/deploy/data/sponza/Metallic_metallic.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2147045af41c65d6df6f6d36be6e6bf7f9fcc9c6273e4da6d745d18da190d59a
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Arch_diffuse.tga b/deploy/data/sponza/Sponza_Arch_diffuse.tga
new file mode 100644
index 0000000..17e0bc2
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Arch_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cbfa887b19e049cd57fbc6a0b8910a96087fc5229c60c0a3f49a2946e629b3d6
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Arch_normal.tga b/deploy/data/sponza/Sponza_Arch_normal.tga
new file mode 100644
index 0000000..123633b
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Arch_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54548f4fc29b8aee3fa11fe173a0a85afced41da856124b325e5a4df894fb505
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Arch_roughness.tga b/deploy/data/sponza/Sponza_Arch_roughness.tga
new file mode 100644
index 0000000..af8af6e
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Arch_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:600cf82eb86ea037886297f2613dd481fc859fc70e5231e7d06394806942ff78
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Bricks_a_Albedo.tga b/deploy/data/sponza/Sponza_Bricks_a_Albedo.tga
new file mode 100644
index 0000000..5645f2b
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Bricks_a_Albedo.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b17b3ff47ef041e9a25cb99a9b0b1b7060c8a9453228c1d9e807adaab57c337
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Bricks_a_Normal.tga b/deploy/data/sponza/Sponza_Bricks_a_Normal.tga
new file mode 100644
index 0000000..6ef5aed
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Bricks_a_Normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c63b64c11e9ed9fdd2527b9d33418473ca198a802d17efa45dafa9d6f554e6ed
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Bricks_a_Roughness.tga b/deploy/data/sponza/Sponza_Bricks_a_Roughness.tga
new file mode 100644
index 0000000..0f22e7c
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Bricks_a_Roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:94781a3f9bb0de90c31f21be56592ead521fbd7633dbfb4dda293161807d62b6
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Ceiling_diffuse.tga b/deploy/data/sponza/Sponza_Ceiling_diffuse.tga
new file mode 100644
index 0000000..e86d1b3
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Ceiling_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3d33be43f978df01bd123ab26823f7803a090206a1288c9735b2856eeabf7b81
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Ceiling_normal.tga b/deploy/data/sponza/Sponza_Ceiling_normal.tga
new file mode 100644
index 0000000..b884c55
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Ceiling_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0dd812d2d78f3a26110cc3784f31bb5dcd4a1490ced9d643f6957ea06620643d
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Ceiling_roughness.tga b/deploy/data/sponza/Sponza_Ceiling_roughness.tga
new file mode 100644
index 0000000..a4f12c5
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Ceiling_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:472597f9a691d9bcac70397afb51330beefbf207b8450f16401e85d9fe0d49ad
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Column_a_diffuse.tga b/deploy/data/sponza/Sponza_Column_a_diffuse.tga
new file mode 100644
index 0000000..6a023c9
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_a_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec1725ca19928398fc06841c5b528d34ba460f8e274d1511d4ebc682ab6f0289
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Column_a_normal.tga b/deploy/data/sponza/Sponza_Column_a_normal.tga
new file mode 100644
index 0000000..3ef72da
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_a_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54820fc64740cd5d1a2e99e658aef8914e3e2ca47077679695bb9a6ebe760ddd
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Column_a_roughness.tga b/deploy/data/sponza/Sponza_Column_a_roughness.tga
new file mode 100644
index 0000000..b70e2cd
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_a_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0319016ade12c981fcf70f7075913317064ace995fe885abe691c4850a4bb316
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Column_b_diffuse.tga b/deploy/data/sponza/Sponza_Column_b_diffuse.tga
new file mode 100644
index 0000000..11fb5ae
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_b_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:600500392f42e678921a5b762bd6351ff27dfbab8fecfad9d87da774aaa40cca
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Column_b_normal.tga b/deploy/data/sponza/Sponza_Column_b_normal.tga
new file mode 100644
index 0000000..4f05c5e
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_b_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f473a9963e4ef6eda61da01791d8007eb617c699b149e6c033c739d707a061e0
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Column_b_roughness.tga b/deploy/data/sponza/Sponza_Column_b_roughness.tga
new file mode 100644
index 0000000..ff0f17d
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_b_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aaf3b369d27c2fedb18df22ce794e643694dee8f4c992590dfa52a477abe4b6b
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Column_c_diffuse.tga b/deploy/data/sponza/Sponza_Column_c_diffuse.tga
new file mode 100644
index 0000000..b69f4b0
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_c_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2d76257bad197dae9b5ffaf79b8eea1364d36e8504ae77e7acbfa1cca11b0b3
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Column_c_normal.tga b/deploy/data/sponza/Sponza_Column_c_normal.tga
new file mode 100644
index 0000000..149295a
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_c_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3519bf4199fb18ddde3bf8298d47fb63bb1ea0ee508169a60a598142fc3c9d1
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Column_c_roughness.tga b/deploy/data/sponza/Sponza_Column_c_roughness.tga
new file mode 100644
index 0000000..2ff697c
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Column_c_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:988807465ada7d5875a93f88fc2cbbd96a668a12f955507f2c9d4cdaebee41f8
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Curtain_Blue_diffuse.tga b/deploy/data/sponza/Sponza_Curtain_Blue_diffuse.tga
new file mode 100644
index 0000000..12819e2
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_Blue_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e6f2d6d8a99365e26477cd64c7c41a4fd4a2e920fc7f8575bc71c9fdcedd6a3
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Curtain_Blue_normal.tga b/deploy/data/sponza/Sponza_Curtain_Blue_normal.tga
new file mode 100644
index 0000000..7622725
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_Blue_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31de3bbd96f37738da7b5a615807c6273f535ec3a15c4cf3d2de933af750bf8a
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Curtain_Green_diffuse.tga b/deploy/data/sponza/Sponza_Curtain_Green_diffuse.tga
new file mode 100644
index 0000000..ac3bac4
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_Green_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:39e3d023b364dd4d52bc1c37dd1b1d4d6e91a1013acd52767fac6110366a131a
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Curtain_Green_normal.tga b/deploy/data/sponza/Sponza_Curtain_Green_normal.tga
new file mode 100644
index 0000000..7622725
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_Green_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31de3bbd96f37738da7b5a615807c6273f535ec3a15c4cf3d2de933af750bf8a
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Curtain_Red_diffuse.tga b/deploy/data/sponza/Sponza_Curtain_Red_diffuse.tga
new file mode 100644
index 0000000..f7cc563
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_Red_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a82d94d77b0b58238aca6e29cd03346e9a595a6642d995f47c4ca1c4b811fd30
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Curtain_Red_normal.tga b/deploy/data/sponza/Sponza_Curtain_Red_normal.tga
new file mode 100644
index 0000000..7622725
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_Red_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31de3bbd96f37738da7b5a615807c6273f535ec3a15c4cf3d2de933af750bf8a
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Curtain_metallic.tga b/deploy/data/sponza/Sponza_Curtain_metallic.tga
new file mode 100644
index 0000000..04fe981
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_metallic.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53dc590606e983eae0bbeb005b94c77b9c3e60d544f127e94fad3ca01b8b1844
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Curtain_roughness.tga b/deploy/data/sponza/Sponza_Curtain_roughness.tga
new file mode 100644
index 0000000..22f9a09
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Curtain_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:561ecc0c5fb13335d529d3713b0bd1e50557e2a829ced4be6b1c425f6c694e13
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Details_diffuse.tga b/deploy/data/sponza/Sponza_Details_diffuse.tga
new file mode 100644
index 0000000..21d3408
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Details_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d507c9ea83a4d8647c8a12faaf67266ff8cfb7866c7500ee566a94710b52cf8c
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Details_metallic.tga b/deploy/data/sponza/Sponza_Details_metallic.tga
new file mode 100644
index 0000000..743092f
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Details_metallic.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ff494a1e6cc9e85c824814bad475043dd017cd176ec7e7f6afe8888202972ce
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Details_normal.tga b/deploy/data/sponza/Sponza_Details_normal.tga
new file mode 100644
index 0000000..74f0e7a
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Details_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47de6e66368ca4046ffe6a6ad23bc9c23cbf3c86d98b5060f0e16b3e071d55a7
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Details_roughness.tga b/deploy/data/sponza/Sponza_Details_roughness.tga
new file mode 100644
index 0000000..5dfd3a7
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Details_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d3dd567ed89d97fe21a8341f20e947b97287297c3a18779c9d390ddbfdd305e
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Fabric_Blue_diffuse.tga b/deploy/data/sponza/Sponza_Fabric_Blue_diffuse.tga
new file mode 100644
index 0000000..b101890
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_Blue_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c5353fa87304b42dd347ac124cd884a8ce1d5b5bb78130a9615712477c87d07
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Fabric_Blue_normal.tga b/deploy/data/sponza/Sponza_Fabric_Blue_normal.tga
new file mode 100644
index 0000000..20ef226
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_Blue_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d42f33dc4a940e203d2843809ae48dd8d8897cac97eb52bdeb5f7046ed8266b
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Fabric_Green_diffuse.tga b/deploy/data/sponza/Sponza_Fabric_Green_diffuse.tga
new file mode 100644
index 0000000..0763a5d
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_Green_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72729cc52475caae9fc236bfb4856a19b37ae2c37af745c061cf9023d9c4fac0
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Fabric_Green_normal.tga b/deploy/data/sponza/Sponza_Fabric_Green_normal.tga
new file mode 100644
index 0000000..20ef226
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_Green_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d42f33dc4a940e203d2843809ae48dd8d8897cac97eb52bdeb5f7046ed8266b
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Fabric_Red_diffuse.tga b/deploy/data/sponza/Sponza_Fabric_Red_diffuse.tga
new file mode 100644
index 0000000..da031bb
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_Red_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e1256c6a67543e74abb3a7b8c3f0176ea08cb650945b3cd172edaedd4817512
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Fabric_Red_normal.tga b/deploy/data/sponza/Sponza_Fabric_Red_normal.tga
new file mode 100644
index 0000000..20ef226
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_Red_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d42f33dc4a940e203d2843809ae48dd8d8897cac97eb52bdeb5f7046ed8266b
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Fabric_metallic.tga b/deploy/data/sponza/Sponza_Fabric_metallic.tga
new file mode 100644
index 0000000..2df5677
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_metallic.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2aa93767d145ffc689df848ca10d793645da8e167e7101b76515a6ebc54ef850
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Fabric_roughness.tga b/deploy/data/sponza/Sponza_Fabric_roughness.tga
new file mode 100644
index 0000000..5e0eb47
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Fabric_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3e7c976af11855803c48c33cc74d64f566675e0fc1f926ff287c88ded95f672
+size 1048620
diff --git a/deploy/data/sponza/Sponza_FlagPole_diffuse.tga b/deploy/data/sponza/Sponza_FlagPole_diffuse.tga
new file mode 100644
index 0000000..1a8518b
--- /dev/null
+++ b/deploy/data/sponza/Sponza_FlagPole_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9852428b447b169978da56660d6fd53b6830fa18d87aafcca99f8b2f47bf1a00
+size 4194348
diff --git a/deploy/data/sponza/Sponza_FlagPole_normal.tga b/deploy/data/sponza/Sponza_FlagPole_normal.tga
new file mode 100644
index 0000000..fe07610
--- /dev/null
+++ b/deploy/data/sponza/Sponza_FlagPole_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2507dfe1b5db751bc84d8701c21b6d31654bcc7e2c08d552b2da64aaaba9234d
+size 4194348
diff --git a/deploy/data/sponza/Sponza_FlagPole_roughness.tga b/deploy/data/sponza/Sponza_FlagPole_roughness.tga
new file mode 100644
index 0000000..229a84c
--- /dev/null
+++ b/deploy/data/sponza/Sponza_FlagPole_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a078fdbd0da1379235e9061f60ea8674e1a97f3f09b5f0877025431ac76448d0
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Floor_diffuse.tga b/deploy/data/sponza/Sponza_Floor_diffuse.tga
new file mode 100644
index 0000000..4bb07cf
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Floor_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b050223b50846b5a18df81e7fb686a182403801ba6ebd01524962440c89c8f7
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Floor_normal.tga b/deploy/data/sponza/Sponza_Floor_normal.tga
new file mode 100644
index 0000000..19eefea
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Floor_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90197f561e5bee113e32d9c15960b6a83a4ba7d5126561d7145234e4ccd8d73c
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Floor_roughness.tga b/deploy/data/sponza/Sponza_Floor_roughness.tga
new file mode 100644
index 0000000..df3f41e
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Floor_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:706c1598e406badaf5677aa8a2d5e7362479ac8a77dcef440844089ee954e45b
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Roof_diffuse.tga b/deploy/data/sponza/Sponza_Roof_diffuse.tga
new file mode 100644
index 0000000..daa991c
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Roof_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2393198434201e294dacecc2b2c8909d20d38d7b68cd3c320bf6968f6b025d02
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Roof_normal.tga b/deploy/data/sponza/Sponza_Roof_normal.tga
new file mode 100644
index 0000000..da4021c
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Roof_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c662604d5e305be882c2c86d0f73d88a0a5173b3e082c6ff3cb69db8fd004796
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Roof_roughness.tga b/deploy/data/sponza/Sponza_Roof_roughness.tga
new file mode 100644
index 0000000..eac510f
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Roof_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28e8f7740700de5a16002afea65a77c64bd0d728fcfa3b398cb2dd0a21577457
+size 1048620
diff --git a/deploy/data/sponza/Sponza_Thorn_diffuse.tga b/deploy/data/sponza/Sponza_Thorn_diffuse.tga
new file mode 100644
index 0000000..4caaee3
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Thorn_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:52fb7426545675b27774589ec910ca8bb4ec710db06d12d9d89348ef9c49e26f
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Thorn_normal.tga b/deploy/data/sponza/Sponza_Thorn_normal.tga
new file mode 100644
index 0000000..d99f82c
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Thorn_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36bfc8c0b515f36ce8dd5f4466af9e6a099aeff9966a03bd6e38bd0d1a3bdaf1
+size 4194348
diff --git a/deploy/data/sponza/Sponza_Thorn_roughness.tga b/deploy/data/sponza/Sponza_Thorn_roughness.tga
new file mode 100644
index 0000000..4c60bbd
--- /dev/null
+++ b/deploy/data/sponza/Sponza_Thorn_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad1ea4d08b4a52f5eb28e8968b01991ff9bcf990e71d4e5cf19b7edfaa92c887
+size 1048620
diff --git a/deploy/data/sponza/VaseHanging_diffuse.tga b/deploy/data/sponza/VaseHanging_diffuse.tga
new file mode 100644
index 0000000..d083b0d
--- /dev/null
+++ b/deploy/data/sponza/VaseHanging_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31e4bf92c43cc742638df84739d3e95925fd7756c14081c977b7c30aee023fba
+size 4194348
diff --git a/deploy/data/sponza/VaseHanging_normal.tga b/deploy/data/sponza/VaseHanging_normal.tga
new file mode 100644
index 0000000..240f1d4
--- /dev/null
+++ b/deploy/data/sponza/VaseHanging_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19168f2f9cd7e3e8e4337569f1f89608ef1ec628a106e45d16b5b18255de2ec5
+size 4194348
diff --git a/deploy/data/sponza/VaseHanging_roughness.tga b/deploy/data/sponza/VaseHanging_roughness.tga
new file mode 100644
index 0000000..815a135
--- /dev/null
+++ b/deploy/data/sponza/VaseHanging_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:061b205040af9909c5987a66945d7dddd696afba22cbd7219810b807ff2c1c8f
+size 1048620
diff --git a/deploy/data/sponza/VasePlant_diffuse.tga b/deploy/data/sponza/VasePlant_diffuse.tga
new file mode 100644
index 0000000..5e4bbd2
--- /dev/null
+++ b/deploy/data/sponza/VasePlant_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f44cccc4f549d919a4053d2fb725f392ffd9ecd638e5eeb1fa73a2db5c55aa1e
+size 4194348
diff --git a/deploy/data/sponza/VasePlant_normal.tga b/deploy/data/sponza/VasePlant_normal.tga
new file mode 100644
index 0000000..396201b
--- /dev/null
+++ b/deploy/data/sponza/VasePlant_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4d2395d2f7527bbb104a5502cd0c3a14100d3a21ab6f72c88355ddf43053aeb
+size 4194348
diff --git a/deploy/data/sponza/VasePlant_roughness.tga b/deploy/data/sponza/VasePlant_roughness.tga
new file mode 100644
index 0000000..ac974eb
--- /dev/null
+++ b/deploy/data/sponza/VasePlant_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb2f02ab52deccaa233f80683cd88cebe3d360e191c6f3ba0a9c34a2b62bd84f
+size 1048620
diff --git a/deploy/data/sponza/VaseRound_diffuse.tga b/deploy/data/sponza/VaseRound_diffuse.tga
new file mode 100644
index 0000000..ab2035d
--- /dev/null
+++ b/deploy/data/sponza/VaseRound_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ccce7168176800cea718ac76b0b780934a85fd815eeedb50518dd6165d800056
+size 4194348
diff --git a/deploy/data/sponza/VaseRound_normal.tga b/deploy/data/sponza/VaseRound_normal.tga
new file mode 100644
index 0000000..5532ebb
--- /dev/null
+++ b/deploy/data/sponza/VaseRound_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8925c2ddbd2043aeb7569687f46e4b9d84d73ae9b6c0d8ba0277be0e5970938b
+size 4194348
diff --git a/deploy/data/sponza/VaseRound_roughness.tga b/deploy/data/sponza/VaseRound_roughness.tga
new file mode 100644
index 0000000..224685e
--- /dev/null
+++ b/deploy/data/sponza/VaseRound_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5841baf2aace722b207b83f634f8664eccfb63dd27406eb4f2daddab979a6b32
+size 1048620
diff --git a/deploy/data/sponza/Vase_diffuse.tga b/deploy/data/sponza/Vase_diffuse.tga
new file mode 100644
index 0000000..172aa9f
--- /dev/null
+++ b/deploy/data/sponza/Vase_diffuse.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:deea435bf6907d4c85c245ea62a35064e8cccd11ee206637036df7d158d33251
+size 4194348
diff --git a/deploy/data/sponza/Vase_normal.tga b/deploy/data/sponza/Vase_normal.tga
new file mode 100644
index 0000000..5ba0eea
--- /dev/null
+++ b/deploy/data/sponza/Vase_normal.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ed257534665c2461ad1b6aa0cf98654425d910479ddd02a3134fcb16c6cce34
+size 4194348
diff --git a/deploy/data/sponza/Vase_roughness.tga b/deploy/data/sponza/Vase_roughness.tga
new file mode 100644
index 0000000..cc63b6a
--- /dev/null
+++ b/deploy/data/sponza/Vase_roughness.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7cc8317f84604d42ca90fa4e7adad72aab0995ca840e1b59ae37fa3789e8e17d
+size 1048620
diff --git a/deploy/data/sponza/background.jpg b/deploy/data/sponza/background.jpg
deleted file mode 100644
index 4654d33..0000000
--- a/deploy/data/sponza/background.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:71c21508d528da03a08390f6788df085b5ee214bdc537eb28c926bc6f80b4bed
-size 221460
diff --git a/deploy/data/sponza/background_ddn.jpg b/deploy/data/sponza/background_ddn.jpg
deleted file mode 100644
index f7eb677..0000000
--- a/deploy/data/sponza/background_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9a144a818ee28358575c39958c5c49338c5fa24d3a60c0653cd93a96c6488a73
-size 181441
diff --git a/deploy/data/sponza/chain_texture.jpg b/deploy/data/sponza/chain_texture.jpg
deleted file mode 100644
index c704e82..0000000
--- a/deploy/data/sponza/chain_texture.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:84bc3ae33b309adda45942f04933e5d8ffc31711217afb613dbf3cee4d47b4bb
-size 60520
diff --git a/deploy/data/sponza/chain_texture_ddn.jpg b/deploy/data/sponza/chain_texture_ddn.jpg
deleted file mode 100644
index 4068d66..0000000
--- a/deploy/data/sponza/chain_texture_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d795ffbf233015c010b723095a687a7ba1b8477ee85c384b90ad34ee3838cfbb
-size 32648
diff --git a/deploy/data/sponza/copyright.txt b/deploy/data/sponza/copyright.txt
new file mode 100644
index 0000000..a71ea1b
--- /dev/null
+++ b/deploy/data/sponza/copyright.txt
@@ -0,0 +1,31 @@
+PBR textures for the Sponza model.
+For more informations: www.alexandre-pestana.com
+
+
+Original copyright:
+
+July 14, 2011 Morgan McGuire modified the model from Crytek's OBJ
+export to correct some small errors. He computed bump maps from the
+normal maps using normal2bump.cpp (since
+MTL files expect height bumps, not normals), put the "mask" textures
+into the alpha channel of the associated diffuse texture, cleaned up
+noise in the masks, created the missing gi_flag.tga texture, and
+removed the long untextured banner floating in the middle of the
+atrium that appears in the file but in none of the published images of
+the model. The banner is in banner.obj.
+
+
+
+http://www.crytek.com/cryengine/cryengine3/downloads
+
+
+Sponza Model
+August 19, 2010
+The Atrium Sponza Palace, Dubrovnik, is an elegant and improved model created by Frank Meinl. The original Sponza model was created by Marko Dabrovic in early 2002. Over the years, the Sponza Atrium scene has become one of the most popular 3D scenes for testing global illumination and radiosity due to it's specific architectural structure which is particularly complex for global illumination light.
+
+However, nowadays it is considered as a simple model, thus it was decided to crate a new model with highly improved appearance and scene complexity. It is donated to the public for radiosity and is represented in several different formats (3ds, Obj) for use with various commercial 3D applications and renderers.
+
+
+Screenshot from the I3D paper
+http://crytek.com/sites/default/files/20100301_lpv.pdf
diff --git a/deploy/data/sponza/gi_flag.tga b/deploy/data/sponza/gi_flag.tga
new file mode 100644
index 0000000..0b59a8a
--- /dev/null
+++ b/deploy/data/sponza/gi_flag.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:15eb675ca87eb9989f377f4e399fde97b213890562d35d60a9d7aa7edcfb7b1d
+size 49196
diff --git a/deploy/data/sponza/lion.jpg b/deploy/data/sponza/lion.jpg
deleted file mode 100644
index a8d621c..0000000
--- a/deploy/data/sponza/lion.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a02775b85f91bb4066845e6a72d6b898ba08f53a7bff467fe605c59d0469363e
-size 373716
diff --git a/deploy/data/sponza/lion_ddn.jpg b/deploy/data/sponza/lion_ddn.jpg
deleted file mode 100644
index 60395ea..0000000
--- a/deploy/data/sponza/lion_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3ee30e192ba5ee60a93f1d0c1d68f1c5bca32f503a6d1be4b80515f997da448d
-size 252023
diff --git a/deploy/data/sponza/spnza_bricks_a_ddn.jpg b/deploy/data/sponza/spnza_bricks_a_ddn.jpg
deleted file mode 100644
index be901cf..0000000
--- a/deploy/data/sponza/spnza_bricks_a_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ede75922579030cc5d89e1ef0920137bb7ef75147e511e95c91d5593da6c4a87
-size 159314
diff --git a/deploy/data/sponza/spnza_bricks_a_diff.jpg b/deploy/data/sponza/spnza_bricks_a_diff.jpg
deleted file mode 100644
index 52f6b81..0000000
--- a/deploy/data/sponza/spnza_bricks_a_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6e4317d554e56a4a368da51eb4735a4afa5b5ab944cd4fac3cff1ea2ec920c6a
-size 366857
diff --git a/deploy/data/sponza/spnza_bricks_a_spec.jpg b/deploy/data/sponza/spnza_bricks_a_spec.jpg
deleted file mode 100644
index 2f8a15e..0000000
--- a/deploy/data/sponza/spnza_bricks_a_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8218f69bb29cdbb0fb0eb2befb58fc4e0619fec18a5bd00a0f62e8dcbf221fb4
-size 296434
diff --git a/deploy/data/sponza/sponza_arch_ddn.jpg b/deploy/data/sponza/sponza_arch_ddn.jpg
deleted file mode 100644
index b53be67..0000000
--- a/deploy/data/sponza/sponza_arch_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e9924b75178787cbaec0be13fc214f9913102604c775e182ceb15754387ba3b5
-size 98854
diff --git a/deploy/data/sponza/sponza_arch_diff.jpg b/deploy/data/sponza/sponza_arch_diff.jpg
deleted file mode 100644
index ee3e504..0000000
--- a/deploy/data/sponza/sponza_arch_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:165a93ac306ec005028d5e981535b185e96920e5647cf146a4b3b186da4dba7a
-size 338608
diff --git a/deploy/data/sponza/sponza_arch_spec.jpg b/deploy/data/sponza/sponza_arch_spec.jpg
deleted file mode 100644
index 6e0ae78..0000000
--- a/deploy/data/sponza/sponza_arch_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4378cfeda2d5065bbf68367eb570608c7ac852d4130a164cafec76a7c4c9fbfa
-size 288147
diff --git a/deploy/data/sponza/sponza_ceiling_a_diff.jpg b/deploy/data/sponza/sponza_ceiling_a_diff.jpg
deleted file mode 100644
index c49ea76..0000000
--- a/deploy/data/sponza/sponza_ceiling_a_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9c0837816e645b4b68c5ffb2781fcabef759142e6413f147d72b3d4f75d29150
-size 305420
diff --git a/deploy/data/sponza/sponza_ceiling_a_spec.jpg b/deploy/data/sponza/sponza_ceiling_a_spec.jpg
deleted file mode 100644
index dc74e26..0000000
--- a/deploy/data/sponza/sponza_ceiling_a_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0d73c686345e17bd24bba7a426ccf9670c69c3c0204bdc55012aa06c0a6ffca8
-size 303721
diff --git a/deploy/data/sponza/sponza_column_a_ddn.jpg b/deploy/data/sponza/sponza_column_a_ddn.jpg
deleted file mode 100644
index 813e0fe..0000000
--- a/deploy/data/sponza/sponza_column_a_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fe102abf9b3528cf865467509ec84f410adf49ddd94a7aad798146ae72024c82
-size 252886
diff --git a/deploy/data/sponza/sponza_column_a_diff.jpg b/deploy/data/sponza/sponza_column_a_diff.jpg
deleted file mode 100644
index 96cbcf5..0000000
--- a/deploy/data/sponza/sponza_column_a_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:28d85264f4af85047ea2a0502ab19b1639c0983ec6d0415fc20b6badb4387ab5
-size 336229
diff --git a/deploy/data/sponza/sponza_column_a_spec.jpg b/deploy/data/sponza/sponza_column_a_spec.jpg
deleted file mode 100644
index 39a2108..0000000
--- a/deploy/data/sponza/sponza_column_a_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6d9293b8c006a4bff56f2f931b3f455cbb7dc2afc7ff7185c28c75f6713fd8fb
-size 317628
diff --git a/deploy/data/sponza/sponza_column_b_ddn.jpg b/deploy/data/sponza/sponza_column_b_ddn.jpg
deleted file mode 100644
index 11cab3b..0000000
--- a/deploy/data/sponza/sponza_column_b_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:26deb98e9355c876a6954340c7f6a1152b96e82f7cbff648f6e805e7482445a1
-size 299910
diff --git a/deploy/data/sponza/sponza_column_b_diff.jpg b/deploy/data/sponza/sponza_column_b_diff.jpg
deleted file mode 100644
index ea33f1b..0000000
--- a/deploy/data/sponza/sponza_column_b_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fada637fa1690c6b7ee7418cc8a32dafb99eee0e0322c935fbb4803753199307
-size 416387
diff --git a/deploy/data/sponza/sponza_column_b_spec.jpg b/deploy/data/sponza/sponza_column_b_spec.jpg
deleted file mode 100644
index 54182d4..0000000
--- a/deploy/data/sponza/sponza_column_b_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ca3d5b741f7597c447abbaa4e1a4133661f83484855a03f99ea2053505e09cfb
-size 317559
diff --git a/deploy/data/sponza/sponza_column_c_ddn.jpg b/deploy/data/sponza/sponza_column_c_ddn.jpg
deleted file mode 100644
index b6a21eb..0000000
--- a/deploy/data/sponza/sponza_column_c_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6e39b23216a8f796f572e3237a43fc33fa1b9f3c2d43dd293e4bc904a52b7fed
-size 321554
diff --git a/deploy/data/sponza/sponza_column_c_diff.jpg b/deploy/data/sponza/sponza_column_c_diff.jpg
deleted file mode 100644
index dae7f45..0000000
--- a/deploy/data/sponza/sponza_column_c_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f179f0279f6904de4bf74e5438426995621bf6e1178ea14b747ad8ebe1f4de8d
-size 441261
diff --git a/deploy/data/sponza/sponza_column_c_spec.jpg b/deploy/data/sponza/sponza_column_c_spec.jpg
deleted file mode 100644
index 0117623..0000000
--- a/deploy/data/sponza/sponza_column_c_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:27794665e72f3ac577d95bc47d51d27d7d51d6a668c761b891013918d8504f7a
-size 364839
diff --git a/deploy/data/sponza/sponza_curtain_blue_diff.jpg b/deploy/data/sponza/sponza_curtain_blue_diff.jpg
deleted file mode 100644
index bba5e07..0000000
--- a/deploy/data/sponza/sponza_curtain_blue_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f1b6094ca8aa88d824a01c1115c029138d612b5b046ffafc7a998c2f732151ac
-size 2131808
diff --git a/deploy/data/sponza/sponza_curtain_diff.jpg b/deploy/data/sponza/sponza_curtain_diff.jpg
deleted file mode 100644
index 51db9bf..0000000
--- a/deploy/data/sponza/sponza_curtain_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:239e87923d98e7d722c08290f567633f817b1868eaa4c2eb0fe229c3192b19b1
-size 2047994
diff --git a/deploy/data/sponza/sponza_curtain_green_diff.jpg b/deploy/data/sponza/sponza_curtain_green_diff.jpg
deleted file mode 100644
index fcea1c7..0000000
--- a/deploy/data/sponza/sponza_curtain_green_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2df9ab155f39ff901d41bdcab0e2ef5a8c591ab7cf936021964f51fb5fdcdffd
-size 1982011
diff --git a/deploy/data/sponza/sponza_details_diff.jpg b/deploy/data/sponza/sponza_details_diff.jpg
deleted file mode 100644
index bccaf42..0000000
--- a/deploy/data/sponza/sponza_details_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8bbb9625e7b64669827272575d7ec3a144c419edaa7ec621478457538a23be79
-size 201736
diff --git a/deploy/data/sponza/sponza_details_spec.jpg b/deploy/data/sponza/sponza_details_spec.jpg
deleted file mode 100644
index 7f4f39d..0000000
--- a/deploy/data/sponza/sponza_details_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:03db4c5213f000078ec35f9ca404e99e026a9016d8b403eed66b47cbeb40f81d
-size 301578
diff --git a/deploy/data/sponza/sponza_fabric_blue_diff.jpg b/deploy/data/sponza/sponza_fabric_blue_diff.jpg
deleted file mode 100644
index 00a12c4..0000000
--- a/deploy/data/sponza/sponza_fabric_blue_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d923b7e955cf16b910ef4d5df33f312597ec9d6dd94866a5863ea3a9454dfd52
-size 430283
diff --git a/deploy/data/sponza/sponza_fabric_diff.jpg b/deploy/data/sponza/sponza_fabric_diff.jpg
deleted file mode 100644
index 2f7091b..0000000
--- a/deploy/data/sponza/sponza_fabric_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d0a448878d89ddb8035242ab5452af1ffc8d6979b4f10b343551c9389b2c6097
-size 466634
diff --git a/deploy/data/sponza/sponza_fabric_green_diff.jpg b/deploy/data/sponza/sponza_fabric_green_diff.jpg
deleted file mode 100644
index ab67231..0000000
--- a/deploy/data/sponza/sponza_fabric_green_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c41642a8e47950d92abaafc6de5f8b8374d16f3868a27549082cf1fe9724735b
-size 435794
diff --git a/deploy/data/sponza/sponza_fabric_spec.jpg b/deploy/data/sponza/sponza_fabric_spec.jpg
deleted file mode 100644
index 90b1c4a..0000000
--- a/deploy/data/sponza/sponza_fabric_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7ee375ff556647ab24725b210eed05f99caaa1218a36f3a18efc6fa94f570176
-size 418902
diff --git a/deploy/data/sponza/sponza_flagpole_diff.jpg b/deploy/data/sponza/sponza_flagpole_diff.jpg
deleted file mode 100644
index 67c9c15..0000000
--- a/deploy/data/sponza/sponza_flagpole_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e17023ab9879ecde5b216cf34c1ef399d20c58cc57a5a254d7fa9eb2e4e04785
-size 248780
diff --git a/deploy/data/sponza/sponza_flagpole_spec.jpg b/deploy/data/sponza/sponza_flagpole_spec.jpg
deleted file mode 100644
index 1f1e7ad..0000000
--- a/deploy/data/sponza/sponza_flagpole_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4b36b4e13e770fe9e4920b091918a3e5c6e62e40dda9b595321806124fa0df49
-size 360542
diff --git a/deploy/data/sponza/sponza_floor_a_ddn.jpg b/deploy/data/sponza/sponza_floor_a_ddn.jpg
deleted file mode 100644
index ee33e8f..0000000
--- a/deploy/data/sponza/sponza_floor_a_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:915b62499d589d04b4146ff39d47f1b8e154bcc98dd798ddb7c23809683500bb
-size 102390
diff --git a/deploy/data/sponza/sponza_floor_a_diff.jpg b/deploy/data/sponza/sponza_floor_a_diff.jpg
deleted file mode 100644
index ef5f60e..0000000
--- a/deploy/data/sponza/sponza_floor_a_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f1ebc760034fe7be2f92f3a1c5ab25d20a182c83f442c4f7f8501b5181b99b6e
-size 344863
diff --git a/deploy/data/sponza/sponza_floor_a_spec.jpg b/deploy/data/sponza/sponza_floor_a_spec.jpg
deleted file mode 100644
index 76429e4..0000000
--- a/deploy/data/sponza/sponza_floor_a_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:087c3f6399daf515500268db4cb2bdd9bb5f999c5a476175b67dc8aff892fa36
-size 224829
diff --git a/deploy/data/sponza/sponza_roof_diff.jpg b/deploy/data/sponza/sponza_roof_diff.jpg
deleted file mode 100644
index e8f6a74..0000000
--- a/deploy/data/sponza/sponza_roof_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b8c53ef97c23706f62df7088d01b56b2ae608f33eba44898a32761092ef2b4e0
-size 552593
diff --git a/deploy/data/sponza/sponza_thorn_ddn.jpg b/deploy/data/sponza/sponza_thorn_ddn.jpg
deleted file mode 100644
index 8e1a7c3..0000000
--- a/deploy/data/sponza/sponza_thorn_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:14b7dcb2728c3c19f6e7fd60005ff89f32fafbf294c6a0c484faf7c10c23dd4e
-size 41072
diff --git a/deploy/data/sponza/sponza_thorn_diff.jpg b/deploy/data/sponza/sponza_thorn_diff.jpg
deleted file mode 100644
index 6df969d..0000000
--- a/deploy/data/sponza/sponza_thorn_diff.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3d9bafc41554f6caae32909049a12b0ace082cba46402314ab5cbd9ba682406c
-size 82425
diff --git a/deploy/data/sponza/vase_ddn.jpg b/deploy/data/sponza/vase_ddn.jpg
deleted file mode 100644
index 70bedf1..0000000
--- a/deploy/data/sponza/vase_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:30d24dd383b45ca98d26ea8a3c273b59108cf8e7423d4fc2ac93a7b5c19575d6
-size 418483
diff --git a/deploy/data/sponza/vase_dif.jpg b/deploy/data/sponza/vase_dif.jpg
deleted file mode 100644
index 27c3ff1..0000000
--- a/deploy/data/sponza/vase_dif.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:90453a5d13cce6abe874181c78b12f1d189f63564957c9b55f240e5e483c3d25
-size 341785
diff --git a/deploy/data/sponza/vase_hanging.jpg b/deploy/data/sponza/vase_hanging.jpg
deleted file mode 100644
index 1b76c28..0000000
--- a/deploy/data/sponza/vase_hanging.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:55df8c4b921dd60ec9a164c28b01480def625989e8badb33f195663c44d29320
-size 191476
diff --git a/deploy/data/sponza/vase_plant.jpg b/deploy/data/sponza/vase_plant.jpg
deleted file mode 100644
index 2ac4b13..0000000
--- a/deploy/data/sponza/vase_plant.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6618e5e4c1f5768cdf8eec7e3180cbc81b2fb8ec00cd734696db65ed9885ea24
-size 182011
diff --git a/deploy/data/sponza/vase_round.jpg b/deploy/data/sponza/vase_round.jpg
deleted file mode 100644
index 5c9f7b4..0000000
--- a/deploy/data/sponza/vase_round.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e03fb62b74f59e98b1e9d1a62cabfd385fa36a91c38ce6976bedc7e7bc5ff027
-size 367075
diff --git a/deploy/data/sponza/vase_round_ddn.jpg b/deploy/data/sponza/vase_round_ddn.jpg
deleted file mode 100644
index 50195a4..0000000
--- a/deploy/data/sponza/vase_round_ddn.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c27f89c31930664d8b3d8a9dfa0804eb08a6fb3f18b75b9014f11b653b67b946
-size 108210
diff --git a/deploy/data/sponza/vase_round_spec.jpg b/deploy/data/sponza/vase_round_spec.jpg
deleted file mode 100644
index 873f140..0000000
--- a/deploy/data/sponza/vase_round_spec.jpg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:86599ab6e0d1fa21bc6ab25e21ea913328ff7ce6eb8450cebf9194c93aec6fe3
-size 271638
diff --git a/deploy/data/sword.mtl b/deploy/data/sword.mtl
index c5cf077..88e8262 100644
--- a/deploy/data/sword.mtl
+++ b/deploy/data/sword.mtl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c4a6427eb082c3e19637ebdc5fb49699cdbc6a9f7e5a0b0a814036794779bc10
-size 100
+oid sha256:21173927cb0e81a2acbc0e4e8382293c08d8e633f47caa3ce76f870b56b6d561
+size 129
diff --git a/src/engine.cpp b/src/engine.cpp
index 05c6e0b..ecf45d8 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -12,6 +12,7 @@
#include "sparrowshell/sparrowshell.h"
#include "scene/physicsdebugnode.h"
#include "imgui/imgui.h"
+#include "tools/loader.h"
Engine::Engine() :
m_window(nullptr),
diff --git a/src/scene/gui/backgroundnode.cpp b/src/scene/gui/backgroundnode.cpp
index fcdf5be..7358055 100644
--- a/src/scene/gui/backgroundnode.cpp
+++ b/src/scene/gui/backgroundnode.cpp
@@ -7,7 +7,7 @@
#include "glm/vec3.hpp"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
BackGroundNode::BackGroundNode(glm::vec2 dimension, glm::vec3 color, float opacity,float depth):
m_dimension(dimension),
@@ -18,9 +18,9 @@ BackGroundNode::BackGroundNode(glm::vec2 dimension, glm::vec3 color, float opaci
{
Mesh* mesh = new Mesh("background");
mesh->addRectangle2D(glm::vec2(0),dimension);
- PhongMaterial *mat = new PhongMaterial();
- mat->diffuse = color;
- mat->m_opacity = opacity;
+ PBRMaterial *mat = new PBRMaterial();
+ mat->albedo = color;
+ mat->opacity = opacity;
mesh->setMaterial(mat);
mesh->setDepth(depth);
mesh->initGL();
@@ -30,13 +30,13 @@ BackGroundNode::BackGroundNode(glm::vec2 dimension, glm::vec3 color, float opaci
void BackGroundNode::update(){
if(m_color_updated){
- PhongMaterial* mat = (PhongMaterial*) m_mesh->getGeometryNode()->mesh->getMaterial();
- mat->diffuse = m_color;
+ PBRMaterial* mat = (PBRMaterial*) m_mesh->getGeometryNode()->mesh->getMaterial();
+ mat->albedo = m_color;
m_color_updated = false;
}
if(m_opacity_updated){
- PhongMaterial* mat = (PhongMaterial*) m_mesh->getGeometryNode()->mesh->getMaterial();
- mat->m_opacity = m_opacity;
+ PBRMaterial* mat = (PBRMaterial*) m_mesh->getGeometryNode()->mesh->getMaterial();
+ mat->opacity = m_opacity;
m_opacity_updated = false;
}
GUINode::update();
diff --git a/src/scene/gui/buttonnode.cpp b/src/scene/gui/buttonnode.cpp
index 94e2520..ca7d0f8 100644
--- a/src/scene/gui/buttonnode.cpp
+++ b/src/scene/gui/buttonnode.cpp
@@ -10,7 +10,7 @@
#include "SparrowRenderer/sparrowrenderer.h"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
#include "sparrowshell/sparrowshell.h"
#include "tools/font.h"
diff --git a/src/scene/gui/labelnode.cpp b/src/scene/gui/labelnode.cpp
index ed72a00..d38a80f 100644
--- a/src/scene/gui/labelnode.cpp
+++ b/src/scene/gui/labelnode.cpp
@@ -3,7 +3,7 @@
#include "resourcemanager.h"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
#include
@@ -64,8 +64,8 @@ void LabelNode::update(){
}
if(m_color_updated){
if(m_text){
- PhongMaterial* mat = (PhongMaterial*) m_text->m_geometry.mesh->getMaterial();
- mat->diffuse = m_color;
+ PBRMaterial* mat = (PBRMaterial*) m_text->m_geometry.mesh->getMaterial();
+ mat->albedo = m_color;
m_color_updated = false;
}
}
diff --git a/src/scene/gui/scrollbarnode.cpp b/src/scene/gui/scrollbarnode.cpp
index 2abd15e..875c12a 100644
--- a/src/scene/gui/scrollbarnode.cpp
+++ b/src/scene/gui/scrollbarnode.cpp
@@ -5,7 +5,7 @@
#include "scene/meshnode.h"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
#include "sparrowshell/sparrowshell.h"
ScrollBarNode::ScrollBarNode(glm::vec2 dimension, glm::vec3 bar_color):
@@ -22,9 +22,9 @@ ScrollBarNode::ScrollBarNode(glm::vec2 dimension, glm::vec3 bar_color):
{
Mesh* mesh = new Mesh("scrollbar");
mesh->addRectangle2D(glm::vec2(0),m_dimension);
- PhongMaterial* mat = new PhongMaterial();
- mat->diffuse = m_bar_color;
- mat->m_opacity = 0.8;
+ PBRMaterial* mat = new PBRMaterial();
+ mat->albedo = m_bar_color;
+ mat->opacity = 0.8;
mesh->setMaterial(mat);
mesh->setDepth(SparrowShell::SHELL_DEPTH+1);
mesh->initGL();
@@ -63,8 +63,8 @@ void ScrollBarNode::update()
}
if(m_bar_color_updated)
{
- PhongMaterial* mat = (PhongMaterial*) m_bar->getGeometryNode()->mesh->getMaterial();
- mat->diffuse = m_bar_color;
+ PBRMaterial* mat = (PBRMaterial*) m_bar->getGeometryNode()->mesh->getMaterial();
+ mat->albedo = m_bar_color;
m_bar_color_updated = false;
}
if(needTransformUpdate)
diff --git a/src/scene/gui/scrollbarnode.h b/src/scene/gui/scrollbarnode.h
index c6b1348..4f8d6a4 100644
--- a/src/scene/gui/scrollbarnode.h
+++ b/src/scene/gui/scrollbarnode.h
@@ -10,12 +10,12 @@ class ScrollBarNode : public GUINode
protected:
glm::vec2 m_dimension;
glm::vec2 m_bar_position;
- int m_index_position;
- int m_bar_size;
- int m_total_size;
glm::vec2 m_bar_dimension;
glm::vec3 m_bar_color;
bool m_bar_color_updated;
+ int m_index_position;
+ int m_bar_size;
+ int m_total_size;
MeshNode* m_bar;
bool m_bar_resized;
bool m_bar_moved;
diff --git a/src/scene/gui/textinputnode.cpp b/src/scene/gui/textinputnode.cpp
index cd8cb64..1103a7d 100644
--- a/src/scene/gui/textinputnode.cpp
+++ b/src/scene/gui/textinputnode.cpp
@@ -17,8 +17,8 @@ TextInputNode::TextInputNode(glm::vec2 dimension):
// Font *shellfont = RESOURCE_GET(Font,"shellfont");
Mesh* mesh = new Mesh();
mesh->addRectangle2D(glm::vec2(0),glm::vec2(2, m_font_size));
- PhongMaterial* mat = new PhongMaterial();
- mat->diffuse = glm::vec3(1,1,1);
+ PBRMaterial* mat = new PBRMaterial();
+ mat->albedo = glm::vec3(1,1,1);
mesh->setMaterial(mat);
mesh->setDepth(30);
mesh->initGL();
diff --git a/src/scene/physicsdebugnode.cpp b/src/scene/physicsdebugnode.cpp
index e4492e8..d12f02c 100644
--- a/src/scene/physicsdebugnode.cpp
+++ b/src/scene/physicsdebugnode.cpp
@@ -1,16 +1,11 @@
#include "physicsdebugnode.h"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
PhysicsDebugNode::PhysicsDebugNode() :
MeshNode(new Mesh())
{
- PhongMaterial* mat = new PhongMaterial();
- mat->emission = glm::vec3(1, 0, 0);
- mat->diffuse = glm::vec3(0);
- mat->specular = glm::vec3(0);
-
- m_geometry.mesh->setMaterial(mat);
+ m_geometry.mesh->setMaterial(new PBRMaterial());
m_geometry.mesh->setPrimitiveType(GL_LINES);
m_geometry.mesh->setWireframe(true);
diff --git a/src/scene/playercharacternode.cpp b/src/scene/playercharacternode.cpp
index 0567efe..0bc2edf 100644
--- a/src/scene/playercharacternode.cpp
+++ b/src/scene/playercharacternode.cpp
@@ -55,13 +55,14 @@ void FirstPersonCamera::setUpVector(const glm::vec3 &up)
}
const float WALK_SPEED = 5.f;
-const float PLAYER_RADIUS = 0.30f;
-const float PLAYER_HEIGHT = 1.75f;
-const float EYES_OFFSET = 0.775f;
+const float TORSO_RADIUS = 0.30f;
+const float TORSO_HEIGHT = 0.8f;
+const float LEGS_HEIGHT = 1.f;
+const float EYES_OFFSET = 0.3f;
const float JUMP_VELOCITY = 5.f;
-const float EPSILON = 1.5f;
PlayerCharacterNode::PlayerCharacterNode(bool noClip) :
+ m_jumping(false),
m_noclipMode(noClip),
m_inputActions({NO_ACTION, NO_ACTION, NO_ACTION, NO_ACTION, NO_ACTION})
{
@@ -70,7 +71,7 @@ PlayerCharacterNode::PlayerCharacterNode(bool noClip) :
m_playerLightNode->m_parent = this;
// Create the shape
- btCollisionShape *shape = new btCapsuleShape(PLAYER_RADIUS, PLAYER_HEIGHT);
+ btCollisionShape *shape = new btCapsuleShape(TORSO_RADIUS, TORSO_HEIGHT);
// Add mass
btVector3 localInertia;
@@ -114,6 +115,8 @@ void PlayerCharacterNode::setPosition(float x, float y, float z)
void PlayerCharacterNode::update()
{
Input *input = getEngine().getInput();
+ float deltaTime = getEngine().getDeltaTime();
+
// get events
int walk = 0;
int strafe = 0;
@@ -140,7 +143,7 @@ void PlayerCharacterNode::update()
// update camera position
btVector3 pos = m_rigidBody->getCenterOfMassPosition();
- m_playerLight->setPos(glm::vec3(pos.x(), pos.y()+PLAYER_HEIGHT/2.f, pos.z()));
+ m_playerLight->setPos(glm::vec3(pos.x(), pos.y()+TORSO_HEIGHT/2.f, pos.z()));
m_fpsCamera.moveTo(glm::vec3(pos.x(), pos.y()+EYES_OFFSET, pos.z()));
// update body movement
@@ -174,9 +177,9 @@ void PlayerCharacterNode::update()
{
bool onGround = false;
btVector3 start(pos);
- start.setY(start.y() - PLAYER_HEIGHT/2.f);
- btVector3 end(pos);
- end.setY(end.y() - EPSILON);
+ start.setY(start.y() - TORSO_HEIGHT/2.f);
+ btVector3 end(start);
+ end.setY(end.y() - (LEGS_HEIGHT*2.f));
btCollisionWorld::ClosestRayResultCallback RayCallback(start, end);
getEngine().getPhysics()->rayTest(start, end, RayCallback);
float controlRatio = 0.f; // 1 = total control, 0 = no control, can be seen as a slipperiness factor
@@ -186,11 +189,32 @@ void PlayerCharacterNode::update()
btVector3 normal = RayCallback.m_hitNormalWorld;
float slope = normal.dot(btVector3(0, 1, 0));
controlRatio = slope > 0.4f ? 0.2f * slope : 0.f;
+
+ if(onGround)
+ {
+ float displacement = RayCallback.m_hitPointWorld.y() - (end.y() + start.y())/2.f;
+ if(abs(displacement) > 0.1f)
+ pos.setY(pos.y() + deltaTime*0.01f*(displacement > 0 ? 1 : -1));
+ else
+ pos.setY(pos.y() + displacement/4);
+ btTransform transform = btTransform::getIdentity();
+ transform.setOrigin(pos);
+ m_rigidBody->setWorldTransform(transform);
+ }
+ if(jump)
+ m_jumping = true;
+ else
+ m_jumping = false;
}
btVector3 newVelocity = velocity*(1.f-controlRatio) + targetVelocity*controlRatio;
- if(jump && onGround)
- newVelocity.setY(JUMP_VELOCITY);
+ if(onGround)
+ {
+ if(m_jumping)
+ newVelocity.setY(JUMP_VELOCITY);
+ else
+ newVelocity.setY(0);
+ }
m_rigidBody->setLinearVelocity(newVelocity);
}
m_playerLightNode->update();
diff --git a/src/scene/playercharacternode.h b/src/scene/playercharacternode.h
index 865e2f9..e83659c 100644
--- a/src/scene/playercharacternode.h
+++ b/src/scene/playercharacternode.h
@@ -38,6 +38,7 @@ class PlayerCharacterNode : public CameraNode
btRigidBody* m_rigidBody;
FirstPersonCamera m_fpsCamera;
+ bool m_jumping;
bool m_noclipMode;
btVector3 m_noclip_pos;
diff --git a/src/scene/textnode.h b/src/scene/textnode.h
index b78cd03..eaafe73 100644
--- a/src/scene/textnode.h
+++ b/src/scene/textnode.h
@@ -4,7 +4,7 @@
#include "meshnode.h"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
#include "glm/vec2.hpp"
diff --git a/src/sparrowshell/shellscrollbar.cpp b/src/sparrowshell/shellscrollbar.cpp
index 192beff..f88fb40 100644
--- a/src/sparrowshell/shellscrollbar.cpp
+++ b/src/sparrowshell/shellscrollbar.cpp
@@ -1,7 +1,7 @@
#include "shellscrollbar.h"
#include "sparrowshell.h"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
#include "scene/meshnode.h"
#include "tools/utils.h"
#include
diff --git a/src/sparrowshell/sparrowshell.cpp b/src/sparrowshell/sparrowshell.cpp
index 758c4bf..7f4477a 100644
--- a/src/sparrowshell/sparrowshell.cpp
+++ b/src/sparrowshell/sparrowshell.cpp
@@ -9,7 +9,7 @@
#include "scriptnode.h"
#include "SparrowRenderer/mesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
#include "tools/font.h"
#include "resourcemanager.h"
@@ -33,8 +33,8 @@ SparrowShell::SparrowShell(sf::Window* window):
setPosition(glm::vec2(0));
setVisible(false);
- Font* fonte_des_neiges = Loader::loadFont("data/consolas.fnt","consolas.png");
- RESOURCE_ADD(fonte_des_neiges,Font,"shellfont");
+ Font* fonte_des_neiges = Loader::loadFont("data/font/consolas.fnt", "font/consolas.png");
+ RESOURCE_ADD(fonte_des_neiges, Font, "shellfont");
//Create mesh for background
m_background = new BackGroundNode(m_dimension,glm::vec3(0.1,0.1,0.1),0.75,SHELL_DEPTH);
diff --git a/src/test/main.cpp b/src/test/main.cpp
index 51e8c57..2ffaf5a 100644
--- a/src/test/main.cpp
+++ b/src/test/main.cpp
@@ -2,8 +2,9 @@
#include
#include
#include
+#include
#include
-#include
+#include
#include
#include
#include
@@ -87,12 +88,9 @@ void generateTerrain(SceneTree *scene, btDiscreteDynamicsWorld *world)
GraphicalContainerNode* terrainContainer = new GraphicalContainerNode();
scene->getRootObject()->addChild(terrainContainer);
TestGen gen;
- PhongMaterial *mat = new PhongMaterial();
- mat->shininess = 5.f;
- mat->diffuse = glm::vec3(0.1f, 0.4f, 0.2f);
- mat->specular = glm::vec3(0.1f);
+ PBRMaterial *mat = new PBRMaterial();
+ mat->albedo = glm::vec3(0.1f, 0.4f, 0.2f);
- mat->emission = glm::vec3(0.5f, 0.1f, 0.1f);
for(int x=-3; x<3; ++x)
for(int y=-2; y<2; ++y)
for(int z=-3; z<3; ++z)
@@ -195,7 +193,7 @@ public:
//player
m_player = new PlayerCharacterNode(false);
m_player->setInputs(DefaultKeysMap::MOVE_FORWARD, DefaultKeysMap::MOVE_BACKWARD, DefaultKeysMap::STRAFE_LEFT, DefaultKeysMap::STRAFE_RIGHT, DefaultKeysMap::JUMP, DefaultKeysMap::TOGGLE_NOCLIP);
- SceneTree* scene = RESOURCE_GET(SceneTree,m_demo_scene);
+ SceneTree* scene = RESOURCE_GET(SceneTree, m_demo_scene);
scene->getRootObject()->addChild(m_player);
scene->setMainCamera(m_player);
@@ -204,7 +202,12 @@ public:
scene->getRootObject()->addChild(potator);
//lighting
- LightNode *ambientLight = new LightNode(new AmbientLight(glm::vec3(0.05f)));
+ Texture* skyboxTexture = RESOURCE_GET(Texture, "skybox");
+ Texture* ambientTexture = RESOURCE_GET(Texture, "ambient");
+ LightNode *ambientLight = new LightNode(new AmbientLight(ambientTexture, skyboxTexture));
+
+ DeferredPipeline* pipeline = dynamic_cast(scene->getPipeline());
+ pipeline->setSkybox(RESOURCE_GET(Texture, "craterlake"));
DirectionnalLight* sun = new DirectionnalLight(glm::vec3(5, 8, -2), glm::vec3(0.9f));
LightNode *sunLight = new LightNode(sun);
@@ -315,6 +318,41 @@ int main(){
engine.createWindow("Sparrow Engine Demo", config->width, config->height, config->mode);
engine.getWindow()->setVerticalSyncEnabled(config->vsync);
+ // opengl context is created, we can initialize the global textures used by the rendering pipeline
+ Image* img = Loader::loadImage("ibl_brdf_lut.png", 24, false);
+ AmbientLight::setBrdfLut(new Texture(img, false));
+ delete img;
+ Image * imgs[6];
+ imgs[0] = Loader::loadImage("skybox/craterlake_rt.tga", 24, false); // right
+ imgs[1] = Loader::loadImage("skybox/craterlake_lf.tga", 24, false); // left
+ imgs[2] = Loader::loadImage("skybox/craterlake_up.tga", 24, false); // top
+ imgs[3] = Loader::loadImage("skybox/craterlake_dn.tga", 24, false); // bottom
+ imgs[4] = Loader::loadImage("skybox/craterlake_ft.tga", 24, false); // front
+ imgs[5] = Loader::loadImage("skybox/craterlake_bk.tga", 24, false); // back
+ RESOURCE_ADD(new Texture(imgs), Texture, "craterlake");
+ for(int i=0; i<6; ++i)
+ delete imgs[i];
+
+ imgs[0] = Loader::loadImage("skybox/1_posX.tga", 24, false); // right
+ imgs[1] = Loader::loadImage("skybox/2_negX.tga", 24, false); // left
+ imgs[2] = Loader::loadImage("skybox/3_posY.tga", 24, false); // top
+ imgs[3] = Loader::loadImage("skybox/4_negY.tga", 24, false); // bottom
+ imgs[4] = Loader::loadImage("skybox/5_posZ.tga", 24, false); // front
+ imgs[5] = Loader::loadImage("skybox/6_negZ.tga", 24, false); // back
+ RESOURCE_ADD(new Texture(imgs), Texture, "skybox");
+ for(int i=0; i<6; ++i)
+ delete imgs[i];
+
+ imgs[0] = Loader::loadImage("ambient/1_posX.tga", 24, false); // right
+ imgs[1] = Loader::loadImage("ambient/2_negX.tga", 24, false); // left
+ imgs[2] = Loader::loadImage("ambient/3_posY.tga", 24, false); // top
+ imgs[3] = Loader::loadImage("ambient/4_negY.tga", 24, false); // bottom
+ imgs[4] = Loader::loadImage("ambient/5_posZ.tga", 24, false); // front
+ imgs[5] = Loader::loadImage("ambient/6_negZ.tga", 24, false); // back
+ RESOURCE_ADD(new Texture(imgs), Texture, "ambient");
+ for(int i=0; i<6; ++i)
+ delete imgs[i];
+
// engine.toggleMouseVisibility();
// setting up SparrowEngine
diff --git a/src/test/potator.cpp b/src/test/potator.cpp
index 0963e47..5421fd9 100644
--- a/src/test/potator.cpp
+++ b/src/test/potator.cpp
@@ -4,7 +4,7 @@
#include
#include "scene/scenetree.h"
#include "SparrowRenderer/parametricmesh.h"
-#include "SparrowRenderer/phongmaterial.h"
+#include "SparrowRenderer/pbrmaterial.h"
#include "scene/meshnode.h"
#include "tools/loader.h"
#include "SparrowRenderer/texture.h"
@@ -66,12 +66,11 @@ Potator::Potator(PlayerCharacterNode * player,
m_cubeMesh->addTriangle(id+7, id+5, id+6);
}
- Image* wood = Loader::loadImage("woodbox.jpg", false);
- PhongMaterial *mat = new PhongMaterial();
- mat->setTexture(PhongMaterial::DIFFUSE_SLOT, new Texture(wood), "wood_texture");
- mat->specular = glm::vec3(0.3f);
- mat->shininess = 5.f;
- mat->emission = glm::vec3(0.0f);
+ Image* wood = Loader::loadImage("woodbox.jpg", 24);
+ PBRMaterial *mat = new PBRMaterial();
+ mat->setTexture(PBRMaterial::ALBEDO_SLOT, new Texture(wood), "wood_texture");
+ mat->roughness = 0.8f;
+ mat->metallic = 0.1f;
m_cubeMesh->setMaterial(mat);
@@ -83,11 +82,10 @@ Potator::Potator(PlayerCharacterNode * player,
m_cubeMass = cubeDim.x*cubeDim.y*cubeDim.z*density;
// creating sphere
- mat = new PhongMaterial();
- mat->diffuse = glm::vec3(0.1f);
- mat->specular = glm::vec3(0.9f);
- mat->shininess = 150.f;
- mat->emission = glm::vec3(0.0f);
+ mat = new PBRMaterial();
+ mat->albedo = glm::vec3(0.1f);
+ mat->roughness = 0.1f;
+ mat->metallic = 0.9f;
SphereGenerator sphereGen;
m_sphereMesh = sphereGen.generateGeodesicMesh(mat, 2, sphereRadius);
diff --git a/src/tools/font.cpp b/src/tools/font.cpp
index 8ce7723..98f9ac0 100644
--- a/src/tools/font.cpp
+++ b/src/tools/font.cpp
@@ -1,5 +1,5 @@
#include "font.h"
-#include
+#include
#include "SparrowRenderer/mesh.h"
#include "scene/textnode.h"
@@ -38,10 +38,10 @@ TextNode* Font::getTextNode(std::string s, glm::vec3 color, float font_size,bool
current_pos.x += charInfo.xadvance;
}
}
- PhongMaterial *mat = new PhongMaterial();
+ PBRMaterial *mat = new PBRMaterial();
// TODO : delete this material somewhere (garbage collector ?)
- mat->setTexture(PhongMaterial::ALPHA_SLOT, m_tex, "font_texture");
- mat->diffuse = color;
+ mat->setTexture(PBRMaterial::ALPHA_SLOT, m_tex, "font_texture");
+ mat->albedo = color;
textmesh->setMaterial((Material*)mat);
textmesh->initGL();
TextNode *text = new TextNode(textmesh,ws,font_size,visible);
diff --git a/src/tools/loader.cpp b/src/tools/loader.cpp
index db9c72e..bce4edf 100644
--- a/src/tools/loader.cpp
+++ b/src/tools/loader.cpp
@@ -6,7 +6,7 @@
#include "../resourcemanager.h"
#include
#include
-#include
+#include
#include "SparrowRenderer/texture.h"
#include "utils.h"
#include "font.h"
@@ -64,7 +64,7 @@ std::unordered_map* Loader::loadConfigFile(const std::
return configPtr;
}
-Image* Loader::loadImage(const std::string &filename, bool hasAlpha, bool reversed)
+Image* Loader::loadImage(const std::string &filename, int depth, bool reversed)
{
sf::Image sfImg;
bool ok = sfImg.loadFromFile(tex_directory+filename);
@@ -73,19 +73,20 @@ Image* Loader::loadImage(const std::string &filename, bool hasAlpha, bool revers
if(reversed)
sfImg.flipVertically();
Image* img = new Image();
- img->depth = hasAlpha ? 32 : 24;
+ img->depth = depth;
img->width = sfImg.getSize().x;
img->height = sfImg.getSize().y;
int size = img->width*img->height*(img->depth/8);
img->allocate(size);
const sf::Uint8 *pixels = sfImg.getPixelsPtr();
- if(hasAlpha)
+ if(depth == 32)
memcpy(img->pixels.data(), pixels, size);
else
{
+ int bytesPerPixel = depth/8;
sf::Uint8 *ptr = (sf::Uint8*)img->pixels.data();
for(int i=0; iwidth*img->height; ++i)
- memcpy(ptr + i*3, pixels + i*4, 3);
+ memcpy(ptr + i*bytesPerPixel, pixels + i*4, bytesPerPixel);
}
return img;
}
@@ -133,7 +134,7 @@ Font* Loader::loadFont(const std::string &description_file, const std::string &t
font->addCharInfo(id,char_info);
}
- Image* fucking_image_of_doom = loadImage(texture_file, true, false);
+ Image* fucking_image_of_doom = loadImage(texture_file, 32, false);
if(fucking_image_of_doom == NULL)
printf("can't load \"%s\".\n", texture_file.c_str());
Texture* texture = new Texture(fucking_image_of_doom, false); // mipmaps are doing a very bad job at interpolating alpha component
@@ -155,8 +156,8 @@ std::vector Loader::loadMesh(const std::string &filename){
if(defaultMat == NULL)
{
- defaultMat = new PhongMaterial();
- RESOURCE_ADD(defaultMat,Material,"default");
+ defaultMat = new PBRMaterial();
+ RESOURCE_ADD(defaultMat, Material, "default");
}
Material* currentMat = defaultMat;
std::ifstream file(obj_directory + filename);
@@ -260,8 +261,8 @@ std::vector Loader::loadMesh(const std::string &filename){
if(currentMat == NULL)
{
fprintf(stderr, "cannot find any material named : %s.\n", material_name.c_str());
- currentMat = new PhongMaterial();
- RESOURCE_ADD(currentMat,Material,material_name);
+ currentMat = new PBRMaterial();
+ RESOURCE_ADD(currentMat, Material, material_name);
}
currentMesh->setMaterial(currentMat);
currentMesh->setName(material_name);
@@ -288,7 +289,7 @@ std::vector Loader::loadMesh(const std::string &filename){
Mesh* m = meshes[i];
if(m->normals.empty())
m->computeNormals();
- if(m->getFlags() & (1 << Mesh::MATERIAL_PHONG_NORMAL_MAP))
+ if(m->getFlags() & (1 << Mesh::MATERIAL_PBR_NORMAL_MAP))
m->computeTangents();
m->mergeVertices();
}
@@ -308,7 +309,7 @@ bool Loader::loadMTL(const std::string &filename)
return false;
}
- PhongMaterial* mat = NULL;
+ PBRMaterial* mat = NULL;
bool hasNormalMap = false;
std::getline(file,line);
@@ -329,63 +330,67 @@ bool Loader::loadMTL(const std::string &filename)
}
else if((tokens[0] == "newmtl") && tokens.size() == 2)
{
- mat = new PhongMaterial();
- RESOURCE_ADD(mat,Material,tokens[1]);
+ mat = new PBRMaterial();
+ RESOURCE_ADD(mat, Material, tokens[1]);
}
- else if((tokens[0].compare("Ka") == 0) && tokens.size() == 4)
+ else if((tokens[0].compare("emission") == 0) && tokens.size() == 4)
{
mat->emission.r = std::stof(tokens[1]);
mat->emission.g = std::stof(tokens[2]);
mat->emission.b = std::stof(tokens[3]);
}
- else if(tokens[0].compare("Kd") == 0 && tokens.size() == 4)
+ else if(tokens[0].compare("albedo") == 0 && tokens.size() == 4)
{
- mat->diffuse.r = std::stof(tokens[1]);
- mat->diffuse.g = std::stof(tokens[2]);
- mat->diffuse.b = std::stof(tokens[3]);
+ mat->albedo.r = std::stof(tokens[1]);
+ mat->albedo.g = std::stof(tokens[2]);
+ mat->albedo.b = std::stof(tokens[3]);
}
- else if(tokens[0].compare("Ks") == 0 && tokens.size() == 4)
+ else if(tokens[0].compare("roughness") == 0 && tokens.size() == 2)
{
- mat->specular.r = std::stof(tokens[1]);
- mat->specular.g = std::stof(tokens[2]);
- mat->specular.b = std::stof(tokens[3]);
+ mat->roughness = std::stof(tokens[1]);
}
- else if(tokens[0].compare("Ns") == 0 && tokens.size() == 2)
+ else if(tokens[0].compare("metallic") == 0 && tokens.size() == 2)
{
- mat->shininess = std::stof(tokens[1]);
+ mat->metallic = std::stof(tokens[1]);
}
else if((tokens[0].substr(0,4) == "map_") && tokens.size() == 2)
{
- if(tokens[0].compare("map_Ka") == 0){
- mat->textures[PhongMaterial::EMISSION_SLOT] = RESOURCE_GET(Texture,tokens[1]);
- if (mat->textures[PhongMaterial::EMISSION_SLOT] == NULL){
- mat->textures[PhongMaterial::EMISSION_SLOT] = new Texture(loadImage(tokens[1]));
- RESOURCE_ADD(mat->textures[PhongMaterial::EMISSION_SLOT], Texture, tokens[1]);
+ if(tokens[0].compare("map_emission") == 0){
+ mat->textures[PBRMaterial::EMISSION_SLOT] = RESOURCE_GET(Texture,tokens[1]);
+ if (mat->textures[PBRMaterial::EMISSION_SLOT] == NULL){
+ mat->textures[PBRMaterial::EMISSION_SLOT] = new Texture(loadImage(tokens[1], 24));
+ RESOURCE_ADD(mat->textures[PBRMaterial::EMISSION_SLOT], Texture, tokens[1]);
}
- } else if(tokens[0].compare("map_Kd") == 0) {
- mat->textures[PhongMaterial::DIFFUSE_SLOT] = RESOURCE_GET(Texture,tokens[1]);
- if (mat->textures[PhongMaterial::DIFFUSE_SLOT] == NULL){
- mat->textures[PhongMaterial::DIFFUSE_SLOT] = new Texture(loadImage(tokens[1]));
- RESOURCE_ADD(mat->textures[PhongMaterial::DIFFUSE_SLOT],Texture,tokens[1]);
+ } else if(tokens[0].compare("map_albedo") == 0) {
+ mat->textures[PBRMaterial::ALBEDO_SLOT] = RESOURCE_GET(Texture,tokens[1]);
+ if (mat->textures[PBRMaterial::ALBEDO_SLOT] == NULL){
+ mat->textures[PBRMaterial::ALBEDO_SLOT] = new Texture(loadImage(tokens[1]));
+ RESOURCE_ADD(mat->textures[PBRMaterial::ALBEDO_SLOT],Texture,tokens[1]);
}
- } else if(tokens[0].compare("map_Ks") == 0) {
- mat->textures[PhongMaterial::SPECULAR_SLOT] = RESOURCE_GET(Texture,tokens[1]);
- if (mat->textures[PhongMaterial::SPECULAR_SLOT] == NULL){
- mat->textures[PhongMaterial::SPECULAR_SLOT] = new Texture(loadImage(tokens[1]));
- RESOURCE_ADD(mat->textures[PhongMaterial::SPECULAR_SLOT],Texture,tokens[1]);
+ } else if(tokens[0].compare("map_roughness") == 0) {
+ mat->textures[PBRMaterial::ROUGHNESS_SLOT] = RESOURCE_GET(Texture,tokens[1]);
+ if (mat->textures[PBRMaterial::ROUGHNESS_SLOT] == NULL){
+ mat->textures[PBRMaterial::ROUGHNESS_SLOT] = new Texture(loadImage(tokens[1], 8));
+ RESOURCE_ADD(mat->textures[PBRMaterial::ROUGHNESS_SLOT],Texture,tokens[1]);
}
- } else if(tokens[0].compare("map_Normal") == 0) {
- mat->textures[PhongMaterial::NORMALS_SLOT] = RESOURCE_GET(Texture,tokens[1]);
- if (mat->textures[PhongMaterial::NORMALS_SLOT] == NULL){
- mat->textures[PhongMaterial::NORMALS_SLOT] = new Texture(loadImage(tokens[1]));
- RESOURCE_ADD(mat->textures[PhongMaterial::NORMALS_SLOT],Texture,tokens[1]);
+ } else if(tokens[0].compare("map_metallic") == 0) {
+ mat->textures[PBRMaterial::METALLIC_SLOT] = RESOURCE_GET(Texture,tokens[1]);
+ if (mat->textures[PBRMaterial::METALLIC_SLOT] == NULL){
+ mat->textures[PBRMaterial::METALLIC_SLOT] = new Texture(loadImage(tokens[1], 8));
+ RESOURCE_ADD(mat->textures[PBRMaterial::METALLIC_SLOT],Texture,tokens[1]);
+ }
+ } else if(tokens[0].compare("map_normal") == 0) {
+ mat->textures[PBRMaterial::NORMALS_SLOT] = RESOURCE_GET(Texture,tokens[1]);
+ if (mat->textures[PBRMaterial::NORMALS_SLOT] == NULL){
+ mat->textures[PBRMaterial::NORMALS_SLOT] = new Texture(loadImage(tokens[1], 24));
+ RESOURCE_ADD(mat->textures[PBRMaterial::NORMALS_SLOT],Texture,tokens[1]);
}
hasNormalMap = true;
- } else if(tokens[0].compare("map_d") == 0) {
- mat->textures[PhongMaterial::ALPHA_SLOT] = RESOURCE_GET(Texture,tokens[1]);
- if (mat->textures[PhongMaterial::ALPHA_SLOT] == NULL){
- mat->textures[PhongMaterial::ALPHA_SLOT] = new Texture(loadImage(tokens[1]));
- RESOURCE_ADD(mat->textures[PhongMaterial::ALPHA_SLOT],Texture,tokens[1]);
+ } else if(tokens[0].compare("map_alpha") == 0) {
+ mat->textures[PBRMaterial::ALPHA_SLOT] = RESOURCE_GET(Texture,tokens[1]);
+ if (mat->textures[PBRMaterial::ALPHA_SLOT] == NULL){
+ mat->textures[PBRMaterial::ALPHA_SLOT] = new Texture(loadImage(tokens[1], 8));
+ RESOURCE_ADD(mat->textures[PBRMaterial::ALPHA_SLOT],Texture,tokens[1]);
}
} else
fprintf(stderr, "unsupported material property : \"%s\"\n", tokens[0].c_str());
diff --git a/src/tools/loader.h b/src/tools/loader.h
index 9a839d1..59d6f18 100644
--- a/src/tools/loader.h
+++ b/src/tools/loader.h
@@ -19,7 +19,7 @@ class Loader
public:
static std::string* loadTextFile(const std::string &filename);
static std::unordered_map* loadConfigFile(const std::string &filename);
- static Image* loadImage(const std::string &filename, bool hasAlpha = true, bool reversed = true);
+ static Image* loadImage(const std::string &filename, int depth = 32, bool reversed = true);
static std::vector loadMesh(const std::string &filename);
static Font* loadFont(const std::string &texture, const std::string &description);
static bool loadMTL(const std::string &filename);