diff --git a/assets/models/cornell_box.mtl b/assets/models/cornell_box.mtl new file mode 100644 index 0000000..d3a1c7a --- /dev/null +++ b/assets/models/cornell_box.mtl @@ -0,0 +1,24 @@ +newmtl white +Ka 0 0 0 +Kd 1 1 1 +Ks 0 0 0 + +newmtl red +Ka 0 0 0 +Kd 1 0 0 +Ks 0 0 0 + +newmtl green +Ka 0 0 0 +Kd 0 1 0 +Ks 0 0 0 + +newmtl blue +Ka 0 0 0 +Kd 0 0 1 +Ks 0 0 0 + +newmtl light +Ka 20 20 20 +Kd 1 1 1 +Ks 0 0 0 diff --git a/assets/models/cornell_box.obj b/assets/models/cornell_box.obj new file mode 100644 index 0000000..43e021f --- /dev/null +++ b/assets/models/cornell_box.obj @@ -0,0 +1,145 @@ +# cornell_box.obj and cornell_box.mtl are grabbed from Intel's embree project. +# original cornell box data + # comment + +# empty line including some space + + +mtllib cornell_box.mtl + +o floor +usemtl white +v 552.8 0.0 0.0 +v 0.0 0.0 0.0 +v 0.0 0.0 559.2 +v 549.6 0.0 559.2 + +v 130.0 0.0 65.0 +v 82.0 0.0 225.0 +v 240.0 0.0 272.0 +v 290.0 0.0 114.0 + +v 423.0 0.0 247.0 +v 265.0 0.0 296.0 +v 314.0 0.0 456.0 +v 472.0 0.0 406.0 + +f 1 2 3 4 +f 8 7 6 5 +f 12 11 10 9 + +o light +usemtl light +v 343.0 548.0 227.0 +v 343.0 548.0 332.0 +v 213.0 548.0 332.0 +v 213.0 548.0 227.0 +f -4 -3 -2 -1 + +o ceiling +usemtl white +v 556.0 548.8 0.0 +v 556.0 548.8 559.2 +v 0.0 548.8 559.2 +v 0.0 548.8 0.0 +f -4 -3 -2 -1 + +o back_wall +usemtl white +v 549.6 0.0 559.2 +v 0.0 0.0 559.2 +v 0.0 548.8 559.2 +v 556.0 548.8 559.2 +f -4 -3 -2 -1 + +o front_wall +usemtl blue +v 549.6 0.0 0 +v 0.0 0.0 0 +v 0.0 548.8 0 +v 556.0 548.8 0 +#f -1 -2 -3 -4 + +o green_wall +usemtl green +v 0.0 0.0 559.2 +v 0.0 0.0 0.0 +v 0.0 548.8 0.0 +v 0.0 548.8 559.2 +f -4 -3 -2 -1 + +o red_wall +usemtl red +v 552.8 0.0 0.0 +v 549.6 0.0 559.2 +v 556.0 548.8 559.2 +v 556.0 548.8 0.0 +f -4 -3 -2 -1 + +o short_block +usemtl white + +v 130.0 165.0 65.0 +v 82.0 165.0 225.0 +v 240.0 165.0 272.0 +v 290.0 165.0 114.0 +f -4 -3 -2 -1 + +v 290.0 0.0 114.0 +v 290.0 165.0 114.0 +v 240.0 165.0 272.0 +v 240.0 0.0 272.0 +f -4 -3 -2 -1 + +v 130.0 0.0 65.0 +v 130.0 165.0 65.0 +v 290.0 165.0 114.0 +v 290.0 0.0 114.0 +f -4 -3 -2 -1 + +v 82.0 0.0 225.0 +v 82.0 165.0 225.0 +v 130.0 165.0 65.0 +v 130.0 0.0 65.0 +f -4 -3 -2 -1 + +v 240.0 0.0 272.0 +v 240.0 165.0 272.0 +v 82.0 165.0 225.0 +v 82.0 0.0 225.0 +f -4 -3 -2 -1 + +o tall_block +usemtl white + +v 423.0 330.0 247.0 +v 265.0 330.0 296.0 +v 314.0 330.0 456.0 +v 472.0 330.0 406.0 +f -4 -3 -2 -1 + +usemtl white +v 423.0 0.0 247.0 +v 423.0 330.0 247.0 +v 472.0 330.0 406.0 +v 472.0 0.0 406.0 +f -4 -3 -2 -1 + +v 472.0 0.0 406.0 +v 472.0 330.0 406.0 +v 314.0 330.0 456.0 +v 314.0 0.0 456.0 +f -4 -3 -2 -1 + +v 314.0 0.0 456.0 +v 314.0 330.0 456.0 +v 265.0 330.0 296.0 +v 265.0 0.0 296.0 +f -4 -3 -2 -1 + +v 265.0 0.0 296.0 +v 265.0 330.0 296.0 +v 423.0 330.0 247.0 +v 423.0 0.0 247.0 +f -4 -3 -2 -1 + diff --git a/assets/models/tescoPiwo.mtl b/assets/models/tescoPiwo.mtl deleted file mode 100644 index 1c58cf2..0000000 --- a/assets/models/tescoPiwo.mtl +++ /dev/null @@ -1,13 +0,0 @@ -# Blender 4.2.0 MTL File: 'tescoPiwo.blend' -# www.blender.org - -newmtl Material.001 -Ns 360.000000 -Ka 0.500000 0.500000 0.500000 -Ks 0.500000 0.500000 0.500000 -Ke 0.000000 0.000000 0.000000 -Ni 1.500000 -d 1.000000 -illum 3 -map_Kd tescoPiwoTexture.png -map_Bump -bm 1.000000 /home/przmk/Downloads/Downloads/tescoPiwoNormal.png diff --git a/assets/models/tescoPiwo.obj b/assets/models/tescoPiwo.obj deleted file mode 100644 index 92a9452..0000000 --- a/assets/models/tescoPiwo.obj +++ /dev/null @@ -1,1751 +0,0 @@ -# Blender 4.2.0 -# www.blender.org -mtllib tescoPiwo.mtl -o Piwo -v -0.000000 0.044375 0.230400 -v -0.000000 1.086295 0.230400 -v -0.044949 0.044375 0.225973 -v -0.044949 1.086295 0.225973 -v -0.088170 0.044375 0.212862 -v -0.088170 1.086295 0.212862 -v -0.128003 0.044375 0.191571 -v -0.128003 1.086295 0.191571 -v -0.162917 0.044375 0.162917 -v -0.162917 1.086295 0.162917 -v -0.191571 0.044375 0.128003 -v -0.191571 1.086295 0.128003 -v -0.212862 0.044375 0.088170 -v -0.212862 1.086295 0.088170 -v -0.225973 0.044375 0.044949 -v -0.225973 1.086295 0.044949 -v -0.230400 0.044375 -0.000000 -v -0.230400 1.086295 -0.000000 -v -0.225973 0.044375 -0.044949 -v -0.225973 1.086295 -0.044949 -v -0.212862 0.044375 -0.088170 -v -0.212862 1.086295 -0.088170 -v -0.191571 0.044375 -0.128003 -v -0.191571 1.086295 -0.128003 -v -0.162917 0.044375 -0.162917 -v -0.162917 1.086295 -0.162917 -v -0.128003 0.044375 -0.191571 -v -0.128003 1.086295 -0.191571 -v -0.088170 0.044375 -0.212862 -v -0.088170 1.086295 -0.212862 -v -0.044949 0.044375 -0.225973 -v -0.044949 1.086295 -0.225973 -v 0.000000 0.044375 -0.230400 -v 0.000000 1.086295 -0.230400 -v 0.044949 0.044375 -0.225973 -v 0.044949 1.086295 -0.225973 -v 0.088170 0.044375 -0.212862 -v 0.088170 1.086295 -0.212862 -v 0.128003 0.044375 -0.191571 -v 0.128003 1.086295 -0.191571 -v 0.162917 0.044375 -0.162917 -v 0.162917 1.086295 -0.162917 -v 0.191571 0.044375 -0.128003 -v 0.191571 1.086295 -0.128003 -v 0.212862 0.044375 -0.088170 -v 0.212862 1.086295 -0.088170 -v 0.225973 0.044375 -0.044949 -v 0.225973 1.086295 -0.044949 -v 0.230400 0.044375 -0.000000 -v 0.230400 1.086295 -0.000000 -v 0.225973 0.044375 0.044949 -v 0.225973 1.086295 0.044949 -v 0.212862 0.044375 0.088170 -v 0.212862 1.086295 0.088170 -v 0.191571 0.044375 0.128003 -v 0.191571 1.086295 0.128003 -v 0.162917 0.044375 0.162917 -v 0.162917 1.086295 0.162917 -v 0.128003 0.044375 0.191571 -v 0.128003 1.086295 0.191571 -v 0.088170 0.044375 0.212862 -v 0.088170 1.086295 0.212862 -v 0.044949 0.044375 0.225973 -v 0.044949 1.086295 0.225973 -v -0.038174 1.185086 0.191913 -v -0.000000 1.185086 0.195673 -v -0.074881 1.185086 0.180778 -v -0.108710 1.185086 0.162696 -v -0.138361 1.185086 0.138361 -v -0.162696 1.185086 0.108710 -v -0.180778 1.185086 0.074881 -v -0.191913 1.185086 0.038174 -v -0.195673 1.185086 -0.000000 -v -0.191913 1.185086 -0.038174 -v -0.180778 1.185086 -0.074881 -v -0.162696 1.185086 -0.108710 -v -0.138361 1.185086 -0.138361 -v -0.108710 1.185086 -0.162696 -v -0.074881 1.185086 -0.180778 -v -0.038174 1.185086 -0.191913 -v 0.000000 1.185086 -0.195673 -v 0.038174 1.185086 -0.191913 -v 0.074881 1.185086 -0.180778 -v 0.108710 1.185086 -0.162696 -v 0.138361 1.185086 -0.138361 -v 0.162696 1.185086 -0.108710 -v 0.180778 1.185086 -0.074881 -v 0.191913 1.185086 -0.038174 -v 0.195673 1.185086 -0.000000 -v 0.191913 1.185086 0.038174 -v 0.180778 1.185086 0.074881 -v 0.162696 1.185086 0.108710 -v 0.138361 1.185086 0.138361 -v 0.108710 1.185086 0.162696 -v 0.074881 1.185086 0.180778 -v 0.038174 1.185086 0.191913 -v -0.037345 1.211296 0.187747 -v -0.000000 1.211296 0.191425 -v -0.073255 1.211296 0.176854 -v -0.106350 1.211296 0.159164 -v -0.135358 1.211296 0.135358 -v -0.159164 1.211296 0.106350 -v -0.176854 1.211296 0.073255 -v -0.187747 1.211296 0.037345 -v -0.191425 1.211296 -0.000000 -v -0.187747 1.211296 -0.037345 -v -0.176854 1.211296 -0.073255 -v -0.159164 1.211296 -0.106350 -v -0.135358 1.211296 -0.135358 -v -0.106350 1.211296 -0.159164 -v -0.073255 1.211296 -0.176854 -v -0.037345 1.211296 -0.187747 -v 0.000000 1.211296 -0.191425 -v 0.037345 1.211296 -0.187747 -v 0.073255 1.211296 -0.176854 -v 0.106350 1.211296 -0.159164 -v 0.135358 1.211296 -0.135358 -v 0.159164 1.211296 -0.106350 -v 0.176854 1.211296 -0.073255 -v 0.187747 1.211296 -0.037345 -v 0.191425 1.211296 -0.000000 -v 0.187747 1.211296 0.037345 -v 0.176854 1.211296 0.073255 -v 0.159164 1.211296 0.106350 -v 0.135358 1.211296 0.135358 -v 0.106350 1.211296 0.159164 -v 0.073255 1.211296 0.176854 -v 0.037345 1.211296 0.187747 -v 0.185004 1.204968 0.076631 -v 0.185004 1.191414 0.076631 -v 0.166499 1.191414 0.111251 -v 0.166499 1.204968 0.111251 -v -0.111251 1.204968 -0.166499 -v -0.111251 1.191414 -0.166499 -v -0.076631 1.191414 -0.185004 -v -0.076631 1.204968 -0.185004 -v -0.000000 1.204968 0.200246 -v -0.000000 1.191414 0.200246 -v -0.039066 1.191414 0.196399 -v -0.039066 1.204968 0.196399 -v 0.141596 1.191414 0.141596 -v 0.141596 1.204968 0.141596 -v -0.039066 1.191414 -0.196399 -v -0.039066 1.204968 -0.196399 -v -0.076631 1.191414 0.185004 -v -0.076631 1.204968 0.185004 -v 0.111251 1.191414 0.166499 -v 0.111251 1.204968 0.166499 -v 0.000000 1.191414 -0.200246 -v 0.000000 1.204968 -0.200246 -v -0.111251 1.191414 0.166499 -v -0.111251 1.204968 0.166499 -v 0.076631 1.191414 0.185004 -v 0.076631 1.204968 0.185004 -v 0.039066 1.191414 -0.196399 -v 0.039066 1.204968 -0.196399 -v -0.141596 1.191414 0.141596 -v -0.141596 1.204968 0.141596 -v 0.039066 1.191414 0.196399 -v 0.039066 1.204968 0.196399 -v 0.076631 1.191414 -0.185004 -v 0.076631 1.204968 -0.185004 -v -0.166499 1.191414 0.111251 -v -0.166499 1.204968 0.111251 -v 0.111251 1.191414 -0.166499 -v 0.111251 1.204968 -0.166499 -v -0.185004 1.191414 0.076631 -v -0.185004 1.204968 0.076631 -v 0.141596 1.191414 -0.141596 -v 0.141596 1.204968 -0.141596 -v -0.196399 1.191414 0.039066 -v -0.196399 1.204968 0.039066 -v 0.166499 1.191414 -0.111251 -v 0.166499 1.204968 -0.111251 -v -0.200246 1.191414 -0.000000 -v -0.200246 1.204968 -0.000000 -v 0.185004 1.191414 -0.076631 -v 0.185004 1.204968 -0.076631 -v -0.196399 1.191414 -0.039066 -v -0.196399 1.204968 -0.039066 -v 0.196399 1.191414 -0.039066 -v 0.196399 1.204968 -0.039066 -v -0.185004 1.191414 -0.076631 -v -0.185004 1.204968 -0.076631 -v 0.200246 1.191414 -0.000000 -v 0.200246 1.204968 -0.000000 -v -0.166499 1.191414 -0.111251 -v -0.166499 1.204968 -0.111251 -v 0.196399 1.191414 0.039066 -v 0.196399 1.204968 0.039066 -v -0.141596 1.191414 -0.141596 -v -0.141596 1.204968 -0.141596 -v -0.038174 1.211296 0.191913 -v -0.000000 1.211296 0.195673 -v -0.074881 1.211296 0.180778 -v -0.108710 1.211296 0.162696 -v -0.138361 1.211296 0.138361 -v -0.162696 1.211296 0.108710 -v -0.180778 1.211296 0.074881 -v -0.191913 1.211296 0.038174 -v -0.195673 1.211296 -0.000000 -v -0.191913 1.211296 -0.038174 -v -0.180778 1.211296 -0.074881 -v -0.162696 1.211296 -0.108710 -v -0.138361 1.211296 -0.138361 -v -0.108710 1.211296 -0.162696 -v -0.074881 1.211296 -0.180778 -v -0.038174 1.211296 -0.191913 -v 0.000000 1.211296 -0.195673 -v 0.038174 1.211296 -0.191913 -v 0.074881 1.211296 -0.180778 -v 0.108710 1.211296 -0.162696 -v 0.138361 1.211296 -0.138361 -v 0.162696 1.211296 -0.108710 -v 0.180778 1.211296 -0.074881 -v 0.191913 1.211296 -0.038174 -v 0.195673 1.211296 -0.000000 -v 0.191913 1.211296 0.038174 -v 0.180778 1.211296 0.074881 -v 0.162696 1.211296 0.108710 -v 0.138361 1.211296 0.138361 -v 0.108710 1.211296 0.162696 -v 0.074881 1.211296 0.180778 -v 0.038174 1.211296 0.191913 -v -0.037345 1.182776 0.187747 -v 0.000000 1.182776 0.191425 -v -0.073255 1.182776 0.176854 -v -0.106350 1.182776 0.159164 -v -0.135358 1.182776 0.135358 -v -0.159164 1.182776 0.106350 -v -0.176854 1.182776 0.073255 -v -0.187747 1.182776 0.037345 -v -0.191425 1.182776 -0.000000 -v -0.187747 1.182776 -0.037345 -v -0.176854 1.182776 -0.073255 -v -0.159164 1.182776 -0.106350 -v -0.135358 1.182776 -0.135358 -v -0.106350 1.182776 -0.159164 -v -0.073255 1.182776 -0.176854 -v -0.037345 1.182776 -0.187747 -v 0.000000 1.182776 -0.191425 -v 0.037345 1.182776 -0.187747 -v 0.073255 1.182776 -0.176854 -v 0.106350 1.182776 -0.159164 -v 0.135358 1.182776 -0.135358 -v 0.159164 1.182776 -0.106350 -v 0.176854 1.182776 -0.073255 -v 0.187747 1.182776 -0.037345 -v 0.191425 1.182776 -0.000000 -v 0.187747 1.182776 0.037345 -v 0.176854 1.182776 0.073255 -v 0.159164 1.182776 0.106350 -v 0.135358 1.182776 0.135358 -v 0.106350 1.182776 0.159164 -v 0.073255 1.182776 0.176854 -v 0.037345 1.182776 0.187747 -v -0.000000 0.002513 0.202216 -v -0.039450 0.002513 0.198330 -v -0.077385 0.002513 0.186823 -v -0.112345 0.002513 0.168136 -v -0.142988 0.002513 0.142988 -v -0.168136 0.002513 0.112345 -v -0.186823 0.002513 0.077385 -v -0.198330 0.002513 0.039450 -v -0.202216 0.002513 -0.000000 -v -0.198330 0.002513 -0.039450 -v -0.186823 0.002513 -0.077385 -v -0.168136 0.002513 -0.112345 -v -0.142988 0.002513 -0.142988 -v -0.112345 0.002513 -0.168136 -v -0.077385 0.002513 -0.186823 -v -0.039450 0.002513 -0.198330 -v 0.000000 0.002513 -0.202216 -v 0.039450 0.002513 -0.198330 -v 0.077385 0.002513 -0.186823 -v 0.112345 0.002513 -0.168136 -v 0.142988 0.002513 -0.142988 -v 0.168136 0.002513 -0.112345 -v 0.186823 0.002513 -0.077385 -v 0.198330 0.002513 -0.039450 -v 0.202216 0.002513 -0.000000 -v 0.198330 0.002513 0.039450 -v 0.186823 0.002513 0.077385 -v 0.168136 0.002513 0.112345 -v 0.142988 0.002513 0.142988 -v 0.112345 0.002513 0.168136 -v 0.077385 0.002513 0.186823 -v 0.039450 0.002513 0.198330 -v -0.000000 -0.009869 0.197613 -v -0.038552 -0.009869 0.193816 -v -0.075623 -0.009869 0.182570 -v -0.109788 -0.009869 0.164309 -v -0.139733 -0.009869 0.139733 -v -0.164309 -0.009869 0.109788 -v -0.182570 -0.009869 0.075623 -v -0.193816 -0.009869 0.038552 -v -0.197613 -0.009869 -0.000000 -v -0.193816 -0.009869 -0.038552 -v -0.182570 -0.009869 -0.075623 -v -0.164309 -0.009869 -0.109788 -v -0.139733 -0.009869 -0.139733 -v -0.109788 -0.009869 -0.164309 -v -0.075623 -0.009869 -0.182570 -v -0.038552 -0.009869 -0.193816 -v 0.000000 -0.009869 -0.197613 -v 0.038552 -0.009869 -0.193816 -v 0.075623 -0.009869 -0.182570 -v 0.109788 -0.009869 -0.164309 -v 0.139733 -0.009869 -0.139733 -v 0.164309 -0.009869 -0.109788 -v 0.182570 -0.009869 -0.075623 -v 0.193816 -0.009869 -0.038552 -v 0.197613 -0.009869 -0.000000 -v 0.193816 -0.009869 0.038552 -v 0.182570 -0.009869 0.075623 -v 0.164309 -0.009869 0.109788 -v 0.139733 -0.009869 0.139733 -v 0.109788 -0.009869 0.164309 -v 0.075623 -0.009869 0.182570 -v 0.038552 -0.009869 0.193816 -v 0.188661 -0.006239 -0.078146 -v 0.188661 -0.001118 -0.078146 -v 0.169791 -0.001118 -0.113451 -v 0.169791 -0.006239 -0.113451 -v -0.200282 -0.006239 -0.039839 -v -0.200282 -0.001118 -0.039839 -v -0.204206 -0.001118 -0.000000 -v -0.204206 -0.006239 -0.000000 -v 0.200282 -0.006239 -0.039839 -v 0.200282 -0.001118 -0.039839 -v -0.188661 -0.006239 -0.078146 -v -0.188661 -0.001118 -0.078146 -v 0.204206 -0.006239 -0.000000 -v 0.204206 -0.001118 -0.000000 -v -0.169791 -0.006239 -0.113451 -v -0.169791 -0.001118 -0.113451 -v 0.200282 -0.006239 0.039839 -v 0.200282 -0.001118 0.039839 -v -0.144395 -0.006239 -0.144395 -v -0.144395 -0.001118 -0.144395 -v 0.188661 -0.006239 0.078146 -v 0.188661 -0.001118 0.078146 -v -0.113451 -0.006239 -0.169791 -v -0.113451 -0.001118 -0.169791 -v 0.169791 -0.006239 0.113451 -v 0.169791 -0.001118 0.113451 -v -0.078146 -0.006239 -0.188661 -v -0.078146 -0.001118 -0.188661 -v -0.039839 -0.006239 0.200282 -v -0.039839 -0.001118 0.200282 -v -0.000000 -0.001118 0.204206 -v -0.000000 -0.006239 0.204206 -v 0.144395 -0.006239 0.144395 -v 0.144395 -0.001118 0.144395 -v -0.039839 -0.006239 -0.200282 -v -0.039839 -0.001118 -0.200282 -v -0.078146 -0.006239 0.188661 -v -0.078146 -0.001118 0.188661 -v 0.113451 -0.006239 0.169791 -v 0.113451 -0.001118 0.169791 -v 0.000000 -0.006239 -0.204206 -v 0.000000 -0.001118 -0.204206 -v -0.113451 -0.006239 0.169791 -v -0.113451 -0.001118 0.169791 -v 0.078146 -0.006239 0.188661 -v 0.078146 -0.001118 0.188661 -v 0.039839 -0.006239 -0.200282 -v 0.039839 -0.001118 -0.200282 -v -0.144395 -0.006239 0.144395 -v -0.144395 -0.001118 0.144395 -v 0.039839 -0.006239 0.200282 -v 0.039839 -0.001118 0.200282 -v 0.078146 -0.006239 -0.188661 -v 0.078146 -0.001118 -0.188661 -v -0.169791 -0.006239 0.113451 -v -0.169791 -0.001118 0.113451 -v 0.113451 -0.006239 -0.169791 -v 0.113451 -0.001118 -0.169791 -v -0.188661 -0.006239 0.078146 -v -0.188661 -0.001118 0.078146 -v 0.144395 -0.006239 -0.144395 -v 0.144395 -0.001118 -0.144395 -v -0.200282 -0.006239 0.039839 -v -0.200282 -0.001118 0.039839 -v -0.000000 -0.009869 0.202216 -v -0.039450 -0.009869 0.198330 -v -0.077385 -0.009869 0.186823 -v -0.112345 -0.009869 0.168136 -v -0.142988 -0.009869 0.142988 -v -0.168136 -0.009869 0.112345 -v -0.186823 -0.009869 0.077385 -v -0.198330 -0.009869 0.039450 -v -0.202216 -0.009869 -0.000000 -v -0.198330 -0.009869 -0.039450 -v -0.186823 -0.009869 -0.077385 -v -0.168136 -0.009869 -0.112345 -v -0.142988 -0.009869 -0.142988 -v -0.112345 -0.009869 -0.168136 -v -0.077385 -0.009869 -0.186823 -v -0.039450 -0.009869 -0.198330 -v 0.000000 -0.009869 -0.202216 -v 0.039450 -0.009869 -0.198330 -v 0.077385 -0.009869 -0.186823 -v 0.112345 -0.009869 -0.168136 -v 0.142988 -0.009869 -0.142988 -v 0.168136 -0.009869 -0.112345 -v 0.186823 -0.009869 -0.077385 -v 0.198330 -0.009869 -0.039450 -v 0.202216 -0.009869 -0.000000 -v 0.198330 -0.009869 0.039450 -v 0.186823 -0.009869 0.077385 -v 0.168136 -0.009869 0.112345 -v 0.142988 -0.009869 0.142988 -v 0.112345 -0.009869 0.168136 -v 0.077385 -0.009869 0.186823 -v 0.039450 -0.009869 0.198330 -v -0.000000 0.012240 0.183178 -v -0.035736 0.012240 0.179658 -v -0.070099 0.012240 0.169234 -v -0.101768 0.012240 0.152307 -v -0.129526 0.012240 0.129526 -v -0.152307 0.012240 0.101768 -v -0.169234 0.012240 0.070099 -v -0.179658 0.012240 0.035736 -v -0.183178 0.012240 -0.000000 -v -0.179658 0.012240 -0.035736 -v -0.169234 0.012240 -0.070099 -v -0.152307 0.012240 -0.101768 -v -0.129526 0.012240 -0.129526 -v -0.101768 0.012240 -0.152307 -v -0.070099 0.012240 -0.169234 -v -0.035736 0.012240 -0.179658 -v 0.000000 0.012240 -0.183178 -v 0.035736 0.012240 -0.179658 -v 0.070099 0.012240 -0.169234 -v 0.101768 0.012240 -0.152307 -v 0.129526 0.012240 -0.129526 -v 0.152307 0.012240 -0.101768 -v 0.169234 0.012240 -0.070099 -v 0.179658 0.012240 -0.035736 -v 0.183178 0.012240 -0.000000 -v 0.179658 0.012240 0.035736 -v 0.169234 0.012240 0.070099 -v 0.152307 0.012240 0.101768 -v 0.129526 0.012240 0.129526 -v 0.101768 0.012240 0.152307 -v 0.070099 0.012240 0.169234 -v 0.035736 0.012240 0.179658 -v -0.037345 1.194055 0.187747 -v -0.000000 1.194055 0.191425 -v -0.073255 1.194055 0.176854 -v -0.106350 1.194055 0.159164 -v -0.135358 1.194055 0.135358 -v -0.159164 1.194055 0.106350 -v -0.176854 1.194055 0.073255 -v -0.187747 1.194055 0.037345 -v -0.191425 1.194055 -0.000000 -v -0.187747 1.194055 -0.037345 -v -0.176854 1.194055 -0.073255 -v -0.159164 1.194055 -0.106350 -v -0.135358 1.194055 -0.135358 -v -0.106350 1.194055 -0.159164 -v -0.073255 1.194055 -0.176854 -v -0.037345 1.194055 -0.187747 -v 0.000000 1.194055 -0.191425 -v 0.037345 1.194055 -0.187747 -v 0.073255 1.194055 -0.176854 -v 0.106350 1.194055 -0.159164 -v 0.135358 1.194055 -0.135358 -v 0.159164 1.194055 -0.106350 -v 0.176854 1.194055 -0.073255 -v 0.187747 1.194055 -0.037345 -v 0.191425 1.194055 -0.000000 -v 0.187747 1.194055 0.037345 -v 0.176854 1.194055 0.073255 -v 0.159164 1.194055 0.106350 -v 0.135358 1.194055 0.135358 -v 0.106350 1.194055 0.159164 -v 0.073255 1.194055 0.176854 -v 0.037345 1.194055 0.187747 -vn -0.0000 -0.0000 1.0000 -vn -0.0000 0.1665 0.9860 -vn -0.1924 0.1665 0.9671 -vn -0.1951 -0.0000 0.9808 -vn -0.3773 0.1665 0.9110 -vn -0.3827 -0.0000 0.9239 -vn -0.5478 0.1665 0.8199 -vn -0.5556 -0.0000 0.8315 -vn -0.6972 0.1665 0.6972 -vn -0.7071 -0.0000 0.7071 -vn -0.8199 0.1665 0.5478 -vn -0.8315 -0.0000 0.5556 -vn -0.9110 0.1665 0.3773 -vn -0.9239 -0.0000 0.3827 -vn -0.9671 0.1665 0.1924 -vn -0.9808 -0.0000 0.1951 -vn -0.9860 0.1665 -0.0000 -vn -1.0000 -0.0000 -0.0000 -vn -0.9671 0.1665 -0.1924 -vn -0.9808 -0.0000 -0.1951 -vn -0.9110 0.1665 -0.3773 -vn -0.9239 -0.0000 -0.3827 -vn -0.8199 0.1665 -0.5478 -vn -0.8315 -0.0000 -0.5556 -vn -0.6972 0.1665 -0.6972 -vn -0.7071 -0.0000 -0.7071 -vn -0.5478 0.1665 -0.8199 -vn -0.5556 -0.0000 -0.8315 -vn -0.3773 0.1665 -0.9110 -vn -0.3827 -0.0000 -0.9239 -vn -0.1924 0.1665 -0.9671 -vn -0.1951 -0.0000 -0.9808 -vn -0.0000 0.1665 -0.9860 -vn -0.0000 -0.0000 -1.0000 -vn 0.1924 0.1665 -0.9671 -vn 0.1951 -0.0000 -0.9808 -vn 0.3773 0.1665 -0.9110 -vn 0.3827 -0.0000 -0.9239 -vn 0.5478 0.1665 -0.8199 -vn 0.5556 -0.0000 -0.8315 -vn 0.6972 0.1665 -0.6972 -vn 0.7071 -0.0000 -0.7071 -vn 0.8199 0.1665 -0.5478 -vn 0.8315 -0.0000 -0.5556 -vn 0.9110 0.1665 -0.3773 -vn 0.9239 -0.0000 -0.3827 -vn 0.9671 0.1665 -0.1924 -vn 0.9808 -0.0000 -0.1951 -vn 0.9860 0.1665 -0.0000 -vn 1.0000 -0.0000 -0.0000 -vn 0.9671 0.1665 0.1924 -vn 0.9808 -0.0000 0.1951 -vn 0.9110 0.1665 0.3773 -vn 0.9239 -0.0000 0.3827 -vn 0.8199 0.1665 0.5478 -vn 0.8315 -0.0000 0.5556 -vn 0.6972 0.1665 0.6972 -vn 0.7071 -0.0000 0.7071 -vn 0.5478 0.1665 0.8199 -vn 0.5556 -0.0000 0.8315 -vn 0.3773 0.1665 0.9110 -vn 0.3827 -0.0000 0.9239 -vn -0.9253 0.3316 -0.1840 -vn -0.8716 0.3316 -0.3610 -vn 0.1924 0.1665 0.9671 -vn 0.1951 -0.0000 0.9808 -vn -0.7664 -0.5585 0.3174 -vn -0.8136 -0.5585 0.1618 -vn 0.7488 -0.5858 0.3102 -vn 0.7949 -0.5858 0.1581 -vn 0.3610 0.3316 -0.8716 -vn 0.5241 0.3316 -0.7844 -vn 0.7844 0.3316 0.5241 -vn 0.6671 0.3316 0.6671 -vn -0.7844 0.3316 0.5241 -vn -0.8716 0.3316 0.3610 -vn -0.3610 0.3316 -0.8716 -vn -0.1841 0.3316 -0.9253 -vn 0.9253 0.3316 -0.1840 -vn 0.9434 0.3316 -0.0000 -vn -0.1841 0.3316 0.9253 -vn -0.3610 0.3316 0.8716 -vn -0.7844 0.3316 -0.5241 -vn 0.6671 0.3316 -0.6671 -vn 0.5241 0.3316 0.7844 -vn -0.9253 0.3316 0.1840 -vn -0.0000 0.3316 -0.9434 -vn 0.9253 0.3316 0.1840 -vn -0.5241 0.3316 0.7844 -vn -0.6671 0.3316 -0.6671 -vn 0.7844 0.3316 -0.5241 -vn 0.3610 0.3316 0.8716 -vn -0.9434 0.3316 -0.0000 -vn 0.1841 0.3316 -0.9253 -vn 0.8716 0.3316 0.3610 -vn -0.6671 0.3316 0.6671 -vn -0.5241 0.3316 -0.7844 -vn 0.8716 0.3316 -0.3610 -vn 0.1840 0.3316 0.9253 -vn -0.0000 0.3316 0.9434 -vn -0.4503 -0.5858 -0.6739 -vn -0.5731 -0.5858 -0.5731 -vn -0.0000 -0.5858 0.8105 -vn 0.1581 -0.5858 0.7949 -vn -0.4503 0.5858 -0.6739 -vn -0.5731 0.5858 -0.5731 -vn -0.0000 0.5858 0.8105 -vn 0.1581 0.5858 0.7949 -vn 0.4503 -0.5858 0.6739 -vn 0.5731 -0.5858 0.5731 -vn -0.0000 -0.5858 -0.8105 -vn -0.1581 -0.5858 -0.7949 -vn -0.4503 -0.5858 0.6739 -vn -0.3102 -0.5858 0.7488 -vn 0.3102 -0.5858 0.7488 -vn 0.1581 -0.5858 -0.7949 -vn -0.5731 -0.5858 0.5731 -vn 0.3102 -0.5858 -0.7488 -vn -0.6739 -0.5858 0.4503 -vn 0.4503 -0.5858 -0.6739 -vn -0.1581 -0.5858 0.7949 -vn -0.7488 -0.5858 0.3102 -vn 0.5731 -0.5858 -0.5731 -vn -0.7949 -0.5858 0.1581 -vn 0.6739 -0.5858 -0.4503 -vn -0.8105 -0.5858 -0.0000 -vn 0.7488 -0.5858 -0.3101 -vn -0.7949 -0.5858 -0.1581 -vn 0.7949 -0.5858 -0.1581 -vn -0.7488 -0.5858 -0.3101 -vn 0.8105 -0.5858 -0.0000 -vn -0.6739 -0.5858 -0.4503 -vn 0.6739 -0.5858 0.4503 -vn -0.3102 -0.5858 -0.7488 -vn -0.6739 0.5858 -0.4503 -vn 0.7949 0.5858 0.1581 -vn 0.8105 0.5858 -0.0000 -vn -0.7488 0.5858 -0.3102 -vn 0.7949 0.5858 -0.1581 -vn -0.7949 0.5858 -0.1581 -vn 0.7488 0.5858 -0.3102 -vn -0.8105 0.5858 -0.0000 -vn 0.6739 0.5858 -0.4503 -vn -0.7949 0.5858 0.1581 -vn 0.5731 0.5858 -0.5731 -vn -0.7488 0.5858 0.3102 -vn 0.4503 0.5858 -0.6739 -vn -0.6739 0.5858 0.4503 -vn 0.3102 0.5858 -0.7488 -vn -0.5731 0.5858 0.5731 -vn 0.1581 0.5858 -0.7949 -vn 0.3102 0.5858 0.7488 -vn -0.4503 0.5858 0.6739 -vn -0.0000 0.5858 -0.8105 -vn 0.4503 0.5858 0.6739 -vn -0.3102 0.5858 0.7488 -vn -0.1581 0.5858 -0.7949 -vn 0.5731 0.5858 0.5731 -vn -0.1581 0.5858 0.7949 -vn -0.3102 0.5858 -0.7488 -vn 0.6739 0.5858 0.4503 -vn 0.7488 0.5858 0.3102 -vn -0.0000 1.0000 -0.0000 -vn 0.8102 0.4806 -0.3356 -vn 0.8601 0.4806 -0.1711 -vn 0.9510 0.2444 -0.1892 -vn 0.8959 0.2444 -0.3711 -vn -0.1618 -0.5585 -0.8136 -vn -0.0000 -0.5585 -0.8295 -vn 0.8295 -0.5585 -0.0000 -vn 0.8136 -0.5585 0.1618 -vn -0.3174 -0.5585 0.7664 -vn -0.4609 -0.5585 0.6897 -vn -0.6897 -0.5585 -0.4609 -vn -0.5866 -0.5585 -0.5866 -vn 0.5866 -0.5585 -0.5866 -vn 0.6897 -0.5585 -0.4609 -vn 0.4609 -0.5585 0.6897 -vn 0.3174 -0.5585 0.7664 -vn -0.8295 -0.5585 -0.0000 -vn 0.1618 -0.5585 -0.8136 -vn 0.7664 -0.5585 0.3174 -vn -0.5866 -0.5585 0.5866 -vn -0.4609 -0.5585 -0.6897 -vn 0.7664 -0.5585 -0.3174 -vn 0.1618 -0.5585 0.8136 -vn -0.8136 -0.5585 -0.1618 -vn 0.3174 -0.5585 -0.7664 -vn 0.6897 -0.5585 0.4609 -vn -0.6897 -0.5585 0.4609 -vn -0.3174 -0.5585 -0.7664 -vn 0.8136 -0.5585 -0.1618 -vn -0.0000 -0.5585 0.8295 -vn -0.1618 -0.5585 0.8136 -vn -0.7664 -0.5585 -0.3174 -vn 0.4609 -0.5585 -0.6897 -vn 0.5866 -0.5585 0.5866 -vn -0.5921 -0.5467 0.5921 -vn -0.6962 -0.5467 0.4652 -vn -0.8601 0.4806 -0.1711 -vn -0.8102 0.4806 -0.3356 -vn -0.8959 0.2444 -0.3711 -vn -0.9510 0.2444 -0.1892 -vn 0.7291 0.4806 -0.4872 -vn 0.8063 0.2444 -0.5387 -vn -0.8769 0.4806 -0.0000 -vn -0.9697 0.2444 -0.0000 -vn 0.8769 0.4806 -0.0000 -vn 0.9697 0.2444 -0.0000 -vn -0.7291 0.4806 -0.4872 -vn -0.8063 0.2444 -0.5387 -vn 0.8601 0.4806 0.1711 -vn 0.9510 0.2444 0.1892 -vn -0.6201 0.4806 -0.6201 -vn -0.6857 0.2444 -0.6857 -vn 0.8102 0.4806 0.3356 -vn 0.8959 0.2444 0.3711 -vn -0.4872 0.4806 -0.7291 -vn -0.5387 0.2444 -0.8063 -vn 0.7291 0.4806 0.4872 -vn 0.8063 0.2444 0.5387 -vn -0.3356 0.4806 -0.8102 -vn -0.3711 0.2444 -0.8959 -vn -0.1711 0.4806 0.8601 -vn -0.3356 0.4806 0.8102 -vn -0.3711 0.2444 0.8959 -vn -0.1892 0.2444 0.9510 -vn 0.6201 0.4806 0.6201 -vn 0.6857 0.2444 0.6857 -vn -0.1711 0.4806 -0.8601 -vn -0.1892 0.2444 -0.9510 -vn -0.0000 0.4806 0.8769 -vn -0.0000 0.2444 0.9697 -vn 0.4872 0.4806 0.7291 -vn 0.5387 0.2444 0.8063 -vn -0.0000 0.4806 -0.8769 -vn -0.0000 0.2444 -0.9697 -vn -0.4872 0.4806 0.7291 -vn -0.5387 0.2444 0.8063 -vn 0.3356 0.4806 0.8102 -vn 0.3711 0.2444 0.8959 -vn 0.1711 0.4806 -0.8601 -vn 0.1892 0.2444 -0.9510 -vn -0.6201 0.4806 0.6201 -vn -0.6857 0.2444 0.6857 -vn 0.1711 0.4806 0.8601 -vn 0.1892 0.2444 0.9510 -vn 0.3356 0.4806 -0.8102 -vn 0.3711 0.2444 -0.8959 -vn -0.7291 0.4806 0.4872 -vn -0.8063 0.2444 0.5387 -vn 0.6857 -0.2444 0.6857 -vn 0.5387 -0.2444 0.8063 -vn 0.4872 -0.4806 0.7291 -vn 0.6201 -0.4806 0.6201 -vn 0.4872 0.4806 -0.7291 -vn 0.5387 0.2444 -0.8063 -vn -0.8102 0.4806 0.3356 -vn -0.8959 0.2444 0.3711 -vn 0.6201 0.4806 -0.6201 -vn 0.6857 0.2444 -0.6857 -vn -0.8601 0.4806 0.1711 -vn -0.9510 0.2444 0.1892 -vn -0.9510 -0.2444 -0.1892 -vn -0.8959 -0.2444 -0.3711 -vn -0.8102 -0.4806 -0.3356 -vn -0.8601 -0.4806 -0.1711 -vn 0.9510 -0.2444 -0.1892 -vn 0.9697 -0.2444 -0.0000 -vn 0.8769 -0.4806 -0.0000 -vn 0.8601 -0.4806 -0.1711 -vn -0.9510 -0.2444 0.1892 -vn -0.9697 -0.2444 -0.0000 -vn -0.8769 -0.4806 -0.0000 -vn -0.8601 -0.4806 0.1711 -vn 0.6857 -0.2444 -0.6857 -vn 0.8063 -0.2444 -0.5387 -vn 0.7291 -0.4806 -0.4872 -vn 0.6201 -0.4806 -0.6201 -vn -0.8959 -0.2444 0.3711 -vn -0.8102 -0.4806 0.3356 -vn 0.5387 -0.2444 -0.8063 -vn 0.4872 -0.4806 -0.7291 -vn -0.8063 -0.2444 0.5387 -vn -0.7291 -0.4806 0.4872 -vn 0.1892 -0.2444 0.9510 -vn -0.0000 -0.2444 0.9697 -vn -0.0000 -0.4806 0.8769 -vn 0.1711 -0.4806 0.8601 -vn 0.3711 -0.2444 -0.8959 -vn 0.3356 -0.4806 -0.8102 -vn -0.6857 -0.2444 0.6857 -vn -0.6201 -0.4806 0.6201 -vn 0.1892 -0.2444 -0.9510 -vn 0.1711 -0.4806 -0.8601 -vn 0.3711 -0.2444 0.8959 -vn 0.3356 -0.4806 0.8102 -vn -0.5387 -0.2444 0.8063 -vn -0.4872 -0.4806 0.7291 -vn -0.0000 -0.2444 -0.9697 -vn -0.0000 -0.4806 -0.8769 -vn -0.3711 -0.2444 0.8959 -vn -0.3356 -0.4806 0.8102 -vn -0.1892 -0.2444 -0.9510 -vn -0.1711 -0.4806 -0.8601 -vn -0.1892 -0.2444 0.9510 -vn -0.1711 -0.4806 0.8601 -vn -0.3711 -0.2444 -0.8959 -vn -0.3356 -0.4806 -0.8102 -vn 0.8063 -0.2444 0.5387 -vn 0.7291 -0.4806 0.4872 -vn -0.5387 -0.2444 -0.8063 -vn -0.4872 -0.4806 -0.7291 -vn 0.8959 -0.2444 0.3711 -vn 0.8102 -0.4806 0.3356 -vn -0.6857 -0.2444 -0.6857 -vn -0.6201 -0.4806 -0.6201 -vn 0.9510 -0.2444 0.1892 -vn 0.8601 -0.4806 0.1711 -vn -0.8063 -0.2444 -0.5387 -vn -0.7291 -0.4806 -0.4872 -vn 0.8959 -0.2444 -0.3711 -vn 0.8102 -0.4806 -0.3356 -vn -0.0000 -1.0000 -0.0000 -vn 0.8213 -0.5467 -0.1634 -vn 0.8373 -0.5467 -0.0000 -vn -0.7736 -0.5467 0.3204 -vn 0.8213 -0.5467 0.1634 -vn -0.8213 -0.5467 0.1634 -vn 0.7736 -0.5467 0.3204 -vn -0.8373 -0.5467 -0.0000 -vn 0.6962 -0.5467 0.4652 -vn -0.8213 -0.5467 -0.1634 -vn 0.5921 -0.5467 0.5921 -vn -0.7736 -0.5467 -0.3204 -vn 0.4652 -0.5467 0.6962 -vn -0.6962 -0.5467 -0.4652 -vn 0.3204 -0.5467 0.7736 -vn -0.0000 -0.5467 -0.8373 -vn 0.1634 -0.5467 -0.8213 -vn -0.5921 -0.5467 -0.5921 -vn 0.1634 -0.5467 0.8213 -vn 0.3204 -0.5467 -0.7736 -vn -0.4652 -0.5467 -0.6962 -vn -0.0000 -0.5467 0.8373 -vn 0.4652 -0.5467 -0.6962 -vn -0.3204 -0.5467 -0.7736 -vn -0.1634 -0.5467 0.8213 -vn 0.5921 -0.5467 -0.5921 -vn -0.1634 -0.5467 -0.8213 -vn -0.3204 -0.5467 0.7736 -vn 0.6962 -0.5467 -0.4652 -vn -0.4652 -0.5467 0.6962 -vn 0.7736 -0.5467 -0.3204 -vt 0.769149 0.045079 -vt 0.769149 0.696279 -vt 0.745399 0.696279 -vt 0.745399 0.045079 -vt 0.721649 0.696279 -vt 0.721649 0.045079 -vt 0.697899 0.696279 -vt 0.697899 0.045079 -vt 0.674148 0.696279 -vt 0.674148 0.045079 -vt 0.650398 0.696279 -vt 0.650398 0.045079 -vt 0.626649 0.696279 -vt 0.626649 0.045079 -vt 0.602899 0.696279 -vt 0.602899 0.045079 -vt 0.579149 0.696279 -vt 0.579149 0.045079 -vt 0.555399 0.696279 -vt 0.555398 0.045079 -vt 0.531649 0.696279 -vt 0.531649 0.045079 -vt 0.507899 0.696279 -vt 0.507899 0.045079 -vt 0.484149 0.696279 -vt 0.484149 0.045079 -vt 0.460399 0.696279 -vt 0.460399 0.045079 -vt 0.436649 0.696279 -vt 0.436648 0.045079 -vt 0.412899 0.696279 -vt 0.412898 0.045079 -vt 0.389149 0.696279 -vt 0.389149 0.045079 -vt 0.365399 0.696279 -vt 0.365398 0.045079 -vt 0.341649 0.696279 -vt 0.341649 0.045079 -vt 0.317899 0.696279 -vt 0.317899 0.045079 -vt 0.294149 0.696279 -vt 0.294149 0.045079 -vt 0.270399 0.696279 -vt 0.270399 0.045079 -vt 0.246649 0.696279 -vt 0.246649 0.045079 -vt 0.222899 0.696279 -vt 0.222899 0.045079 -vt 0.199148 0.696279 -vt 0.199149 0.045079 -vt 0.175398 0.696279 -vt 0.175399 0.045079 -vt 0.151648 0.696279 -vt 0.151649 0.045079 -vt 0.127898 0.696279 -vt 0.127899 0.045079 -vt 0.104148 0.696279 -vt 0.104149 0.045079 -vt 0.080398 0.696279 -vt 0.080399 0.045079 -vt 0.056648 0.696279 -vt 0.056648 0.045079 -vt 0.555399 0.758023 -vt 0.531649 0.758023 -vt 0.032899 0.696279 -vt 0.032899 0.045079 -vt 0.009149 0.696279 -vt 0.009149 0.045079 -vt 0.602899 0.018915 -vt 0.626649 0.018915 -vt 0.151648 0.758023 -vt 0.175398 0.758023 -vt 0.175398 0.761979 -vt 0.151648 0.761979 -vt 0.341649 0.758023 -vt 0.317899 0.758023 -vt 0.127898 0.758023 -vt 0.104148 0.758023 -vt 0.650398 0.758023 -vt 0.626649 0.758023 -vt 0.436649 0.758023 -vt 0.412899 0.758023 -vt 0.222898 0.758023 -vt 0.199148 0.758023 -vt 0.745399 0.758023 -vt 0.721649 0.758023 -vt 0.507899 0.758023 -vt 0.294149 0.758023 -vt 0.080398 0.758023 -vt 0.602899 0.758023 -vt 0.389149 0.758023 -vt 0.697899 0.758023 -vt 0.484149 0.758023 -vt 0.270399 0.758023 -vt 0.056648 0.758023 -vt 0.579149 0.758023 -vt 0.365399 0.758023 -vt 0.674148 0.758023 -vt 0.460399 0.758023 -vt 0.246649 0.758023 -vt 0.032898 0.758023 -vt 0.769149 0.758023 -vt 0.009149 0.758023 -vt 0.294149 0.774405 -vt 0.317899 0.774405 -vt 0.317899 0.754637 -vt 0.294149 0.754637 -vt 0.484149 0.761979 -vt 0.460399 0.761979 -vt 0.032898 0.761979 -vt 0.009149 0.761979 -vt 0.460399 0.770449 -vt 0.484149 0.770449 -vt 0.484149 0.774405 -vt 0.460399 0.774405 -vt 0.009149 0.770449 -vt 0.032898 0.770449 -vt 0.032898 0.774405 -vt 0.009149 0.774405 -vt 0.104148 0.761979 -vt 0.080398 0.761979 -vt 0.412899 0.761979 -vt 0.389149 0.761979 -vt 0.721649 0.761979 -vt 0.697899 0.761979 -vt 0.056648 0.761979 -vt 0.365399 0.761979 -vt 0.674148 0.761979 -vt 0.341649 0.761979 -vt 0.650398 0.761979 -vt 0.317899 0.761979 -vt 0.769149 0.761979 -vt 0.745399 0.761979 -vt 0.626649 0.761979 -vt 0.294149 0.761979 -vt 0.602899 0.761979 -vt 0.270399 0.761979 -vt 0.579149 0.761979 -vt 0.246649 0.761979 -vt 0.555399 0.761979 -vt 0.222898 0.761979 -vt 0.531649 0.761979 -vt 0.199148 0.761979 -vt 0.507899 0.761979 -vt 0.127898 0.761979 -vt 0.436649 0.761979 -vt 0.507899 0.770449 -vt 0.507899 0.774405 -vt 0.175398 0.770449 -vt 0.199148 0.770449 -vt 0.199148 0.774405 -vt 0.175398 0.774405 -vt 0.531649 0.770449 -vt 0.531649 0.774405 -vt 0.222898 0.770449 -vt 0.222898 0.774405 -vt 0.555399 0.770449 -vt 0.555399 0.774405 -vt 0.246649 0.770449 -vt 0.246649 0.774405 -vt 0.579149 0.770449 -vt 0.579149 0.774405 -vt 0.270399 0.770449 -vt 0.270399 0.774405 -vt 0.602899 0.770449 -vt 0.602899 0.774405 -vt 0.294149 0.770449 -vt 0.626649 0.770449 -vt 0.626649 0.774405 -vt 0.317899 0.770449 -vt 0.650398 0.770449 -vt 0.650398 0.774405 -vt 0.341649 0.770449 -vt 0.341649 0.774405 -vt 0.674148 0.770449 -vt 0.674148 0.774405 -vt 0.365399 0.770449 -vt 0.365399 0.774405 -vt 0.056648 0.770449 -vt 0.056648 0.774405 -vt 0.697899 0.770449 -vt 0.697899 0.774405 -vt 0.389149 0.770449 -vt 0.389149 0.774405 -vt 0.080398 0.770449 -vt 0.080398 0.774405 -vt 0.721649 0.770449 -vt 0.721649 0.774405 -vt 0.412899 0.770449 -vt 0.412899 0.774405 -vt 0.104148 0.770449 -vt 0.104148 0.774405 -vt 0.745399 0.770449 -vt 0.745399 0.774405 -vt 0.436649 0.770449 -vt 0.436649 0.774405 -vt 0.127898 0.770449 -vt 0.127898 0.774405 -vt 0.769149 0.770449 -vt 0.769149 0.774405 -vt 0.151648 0.770449 -vt 0.151648 0.774405 -vt 0.626649 0.754637 -vt 0.602899 0.754637 -vt 0.270399 0.754637 -vt 0.579149 0.754637 -vt 0.246648 0.754637 -vt 0.555399 0.754637 -vt 0.222898 0.754637 -vt 0.531649 0.754637 -vt 0.199148 0.754637 -vt 0.507899 0.754637 -vt 0.175398 0.754637 -vt 0.484149 0.754637 -vt 0.151648 0.754637 -vt 0.460399 0.754637 -vt 0.127898 0.754637 -vt 0.436649 0.754637 -vt 0.769149 0.754637 -vt 0.745399 0.754637 -vt 0.104148 0.754637 -vt 0.412899 0.754637 -vt 0.721649 0.754637 -vt 0.080398 0.754637 -vt 0.389149 0.754637 -vt 0.697899 0.754637 -vt 0.056648 0.754637 -vt 0.365399 0.754637 -vt 0.674148 0.754637 -vt 0.032898 0.754637 -vt 0.341649 0.754637 -vt 0.650398 0.754637 -vt 0.009149 0.754637 -vt 0.246649 0.018915 -vt 0.222899 0.018915 -vt 0.222899 0.016646 -vt 0.246649 0.016646 -vt 0.389149 0.018915 -vt 0.412898 0.018915 -vt 0.175399 0.018915 -vt 0.199149 0.018915 -vt 0.697899 0.018915 -vt 0.721649 0.018915 -vt 0.484148 0.018915 -vt 0.507899 0.018915 -vt 0.270399 0.018915 -vt 0.294149 0.018915 -vt 0.056649 0.018915 -vt 0.080399 0.018915 -vt 0.579149 0.018915 -vt 0.365398 0.018915 -vt 0.151649 0.018915 -vt 0.674148 0.018915 -vt 0.460399 0.018915 -vt 0.032899 0.018915 -vt 0.555398 0.018915 -vt 0.341649 0.018915 -vt 0.127899 0.018915 -vt 0.650398 0.018915 -vt 0.436648 0.018915 -vt 0.745399 0.018915 -vt 0.769149 0.018915 -vt 0.009149 0.018915 -vt 0.531649 0.018915 -vt 0.317899 0.018915 -vt 0.104149 0.018915 -vt 0.294149 0.011176 -vt 0.270399 0.011176 -vt 0.270399 0.024995 -vt 0.294149 0.024995 -vt 0.531649 0.016646 -vt 0.555398 0.016646 -vt 0.270399 0.016646 -vt 0.579149 0.016646 -vt 0.199149 0.016646 -vt 0.507899 0.016646 -vt 0.175399 0.016646 -vt 0.484148 0.016646 -vt 0.151649 0.016646 -vt 0.460399 0.016646 -vt 0.127899 0.016646 -vt 0.436648 0.016646 -vt 0.721649 0.016646 -vt 0.745399 0.016646 -vt 0.104149 0.016646 -vt 0.412898 0.016646 -vt 0.769149 0.016646 -vt 0.080399 0.016646 -vt 0.389149 0.016646 -vt 0.697899 0.016646 -vt 0.056649 0.016646 -vt 0.365398 0.016646 -vt 0.674148 0.016646 -vt 0.032899 0.016646 -vt 0.341649 0.016646 -vt 0.650398 0.016646 -vt 0.104149 0.013445 -vt 0.080399 0.013445 -vt 0.080399 0.011176 -vt 0.104149 0.011176 -vt 0.317899 0.016646 -vt 0.626649 0.016646 -vt 0.294149 0.016646 -vt 0.602899 0.016646 -vt 0.555398 0.013445 -vt 0.531649 0.013445 -vt 0.531649 0.011176 -vt 0.555398 0.011176 -vt 0.222899 0.013445 -vt 0.199149 0.013445 -vt 0.199149 0.011176 -vt 0.222899 0.011176 -vt 0.602899 0.013445 -vt 0.579149 0.013445 -vt 0.579149 0.011176 -vt 0.602899 0.011176 -vt 0.294149 0.013445 -vt 0.270399 0.013445 -vt 0.626649 0.013445 -vt 0.626649 0.011176 -vt 0.317899 0.013445 -vt 0.317899 0.011176 -vt 0.650398 0.013445 -vt 0.650398 0.011176 -vt 0.032899 0.013445 -vt 0.009149 0.013445 -vt 0.009149 0.011176 -vt 0.032899 0.011176 -vt 0.341649 0.013445 -vt 0.341649 0.011176 -vt 0.674148 0.013445 -vt 0.674148 0.011176 -vt 0.365398 0.013445 -vt 0.365398 0.011176 -vt 0.056649 0.013445 -vt 0.056649 0.011176 -vt 0.697899 0.013445 -vt 0.697899 0.011176 -vt 0.389149 0.013445 -vt 0.389149 0.011176 -vt 0.721649 0.013445 -vt 0.721649 0.011176 -vt 0.412898 0.013445 -vt 0.412898 0.011176 -vt 0.009149 0.016646 -vt 0.745399 0.013445 -vt 0.745399 0.011176 -vt 0.436648 0.013445 -vt 0.436648 0.011176 -vt 0.769149 0.013445 -vt 0.769149 0.011176 -vt 0.127899 0.013445 -vt 0.127899 0.011176 -vt 0.460399 0.013445 -vt 0.460399 0.011176 -vt 0.151649 0.013445 -vt 0.151649 0.011176 -vt 0.484148 0.013445 -vt 0.484148 0.011176 -vt 0.175399 0.013445 -vt 0.175399 0.011176 -vt 0.507899 0.013445 -vt 0.507899 0.011176 -vt 0.246649 0.013445 -vt 0.246649 0.011176 -vt 0.317898 0.011176 -vt 0.852947 0.217272 -vt 0.833579 0.209249 -vt 0.816148 0.197602 -vt 0.801324 0.182778 -vt 0.789677 0.165347 -vt 0.781654 0.145979 -vt 0.777564 0.125417 -vt 0.777564 0.104453 -vt 0.781654 0.083892 -vt 0.789677 0.064523 -vt 0.801324 0.047092 -vt 0.816148 0.032268 -vt 0.833579 0.020621 -vt 0.852947 0.012599 -vt 0.873509 0.008509 -vt 0.894473 0.008509 -vt 0.915034 0.012599 -vt 0.934402 0.020621 -vt 0.951834 0.032268 -vt 0.966657 0.047092 -vt 0.978305 0.064523 -vt 0.986327 0.083892 -vt 0.990417 0.104453 -vt 0.990417 0.125417 -vt 0.986327 0.145979 -vt 0.978305 0.165347 -vt 0.966657 0.182778 -vt 0.951834 0.197602 -vt 0.934402 0.209249 -vt 0.915034 0.217272 -vt 0.894473 0.221362 -vt 0.873508 0.221362 -vt 0.579149 0.024995 -vt 0.602899 0.024995 -vt 0.246649 0.024995 -vt 0.555398 0.024995 -vt 0.222899 0.024995 -vt 0.531649 0.024995 -vt 0.199149 0.024995 -vt 0.507899 0.024995 -vt 0.175399 0.024995 -vt 0.484148 0.024995 -vt 0.151649 0.024995 -vt 0.460399 0.024995 -vt 0.127899 0.024995 -vt 0.436648 0.024995 -vt 0.745399 0.024995 -vt 0.769149 0.024995 -vt 0.104149 0.024995 -vt 0.412898 0.024995 -vt 0.721649 0.024995 -vt 0.080399 0.024995 -vt 0.389149 0.024995 -vt 0.697899 0.024995 -vt 0.056649 0.024995 -vt 0.365398 0.024995 -vt 0.674148 0.024995 -vt 0.032899 0.024995 -vt 0.341649 0.024995 -vt 0.650398 0.024995 -vt 0.009149 0.024995 -vt 0.317898 0.024995 -vt 0.626649 0.024995 -vt 0.959679 0.255095 -vt 0.975171 0.270586 -vt 0.987342 0.288802 -vt 0.995726 0.309043 -vt 1.000000 0.330530 -vt 1.000000 0.352438 -vt 0.995726 0.373925 -vt 0.987342 0.394165 -vt 0.975171 0.412381 -vt 0.959679 0.427872 -vt 0.941463 0.440044 -vt 0.921223 0.448428 -vt 0.899736 0.452702 -vt 0.877828 0.452702 -vt 0.856341 0.448428 -vt 0.836101 0.440044 -vt 0.817885 0.427872 -vt 0.802393 0.412381 -vt 0.790222 0.394165 -vt 0.781838 0.373925 -vt 0.777564 0.352438 -vt 0.777564 0.330530 -vt 0.781838 0.309043 -vt 0.790222 0.288802 -vt 0.802393 0.270586 -vt 0.817885 0.255095 -vt 0.836101 0.242924 -vt 0.856341 0.234540 -vt 0.877828 0.230266 -vt 0.899736 0.230266 -vt 0.921223 0.234540 -vt 0.941464 0.242924 -s 1 -usemtl Material.001 -f 1/1/1 2/2/2 4/3/3 3/4/4 -f 3/4/4 4/3/3 6/5/5 5/6/6 -f 5/6/6 6/5/5 8/7/7 7/8/8 -f 7/8/8 8/7/7 10/9/9 9/10/10 -f 9/10/10 10/9/9 12/11/11 11/12/12 -f 11/12/12 12/11/11 14/13/13 13/14/14 -f 13/14/14 14/13/13 16/15/15 15/16/16 -f 15/16/16 16/15/15 18/17/17 17/18/18 -f 17/18/18 18/17/17 20/19/19 19/20/20 -f 19/20/20 20/19/19 22/21/21 21/22/22 -f 21/22/22 22/21/21 24/23/23 23/24/24 -f 23/24/24 24/23/23 26/25/25 25/26/26 -f 25/26/26 26/25/25 28/27/27 27/28/28 -f 27/28/28 28/27/27 30/29/29 29/30/30 -f 29/30/30 30/29/29 32/31/31 31/32/32 -f 31/32/32 32/31/31 34/33/33 33/34/34 -f 33/34/34 34/33/33 36/35/35 35/36/36 -f 35/36/36 36/35/35 38/37/37 37/38/38 -f 37/38/38 38/37/37 40/39/39 39/40/40 -f 39/40/40 40/39/39 42/41/41 41/42/42 -f 41/42/42 42/41/41 44/43/43 43/44/44 -f 43/44/44 44/43/43 46/45/45 45/46/46 -f 45/46/46 46/45/45 48/47/47 47/48/48 -f 47/48/48 48/47/47 50/49/49 49/50/50 -f 49/50/50 50/49/49 52/51/51 51/52/52 -f 51/52/52 52/51/51 54/53/53 53/54/54 -f 53/54/54 54/53/53 56/55/55 55/56/56 -f 55/56/56 56/55/55 58/57/57 57/58/58 -f 57/58/58 58/57/57 60/59/59 59/60/60 -f 59/60/60 60/59/59 62/61/61 61/62/62 -f 22/21/21 20/19/19 74/63/63 75/64/64 -f 61/62/62 62/61/61 64/65/65 63/66/66 -f 63/66/66 64/65/65 2/67/2 1/68/1 -f 13/14/67 15/16/68 264/69/68 263/70/67 -f 91/71/69 90/72/70 189/73/70 130/74/69 -f 40/39/39 38/37/37 83/75/71 84/76/72 -f 58/57/57 56/55/55 92/77/73 93/78/74 -f 14/13/13 12/11/11 70/79/75 71/80/76 -f 32/31/31 30/29/29 79/81/77 80/82/78 -f 50/49/49 48/47/47 88/83/79 89/84/80 -f 6/5/5 4/3/3 65/85/81 67/86/82 -f 24/23/23 22/21/21 75/64/64 76/87/83 -f 42/41/41 40/39/39 84/76/72 85/88/84 -f 60/59/59 58/57/57 93/78/74 94/89/85 -f 16/15/15 14/13/13 71/80/76 72/90/86 -f 34/33/33 32/31/31 80/82/78 81/91/87 -f 52/51/51 50/49/49 89/84/80 90/72/88 -f 8/7/7 6/5/5 67/86/82 68/92/89 -f 26/25/25 24/23/23 76/87/83 77/93/90 -f 44/43/43 42/41/41 85/88/84 86/94/91 -f 62/61/61 60/59/59 94/89/85 95/95/92 -f 18/17/17 16/15/15 72/90/86 73/96/93 -f 36/35/35 34/33/33 81/91/87 82/97/94 -f 54/53/53 52/51/51 90/72/88 91/71/95 -f 10/9/9 8/7/7 68/92/89 69/98/96 -f 28/27/27 26/25/25 77/93/90 78/99/97 -f 46/45/45 44/43/43 86/94/91 87/100/98 -f 64/65/65 62/61/61 95/95/92 96/101/99 -f 20/19/19 18/17/17 73/96/93 74/63/63 -f 38/37/37 36/35/35 82/97/94 83/75/71 -f 56/55/55 54/53/53 91/71/95 92/77/73 -f 12/11/11 10/9/9 69/98/96 70/79/75 -f 30/29/29 28/27/27 78/99/97 79/81/77 -f 48/47/47 46/45/45 87/100/98 88/83/79 -f 4/3/3 2/2/2 66/102/100 65/85/81 -f 2/67/2 64/65/65 96/101/99 66/103/100 -f 117/104/10 116/105/8 244/106/8 245/107/10 -f 78/99/101 77/93/102 191/108/102 134/109/101 -f 66/103/103 96/101/104 159/110/104 138/111/103 -f 133/112/105 192/113/106 205/114/106 206/115/105 -f 137/116/107 160/117/108 224/118/108 194/119/107 -f 94/89/109 93/78/110 141/120/110 147/121/109 -f 81/91/111 80/82/112 143/122/112 149/123/111 -f 68/92/113 67/86/114 145/124/114 151/125/113 -f 95/95/115 94/89/109 147/121/109 153/126/115 -f 82/97/116 81/91/111 149/123/111 155/127/116 -f 69/98/117 68/92/113 151/125/113 157/128/117 -f 96/101/104 95/95/115 153/126/115 159/110/104 -f 83/75/118 82/97/116 155/127/116 161/129/118 -f 70/79/119 69/98/117 157/128/117 163/130/119 -f 84/76/120 83/75/118 161/129/118 165/131/120 -f 65/85/121 66/102/103 138/132/103 139/133/121 -f 71/80/122 70/79/119 163/130/119 167/134/122 -f 85/88/123 84/76/120 165/131/120 169/135/123 -f 72/90/124 71/80/122 167/134/122 171/136/124 -f 86/94/125 85/88/123 169/135/123 173/137/125 -f 73/96/126 72/90/124 171/136/124 175/138/126 -f 87/100/127 86/94/125 173/137/125 177/139/127 -f 74/63/128 73/96/126 175/138/126 179/140/128 -f 88/83/129 87/100/127 177/139/127 181/141/129 -f 75/64/130 74/63/128 179/140/128 183/142/130 -f 89/84/131 88/83/129 181/141/129 185/143/131 -f 76/87/132 75/64/130 183/142/130 187/144/132 -f 90/72/70 89/84/131 185/143/131 189/73/70 -f 77/93/102 76/87/132 187/144/132 191/108/102 -f 92/77/133 91/71/69 130/74/69 131/145/133 -f 79/81/134 78/99/101 134/109/101 135/146/134 -f 80/82/112 79/81/134 135/146/134 143/122/112 -f 93/78/110 92/77/133 131/145/133 141/120/110 -f 192/113/106 188/147/135 204/148/135 205/114/106 -f 190/149/136 186/150/137 217/151/137 218/152/136 -f 188/147/135 184/153/138 203/154/138 204/148/135 -f 186/150/137 182/155/139 216/156/139 217/151/137 -f 184/153/138 180/157/140 202/158/140 203/154/138 -f 182/155/139 178/159/141 215/160/141 216/156/139 -f 180/157/140 176/161/142 201/162/142 202/158/140 -f 178/159/141 174/163/143 214/164/143 215/160/141 -f 176/161/142 172/165/144 200/166/144 201/162/142 -f 174/163/143 170/167/145 213/104/145 214/164/143 -f 172/165/144 168/168/146 199/169/146 200/166/144 -f 170/167/145 166/170/147 212/105/147 213/104/145 -f 168/168/146 164/171/148 198/172/148 199/169/146 -f 166/170/147 162/173/149 211/174/149 212/105/147 -f 67/86/114 65/85/121 139/133/121 145/124/114 -f 164/171/148 158/175/150 197/176/150 198/172/148 -f 162/173/149 156/177/151 210/178/151 211/174/149 -f 160/117/108 154/179/152 223/180/152 224/118/108 -f 158/175/150 152/181/153 196/182/153 197/176/150 -f 156/177/151 150/183/154 209/184/154 210/178/151 -f 154/179/152 148/185/155 222/186/155 223/180/152 -f 152/181/153 146/187/156 195/188/156 196/182/153 -f 150/183/154 144/189/157 208/190/157 209/184/154 -f 148/185/155 142/191/158 221/192/158 222/186/155 -f 146/187/156 140/193/159 193/194/159 195/188/156 -f 144/189/157 136/195/160 207/196/160 208/190/157 -f 142/191/158 132/197/161 220/198/161 221/192/158 -f 140/193/159 137/199/107 194/200/107 193/194/159 -f 136/195/160 133/112/105 206/115/105 207/196/160 -f 132/197/161 129/201/162 219/202/162 220/198/161 -f 192/113/26 133/112/28 134/109/28 191/108/26 -f 190/149/52 129/201/54 130/74/54 189/73/52 -f 188/147/24 192/113/26 191/108/26 187/144/24 -f 186/150/50 190/149/52 189/73/52 185/143/50 -f 184/153/22 188/147/24 187/144/24 183/142/22 -f 182/155/48 186/150/50 185/143/50 181/141/48 -f 180/157/20 184/153/22 183/142/22 179/140/20 -f 178/159/46 182/155/48 181/141/48 177/139/46 -f 176/161/18 180/157/20 179/140/20 175/138/18 -f 174/163/44 178/159/46 177/139/46 173/137/44 -f 172/165/16 176/161/18 175/138/18 171/136/16 -f 170/167/42 174/163/44 173/137/44 169/135/42 -f 168/168/14 172/165/16 171/136/16 167/134/14 -f 166/170/40 170/167/42 169/135/42 165/131/40 -f 164/171/12 168/168/14 167/134/14 163/130/12 -f 162/173/38 166/170/40 165/131/40 161/129/38 -f 160/117/66 137/116/1 138/111/1 159/110/66 -f 158/175/10 164/171/12 163/130/12 157/128/10 -f 156/177/36 162/173/38 161/129/38 155/127/36 -f 154/179/62 160/117/66 159/110/66 153/126/62 -f 152/181/8 158/175/10 157/128/10 151/125/8 -f 150/183/34 156/177/36 155/127/36 149/123/34 -f 148/185/60 154/179/62 153/126/62 147/121/60 -f 146/187/6 152/181/8 151/125/8 145/124/6 -f 144/189/32 150/183/34 149/123/34 143/122/32 -f 142/191/58 148/185/60 147/121/60 141/120/58 -f 140/193/4 146/187/6 145/124/6 139/133/4 -f 136/195/30 144/189/32 143/122/32 135/146/30 -f 132/197/56 142/191/58 141/120/58 131/145/56 -f 137/199/1 140/193/4 139/133/4 138/132/1 -f 133/112/28 136/195/30 135/146/30 134/109/28 -f 129/201/54 132/197/56 131/145/56 130/74/54 -f 129/201/162 190/149/136 218/152/136 219/202/162 -f 98/200/163 97/194/163 193/194/163 194/200/163 -f 97/194/163 99/188/163 195/188/163 193/194/163 -f 99/188/163 100/182/163 196/182/163 195/188/163 -f 100/182/163 101/176/163 197/176/163 196/182/163 -f 101/176/163 102/172/163 198/172/163 197/176/163 -f 102/172/163 103/169/163 199/169/163 198/172/163 -f 103/169/163 104/166/163 200/166/163 199/169/163 -f 104/166/163 105/162/163 201/162/163 200/166/163 -f 105/162/163 106/158/163 202/158/163 201/162/163 -f 106/158/163 107/154/163 203/154/163 202/158/163 -f 107/154/163 108/148/163 204/148/163 203/154/163 -f 108/148/163 109/114/163 205/114/163 204/148/163 -f 109/114/163 110/115/163 206/115/163 205/114/163 -f 110/115/163 111/196/163 207/196/163 206/115/163 -f 111/196/163 112/190/163 208/190/163 207/196/163 -f 112/190/163 113/184/163 209/184/163 208/190/163 -f 113/184/163 114/178/163 210/178/163 209/184/163 -f 114/178/163 115/174/163 211/174/163 210/178/163 -f 115/174/163 116/105/163 212/105/163 211/174/163 -f 116/105/163 117/104/163 213/104/163 212/105/163 -f 117/104/163 118/164/163 214/164/163 213/104/163 -f 118/164/163 119/160/163 215/160/163 214/164/163 -f 119/160/163 120/156/163 216/156/163 215/160/163 -f 120/156/163 121/151/163 217/151/163 216/156/163 -f 121/151/163 122/152/163 218/152/163 217/151/163 -f 122/152/163 123/202/163 219/202/163 218/152/163 -f 123/202/163 124/198/163 220/198/163 219/202/163 -f 124/198/163 125/192/163 221/192/163 220/198/163 -f 125/192/163 126/186/163 222/186/163 221/192/163 -f 126/186/163 127/180/163 223/180/163 222/186/163 -f 127/180/163 128/118/163 224/118/163 223/180/163 -f 128/118/163 98/119/163 194/119/163 224/118/163 -f 245/107/42 244/106/40 468/106/40 469/107/42 -f 104/166/48 103/169/46 231/203/46 232/204/48 -f 118/164/12 117/104/10 245/107/10 246/205/12 -f 105/162/50 104/166/48 232/204/48 233/206/50 -f 119/160/14 118/164/12 246/205/12 247/207/14 -f 106/158/52 105/162/50 233/206/50 234/208/52 -f 120/156/16 119/160/14 247/207/14 248/209/16 -f 107/154/54 106/158/52 234/208/52 235/210/54 -f 121/151/18 120/156/16 248/209/16 249/211/18 -f 108/148/56 107/154/54 235/210/54 236/212/56 -f 122/152/20 121/151/18 249/211/18 250/213/20 -f 109/114/58 108/148/56 236/212/56 237/214/58 -f 123/202/22 122/152/20 250/213/20 251/215/22 -f 110/115/60 109/114/58 237/214/58 238/216/60 -f 124/198/24 123/202/22 251/215/22 252/217/24 -f 111/196/62 110/115/60 238/216/60 239/218/62 -f 97/194/36 98/200/34 226/219/34 225/220/36 -f 125/192/26 124/198/24 252/217/24 253/221/26 -f 112/190/66 111/196/62 239/218/62 240/222/66 -f 99/188/38 97/194/36 225/220/36 227/223/38 -f 126/186/28 125/192/26 253/221/26 254/224/28 -f 113/184/1 112/190/66 240/222/66 241/225/1 -f 100/182/40 99/188/38 227/223/38 228/226/40 -f 127/180/30 126/186/28 254/224/28 255/227/30 -f 114/178/4 113/184/1 241/225/1 242/228/4 -f 101/176/42 100/182/40 228/226/40 229/229/42 -f 128/118/32 127/180/30 255/227/30 256/230/32 -f 115/174/6 114/178/4 242/228/4 243/231/6 -f 102/172/44 101/176/42 229/229/42 230/232/44 -f 98/119/34 128/118/32 256/230/32 226/233/34 -f 116/105/8 115/174/6 243/231/6 244/106/8 -f 103/169/46 102/172/44 230/232/44 231/203/46 -f 279/234/164 280/235/165 330/236/166 322/237/167 -f 31/32/168 33/34/169 273/238/169 272/239/168 -f 49/50/170 51/52/171 282/240/171 281/241/170 -f 5/6/172 7/8/173 260/242/173 259/243/172 -f 23/24/174 25/26/175 269/244/175 268/245/174 -f 41/42/176 43/44/177 278/246/177 277/247/176 -f 59/60/178 61/62/179 287/248/179 286/249/178 -f 15/16/68 17/18/180 265/250/180 264/69/68 -f 33/34/169 35/36/181 274/251/181 273/238/169 -f 51/52/171 53/54/182 283/252/182 282/240/171 -f 7/8/173 9/10/183 261/253/183 260/242/173 -f 25/26/175 27/28/184 270/254/184 269/244/175 -f 43/44/177 45/46/185 279/234/185 278/246/177 -f 61/62/179 63/66/186 288/255/186 287/248/179 -f 17/18/180 19/20/187 266/256/187 265/250/180 -f 35/36/181 37/38/188 275/257/188 274/251/181 -f 53/54/182 55/56/189 284/258/189 283/252/182 -f 9/10/183 11/12/190 262/259/190 261/253/183 -f 27/28/184 29/30/191 271/260/191 270/254/184 -f 45/46/185 47/48/192 280/235/192 279/234/185 -f 1/1/193 3/4/194 258/261/194 257/262/193 -f 63/66/186 1/68/193 257/263/193 288/255/186 -f 19/20/187 21/22/195 267/264/195 266/256/187 -f 37/38/188 39/40/196 276/265/196 275/257/188 -f 55/56/189 57/58/197 285/266/197 284/258/189 -f 11/12/190 13/14/67 263/70/67 262/259/190 -f 29/30/191 31/32/168 272/239/168 271/260/191 -f 47/48/192 49/50/170 281/241/170 280/235/192 -f 3/4/194 5/6/172 259/243/172 258/261/194 -f 21/22/195 23/24/174 268/245/174 267/264/195 -f 39/40/196 41/42/176 277/247/176 276/265/196 -f 57/58/197 59/60/178 286/249/178 285/266/197 -f 309/267/198 310/268/199 438/269/199 437/270/198 -f 266/256/200 267/264/201 332/271/202 326/272/203 -f 278/246/204 279/234/164 322/237/167 323/273/205 -f 265/250/206 266/256/200 326/272/203 327/274/207 -f 280/235/165 281/241/208 334/275/209 330/236/166 -f 267/264/201 268/245/210 336/276/211 332/271/202 -f 281/241/208 282/240/212 338/277/213 334/275/209 -f 268/245/210 269/244/214 340/278/215 336/276/211 -f 282/240/212 283/252/216 342/279/217 338/277/213 -f 269/244/214 270/254/218 344/280/219 340/278/215 -f 283/252/216 284/258/220 346/281/221 342/279/217 -f 270/254/218 271/260/222 348/282/223 344/280/219 -f 258/261/224 259/243/225 358/283/226 350/284/227 -f 284/258/220 285/266/228 354/285/229 346/281/221 -f 271/260/222 272/239/230 356/286/231 348/282/223 -f 257/262/232 258/261/224 350/284/227 351/287/233 -f 285/266/228 286/249/234 360/288/235 354/285/229 -f 272/239/230 273/238/236 362/289/237 356/286/231 -f 259/243/225 260/242/238 364/290/239 358/283/226 -f 286/249/234 287/248/240 366/291/241 360/288/235 -f 273/238/236 274/251/242 368/292/243 362/289/237 -f 260/242/238 261/253/244 370/293/245 364/290/239 -f 287/248/240 288/255/246 372/294/247 366/291/241 -f 274/251/242 275/257/248 374/295/249 368/292/243 -f 261/253/244 262/259/250 376/296/251 370/293/245 -f 353/297/252 359/298/253 414/299/254 413/300/255 -f 275/257/248 276/265/256 378/301/257 374/295/249 -f 262/259/250 263/70/258 380/302/259 376/296/251 -f 276/265/256 277/247/260 382/303/261 378/301/257 -f 263/70/258 264/69/262 384/304/263 380/302/259 -f 325/305/264 331/306/265 395/307/266 394/308/267 -f 329/309/268 333/310/269 409/311/270 408/312/271 -f 383/313/272 328/314/273 393/315/274 392/316/275 -f 381/317/276 324/318/277 406/268/278 405/267/279 -f 379/319/280 383/313/272 392/316/275 391/320/281 -f 377/321/282 381/317/276 405/267/279 404/322/283 -f 375/323/284 379/319/280 391/320/281 390/324/285 -f 371/325/286 352/326/287 385/327/288 416/328/289 -f 373/329/290 377/321/282 404/322/283 403/330/291 -f 369/331/292 375/323/284 390/324/285 389/332/293 -f 367/333/294 373/329/290 403/330/291 402/334/295 -f 365/335/296 371/325/286 416/328/289 415/336/297 -f 363/337/298 369/331/292 389/332/293 388/338/299 -f 361/339/300 367/333/294 402/334/295 401/340/301 -f 359/298/253 365/335/296 415/336/297 414/299/254 -f 357/341/302 363/337/298 388/338/299 387/342/303 -f 355/343/304 361/339/300 401/340/301 400/344/305 -f 288/255/246 257/263/232 351/345/233 372/294/247 -f 349/346/306 357/341/302 387/342/303 386/347/307 -f 347/348/308 355/343/304 400/344/305 399/349/309 -f 352/350/287 349/346/306 386/347/307 385/351/288 -f 345/352/310 353/297/252 413/300/255 412/353/311 -f 343/354/312 347/348/308 399/349/309 398/355/313 -f 341/356/314 345/352/310 412/353/311 411/357/315 -f 339/358/316 343/354/312 398/355/313 397/359/317 -f 337/360/318 341/356/314 411/357/315 410/361/319 -f 335/362/320 339/358/316 397/359/317 396/363/321 -f 333/310/269 337/360/318 410/361/319 409/311/270 -f 331/306/265 335/362/320 396/363/321 395/307/266 -f 264/69/262 265/250/206 327/274/207 384/304/263 -f 277/247/260 278/246/204 323/273/205 382/303/261 -f 328/314/273 325/305/264 394/308/267 393/315/274 -f 324/318/277 321/364/322 407/365/323 406/268/278 -f 328/314/273 383/313/272 384/304/263 327/274/207 -f 324/318/277 381/317/276 382/303/261 323/273/205 -f 383/313/272 379/319/280 380/302/259 384/304/263 -f 381/317/276 377/321/282 378/301/257 382/303/261 -f 379/319/280 375/323/284 376/296/251 380/302/259 -f 377/321/282 373/329/290 374/295/249 378/301/257 -f 352/326/287 371/325/286 372/294/247 351/345/233 -f 375/323/284 369/331/292 370/293/245 376/296/251 -f 373/329/290 367/333/294 368/292/243 374/295/249 -f 371/325/286 365/335/296 366/291/241 372/294/247 -f 369/331/292 363/337/298 364/290/239 370/293/245 -f 367/333/294 361/339/300 362/289/237 368/292/243 -f 365/335/296 359/298/253 360/288/235 366/291/241 -f 363/337/298 357/341/302 358/283/226 364/290/239 -f 361/339/300 355/343/304 356/286/231 362/289/237 -f 359/298/253 353/297/252 354/285/229 360/288/235 -f 357/341/302 349/346/306 350/284/227 358/283/226 -f 355/343/304 347/348/308 348/282/223 356/286/231 -f 353/297/252 345/352/310 346/281/221 354/285/229 -f 349/346/306 352/350/287 351/287/233 350/284/227 -f 347/348/308 343/354/312 344/280/219 348/282/223 -f 345/352/310 341/356/314 342/279/217 346/281/221 -f 343/354/312 339/358/316 340/278/215 344/280/219 -f 341/356/314 337/360/318 338/277/213 342/279/217 -f 339/358/316 335/362/320 336/276/211 340/278/215 -f 337/360/318 333/310/269 334/275/209 338/277/213 -f 335/362/320 331/306/265 332/271/202 336/276/211 -f 333/310/269 329/309/268 330/236/166 334/275/209 -f 331/306/265 325/305/264 326/272/203 332/271/202 -f 329/309/268 321/364/322 322/237/167 330/236/166 -f 325/305/264 328/314/273 327/274/207 326/272/203 -f 321/364/322 324/318/277 323/273/205 322/237/167 -f 321/364/322 329/309/268 408/312/271 407/365/323 -f 290/347/324 289/351/324 385/351/324 386/347/324 -f 291/342/324 290/347/324 386/347/324 387/342/324 -f 292/338/324 291/342/324 387/342/324 388/338/324 -f 293/332/324 292/338/324 388/338/324 389/332/324 -f 294/324/324 293/332/324 389/332/324 390/324/324 -f 295/320/324 294/324/324 390/324/324 391/320/324 -f 296/316/324 295/320/324 391/320/324 392/316/324 -f 297/315/324 296/316/324 392/316/324 393/315/324 -f 298/308/324 297/315/324 393/315/324 394/308/324 -f 299/307/324 298/308/324 394/308/324 395/307/324 -f 300/363/324 299/307/324 395/307/324 396/363/324 -f 301/359/324 300/363/324 396/363/324 397/359/324 -f 302/355/324 301/359/324 397/359/324 398/355/324 -f 303/349/324 302/355/324 398/355/324 399/349/324 -f 304/344/324 303/349/324 399/349/324 400/344/324 -f 305/340/324 304/344/324 400/344/324 401/340/324 -f 306/334/324 305/340/324 401/340/324 402/334/324 -f 307/330/324 306/334/324 402/334/324 403/330/324 -f 308/366/324 307/330/324 403/330/324 404/322/324 -f 309/267/324 308/366/324 404/322/324 405/267/324 -f 310/268/324 309/267/324 405/267/324 406/268/324 -f 311/365/324 310/268/324 406/268/324 407/365/324 -f 312/312/324 311/365/324 407/365/324 408/312/324 -f 313/311/324 312/312/324 408/312/324 409/311/324 -f 314/361/324 313/311/324 409/311/324 410/361/324 -f 315/357/324 314/361/324 410/361/324 411/357/324 -f 316/353/324 315/357/324 411/357/324 412/353/324 -f 317/300/324 316/353/324 412/353/324 413/300/324 -f 318/299/324 317/300/324 413/300/324 414/299/324 -f 319/336/324 318/299/324 414/299/324 415/336/324 -f 320/328/324 319/336/324 415/336/324 416/328/324 -f 289/327/324 320/328/324 416/328/324 385/327/324 -f 417/367/324 418/368/324 419/369/324 420/370/324 421/371/324 422/372/324 423/373/324 424/374/324 425/375/324 426/376/324 427/377/324 428/378/324 429/379/324 430/380/324 431/381/324 432/382/324 433/383/324 434/384/324 435/385/324 436/386/324 437/387/324 438/388/324 439/389/324 440/390/324 441/391/324 442/392/324 443/393/324 444/394/324 445/395/324 446/396/324 447/397/324 448/398/324 -f 296/316/325 297/315/326 425/399/326 424/400/325 -f 310/268/199 311/365/327 439/401/327 438/269/199 -f 297/315/326 298/308/328 426/402/328 425/399/326 -f 311/365/327 312/312/329 440/403/329 439/401/327 -f 298/308/328 299/307/330 427/404/330 426/402/328 -f 312/312/329 313/311/331 441/405/331 440/403/329 -f 299/307/330 300/363/332 428/406/332 427/404/330 -f 313/311/331 314/361/333 442/407/333 441/405/331 -f 300/363/332 301/359/334 429/408/334 428/406/332 -f 314/361/333 315/357/335 443/409/335 442/407/333 -f 301/359/334 302/355/336 430/410/336 429/408/334 -f 315/357/335 316/353/337 444/411/337 443/409/335 -f 302/355/336 303/349/338 431/412/338 430/410/336 -f 289/351/339 290/347/340 418/413/340 417/414/339 -f 316/353/337 317/300/341 445/415/341 444/411/337 -f 303/349/338 304/344/342 432/416/342 431/412/338 -f 290/347/340 291/342/343 419/417/343 418/413/340 -f 317/300/341 318/299/344 446/418/344 445/415/341 -f 304/344/342 305/340/345 433/419/345 432/416/342 -f 291/342/343 292/338/346 420/420/346 419/417/343 -f 318/299/344 319/336/347 447/421/347 446/418/344 -f 305/340/345 306/334/348 434/422/348 433/419/345 -f 292/338/346 293/332/349 421/423/349 420/420/346 -f 319/336/347 320/328/350 448/424/350 447/421/347 -f 306/334/348 307/330/351 435/425/351 434/422/348 -f 293/332/349 294/324/352 422/426/352 421/423/349 -f 320/328/350 289/327/339 417/427/339 448/424/350 -f 307/330/351 308/366/353 436/428/353 435/425/351 -f 294/324/352 295/320/354 423/429/354 422/426/352 -f 308/366/353 309/267/198 437/270/198 436/428/353 -f 295/320/354 296/316/325 424/400/325 423/429/354 -f 449/430/163 450/431/163 480/432/163 479/433/163 478/434/163 477/435/163 476/436/163 475/437/163 474/438/163 473/439/163 472/440/163 471/441/163 470/442/163 469/443/163 468/444/163 467/445/163 466/446/163 465/447/163 464/448/163 463/449/163 462/450/163 461/451/163 460/452/163 459/453/163 458/454/163 457/455/163 456/456/163 455/457/163 454/458/163 453/459/163 452/460/163 451/461/163 -f 232/204/16 231/203/14 455/203/14 456/204/16 -f 246/205/44 245/107/42 469/107/42 470/205/44 -f 233/206/18 232/204/16 456/204/16 457/206/18 -f 247/207/46 246/205/44 470/205/44 471/207/46 -f 234/208/20 233/206/18 457/206/18 458/208/20 -f 248/209/48 247/207/46 471/207/46 472/209/48 -f 235/210/22 234/208/20 458/208/20 459/210/22 -f 249/211/50 248/209/48 472/209/48 473/211/50 -f 236/212/24 235/210/22 459/210/22 460/212/24 -f 250/213/52 249/211/50 473/211/50 474/213/52 -f 237/214/26 236/212/24 460/212/24 461/214/26 -f 251/215/54 250/213/52 474/213/52 475/215/54 -f 238/216/28 237/214/26 461/214/26 462/216/28 -f 252/217/56 251/215/54 475/215/54 476/217/56 -f 239/218/30 238/216/28 462/216/28 463/218/30 -f 225/220/4 226/219/1 450/219/1 449/220/4 -f 253/221/58 252/217/56 476/217/56 477/221/58 -f 240/222/32 239/218/30 463/218/30 464/222/32 -f 227/223/6 225/220/4 449/220/4 451/223/6 -f 254/224/60 253/221/58 477/221/58 478/224/60 -f 241/225/34 240/222/32 464/222/32 465/225/34 -f 228/226/8 227/223/6 451/223/6 452/226/8 -f 255/227/62 254/224/60 478/224/60 479/227/62 -f 242/228/36 241/225/34 465/225/34 466/228/36 -f 229/229/10 228/226/8 452/226/8 453/229/10 -f 256/230/66 255/227/62 479/227/62 480/230/66 -f 243/231/38 242/228/36 466/228/36 467/231/38 -f 230/232/12 229/229/10 453/229/10 454/232/12 -f 226/233/1 256/230/66 480/230/66 450/233/1 -f 244/106/40 243/231/38 467/231/38 468/106/40 -f 231/203/14 230/232/12 454/232/12 455/203/14 diff --git a/assets/textures/tescoPiwoNormal.png b/assets/textures/tescoPiwoNormal.png deleted file mode 100644 index 1192b94..0000000 Binary files a/assets/textures/tescoPiwoNormal.png and /dev/null differ diff --git a/assets/textures/tescoPiwoTexture.png b/assets/textures/tescoPiwoTexture.png deleted file mode 100644 index fa252f1..0000000 Binary files a/assets/textures/tescoPiwoTexture.png and /dev/null differ diff --git a/build.zig b/build.zig index 2090664..0a72756 100644 --- a/build.zig +++ b/build.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const sdl = @import("sdl"); -const vkgen = @import("vulkan"); +const sdl = @import("libs/sdl/build.zig"); +const vkgen = @import("vulkan_zig"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); @@ -20,7 +20,7 @@ pub fn build(b: *std.Build) void { // --- Dependencies --- // Vulkan - const vkzig_dep = b.dependency("vulkan", .{ + const vkzig_dep = b.dependency("vulkan_zig", .{ .registry = @as([]const u8, b.pathFromRoot("./vk.xml")), }); const vkzig_bindings = vkzig_dep.module("vulkan-zig"); @@ -28,18 +28,15 @@ pub fn build(b: *std.Build) void { const shader_comp = vkgen.ShaderCompileStep.create( b, - .{ .real_path = "glslc" }, - &[_][]const u8{"--target-env=vulkan1.3"}, + &[_][]const u8{ "glslc", "--target-env=vulkan1.3" }, "-o", ); shader_comp.add("shader_frag", "src/shaders/shader.frag", .{}); shader_comp.add("shader_vert", "src/shaders/shader.vert", .{}); - shader_comp.add("second_frag", "src/shaders/second.frag", .{}); - shader_comp.add("second_vert", "src/shaders/second.vert", .{}); exe.root_module.addImport("shaders", shader_comp.getModule()); // SDL2 - const sdl_sdk = sdl.init(b, .{}); + const sdl_sdk = sdl.init(b, null, null); sdl_sdk.link(exe, .dynamic, sdl.Library.SDL2); exe.root_module.addImport("sdl2", sdl_sdk.getWrapperModuleVulkan(vkzig_bindings)); diff --git a/build.zig.zon b/build.zig.zon index bd0d9d0..bf20cb5 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -6,10 +6,9 @@ .dependencies = .{ .zmath = .{ .path = "libs/zmath" }, .zstbi = .{ .path = "libs/zstbi" }, - .sdl = .{ .path = "libs/sdl" }, - .vulkan = .{ - .url = "https://github.com/Snektron/vulkan-zig/archive/f7b21d034f527765f62935de1b62855033621989.tar.gz", - .hash = "12201e484e173e70634e664864763223427703e677f28c63ebec9332513c8ca5121c", + .vulkan_zig = .{ + .url = "https://github.com/Snektron/vulkan-zig/archive/9f6e6177b1fdb3ed22231d9216a24480e84cfa5e.tar.gz", + .hash = "1220f2961df224f7d35dee774b26194b8b937cc252fa8e4023407776c58521d53e38", }, .obj = .{ .url = "https://github.com/chip2n/zig-obj/archive/58f524ed6834790b29ac1e97b2f9e6b7de7b5346.tar.gz", diff --git a/libs/sdl b/libs/sdl index 172a84e..9663dc7 160000 --- a/libs/sdl +++ b/libs/sdl @@ -1 +1 @@ -Subproject commit 172a84e7b5ce7d4891b8b970c68f4532f96aa7e9 +Subproject commit 9663dc70c19b13afcb4b9f596c928d7b2838e548 diff --git a/libs/zmath/src/zmath.zig b/libs/zmath/src/zmath.zig index 782a3d1..e38eebf 100644 --- a/libs/zmath/src/zmath.zig +++ b/libs/zmath/src/zmath.zig @@ -329,7 +329,7 @@ pub inline fn boolx16( // zig fmt: on pub inline fn veclen(comptime T: type) comptime_int { - return @typeInfo(T).vector.len; + return @typeInfo(T).Vector.len; } pub inline fn splat(comptime T: type, value: f32) T { @@ -413,14 +413,14 @@ pub inline fn storeArr4(arr: *[4]f32, v: F32x4) void { } pub inline fn arr3Ptr(ptr: anytype) *const [3]f32 { - comptime assert(@typeInfo(@TypeOf(ptr)) == .pointer); + comptime assert(@typeInfo(@TypeOf(ptr)) == .Pointer); const T = std.meta.Child(@TypeOf(ptr)); comptime assert(T == F32x4); return @as(*const [3]f32, @ptrCast(ptr)); } pub inline fn arrNPtr(ptr: anytype) [*]const f32 { - comptime assert(@typeInfo(@TypeOf(ptr)) == .pointer); + comptime assert(@typeInfo(@TypeOf(ptr)) == .Pointer); const T = std.meta.Child(@TypeOf(ptr)); comptime assert(T == Mat or T == F32x4 or T == F32x8 or T == F32x16); return @as([*]const f32, @ptrCast(ptr)); diff --git a/src/main.zig b/src/main.zig index 9855338..5937000 100644 --- a/src/main.zig +++ b/src/main.zig @@ -71,7 +71,7 @@ pub fn main() !void { var angle: f32 = 0.0; const move_speed: f32 = 1000; - const model_handle = try vulkan_renderer.createMeshModel("tescoPiwo.obj"); + const model_handle = try vulkan_renderer.createMeshModel("teapot.obj"); mainLoop: while (true) { while (sdl.pollEvent()) |ev| { diff --git a/src/shaders/second.frag b/src/shaders/second.frag deleted file mode 100644 index 7c98a5c..0000000 --- a/src/shaders/second.frag +++ /dev/null @@ -1,22 +0,0 @@ -#version 450 - -// Colour output from subpass 1 -layout(input_attachment_index = 0, binding = 0) uniform subpassInput inputColour; -// Depth output from subpass 1 -layout(input_attachment_index = 1, binding = 1) uniform subpassInput inputDepth; - -layout(location = 0) out vec4 colour; - -void main() { - int xHalf = 800 / 2; - if (gl_FragCoord.x > xHalf) { - float lowerBound = 0.98; - float upperBound = 1; - - float depth = subpassLoad(inputDepth).r; - float depthColourScaled = 1.0f - ((depth - lowerBound) / (upperBound - lowerBound)); - colour = vec4(subpassLoad(inputColour).rgb * depthColourScaled, 1.0f); - } else { - colour = subpassLoad(inputColour).rgba; - } -} diff --git a/src/shaders/second.vert b/src/shaders/second.vert deleted file mode 100644 index e9b3199..0000000 --- a/src/shaders/second.vert +++ /dev/null @@ -1,12 +0,0 @@ -#version 450 - -// Array for triangle that fills screen -vec2 positions[3] = vec2[]( - vec2(3.0, -1.0), - vec2(-1.0, -1.0), - vec2(-1.0, 3.0) -); - -void main() { - gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0); -} diff --git a/src/vulkan_renderer.zig b/src/vulkan_renderer.zig index 75eabd9..f58728a 100644 --- a/src/vulkan_renderer.zig +++ b/src/vulkan_renderer.zig @@ -82,26 +82,19 @@ pub const VulkanRenderer = struct { swapchain_framebuffers: []vk.Framebuffer, command_buffers: []CommandBuffer, - depth_buffer_image: []vk.Image, - depth_buffer_image_memory: []vk.DeviceMemory, - depth_buffer_image_view: []vk.ImageView, - - colour_buffer_image: []vk.Image, - colour_buffer_image_memory: []vk.DeviceMemory, - colour_buffer_image_view: []vk.ImageView, + depth_buffer_image: vk.Image, + depth_buffer_image_memory: vk.DeviceMemory, + depth_buffer_image_view: vk.ImageView, // Descriptors descriptor_set_layout: vk.DescriptorSetLayout, sampler_set_layout: vk.DescriptorSetLayout, - input_set_layout: vk.DescriptorSetLayout, push_constant_range: vk.PushConstantRange, descriptor_pool: vk.DescriptorPool, sampler_descriptor_pool: vk.DescriptorPool, - input_descriptor_pool: vk.DescriptorPool, descriptor_sets: []vk.DescriptorSet, sampler_descriptor_sets: std.ArrayList(vk.DescriptorSet), - input_descriptor_sets: []vk.DescriptorSet, vp_uniform_buffer: []vk.Buffer, vp_uniform_buffer_memory: []vk.DeviceMemory, @@ -116,10 +109,6 @@ pub const VulkanRenderer = struct { // Pipeline graphics_pipeline: vk.Pipeline, pipeline_layout: vk.PipelineLayout, - - second_pipeline: vk.Pipeline, - second_pipeline_layout: vk.PipelineLayout, - render_pass: vk.RenderPass, // Pools @@ -157,7 +146,6 @@ pub const VulkanRenderer = struct { try self.getPhysicalDevice(); try self.createLogicalDevice(); try self.createSwapchain(); - try self.createColourBufferImage(); try self.createDepthBufferImage(); try self.createRenderPass(); try self.createDescriptorSetLayout(); @@ -166,14 +154,12 @@ pub const VulkanRenderer = struct { try self.createFramebuffers(); try self.createCommandPool(); - self.sampler_descriptor_sets = try std.ArrayList(vk.DescriptorSet).initCapacity(self.allocator, self.swapchain_images.len); - try self.createCommandBuffers(); try self.createTextureSampler(); try self.createUniformBuffers(); try self.createDescriptorPool(); try self.createDescriptorSets(); - try self.createInputDescriptorSets(); + try self.createSynchronisation(); self.image_files = std.ArrayList(img.Image).init(self.allocator); @@ -181,6 +167,7 @@ pub const VulkanRenderer = struct { self.texture_image_memory = std.ArrayList(vk.DeviceMemory).init(self.allocator); self.texture_image_views = std.ArrayList(vk.ImageView).init(self.allocator); self.model_list = std.ArrayList(MeshModel).init(allocator); + self.sampler_descriptor_sets = std.ArrayList(vk.DescriptorSet).init(self.allocator); const aspect: f32 = @as(f32, @floatFromInt(self.extent.width)) / @as(f32, @floatFromInt(self.extent.height)); self.ubo_view_projection.projection = zm.perspectiveFovRh( @@ -302,34 +289,15 @@ pub const VulkanRenderer = struct { self.texture_image_memory.deinit(); self.texture_image_views.deinit(); - for (0..self.depth_buffer_image.len) |i| { - self.device.destroyImageView(self.depth_buffer_image_view[i], null); - self.device.destroyImage(self.depth_buffer_image[i], null); - self.device.freeMemory(self.depth_buffer_image_memory[i], null); - } + self.device.destroyImageView(self.depth_buffer_image_view, null); + self.device.destroyImage(self.depth_buffer_image, null); + self.device.freeMemory(self.depth_buffer_image_memory, null); - self.allocator.free(self.depth_buffer_image); - self.allocator.free(self.depth_buffer_image_memory); - self.allocator.free(self.depth_buffer_image_view); - - for (0..self.colour_buffer_image.len) |i| { - self.device.destroyImageView(self.colour_buffer_image_view[i], null); - self.device.destroyImage(self.colour_buffer_image[i], null); - self.device.freeMemory(self.colour_buffer_image_memory[i], null); - } - - self.allocator.free(self.colour_buffer_image); - self.allocator.free(self.colour_buffer_image_memory); - self.allocator.free(self.colour_buffer_image_view); - - self.device.destroyDescriptorPool(self.input_descriptor_pool, null); self.device.destroyDescriptorPool(self.descriptor_pool, null); self.device.destroyDescriptorSetLayout(self.descriptor_set_layout, null); self.device.destroyDescriptorPool(self.sampler_descriptor_pool, null); self.device.destroyDescriptorSetLayout(self.sampler_set_layout, null); - self.device.destroyDescriptorSetLayout(self.input_set_layout, null); self.sampler_descriptor_sets.deinit(); - self.allocator.free(self.input_descriptor_sets); for (0..self.swapchain_images.len) |i| { self.device.destroyBuffer(self.vp_uniform_buffer[i], null); @@ -354,8 +322,6 @@ pub const VulkanRenderer = struct { self.allocator.free(self.swapchain_framebuffers); - self.device.destroyPipeline(self.second_pipeline, null); - self.device.destroyPipelineLayout(self.second_pipeline_layout, null); self.device.destroyPipeline(self.graphics_pipeline, null); self.device.destroyPipelineLayout(self.pipeline_layout, null); self.device.destroyRenderPass(self.render_pass, null); @@ -557,65 +523,8 @@ pub const VulkanRenderer = struct { fn createRenderPass(self: *Self) !void { // -- Attachments -- - - var subpasses: [2]vk.SubpassDescription = undefined; - - // Subpass 1 attachments and references (input attachments) - - // Colour attachment (input) - const colour_format = chooseSupportedFormat( - self.physical_device, - self.instance, - &[_]vk.Format{.r8g8b8a8_srgb}, - .optimal, - .{ .color_attachment_bit = true }, - ); - const colour_attachment: vk.AttachmentDescription = .{ - .format = colour_format.?, - .samples = .{ .@"1_bit" = true }, - .load_op = .clear, - .store_op = .dont_care, - .stencil_load_op = .dont_care, - .stencil_store_op = .dont_care, - .initial_layout = .undefined, - .final_layout = .color_attachment_optimal, - }; - - // Depth attachment (input) - const depth_attachment: vk.AttachmentDescription = .{ - .format = self.depth_format, - .samples = .{ .@"1_bit" = true }, - .load_op = .clear, - .store_op = .dont_care, - .stencil_load_op = .dont_care, - .stencil_store_op = .dont_care, - .initial_layout = .undefined, - .final_layout = .depth_stencil_attachment_optimal, - }; - - // Colour attachment (input) reference - const colour_attachment_reference: vk.AttachmentReference = .{ - .attachment = 1, - .layout = .color_attachment_optimal, - }; - - // Depth attachment (input) reference - const depth_attachment_reference: vk.AttachmentReference = .{ - .attachment = 2, - .layout = .depth_stencil_attachment_optimal, - }; - - subpasses[0] = .{ - .pipeline_bind_point = .graphics, // Pipeline type subpass is to be bound to - .color_attachment_count = 1, - .p_color_attachments = @ptrCast(&colour_attachment_reference), - .p_depth_stencil_attachment = &depth_attachment_reference, - }; - - // Subpass 2 attachments and references - // Colour attachment of the render pass - const swapchain_colour_attachment: vk.AttachmentDescription = .{ + const colour_attachment: vk.AttachmentDescription = .{ .format = self.swapchain_image_format, // Format to use for attachment .samples = .{ .@"1_bit" = true }, // Number of samples to write for multisampling .load_op = .clear, // Describes what to do with attachment before rendering @@ -628,38 +537,42 @@ pub const VulkanRenderer = struct { .final_layout = vk.ImageLayout.present_src_khr, // Image data layout after render pass (to change to) }; + // Depth attachment of render pass + const depth_attachment: vk.AttachmentDescription = .{ + .format = self.depth_format, + .samples = .{ .@"1_bit" = true }, + .load_op = .clear, + .store_op = .dont_care, + .stencil_load_op = .dont_care, + .stencil_store_op = .dont_care, + .initial_layout = .undefined, + .final_layout = .depth_stencil_attachment_optimal, + }; + + // -- References -- // Attachment reference uses an attachment index that refers to index in the attachment list passed to render pass create info - const swapchain_colour_attachment_reference: vk.AttachmentReference = .{ + const colour_attachment_reference: vk.AttachmentReference = .{ .attachment = 0, .layout = vk.ImageLayout.color_attachment_optimal, }; - // References to attachments that subpass will take input from - const input_references = [_]vk.AttachmentReference{ - .{ - .attachment = 1, // Colour attachment - .layout = .shader_read_only_optimal, - }, - .{ - .attachment = 2, // Depth attachment - .layout = .shader_read_only_optimal, - }, + const depth_attachment_reference: vk.AttachmentReference = .{ + .attachment = 1, + .layout = vk.ImageLayout.depth_stencil_attachment_optimal, }; - subpasses[1] = .{ - .pipeline_bind_point = .graphics, + // Information about a particular subpass the render pass is using + const subpass: vk.SubpassDescription = .{ + .pipeline_bind_point = .graphics, // Pipeline type subpass is to be bound to .color_attachment_count = 1, - .p_color_attachments = @ptrCast(&swapchain_colour_attachment_reference), - .input_attachment_count = @intCast(input_references.len), - .p_input_attachments = &input_references, + .p_color_attachments = @ptrCast(&colour_attachment_reference), + .p_depth_stencil_attachment = &depth_attachment_reference, }; - // -- Subpass dependencies - // Need to determine when layout transitions occur using subpass dependencies - const subpass_dependencies = [_]vk.SubpassDependency{ + const subpass_dependencies = [2]vk.SubpassDependency{ // Conversion from VK_IMAGE_LAYOUT_UNDEFINED to VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL - .{ + vk.SubpassDependency{ // Transition must happen after... .src_subpass = vk.SUBPASS_EXTERNAL, // Subpass index (VK_SUBPASS_EXTERNAL = outside of renderpass) .src_stage_mask = .{ .bottom_of_pipe_bit = true }, // Pipeline stage @@ -669,17 +582,8 @@ pub const VulkanRenderer = struct { .dst_stage_mask = .{ .color_attachment_output_bit = true }, .dst_access_mask = .{ .color_attachment_read_bit = true, .color_attachment_write_bit = true }, }, - // Subpass 1 layout (colour/depth) to subpass 2 layout (shader read) - .{ - .src_subpass = 0, - .src_stage_mask = .{ .color_attachment_output_bit = true }, - .src_access_mask = .{ .color_attachment_write_bit = true }, - .dst_subpass = 1, - .dst_stage_mask = .{ .fragment_shader_bit = true }, - .dst_access_mask = .{ .shader_read_bit = true }, - }, // Conversion from VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR - .{ + vk.SubpassDependency{ // Transition must happen after... .src_subpass = 0, .src_stage_mask = .{ .color_attachment_output_bit = true }, @@ -692,13 +596,13 @@ pub const VulkanRenderer = struct { }; // Order matters - const render_pass_attachments = [_]vk.AttachmentDescription{ swapchain_colour_attachment, colour_attachment, depth_attachment }; + const render_pass_attachments = [_]vk.AttachmentDescription{ colour_attachment, depth_attachment }; const render_pass_create_info: vk.RenderPassCreateInfo = .{ .attachment_count = @intCast(render_pass_attachments.len), .p_attachments = &render_pass_attachments, - .subpass_count = @intCast(subpasses.len), - .p_subpasses = &subpasses, + .subpass_count = 1, + .p_subpasses = @ptrCast(&subpass), .dependency_count = @intCast(subpass_dependencies.len), .p_dependencies = &subpass_dependencies, }; @@ -747,34 +651,6 @@ pub const VulkanRenderer = struct { }; self.sampler_set_layout = try self.device.createDescriptorSetLayout(&texture_layout_info, null); - - // -- Create input attachment image descriptor set layout - // Colour input binding - const colour_input_layout_binding: vk.DescriptorSetLayoutBinding = .{ - .binding = 0, - .descriptor_type = .input_attachment, - .descriptor_count = 1, - .stage_flags = .{ .fragment_bit = true }, - }; - - // Depth input binding - const depth_input_layout_binding: vk.DescriptorSetLayoutBinding = .{ - .binding = 1, - .descriptor_type = .input_attachment, - .descriptor_count = 1, - .stage_flags = .{ .fragment_bit = true }, - }; - - // Array of input attachment bindings - const input_bindings = [_]vk.DescriptorSetLayoutBinding{ colour_input_layout_binding, depth_input_layout_binding }; - - // Create a descriptor set layout for input attachments - const input_layout_create_info: vk.DescriptorSetLayoutCreateInfo = .{ - .binding_count = @intCast(input_bindings.len), - .p_bindings = &input_bindings, - }; - - self.input_set_layout = try self.device.createDescriptorSetLayout(&input_layout_create_info, null); } fn createPushConstantRange(self: *Self) !void { @@ -786,45 +662,7 @@ pub const VulkanRenderer = struct { }; } - fn createColourBufferImage(self: *Self) !void { - self.colour_buffer_image = try self.allocator.alloc(vk.Image, self.swapchain_images.len); - self.colour_buffer_image_memory = try self.allocator.alloc(vk.DeviceMemory, self.swapchain_images.len); - self.colour_buffer_image_view = try self.allocator.alloc(vk.ImageView, self.swapchain_images.len); - - // Get supported format for colour attachment - const colour_format = chooseSupportedFormat( - self.physical_device, - self.instance, - &[_]vk.Format{.r8g8b8a8_srgb}, - .optimal, - .{ .color_attachment_bit = true }, - ) orelse return error.FormatNotSupported; - - // Create colour buffers - for (0..self.colour_buffer_image.len) |i| { - self.colour_buffer_image[i] = try self.createImage( - self.extent.width, - self.extent.height, - colour_format, - .optimal, - .{ .color_attachment_bit = true, .input_attachment_bit = true }, - .{ .device_local_bit = true }, - &self.colour_buffer_image_memory[i], - ); - - self.colour_buffer_image_view[i] = try self.createImageView( - self.colour_buffer_image[i], - colour_format, - .{ .color_bit = true }, - ); - } - } - fn createDepthBufferImage(self: *Self) !void { - self.depth_buffer_image = try self.allocator.alloc(vk.Image, self.swapchain_images.len); - self.depth_buffer_image_memory = try self.allocator.alloc(vk.DeviceMemory, self.swapchain_images.len); - self.depth_buffer_image_view = try self.allocator.alloc(vk.ImageView, self.swapchain_images.len); - // Get supported depth buffer format const formats = [_]vk.Format{ .d32_sfloat_s8_uint, .d32_sfloat, .d24_unorm_s8_uint }; self.depth_format = chooseSupportedFormat( @@ -835,21 +673,19 @@ pub const VulkanRenderer = struct { .{ .depth_stencil_attachment_bit = true }, ) orelse return error.UnsupportedDepthBufferFormat; - for (0..self.depth_buffer_image.len) |i| { - // Create depth buffer image - self.depth_buffer_image[i] = try self.createImage( - self.extent.width, - self.extent.height, - self.depth_format, - .optimal, - .{ .depth_stencil_attachment_bit = true, .input_attachment_bit = true }, - .{ .device_local_bit = true }, - &self.depth_buffer_image_memory[i], - ); + // Create depth buffer image + self.depth_buffer_image = try self.createImage( + self.extent.width, + self.extent.height, + self.depth_format, + .optimal, + .{ .depth_stencil_attachment_bit = true }, + .{ .device_local_bit = true }, + &self.depth_buffer_image_memory, + ); - // Create depth buffer image view - self.depth_buffer_image_view[i] = try self.createImageView(self.depth_buffer_image[i], self.depth_format, .{ .depth_bit = true }); - } + // Create depth buffer image view + self.depth_buffer_image_view = try self.createImageView(self.depth_buffer_image, self.depth_format, .{ .depth_bit = true }); } fn createGraphicsPipeline(self: *Self) !void { @@ -869,14 +705,14 @@ pub const VulkanRenderer = struct { // -- Shader stage creation information -- // Vertex stage creation information - var vertex_shader_create_info: vk.PipelineShaderStageCreateInfo = .{ + const vertex_shader_create_info: vk.PipelineShaderStageCreateInfo = .{ .stage = .{ .vertex_bit = true }, .module = vert, .p_name = "main", }; // Fragment stage creation information - var fragment_shader_create_info: vk.PipelineShaderStageCreateInfo = .{ + const fragment_shader_create_info: vk.PipelineShaderStageCreateInfo = .{ .stage = .{ .fragment_bit = true }, .module = frag, .p_name = "main", @@ -922,7 +758,7 @@ pub const VulkanRenderer = struct { }; // -- Vertex input -- - var vertex_input_create_info: vk.PipelineVertexInputStateCreateInfo = .{ + const vertex_input_create_info: vk.PipelineVertexInputStateCreateInfo = .{ .vertex_binding_description_count = 1, .p_vertex_binding_descriptions = @ptrCast(&binding_description), // List of vertex binding descriptions (data spacing, stride info) .vertex_attribute_description_count = @intCast(attribute_descriptions.len), @@ -1028,7 +864,7 @@ pub const VulkanRenderer = struct { self.pipeline_layout = try self.device.createPipelineLayout(&pipeline_layout_create_info, null); // -- Depth stencil testing -- - var depth_stencil_create_info: vk.PipelineDepthStencilStateCreateInfo = .{ + const depth_stencil_create_info: vk.PipelineDepthStencilStateCreateInfo = .{ .depth_test_enable = vk.TRUE, // Enable checking depth to determine fragment write .depth_write_enable = vk.TRUE, // Enable writing to depth buffer to replace all values .depth_compare_op = .less, // Comparison operation that allows an overwrite (is in front) @@ -1041,7 +877,7 @@ pub const VulkanRenderer = struct { }; // -- Graphics pipeline creation -- - var pipeline_create_info: vk.GraphicsPipelineCreateInfo = .{ + const pipeline_create_info: vk.GraphicsPipelineCreateInfo = .{ .stage_count = @intCast(shader_create_infos.len), // Number of shader stages .p_stages = &shader_create_infos, // List of shader stages .p_vertex_input_state = &vertex_input_create_info, @@ -1067,57 +903,6 @@ pub const VulkanRenderer = struct { null, @ptrCast(&self.graphics_pipeline), ); - - // -- Create second pass pipeline - // Second pass shaders - const second_vert_shader_module = try self.device.createShaderModule(&.{ - .code_size = shaders.second_vert.len, - .p_code = @ptrCast(&shaders.second_vert), - }, null); - defer self.device.destroyShaderModule(second_vert_shader_module, null); - - const second_frag_shader_module = try self.device.createShaderModule(&.{ - .code_size = shaders.second_frag.len, - .p_code = @ptrCast(&shaders.second_frag), - }, null); - defer self.device.destroyShaderModule(second_frag_shader_module, null); - - // Set new shaders - vertex_shader_create_info.module = second_vert_shader_module; - fragment_shader_create_info.module = second_frag_shader_module; - - const second_shader_stages = [_]vk.PipelineShaderStageCreateInfo{ vertex_shader_create_info, fragment_shader_create_info }; - - // No vertex data for second pass - vertex_input_create_info.vertex_binding_description_count = 0; - vertex_input_create_info.p_vertex_binding_descriptions = null; - vertex_input_create_info.vertex_attribute_description_count = 0; - vertex_input_create_info.p_vertex_attribute_descriptions = null; - - // Don't want to write to depth buffer - depth_stencil_create_info.depth_write_enable = vk.FALSE; - - // Create new pipeline layout - const second_pipeline_layout_create_info: vk.PipelineLayoutCreateInfo = .{ - .set_layout_count = 1, - .p_set_layouts = @ptrCast(&self.input_set_layout), - }; - - self.second_pipeline_layout = try self.device.createPipelineLayout(&second_pipeline_layout_create_info, null); - - pipeline_create_info.stage_count = @intCast(second_shader_stages.len); - pipeline_create_info.p_stages = &second_shader_stages; - pipeline_create_info.layout = self.second_pipeline_layout; - pipeline_create_info.subpass = 1; - - // Create second pipeline - _ = try self.device.createGraphicsPipelines( - .null_handle, - 1, - @ptrCast(&pipeline_create_info), - null, - @ptrCast(&self.second_pipeline), - ); } fn createFramebuffers(self: *Self) !void { @@ -1126,11 +911,7 @@ pub const VulkanRenderer = struct { // Create a frammebuffer for each swapchain image for (self.swapchain_images, 0..) |swapchain_image, i| { // Order matters - const attachments = [_]vk.ImageView{ - swapchain_image.image_view, - self.colour_buffer_image_view[i], - self.depth_buffer_image_view[i], - }; + const attachments = [_]vk.ImageView{ swapchain_image.image_view, self.depth_buffer_image_view }; const framebuffer_create_info: vk.FramebufferCreateInfo = .{ .render_pass = self.render_pass, // Render pass layout the frambuffer will be used with @@ -1275,30 +1056,6 @@ pub const VulkanRenderer = struct { }; self.sampler_descriptor_pool = try self.device.createDescriptorPool(&sampler_pool_create_info, null); - - // -- Create input attachment descriptor pool - // Colour attachment pool size - const colour_input_pool_size: vk.DescriptorPoolSize = .{ - .type = .input_attachment, - .descriptor_count = @intCast(self.colour_buffer_image_view.len), - }; - - // Depth attachment pool size - const depth_input_pool_size: vk.DescriptorPoolSize = .{ - .type = .input_attachment, - .descriptor_count = @intCast(self.depth_buffer_image_view.len), - }; - - const input_pool_sizes = [_]vk.DescriptorPoolSize{ colour_input_pool_size, depth_input_pool_size }; - - // Create input attachment pool - const input_pool_create_info: vk.DescriptorPoolCreateInfo = .{ - .max_sets = @intCast(self.swapchain_images.len), - .pool_size_count = @intCast(input_pool_sizes.len), - .p_pool_sizes = &input_pool_sizes, - }; - - self.input_descriptor_pool = try self.device.createDescriptorPool(&input_pool_create_info, null); } fn createDescriptorSets(self: *Self) !void { @@ -1351,74 +1108,6 @@ pub const VulkanRenderer = struct { } } - fn createInputDescriptorSets(self: *Self) !void { - self.input_descriptor_sets = try self.allocator.alloc(vk.DescriptorSet, self.swapchain_images.len); - - // Fill array of layouts ready for set creation - var set_layouts = try self.allocator.alloc(vk.DescriptorSetLayout, self.swapchain_images.len); - defer self.allocator.free(set_layouts); - for (0..set_layouts.len) |i| { - set_layouts[i] = self.input_set_layout; - } - - // Input attachment descriptor set allocation info - const set_alloc_info: vk.DescriptorSetAllocateInfo = .{ - .descriptor_pool = self.input_descriptor_pool, - .descriptor_set_count = @intCast(self.swapchain_images.len), - .p_set_layouts = set_layouts.ptr, - }; - - // Allocate descriptor sets - try self.device.allocateDescriptorSets(&set_alloc_info, self.input_descriptor_sets.ptr); - - // Update each descriptor set with input attachment - for (0..self.swapchain_images.len) |i| { - // Colour attachment descriptor - const colour_attachment_descriptor: vk.DescriptorImageInfo = .{ - .image_layout = .shader_read_only_optimal, - .image_view = self.colour_buffer_image_view[i], - .sampler = .null_handle, - }; - - // Colour attachment descriptor write - const colour_write: vk.WriteDescriptorSet = .{ - .dst_set = self.input_descriptor_sets[i], - .dst_binding = 0, - .dst_array_element = 0, - .descriptor_type = .input_attachment, - .descriptor_count = 1, - .p_image_info = @ptrCast(&colour_attachment_descriptor), - .p_buffer_info = undefined, - .p_texel_buffer_view = undefined, - }; - - // Depth attachment descriptor - const depth_attachment_descriptor: vk.DescriptorImageInfo = .{ - .image_layout = .shader_read_only_optimal, - .image_view = self.depth_buffer_image_view[i], - .sampler = .null_handle, - }; - - // Depth attachment descriptor write - const depth_write: vk.WriteDescriptorSet = .{ - .dst_set = self.input_descriptor_sets[i], - .dst_binding = 1, - .dst_array_element = 0, - .descriptor_type = .input_attachment, - .descriptor_count = 1, - .p_image_info = @ptrCast(&depth_attachment_descriptor), - .p_buffer_info = undefined, - .p_texel_buffer_view = undefined, - }; - - // List of input descriptor set writes - const set_writes = [_]vk.WriteDescriptorSet{ colour_write, depth_write }; - - // Update descriptor sets - self.device.updateDescriptorSets(@intCast(set_writes.len), &set_writes, 0, null); - } - } - fn updateUniformBuffers(self: *Self, image_index: u32) !void { // Copy VP data const data = try self.device.mapMemory( @@ -1441,8 +1130,7 @@ pub const VulkanRenderer = struct { }; const clear_values = [_]vk.ClearValue{ - .{ .color = .{ .float_32 = .{ 0.0, 0.0, 0.0, 0.0 } } }, - .{ .color = .{ .float_32 = .{ 0.6, 0.65, 0.4, 1.0 } } }, + .{ .color = .{ .float_32 = [4]f32{ 0.6, 0.65, 0.4, 1.0 } } }, .{ .depth_stencil = .{ .depth = 1.0, .stencil = 1 } }, }; @@ -1516,21 +1204,6 @@ pub const VulkanRenderer = struct { } } - // Start second subpass - command_buffer.nextSubpass(.@"inline"); - - command_buffer.bindPipeline(.graphics, self.second_pipeline); - command_buffer.bindDescriptorSets( - .graphics, - self.second_pipeline_layout, - 0, - 1, - @ptrCast(&self.input_descriptor_sets[current_image]), - 0, - null, - ); - command_buffer.draw(3, 1, 0, 0); - // End render pass command_buffer.endRenderPass(); }