{"id":301009,"date":"2020-03-31T09:00:23","date_gmt":"2020-03-31T09:00:23","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=301009"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=301009","title":{"rendered":"\u0418\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/494376\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fr\/kx\/e8\/frkxe8hnnru9xzoo2g9k8qec2sq.png\"><\/div>\n<p>  <\/p>\n<h1>\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440<\/h1>\n<p>  \u0418\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d \u2014 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438 (Z-\u0431\u0443\u0444\u0435\u0440), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u044f\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 (acceleration structure) \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d. \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 mip-\u0446\u0435\u043f\u043e\u0447\u0435\u043a \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0434\u0432\u043e\u0439\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0434\u0432\u0443\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0434\u043b\u044f \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0438\u043b\u0438 NDC) \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d, \u043d\u0435 \u0440\u0430\u0432\u043d\u044b\u0445 \u0441\u0442\u0435\u043f\u0435\u043d\u044f\u043c \u0434\u0432\u043e\u0439\u043a\u0438. (\u0412 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 mip-\u0443\u0440\u043e\u0432\u043d\u044f\u0445.)<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u0430\u0443\u043d\u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433\u0430, \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e, \u043a\u0430\u043a \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e (compute) \u0448\u0435\u0439\u0434\u0435\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u043e\u0431\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b. \u0414\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 1\/16 x 1\/16 (mip-\u0443\u0440\u043e\u0432\u0435\u043d\u044c 4), \u0441\u043f\u043e\u0441\u043e\u0431 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c \u0432 <strong>2-3 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435<\/strong>, \u0447\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0434\u0430\u0443\u043d\u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433\u043e\u043c mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h1>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h1>\n<p>  \u0418\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u043b\u0443\u0431\u0438\u043d\u044b (\u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 Hi-Z) \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0430. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0443\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 (occlusion culling) (\u0432 <a href=\"https:\/\/software.intel.com\/en-us\/articles\/software-occlusion-culling\" rel=\"nofollow\">CPU<\/a>, \u0430 <a href=\"http:\/\/rastergrid.com\/blog\/2010\/10\/hierarchical-z-map-based-occlusion-culling\/\" rel=\"nofollow\">\u0442\u0430\u043a\u0436\u0435<\/a> \u0432 <a href=\"https:\/\/interplayoflight.wordpress.com\/2017\/11\/15\/experiments-in-gpu-based-occlusion-culling\/\" rel=\"nofollow\">GPU<\/a>), \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 <a href=\"http:\/\/bitsquid.blogspot.com\/2017\/08\/notes-on-screen-space-hiz-tracing.html\" rel=\"nofollow\">\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435<\/a>, <a href=\"https:\/\/bartwronski.files.wordpress.com\/2014\/08\/bwronski_volumetric_fog_siggraph2014.pdf\" rel=\"nofollow\">\u043e\u0431\u044a\u0451\u043c\u043d\u043e\u0433\u043e \u0442\u0443\u043c\u0430\u043d\u0430<\/a> \u0438 \u043c\u043d\u043e\u0433\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 GPU <a href=\"https:\/\/pdfs.semanticscholar.org\/ef95\/d232b78146cc16e6212cc062fb622136f3f3.pdf\" rel=\"nofollow\">Hi-Z \u0447\u0430\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f<\/a> \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u0411\u044b\u0441\u0442\u0440\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 Hi-Z \u0432 \u043a\u044d\u0448\u0430\u0445 \u043d\u0430 \u0447\u0438\u043f\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u0439\u043b\u044b \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u0442\u044b \u0440\u0430\u043d\u0435\u0435 \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438.<\/p>\n<p>  \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f Hi-Z \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u043e \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ol>\n<li>\u041e\u0434\u0438\u043d \u0442\u0435\u043a\u0441\u0435\u043b (\u0438\u043b\u0438 \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432) \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/li>\n<li>\u0411\u0443\u0444\u0435\u0440 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u044d\u0448, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0438\u0441\u043a\u0430 (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c).<\/li>\n<\/ol>\n<p>  \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u0430\u0443\u043d\u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0431\u0443\u0444\u0435\u0440\u0430 Hi-Z \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d <a href=\"https:\/\/developer.nvidia.com\/content\/depth-precision-visualized\" rel=\"nofollow\">\u00ab\u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u00bb<\/a>, \u043a\u0430\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f). \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0435\u043a\u0441\u0435\u043b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 Hi-Z \u0445\u0440\u0430\u043d\u0438\u0442 <code>min<\/code> \u0438\u043b\u0438 <code>max<\/code> \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0435\u043c\u0443 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0418\u043d\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>min<\/code> \u0438 <code>max<\/code>. \u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0443\u0441\u0440\u0435\u0434\u043d\u0451\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 mip-\u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0435\u0447\u0430\u0441\u0442\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0440\u0435\u0434\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p>  \u0411\u0443\u0444\u0435\u0440\u044b Hi-Z \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>max<\/code> \u0434\u043b\u044f \u043d\u0435\u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d (\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0433\u043b\u0443\u0431\u0438\u043d\u044b, \u0442\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442), \u0442\u043e \u043c\u043e\u0436\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0431\u0443\u0444\u0435\u0440\u043e\u043c \u0433\u043b\u0443\u0431\u0438\u043d (\u0435\u0441\u043b\u0438 \u0435\u0451 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Z &gt; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (max), \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0433\u043e \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 (\u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c) \u0431\u0443\u0444\u0435\u0440\u0430 Hi-Z).<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0444\u0440\u0430\u0437\u0443 \u00ab\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0442\u043e\u0447\u043d\u043e\u00bb: \u0435\u0441\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Z &lt;= \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e (max), \u0442\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043b\u0438 \u0435\u0451 \u0431\u0443\u0444\u0435\u0440. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f; \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043a\u043e\u043d\u0443 \u0441\u0442\u043e\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u0448\u043d\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430).<\/p>\n<h1>\u041c\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435: \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0447\u0430\u0441\u0442\u0438\u0446 \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435<\/h1>\n<p>  \u042f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Hi-Z \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/miketuritzin.com\/post\/rendering-particles-with-compute-shaders\/\" rel=\"nofollow\">\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0447\u0430\u0441\u0442\u0438\u0446 \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435<\/a> \u0432 \u0434\u0432\u0438\u0436\u043a\u0435 \u043c\u043e\u0435\u0433\u043e VR-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f <a href=\"https:\/\/miketuritzin.com\/particulate\/\" rel=\"nofollow\">PARTICULATE<\/a>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0433\u043b\u0443\u0431\u0438\u043d \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0447\u0430\u0441\u0442\u0438\u0446\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u0434\u0438\u043d \u043f\u0438\u043a\u0441\u0435\u043b\u044c. \u0410 \u0442\u0430\u043a \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u0438\u0446\u044b \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u0433\u043b\u0443\u0431\u0438\u043d \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f (\u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u0438\u0437 \u0441\u043b\u0443\u0447\u0430\u0435\u0432) \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c.<\/p>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0435 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u2014 \u043f\u0443\u0442\u044c \u043a \u043d\u0438\u0437\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0427\u0442\u043e\u0431\u044b \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043f\u043e\u0438\u0441\u043a \u0433\u043b\u0443\u0431\u0438\u043d \u0432 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0435 \u0433\u043b\u0443\u0431\u0438\u043d \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 1\/16 x 1\/16 \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e. \u042d\u0442\u043e\u0442 \u0431\u0443\u0444\u0435\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u043b\u0443\u0431\u0438\u043d <code>min<\/code>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0448\u0435\u0439\u0434\u0435\u0440\u0443 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u0438\u0446 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0435\u0441\u0442 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. (\u0415\u0441\u043b\u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0447\u0430\u0441\u0442\u0438\u0446\u044b &lt; \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0439\u0441\u044f \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0442\u043e \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0432\u0438\u0434\u043d\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d\u0430 &gt;= min, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.)<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0442\u0435\u0441\u0442 \u0433\u043b\u0443\u0431\u0438\u043d \u0434\u043b\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u0438\u0446 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0430\u043b\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439. (\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044b\u0445 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0435\u0439 \u0447\u0430\u0441\u0442\u0438\u0446 \u043e\u043d \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u0435\u043d, \u043d\u043e \u044d\u0442\u043e \u043d\u0430\u0441 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0430\u0441\u0442\u0438\u0446\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043c\u0430\u043b\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439.)<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e\u0438\u0441\u043a \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f (\u043a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435), <strong>\u0432\u0440\u0435\u043c\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0447\u0430\u0441\u0442\u0438\u0446 \u0441\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043d\u0430 35%<\/strong> \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0438\u0441\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Hi-Z \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0433\u043e\u0434\u0435\u043d.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d.<\/p>\n<h1>\u0422\u0435\u0445\u043d\u0438\u043a\u0430 1: \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 Mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438<\/h1>\n<p>  \u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Hi-Z \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 occlusion culling \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Hi-Z \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438 \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e mip-\u0443\u0440\u043e\u0432\u043d\u044f (\u0447\u0442\u043e\u0431\u044b \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u044f \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432).<\/p>\n<p>  \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u2014 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N \u043c\u044b \u0431\u0435\u0440\u0451\u043c <code>max<\/code> (\u0438\u043b\u0438 <code>min<\/code>, \u0438\u043b\u0438 \u043e\u0431\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f) \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 4 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0432 \u0440\u0430\u043d\u0435\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 N-1. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044b (\u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432\u0434\u0432\u043e\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u044b), \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 mip-\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1&#215;1.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0442\u0435\u043f\u0435\u043d\u044f\u043c \u0434\u0432\u043e\u0439\u043a\u0438, \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0422\u0430\u043a \u043a\u0430\u043a Hi-Z \u0434\u043b\u044f \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d \u0447\u0430\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u044d\u043a\u0440\u0430\u043d\u0430 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0434\u043a\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0435\u043f\u0435\u043d\u044f\u043c\u0438 \u0434\u0432\u043e\u0439\u043a\u0438), \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u0430 mip-\u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>min<\/code>. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>min<\/code> \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0434\u043b\u044f \u043d\u0430\u0441 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0440\u0435\u0434\u0438\u0442\u044c \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0433\u043b\u0443\u0431\u0438\u043d.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u0436\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u043d\u0430 mip-\u0443\u0440\u043e\u0432\u043d\u0435 N? \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (<code>min<\/code>) \u0438\u0437 \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0433\u043e \u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432 (\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c) \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/446\/120\/9fb\/4461209fb31a93beb7f34775d0b85091.svg\" alt=\"$[0, 1]^2$\" data-tex=\"inline\"><\/math>) \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f (\u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439) \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0435\u043b\u0443 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0442\u043e \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0435\u043b \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>min<\/code>, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u043e\u0435 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043c mip-\u0443\u0440\u043e\u0432\u043d\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430 \u0436\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 mip-\u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0433\u043b\u0443\u0431\u0438\u043d\u044b &gt; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0431\u0443\u0444\u0435\u0440\u0443 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f (\u0443\u0440\u043e\u0432\u0435\u043d\u044c 0). \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e N, \u044d\u0442\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043d\u0438\u0436\u0435 \u043d\u0435\u0433\u043e (&lt; N).<\/p>\n<p>  \u0414\u043b\u044f \u0447\u0451\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0435\u0439 (\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u0442\u0435\u043f\u0435\u043d\u044f\u043c\u0438 \u0434\u0432\u043e\u0439\u043a\u0438, \u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e, \u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u044b\u043c\u0438 1) \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0435\u0433\u043a\u043e. \u0412 \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/bf8\/3b5\/32c\/bf83b532cd867d34004f8eded8c5c79a.svg\" alt=\"$i$\" data-tex=\"inline\"><\/math> \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0435\u043b\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N-1 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/dfd\/8a0\/d2f\/dfd8a0d2fe6ea30b4cde7f570eca349b.svg\" alt=\"$2$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/401\/3d9\/909\/4013d9909b0167b12e3ffaca538dfa2e.svg\" alt=\"$2i + 1$\" data-tex=\"inline\"><\/math> \u0438 \u043d\u0430\u0439\u0442\u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>min<\/code>. \u0422\u043e \u0435\u0441\u0442\u044c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/039\/a6d\/3fe\/039a6d3fe7510c10c190f57ef84707fd.svg\" alt=\"$D_{N}[i] = \\text{min}(D_{N-1}[2i], D_{N-1}[2i + 1])$\" data-tex=\"inline\"><\/math>. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0435\u043b\u044b \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u00ab2 \u043a 1\u00bb (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440), \u0432\u0435\u0434\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0440\u043e\u0432\u043d\u043e \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/11f\/ca7\/b43\/11fca7b43dd706d72f35590f69422e2c.svg\"><\/div>\n<p>  <i>\u041f\u0440\u0438\u043c\u0435\u0440 \u0447\u0451\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0443\u0440\u043e\u0432\u043d\u0435\u0439: 6 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442\u0441\u044f \u0434\u043e 3 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0442\u0440\u0451\u0445 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u043e\u0447\u043d\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0435 \u0434\u0432\u0430 \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. (\u0422\u043e\u0447\u043a\u0438 \u2014 \u044d\u0442\u043e \u0446\u0435\u043d\u0442\u0440\u044b \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432, \u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439.)<\/i><\/p>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 (\u0430 \u0443 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0434\u0432\u043e\u0439\u043a\u0438, \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c) \u0432\u0441\u0451 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0414\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u044f N-1 \u043d\u0435\u0447\u0451\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/e4a\/a7b\/86b\/e4aa7b86b852ceff60ee403825cacfa3.svg\" alt=\"$\\mathit{dim}_{N-1}$\" data-tex=\"inline\"><\/math> \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (N) \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6be\/ae4\/dd5\/6beae4dd5e385551c86b6f120d8f4a63.svg\" alt=\"$\\mathit{dim}_{N} = \\lfloor \\frac{\\mathit{dim}_{N-1}}{2} \\rfloor$\" data-tex=\"inline\"><\/math>, \u0442\u043e \u0435\u0441\u0442\u044c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/447\/46e\/f23\/44746ef233baf76314e7e1badd4c82d5.svg\" alt=\"$\\neq \\frac{\\mathit{dim}_{N-1}}{2}$\" data-tex=\"inline\"><\/math>.<\/p>\n<p>  \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u0447\u0451\u0442\u043a\u043e\u0433\u043e \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u00ab2 \u043a 1\u00bb \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0443\u0440\u043e\u0432\u043d\u044f N-1 \u043a \u0442\u0435\u043a\u0441\u0435\u043b\u0430\u043c \u0443\u0440\u043e\u0432\u043d\u044f N. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 <em>3<\/em> \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N-1.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/48d\/9d6\/6e1\/48d9d66e16424a3781e695a3340d2cb4.svg\"><\/div>\n<p>  <i>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0443\u0440\u043e\u0432\u043d\u044f: 7 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442\u0441\u044f \u0434\u043e 3 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0420\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0442\u0440\u0451\u0445 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0442\u0440\u0451\u0445 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0438\u0437 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f.<\/i><\/p>\n<p>  \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9b3\/16d\/480\/9b316d48078888bce8fc24094caf1f99.svg\" alt=\"$D_{N}[i] = \\text{min}(D_{N-1}[2i], D_{N-1}[2i + 1], D_{N-1}[2i + 2])$\" data-tex=\"inline\"><\/math>. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0442\u0435\u043a\u0441\u0435\u043b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N-1 \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>min<\/code>, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0434\u043b\u044f <em>2<\/em> \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u044b\u0448\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0438. \u0412 \u0434\u0432\u0443\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u0445, \u0435\u0441\u043b\u0438 \u043e\u0431\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u044f N-1 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0451\u0442\u043d\u044b\u043c\u0438, \u0442\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 2&#215;2 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N-1 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0434\u043d\u0438\u043c \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N. \u0415\u0441\u043b\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0435\u0447\u0451\u0442\u043d\u0430, \u0442\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u044c 2&#215;3 \u0438\u043b\u0438 3&#215;2 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N-1 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0434\u043d\u0438\u043c \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N. \u0415\u0441\u043b\u0438 \u043d\u0435\u0447\u0451\u0442\u043d\u044b <em>\u043e\u0431\u0435<\/em> \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u00ab\u0443\u0433\u043b\u043e\u0432\u043e\u0439\u00bb \u0442\u0435\u043a\u0441\u0435\u043b, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c 3&#215;3 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N-1 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0434\u043d\u0438\u043c \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 N.<\/p>\n<h2>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430<\/h2>\n<p>  \u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434 \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u043d\u0430 GLSL \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e mip-\u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0443\u0440\u043e\u0432\u043d\u044f 1 (\u0443\u0440\u043e\u0432\u0435\u043d\u044c 0 \u2014 \u044d\u0442\u043e \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f).<\/p>\n<pre><code class=\"cpp\">uniform sampler2D u_depthBuffer; uniform int u_previousLevel; uniform ivec2 u_previousLevelDimensions;  void main() { \tivec2 thisLevelTexelCoord = ivec2(gl_FragCoord); \tivec2 previousLevelBaseTexelCoord = 2 * thisLevelTexelCoord;  \tvec4 depthTexelValues; \tdepthTexelValues.x = texelFetch(u_depthBuffer,                                     previousLevelBaseTexelCoord,                                     u_previousLevel).r; \tdepthTexelValues.y = texelFetch(u_depthBuffer,                                     previousLevelBaseTexelCoord + ivec2(1, 0),                                     u_previousLevel).r; \tdepthTexelValues.z = texelFetch(u_depthBuffer,                                     previousLevelBaseTexelCoord + ivec2(1, 1),                                     u_previousLevel).r; \tdepthTexelValues.w = texelFetch(u_depthBuffer,                                     previousLevelBaseTexelCoord + ivec2(0, 1),                                     u_previousLevel).r;  \tfloat minDepth = min(min(depthTexelValues.x, depthTexelValues.y),                          min(depthTexelValues.z, depthTexelValues.w));      \/\/ Incorporate additional texels if the previous level's width or height (or both)      \/\/ are odd.  \tbool shouldIncludeExtraColumnFromPreviousLevel = ((u_previousLevelDimensions.x &amp; 1) != 0); \tbool shouldIncludeExtraRowFromPreviousLevel = ((u_previousLevelDimensions.y &amp; 1) != 0); \tif (shouldIncludeExtraColumnFromPreviousLevel) { \t\tvec2 extraColumnTexelValues; \t\textraColumnTexelValues.x = texelFetch(u_depthBuffer,                                               previousLevelBaseTexelCoord + ivec2(2, 0),                                               u_previousLevel).r; \t\textraColumnTexelValues.y = texelFetch(u_depthBuffer,                                               previousLevelBaseTexelCoord + ivec2(2, 1),                                               u_previousLevel).r;  \t\t\/\/ In the case where the width and height are both odd, need to include the          \/\/ 'corner' value as well.  \t\tif (shouldIncludeExtraRowFromPreviousLevel) { \t\t\tfloat cornerTexelValue = texelFetch(u_depthBuffer,                                                 previousLevelBaseTexelCoord + ivec2(2, 2),                                                 u_previousLevel).r; \t\t\tminDepth = min(minDepth, cornerTexelValue); \t\t} \t\tminDepth = min(minDepth, min(extraColumnTexelValues.x, extraColumnTexelValues.y)); \t} \tif (shouldIncludeExtraRowFromPreviousLevel) { \t\tvec2 extraRowTexelValues; \t\textraRowTexelValues.x = texelFetch(u_depthBuffer,                                            previousLevelBaseTexelCoord + ivec2(0, 2),                                            u_previousLevel).r; \t\textraRowTexelValues.y = texelFetch(u_depthBuffer,                                            previousLevelBaseTexelCoord + ivec2(1, 2),                                            u_previousLevel).r; \t\tminDepth = min(minDepth, min(extraRowTexelValues.x, extraRowTexelValues.y)); \t}  \tgl_FragDepth = minDepth; }<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0418\u0437\u044a\u044f\u043d\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/h2>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0434\u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0432 \u0434\u0432\u0430 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0440\u0430\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0432\u044b\u0437\u043e\u0432\u043e\u0432 <code>texelFetch<\/code> \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0439\u0442\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b <code>u_depthBuffer<\/code>. (\u0412 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 1 \u043f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u0434\u0440\u0443\u0433\u0430\u044f.) \u042f \u0445\u043e\u0442\u0435\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 <code>texelFetch<\/code> (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0431\u044b\u043b\u043e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c, \u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u043b\u0438\u0447\u043d\u043e \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043e\u0441\u043e\u0431\u043e \u0448\u0438\u0440\u043e\u043a\u0438\u043c\u0438\/\u0432\u044b\u0441\u043e\u043a\u0438\u043c\u0438 \u0431\u0443\u0444\u0435\u0440\u0430\u043c\u0438 \u0433\u043b\u0443\u0431\u0438\u043d. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c (<code>clamp<\/code>) \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 <code>texelFetch<\/code> \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>texture<\/code> \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0432 \u0441\u044d\u043c\u043f\u043b\u0435\u0440\u0435 \u0437\u0430\u0434\u0430\u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u043a\u0440\u0430\u044e). \u041f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 <code>min<\/code> \u0438\u043b\u0438 <code>max<\/code> \u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0442\u0435\u043a\u0441\u0435\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432.<\/p>\n<p>  \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 <code>texelFetch<\/code> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0434\u043d\u0438\u043c <code>textureGather<\/code>, \u044d\u0442\u043e \u0432\u0441\u0451 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 (\u0442\u0430\u043a \u043a\u0430\u043a <code>textureGather<\/code> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c mip-\u0443\u0440\u043e\u0432\u0435\u043d\u044c); \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>textureGather<\/code>.<\/p>\n<h2>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u0432\u0443\u0445 \u043f\u043e\u043b\u043d\u044b\u0445 mip-\u0446\u0435\u043f\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0434\u0432\u0443\u0445 (\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043b\u0430\u0437) \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d \u0432 \u0441\u0432\u043e\u0451\u043c VR-\u0434\u0432\u0438\u0436\u043a\u0435. \u0412 \u0442\u0435\u0441\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0433\u043b\u0430\u0437\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e 1648&#215;1776, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e 10 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0445 mip-\u0443\u0440\u043e\u0432\u043d\u0435\u0439 (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442, 10 \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432). \u041d\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u043d\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0433\u043b\u0430\u0437 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c 0,25 \u043c\u0441 \u043d\u0430 NVIDIA GTX 980 \u0438 0,30 \u043c\u0441 \u043d\u0430 AMD R9 290.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/805\/461\/815\/8054618153533c29d1de1000fcee2878.jpg\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a8f\/2b6\/950\/a8f2b6950b278655f3deff3ca456874c.png\"><\/div>\n<p>  <i>Mip-\u0443\u0440\u043e\u0432\u043d\u0438 4, 5 \u0438 6, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0448\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443. (\u0421\u0442\u043e\u0438\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0431\u041e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0446\u0435\u043d\u044b \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d.) Mip-\u0443\u0440\u043e\u0432\u0435\u043d\u044c 4 \u2014 \u043f\u0435\u0440\u0432\u044b\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u044b (103&#215;111) \u043d\u0435 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430\u0446\u0435\u043b\u043e \u043d\u0430 2.<\/i><\/p>\n<h2>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438<\/h2>\n<p>  \u0417\u0430\u0434\u0430\u0447\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0438\u043b\u0438 NDC). \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b (\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u0442\u0435\u0445\u043d\u0438\u043a\u0435 2) \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"http:\/\/rastergrid.com\/blog\/2010\/10\/hierarchical-z-map-based-occlusion-culling\/\" rel=\"nofollow\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>).<\/p>\n<p>  \u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e, \u043a\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439, \u044d\u0442\u043e\u0442 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0443\u0444\u0435\u0440\u0430\u043c\u0438 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0435\u043f\u0435\u043d\u044f\u043c\u0438 \u0434\u0432\u043e\u0439\u043a\u0438 (\u043d\u043e, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438, \u0440\u0430\u0432\u043d\u044b\u043c\u0438 \u0441\u0442\u0435\u043f\u0435\u043d\u044f\u043c \u0434\u0432\u043e\u0439\u043a\u0438).<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0435 \u043f\u0440\u0438 \u0434\u0430\u0443\u043d\u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0441 \u043d\u0435\u0447\u0451\u0442\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 (\u0438\u043b\u0438 \u0432\u044b\u0441\u043e\u0442\u043e\u0439) \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 (\u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438) \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e (\u043d\u0438\u0436\u043d\u0435\u0433\u043e) \u0443\u0440\u043e\u0432\u043d\u044f, \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u044d\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 (\u00ab\u043a\u0440\u0430\u0439\u043d\u0438\u0445\u00bb \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432). \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435 \u2014 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>shouldIncludeExtraColumnFromPreviousLevel<\/code> \u0438 <code>shouldIncludeExtraRowFromPreviousLevel<\/code>:<\/p>\n<pre><code class=\"cpp\">\/\/ If the previous level's width is odd and this is the highest-indexed &quot;edge&quot; texel for  \/\/ this level, incorporate the rightmost edge texels from the previous level. The same goes  \/\/ for the height.  bool shouldIncludeExtraColumnFromPreviousLevel =     (previousMipLevelBaseTexelCoords.x == u_previousLevelDimensions.x - 3); bool shouldIncludeExtraRowFromPreviousLevel =     (previousMipLevelBaseTexelCoords.y == u_previousLevelDimensions.y - 3);<\/code><\/pre>\n<p>  \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0430\u0439\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0435\u043b\u044b \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u00ab\u0442\u043e\u043b\u0441\u0442\u044b\u043c\u0438\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 2 \u043d\u0435\u0447\u0451\u0442\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0433\u043b\u0443\u0431\u0438\u043d \u0432\u044b\u0441\u043e\u043a\u0438\u0445 mip-\u0443\u0440\u043e\u0432\u043d\u0435\u0439. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0435\u043b \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u0430 \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e mip-\u0443\u0440\u043e\u0432\u043d\u044f, \u0437\u0430\u043f\u0440\u043e\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 NDC <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1e9\/4ef\/4f4\/1e94ef4f4d9b1ab2636edf20acdbdcd6.svg\" alt=\"$[-1, 1]^2$\" data-tex=\"inline\"><\/math> \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043d\u0430 mip-\u0443\u0440\u043e\u0432\u043d\u0435 <code>higherMipLevel<\/code>:<\/p>\n<pre><code class=\"cpp\">vec2 windowCoords = (0.5 * ndc.xy + vec2(0.5)) * textureSize(u_depthBuffer, 0); \/\/ Account for texel centers being halfway between integers.  ivec2 texelCoords = ivec2(round(windowCoords.xy - vec2(0.5))); ivec2 higherMipLevelTexelCoords =     min(texelCoords \/ (1 &lt;&lt; higherMipLevel),         textureSize(u_depthBuffer, higherMipLevel).xy - ivec2(1));<\/code><\/pre>\n<p>  <\/p>\n<h1>\u0422\u0435\u0445\u043d\u0438\u043a\u0430 2: \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f Hi-Z \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430<\/h1>\n<p>  \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u043d\u043e \u043c\u0435\u043d\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u044f\u0433\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u0438, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 (\u0443\u0440\u043e\u0432\u0435\u043d\u044c 4). \u041a\u0440\u043e\u043c\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438, \u043c\u043d\u0435 \u0442\u0430\u043a\u0436\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0451 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u043d\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430 (compute shader). (\u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 4 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 \u043c\u043d\u043e\u0433\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u043d\u044b\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u043e\u043d\u0446\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0435\u0433\u043e \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.)<\/p>\n<p>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Hi-Z \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0433\u043b\u0443\u0431\u0438\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e. \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043f\u043e\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f 4, \u0438\u043c\u0435\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 1\/16 x 1\/16 \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e). \u041f\u043e\u0445\u043e\u0436\u0438\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439.<\/p>\n<p>  \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438. \u041a\u0430\u0436\u0434\u0430\u044f \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0435\u043b (\u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u0443\u043d\u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430), \u0430 \u043f\u043e\u0442\u043e\u043a\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044e <code>min<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044f\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u0449\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<p>  \u042f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u043b <code>atomicMin<\/code> \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0431\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 (\u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043f\u043e\u0434 \u00ab\u0436\u0435\u043b\u0435\u0437\u043e\u00bb \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u043d\u0435\u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 (\u0430 \u043c\u043e\u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u0430\u043a <code>float<\/code>), \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0442\u0440\u044e\u043a. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 IEEE 754 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442 \u0441\u0432\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0431\u0438\u0442\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>floatBitsToUint<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 (\u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 reinterpret cast) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u043b\u0443\u0431\u0438\u043d <code>float<\/code> \u043a <code>uint<\/code>, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>atomicMin<\/code> (\u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c <code>uintBitsToFloat<\/code> \u0434\u043b\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>uint<\/code>).<\/p>\n<p>  \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0441 <code>atomicMin<\/code> \u0441\u0442\u0430\u043b\u043e \u0431\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 16&#215;16 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0442\u0435\u043a\u0441\u0435\u043b, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0435\u0433\u043e <code>atomicMin<\/code> \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0432 \u043e\u0431\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u042f \u0441\u0440\u0430\u0432\u043d\u0438\u043b \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 (8&#215;8, 4&#215;8, 4&#215;4, 2&#215;4, 2&#215;2), \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 <code>atomicMin<\/code>.<\/p>\n<p>  \u0421\u0430\u043c\u044b\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0438\u0437 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 <code>atomicMin<\/code> \u0438 \u043d\u0430 NVIDIA, \u0438 \u043d\u0430 AMD \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 4&#215;4 (\u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0441\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 4&#215;4). \u042f \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u043c, \u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043d \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0435\u0439 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445. \u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b 4&#215;4 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0441\u0435\u0433\u043e 16 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 warp\/wave (\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0438 32 \u0438\u043b\u0438 64), \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e. \u0412 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e <code>atomicMin<\/code> \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0442\u0435\u0445\u043d\u0438\u043a, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 <a href=\"http:\/\/developer.download.nvidia.com\/compute\/cuda\/1.1-Beta\/x86_website\/projects\/reduction\/doc\/reduction.pdf\" rel=\"nofollow\">\u044d\u0442\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0446\u0438\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 NVIDIA<\/a>. (\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u0431\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0447\u0442\u043e \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/72e\/db2\/235\/72edb2235d4d50627e85e931a06b87e7.svg\" alt=\"$\\log_{2} (n)$\" data-tex=\"inline\"><\/math> \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <code>min<\/code> \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432\u0441\u0435\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b.)<\/p>\n<p>  \u042f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0433\u0440\u0443\u043f\u043f, \u0447\u0442\u043e \u0438 \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0441 <code>atomicMin<\/code>. \u0414\u0430\u0436\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 NVIDIA, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0435\u0433\u043a\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 (\u043d\u0430 \u043e\u0431\u043e\u0438\u0445 GPU \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432), \u0447\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 <code>atomicMin<\/code>, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u0451\u043b \u044f. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 <code>atomicMin<\/code> \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430.<\/p>\n<h2>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430<\/h2>\n<p>  \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0435 \u043f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0441\u0435\u043b\u0430\u043c\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0438 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">ivec2 reducedResTexelCoords = texelCoords \/ ivec2(downscalingFactor);<\/code><\/pre>\n<p>  \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0430 mip-\u0443\u0440\u043e\u0432\u043d\u044f 4) <code>downscalingFactor<\/code> \u0440\u0430\u0432\u0435\u043d 16.<\/p>\n<p>  \u041a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u044d\u0442\u043e\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 GLSL \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 <code>atomicMin<\/code> \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0433\u0440\u0443\u043f\u043f 4&#215;4, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0442\u0435\u043a\u0441\u0435\u043b\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 4&#215;4. \u041f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>min<\/code> \u0440\u0430\u0432\u0435\u043d 1\/16 x 1\/16 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f (\u0441 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0432\u0435\u0440\u0445, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 16 \u043d\u0430\u0446\u0435\u043b\u043e).<\/p>\n<pre><code class=\"cpp\">uniform sampler2D u_inputDepthBuffer; uniform restrict writeonly image2DArray u_outputDownsampledMinDepthBufferImage; \/\/ The dimension in normalized texture coordinate space of a single texel in  \/\/ u_inputDepthBuffer.  uniform vec2 u_texelDimensions;  \/\/ Resulting image is 1\/16th x 1\/16th resolution, but we fetch 4x4 texels per thread, hence  \/\/ the divisions by 4 here.  layout(local_size_x = 16\/4, local_size_y = 16\/4, local_size_z = 1) in;  \/\/ This is stored as uint because atomicMin only works on integer types. Luckily  \/\/ (non-negative) floats maintain their order when their bits are interpreted as uint (using  \/\/ floatBitsToUint).  shared uint s_workgroupMinDepthEncodedAsUint;  void main() { \tif (gl_LocalInvocationIndex == 0) {         \/\/ Initialize to 1.0 (max depth) before performing atomicMin's.  \t\ts_workgroupMinDepthEncodedAsUint = floatBitsToUint(1.0); \t}  \tmemoryBarrierShared(); \tbarrier();  \t\/\/ Fetch a 4x4 texel region per thread with 4 calls to textureGather. 'gatherCoords'      \/\/ are set up to be equidistant from the centers of the 4 texels being gathered (which      \/\/ puts them on integer values). In my tests textureGather was not faster than      \/\/ individually fetching each texel - I use it here only for conciseness.      \/\/      \/\/ Note that in the case of the full-res depth buffer's dimensions not being evenly      \/\/ divisible by the downscaling factor (16), these textureGather's may try to fetch      \/\/ out-of-bounds coordinates - that's fine as long as the texture sampler is set to      \/\/ clamp-to-edge, as redundant values don't affect the resulting min.   \tuvec2 baseTexelCoords = 4 * gl_GlobalInvocationID.xy; \tvec2 gatherCoords1 = (baseTexelCoords + uvec2(1, 1)) * u_texelDimensions; \tvec2 gatherCoords2 = (baseTexelCoords + uvec2(3, 1)) * u_texelDimensions; \tvec2 gatherCoords3 = (baseTexelCoords + uvec2(1, 3)) * u_texelDimensions; \tvec2 gatherCoords4 = (baseTexelCoords + uvec2(3, 3)) * u_texelDimensions;  \tvec4 gatheredTexelValues1 = textureGather(u_inputDepthBuffer, gatherCoords1); \tvec4 gatheredTexelValues2 = textureGather(u_inputDepthBuffer, gatherCoords2); \tvec4 gatheredTexelValues3 = textureGather(u_inputDepthBuffer, gatherCoords3); \tvec4 gatheredTexelValues4 = textureGather(u_inputDepthBuffer, gatherCoords4);  \t\/\/ Now find the min across the 4x4 region fetched, and apply that to the workgroup min      \/\/ using atomicMin.  \tvec4 gatheredTexelMins = min(min(gatheredTexelValues1, gatheredTexelValues2),                                  min(gatheredTexelValues3, gatheredTexelValues4)); \tfloat finalMin = min(min(gatheredTexelMins.x, gatheredTexelMins.y),                          min(gatheredTexelMins.z, gatheredTexelMins.w)); \tatomicMin(s_workgroupMinDepthEncodedAsUint, floatBitsToUint(finalMin));  \tmemoryBarrierShared(); \tbarrier();      \/\/ Thread 0 writes workgroup-wide min to image.  \tif (gl_LocalInvocationIndex == 0) { \t\tfloat workgroupMinDepth = uintBitsToFloat(s_workgroupMinDepthEncodedAsUint);  \t\timageStore(u_outputDownsampledMinDepthBufferImage, \t\t           ivec2(gl_WorkGroupID.xy),                    \/\/ imageStore can only be passed vec4, but only a float is stored.  \t\t\t\t   vec4(workgroupMinDepth)); \t} }<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u043d\u043e\u0439 mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438 (\u0431\u0443\u0444\u0435\u0440\u044b 1648&#215;1776 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0433\u043b\u0430\u0437\u0430). \u041e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430 0,12 \u043c\u0441 \u043d\u0430 NVIDIA GTX 980 \u0438 \u0437\u0430 0,08 \u043c\u0441 \u043d\u0430 AMD R9 290. \u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e mip-\u0443\u0440\u043e\u0432\u043d\u0435\u0439 1&ndash;4 (0,22 \u043c\u0441 \u043d\u0430 NVIDIA, 0,25 \u043c\u0441 AMD), \u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c <strong>\u043d\u0430 87% \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0443 GPU NVIDIA<\/strong> \u0438 <strong>\u043d\u0430 197% \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0443 GPU AMD<\/strong>.<\/p>\n<p>  \u0412 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430\u0445 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0435 \u0442\u0430\u043a\u043e\u0435 \u0443\u0436 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0435, \u043d\u043e \u0432\u0430\u0436\u043d\u044b \u043a\u0430\u0436\u0434\u044b\u0435 0,1 \u043c\u0441, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 VR \ud83d\ude42<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/494376\/\"> https:\/\/habr.com\/ru\/post\/494376\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/494376\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fr\/kx\/e8\/frkxe8hnnru9xzoo2g9k8qec2sq.png\"><\/div>\n<p>  <\/p>\n<h1>\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440<\/h1>\n<p>  \u0418\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438\u043d \u2014 \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0433\u043b\u0443\u0431\u0438 (Z-\u0431\u0443\u0444\u0435\u0440), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u044f\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 (acceleration structure) \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d. \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 mip-\u0446\u0435\u043f\u043e\u0447\u0435\u043a \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0434\u0432\u043e\u0439\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0434\u0432\u0443\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0434\u043b\u044f \u0431\u0443\u0444\u0435\u0440\u0430 \u0433\u043b\u0443\u0431\u0438\u043d, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0438\u043b\u0438 NDC) \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0433\u043b\u0443\u0431\u0438\u043d, \u043d\u0435 \u0440\u0430\u0432\u043d\u044b\u0445 \u0441\u0442\u0435\u043f\u0435\u043d\u044f\u043c \u0434\u0432\u043e\u0439\u043a\u0438. (\u0412 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043c\u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 mip-\u0443\u0440\u043e\u0432\u043d\u044f\u0445.)<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u0430\u0443\u043d\u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433\u0430, \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e, \u043a\u0430\u043a \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e (compute) \u0448\u0435\u0439\u0434\u0435\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u043e\u0431\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b. \u0414\u043b\u044f \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 1\/16 x 1\/16 (mip-\u0443\u0440\u043e\u0432\u0435\u043d\u044c 4), \u0441\u043f\u043e\u0441\u043e\u0431 \u0441 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c \u0432 <strong>2-3 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435<\/strong>, \u0447\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0434\u0430\u0443\u043d\u0441\u044d\u043c\u043f\u043b\u0438\u043d\u0433\u043e\u043c mip-\u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u043e\u0432.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-301009","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301009"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301009\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}