{"id":280095,"date":"2016-10-28T16:00:02","date_gmt":"2016-10-28T12:00:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=280095"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=280095","title":{"rendered":"2D \u043c\u0430\u0433\u0438\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445. \u0427\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/324\/c6f\/ba9\/324c6fba96224374a998f621e8b7b6c6.png\"\/>  <\/p>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043d\u0435\u0431\u0435\u0437\u044b\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043c \u043f\u0440\u043e &quot;\u043a\u043e\u0440\u043e\u0432\u0430\u043d\u044b&quot;? \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043a\u0430\u0436\u0434\u044b\u0439, \u043a\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0433\u0440\u044b (\u0438\u043b\u0438 \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f) \u0440\u0430\u0437\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442 \u043e \u043d\u0435\u043a\u043e\u043c &quot;\u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u0435\u0447\u0442\u044b&quot;, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 &quot;\u0433\u0440\u0430\u0431\u0438\u0442\u044c \u043a\u043e\u0440\u043e\u0432\u0430\u043d\u044b&quot; \u0438 &quot;\u043d\u0430\u0431\u0438\u0433\u0430\u0442\u044c&quot;. \u0410 \u0435\u0449\u0451, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0433\u043e\u0434\u0430 \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u0438 \u043d\u0430 \u0433\u0440\u044f\u0437\u0438 \u0441\u043b\u0435\u0434\u044b \u043e\u0442 \u0441\u0430\u043f\u043e\u0433 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c, \u0438 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0440\u043e\u0441\u043b\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418 \u0435\u0449\u0451, \u0447\u0442\u043e\u0431\u044b\u2026<br \/>  \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0442\u0430\u043a\u0430\u044f \u043f\u043e\u0433\u043e\u043d\u044f \u0437\u0430 \u0445\u043e\u0442\u0435\u043b\u043a\u0430\u043c\u0438 \u2014 \u0441\u043c\u0435\u0440\u0442\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u0430. \u0410 \u0432\u043e\u0442 \u0432 \u0442\u0435\u0445\u043d\u043e-\u0434\u0435\u043c\u043a\u0435 \u2014 \u0441\u0430\u043c\u043e\u0435 \u0442\u043e.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h4 id=\"predyduschie-stati\">\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/h4>\n<p>  <\/p>\n<p><a href=\"https:\/\/habrahabr.ru\/post\/305252\">\u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f. \u0421\u0432\u0435\u0442.<\/a><br \/>  <b>\u0427\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430.<\/b><\/p>\n<p>  <\/p>\n<h4 id=\"oglavlenie\">\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h4>\n<p>  <\/p>\n<ol>\n<li>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/li>\n<li>\u0421\u043f\u0440\u0430\u0439\u0442\u044b<\/li>\n<li>\u041f\u043e\u043b\u0438\u0433\u043e\u043d\u044b<\/li>\n<li>Pixel perfect \u0438 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f<\/li>\n<li>\u0421\u0442\u0430\u0440\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/li>\n<li>Region tree<\/li>\n<li>\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b<\/li>\n<li>\u041f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b<\/li>\n<li>\u041c\u044b\u0441\u043b\u0438 \u043e \u0431\u0443\u0434\u0443\u0449\u0435\u043c<\/li>\n<\/ol>\n<p>  <\/p>\n<h4 id=\"vstuplenie\">\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0431\u044b\u043b \u043e\u043f\u0440\u043e\u0441: \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0442\u0435\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e. \u0418 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u043e\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439. \u041d\u043e \u044d\u0442\u043e \u0434\u043e\u043b\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c, \u0430 \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0445 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u0430\u0445. \u0422\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435, \u0432 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0440\u0435\u043d\u0434\u0435\u0440\u043e\u0432, \u043d\u043e \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0445\u0438\u043d\u0442\u043e\u0432. \u041d\u0435 \u0441\u043a\u0443\u0447\u0430\u0439\u0442\u0435.<\/p>\n<p>  <\/p>\n<p>\u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e\u0435. \u041f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d \u043d\u0430\u0447\u0438\u0441\u0442\u043e \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u043e\u0434\u0430 \u0441 \u0431\u043b\u0438\u043a\u0430\u043c\u0438, \u0432\u043e\u043b\u043d\u0430\u043c\u0438, \u043a\u0438\u043f\u0435\u043d\u0438\u0435\u043c \u0438 \u0437\u0430\u043c\u0435\u0440\u0437\u0430\u043d\u0438\u0435\u043c. \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u2014 \u043d\u0438 \u0441\u043b\u043e\u0432\u0430 \u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430\u0445 \u0438\u043b\u0438 \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0439\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439, \u044d\u0442\u043e \u0435\u0449\u0451 \u0432\u043f\u0435\u0440\u0435\u0434\u0438. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0437\u0430\u0431\u0435\u0433\u0430\u0442\u044c \u0432\u043f\u0435\u0440\u0435\u0434 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0441\u0451 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<p>  <\/p>\n<h4 id=\"sprayty\">\u0421\u043f\u0440\u0430\u0439\u0442\u044b<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0440\u043e \u043c\u0430\u0433\u043e\u0432, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0431\u0435\u0437 \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u0430\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0301\u043c\u043a\u043e\u0432 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0441 \u043d\u0443\u043b\u044f \u2014 \u0441\u0435\u0431\u0435 \u0434\u043e\u0440\u043e\u0436\u0435. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u0438\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0445:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/e48\/16a\/380\/e4816a3807984008a975f931a3d0b222.png\"\/>  <\/p>\n<p><em>\u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0412\u0421\u0401.<\/em><\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443 \u044d\u0442\u0438\u0445 \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432 \u0431\u044b\u043b \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0448\u0435\u0439\u0434\u0435\u0440, \u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0430\u0442\u0447\u0438\u043d\u0433 \u0432 Unity3d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0443\u0445\u043f\u0440\u043e\u0445\u043e\u0434\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u0441\u043e stencil \u0431\u0443\u0444\u0435\u0440\u043e\u043c: \u043f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0440\u0438\u0441\u0443\u0435\u0442 \u043a\u043e\u043d\u0442\u0443\u0440\u044b, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0437\u0430\u043b\u0438\u0432\u043a\u0443. \u0410 \u043b\u044e\u0431\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0441 \u043c\u043d\u043e\u0433\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u0432 \u0431\u0430\u0442\u0447\u0438\u043d\u0433\u0435 <a href=\"https:\/\/docs.unity3d.com\/Manual\/DrawCallBatching.html\">\u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442.<\/a> \u041b\u0443\u0447\u0448\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u0440\u0430\u0439\u0442 \u0434\u0432\u0430\u0436\u0434\u044b, \u043d\u043e \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0448\u0438\u043d \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f, \u0437\u0430\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/49b\/77d\/32e\/49b77d32e5094ffcb9d8a6fb10e633b1.png\"\/>  <\/p>\n<p><em>\u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043c \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0443\u0440.<\/em><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8fc\/f4a\/701\/8fcf4a70103f4f82871590f8939ce20e.png\"\/>  <\/p>\n<p><em>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443.<\/em><\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u0301\u043c\u043e\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/fb3\/51f\/e97\/fb351fe97c87447abd9f3a00f626eb72.png\"\/>  <\/p>\n<p><em>\u0421\u0442\u0435\u043d\u044b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u0422\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0438 \u0446\u0432\u0435\u0442 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/em><\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0425\u0438\u043d\u0442\u044b \u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li><strong>\u0423\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0443.<\/strong> \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0440\u0443\u043a\u0430\u043c\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0440\u0430\u0439\u0442\u044b. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441 <em>Contour<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0438 2 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u041f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u0446\u0435\u043d\u0435 \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u043e \u0434\u0432\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u0441 <em>SpriteRenderer<\/em> (\u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u0438 \u0444\u043e\u043d\u0430).<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3f6\/b65\/828\/3f6b65828a6c4ddda85217d731f6fb47.png\"\/><\/li>\n<li><strong>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441.<\/strong> \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u0444\u0430\u0431\u044b-\u0441\u043f\u0440\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0446\u0435\u043d\u0435 (\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0435\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432). \u041a\u043e\u0433\u0434\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u0445 \u0432 <em>Contour<\/em>, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0444\u0430\u0431\u043e\u0432 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0439\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0435\u0444\u0430\u0431 (\u043f\u043e \u0438\u043c\u0435\u043d\u0438), \u0438 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0432 \u043d\u0443\u0436\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0444\u0430\u0431\u0430. \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u2014 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/AssetDatabase.LoadAssetAtPath.html\">UnityEditor.AssetDatabase.LoadAssetAtPath<\/a> \u0438 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/PrefabUtility.ConnectGameObjectToPrefab.html\">UnityEditor.PrefabUtility.ConnectGameObjectToPrefab<\/a><\/li>\n<li><strong>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 drag&#8217;n&#8217;drop.<\/strong> \u041c\u0438\u043d\u0443\u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043f\u0440\u0430\u0439\u0442\u044b \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430 \u0441\u0446\u0435\u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 drag&#8217;n&#8217;drop&#8217;\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432-\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u0432. \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/SelectionBaseAttribute.html\">[SelectionBase]<\/a> \u043f\u0435\u0440\u0435\u0434 \u043a\u043b\u0430\u0441\u0441\u043e\u043c <em>Contour<\/em>.<\/li>\n<li><strong>\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0444\u0430\u0431\u043e\u0432.<\/strong> \u0412 \u043c\u0435\u043d\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0435\u0444\u0430\u0431\u044b \u0441 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u043c\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u043f\u0440\u0430\u0439\u0442\u044b, \u0438, \u0435\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u0430\u043c\u043e\u043c\u0443 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0440\u0435\u0444\u0430\u0431\u044b \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0449\u0451 \u0438 <em>SpriteRenderer<\/em>, \u0441\u043f\u0440\u0430\u0439\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0437\u0430\u0434\u0430\u0451\u0442 \u043c\u043e\u0439 <em>Contour<\/em>. \u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u0446\u0435\u043d\u0443 \u044f \u0443\u0434\u0430\u043b\u044f\u044e \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u0432 \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0435 <em>SpriteRenderer<\/em>.<\/li>\n<li>\n<p><strong>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 OnValidate<\/strong>. \u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0430 \u0441\u0446\u0435\u043d\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>OnValidate<\/em> \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c \u044f \u0443\u0434\u0430\u043b\u044f\u044e <em>SpriteRenderer<\/em>. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0438 <em>Destroy<\/em>, \u043d\u0438 <em>DestroyImmediate<\/em> \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 (\u0431\u0435\u0437 \u043a\u043e\u043b\u0434\u043e\u0432\u0441\u0442\u0432\u0430 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0441\u0442\u044b\u043b\u044c:<\/p>\n<p>  <\/p>\n<pre><code>#if UNITY_EDITOR void OnValidate() { if (UnityEditor.PrefabUtility.GetPrefabParent(gameObject) == null &amp;&amp; UnityEditor.PrefabUtility.GetPrefabObject(gameObject) != null) {     var renderer = GetComponent&lt;SpriteRenderer&gt;();     renderer.sprite = sprite;     return; } else {     var renderer = GetComponent&lt;SpriteRenderer&gt;();     UnityEditor.EditorApplication.delayCall+=()=&gt;     {         if (renderer == null)             return;          DestroyImmediate(renderer);     }; } } #endif<\/code><\/pre>\n<p>  <\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043a\u043e\u0434\u043e\u043c: \u043a\u043b\u0430\u0441\u0441 Contour<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>using UnityEngine; using System.Collections; using NewEngine.Core.Components;  namespace NewEngine.Core.Static {     [SelectionBase]     public class Contour : MonoBehaviour {         public interface SpriteSettings {             Color Color { get; set; }              int SortingLayerId { get; set; }              string SortingLayerName { get; set; }              int SortingOrder { get; set; }              Material Material { get; set; }         }          [System.Serializable]         class SpriteSettingsImpl : SpriteSettings {             [SerializeField] Material material;             [SerializeField] SortingLayer sortingLayer;             [SerializeField] int sortingOrder;             [SerializeField] Color color = Color.white;             SpriteRenderer spriteRenderer;              public Color Color {                 set { color = value; }                 get { return color; }             }              public int SortingLayerId {                 set {                     \/\/ TODO \u043c\u0431 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0446\u0438\u043a\u043b\u0430?                      foreach (var layer in SortingLayer.layers) {                         if (layer.id != value)                             continue;                          sortingLayer = layer;                          if (spriteRenderer != null)                             spriteRenderer.sortingLayerID = sortingLayer.id;                          return;                     }                      sortingLayer = new SortingLayer();                      if (spriteRenderer != null)                         spriteRenderer.sortingLayerID = sortingLayer.id;                 }                  get {                     return sortingLayer.id;                 }             }              public string SortingLayerName {                 set {                     \/\/ TODO \u043c\u0431 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0446\u0438\u043a\u043b\u0430?                      foreach (var layer in SortingLayer.layers) {                         if (layer.name != value)                             continue;                          sortingLayer = layer;                          if (spriteRenderer != null)                             spriteRenderer.sortingLayerID = sortingLayer.id;                          return;                     }                      sortingLayer = new SortingLayer();                      if (spriteRenderer != null)                         spriteRenderer.sortingLayerID = sortingLayer.id;                 }                  get {                     return sortingLayer.name;                 }             }              public int SortingOrder {                 set {                     sortingOrder = value;                      if (spriteRenderer != null)                         spriteRenderer.sortingOrder = sortingOrder;                 }                 get { return sortingOrder; }             }              public Material Material {                 set {                     material = value;                       if (spriteRenderer != null)                         spriteRenderer.sharedMaterial = material;                 }                 get { return material; }             }              public SpriteRenderer SpriteRenderer {                 set {                      spriteRenderer = value;                      if (spriteRenderer == null)                         return;                      spriteRenderer.color = color;                     spriteRenderer.sortingOrder = sortingOrder;                     spriteRenderer.sortingLayerID = sortingLayer.id;                     spriteRenderer.material = material;                 }             }         }          [SerializeField] SpriteSettingsImpl fillSettings;         [SerializeField] SpriteSettingsImpl contourSettings;         [SerializeField] Sprite sprite;          [SerializeField] bool flipX;         [SerializeField] bool flipY;          SpriteRenderer fillSprite;         SpriteRenderer contourSprite;          void OnValidate() { #if UNITY_EDITOR             if (IsPrefab) {                 var renderer = this.GetRequiredComponent&lt;SpriteRenderer&gt;();                 renderer.sprite = sprite;                 return;             } else {                 var renderer = this.GetRequiredComponent&lt;SpriteRenderer&gt;();                 UnityEditor.EditorApplication.delayCall+=()=&gt;                 {                     if (renderer == null)                         return;                      DestroyImmediate(renderer);                 };             } #endif                       var tmpFill = FillSprite;             var tmpContour = ContourSprite;              ApplySettings(fillSprite, fillSettings);             ApplySettings(contourSprite, contourSettings);         }          public SpriteRenderer FillSprite {             get {                 if (IsPrefab)                     return null;                  if (fillSprite == null)                     fillSprite = Create(fillSettings, &quot;fill&quot;);                  return fillSprite;             }         }          public SpriteRenderer ContourSprite {             get {                 if (IsPrefab)                     return null;                  if (contourSprite == null)                     contourSprite = Create(contourSettings, &quot;contour&quot;);                  return contourSprite;             }         }          public SpriteSettings FillSettings { get { return fillSettings; } }          public SpriteSettings ContourSettings { get { return contourSettings; } }          public bool FlipX {             get {                 return flipX;             }             set {                 flipX = value;                 FillSprite.flipX = flipX;                 ContourSprite.flipX = flipX;             }         }          public bool FlipY {             get {                 return flipY;             }             set {                 flipY = value;                 FillSprite.flipY = flipY;                 ContourSprite.flipY = flipY;             }         }          public Sprite Sprite {             get {                 return sprite;             }             set {                 sprite = value;                 FillSprite.sprite = sprite;                 ContourSprite.sprite = sprite;             }         }          SpriteRenderer Create(SpriteSettingsImpl settings, string spriteName) {             var child = transform.FindChild(spriteName);             var obj = child == null ? null : child.gameObject;              if (obj == null) {                 obj = new GameObject();                 obj.name = spriteName;                 obj.transform.parent = transform;             }              var sprite = obj.GetRequiredComponent&lt;SpriteRenderer&gt;();             if (sprite == null) {                 sprite = obj.AddComponent&lt;SpriteRenderer&gt;();                 sprite.receiveShadows = false;                 sprite.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;                 sprite.useLightProbes = false;             }              ApplySettings(sprite, settings);             return sprite;         }          void ApplySettings(SpriteRenderer spriteRenderer, SpriteSettingsImpl settings) {             spriteRenderer.flipX = flipX;             spriteRenderer.flipY = flipY;             spriteRenderer.sprite = sprite;             settings.SpriteRenderer = spriteRenderer;              spriteRenderer.transform.localPosition = Vector3.zero;             spriteRenderer.transform.localScale = Vector3.one;             spriteRenderer.transform.localRotation = Quaternion.identity;         }          bool IsPrefab {             get { #if UNITY_EDITOR                 return UnityEditor.PrefabUtility.GetPrefabParent(gameObject) == null &amp;&amp; UnityEditor.PrefabUtility.GetPrefabObject(gameObject) != null; #else                 return false; #endif             }         }     }  } #endif<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0428\u0435\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0437\u0430\u043b\u0438\u0432\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>Shader &quot;NewEngine\/Game\/Foreground\/Contour&quot; {     Properties     {         _MainTex (&quot;MainTex&quot;, 2D) = &quot;white&quot; {}         [MaterialToggle] PixelSnap (&quot;Pixel snap&quot;, Float) = 0     }     SubShader     {         Tags         {             &quot;Queue&quot;=&quot;Transparent&quot;             &quot;IgnoreProjector&quot;=&quot;True&quot;             &quot;RenderType&quot;=&quot;Transparent&quot;             &quot;PreviewType&quot;=&quot;Plane&quot;             &quot;CanUseSpriteAtlas&quot;=&quot;True&quot;         }         Cull Off         Lighting Off         ZWrite On         ZTest Off         Fog { Mode Off }         Blend One OneMinusSrcAlpha          Pass         {             \/\/ \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c             Stencil             {                 WriteMask 7                 Ref 6                 Pass Replace             }              CGPROGRAM             #pragma vertex vert             #pragma fragment frag              #include &quot;UnityCG.cginc&quot;              struct appdata             {                 float4 vertex : POSITION;                 float2 uv : TEXCOORD0;                 float4 color : COLOR;             };              struct v2f             {                 float2 uv : TEXCOORD0;                 float4 vertex : SV_POSITION;                 float4 color : COLOR;             };              sampler2D _MainTex;              v2f vert (appdata v)             {                 v2f o;                 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);                 #ifdef PIXELSNAP_ON                 v.vertex = UnityPixelSnap (v.vertex);                 #endif                 o.uv = v.uv;                 o.color = v.color;                 return o;             }              fixed4 frag (v2f i) : SV_Target0             {                 fixed4 color = tex2D(_MainTex, i.uv) * i.color;                  if (color.a == 0)                     discard;                  return i.color * color.a;             }             ENDCG         }     } }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0428\u0435\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0443\u0440\u0430. \u041c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>Shader &quot;NewEngine\/Game\/Foreground\/Fill&quot; {     Properties     {         _MainTex (&quot;MainTex&quot;, 2D) = &quot;white&quot; {}         _BackgroundTex (&quot;BackgroundTex&quot;, 2D) = &quot;white&quot; {}         _MaskColor (&quot;MaskColor&quot;, Color) = (0, 0, 0, 0)         [MaterialToggle] PixelSnap (&quot;Pixel snap&quot;, Float) = 0     }     SubShader     {         Tags         {             &quot;Queue&quot;=&quot;Transparent&quot;             &quot;IgnoreProjector&quot;=&quot;True&quot;             &quot;RenderType&quot;=&quot;Transparent&quot;             &quot;PreviewType&quot;=&quot;Plane&quot;             &quot;CanUseSpriteAtlas&quot;=&quot;True&quot;         }         Cull Off         Lighting Off         ZWrite On         ZTest Off         Fog { Mode Off }         Blend One OneMinusSrcAlpha          Pass         {             Stencil             {                 WriteMask 7                 Ref 2                 Pass Replace             }              CGPROGRAM             #pragma vertex vert             #pragma fragment frag              #include &quot;UnityCG.cginc&quot;              struct appdata             {                 float4 vertex : POSITION;                 float4 color : COLOR;                 float2 uv : TEXCOORD0;             };              struct v2f             {                 float4 uv : TEXCOORD0;                 float4 vertex : SV_POSITION;                 float4 color : COLOR;             };              sampler2D _BackgroundTex;             sampler2D _MainTex;             float4 _BackgroundTex_ST;             float4 _BackgroundTex_TexelSize;             fixed4 _MaskColor;              v2f vert (appdata v)              {                 v2f o;                 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);                 o.uv.xy = v.uv;                  o.uv.zw = mul(_Object2World, v.vertex) * fixed4(1 \/ _BackgroundTex_TexelSize.zw * 32, 1, 1);                 o.color = v.color;                 return o;             }              fixed4 frag (v2f i) : SV_Target             {                 fixed4 backgroundColor = tex2D(_BackgroundTex, i.uv.zw) * i.color;                 fixed4 mask = tex2D(_MainTex, i.uv.xy);                  if (mask.a == 0 || backgroundColor.a == 0 || length(mask - _MaskColor) &gt; 0.00001 \/* threshold *\/)                     discard;                  return backgroundColor * backgroundColor.a;             }             ENDCG         }     } }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h4 id=\"poligony\">\u041f\u043e\u043b\u0438\u0433\u043e\u043d\u044b<\/h4>\n<p>  <\/p>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430, \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u0448\u0430\u043d\u0438\u043d\u0443 \u0438\u0437 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432: \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0437\u0435\u043c\u043b\u0438 \u0441 \u044f\u043c\u0430\u043c\u0438 \u0438 \u043f\u0435\u0449\u0435\u0440\u0430\u043c\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043b\u0435\u0442\u0443, \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 (\u043a\u0430\u043a \u0432 <em>PolygonCollider2D<\/em>). \u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043c \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <em>MeshRenderer<\/em> \u0441 \u0434\u0432\u0443\u043c\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438 (\u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u0438 \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f submeshes).<\/p>\n<p>  <\/p>\n<blockquote><p>\u041d\u0435 \u0441\u0442\u0430\u043d\u0443 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0434\u043b\u044f \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e \u0432\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u0430 \u0432 AssetStore \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p><\/blockquote>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/JMkJr4uhqew?rel=0&amp;showinfo=1\" frameborder=\"0\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" style=\"top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p><em>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u043d\u0435\u043e\u0442\u043b\u0438\u0447\u0438\u043c\u044b\u0439 \u043e\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 PolygonCollider2D.<\/em><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u0432\u044b\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>Core.Shapes.Shape<\/strong> \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430 \u0438 \u043d\u0443\u0436\u043d\u0443\u044e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443. \u041d\u0435 <em>MonoBehaviour<\/em>;<\/li>\n<li><strong>Core.Shapes.EditableShape<\/strong> \u2014 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a <em>MonoBehaviour<\/em> \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <em>Shape<\/em>;<\/li>\n<li><strong>Core.Shapes.ShapeRenderer<\/strong> \u2014 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u0438\u0437 <em>EditableShape<\/em> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <em>MeshRenderer<\/em>;<\/li>\n<li><strong>Core.Shapes.ShapeCollider2D<\/strong> \u2014 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u0438\u0433\u043e\u043d \u0438\u0437 <em>EditableShape<\/em> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <em>PolygonCollider2D<\/em>.<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0445\u0438\u043d\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u044f \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e \u0443\u043f\u0443\u0441\u043a\u0430\u043b \u0438\u0437 \u0432\u0438\u0434\u0443 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/RequireComponent.html\">RequireComponent<\/a>. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <em>ShapeRenderer<\/em> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 <em>EditableShape<\/em> \u0438 <em>MeshRenderer<\/em>, \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0435\u0433\u043e \u0432 <em>GameObject<\/em> \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h4 id=\"pixel-perfect-i-celochislennaya-geometriya\">Pixel perfect \u0438 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f<\/h4>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043c\u044b \u0443\u0431\u0438\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0443\u044e \u0441\u0442\u0430\u044e \u0437\u0430\u0439\u0446\u0435\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041c\u043e\u0436\u0435\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044c) \u0438 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434 \u044d\u043a\u0440\u0430\u043d;<\/li>\n<li>\u041c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b (\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0430\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c);<\/li>\n<li>\u041c\u043e\u0436\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u043e\u0439 (\u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u0435\u0435);<\/li>\n<li>\u041c\u043e\u0436\u0435\u043c \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043b\u0438 \u0431\u0430\u0433\u0438 \ud83d\ude42<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0440\u0430\u0432\u0434\u0430 \u0437\u0430 \u044d\u0442\u0438\u0445 \u0437\u0430\u0439\u0446\u0435\u0432 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0442\u044c, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 &quot;\u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438&quot;, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a:<br \/> \n<ul>\n<li><strong>IntVector2<\/strong> \u2014 \u043f\u043e \u0441\u0443\u0442\u0438, \u043a\u043e\u043f\u0438\u044f <em>UnityEngine.Vector2<\/em>, \u043d\u043e \u0441 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438. \u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e <em>UnityEngine.Vector2<\/em>, \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u0438\u043b\u0438 \u0431\u0435\u0437 (\u0432 \u043e\u0434\u043d\u043e\u043c \u044e\u043d\u0438\u0442\u0435 32 \u043f\u0438\u043a\u0441\u0435\u043b\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0447\u0438\u0441\u043b\u0430!), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<br \/> \n<pre><code>public Vector2 ToPixels(); public Vector2 ToUnits(); public static IntVector2 FromPixels(Vector2 v); public static IntVector2 FromUnits(Vector2 v); public static IntVector2 FromUnitsRound(Vector2 v); public static IntVector2 FromUnitsCeil(Vector2 v);<\/code><\/pre>\n<\/li>\n<li><strong>IntRect.<\/strong> \u041d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 <em>UnityEngine.Rect<\/em>. \u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <em>LineCollision<\/em> \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0439 \u0441 \u043e\u0442\u0440\u0435\u0437\u043a\u0430\u043c\u0438 \u043f\u0440\u044f\u043c\u044b\u0445 (\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c <a href=\"https:\/\/gist.github.com\/ChickenProp\/3194723\">\u041b\u0438\u0430\u043d\u0433\u0430-\u0411\u0430\u0440\u0441\u043a\u0438<\/a>);<\/li>\n<li><strong>IntLine.<\/strong> \u041e\u0442\u0440\u0435\u0437\u043e\u043a \u043f\u0440\u044f\u043c\u043e\u0439 \u0441 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0438 \u043a\u043e\u043d\u0446\u043e\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445;<\/li>\n<li><strong>IntMatrix.<\/strong> \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u0434\u043b\u044f \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439, \u0433\u0434\u0435 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u044b \u043a\u0440\u0430\u0442\u043d\u044b 90\u00b0, \u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u2014 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b;<\/li>\n<li><strong>IntAngle.<\/strong> \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u0434\u043e 90\u00b0, \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435, \u043a\u0430\u043a\u0430\u044f \u0442\u0430\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u043e\u0432?<\/li>\n<li><strong>Poser.<\/strong> \u042d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0439 <em>GameObject<\/em> \u043a\u0440\u0430\u0442\u043d\u043e \u0438\u0433\u0440\u043e\u0432\u043e\u043c\u0443 &quot;\u043f\u0438\u043a\u0441\u0435\u043b\u044e&quot;, \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u044b, \u043d\u0435 \u043a\u0440\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u044f\u043c\u043e\u043c\u0443 \u0443\u0433\u043b\u0443 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <em>SpriteRender<\/em> \u0438 \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c pivot \u0441\u043f\u0440\u0430\u0439\u0442\u0430). \u042d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/ExecuteInEditMode.html\">[ExecuteInEditMode]<\/a>. \u0412\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442: \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f (\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430, \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0438 \u0442.\u0434.) <em>Poser<\/em> \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c \u043a\u043b\u0430\u0441\u0441 <em>PoserListener<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0432\u0441\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 <em>Poser<\/em> \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u0435\u0433\u043e\u043c. \u042d\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c;<\/li>\n<li><strong>CameraManager.<\/strong> \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a\u0430\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u0430\u043c\u0435\u0440\u0443 \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0448\u0442\u0443\u043a<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0434\u043b\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u0433\u0438\u0437\u043c\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <em>IntVector2<\/em>, <em>IntRect<\/em> \u0438 <em>IntLine<\/em> \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <em>OnDrawGizmos<\/em>. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435.<\/li>\n<li>\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u044b \u2014 \u0443\u0436\u0430\u0441\u043d\u043e. \u042f \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u0445 \u043f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043b\u0435\u0432\u043e\u043c\u0443 \u0443\u0433\u043b\u0443, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0430\u043c\u0435\u0440\u044b \u2014 \u044d\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0435\u0451 \u0446\u0435\u043d\u0442\u0440\u0430. \u0410 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 renderTarget \u043a\u0430\u043c\u0435\u0440\u044b \u0443\u0433\u043b\u044b, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0443\u0435\u0437\u0436\u0430\u044e\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <em>\u043a\u0430\u043a<\/em> \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u044b, \u043d\u043e \u0438 <em>\u043a\u043e\u0433\u0434\u0430<\/em>.<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h4 id=\"staraya-struktura-proekta\">\u0421\u0442\u0430\u0440\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h4>\n<p>  <\/p>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u044b\u043b \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0442\u0435\u043d\u0435\u0439? \u0418 \u0431\u043e\u043b\u044c\u0448\u0430\u0301\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u0432 \u043d\u0435\u043a\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0448\u0430? \u0422\u0430\u043a \u0432\u043e\u0442, \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435, \u044d\u0442\u043e \u0432\u0441\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0434\u0430. \ud83d\ude42<\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0418 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0432\u043e\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0434\u0432\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u043f\u043e\u043c\u0438\u043c\u043e <del>legacy-\u043a\u043e\u0434\u0430<\/del> \u0433\u043e\u0432\u043d\u043e\u043a\u043e\u0434\u0430, \u0431\u0443\u0434\u0435\u043c \u0447\u0435\u0441\u0442\u043d\u044b):<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430. \u041e\u0434\u043d\u0438\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0431\u044b\u043b\u043e \u0448\u0442\u0443\u043a\u0438 3-4 \u0438 \u0432\u0441\u0435 \u2014 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b (\u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u0442\u043e\u0447\u043a\u0430 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u044e, \u0442\u043e\u0447\u043a\u0430 \u0441 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439).<\/li>\n<li>\u041d\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041a\u0430\u0436\u0434\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e \u0431\u044b\u043b\u0438 \u043d\u0443\u0436\u043d\u044b \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u043f\u0440\u0430\u0439\u0442\u0430\u0445, \u043d\u043e \u0447\u0443\u0442\u044c \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435. \u0418 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0443\u0434\u0430-\u0441\u044e\u0434\u0430 \u0441\u043e \u0432\u0441\u044f\u043a\u0438\u043c\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438, \u0447\u0442\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u043e \u043d\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u043d\u0438 \u0438\u0437\u044f\u0449\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e &quot;\u0442\u0432\u0435\u0440\u0434\u044b\u0445&quot; \u0441\u043f\u0440\u0430\u0439\u0442\u0430\u0445 \u0437\u0430\u0301\u043c\u043a\u043e\u0432:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0422\u0435\u043d\u0438;<\/li>\n<li>\u0412\u0435\u0442\u0435\u0440;<\/li>\n<li>\u0420\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435;<\/li>\n<li>\u0422\u0440\u0430\u0432\u0430;<\/li>\n<li>\u0427\u0430\u0441\u0442\u0438\u0446\u044b;<\/li>\n<li>\u0424\u0438\u0437\u0438\u043a\u0430;<\/li>\n<li>\u0412\u043e\u0434\u0430;<\/li>\n<li>\u041f\u0440\u043e\u0447\u0435\u0435 (\u043d\u0438\u0442\u0438 \u043f\u0430\u0443\u0442\u0438\u043d\u044b \u0438 \u0446\u0435\u043f\u0438 \u0441\u0432\u0435\u0442\u0438\u043b\u044c\u043d\u0438\u043a\u043e\u0432).<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u0435.<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><strong>UnityEngine.Sprite.<\/strong> \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043f\u0440\u0430\u0439\u0442\u044b. \u0411\u0430\u0437\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e;<\/li>\n<li><strong>Contour.<\/strong> \u041a\u043e\u043d\u0442\u0443\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432). \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044f\u043c\u0438;<br \/> \n<ul>\n<li><em>UnityEngine.Sprite[] \u2192 Contour<\/em>: \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043f\u0440\u0430\u0439\u0442 \u0432 \u043a\u043e\u043d\u0442\u0443\u0440\u044b, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Rects.<\/strong> \u041d\u0430\u0431\u043e\u0440 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432;<br \/> \n<ul>\n<li><em>UnityEngine.Sprite[] \u2192 Rects<\/em>: \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043f\u0440\u0430\u0439\u0442 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Shape.<\/strong> \u041a\u043b\u0430\u0441\u0441, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 Contour \u0438 Rects;<\/li>\n<li><strong>Shapes.<\/strong> \u041d\u0430\u0431\u043e\u0440 Shape \u0438 aabb \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430;<\/li>\n<li><strong>Batch.<\/strong> \u041d\u0430\u0431\u043e\u0440 Shape \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 Contour;<br \/> \n<ul>\n<li>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u0435\u0448\u0435\u0439;<\/li>\n<li>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u0442\u0432\u0435\u0440\u0434\u043e\u0441\u0442\u044c;<\/li>\n<li>\u0414\u043b\u044f \u0440\u0435\u0439\u043a\u0430\u0441\u0442\u0430.<\/li>\n<\/ul>\n<\/li>\n<li><strong>WindGrid.<\/strong> \u041a\u0435\u0448 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439 \u0434\u043b\u044f \u0432\u0435\u0442\u0440\u0430 \u0438\u0437 <em>Batch \u2192 Shapes<\/em>;<\/li>\n<li><strong>QuadTree.<\/strong> \u0411\u0430\u0437\u043e\u0432\u0430\u044f (\u0438 \u043a\u043e\u0441\u044f\u0447\u043d\u0430\u044f) \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u0440\u0435\u0432\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0443\u0441\u0442\u044b\u0445 \u043e\u0431\u044a\u0451\u043c\u043e\u0432;<\/li>\n<li><strong>WaterVolumes.<\/strong> \u041f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 \u0432\u043e\u0434\u044b \u0438\u0437 <em>Batch \u2192 Contour<\/em>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u044d\u0442\u043e \u0431\u0435\u0437\u0443\u043c\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<ul>\n<li><strong>\u0422\u0435\u043d\u0438.<\/strong> <em>Batch \u2192 \u043e\u0431\u0449\u0438\u0439 Contour:<\/em> \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0442\u0435\u043d\u0435\u0432\u043e\u0433\u043e \u043c\u0435\u0448\u0430;<\/li>\n<li><strong>\u0412\u0435\u0442\u0435\u0440.<\/strong> <em>WindGrid \u2192 Batch \u2192 Shapes:<\/em> \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0432\u0435\u0442\u0440\u0430 (\u043f\u043e\u0438\u0441\u043a \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439);<\/li>\n<li><strong>\u0420\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435.<\/strong><br \/> \n<ul>\n<li><em>Batch \u2192 Shapes:<\/em><\/li>\n<li>\u0414\u043b\u044f raycast&#8217;\u0430 (\u043f\u043e\u0438\u0441\u043a \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0441\u0432\u0435\u0449\u0451\u043d\u043d\u043e\u0441\u0442\u0438);<\/li>\n<li>\u0414\u043b\u044f testPoint&#8217;\u0430 (\u043f\u043e\u0438\u0441\u043a \u0442\u0432\u0435\u0440\u0434\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432).<\/li>\n<li><em>QuadTree \u2192 Batch \u2192 Shapes<\/em>:<\/li>\n<li>\u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0443\u0441\u0442\u044b\u0445 \u043e\u0431\u044a\u0435\u043c\u043e\u0432.<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u0422\u0440\u0430\u0432\u0430.<\/strong><br \/> \n<ul>\n<li><em>Batch \u2192 Shapes:<\/em> \u043c\u0435\u0442\u043e\u0434 <em>CircleQuery<\/em> \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439;<\/li>\n<li><em>Batch \u2192 \u043e\u0431\u0449\u0438\u0439 Contour:<\/em> \u0434\u043b\u044f \u043f\u043e\u0441\u0430\u0434\u043a\u0438 \u0442\u0440\u0430\u0432\u044b;<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u0427\u0430\u0441\u0442\u0438\u0446\u044b.<\/strong> <em>Batch \u2192 Shapes:<\/em> \u043c\u0435\u0442\u043e\u0434 <em>PopPoint<\/em> (\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430) \u0434\u043b\u044f \u0432\u044b\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0438\u0446 \u0438\u0437 \u0441\u0442\u0435\u043d;<\/li>\n<li><strong>\u0424\u0438\u0437\u0438\u043a\u0430.<\/strong> <em>Batch \u2192 \u043e\u0431\u0449\u0438\u0439 Contour:<\/em> \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0430\u0439\u0434\u0435\u0440\u043e\u0432;<\/li>\n<li><strong>\u0412\u043e\u0434\u0430.<\/strong> <em>WaterVolumes \u2192 Batch \u2192 \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440:<\/em> \u043f\u043e\u0438\u0441\u043a \u043c\u0435\u0441\u0442, \u0433\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432\u043e\u0434\u0430;<\/li>\n<li><strong>\u041f\u0440\u043e\u0447\u0435\u0435.<\/strong> <em>Batch \u2192 Shapes:<\/em> raycast \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0447\u043a\u0438 \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0438\u043b\u044c\u043d\u0438\u043a\u043e\u0432 \u0438 \u043f\u0430\u0443\u0442\u0438\u043d\u044b.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h4 id=\"region-tree\">Region tree<\/h4>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0433\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 Region tree, \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Volume tree.<br \/>  \u0420\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043d\u0430 4 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043b\u0438\u0441\u0442 \u043d\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0443\u0441\u0442\u044b\u043c, \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c. \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043b\u0438\u0441\u0442\u0443 \u0431\u0438\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (\u0438\u043b\u0438 \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u043c \u043f\u0443\u0441\u0442\u044b\u0435 \u0443\u0437\u043b\u044b \u043e\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445).<br \/>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u0435\u0442 \u044d\u0442\u043e \u0434\u0435\u0440\u0435\u0432\u043e, \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><em> \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u0430. <\/em> \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0442\u0432\u0435\u0440\u0434\u044b\u0435 \u0442\u043e\u0447\u043a\u0438, \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0441 \u043d\u0435\u043a\u0438\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 Region tree, \u0430 \u0437\u0430\u0442\u0435\u043c, \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u0446\u0435\u043d\u0443, \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043e\u0431\u0449\u0435\u0435 \u0434\u0435\u0440\u0435\u0432\u043e.<\/li>\n<li><em>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0432\u0435\u0440\u0434\u043e\u0441\u0442\u0438 \u0442\u043e\u0447\u043a\u0438.<\/em> \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443, \u043f\u043e\u043a\u0430 \u0443 \u0443\u0437\u043b\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043c\u043a\u0438 (\u0432 \u043c\u043e\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0435\u0440\u0435\u0432\u0430 \u0443\u0437\u0435\u043b \u043f\u0443\u0441\u0442\u043e\u0439, \u0435\u0441\u043b\u0438 Node = null, \u043f\u043e\u043b\u043d\u044b\u0439 \u2014 \u0435\u0441\u043b\u0438 Node.children == null, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 Node.children \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432);<\/li>\n<li><em>Raycast<\/em>. \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430 \u0441 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430\u043c\u0438 \u0443\u0437\u043b\u043e\u0432.<\/li>\n<li><em>\u041f\u043e\u0438\u0441\u043a \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u0443\u0442\u0438 \u0434\u043e \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/em>. \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u043b\u0438\u0441\u0442 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0434\u0435\u0440\u0435\u0432\u0443 \u0432\u0432\u0435\u0440\u0445, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0443\u0437\u043b\u044b \u0441\u043e\u0441\u0435\u0434\u0435\u0439 (\u0435\u0441\u043b\u0438 \u0443\u0437\u0435\u043b \u043f\u0443\u0441\u0442\u043e\u0439, \u0441\u0440\u0430\u0437\u0443 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u043d\u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043c\u043a\u0438 \u2014 \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0432\u043d\u0438\u0437 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0438\u0449\u0435\u043c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u043f\u0443\u0441\u0442\u043e\u0439).<\/li>\n<li><em>\u041f\u043e\u0438\u0441\u043a \u043e\u0442\u0440\u0435\u0437\u043a\u043e\u0432, \u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435<\/em>. \u0422\u0443\u0442 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0438\u0437 \u0434\u0435\u0440\u0435\u0432\u0430, \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430\u043c, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (\u0443\u0440\u0430, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438!):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/06f\/048\/b2e\/06f048b2e4d543828327b5e424982807.png\"\/>  <\/p>\n<p><em>\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c. \u0421\u0442\u0435\u043d\u044b \u0438\u0437 \u0441\u043f\u0440\u0430\u0439\u0442\u043e\u0432, \u0437\u0435\u043c\u043b\u044f \u2014 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b.<\/em><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/255\/11c\/3e4\/25511c3e4391406499b4b86d3fa0c093.png\"\/>  <\/p>\n<p><em>\u041f\u0440\u0435\u0434\u0440\u0430\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 region tree.<\/em><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3e3\/5e4\/f95\/3e35e4f9548640f99b6e7423b588e67a.png\"\/>  <\/p>\n<p><em>\u041f\u0440\u0435\u0434\u0440\u0430\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438.<\/em><\/p>\n<p>  <\/p>\n<h4 id=\"menedzhery\">\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b<\/h4>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u044d\u0442\u0430 \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b \u043c\u043e\u0434\u0443\u043b\u044f\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u0438\u043d\u0443\u0442\u043a\u0430 \u0431\u043e\u043b\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<p>\u0412 &quot;\u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043d\u043e\u0439&quot; \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b\/\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u0441\u0430\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b (\u0440\u0430\u0441\u0447\u0435\u0442 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0444\u0438\u0437\u0438\u043a\u0438 \u0447\u0430\u0441\u0442\u0438\u0446 \u0438 \u0442.\u0434) \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442 <em>MonoBehaviour<\/em>. \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c: \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0438 \u0440\u0430\u0437\u0440\u043e\u0441\u0448\u0438\u0439\u0441\u044f \u043a\u043e\u0434, \u0441\u0438\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u044f \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0433\u0430\u043b \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u043d\u0435 \u043f\u043e\u0434\u0446\u0435\u043f\u043b\u044f\u043b\u0438 \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u044b\u043a\u043d\u0443\u0442\u044c \u0433\u0430\u043b\u043a\u0443 \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0434\u0435\u0440\u0435\u0432\u0430, \u0437\u0430\u0442\u0435\u043c \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0441\u0432\u0435\u0442\u0430, \u0437\u0430\u0442\u0435\u043c \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0432\u043e\u0434\u044b \u0438 \u0442.\u0434. \u0418 \u0432\u0441\u0451 \u0440\u0430\u0434\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0445\u043e\u0440\u043e\u0448\u043e \u043b\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u0301\u043c\u043e\u043a. \u0422\u0430\u043a \u0441\u0435\u0431\u0435, \u043f\u0440\u0430\u0432\u0434\u0430?<\/p>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0437\u0431\u0430\u0432\u0438\u043c\u0441\u044f \u043e\u0442 <em>MonoBehaviour<\/em>. \u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0441# \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438.<br \/>  \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0440\u0430\u0437\u043d\u0435\u0441\u0435\u043c \u043a\u043e\u0434 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u043c \u0438\u043c\u0451\u043d, \u043e\u0434\u043d\u043e \u0438\u043c\u044f \u2014 \u043e\u0434\u0438\u043d \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<br \/>  \u0418, \u0432-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043e\u0434\u0438\u043d <em>MonoBehaviour<\/em>-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 \u0442.\u0434.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/556\/37c\/20d\/55637c20d44c4a708d9771a1b7199f8f.png\"\/>  <\/p>\n<p><em>\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b. \u041f\u0440\u0438\u0447\u0451\u0441\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432 \u0433\u0430\u043b\u0441\u0442\u0443\u043a\u0430\u0445.<\/em><\/p>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430 \u0441\u0446\u0435\u043d\u0435 \u043b\u0435\u0436\u0430\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0434\u043d\u0430 \u0441\u0444\u0435\u0440\u0430 \u0432\u043b\u0438\u044f\u043d\u0438\u044f, \u043a\u043e\u0434 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d <em>NewEngine.Core<\/em> (<em>Core.Geom<\/em>, <em>Core.Illumination<\/em>, <em>Core.Rendering<\/em> \u0438 \u0442.\u0434.). \u0414\u0432\u0438\u0433\u0430\u0435\u043c \u0441\u043f\u0440\u0430\u0439\u0442 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0438\u2026 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u0430\u043a\u0446\u0438\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0432\u044b\u0448\u0435 \u0431\u044b\u043b \u043e\u043f\u0438\u0441\u0430\u043d \u043a\u043b\u0430\u0441\u0441 <em>PoserListener<\/em>? \u041e\u043d \u0443\u043c\u0435\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0441\u043f\u0440\u0430\u0439\u0442\u0430, \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0442\u0438\u043f\u0430 <em>Poser<\/em>. \u0412\u0441\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 <em>GameObject<\/em>&#8216;\u043e\u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0434\u0432\u0438\u0433\u0430\u0435\u043c \u043a\u0443\u0441\u043e\u043a \u0441\u0442\u0435\u043d\u044b (c \u0442\u0435\u0433\u043e\u043c &quot;<em>foreground<\/em>&quot;) \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u0442\u0441\u044f <em>Core.Quad.QuadManager<\/em>, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f\u0435\u043c \u043e\u043f\u043e\u0440\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0432\u043e\u0434\u044b (\u0442\u0435\u0433 &quot;<em>waterLayer<\/em>&quot;) <em>Core.Water.WaterManager<\/em> \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0443\u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445.<br \/>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0432\u0435\u0434\u044c \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 <em>WaterManager<\/em> \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u043d\u0442\u043e\u0432 \u0432 <em>QuadManager<\/em>, \u0430 <em>ShadowMeshManager<\/em>&#8216;\u0443 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 SurfaceManager&#8217;\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/Events.UnityEvent.html\">UnityEvent<\/a>. \u0415\u0433\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u2014 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435-generic \u0441 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0432\u043e\u0438\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c, Unity3D \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u042d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code>public class TreeManager : MonoBehaviour {   [System.Serializable]   public class UpdateTreeEvent : UnityEvent&lt;TreeManager&gt; {   }    public UpdateTreeEvent onUpdateTree;   ... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u043f\u0440\u044f\u043c\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u043d\u0435 \u0437\u0430\u0433\u0440\u044f\u0437\u043d\u044f\u044f \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f41\/7d0\/954\/f417d0954d324ab8a04be1c685ec3e34.png\"\/>  <\/p>\n<p><em>\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0438 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435.<\/em><\/p>\n<p>  <\/p>\n<h4 id=\"posteffekty\">\u041f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b.<\/h4>\n<p>  <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0435\u0433\u043e, \u043d\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u043d\u0435 \u0443\u043c\u0435\u044e\u0442. \u0412\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c!<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 youtube \u0432 \u0440\u043e\u043b\u0438\u043a\u0430\u0445 \u0441 \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 &quot;\u0417\u0430\u043f\u0438\u043b\u0438\u043c \u0441\u0432\u043e\u044e \u043c\u0435\u0433\u0430-\u043a\u0440\u0443\u0442\u0443\u044e \u0438\u0433\u0440\u0443 \u043d\u0430 Unity3D \u0438\u0437 \u0442\u0440\u0451\u0445 \u0431\u043e\u043a\u0441\u043e\u0432, \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u0440\u0430\u0439\u0442\u0430 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 RigidBody2D&quot;. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0438 \u0441\u043f\u0440\u0430\u0439\u0442\u044b \u0441\u0442\u0435\u043d \u0438 \u0444\u043e\u043d\u0430. \u0410 \u0432\u043e\u0442 \u0441\u0432\u0435\u0442, \u0432\u043e\u0434\u0443 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b.<br \/>  \u0427\u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442? \u0427\u0442\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u0430 \u0432 \u0431\u0443\u0444\u0435\u0440\u044b, \u0437\u0430\u0442\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u0441\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u0442\u0438 \u0432\u0441\u0451 \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. \u0418 \u0432\u0441\u0435\u0433\u043e-\u0442\u043e.<\/p>\n<p>  <\/p>\n<p>\u042d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u0430\u043b\u043e. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u0442\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li><em>\u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0441\u0446\u0435\u043d\u044b.<\/em> \u041d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0441\u0446\u0435\u043d\u044b.<\/li>\n<li><em>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435.<\/em> \u0420\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u0443\u0440\u043e\u0432\u043d\u044f;<\/li>\n<li><em>\u041e\u0431\u044b\u0447\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435.<\/em> \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430, \u0442\u0435\u043d\u0438, \u043a\u0430\u0443\u0441\u0442\u0438\u043a\u0443 \u0432 \u0432\u043e\u0434\u0435;<\/li>\n<li><em>\u0421\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0434\u0435\u043a\u0430\u043b\u0438.<\/em> \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043f\u0440\u0430\u0439\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043b\u044e\u043c\u0438\u043d\u0435\u0441\u0446\u0435\u043d\u0446\u0438\u0438.<\/li>\n<li><em>\u041f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/em> \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043a \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u0435).<\/li>\n<li>\u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, <em>\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.<\/em> \u041a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0443\u044e\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c pixel perfect \u0438 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u0443 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442 \u2014 \u044d\u0442\u043e \u043d\u0435\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u0443\u044e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443\/\u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432). \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0438\u043d\u043e\u0433\u0434\u0430 \u0435\u043c\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0441\u0446\u0435\u043d\u044b \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043a\u0430\u043c\u0435\u0440\u044b.<\/p>\n<p>  <\/p>\n<p>\u0412\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442: \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u0430\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c \u0440\u0430\u0437\u043d\u043e\u0448\u0435\u0440\u0441\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0430. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code>namespace NewEngine.Core.Render {   public abstract class PostEffect {     public int OrderId { get; set; } \/\/ \u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432.      public abstract void Apply(PipelineContext context); \/\/ \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0430. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u0445 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 PipelineContext, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0443\u0434\u0430 \u0436\u0435.     public abstract void Clear(); \/\/ \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0438 GC, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u044f\u0441\u043d\u044e \u043f\u043e\u0437\u0434\u043d\u0435\u0435.      protected Camera CreateCamera(); \/\/ \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043a\u0430\u043c\u0435\u0440\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430.     public List&lt;Camera&gt; Cameras { get; }   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0435\u0449\u0451 \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<pre><code>namespace NewEngine.Core.Render {   public class PipelineContext {     Dictionary&lt;System.Type, PostEffectContext&gt;;     Camera camera;     Geom.IntRect viewRect;      public PipelineContext(CameraManager cameraManager);     public void Set&lt;Context&gt;(Context value) where Context : PostEffectContext;     public Context Get&lt;Context&gt;() where Context : PostEffectContext;      public Camera Camera { get; }     public Geom.IntRect ViewRect { get; }   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u0430\u043c, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0443 \u043d\u0438\u0445 <em>Apply<\/em> \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 <em>PipelineContext<\/em>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043e\u0442\u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u043a\u0430\u0434\u0440. \u042d\u0444\u0444\u0435\u043a\u0442\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 \u0430\u043d\u0430\u043b\u043e\u0433 <em>Poser<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044e \u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0441\u043e \u0441\u0446\u0435\u043d\u044b. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0445 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<br \/>  \u0418 \u0431\u044b\u043b\u043e \u0431\u044b \u043a\u0440\u0443\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0431\u044b \u0432 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code>[RequiredPostEffect(typeof(WaterPostEffect))] [RequiredPostEffect(typeof(IlluminationPostEffect))] public class MergerPostEffect : PostEffect { }<\/code><\/pre>\n<p>  <\/p>\n<blockquote><p>\u041d\u043e, \u043f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 PropertyDrawer:<\/p><\/blockquote>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/t0xkDP0NvFg?rel=0&amp;showinfo=1\" frameborder=\"0\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" style=\"top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p><em>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435. \u0421\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u0441\u0446\u0435\u043d\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435.<\/em><\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u043e\u0432\u0430\u044f \u043f\u043e\u0440\u0446\u0438\u044f \u0445\u0438\u043d\u0442\u043e\u0432<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><strong>\u041a\u0430\u043c\u0435\u0440\u044b.<\/strong> \u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u2014 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440. \u041f\u0435\u0440\u0435\u0434 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u043e\u043c \u0432\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u044d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f;<\/li>\n<li><strong>\u0412\u044b\u0437\u043e\u0432 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432.<\/strong> \u041f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0412 Unity3D \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u2014 \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/MonoBehaviour.OnPostRender.html\">OnPostRender<\/a>;<\/li>\n<li><strong>GetTemporary.<\/strong> \u041a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c <em>RenderTexture<\/em> \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0436\u0438\u0437\u043d\u0438 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f. \u041c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u041d\u043e \u0435\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/RenderTexture.GetTemporary.html\">RenderTexture.GetTemporary<\/a>, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/RenderTexture.ReleaseTemporary.html\">RenderTexture.ReleaseTemporary<\/a>, fps \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0432\u0430\u0439\u0441\u0430\u0445). Unity3D \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 \u0443\u0434\u0430\u043b\u044f\u0442 \u0442\u0430\u043a\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0445 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0412 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0441\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430\u0445 \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/li>\n<li><strong>\u0423\u0442\u0435\u0447\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440.<\/strong> E\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u2014 \u0435\u0441\u0442\u044c \u0448\u0430\u043d\u0441, \u0447\u0442\u043e Unity3D \u043d\u0430\u0447\u043d\u0451\u0442 \u043f\u0430\u0434\u0430\u0442\u044c (\u0442\u043e\u0447\u043d\u0435\u0435, \u044d\u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442 \u0448\u0430\u043d\u0441\u044b: Unity3D \u0438 \u0442\u0430\u043a \u043b\u044e\u0431\u0438\u0442 \u043f\u0430\u0434\u0430\u0442\u044c). \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u0438\u0434\u0435\u043e \u0431\u044b\u043b \u0432\u0438\u0434\u0435\u043d \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0438 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 &quot;Show texture leaks&quot;, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u0434\u0435, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <em>System.Diagnostics.StackTrace()<\/em>). \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0448\u0442\u0443\u043a\u0438 \u0432 <em>#ifdef<\/em> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435.<\/li>\n<li><strong>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440.<\/strong> \u041e\u0431\u044b\u0447\u043d\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043d\u0435 \u0432\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a <em>TextureFormat<\/em> \u0438 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, <em>RenderTextureFormat<\/em>. \u041c\u0435\u0442\u043e\u0434\u044b <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/SystemInfo.SupportsTextureFormat.html\">SystemInfo.SupportsTextureFormat<\/a> \u0438 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/SystemInfo-supportsRenderTextures.html\">SystemInfo.supportsRenderTextures<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e (\u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u0432\u043e\u0435\u0439 \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u0441 \u043a\u0435\u0448\u0435\u043c) \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442.<\/li>\n<li><strong>Blit.<\/strong> \u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043a \u043d\u0430\u0431\u043e\u0440\u0443 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 <em>Camera<\/em> (\u043c\u044b \u043d\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043c \u0441\u0446\u0435\u043d\u0443). \u0412 Unity3D \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/docs.unity3d.com\/ScriptReference\/Graphics.Blit.html\">Graphics.Blit<\/a>.<\/li>\n<li><strong>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d Blit.<\/strong> \u041f\u0440\u0430\u0432\u0434\u0430 _Graphics.Blit_\u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0435, \u0430 depth buffer \u0438 stencil buffer \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c \u043a\u043e\u0434\u043e\u043c:<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code>static public void Blit(RenderBuffer colorBuffer, RenderBuffer depthBuffer, Material material) {   Blit(colorBuffer, depthBuffer, material, material.passCount); }  static public void Blit(RenderBuffer colorBuffer, RenderBuffer depthBuffer, Material material, int passCount) {   Graphics.SetRenderTarget(colorBuffer, depthBuffer);    GL.PushMatrix();   GL.LoadOrtho();    for (int i = 0; i &lt; passCount; ++i) {     material.SetPass(i);      GL.Begin(GL.QUADS);     GL.TexCoord(new Vector3(0, 0, 0));     GL.Vertex3(0, 0, 0);     GL.TexCoord(new Vector3(0, 1, 0));     GL.Vertex3(0, 1, 0);     GL.TexCoord(new Vector3(1, 1, 0));     GL.Vertex3(1, 1, 0);     GL.TexCoord(new Vector3(1, 0, 0));     GL.Vertex3(1, 0, 0);     GL.End();   }    GL.PopMatrix();    Graphics.SetRenderTarget(null);  }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h4 id=\"mysli-o-buduschem\">\u041c\u044b\u0441\u043b\u0438 \u043e \u0431\u0443\u0434\u0443\u0449\u0435\u043c<\/h4>\n<p>  <\/p>\n<p>\u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0442\u0440\u0430\u0432\u0443, \u0432\u043e\u0434\u0443 \u0438 \u0441\u0432\u0435\u0442, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0441\u043b\u0435\u0434\u044f\u0442 \u0437\u0430 \u0438\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u2014 \u0437\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u043e\u043c. \u0410\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e, \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0438\u0441\u0442\u043e. \u0418 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0433\u043e\u0442\u043e\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u0430 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0448\u0442\u0443\u043a! \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043c\u0435\u0440\u0437\u0430\u044e\u0449\u0435\u0439 \u0432\u043e\u0434\u044b \u0438\u043b\u0438 \u0441\u0432\u0435\u0442\u044f\u0449\u0435\u0439\u0441\u044f \u043f\u043b\u0435\u0441\u0435\u043d\u0438 \u0432 \u043f\u043e\u0434\u0437\u0435\u043c\u0435\u043b\u044c\u044f\u0445. \u0418 \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0439\u043d\u044b\u0435 \u0444\u0438\u0448\u043a\u0438:<\/p>\n<p>  <\/p>\n<blockquote><p>\u2026 \u043b\u0443\u0447\u043d\u0438\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c \u0441 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0431\u0435\u0440\u0435\u0433\u0430. \u041c\u0430\u0433 \u0432\u0437\u043e\u0440\u0432\u0430\u043b \u0444\u0430\u0439\u0440\u0431\u043e\u043b \u043d\u0430\u0434 \u0440\u0435\u043a\u043e\u0439, \u0432\u044b\u0437\u0432\u0430\u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0446\u0443\u043d\u0430\u043c\u0438. \u041d\u043e \u0432\u043e\u043b\u043d\u0430 \u043d\u0435 \u0434\u043e\u0431\u0440\u0430\u043b\u0430\u0441\u044c \u0434\u043e \u0431\u0435\u0440\u0435\u0433\u0430 \u2014 \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u0438\u043a \u0437\u0430\u043c\u043e\u0440\u043e\u0437\u0438\u043b \u0432\u043e\u0434\u0443 \u0438 \u0441\u043f\u0440\u044f\u0442\u0430\u043b\u0441\u044f \u043e\u0442 \u0441\u0442\u0440\u0435\u043b \u0437\u0430 \u0441\u0442\u0435\u043d\u043e\u0439 \u043b\u044c\u0434\u0430.<\/p><\/blockquote>\n<p>  <\/p>\n<blockquote><p>\u2026 \u0434\u0435\u0441\u044f\u0442\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u043b\u0430\u043c\u0435\u043d\u0438 \u0442\u0430\u043a \u043d\u0430\u043a\u0430\u043b\u0438\u043b \u043a\u0430\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b, \u0447\u0442\u043e \u0442\u043e\u0442 \u043d\u0430\u0447\u0430\u043b \u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u043c\u0435\u0447 \u0432 \u0440\u0443\u043a\u0430\u0445 \u043a\u0443\u0437\u043d\u0435\u0446\u0430. \u00ab\u041d\u0438 \u043e\u0434\u043d\u0430 \u0436\u0438\u0432\u0430\u044f \u0434\u0443\u0448\u0430 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 \u0437\u0430 \u043c\u043d\u043e\u0439\u00bb \u2014 \u0440\u0435\u0448\u0438\u043b \u043c\u0430\u0433.<\/p><\/blockquote>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u0441\u0442\u044d\u0444\u0444\u0435\u043a\u0442\u0430\u0445 \u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0438, \u0430 \u043f\u043e\u043a\u0430, \u043d\u0430 \u0437\u0430\u043a\u0443\u0441\u043a\u0443, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/XPdhSoub0wU?rel=0&amp;showinfo=1\" frameborder=\"0\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" style=\"top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<p><em>\u0412\u043e\u0442 \u043f\u0440\u043e \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0434\u0443 \u044f \u043e\u0431\u0435\u0449\u0430\u043b \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \ud83d\ude42<\/em><\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0411\u0430\u0433\u0438 \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d9a\/432\/9b8\/d9a4329b82af44cbb1ec43a41d745a0b.png\"\/>  <\/p>\n<p><em>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0434\u043e \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430.<\/em><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/fa6\/1f0\/754\/fa61f0754e2548f19f14f3cd49fcc234.png\"\/>  <\/p>\n<p><em>\u041d\u0443 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0440\u0430\u0434\u0438\u0430\u043d\u0430\u043c\u0438, \u0430 Unity3D \u0441 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u043c\u0438? 0\u043e<\/em><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c4a\/cd2\/391\/c4acd2391a514e73980e0a346b52c7c4.png\"\/>  <\/p>\n<p><em>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043d\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u043a\u043e\u0441\u044f\u043a \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439.<\/em><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a67\/63a\/828\/a6763a8281ce43ed9c6408aae9e0a2c5.png\"\/>  <\/p>\n<p><em>\u042d\u0442\u043e \u043d\u0435 \u044f\u0434\u0435\u0440\u043d\u044b\u0439 \u0440\u0435\u0430\u043a\u0442\u043e\u0440, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043a\u0438\u0435 \u0440\u0435\u0439\u043a\u0430\u0441\u0442\u044b \u043f\u0440\u043e\u0440\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0440\u0443\u0436\u0443.<\/em><\/p>\n<\/div>\n<\/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:\/\/habrahabr.ru\/post\/312046\/\"> https:\/\/habrahabr.ru\/post\/312046\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/324\/c6f\/ba9\/324c6fba96224374a998f621e8b7b6c6.png\"\/>  <\/p>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043d\u0435\u0431\u0435\u0437\u044b\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043c \u043f\u0440\u043e &quot;\u043a\u043e\u0440\u043e\u0432\u0430\u043d\u044b&quot;? \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043a\u0430\u0436\u0434\u044b\u0439, \u043a\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0433\u0440\u044b (\u0438\u043b\u0438 \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f) \u0440\u0430\u0437\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442 \u043e \u043d\u0435\u043a\u043e\u043c &quot;\u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u0435\u0447\u0442\u044b&quot;, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 &quot;\u0433\u0440\u0430\u0431\u0438\u0442\u044c \u043a\u043e\u0440\u043e\u0432\u0430\u043d\u044b&quot; \u0438 &quot;\u043d\u0430\u0431\u0438\u0433\u0430\u0442\u044c&quot;. \u0410 \u0435\u0449\u0451, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0433\u043e\u0434\u0430 \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u0438 \u043d\u0430 \u0433\u0440\u044f\u0437\u0438 \u0441\u043b\u0435\u0434\u044b \u043e\u0442 \u0441\u0430\u043f\u043e\u0433 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c, \u0438 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u0440\u043e\u0441\u043b\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418 \u0435\u0449\u0451, \u0447\u0442\u043e\u0431\u044b\u2026<br \/>  \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0442\u0430\u043a\u0430\u044f \u043f\u043e\u0433\u043e\u043d\u044f \u0437\u0430 \u0445\u043e\u0442\u0435\u043b\u043a\u0430\u043c\u0438 \u2014 \u0441\u043c\u0435\u0440\u0442\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u0430. \u0410 \u0432\u043e\u0442 \u0432 \u0442\u0435\u0445\u043d\u043e-\u0434\u0435\u043c\u043a\u0435 \u2014 \u0441\u0430\u043c\u043e\u0435 \u0442\u043e.<\/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-280095","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280095","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=280095"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280095\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=280095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=280095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}