diff --git a/assets/meshes/DamagedHelmet_mesh_helmet_LP_13930damagedHelmet.mesh b/assets/meshes/DamagedHelmet_mesh_helmet_LP_13930damagedHelmet.mesh new file mode 100644 index 0000000..fba61f4 Binary files /dev/null and b/assets/meshes/DamagedHelmet_mesh_helmet_LP_13930damagedHelmet.mesh differ diff --git a/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_fabric.mesh b/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_fabric.mesh new file mode 100644 index 0000000..82c95d4 Binary files /dev/null and b/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_fabric.mesh differ diff --git a/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_feet.mesh b/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_feet.mesh new file mode 100644 index 0000000..7dcdbb0 Binary files /dev/null and b/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_feet.mesh differ diff --git a/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_legs.mesh b/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_legs.mesh new file mode 100644 index 0000000..dc31be2 Binary files /dev/null and b/assets/meshes/GlamVelvetSofa_GlamVelvetSofa_legs.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-0.mesh b/assets/meshes/Sponza_meshes[0]-0.mesh index 92d7e3b..e4c763d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-0.mesh and b/assets/meshes/Sponza_meshes[0]-0.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-1.mesh b/assets/meshes/Sponza_meshes[0]-1.mesh index 860ecd8..cae26fe 100644 Binary files a/assets/meshes/Sponza_meshes[0]-1.mesh and b/assets/meshes/Sponza_meshes[0]-1.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-10.mesh b/assets/meshes/Sponza_meshes[0]-10.mesh index aeb439a..28d1b29 100644 Binary files a/assets/meshes/Sponza_meshes[0]-10.mesh and b/assets/meshes/Sponza_meshes[0]-10.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-100.mesh b/assets/meshes/Sponza_meshes[0]-100.mesh index 0ff8420..fd6b1bd 100644 Binary files a/assets/meshes/Sponza_meshes[0]-100.mesh and b/assets/meshes/Sponza_meshes[0]-100.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-101.mesh b/assets/meshes/Sponza_meshes[0]-101.mesh index 52327db..59a6865 100644 Binary files a/assets/meshes/Sponza_meshes[0]-101.mesh and b/assets/meshes/Sponza_meshes[0]-101.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-102.mesh b/assets/meshes/Sponza_meshes[0]-102.mesh index dff9446..1756919 100644 Binary files a/assets/meshes/Sponza_meshes[0]-102.mesh and b/assets/meshes/Sponza_meshes[0]-102.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-11.mesh b/assets/meshes/Sponza_meshes[0]-11.mesh index 885ca04..e6df01d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-11.mesh and b/assets/meshes/Sponza_meshes[0]-11.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-12.mesh b/assets/meshes/Sponza_meshes[0]-12.mesh index 88f5a9e..be03d90 100644 Binary files a/assets/meshes/Sponza_meshes[0]-12.mesh and b/assets/meshes/Sponza_meshes[0]-12.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-13.mesh b/assets/meshes/Sponza_meshes[0]-13.mesh index df7670d..24a638c 100644 Binary files a/assets/meshes/Sponza_meshes[0]-13.mesh and b/assets/meshes/Sponza_meshes[0]-13.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-14.mesh b/assets/meshes/Sponza_meshes[0]-14.mesh index 9305f00..4a77a7e 100644 Binary files a/assets/meshes/Sponza_meshes[0]-14.mesh and b/assets/meshes/Sponza_meshes[0]-14.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-15.mesh b/assets/meshes/Sponza_meshes[0]-15.mesh index 5c67780..14f8a6a 100644 Binary files a/assets/meshes/Sponza_meshes[0]-15.mesh and b/assets/meshes/Sponza_meshes[0]-15.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-16.mesh b/assets/meshes/Sponza_meshes[0]-16.mesh index c1970db..9ed0174 100644 Binary files a/assets/meshes/Sponza_meshes[0]-16.mesh and b/assets/meshes/Sponza_meshes[0]-16.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-17.mesh b/assets/meshes/Sponza_meshes[0]-17.mesh index 0a65cc8..bcffa1b 100644 Binary files a/assets/meshes/Sponza_meshes[0]-17.mesh and b/assets/meshes/Sponza_meshes[0]-17.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-18.mesh b/assets/meshes/Sponza_meshes[0]-18.mesh index 2cc400d..6bb9634 100644 Binary files a/assets/meshes/Sponza_meshes[0]-18.mesh and b/assets/meshes/Sponza_meshes[0]-18.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-19.mesh b/assets/meshes/Sponza_meshes[0]-19.mesh index 8de4dc3..db876a5 100644 Binary files a/assets/meshes/Sponza_meshes[0]-19.mesh and b/assets/meshes/Sponza_meshes[0]-19.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-2.mesh b/assets/meshes/Sponza_meshes[0]-2.mesh index 480b95a..ac8b078 100644 Binary files a/assets/meshes/Sponza_meshes[0]-2.mesh and b/assets/meshes/Sponza_meshes[0]-2.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-20.mesh b/assets/meshes/Sponza_meshes[0]-20.mesh index 8b392b9..eb4a7d4 100644 Binary files a/assets/meshes/Sponza_meshes[0]-20.mesh and b/assets/meshes/Sponza_meshes[0]-20.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-21.mesh b/assets/meshes/Sponza_meshes[0]-21.mesh index 469aaae..a6b83e5 100644 Binary files a/assets/meshes/Sponza_meshes[0]-21.mesh and b/assets/meshes/Sponza_meshes[0]-21.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-22.mesh b/assets/meshes/Sponza_meshes[0]-22.mesh index eacead9..ddc581d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-22.mesh and b/assets/meshes/Sponza_meshes[0]-22.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-23.mesh b/assets/meshes/Sponza_meshes[0]-23.mesh index 4cca979..62bcfca 100644 Binary files a/assets/meshes/Sponza_meshes[0]-23.mesh and b/assets/meshes/Sponza_meshes[0]-23.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-24.mesh b/assets/meshes/Sponza_meshes[0]-24.mesh index ec0d859..121abc1 100644 Binary files a/assets/meshes/Sponza_meshes[0]-24.mesh and b/assets/meshes/Sponza_meshes[0]-24.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-25.mesh b/assets/meshes/Sponza_meshes[0]-25.mesh index 75f0f0e..fe3eb7d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-25.mesh and b/assets/meshes/Sponza_meshes[0]-25.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-26.mesh b/assets/meshes/Sponza_meshes[0]-26.mesh index 0fb94ae..e8c692a 100644 Binary files a/assets/meshes/Sponza_meshes[0]-26.mesh and b/assets/meshes/Sponza_meshes[0]-26.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-27.mesh b/assets/meshes/Sponza_meshes[0]-27.mesh index 2b565c3..b22012a 100644 Binary files a/assets/meshes/Sponza_meshes[0]-27.mesh and b/assets/meshes/Sponza_meshes[0]-27.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-28.mesh b/assets/meshes/Sponza_meshes[0]-28.mesh index 7949ddc..d9ca34a 100644 Binary files a/assets/meshes/Sponza_meshes[0]-28.mesh and b/assets/meshes/Sponza_meshes[0]-28.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-29.mesh b/assets/meshes/Sponza_meshes[0]-29.mesh index f61ea1f..a7fbaf4 100644 Binary files a/assets/meshes/Sponza_meshes[0]-29.mesh and b/assets/meshes/Sponza_meshes[0]-29.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-3.mesh b/assets/meshes/Sponza_meshes[0]-3.mesh index 8dafbae..cb7888d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-3.mesh and b/assets/meshes/Sponza_meshes[0]-3.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-30.mesh b/assets/meshes/Sponza_meshes[0]-30.mesh index fc3929a..c0ea869 100644 Binary files a/assets/meshes/Sponza_meshes[0]-30.mesh and b/assets/meshes/Sponza_meshes[0]-30.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-31.mesh b/assets/meshes/Sponza_meshes[0]-31.mesh index 764b6b6..95c421e 100644 Binary files a/assets/meshes/Sponza_meshes[0]-31.mesh and b/assets/meshes/Sponza_meshes[0]-31.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-32.mesh b/assets/meshes/Sponza_meshes[0]-32.mesh index 40427e9..9fde900 100644 Binary files a/assets/meshes/Sponza_meshes[0]-32.mesh and b/assets/meshes/Sponza_meshes[0]-32.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-33.mesh b/assets/meshes/Sponza_meshes[0]-33.mesh index 36208cf..a1fe148 100644 Binary files a/assets/meshes/Sponza_meshes[0]-33.mesh and b/assets/meshes/Sponza_meshes[0]-33.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-34.mesh b/assets/meshes/Sponza_meshes[0]-34.mesh index 5c7d8f2..8590d78 100644 Binary files a/assets/meshes/Sponza_meshes[0]-34.mesh and b/assets/meshes/Sponza_meshes[0]-34.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-35.mesh b/assets/meshes/Sponza_meshes[0]-35.mesh index ca04a09..b6a738c 100644 Binary files a/assets/meshes/Sponza_meshes[0]-35.mesh and b/assets/meshes/Sponza_meshes[0]-35.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-36.mesh b/assets/meshes/Sponza_meshes[0]-36.mesh index 7267737..dc1b444 100644 Binary files a/assets/meshes/Sponza_meshes[0]-36.mesh and b/assets/meshes/Sponza_meshes[0]-36.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-37.mesh b/assets/meshes/Sponza_meshes[0]-37.mesh index 2b33808..0174129 100644 Binary files a/assets/meshes/Sponza_meshes[0]-37.mesh and b/assets/meshes/Sponza_meshes[0]-37.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-38.mesh b/assets/meshes/Sponza_meshes[0]-38.mesh index 57e2305..59994b7 100644 Binary files a/assets/meshes/Sponza_meshes[0]-38.mesh and b/assets/meshes/Sponza_meshes[0]-38.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-39.mesh b/assets/meshes/Sponza_meshes[0]-39.mesh index 7a20d9e..cdee870 100644 Binary files a/assets/meshes/Sponza_meshes[0]-39.mesh and b/assets/meshes/Sponza_meshes[0]-39.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-4.mesh b/assets/meshes/Sponza_meshes[0]-4.mesh index 686076b..a7101c4 100644 Binary files a/assets/meshes/Sponza_meshes[0]-4.mesh and b/assets/meshes/Sponza_meshes[0]-4.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-40.mesh b/assets/meshes/Sponza_meshes[0]-40.mesh index 9260259..e4428e0 100644 Binary files a/assets/meshes/Sponza_meshes[0]-40.mesh and b/assets/meshes/Sponza_meshes[0]-40.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-41.mesh b/assets/meshes/Sponza_meshes[0]-41.mesh index 083d2f6..8dddcb6 100644 Binary files a/assets/meshes/Sponza_meshes[0]-41.mesh and b/assets/meshes/Sponza_meshes[0]-41.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-42.mesh b/assets/meshes/Sponza_meshes[0]-42.mesh index 88efea9..3d929e2 100644 Binary files a/assets/meshes/Sponza_meshes[0]-42.mesh and b/assets/meshes/Sponza_meshes[0]-42.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-43.mesh b/assets/meshes/Sponza_meshes[0]-43.mesh index a1eb133..a4520b7 100644 Binary files a/assets/meshes/Sponza_meshes[0]-43.mesh and b/assets/meshes/Sponza_meshes[0]-43.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-44.mesh b/assets/meshes/Sponza_meshes[0]-44.mesh index d603f05..3ebdc36 100644 Binary files a/assets/meshes/Sponza_meshes[0]-44.mesh and b/assets/meshes/Sponza_meshes[0]-44.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-45.mesh b/assets/meshes/Sponza_meshes[0]-45.mesh index e613ed2..62881f2 100644 Binary files a/assets/meshes/Sponza_meshes[0]-45.mesh and b/assets/meshes/Sponza_meshes[0]-45.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-46.mesh b/assets/meshes/Sponza_meshes[0]-46.mesh index 313f47d..8c70014 100644 Binary files a/assets/meshes/Sponza_meshes[0]-46.mesh and b/assets/meshes/Sponza_meshes[0]-46.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-47.mesh b/assets/meshes/Sponza_meshes[0]-47.mesh index 205fbab..945d3a8 100644 Binary files a/assets/meshes/Sponza_meshes[0]-47.mesh and b/assets/meshes/Sponza_meshes[0]-47.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-48.mesh b/assets/meshes/Sponza_meshes[0]-48.mesh index cbbc23f..a862b24 100644 Binary files a/assets/meshes/Sponza_meshes[0]-48.mesh and b/assets/meshes/Sponza_meshes[0]-48.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-49.mesh b/assets/meshes/Sponza_meshes[0]-49.mesh index 0d4fd19..0813c8c 100644 Binary files a/assets/meshes/Sponza_meshes[0]-49.mesh and b/assets/meshes/Sponza_meshes[0]-49.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-5.mesh b/assets/meshes/Sponza_meshes[0]-5.mesh index caaf1a0..efd07b1 100644 Binary files a/assets/meshes/Sponza_meshes[0]-5.mesh and b/assets/meshes/Sponza_meshes[0]-5.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-50.mesh b/assets/meshes/Sponza_meshes[0]-50.mesh index 37f67b5..65e0cad 100644 Binary files a/assets/meshes/Sponza_meshes[0]-50.mesh and b/assets/meshes/Sponza_meshes[0]-50.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-51.mesh b/assets/meshes/Sponza_meshes[0]-51.mesh index 91534ab..04aafbc 100644 Binary files a/assets/meshes/Sponza_meshes[0]-51.mesh and b/assets/meshes/Sponza_meshes[0]-51.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-52.mesh b/assets/meshes/Sponza_meshes[0]-52.mesh index 039eb30..21f8366 100644 Binary files a/assets/meshes/Sponza_meshes[0]-52.mesh and b/assets/meshes/Sponza_meshes[0]-52.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-53.mesh b/assets/meshes/Sponza_meshes[0]-53.mesh index ec75417..cc2515d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-53.mesh and b/assets/meshes/Sponza_meshes[0]-53.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-54.mesh b/assets/meshes/Sponza_meshes[0]-54.mesh index 3063ec0..7bd9dd7 100644 Binary files a/assets/meshes/Sponza_meshes[0]-54.mesh and b/assets/meshes/Sponza_meshes[0]-54.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-55.mesh b/assets/meshes/Sponza_meshes[0]-55.mesh index 48f1700..07985e0 100644 Binary files a/assets/meshes/Sponza_meshes[0]-55.mesh and b/assets/meshes/Sponza_meshes[0]-55.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-56.mesh b/assets/meshes/Sponza_meshes[0]-56.mesh index d6b7ca1..36de287 100644 Binary files a/assets/meshes/Sponza_meshes[0]-56.mesh and b/assets/meshes/Sponza_meshes[0]-56.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-57.mesh b/assets/meshes/Sponza_meshes[0]-57.mesh index e5fca26..b0d3652 100644 Binary files a/assets/meshes/Sponza_meshes[0]-57.mesh and b/assets/meshes/Sponza_meshes[0]-57.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-58.mesh b/assets/meshes/Sponza_meshes[0]-58.mesh index 4cefd24..8d457d3 100644 Binary files a/assets/meshes/Sponza_meshes[0]-58.mesh and b/assets/meshes/Sponza_meshes[0]-58.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-59.mesh b/assets/meshes/Sponza_meshes[0]-59.mesh index 8c7edbf..01a8b06 100644 Binary files a/assets/meshes/Sponza_meshes[0]-59.mesh and b/assets/meshes/Sponza_meshes[0]-59.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-6.mesh b/assets/meshes/Sponza_meshes[0]-6.mesh index 597c8cf..49f4c00 100644 Binary files a/assets/meshes/Sponza_meshes[0]-6.mesh and b/assets/meshes/Sponza_meshes[0]-6.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-60.mesh b/assets/meshes/Sponza_meshes[0]-60.mesh index d9ed7b7..1b48ec1 100644 Binary files a/assets/meshes/Sponza_meshes[0]-60.mesh and b/assets/meshes/Sponza_meshes[0]-60.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-61.mesh b/assets/meshes/Sponza_meshes[0]-61.mesh index 40456b4..3a5faf4 100644 Binary files a/assets/meshes/Sponza_meshes[0]-61.mesh and b/assets/meshes/Sponza_meshes[0]-61.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-62.mesh b/assets/meshes/Sponza_meshes[0]-62.mesh index e4ad21d..0683b08 100644 Binary files a/assets/meshes/Sponza_meshes[0]-62.mesh and b/assets/meshes/Sponza_meshes[0]-62.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-63.mesh b/assets/meshes/Sponza_meshes[0]-63.mesh index 17206e8..5defb55 100644 Binary files a/assets/meshes/Sponza_meshes[0]-63.mesh and b/assets/meshes/Sponza_meshes[0]-63.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-64.mesh b/assets/meshes/Sponza_meshes[0]-64.mesh index 6fb47b0..184ea84 100644 Binary files a/assets/meshes/Sponza_meshes[0]-64.mesh and b/assets/meshes/Sponza_meshes[0]-64.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-65.mesh b/assets/meshes/Sponza_meshes[0]-65.mesh index ff2bbdf..0d02904 100644 Binary files a/assets/meshes/Sponza_meshes[0]-65.mesh and b/assets/meshes/Sponza_meshes[0]-65.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-66.mesh b/assets/meshes/Sponza_meshes[0]-66.mesh index d1b3d89..dc31e73 100644 Binary files a/assets/meshes/Sponza_meshes[0]-66.mesh and b/assets/meshes/Sponza_meshes[0]-66.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-67.mesh b/assets/meshes/Sponza_meshes[0]-67.mesh index 95c6506..aa08905 100644 Binary files a/assets/meshes/Sponza_meshes[0]-67.mesh and b/assets/meshes/Sponza_meshes[0]-67.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-68.mesh b/assets/meshes/Sponza_meshes[0]-68.mesh index 1d41e97..f3c9a98 100644 Binary files a/assets/meshes/Sponza_meshes[0]-68.mesh and b/assets/meshes/Sponza_meshes[0]-68.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-69.mesh b/assets/meshes/Sponza_meshes[0]-69.mesh index 007e92d..6694dbb 100644 Binary files a/assets/meshes/Sponza_meshes[0]-69.mesh and b/assets/meshes/Sponza_meshes[0]-69.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-7.mesh b/assets/meshes/Sponza_meshes[0]-7.mesh index a3fa53d..f1ae4af 100644 Binary files a/assets/meshes/Sponza_meshes[0]-7.mesh and b/assets/meshes/Sponza_meshes[0]-7.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-70.mesh b/assets/meshes/Sponza_meshes[0]-70.mesh index a34b5e8..9a57148 100644 Binary files a/assets/meshes/Sponza_meshes[0]-70.mesh and b/assets/meshes/Sponza_meshes[0]-70.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-71.mesh b/assets/meshes/Sponza_meshes[0]-71.mesh index ef7c824..829da31 100644 Binary files a/assets/meshes/Sponza_meshes[0]-71.mesh and b/assets/meshes/Sponza_meshes[0]-71.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-72.mesh b/assets/meshes/Sponza_meshes[0]-72.mesh index a87f0af..e1f5438 100644 Binary files a/assets/meshes/Sponza_meshes[0]-72.mesh and b/assets/meshes/Sponza_meshes[0]-72.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-73.mesh b/assets/meshes/Sponza_meshes[0]-73.mesh index 7dc1c7c..251d12d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-73.mesh and b/assets/meshes/Sponza_meshes[0]-73.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-74.mesh b/assets/meshes/Sponza_meshes[0]-74.mesh index 1548be0..2a85616 100644 Binary files a/assets/meshes/Sponza_meshes[0]-74.mesh and b/assets/meshes/Sponza_meshes[0]-74.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-75.mesh b/assets/meshes/Sponza_meshes[0]-75.mesh index f803380..941b940 100644 Binary files a/assets/meshes/Sponza_meshes[0]-75.mesh and b/assets/meshes/Sponza_meshes[0]-75.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-76.mesh b/assets/meshes/Sponza_meshes[0]-76.mesh index c3a678d..74b19f9 100644 Binary files a/assets/meshes/Sponza_meshes[0]-76.mesh and b/assets/meshes/Sponza_meshes[0]-76.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-77.mesh b/assets/meshes/Sponza_meshes[0]-77.mesh index 3563791..be3a907 100644 Binary files a/assets/meshes/Sponza_meshes[0]-77.mesh and b/assets/meshes/Sponza_meshes[0]-77.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-78.mesh b/assets/meshes/Sponza_meshes[0]-78.mesh index bdbb4e1..b7e5e6d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-78.mesh and b/assets/meshes/Sponza_meshes[0]-78.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-79.mesh b/assets/meshes/Sponza_meshes[0]-79.mesh index 8c0d1ea..3c982dc 100644 Binary files a/assets/meshes/Sponza_meshes[0]-79.mesh and b/assets/meshes/Sponza_meshes[0]-79.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-8.mesh b/assets/meshes/Sponza_meshes[0]-8.mesh index 390dda5..aab9a03 100644 Binary files a/assets/meshes/Sponza_meshes[0]-8.mesh and b/assets/meshes/Sponza_meshes[0]-8.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-80.mesh b/assets/meshes/Sponza_meshes[0]-80.mesh index aed58d0..9b9bf2b 100644 Binary files a/assets/meshes/Sponza_meshes[0]-80.mesh and b/assets/meshes/Sponza_meshes[0]-80.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-81.mesh b/assets/meshes/Sponza_meshes[0]-81.mesh index 20d607e..4b1a8a5 100644 Binary files a/assets/meshes/Sponza_meshes[0]-81.mesh and b/assets/meshes/Sponza_meshes[0]-81.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-82.mesh b/assets/meshes/Sponza_meshes[0]-82.mesh index 8b1f9dd..98fd7b9 100644 Binary files a/assets/meshes/Sponza_meshes[0]-82.mesh and b/assets/meshes/Sponza_meshes[0]-82.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-83.mesh b/assets/meshes/Sponza_meshes[0]-83.mesh index 2d1a0c5..e594dcf 100644 Binary files a/assets/meshes/Sponza_meshes[0]-83.mesh and b/assets/meshes/Sponza_meshes[0]-83.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-84.mesh b/assets/meshes/Sponza_meshes[0]-84.mesh index 6bac981..a69b735 100644 Binary files a/assets/meshes/Sponza_meshes[0]-84.mesh and b/assets/meshes/Sponza_meshes[0]-84.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-85.mesh b/assets/meshes/Sponza_meshes[0]-85.mesh index bb149ca..dd4baa6 100644 Binary files a/assets/meshes/Sponza_meshes[0]-85.mesh and b/assets/meshes/Sponza_meshes[0]-85.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-86.mesh b/assets/meshes/Sponza_meshes[0]-86.mesh index 737fac5..1e4619f 100644 Binary files a/assets/meshes/Sponza_meshes[0]-86.mesh and b/assets/meshes/Sponza_meshes[0]-86.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-87.mesh b/assets/meshes/Sponza_meshes[0]-87.mesh index 5606f10..4dea864 100644 Binary files a/assets/meshes/Sponza_meshes[0]-87.mesh and b/assets/meshes/Sponza_meshes[0]-87.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-88.mesh b/assets/meshes/Sponza_meshes[0]-88.mesh index d2701b2..c9550f1 100644 Binary files a/assets/meshes/Sponza_meshes[0]-88.mesh and b/assets/meshes/Sponza_meshes[0]-88.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-89.mesh b/assets/meshes/Sponza_meshes[0]-89.mesh index d9730c9..a7145ae 100644 Binary files a/assets/meshes/Sponza_meshes[0]-89.mesh and b/assets/meshes/Sponza_meshes[0]-89.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-9.mesh b/assets/meshes/Sponza_meshes[0]-9.mesh index a64ee7e..18ba68f 100644 Binary files a/assets/meshes/Sponza_meshes[0]-9.mesh and b/assets/meshes/Sponza_meshes[0]-9.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-90.mesh b/assets/meshes/Sponza_meshes[0]-90.mesh index 2ff368b..e3b0ec1 100644 Binary files a/assets/meshes/Sponza_meshes[0]-90.mesh and b/assets/meshes/Sponza_meshes[0]-90.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-91.mesh b/assets/meshes/Sponza_meshes[0]-91.mesh index 4468b37..213b60f 100644 Binary files a/assets/meshes/Sponza_meshes[0]-91.mesh and b/assets/meshes/Sponza_meshes[0]-91.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-92.mesh b/assets/meshes/Sponza_meshes[0]-92.mesh index 6c7e752..c785961 100644 Binary files a/assets/meshes/Sponza_meshes[0]-92.mesh and b/assets/meshes/Sponza_meshes[0]-92.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-93.mesh b/assets/meshes/Sponza_meshes[0]-93.mesh index e0263c1..7ba5557 100644 Binary files a/assets/meshes/Sponza_meshes[0]-93.mesh and b/assets/meshes/Sponza_meshes[0]-93.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-94.mesh b/assets/meshes/Sponza_meshes[0]-94.mesh index 13a0af7..a49d6b9 100644 Binary files a/assets/meshes/Sponza_meshes[0]-94.mesh and b/assets/meshes/Sponza_meshes[0]-94.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-95.mesh b/assets/meshes/Sponza_meshes[0]-95.mesh index f5abe0f..af5435b 100644 Binary files a/assets/meshes/Sponza_meshes[0]-95.mesh and b/assets/meshes/Sponza_meshes[0]-95.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-96.mesh b/assets/meshes/Sponza_meshes[0]-96.mesh index 34d04f7..75ecb5d 100644 Binary files a/assets/meshes/Sponza_meshes[0]-96.mesh and b/assets/meshes/Sponza_meshes[0]-96.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-97.mesh b/assets/meshes/Sponza_meshes[0]-97.mesh index ef0a120..5a469f1 100644 Binary files a/assets/meshes/Sponza_meshes[0]-97.mesh and b/assets/meshes/Sponza_meshes[0]-97.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-98.mesh b/assets/meshes/Sponza_meshes[0]-98.mesh index dbea511..34c1b22 100644 Binary files a/assets/meshes/Sponza_meshes[0]-98.mesh and b/assets/meshes/Sponza_meshes[0]-98.mesh differ diff --git a/assets/meshes/Sponza_meshes[0]-99.mesh b/assets/meshes/Sponza_meshes[0]-99.mesh index 674cb9f..9c887d0 100644 Binary files a/assets/meshes/Sponza_meshes[0]-99.mesh and b/assets/meshes/Sponza_meshes[0]-99.mesh differ diff --git a/assets/shaders/default.frag b/assets/shaders/default.frag index 3a82fbb..30a4c73 100755 --- a/assets/shaders/default.frag +++ b/assets/shaders/default.frag @@ -21,7 +21,15 @@ struct Scene { uint lightsCount; }; -vec3 directional_light = vec3(-1.0,-1.0,-1.0); +vec3 directional_light = vec3(1.0); + +layout( push_constant ) uniform constants +{ + mat4 render_matrix; + uint indexBufferIndex; + uint vertexBufferIndex; + uint materialBufferIndex; +} PushConstants; layout(set = 0, binding = 0) uniform SceneData { layout(align = 16) Scene mesh; @@ -31,17 +39,42 @@ layout(set = 0, binding = 1) uniform LightBuffer { layout(align = 16) Light lights[]; } LightsBuffers; -// layout(set = 2, binding = 4) uniform sampler2D texSampler[]; +layout(set = 2, binding = 3) buffer MaterialBuffer { + layout(align = 16) Material materials[]; +} MaterialBuffers; -layout(location = 0) in vec3 normal; -layout(location = 1) in vec3 color; -layout(location = 2) flat in Material material; +layout(set = 2, binding = 4) uniform sampler2D texSampler[]; + +layout(location = 0) in vec2 uv; +layout(location = 1) smooth in mat3 TBN; layout(location = 0) out vec4 outColor; void main() { - float intensity = ((dot(normalize(normal), normalize(directional_light)) +1)/2.0)+0.05; + Material material = MaterialBuffers.materials[ PushConstants.materialBufferIndex ]; + mat3 normalMatrix = transpose(inverse(mat3(PushConstants.render_matrix))); - // outColor = vec4(color * intensity, 1.0); - outColor = vec4(color * intensity, 1.0); + vec3 out_normal; + // if(material.normalTexture == 0) { + // out_normal = normalize(normalMatrix * TBN[2].xyz); + // } else { + vec3 sampled_normal = texture(texSampler[material.normalTexture], uv).rgb; + sampled_normal = 2.0 * sampled_normal - vec3(1.0); + out_normal = normalize(normalMatrix * TBN * sampled_normal); + // } + + + float intensity = dot(out_normal, normalize(directional_light)) + 0.2; + + vec3 inColor; + if(material.albedoTexture == 0) { + inColor = material.baseColor.xyz; + } else { + inColor = texture(texSampler[material.albedoTexture], uv).xyz; + } + + // outColor = vec4(inColor * intensity, 1.0); + // outColor = vec4(inColor, 1.0); + // outColor = vec4(vec3(intensity), 1.0); + outColor = vec4(out_normal, 1.0); } diff --git a/assets/shaders/default.vert b/assets/shaders/default.vert index 5b29b95..19e16c4 100755 --- a/assets/shaders/default.vert +++ b/assets/shaders/default.vert @@ -15,8 +15,9 @@ struct Material { struct Vertex { vec4 position; vec4 normal; - vec4 color; vec2 uv[2]; + vec4 tangent; + vec4 bitangent; // No longer needed. // TODO remove }; struct Light { @@ -57,31 +58,26 @@ layout(set = 2, binding = 2) buffer IndexBuffer { uint indices[]; } IndexBuffers[]; -layout(set = 2, binding = 3) buffer MaterialBuffer { - layout(align = 16) Material materials[]; -} MaterialBuffers; - layout(set = 2, binding = 4) uniform sampler2D texSampler[]; -layout(location = 0) out vec3 normal; -layout(location = 1) out vec3 color; -layout(location = 2) out Material material; +layout(location = 0) out vec2 uv; +layout(location = 1) smooth out mat3 TBN; void main() { - material = MaterialBuffers.materials[ PushConstants.materialBufferIndex ]; - uint index = IndexBuffers[ PushConstants.indexBufferIndex ].indices[gl_VertexIndex]; Vertex vertex = VertexBuffers[ PushConstants.vertexBufferIndex ].vertices[ index ]; - color = texture(texSampler[material.albedoTexture], vertex.uv[0]).xyz; + uv = vertex.uv[0]; - if(material.normalTexture != 0) { - normal = texture(texSampler[material.normalTexture], vertex.uv[0]).xyz; - } - else { - normal = vertex.normal.xyz; - } + mat3 model = transpose(inverse(mat3(PushConstants.render_matrix))); + + vec3 T = normalize(vec3(vertex.tangent)); + vec3 N = normalize(vec3(vertex.normal)); + vec3 B = normalize(vec3(vertex.bitangent)); + /* T = normalize(T - dot(T, N) * N); // Re-orthoganize T with respect to N */ + /* vec3 B = normalize(cross(N, T)); */ + TBN = mat3(T, B, N); gl_Position = Camera.projection * Camera.view * PushConstants.render_matrix * vec4(vertex.position.xyz, 1.0); } diff --git a/assets/textures/Default_albedo.tx b/assets/textures/Default_albedo.tx new file mode 100644 index 0000000..8523960 Binary files /dev/null and b/assets/textures/Default_albedo.tx differ diff --git a/assets/textures/Default_normal.tx b/assets/textures/Default_normal.tx new file mode 100644 index 0000000..7979d9e Binary files /dev/null and b/assets/textures/Default_normal.tx differ diff --git a/assets/textures/GlamVelvetSofa_normal.tx b/assets/textures/GlamVelvetSofa_normal.tx new file mode 100644 index 0000000..3ac7215 Binary files /dev/null and b/assets/textures/GlamVelvetSofa_normal.tx differ diff --git a/game.proj b/game.proj index fbaa7a6..9603008 100755 --- a/game.proj +++ b/game.proj @@ -59,7 +59,15 @@ { "id": "DuckScene", "path": "scenes://Duck.evsc" + }, + { + "id": "SofaScene", + "path": "scenes://Sofa.evsc" + }, + { + "id": "DamagedHelmetScene", + "path": "scenes://DamagedHelmet.evsc" } ], - "activeScene": "SponzaScene" + "activeScene": "DamagedHelmetScene" } diff --git a/scenes/DamagedHelmet.evsc b/scenes/DamagedHelmet.evsc new file mode 100644 index 0000000..0ee11a4 --- /dev/null +++ b/scenes/DamagedHelmet.evsc @@ -0,0 +1,102 @@ +{ + "id": "Scene", + "materials": [ + { + "albedoTexture": "assets://textures/Default_albedo.tx", + "baseColor": [ + 1, + 1, + 1, + 1 + ], + "id": "Material_MR", + "metallicFactor": 1, + "normalTexture": "assets://textures/Default_normal.tx", + "pipeline": "DefaultPipeline" + }, + { + "baseColor": [ + 1, + 1, + 1, + 1 + ], + "id": "Scene_Material_Dummy_1", + "metallicFactor": 1, + "pipeline": "DefaultPipeline" + } + ], + "nodes": [ + { + "components": [ + { + "position": [ + 0, + 0, + 0 + ], + "rotation": [ + 90.00000250447816, + -0, + 0 + ], + "scale": [ + 1, + 1.0000001192092896, + 1.0000001192092896 + ], + "type": "TransformComponent" + }, + { + "material": "Material_MR", + "mesh": "assets://meshes/DamagedHelmet_mesh_helmet_LP_13930damagedHelmet.mesh", + "type": "RenderComponent" + } + ], + "id": "node_damagedHelmet_-6514" + }, + { + "id": "Camera", + "components": [ + { + "type": "TransformComponent", + "position": [0.0, -2.0, 11.0], + "rotation": [0.0, 0.0, 0.0], + "scale": [1.0, 1.0, 1.0] + }, + { + "type": "ScriptComponent", + "script_name": "MainCameraController", + "script_path": "scripts://MainScene/Camera.lua" + } + ], + "children": [ + { + "id": "RotationHelper", + "components": [ + { + "type": "TransformComponent", + "position": [0.0, 0.0, 0.0], + "rotation": [0.0, 0.0, 0.0], + "scale": [1.0, 1.0, 1.0] + }, + { + "type": "CameraComponent", + "view": "Perspective", + "fov": 90, + "near": 0.001, + "far": 1000, + "aspectRatio": 1.3333 + }, + { + "type": "ScriptComponent", + "script_name": "MainCameraRotationHelper", + "script_path": "scripts://MainScene/CameraHelper.lua" + } + ] + } + ] + } + ], + "activeCamera": "Camera.RotationHelper" +} diff --git a/scenes/Sofa.evsc b/scenes/Sofa.evsc new file mode 100644 index 0000000..b20b2fa --- /dev/null +++ b/scenes/Sofa.evsc @@ -0,0 +1,147 @@ +{ + "id": "", + "materials": [ + { + "baseColor": [ 0.019999999552965164, 0.019999999552965164, 0.019999999552965164, 1 ], + "id": "GlamVelvetSofa_legs", + "metallicFactor": 0, + "pipeline": "DefaultPipeline" + }, + { + "baseColor": [ 0.809999999776482582, 0.309999999776482582, 0.409999999776482582, 1 ], + "id": "GlamVelvetSofa_fabric_navy", + "metallicFactor": 0, + "normalTexture": "assets://textures/GlamVelvetSofa_normal.tx", + "pipeline": "DefaultPipeline" + }, + { + "baseColor": [ 1, 0.800000011920929, 0.699999988079071, 1 ], + "id": "GlamVelvetSofa_feet", + "metallicFactor": 1, + "pipeline": "DefaultPipeline" + }, + { + "baseColor": [ 1, 1, 1, 1 ], + "id": "_Material_Dummy_3", + "metallicFactor": 1, + "pipeline": "DefaultPipeline" + } + ], + "nodes": [ + { + "children": [ + { + "components": [ + { + "position": [ 0, 0, 0 ], + "rotation": [ 0, -0, 0 ], + "scale": [ 1, 1, 1 ], + "type": "TransformComponent" + }, + { + "material": "GlamVelvetSofa_legs", + "mesh": "assets://meshes/GlamVelvetSofa_GlamVelvetSofa_legs.mesh", + "type": "RenderComponent" + } + ], + "id": "GlamVelvetSofa_legs" + }, + { + "components": [ + { + "position": [ 0, 0, 0 ], + "rotation": [ 0, -0, 0 ], + "scale": [ 1, 1, 1 ], + "type": "TransformComponent" + }, + { + "material": "GlamVelvetSofa_fabric_navy", + "mesh": "assets://meshes/GlamVelvetSofa_GlamVelvetSofa_fabric.mesh", + "type": "RenderComponent" + } + ], + "id": "GlamVelvetSofa_fabric" + }, + { + "components": [ + { + "position": [ 0, 0, 0 ], + "rotation": [ 0, -0, 0 ], + "scale": [ 1, 1, 1 ], + "type": "TransformComponent" + }, + { + "material": "GlamVelvetSofa_feet", + "mesh": "assets://meshes/GlamVelvetSofa_GlamVelvetSofa_feet.mesh", + "type": "RenderComponent" + } + ], + "id": "GlamVelvetSofa_feet" + }, + { + "components": [ + { + "position": [ 0, 0, 0 ], + "rotation": [ -21.703274427363187, -84.28944526397059, 0 ], + "scale": [ 0.9999999403953552, 1, 0.9999999403953552 ], + "type": "TransformComponent" + } + ], + "id": "Key Light" + } + ], + "components": [ + { + "position": [ 0, 0, 0 ], + "rotation": [ 0, -0, 0 ], + "scale": [ 1, 1, 1 ], + "type": "TransformComponent" + } + ], + "id": "ROOT" + }, + { + "id": "Camera", + "components": [ + { + "type": "TransformComponent", + "position": [0.0, -2.0, 11.0], + "rotation": [0.0, 0.0, 0.0], + "scale": [1.0, 1.0, 1.0] + }, + { + "type": "ScriptComponent", + "script_name": "MainCameraController", + "script_path": "scripts://MainScene/Camera.lua" + } + ], + "children": [ + { + "id": "RotationHelper", + "components": [ + { + "type": "TransformComponent", + "position": [0.0, 0.0, 0.0], + "rotation": [0.0, 0.0, 0.0], + "scale": [1.0, 1.0, 1.0] + }, + { + "type": "CameraComponent", + "view": "Perspective", + "fov": 90, + "near": 0.001, + "far": 1000, + "aspectRatio": 1.3333 + }, + { + "type": "ScriptComponent", + "script_name": "MainCameraRotationHelper", + "script_path": "scripts://MainScene/CameraHelper.lua" + } + ] + } + ] + } + ], + "activeCamera": "Camera.RotationHelper" +}