{"id":292753,"date":"2019-07-30T09:01:13","date_gmt":"2019-07-30T09:01:13","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=292753"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=292753","title":{"rendered":"\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u043a\u0430\u043a \u0432 \u0438\u0433\u0440\u0435 Horizon Zero Dawn"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u0420\u0430\u043d\u044c\u0448\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0432 \u0438\u0433\u0440\u0430\u0445 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 2D \u0441\u043f\u0440\u0430\u0439\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b, \u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 \u043f\u043e\u0442\u0435\u0440\u044c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0421\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0432 \u0438\u0433\u0440\u044b \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u0430 \u0441\u0442\u0443\u0434\u0438\u044f Guerrilla Games \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0433\u0440\u043e\u0439 Horizon Zero Dawn. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0443\u043c\u0435\u043b\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u043e \u0441\u0442\u0443\u0434\u0438\u044f \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0438 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043b\u044e\u0431\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v9\/uq\/em\/v9uqemwtz5ty7x5uvpppsoonmdu.png\"><br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u044b \u0438 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u0436\u0435 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043a\u0430\u043a \u0435\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.<\/p>\n<h2>Tone mapping, sRGB<\/h2>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u0432\u0430\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0435 \u0432\u0435\u0449\u0438:<\/p>\n<ol>\n<li> \u041f\u0435\u0440\u0435\u0434 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 tone mapping:\n<pre><code class=\"cpp\">tunedColor=color\/(1+color)<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b.  <\/li>\n<li>\u0423\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0444\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0440\u0438\u0441\u0443\u0435\u0442\u0435, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u0438\u043c\u0435\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 sRGB. \u0415\u0441\u043b\u0438 \u0441 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439 sRGB \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432 \u0448\u0435\u0439\u0434\u0435\u0440\u0435:\n<pre><code class=\"cpp\">finalColor=pow(color, vec3(1.0\/2.2))<\/code><\/pre>\n<p>  \u0424\u043e\u0440\u043c\u0443\u043b\u0430 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043d\u043e \u043d\u0435 \u0432 100% \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430. \u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e sRGB \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c.<\/li>\n<\/ol>\n<p>  <\/p>\n<h2>\u041c\u043e\u0434\u0435\u043b\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0437\u043d\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438. \u041a\u043e\u0433\u0434\u0430 \u043b\u0443\u0447 \u0441\u0432\u0435\u0442\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u043a\u0432\u043e\u0437\u044c \u0442\u0430\u043a\u043e\u0435 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u043e, \u0442\u043e \u043e\u043d \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432: \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u044e, \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044e, \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u044e\u0449\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044e \u0438 \u0441\u0430\u043c\u043e\u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044e. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0445\u0438\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u043f\u0440\u043e\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u0445 \u0432 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435, \u0438 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043b\u0443\u0447 \u0441\u0432\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u043e \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 A \u0432 \u0442\u043e\u0447\u043a\u0443 B:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/_1\/1t\/9w\/_11t9wizftnmwilerlsi5fvcrm4.png\"><\/div>\n<p>  <b>\u041f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u0435<\/b><\/p>\n<p>  \u0421\u0432\u0435\u0442, \u043f\u0440\u043e\u0445\u043e\u0434\u044f \u0441\u043a\u0432\u043e\u0437\u044c \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u043e, \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u044e \u044d\u0442\u0438\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u043e\u043c. \u041d\u0435\u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0441\u0432\u0435\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/567\/34c\/ec6\/56734cec6154e1fab8bb2d1538a8dffa.svg\"><\/div>\n<p>  \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a3e\/204\/11f\/a3e20411f145906908c5cd2b53a36dbe.svg\"> \u2014 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442 \u0432 \u0442\u043e\u0447\u043a\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5cc\/c8d\/80d\/5ccc8d80d010abd90b5c546d05856d3a.svg\">. <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5cc\/c8d\/80d\/5ccc8d80d010abd90b5c546d05856d3a.svg\"> \u2014 \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 AB \u043d\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2a3\/102\/4ea\/2a31024ea1803c34a47496e24a53a1ef.svg\"> \u043e\u0442 A.<\/p>\n<p>  <b>\u0420\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435<\/b><\/p>\n<p>  \u0427\u0430\u0441\u0442\u044c \u0441\u0432\u0435\u0442\u0430 \u043f\u043e\u0434 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0447\u0430\u0441\u0442\u0438\u0446 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0414\u043e\u043b\u044e \u0441\u0432\u0435\u0442\u0430, \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0435\u0433\u043e \u0441\u0432\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/04b\/c17\/2f5\/04bc172f53fa572aebf0399275b5009f.svg\"><\/div>\n<p>  \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5e3\/0b7\/bad\/5e30b7badd64b9da62be750e48573c7d.svg\"> \u2014 \u0434\u043e\u043b\u044f \u0441\u0432\u0435\u0442\u0430, \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0435\u0433\u043e \u0441\u0432\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5cc\/c8d\/80d\/5ccc8d80d010abd90b5c546d05856d3a.svg\">.<\/p>\n<p>  \u041f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8d7\/d5a\/f1a\/8d7d5af1a0506ee776c4c2f850e862a9.svg\"><\/div>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044e <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/33f\/297\/4e9\/33f2974e9c84331f8b92d8b7ed5aca97.svg\"> \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0437\u0430\u0442\u0443\u0445\u0430\u043d\u0438\u0435\u043c (attenuation \u0438\u043b\u0438 extinction). \u0410 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/eea\/d4d\/0d4\/eead4d0d4f08873f9aa49b69a7c46fd8.svg\"> \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439. \u041e\u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u0435\u0442\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 A \u0432 \u0442\u043e\u0447\u043a\u0443 B.<\/p>\n<p>  \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/610\/ddb\/ee8\/610ddbee8d80f847b44fa75c9a136489.svg\"> \u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cd1\/8c2\/405\/cd18c240521dcfb71084a340a504e41f.svg\">: <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b76\/ea9\/fd5\/b76ea9fd577eb1c2cee545caa4153bd3.svg\">, \u0433\u0434\u0435 C \u2014 \u043d\u0435\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0432 RGB, <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/9ee\/494\/9d2\/9ee4949d2897f56ac90e563db1eb96cd.svg\"> \u2014 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u0440\u0435\u0434\u044b \u0432 \u0442\u043e\u0447\u043a\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5cc\/c8d\/80d\/5ccc8d80d010abd90b5c546d05856d3a.svg\">.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443. \u0421\u0432\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0438\u0437 \u0432 \u0442\u043e\u0447\u043a\u0438 A \u0432 \u0442\u043e\u0447\u043a\u0443 B, \u043e\u043d \u0437\u0430\u0442\u0443\u0445\u0430\u0435\u0442 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0412 \u0442\u043e\u0447\u043a\u0435 X \u0447\u0430\u0441\u0442\u044c \u0441\u0432\u0435\u0442\u0430 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445, \u043e\u0434\u043d\u043e \u0438\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044e \u0432 \u0442\u043e\u0447\u043a\u0435 \u041e. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0440\u0446\u0438\u044f \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u0430 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 X \u0432 \u0442\u043e\u0447\u043a\u0443 \u041e \u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0442\u0443\u0445\u0430\u0435\u0442. \u041f\u0443\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0441 \u0441\u0432\u0435\u0442\u0430 AXO.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zo\/b_\/tr\/zob_troftvd8-ggp1ga7wesnrlk.png\"><\/div>\n<p>  \u041f\u043e\u0442\u0435\u0440\u044e \u0441\u0432\u0435\u0442\u0430 \u043f\u0440\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u0438\u0437 A \u0432 X \u043c\u044b \u0437\u043d\u0430\u0435\u043c: <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/25d\/8c9\/f76\/25d8c9f76986f59eb045b801f19d4e0a.svg\">, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0437\u043d\u0430\u0435\u043c \u043f\u043e\u0442\u0435\u0440\u044e \u0441\u0432\u0435\u0442\u0430 \u0438\u0437 X \u0432 O \u2014 \u044d\u0442\u043e <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/25b\/3a9\/8e3\/25b3a98e370f0a95b734794b74bee57a.svg\">. \u041d\u043e \u0447\u0442\u043e \u043d\u0430 \u0441\u0447\u0435\u0442 \u0434\u043e\u043b\u0438 \u0441\u0432\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u0430 \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f?<\/p>\n<p>  <b>\u0423\u0441\u0438\u043b\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435<\/b><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u0435\u0442\u0430 \u043f\u0430\u0434\u0430\u0435\u0442, \u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u043e\u043d\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0435\u0442 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430, \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445. \u0421\u0443\u043c\u043c\u0430\u0440\u043d\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0441\u0432\u0435\u0442\u0430, \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0438\u0437 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/7e4\/be1\/bd9\/7e4be1bd9a1d8f05b9d1d47e1bb27ecc.svg\"><\/div>\n<p>  \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e63\/878\/1e4\/e638781e456c920d7864e85c8b14a746.svg\"> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u0437\u044f\u0442\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u043f\u043e \u0441\u0444\u0435\u0440\u0435, <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/1ad\/0bb\/23e\/1ad0bb23eb22871d78d2b5cc67d58292.svg\"> \u2014 \u0444\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/da9\/7bc\/3c5\/da97bc3c51ddad728182deecd39ba0d0.svg\"> \u2014 \u0441\u0432\u0435\u0442 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u0438\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/9c6\/a44\/e8e\/9c6a44e8ed4cb10046e00346c6b58b15.svg\">. <\/p>\n<p>  \u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0432\u0435\u0442 \u0441\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e, \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u043e\u0440\u0446\u0438\u044e \u0441\u0432\u0435\u0442\u0430 \u043d\u0435\u0441\u0435\u0442 \u043d\u0430\u0448 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u0443\u0447 AB. \u0424\u043e\u0440\u043c\u0443\u043b\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ef8\/4aa\/222\/ef84aa22259c648ea9925502712250f6.svg\"><\/div>\n<p>  \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2cb\/bcb\/347\/2cbbcb347a44c276c1095ac5bb3f8242.svg\"> \u2014 \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 \u043b\u0443\u0447\u043e\u043c \u0441\u0432\u0435\u0442\u0430 \u0438 \u043b\u0443\u0447\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f (\u0442.\u0435. \u0443\u0433\u043e\u043b AXO), <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/309\/1ee\/38b\/3091ee38b2de66a8aa89af86fe87eb65.svg\"> \u2014 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u0435\u0442\u0430. \u0421\u0443\u043c\u043c\u0438\u0440\u0443\u044f \u0432\u0441\u0435 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0444\u043e\u0440\u043c\u0443\u043b\u0443:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/642\/fb7\/273\/642fb727356c245fc6f053dbc9affde8.svg\"><\/div>\n<p>  \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/309\/1ee\/38b\/3091ee38b2de66a8aa89af86fe87eb65.svg\"> \u2014 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0432\u0435\u0442, <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f7a\/fbd\/138\/f7afbd138efabfc5bf5dad3e26e6c0fb.svg\"> \u2014 \u0441\u0432\u0435\u0442, \u0434\u043e\u0448\u0435\u0434\u0448\u0438\u0439 \u0434\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>  \u0423\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u0435\u0449\u0435 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0441\u0432\u0435\u0442 \u0438\u0441\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0441\u0432\u0435\u0442\u0430 \u0442\u0438\u043f\u0430 directional light, \u0442.\u0435. \u0441\u043e\u043b\u043d\u0446\u0435\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wz\/r2\/gg\/wzr2ggl_1oshhmhn3kkqalhtkoo.png\"><\/div>\n<p>   \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043a\u0430\u043a \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437. \u0421\u0432\u0435\u0442 \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 \u04101 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u04251 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u041e, \u0441\u0432\u0435\u0442 \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 \u04102 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u04252 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u041e \u0438 \u0442.\u0434. \u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0441\u0432\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0448\u0438\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u0440\u0430\u0432\u0435\u043d \u0441\u0443\u043c\u043c\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/838\/191\/24f\/83819124f0beb6bdd5adc3644a79653b.svg\"><\/div>\n<p>  \u0418\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e01\/7b0\/5d2\/e017b05d2026f311f43bc53da48c130e.svg\"><\/div>\n<p>  \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e7b\/3af\/88e\/e7b3af88eb6397d1f88774b011fe4cbb.svg\">, \u0442.\u0435. \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0440\u0430\u0437\u0431\u0438\u0442 \u043d\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0434\u043b\u0438\u043d\u044b.<\/p>\n<h2>\u041d\u0435\u0431\u043e<\/h2>\n<p>  \u0421 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u043b\u043d\u0435\u0447\u043d\u044b\u0439 \u043b\u0443\u0447, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0443, \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044e, \u0442.\u0435. <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c79\/ce0\/055\/c79ce005518e112e707da427d7231066.svg\">.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/k0\/mm\/tz\/k0mmtzjcir3wnqxbcjzsouln4yo.png\"><\/div>\n<p>  \u0418 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f, \u0430 \u0446\u0435\u043b\u044b\u043c \u0434\u0432\u0443\u043c: \u0440\u0435\u043b\u0435\u0435\u0432\u0441\u043a\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044e \u0438 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044e \u041c\u0438. \u041f\u0435\u0440\u0432\u043e\u0435 \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u043c\u043e\u043b\u0435\u043a\u0443\u043b\u0430\u043c\u0438 \u0432\u043e\u0437\u0434\u0443\u0445\u0430, \u0430 \u0432\u0442\u043e\u0440\u043e\u0435 \u0430\u044d\u0440\u043e\u0437\u043e\u043b\u0435\u043c \u0432\u043e\u0434\u044b. <\/p>\n<p>  \u0421\u0443\u043c\u043c\u0430\u0440\u043d\u0430\u044f \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0434\u0443\u0445\u0430 (\u043b\u0438\u0431\u043e \u0430\u044d\u0440\u043e\u0437\u043e\u043b\u044f), \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u043b\u0443\u0447 \u0441\u0432\u0435\u0442\u0430, \u0434\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 A \u0432 \u0442\u043e\u0447\u043a\u0443 B:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0bc\/d80\/e5d\/0bcd80e5d5b35e43fef8336e6c66cde0.svg\"><\/div>\n<p>\u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/14b\/01a\/bf0\/14b01abf043545d56ac10d61e69792e8.svg\"> \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430, h \u2014 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430.<\/p>\n<p>  \u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d3f\/b07\/e75\/d3fb07e750a91c2a253fdcf1de74de72.svg\"><\/div>\n<p>  \u0433\u0434\u0435 dh \u2014 \u0440\u0430\u0437\u043c\u0435\u0440 \u0448\u0430\u0433\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0432\u044b\u0441\u043e\u0442\u044b. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u043e\u0439, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u201c\u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f\u201d:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gr\/n0\/fr\/grn0fr0f-dly-jjpcjpg_pxof9a.png\"><\/div>\n<p>  \u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0438\u0437 O \u0432 O\u2019. \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0432\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 \u0442\u043e\u0447\u0435\u043a X1, X2, \u2026, Xn, \u0431\u0443\u0434\u0435\u0442 \u0432 \u043d\u0438\u0445 \u0440\u0430\u0441\u0441\u0435\u044f\u043d, \u0430 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/540\/c25\/470\/540c25470466173df2e5cf7880390ff9.svg\"><\/div>\n<p>  \u0433\u0434\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c87\/cb3\/ca4\/c87cb3ca4e0a0f0fc9d1a9d5c485c116.svg\"> \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u043b\u043d\u0446\u0435\u043c \u0441\u0432\u0435\u0442\u0430, <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6c3\/b25\/b5f\/6c3b25b5f22b9a03c093ef2f25a06339.svg\"> \u2014 \u0432\u044b\u0441\u043e\u0442\u0430 \u0432 \u0442\u043e\u0447\u043a\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ee6\/2f8\/bed\/ee62f8bed8d0d0e9b3d3cd2c81841ded.svg\">; \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043d\u0435\u0431\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0421, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0430\u044f\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cd1\/8c2\/405\/cd18c240521dcfb71084a340a504e41f.svg\"> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cea\/f36\/742\/ceaf36742def9a68dbd173a0ac9c9aeb.svg\">.<\/p>\n<p>  \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5be\/44a\/9fc\/5be44a9fcdb92469fee29b924a957556.svg\"><\/div>\n<p>  \u042d\u0442\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u0430 \u043a\u0430\u043a \u0434\u043b\u044f \u0440\u0435\u043b\u0435\u0435\u0432\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u041c\u0438. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/34f\/cb4\/a91\/34fcb4a9100e4b9c60a7c7eca2c489ec.svg\"><\/div>\n<p>  <b>\u0420\u0435\u043b\u0435\u0435\u0432\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/71e\/a55\/e80\/71ea55e8043a70776eb70f29eb84d877.svg\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/679\/03f\/8e9\/67903f8e987346a525fb22e02e718aad.svg\"> (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 RGB)<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/4c9\/02f\/384\/4c902f3848ae3cb24347ee0b367132d6.svg\"><\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nk\/xs\/8z\/nkxs8zt8hyh909tjilktrkrrvri.png\"><\/div>\n<p>  <b>\u0420\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u041c\u0438<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/72b\/94b\/cc1\/72b94bcc19f99b0e164c6a48e4408b44.svg\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c9a\/52e\/00c\/c9a52e00c5e6169a8ad778f902e49595.svg\"> (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 RGB \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b)<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/208\/fcf\/3bf\/208fcf3bf216540af2bfa93a186a3a19.svg\"><\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fu\/jv\/sb\/fujvsbtduq-il-1reylizx1kosa.png\"><\/div>\n<p>  \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u043d\u0430 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2a1\/abf\/7c3\/2a1abf7c35ec6c9a9d35514977d15981.svg\"> \u0438 \u043d\u0430 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/392\/559\/f75\/392559f75e1c271b8bbfbc6255e70d4d.svg\"> \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c 32 \u0438 \u0432\u044b\u0448\u0435. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0434\u0438\u0443\u0441\u0430 \u0417\u0435\u043c\u043b\u0438 \u2014 6371000 \u043c, \u0442\u043e\u043b\u0449\u0438\u043d\u0430 \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u044b \u2014 100000 \u043c. <\/p>\n<p>  \u0427\u0442\u043e \u0441\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<ol>\n<li>\u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u0435 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f V<\/li>\n<li>\u0411\u0435\u0440\u0435\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f O \u0440\u0430\u0432\u043d\u044b\u043c {0, 6371000, 0}<\/li>\n<li>\u041d\u0430\u0445\u043e\u0434\u0438\u043c <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/28d\/cc9\/fe7\/28dcc9fe786e9216afc4ab3ae2196ebe.svg\"> \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430, \u0431\u0435\u0440\u0443\u0449\u0438\u043c \u043d\u0430\u0447\u0430\u043b\u043e \u0432 \u0442\u043e\u0447\u043a\u0435 O, \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c V \u0438 \u0441\u0444\u0435\u0440\u044b \u0441 \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u0432 \u0442\u043e\u0447\u043a\u0435 {0,0,0} \u0438 \u0440\u0430\u0434\u0438\u0443\u0441\u043e\u043c 6471000<\/li>\n<li>\u041e\u0442\u0440\u0435\u0437\u043e\u043a <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/392\/559\/f75\/392559f75e1c271b8bbfbc6255e70d4d.svg\"> \u0434\u0435\u043b\u0438\u043c \u043d\u0430 32 \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u0440\u0430\u0432\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b<\/li>\n<li>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0440\u0435\u043b\u0435\u0435\u0432\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u0435 \u041c\u0438, \u0438 \u0432\u0441\u0435 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2a1\/abf\/7c3\/2a1abf7c35ec6c9a9d35514977d15981.svg\"> \u043d\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u0440\u0435\u0437\u043e\u043a <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0e6\/fb0\/4e8\/0e6fb04e8525f5a3448df984993ab3c4.svg\"> \u043d\u0430 32 \u0440\u0430\u0432\u043d\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/60e\/970\/a20\/60e970a20b30f36e7c21fe71c3d4dadb.svg\"> \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0432 \u0446\u0438\u043a\u043b\u0435.<\/li>\n<\/ol>\n<p>  \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/no\/gb\/tl\/nogbtlqbuzffixmq7xmt1w4j_ja.png\"><\/div>\n<p>  <\/p>\n<h2>\u041c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u043b\u0430\u043a\u043e\u0432<\/h2>\n<p>  \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u043e\u0432 \u0448\u0443\u043c\u0430 \u0432 3D. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u044d\u0442\u043e \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fractal Brownian motion (fBm) \u0448\u0443\u043c \u041f\u0435\u0440\u043b\u0438\u043d\u0430:<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f 2D \u0441\u0440\u0435\u0437\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ld\/h6\/v6\/ldh6v6zglre4jhon_n8qu193o8k.png\"><\/div>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043e\u043d\u043e\u0433\u043e.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f 2D \u0441\u0440\u0435\u0437\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/aa\/rc\/s2\/aarcs2hvles3h89jqfc1lfrufjk.png\"><\/div>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u0439\u043b\u044f\u0449\u0435\u0433\u043e\u0441\u044f fBm \u0448\u0443\u043c\u0430 \u0412\u043e\u0440\u043b\u0435\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u044c \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043e\u043d\u043e\u0433\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u0432\u043e\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">float fbmTiledWorley3(...) {     return clamp((1.0-fbmTiledVoronoi3(...))*1.5-0.25, 0.0, 1.0); }<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ha\/pf\/em\/hapfemxrqrxuqfpckajp53j4zxc.png\"><\/div>\n<p>  \u0414\u043b\u044f \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0432\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u041f\u0435\u0440\u0432\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 128\u0445128\u0445128 \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043d\u0438\u0437\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0439 \u0448\u0443\u043c, \u0432\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 32\u044532\u044532 \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0439 \u0448\u0443\u043c. \u041a\u0430\u0436\u0434\u0430\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 R8. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 4 \u043a\u0430\u043d\u0430\u043b\u0430 R8G8B8A8 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438 \u0442\u0440\u0438 \u043a\u0430\u043d\u0430\u043b\u0430 R8G8B8 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439, \u0430 \u0437\u0430\u0442\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u044b \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u044e\u0442 \u0432 \u0448\u0435\u0439\u0434\u0435\u0440\u0435. \u042f \u043d\u0435 \u0432\u0438\u0436\u0443 \u0432 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0435 \u0432 cache coherence.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0435\u0449\u0435 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f remap(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439:<\/p>\n<pre><code class=\"cpp\">float remap(float value, float minValue, float maxValue, float newMinValue, float newMaxValue) {     return newMinValue+(value-minValue)\/(maxValue-minValue)*(newMaxValue-newMinValue); }<\/code><\/pre>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441 \u043d\u0438\u0437\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u043c \u0448\u0443\u043c\u043e\u043c:<br \/>  R-\u043a\u0430\u043d\u0430\u043b \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u041f\u0435\u0440\u043b\u0438\u043d\u0430<br \/>  G-\u043a\u0430\u043d\u0430\u043b \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043b\u0435\u044f<br \/>  B-\u043a\u0430\u043d\u0430\u043b \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043b\u0435\u044f \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c<br \/>  A-\u043a\u0430\u043d\u0430\u043b \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043b\u0435\u044f \u0441 \u0435\u0449\u0435 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ms\/_9\/z-\/ms_9z-hofvyvya5-zuh6vpi6da0.png\"><\/div>\n<p>  \u0421\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">finalValue=remap(noise.x, (noise.y * 0.625 + noise.z*0.25 + noise.w * 0.125)-1, 1, 0, 1)<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f 2D \u0441\u0440\u0435\u0437\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/64\/qh\/rl\/64qhrl3wl2vrsbedao4fk9zr3xg.png\"><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u043c \u0448\u0443\u043c\u043e\u043c:<br \/>  R-\u043a\u0430\u043d\u0430\u043b \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043b\u0435\u044f<br \/>  G-\u043a\u0430\u043d\u0430\u043b \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043b\u0435\u044f \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c<br \/>  B-\u043a\u0430\u043d\u0430\u043b \u2014 \u0442\u0430\u0439\u043b\u044f\u0449\u0438\u0439\u0441\u044f fBm \u0448\u0443\u043c \u0412\u043e\u0440\u043b\u0435\u044f \u0441 \u0435\u0449\u0435 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ox\/m6\/in\/oxm6inosejxwrkx2kdz7zv17eea.png\"><\/div>\n<p>  <\/p>\n<pre><code class=\"cpp\">finalValue=noise.x * 0.625 + noise.y*0.25 + noise.z * 0.125;<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f 2D \u0441\u0440\u0435\u0437\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lg\/mr\/mc\/lgmrmc2ohi3ayicwbji49fdhqb4.png\"><\/div>\n<p>  \u0415\u0449\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f 2D \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430-\u043f\u043e\u0433\u043e\u0434\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435, \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0438 \u0444\u043e\u0440\u043c\u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0415\u0435 \u0440\u0438\u0441\u0443\u044e\u0442 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043f\u043e\u0433\u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0439, \u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043e\u0434\u043e\u043b\u0436\u0438\u043b, \u043e\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fu\/oi\/m8\/fuoim8wbtdzgqoc2lma8g6gb0ow.png\"><\/div>\n<p>  R-\u043a\u0430\u043d\u0430\u043b \u2014 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u043d\u0430 \u043c\u0430\u043b\u043e\u0439 \u0432\u044b\u0441\u043e\u0442\u0435<br \/>  G-\u043a\u0430\u043d\u0430\u043b \u2014 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u044b\u0441\u043e\u0442\u0435<br \/>  B-\u043a\u0430\u043d\u0430\u043b \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430 \u043e\u0431\u043b\u0430\u043a\u043e\u0432<br \/>  A-\u043a\u0430\u043d\u0430\u043b \u2014 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u043e\u0432<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 3D \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0442\u043e\u0447\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0432 \u043a\u043c<\/p>\n<pre><code class=\"cpp\">vec3 position<\/code><\/pre>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0435\u0442\u0440\u043e\u043c<\/p>\n<pre><code class=\"cpp\">position.xz+=vec2(0.2f)*ufmParams.time;<\/code><\/pre>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0433\u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b<\/p>\n<pre><code class=\"cpp\">vec4 weather=textureLod(ufmWeatherMap, position.xz\/4096.0f, 0);<\/code><\/pre>\n<p> \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0432\u044b\u0441\u043e\u0442\u044b (\u043e\u0442 0 \u0434\u043e 1)<\/p>\n<pre><code class=\"cpp\">float height=cloudGetHeight(position);<\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0441\u043d\u0438\u0437\u0443: <\/p>\n<pre><code class=\"cpp\">float SRb=clamp(remap(height, 0, 0.07, 0, 1), 0, 1);<\/code><\/pre>\n<p> \u0414\u0435\u043b\u0430\u0435\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043e 0 \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0441\u043e\u0442\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e B-\u043a\u0430\u043d\u0430\u043b\u0443 \u043f\u043e\u0433\u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b: <\/p>\n<pre><code class=\"cpp\">float SRt=clamp(remap(height, weather.b*0.2, weather.b, 1, 0), 0, 1);<\/code><\/pre>\n<p> \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code class=\"cpp\">float SA=SRb*SRt;<\/code><\/pre>\n<p>  \u0421\u043d\u043e\u0432\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0441\u043d\u0438\u0437\u0443:<\/p>\n<pre><code class=\"cpp\">float DRb=height*clamp(remap(height, 0, 0.15, 0, 1), 0, 1);<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0441\u0432\u0435\u0440\u0445\u0443:<\/p>\n<pre><code class=\"cpp\">float DRt=height*clamp(remap(height, 0.9, 1, 1, 0), 0, 1);<\/code><\/pre>\n<p> \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0441\u044e\u0434\u0430 \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u043f\u043e\u0433\u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0438 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 gui: <\/p>\n<pre><code class=\"cpp\">float DA=DRb*DRt*weather.a*2*ufmProperties.density;<\/code><\/pre>\n<p>  \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043d\u0438\u0437\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0439 \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0439 \u0448\u0443\u043c \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440: <\/p>\n<pre><code class=\"cpp\">float SNsample=textureLod(ufmLowFreqNoiseTexture, position\/48.0f, 0).x*0.85f+textureLod(ufmHighFreqNoiseTexture, position\/4.8f, 0).x*0.15f; <\/code><\/pre>\n<p>  \u0412\u043e \u0432\u0441\u0435\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0447\u0438\u0442\u0430\u043b, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043d\u043e \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f (% \u043d\u0435\u0431\u0430, \u0437\u0430\u043d\u044f\u0442\u044b\u0439 \u043e\u0431\u043b\u0430\u043a\u0430\u043c\u0438), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 gui, \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f R-,G- \u043a\u0430\u043d\u0430\u043b\u044b \u043f\u043e\u0433\u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b: <\/p>\n<pre><code class=\"cpp\">float WMc=max(weather.r, clamp(ufmProperties.coverage-0.5, 0, 1)*weather.g*2);<\/code><\/pre>\n<p>  \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c: <\/p>\n<pre><code class=\"cpp\">float d=clamp(remap(SNsample*SA, 1-ufmProperties.coverage*WMc, 1, 0, 1), 0, 1)*DA;<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">float cloudSampleDensity(vec3 position) { \tposition.xz+=vec2(0.2f)*ufmParams.time;  \tvec4 weather=textureLod(ufmWeatherMap, position.xz\/4096.0f+vec2(0.2, 0.1), 0); \tfloat height=cloudGetHeight(position); \t \tfloat SRb=clamp(remap(height, 0, 0.07, 0, 1), 0, 1); \tfloat SRt=clamp(remap(height, weather.b*0.2, weather.b, 1, 0), 0, 1); \tfloat SA=SRb*SRt; \t \tfloat DRb=height*clamp(remap(height, 0, 0.15, 0, 1), 0, 1); \tfloat DRt=height*clamp(remap(height, 0.9, 1, 1, 0), 0, 1); \tfloat DA=DRb*DRt*weather.a*2*ufmProperties.density; \t \tfloat SNsample=textureLod(ufmLowFreqNoiseTexture, position\/48.0f, 0).x*0.85f+textureLod(ufmHighFreqNoiseTexture, position\/4.8f, 0).x*0.15f;  \t \tfloat WMc=max(weather.r, clamp(ufmProperties.coverage-0.5, 0, 1)*weather.g*2); \tfloat d=clamp(remap(SNsample*SA, 1-ufmProperties.coverage*WMc, 1, 0, 1), 0, 1)*DA; \t \treturn d; }<\/code><\/pre>\n<p>  \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0432 \u0437\u0430\u043a\u043e\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u043a\u0430 \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0412\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tf\/nz\/bz\/tfnzbzvd2oucw2h_oed9pbm_8ku.png\"><\/div>\n<p>  <\/p>\n<h2>\u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  \u0410\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0430 \u0417\u0435\u043c\u043b\u0438 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0430 \u0441\u043b\u043e\u044f: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439, \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u043a\u0430. \u042d\u0442\u0438 \u0441\u043b\u043e\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0444\u0435\u0440\u0430\u043c\u0438, \u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044f\u043c\u0438. \u042f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0441\u0444\u0435\u0440\u0430\u0445. \u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u044f \u0432\u0437\u044f\u043b \u0440\u0430\u0434\u0438\u0443\u0441 \u0441\u0444\u0435\u0440\u044b 6415 \u043a\u043c, \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0440\u0430\u0434\u0438\u0443\u0441 6435 \u043a\u043c. \u0420\u0430\u0434\u0438\u0443\u0441 \u0417\u0435\u043c\u043b\u0438 \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u043b \u0434\u043e 6400 \u043a\u043c. \u041e\u0442 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u0442\u043e\u043b\u0449\u0438\u043d\u044b \u201c\u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439\u201d \u0447\u0430\u0441\u0442\u0438 \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u044b (20 \u043a\u043c) \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0z\/ir\/8r\/0zir8r9qtvwlh9xk85i-hznhqa0.png\"><\/div>\n<p>  \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043d\u0435\u0431\u0430 \u043e\u0431\u043b\u0430\u043a\u0430 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b \u0438 \u043f\u0440\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0446\u0432\u0435\u0442, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b\u0430. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0440\u043d\u0435\u0442 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u0443\u044e \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u043b\u0443\u0447 \u0441\u0432\u0435\u0442\u0430 \u043e\u0442 \u0441\u043e\u043b\u043d\u0446\u0430.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5k\/ne\/lj\/5kneljw4unaofsxxgbq12ealebw.png\"><\/div>\n<p>  \u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u043e\u0441\u0442\u0440\u044f\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043b\u0443\u0447\u0430, \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0439 \u043a\u0440\u0430\u0439\u043d\u0438\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a. \u041c\u044b \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u0431\u0443\u0434\u0442\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0432\u044b\u0448\u0435 \u0443\u0441\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ed\/sr\/ly\/edsrlyis3-2or1nztj6q-osmats.png\"><\/div>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0443\u0431\u0438\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. Guerrilla Games \u0434\u0435\u043b\u0430\u044e\u0442 6. \u041f\u0440\u0438 \u0447\u0435\u043c \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u043e\u043d\u0438 \u0440\u0430\u0437\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442 \u044d\u0442\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0443\u0441\u0430, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0438 \u0448\u0443\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0441\u0433\u043b\u0430\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0444\u043e\u043d\u0435 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0438 \u044d\u0442\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5p\/rr\/df\/5prrdfocofvzsjobvawnairijp0.png\"><\/div>\n<p>  \u042f \u0432 \u0438\u0442\u043e\u0433\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 4 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0436\u0430\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u0432 6 \u0440\u0430\u0437 \u0448\u0430\u0433\u043e\u043c. \u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0430\u0433\u0430 20 \u043a\u043c * 0.01, \u0447\u0442\u043e \u0440\u0430\u0432\u043d\u043e 200 \u043c.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430:<\/p>\n<pre><code class=\"cpp\">float cloudSampleDirectDensity(vec3 position, vec3 sunDir) { \t\/\/\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0448\u0430\u0433\u0430 \tfloat avrStep=(6435.0-6415.0)*0.01; \tfloat sumDensity=0.0; \tfor(int i=0;i&lt;4;i++) \t{ \t\tfloat step=avrStep; \t\t\/\/\u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u043c \u0448\u0430\u0433 \u043d\u0430 6 \t\tif(i==3) \t\t\tstep=step*6.0; \t\t\/\/\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \t\tposition+=sunDir*step; \t\t\/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435                  \/\/\u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u043d\u0435\u0435 \t\tfloat density=cloudSampleDensity(position)*step; \t\tsumDensity+=density; \t} \treturn sumDensity; }<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0417\u0435\u043c\u043b\u0438 \u0432 \u0442\u043e\u0447\u043a\u0435 {0, 6400,0} \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u043b\u0443\u0447\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0444\u0435\u0440\u043e\u0439 \u0440\u0430\u0434\u0438\u0443\u0441\u043e\u043c 6415 \u043a\u043c \u0438 \u0446\u0435\u043d\u0442\u0440\u043e\u043c {0,0,0} \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u0442\u043e\u0447\u043a\u0443 S.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/25\/je\/zj\/25jezjeea4j3bl51jneypfjetsi.png\"><\/div>\n<p>  \u041d\u0438\u0436\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">vec4 mainMarching(vec3 viewDir, vec3 sunDir) { \tvec3 position; \tcrossRaySphereOutFar(vec3(0.0, 6400.0, 0.0), viewDir, vec3(0.0), 6415.0, position); \t \tfloat avrStep=(6435.0-6415.0)\/64.0; \t \tfor(int i=0;i&lt;128;i++) \t{ \t\tposition+=viewDir*step; \t\tif(length(position)&gt;6435.0) \t\t\tbreak; \t} \t \treturn vec4(0.0); }<\/code><\/pre>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0430\u0433\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u0430\u043a 20 \u043a\u043c \/ 64. \u0422.\u0435. \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043b\u0443\u0447\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c 64 \u0432\u044b\u0431\u043e\u0440\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u0442\u043e \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0446\u0438\u043a\u043b\u0435 \u043d\u0435 64 \u0448\u0430\u0433\u0430, \u0430 128 \u2014 \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c.<\/p>\n<p>  \u041d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0447\u0435\u0440\u043d\u044b\u0439, \u0430 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0432\u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0435. \u0421 \u043a\u0430\u0436\u0434\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0431\u043b\u0438\u0437\u043a\u043e\u0439 \u043a 0, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0446\u0438\u043a\u043b\u0430:<\/p>\n<pre><code class=\"cpp\">vec3 color=vec3(0.0); float transmittance=1.0;  \u2026 \/\/\u044d\u0442\u043e \u0432\u0441\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430  \/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 float density=cloudSampleDensity(position)*avrStep; \/\/\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u0443\u044e \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \/\/\u043f\u0440\u043e\u0448\u0435\u043b \u043b\u0443\u0447 \u0441\u043e\u043b\u043d\u0446\u0430 float sunDensity=cloudSampleDirectDensity(position, sunDir);  \/\/\u043f\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u0430\t\t\t\t float m2=exp(-ufmProperties.attenuation*sunDensity); float m3=ufmProperties.attenuation2*density; float light=ufmProperties.sunIntensity*m2*m3;  \/\/\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 color+=sunColor*light*transmittance; transmittance*=exp(-ufmProperties.attenuation*density);  \u2026  return vec4(color, 1.0-transmittance);<\/code><\/pre>\n<p>  ufmProperties.attenuation \u2014 \u0435\u0441\u0442\u044c \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043a\u0430\u043a C \u0432 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/610\/ddb\/ee8\/610ddbee8d80f847b44fa75c9a136489.svg\">, \u0430 ufmProperties.attenuation2 \u2014 C \u0432 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cd1\/8c2\/405\/cd18c240521dcfb71084a340a504e41f.svg\">. ufmProperties.sunIntensity \u2014 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043b\u043d\u0446\u0430. sunColor \u2014 \u0446\u0432\u0435\u0442 \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043b\u043d\u0446\u0430.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vc\/ft\/z9\/vcftz9vsswkxpqoggirezpfpygm.png\"><\/div>\n<p>  \u0412 \u0433\u043b\u0430\u0437\u0430 \u0441\u0440\u0430\u0437\u0443 \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u2014 \u0441\u0438\u043b\u044c\u043d\u043e\u0435 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435. \u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0431\u043b\u0438\u0437\u0438 \u0441\u043e\u043b\u043d\u0446\u0430. \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0444\u0430\u0437\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0414\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u043b\u0430\u043a\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0425\u0435\u043d\u044c\u0438-\u0413\u0440\u0438\u043d\u0448\u0442\u0435\u0439\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u0435\u0435 \u0432 1941 \u0433\u043e\u0434\u0443 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0432 \u0433\u0430\u0437\u043e\u0432\u044b\u0445 \u0441\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f\u0445 \u0432 \u043a\u043e\u0441\u043c\u043e\u0441\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/4b0\/b2e\/33f\/4b0b2e33fbd07036b14317d40cb1eac0.svg\"><\/div>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435. \u041f\u043e \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0444\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0434\u0435\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0438 \u0444\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0432\u0435, \u0434\u0430 \u0435\u0449\u0435 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0441\u043e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u042f \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 \u0444\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445, \u043d\u043e \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e. \u041f\u0435\u0440\u0432\u0430\u044f \u0444\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 g \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u043a 1 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044f\u0440\u043a\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0431\u043b\u0438\u0437\u0438 \u0441\u043e\u043b\u043d\u0446\u0430. \u0412\u0442\u043e\u0440\u0430\u044f \u0444\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 g \u0431\u043b\u0438\u0437\u043a\u043e\u0435 \u043a 0.5 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0432\u0441\u0435\u0439 \u043d\u0435\u0431\u0435\u0441\u043d\u043e\u0439 \u0441\u0444\u0435\u0440\u0435.<\/p>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0445\u043e\u0434\u0438\u043c cos(theta) float mu=max(0, dot(viewDir, sunDir)); \t\t\t\t float m11=ufmProperties.phaseInfluence*cloudPhaseFunction(mu, ufmProperties.eccentrisy); float m12=ufmProperties.phaseInfluence2*cloudPhaseFunction(mu, ufmProperties.eccentrisy2); float m2=exp(-ufmProperties.attenuation*sunDensity); float m3=ufmProperties.attenuation2*density; float light=ufmProperties.sunIntensity*(m11+m12)*m2*m3;<\/code><\/pre>\n<p>  ufmProperties.eccentrisy, ufmProperties.eccentrisy2 \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f g<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ip\/qr\/fi\/ipqrfivyafyxnmdswnn_nbpvfdk.png\"><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0431\u043e\u0440\u044c\u0431\u0443 \u0441\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0438\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435\u043c. \u041e\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0443\u0447\u043b\u0438 \u0441\u0432\u0435\u0442 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 \u043d\u0435\u0431\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0441\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u042f \u0440\u0435\u0448\u0438\u043b \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">return vec4(color+ambientColor*ufmProperties.ambient, 1.0-transmittance);<\/code><\/pre>\n<p>  \u0413\u0434\u0435 ambientColor \u2014 \u0446\u0432\u0435\u0442 \u043d\u0435\u0431\u0430 \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043b\u0443\u0447\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f, ufmProperties.ambient \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u0447\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ct\/8h\/ji\/ct8hjiyk7brz5pv8vuwjeji33bc.png\"><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0447\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0437\u0433\u043b\u044f\u0434, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0435\u043a\u0438\u0439 \u0442\u0443\u043c\u0430\u043d \u0438\u043b\u0438 \u0434\u044b\u043c\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0430\u043b\u0435\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435. \u042f \u0432\u0437\u044f\u043b \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u0443\u0433\u043b\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u0438 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 blending, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0438 \u0446\u0432\u0435\u0442\u043e\u043c \u0444\u043e\u043d\u0430.<\/p>\n<pre><code class=\"cpp\">float blending=1.0-exp(-max(0.0, dot(viewDir, vec3(0.0,1.0,0.0)))*ufmProperties.fog); blending=blending*blending*blending; return vec4(mix(ambientColor, color+ambientColor*ufmProperties.ambient, blending), 1.0-transmittance);<\/code><\/pre>\n<p>  ufmProperties.fog \u2014 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/02\/td\/9h\/02td9ho6kelgum68wldvcf-zymu.png\"><\/div>\n<p>  \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">vec4 mainMarching(vec3 viewDir, vec3 sunDir, vec3 sunColor, vec3 ambientColor) { \tvec3 position; \tcrossRaySphereOutFar(vec3(0.0, 6400.0, 0.0), viewDir, vec3(0.0), 6415.0, position); \t \tfloat avrStep=(6435.0-6415.0)\/64.0; \t \tvec3 color=vec3(0.0); \tfloat transmittance=1.0; \t \tfor(int i=0;i&lt;128;i++) \t{ \t\tfloat density=cloudSampleDensity(position)*avrStep; \t\tif(density&gt;0.0) \t\t{ \t\t\tfloat sunDensity=cloudSampleDirectDensity(position, sunDir); \t\t\tfloat mu=max(0.0, dot(viewDir, sunDir)); \t\t\t\t \t\t\tfloat m11=ufmProperties.phaseInfluence*cloudPhaseFunction(mu, ufmProperties.eccentrisy); \t\t\tfloat m12=ufmProperties.phaseInfluence2*cloudPhaseFunction(mu, ufmProperties.eccentrisy2); \t\t\tfloat m2=exp(-ufmProperties.attenuation*sunDensity); \t\t\tfloat m3=ufmProperties.attenuation2*density; \t\t\tfloat light=ufmProperties.sunIntensity*(m11+m12)*m2*m3; \t\t \t\t\tcolor+=sunColor*light*transmittance; \t\t\ttransmittance*=exp(-ufmProperties.attenuation*density); \t\t} \t\tposition+=viewDir*avrStep;  \t\tif(transmittance&lt;0.05 || length(position)&gt;6435.0) \t\t\tbreak; \t} \t \tfloat blending=1.0-exp(-max(0.0, dot(viewDir, vec3(0.0,1.0,0.0)))*ufmProperties.fog); \tblending=blending*blending*blending; \treturn vec4(mix(ambientColor, color+ambientColor*ufmProperties.ambient, blending), 1.0-transmittance); }<\/code><\/pre>\n<p>  \u0412\u0438\u0434\u0435\u043e \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439:<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/uPxVgbwThmI?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041c\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u043b 25 fps \u0432 full hd \u043d\u0430 radeon rx 480. \u0414\u0432\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0441\u0430\u043c\u0438 Guerrilla Games.<\/p>\n<p>  <b>\u0420\u0438\u0441\u0443\u0435\u043c \u0442\u043e \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0438\u0434\u043d\u043e<\/b><\/p>\n<p>  \u042d\u043a\u0440\u0430\u043d \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0442\u0430\u0439\u043b\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 16\u044516 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0435 3D-\u0448\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u0431\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u0433\u043e\u0440\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0445 \u0442\u0430\u0439\u043b\u0430\u0445, \u043e\u0431\u043b\u0430\u043a\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u0437\u0430\u0433\u043e\u0440\u043e\u0436\u0435\u043d\u044b.<\/p>\n<p>  <b>\u0420\u0435\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f<\/b><\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043a\u0430\u043c\u0435\u0440\u0430 \u043d\u0435\u043f\u043e\u0434\u0432\u0438\u0436\u043d\u0430, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u043a\u0430\u043c\u0435\u0440\u0430 \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0430\u0441\u044c \u2014 \u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0446\u0435\u043b\u044b\u0439 \u044d\u043a\u0440\u0430\u043d. \u0412\u0441\u0435 \u0443\u0436\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438. \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u043e \u043d\u043e\u0432\u044b\u043c, \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0438 \u0432\u0438\u0434\u043e\u0432\u0443\u044e \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0446\u0432\u0435\u0442\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438. \u0412 \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u044d\u043a\u0440\u0430\u043d\u0430, \u043e\u0431\u043b\u0430\u043a\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0436\u0435 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  <b>\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435<\/b><\/p>\n<p>  \u0418\u0434\u0435\u044f \u0441 \u0440\u0435\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0435\u0437\u043a\u043e\u043c \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u0440\u0435\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043b\u0430\u0433. \u041d\u0435 \u0437\u043d\u0430\u044e, \u043a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c Guerrilla Games, \u043d\u043e \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0432 Horizon Zero Dawn \u043f\u0440\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u043e\u043c \u043a\u0430\u043c\u0435\u0440\u0430 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0432\u043d\u043e \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0440\u0435\u0437\u043a\u0438\u043c\u0438 \u0441\u043a\u0430\u0447\u043a\u0430\u043c\u0438 \u0442\u0430\u043c \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0441\u0432\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041e\u0431\u043b\u0430\u043a\u0430 \u0440\u0438\u0441\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u0432 5 \u0433\u0440\u0430\u043d\u0435\u0439, \u0442.\u043a. \u043d\u0438\u0437 \u043d\u0430\u0441 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442. \u0421\u0442\u043e\u0440\u043e\u043d\u0430 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0440\u0430\u0432\u043d\u043e\u0435 \u2154 \u043e\u0442 \u0432\u044b\u0441\u043e\u0442\u044b \u044d\u043a\u0440\u0430\u043d\u0430. \u041a\u0430\u0436\u0434\u0430\u044f \u0433\u0440\u0430\u043d\u044c \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0442\u0430\u0439\u043b\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 8\u04458. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u0440\u0430\u043d\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0438\u0437 64 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0430\u0439\u043b\u0435. \u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043f\u0440\u0438 \u0440\u0435\u0437\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445, \u043d\u043e \u0442.\u043a. \u041e\u0431\u043b\u0430\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0442\u0440\u044e\u043a \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u0435\u043d. \u0412 \u0438\u0442\u043e\u0433\u0435 radeon rx 480 \u0432\u044b\u0434\u0430\u0435\u0442 500 fps \u0432 full hd \u043f\u043e\u0434 \u0432\u0443\u043b\u043a\u0430\u043d \u0438 330 fps \u043f\u043e\u0434 opengl. Radeon hd 5700 series \u0432\u044b\u0434\u0430\u0435\u0442 109 fps \u0432 full hd \u043f\u043e\u0434 opengl (vulkan \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442).<\/p>\n<p>  <b>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 mip-\u0443\u0440\u043e\u0432\u043d\u0435\u0439<\/b><\/p>\n<p>  \u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430\u043c \u0441 \u0448\u0443\u043c\u043e\u043c \u0431\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e mip-\u0443\u0440\u043e\u0432\u043d\u044f \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0430\u043c\u044b\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445, \u0430 \u0437\u0430\u0442\u0435\u043c \u0447\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0434\u0430\u043b\u044c\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c mip-\u0443\u0440\u043e\u0432\u0435\u043d\u044c.<\/p>\n<p>  <b>\u0412\u044b\u0441\u043e\u0442\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u043a\u0430<\/b><\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u0435\u0440\u0438\u0441\u0442\u043e-\u0432\u044b\u0441\u043e\u0442\u043d\u044b\u0445 \u0438 \u043f\u0435\u0440\u0438\u0441\u0442\u043e-\u043a\u0443\u0447\u0435\u0432\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0432 Guerrilla Games \u043f\u0440\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0435\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0438\u0437 3D \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b, \u0430 \u0438\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 2D \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ud\/f2\/vj\/udf2vjpfht0hhpbf9zptwfmadhg.jpeg\"><\/div>\n<p>  <b>Curl-\u0448\u0443\u043c<\/b><\/p>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0432\u0435\u0442\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u0432 curl-\u0448\u0443\u043c\u043e\u043c. \u042d\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043d\u0443\u0436\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u0441\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/-n\/qq\/pg\/-nqqpgmixyogyjxqrdyhm4oxlpc.png\"><\/div>\n<p>  <b>\u0411\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043b\u0443\u0447\u0438<\/b><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qd\/wq\/xv\/qdwqxvzveiwuxgu2v84aw5fhjwo.png\"><\/div>\n<p>  \u0422\u0430\u043a\u0438\u0435 \u043b\u0443\u0447\u0438, \u043d\u0430\u0433\u043e\u043d\u044f\u044e\u0449\u0438\u0435 \u0434\u0440\u0430\u043c\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u0442\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u044f\u0440\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u043e\u043b\u043d\u0446\u0430, \u0433\u0434\u0435 \u043e\u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u043e \u043e\u0431\u043b\u0430\u043a\u0430\u043c\u0438. \u0417\u0430\u0442\u0435\u043c \u044d\u0442\u0443 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0434\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0447\u044c \u043e\u0442 \u0441\u043e\u043b\u043d\u0446\u0430.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ap\/vj\/-a\/apvj-assr02-vaov3o1k5frfawk.png\"><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0434\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jd\/lg\/1h\/jdlg1hp7jajzhlbom4ocmn3vl70.png\"><\/div>\n<p>  \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u043d\u043e \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u0445 \u0432\u0441\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0441 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e \u043d\u0438\u0445 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0421\u0430\u043c\u043e\u0439 \u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u044f \u0441\u0447\u0438\u0442\u0430\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u043e\u0431\u043b\u0430\u043a\u0430\u043c \u043e\u0442 \u0434\u0432\u0438\u0436\u043a\u0430 Frostbite.<\/p>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <b>\u041f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Guerrilla Games<\/b><br \/>  <a href=\"https:\/\/d1z4o56rleaq4j.cloudfront.net\/downloads\/assets\/Nubis-Authoring-Realtime-Volumetric-Cloudscapes-with-the-Decima-Engine-Final.pdf?mtime=20170807141817\">d1z4o56rleaq4j.cloudfront.net\/downloads\/assets\/Nubis-Authoring-Realtime-Volumetric-Cloudscapes-with-the-Decima-Engine-Final.pdf?mtime=20170807141817<\/a><br \/>  <a href=\"http:\/\/killzone.dl.playstation.net\/killzone\/horizonzerodawn\/presentations\/Siggraph15_Schneider_Real-Time_Volumetric_Cloudscapes_of_Horizon_Zero_Dawn.pdf\">killzone.dl.playstation.net\/killzone\/horizonzerodawn\/presentations\/Siggraph15_Schneider_Real-Time_Volumetric_Cloudscapes_of_Horizon_Zero_Dawn.pdf<\/a><br \/>  <a href=\"https:\/\/www.youtube.com\/watch?v=-d8qT5-1LOI\">www.youtube.com\/watch?v=-d8qT5-1LOI<\/a><\/p>\n<p>  <b>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 GPU Pro 7<\/b><br \/>  <a href=\"https:\/\/vk.com\/doc179245989_437393482?hash=a9af5f665eda4edf58&amp;dl=806d4dbdac0f7a761c\">vk.com\/doc179245989_437393482?hash=a9af5f665eda4edf58&amp;dl=806d4dbdac0f7a761c<\/a><\/p>\n<p>  <a href=\"https:\/\/www.scratchapixel.com\/lessons\/procedural-generation-virtual-worlds\/simulating-sky\/simulating-colors-of-the-sky\"><b>\u041d\u0435\u0431\u043e<\/b><\/a><\/p>\n<p>  <b>\u041f\u043e\u0434\u0445\u043e\u0434 Frostbite<\/b><br \/>  <a href=\"https:\/\/media.contentapi.ea.com\/content\/dam\/eacom\/frostbite\/files\/s2016-pbs-frostbite-sky-clouds-new.pdf\">media.contentapi.ea.com\/content\/dam\/eacom\/frostbite\/files\/s2016-pbs-frostbite-sky-clouds-new.pdf<\/a><br \/>  <a href=\"https:\/\/www.shadertoy.com\/view\/XlBSRz\">www.shadertoy.com\/view\/XlBSRz<\/a><\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/459948\/\"> https:\/\/habr.com\/ru\/post\/459948\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u0420\u0430\u043d\u044c\u0448\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0432 \u0438\u0433\u0440\u0430\u0445 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 2D \u0441\u043f\u0440\u0430\u0439\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b, \u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 \u043f\u043e\u0442\u0435\u0440\u044c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0421\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0432 \u0438\u0433\u0440\u044b \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u0430 \u0441\u0442\u0443\u0434\u0438\u044f Guerrilla Games \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0433\u0440\u043e\u0439 Horizon Zero Dawn. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0443\u043c\u0435\u043b\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043d\u043e \u0441\u0442\u0443\u0434\u0438\u044f \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0438 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043b\u044e\u0431\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v9\/uq\/em\/v9uqemwtz5ty7x5uvpppsoonmdu.png\">  <\/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-292753","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292753","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=292753"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292753\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=292753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=292753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=292753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}