{"id":295189,"date":"2019-11-26T09:00:08","date_gmt":"2019-11-26T09:00:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=295189"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=295189","title":{"rendered":"\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u043f\u0435\u0441\u043a\u0430 \u0438\u0433\u0440\u044b Journey"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/476448\/\">\u0421\u0440\u0435\u0434\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0438\u043d\u0434\u0438-\u0438\u0433\u0440, \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u043b\u0435\u0442, \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <em>Journey<\/em>. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435\u0439 \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0435 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u043c\u0443 \u0441\u0430\u0443\u043d\u0434\u0442\u0440\u0435\u043a\u0443 <em>Journey<\/em> \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u042f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0433\u0440 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0440\u0438\u0433\u043e\u0432\u0430\u043b \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043f\u0435\u0441\u043a\u0430. \u041e\u043d \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0440\u0430\u0441\u0438\u0432, \u043d\u043e \u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0435\u043c \u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0432 \u0446\u0435\u043b\u043e\u043c. <em>Journey<\/em> \u0432 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0438\u0437 \u043f\u0435\u0441\u043a\u0430, \u0438 \u0431\u0435\u0437 \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0441\u0430\u043c\u0430 \u0438\u0433\u0440\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/63f\/be0\/2a8\/63fbe02a87ccac8101001a43d953776f.jpg\"><\/div>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043d\u0430 \u0434\u0432\u0430 \u043f\u043e\u0441\u0442\u0430, \u044f \u043e\u0442\u0434\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u044e <em>Journey<\/em>, \u043d\u0430\u0443\u0447\u0438\u0432 \u0432\u0430\u0441 \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043f\u0435\u0441\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432. \u0412\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u044b \u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0438\u0433\u0440\u0435 \u043f\u0435\u0441\u0447\u0430\u043d\u044b\u0435 \u0434\u044e\u043d\u044b, \u044d\u0442\u0430 \u0441\u0435\u0440\u0438\u044f \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0443 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u0433\u0440\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043f\u0435\u0441\u043a\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 <em>Journey<\/em>, \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u043e\u043d \u0431\u044b\u043b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d. \u0418 \u0445\u043e\u0442\u044f \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0441\u043e \u043c\u043d\u043e\u0439 \u044d\u0442\u043e <em>\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432, \u043d\u043e \u0438 \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0441\u043e\u0447\u0435\u0442\u0430\u0442\u044c \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0443 \u0438 \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0439.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h1>\u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u0435\u0441\u043a\u0430 \u0432 Journey<\/h1>\n<p>  \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f, \u043a\u0430\u043a \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043f\u0435\u0441\u043a\u0430 <em>Journey<\/em>, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0441 GDC \u0432\u0435\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 <a href=\"https:\/\/twitter.com\/thatgamecompany\" rel=\"noopener noreferrer\">thatgamecompany<\/a> \u0414\u0436\u043e\u043d\u0430 \u042d\u0434\u0432\u0430\u0440\u0434\u0441\u0430 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c &#171;<a href=\"https:\/\/www.youtube.com\/watch?v=wt2yYnBRD3U\" rel=\"noopener noreferrer\">Sand Rendering in Journey<\/a>&#171;. \u0412 \u044d\u0442\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0414\u0436\u043e\u043d \u042d\u0434\u0432\u0430\u0440\u0434\u0441 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u044f\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043a \u043f\u0435\u0441\u0447\u0430\u043d\u044b\u043c \u0434\u044e\u043d\u0430\u043c <em>Journey<\/em> \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0430.<\/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\/wt2yYnBRD3U?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>  \u0414\u043e\u043a\u043b\u0430\u0434 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d, \u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0414\u0436\u043e\u043d\u043e\u043c \u042d\u0434\u0432\u0430\u0440\u0434\u0441\u043e\u043c, \u043d\u0435 \u0432\u0430\u0436\u043d\u044b. \u041c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0448\u0435\u0439\u0434\u0435\u0440\u044b \u043f\u0435\u0441\u043a\u0430, \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0438\u0435 \u0448\u0435\u0439\u0434\u0435\u0440 <em>Journey<\/em>, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u0430\u043c.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e 3D-\u043c\u0435\u0448\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0433\u043b\u0430\u0434\u043a\u043e\u0439 \u0434\u044e\u043d\u044b. \u041f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043f\u0435\u0441\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u0432\u0443\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432: \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0437\u0435\u0440\u043d\u0438\u0441\u0442\u043e\u0441\u0442\u0438. \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u043e\u0442 \u043f\u0435\u0441\u043a\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u043e\u0439 <strong>\u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/strong>. \u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043a\u043e\u0434\u0438\u043d\u0433\u0430 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0435\u043d\u0438 \u0438 \u0437\u0430\u0441\u0432\u0435\u0442\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u044b.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043b\u043b\u044e\u0437\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043c\u0430. \u041f\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 \u043f\u0435\u0441\u043e\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0435\u0440\u043d\u0438\u0441\u0442\u043e\u0441\u0442\u044c \u043f\u0435\u0441\u043a\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0441 <strong>\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u044e \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0447\u0430\u0441\u0442\u0438\u0447\u0435\u043a \u043f\u0435\u0441\u043a\u0430 \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0434\u044e\u043d\u044b.<\/p>\n<p>  \u041d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432\u0441\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0437\u0443\u0447\u0438\u043c \u0432 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435. \u0421 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/373\/0b9\/8a1\/3730b98a1670ef00cf68efb0af0cc08b.png\"><\/div>\n<p>  <\/p>\n<h6>\u0414\u0438\u0444\u0444\u0443\u0437\u043d\u044b\u0439 \u0446\u0432\u0435\u0442<\/h6>\n<p>  \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u043f\u0435\u0441\u043a\u0430 \u2014 \u044d\u0442\u043e \u0435\u0433\u043e <strong>\u0434\u0438\u0444\u0444\u0443\u0437\u043d\u044b\u0439 \u0446\u0432\u0435\u0442<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 <em>\u043c\u0430\u0442\u043e\u0432\u043e\u0441\u0442\u0438<\/em> \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0430. \u0414\u0438\u0444\u0444\u0443\u0437\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 <em>\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e<\/em> \u0446\u0432\u0435\u0442\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u043e\u0441\u0432\u0435\u0449\u0451\u043d\u043d\u043e\u0441\u0442\u0438. \u0421\u0444\u0435\u0440\u0430, \u043f\u043e\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u0430\u044f \u0432 \u0431\u0435\u043b\u044b\u0439 \u0446\u0432\u0435\u0442, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0441\u044e\u0434\u0443 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u0435\u043b\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0451 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u0414\u0438\u0444\u0444\u0443\u0437\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u0430 \u043e\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0443 \u0414\u0436\u043e\u043d\u0430 \u042d\u0434\u0432\u0430\u0440\u0434\u0441\u0430 \u0441 GDC \u043c\u044b \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0437\u043d\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <strong>diffuse contrast reflectance<\/strong>; \u043e\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 <strong>\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443<\/strong>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/509\/4c1\/65b\/5094c165b5f2e1ba10696fec1641482c.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/90f\/9b4\/73f\/90f9b473f7d1eefcb6ca32871300fed8.png\"><\/div>\n<p>  <i>\u0414\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/i><\/p>\n<h6>\u041d\u043e\u0440\u043c\u0430\u043b\u044c \u043f\u0435\u0441\u043a\u0430<\/h6>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0433\u043b\u0430\u0434\u043a\u0430\u044f. \u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e, <strong>\u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong> \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <strong>bump mapping<\/strong>. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/90f\/9b4\/73f\/90f9b473f7d1eefcb6ca32871300fed8.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/07a\/739\/06d\/07a73906d58ed9d4c251340b4e92d7f5.png\"><\/div>\n<p>  <\/p>\n<h6>\u041e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u0440\u0430\u0451\u0432<\/h6>\n<p>  \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 <em>Journey<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043e\u0432. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0434\u044e\u043d\u0430 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0430\u044f. \u0414\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043a\u0440\u0430\u044e \u0434\u044e\u043d\u044b. \u041e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>rim lighting<\/strong>, \u0438 \u0434\u043b\u044f \u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 <strong>\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0424\u0440\u0435\u043d\u0435\u043b\u044e<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044f\u0445 \u043f\u043e\u0434 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u0438 <em>\u0443\u0433\u043b\u0430\u043c\u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u044f<\/em>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/07a\/739\/06d\/07a73906d58ed9d4c251340b4e92d7f5.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/864\/285\/818\/8642858189235ff1d796378992523ceb.png\"><\/div>\n<p>  <\/p>\n<h6>\u0417\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u043a\u0435\u0430\u043d\u0430<\/h6>\n<p>  \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 <em>Journey<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u00ab\u0441\u0451\u0440\u0444\u0438\u043d\u0433\u0430\u00bb \u043f\u043e \u043f\u0435\u0441\u0447\u0430\u043d\u044b\u043c \u0434\u044e\u043d\u0430\u043c. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 thatgamecompany \u0445\u043e\u0442\u0435\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0441\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0449\u0443\u0449\u0430\u043b\u0441\u044f \u043d\u0435 \u043a\u0430\u043a \u0442\u0432\u0451\u0440\u0434\u043e\u0435 \u0442\u0435\u043b\u043e, \u0430 \u043a\u0430\u043a \u0436\u0438\u0434\u043a\u043e\u0441\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0438\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0432 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u0445 \u0432\u043e\u0434\u044b. \u0414\u0436\u043e\u043d \u042d\u0434\u0432\u0430\u0440\u0434\u0441 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 <strong>ocean specular<\/strong>, \u0430 \u0432 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <strong>\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0411\u043b\u0438\u043d\u043d\u0443-\u0424\u043e\u043d\u0433\u0443<\/strong>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/864\/285\/818\/8642858189235ff1d796378992523ceb.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/716\/d17\/d2f\/716d17d2f4d0d0796e51bee059ce39c2.png\"><\/div>\n<p>  <\/p>\n<h6>\u041e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u0431\u043b\u0435\u0441\u043a\u043e\u0432<\/h6>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a \u0448\u0435\u0439\u0434\u0435\u0440\u0443 \u043f\u0435\u0441\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 ocean specular \u043f\u0440\u0438\u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 \u00ab\u0436\u0438\u0434\u043a\u0438\u0439\u00bb \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u043f\u0435\u0441\u043a\u0430: \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0442\u0431\u043b\u0435\u0441\u043a\u0438. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0434\u044e\u043d\u0430\u0445 \u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0435\u0441\u0447\u0438\u043d\u043a\u0430 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0432\u0435\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043e\u0442\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0445 \u043b\u0443\u0447\u0435\u0439 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043d\u0430\u0448 \u0433\u043b\u0430\u0437. \u0422\u0430\u043a\u043e\u0435 <strong>glitter reflection<\/strong> (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u0431\u043b\u0435\u0441\u043a\u043e\u0432) \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0434\u0430\u0436\u0435 \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0441\u043e\u043b\u043d\u0435\u0447\u043d\u044b\u0439 \u0441\u0432\u0435\u0442; \u043e\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 ocean specular \u0438 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/716\/d17\/d2f\/716d17d2f4d0d0796e51bee059ce39c2.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/539\/f3c\/33c\/539f3c33c6c12f5206540ff62ecf4102.png\"><\/div>\n<p>  <\/p>\n<h6>\u0412\u043e\u043b\u043d\u044b \u043f\u0435\u0441\u043a\u0430<\/h6>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0435\u0441\u0447\u0438\u043d\u043e\u043a, \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0434\u044e\u043d\u044b. \u041d\u0430 \u0434\u044e\u043d\u0430\u0445 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0432\u043e\u043b\u043d\u044b, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u0435\u0442\u0440\u043e\u043c. \u0418\u0445 \u0444\u043e\u0440\u043c\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043a\u0430\u0442\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u044e\u043d\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0442\u0440\u0430. \u041f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 bump-\u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443, \u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0434\u044e\u043d \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0414\u0436\u043e\u043d\u043e\u043c \u042d\u0434\u0432\u0430\u0440\u0434\u0441\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u043a\u0443 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <strong>triplanar shading<\/strong>: \u0432 \u043d\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043a\u0430\u0442\u043e\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u044e\u043d\u044b.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/539\/f3c\/33c\/539f3c33c6c12f5206540ff62ecf4102.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/828\/9b4\/997\/8289b49971bbe0046845f71284790124.png\"><\/div>\n<p>  <\/p>\n<h1>\u0410\u043d\u0430\u0442\u043e\u043c\u0438\u044f \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u043f\u0435\u0441\u043a\u0430 Journey<\/h1>\n<p>  \u0412 Unity \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443. \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u0438, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0441 <strong>surface shader<\/strong> (\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430).<\/p>\n<p>  \u0412\u0441\u0435 <strong>\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u044b\u0435 \u0448\u0435\u0439\u0434\u0435\u0440\u044b<\/strong> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0434\u0432\u0430 \u044d\u0442\u0430\u043f\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong>, \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0449\u0430\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0451 <em>\u0430\u043b\u044c\u0431\u0435\u0434\u043e<\/em>, <em>\u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u044c<\/em>, <em>\u043c\u0435\u0442\u0430\u043b\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430<\/em>, <em>\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c<\/em> \u0438 <em>\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438<\/em>. \u0417\u0430\u0442\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0441\u0432\u0435\u0442\u044b.<\/p>\n<h2>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/h2>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u044f\u0434\u0440\u043e\u043c \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435 \u043a\u043e\u0434\u0435 <code>surf<\/code>. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u2014 \u044d\u0442\u043e <em>\u0446\u0432\u0435\u0442 \u043f\u0435\u0441\u043a\u0430<\/em> \u0438 <strong>\u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong>. \u041d\u043e\u0440\u043c\u0430\u043b\u044c 3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u044d\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u0412\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0432\u0435\u0442. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0448\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u044b <strong>\u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043f\u0435\u0441\u043a\u0430<\/strong> \u0438 <strong>\u0432\u043e\u043b\u043d \u043f\u0435\u0441\u043a\u0430<\/strong>, \u0438\u0441\u043a\u0430\u0436\u0430\u044e\u0449\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043f\u0435\u0441\u043a\u0430 \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u0435\u0433\u043e \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"cpp\">void surf (Input IN, inout SurfaceOutput o) {     o.Albedo = _SandColor;     o.Alpha = 1;      float3 N = float3(0, 0, 1);     N = RipplesNormal(N);     N = SandNormal   (N);      o.Normal = N; }<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0432 <code>o.Normal<\/code> \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u044b \u0432 <strong>\u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435<\/strong>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u0438. \u0422\u043e \u0435\u0441\u0442\u044c <code>float3(0, 0, 1)<\/code> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c 3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041e\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, <code>RipplesNormal<\/code>, \u0438 <code>SandNormal<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 \u0435\u0433\u043e. \u041f\u043e\u0437\u0436\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<h2>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b. \u0412 \u043a\u043e\u0434\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (diffuse colour, rim lighting, ocean specular \u0438 glitter reflection). \u0417\u0430\u0442\u0435\u043c \u0432\u0441\u0435 \u043e\u043d\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f.<\/p>\n<pre><code class=\"cpp\">#pragma surface surf Journey fullforwardshadows  float4 LightingJourney (SurfaceOutput s, fixed3 viewDir, UnityGI gi) {     float3 diffuseColor = DiffuseColor    ();     float3 rimColor     = RimLighting     ();     float3 oceanColor   = OceanSpecular   ();     float3 glitterColor = GlitterSpecular ();      float3 specularColor = saturate(max(rimColor, oceanColor));     float3 color = diffuseColor + specularColor + glitterColor; \t     return float4(color * s.Albedo, 1); }<\/code><\/pre>\n<p>  \u0421\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u0435\u043d \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0445\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>  \u041e\u0431\u044b\u0447\u043d\u043e \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 diffuse colour. \u0422\u0430\u043a \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435 \u043e\u0434\u043d\u043e, \u0430 \u0442\u0440\u0438 specular reflection (<em>rim light<\/em>, <em>ocean specular<\/em> \u0438 <em>glitter specular<\/em>), \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0441\u043e\u043a <em>\u0441\u043b\u0438\u0448\u043a\u043e\u043c<\/em> \u043c\u0435\u0440\u0446\u0430\u044e\u0449\u0438\u043c. \u0422\u0430\u043a \u043a\u0430\u043a rim light \u0438 ocean specular \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. Glitter specular \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043c\u0435\u0440\u0446\u0430\u043d\u0438\u0435 \u043f\u0435\u0441\u043a\u0430.<\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 2. Diffuse Color<\/h2>\n<p>  \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0430 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432 \u0438\u0433\u0440\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u043d\u0430 \u0442\u043e\u043c. \u043a\u0430\u043a \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0451 \u0432 Unity.<\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0437\u0430\u043b\u043e\u0436\u0438\u043b\u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0443 \u0432\u0435\u0440\u0441\u0438\u044e \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u043f\u0435\u0441\u043a\u0430 Journey. \u041a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0440\u0430\u043d\u0435\u0435, <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 <strong>\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u044b\u0445 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u0445<\/strong> \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0441\u0432\u0435\u0442\u044b. \u041c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 Journey \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u044d\u0442\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438. \u041c\u044b \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e (\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e) \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u044f\u0434\u0440\u0435 \u044d\u0442\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430: \u0435\u0433\u043e <strong>diffuse lighting<\/strong> (\u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0433\u043e\/\u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f).<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/78f\/166\/71c\/78f16671c754f05e619ce034fad81926.png\"><\/div>\n<p>  \u041f\u043e\u043a\u0430 \u043c\u044b \u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u0441\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0430 <strong>\u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0438 \u043f\u0435\u0441\u043a\u0430<\/strong>.<\/p>\n<p>  \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>LightingJourney<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u043f\u0435\u0441\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>DiffuseColor<\/code>.<\/p>\n<pre><code class=\"cpp\">float4 LightingJourney (SurfaceOutput s, fixed3 viewDir, UnityGI gi) {     \/\/ Lighting properties     float3 L = gi.light.dir;     float3 N = s.Normal;      \/\/ Lighting calculation     float3 diffuseColor\t= DiffuseColor(N, L);      \/\/ Final color     return float4(diffuseColor, 1); }<\/code><\/pre>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u0448 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c \u0438 \u0447\u0438\u0441\u0442\u044b\u043c.<\/p>\n<h2>\u041e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443<\/h2>\n<p>  \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u00ab\u043a\u0430\u043a \u0432 Journey\u00bb, \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u00ab\u0431\u0430\u0437\u043e\u0432\u0430\u044f\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043c\u0430\u0442\u043e\u0432\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>Lambertian reflectance<\/strong> (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443). \u042d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043d\u0435\u0431\u043b\u0435\u0441\u0442\u044f\u0449\u0438\u0445 \u0438 \u043d\u0435\u043c\u0435\u0442\u0430\u043b\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439. \u041e\u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0430 \u0432 \u0447\u0435\u0441\u0442\u044c \u0448\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0451\u043d\u043e\u0433\u043e-\u044d\u043d\u0446\u0438\u043a\u043b\u043e\u043f\u0435\u0434\u0438\u0441\u0442\u0430 <strong>\u0418\u043e\u0433\u0430\u043d\u043d\u0430 \u0413\u0435\u0439\u043d\u0440\u0438\u0445\u0430 \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0430<\/strong>, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0433\u043e \u0435\u0451 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0432 1760 \u0433\u043e\u0434\u0443.<\/p>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u043b\u0435\u0436\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438\u0434\u0435\u044f: <em>\u044f\u0440\u043a\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0451 \u0441\u0432\u0435\u0442\u0430<\/em>. \u0413\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043d\u0438\u0436\u0435, \u0433\u0434\u0435 \u0441\u0444\u0435\u0440\u0430 \u043e\u0441\u0432\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u0425\u043e\u0442\u044f \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u0438 \u0437\u0435\u043b\u0451\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0444\u0435\u0440\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u0438\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0441\u0432\u0435\u0442 \u0432 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0432\u0435\u0442\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0437\u0435\u043b\u0451\u043d\u043e\u0439.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2cf\/d48\/495\/2cfd484953877a47fe5ba564b399ea35.png\"><\/div>\n<p>  \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0433\u043b\u0430 \u043c\u0435\u0436\u0434\u0443 <em>\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c\u044e<\/em> \u0438 <em>\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u043c<\/em>. \u0421 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442 <strong>\u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong> \u0438 <strong>\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/strong>. \u042d\u0442\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0432\u044b\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0432\u0443\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b (\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u0438 <strong>\u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u043c\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438<\/strong>) <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1e8\/0c3\/b30\/1e80c3b3087c0a57b68ad11261a9ec2b.svg\" alt=\"$N$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a5a\/4e0\/afa\/a5a4e0afaec84939dbfda220172b2be0.svg\" alt=\"$L$\" data-tex=\"inline\"><\/math>. \u0415\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0434\u0430\u043d\u0438\u044f <em>\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439<\/em> \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043a\u043e\u0434\u0438\u043d\u0433\u0430 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 N \u0438 L<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u0440\u0438\u043d\u044f\u0442\u043e, \u0447\u0442\u043e <strong>\u043d\u043e\u0440\u043c\u0430\u043b\u044c<\/strong> \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1e8\/0c3\/b30\/1e80c3b3087c0a57b68ad11261a9ec2b.svg\" alt=\"$N$\" data-tex=\"inline\"><\/math> \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 <em>\u043e\u0442<\/em> \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e <strong>\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/strong> <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a5a\/4e0\/afa\/a5a4e0afaec84939dbfda220172b2be0.svg\" alt=\"$L$\" data-tex=\"inline\"><\/math> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <em>\u043e\u0442<\/em> \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0442. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a: \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 <em>\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443<\/em> \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b \u0441\u0432\u0435\u0442.<\/p>\n<p>  \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0431\u0438\u0432\u0430\u0442\u044c \u0441 \u0442\u043e\u043b\u043a\u0443, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043f\u0440\u043e\u0449\u0435.<\/p><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0432 Unity<\/b><\/p>\n<div class=\"spoiler_text\">\u0414\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 Unity 5 <strong>Standard Shader<\/strong> \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0434\u043b\u044f \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0441\u0432\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>  \u041a \u043d\u0435\u0439 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432: \u0432 <em>Legacy shader<\/em> \u043e\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>Diffuse<\/em>.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440, \u0442\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>Lambert<\/code>:<\/p>\n<pre><code class=\"cpp\">#pragma surface surf Lambert fullforwardshadows<\/code><\/pre>\n<p>  \u0415\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>LightingLambert<\/code>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0432 \u0444\u0430\u0439\u043b\u0435 <code>CGIncludes\\Lighting.cginc<\/code>.<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0438 \u043a\u043b\u0438\u043c\u0430\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u041e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0440\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u043d\u043e \u043e\u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439, \u043a\u0430\u043a \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439. \u0422\u0430\u043a\u0436\u0435 \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0432\u043b\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430 \u043f\u043e\u043b\u044e\u0441\u0430\u0445 \u043f\u043b\u0430\u043d\u0435\u0442\u044b \u0445\u043e\u043b\u043e\u0434\u043d\u0435\u0435, \u0447\u0435\u043c \u043d\u0430 \u044d\u043a\u0432\u0430\u0442\u043e\u0440\u0435.<\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0435\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u0418 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u0441\u0432\u0435\u0442\u0430 \u043d\u0435\u0442, \u0435\u0441\u043b\u0438 \u0434\u0432\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0435\u0440\u043f\u0435\u043d\u0434\u0438\u043a\u0443\u043b\u044f\u0440\u043d\u044b \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0e1\/d06\/6c6\/0e1d066c6ff998abda8ca5c7607e4c4e.png\"><\/div>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1e8\/0c3\/b30\/1e80c3b3087c0a57b68ad11261a9ec2b.svg\" alt=\"$N$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a5a\/4e0\/afa\/a5a4e0afaec84939dbfda220172b2be0.svg\" alt=\"$L$\" data-tex=\"inline\"><\/math> \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u0435\u043d \u0434\u043b\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430 \u0438 \u0440\u0430\u0432\u043d\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/35b\/e60\/e68\/35be60e68c535df673e0aef590e20870.svg\" alt=\"$100\\%$\" data-tex=\"inline\"><\/math>, \u043a\u043e\u0433\u0434\u0430 \u0443\u0433\u043e\u043b \u0440\u0430\u0432\u0435\u043d <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f9c\/3c8\/e48\/f9c3c8e488ead4696749012f5ece6d13.svg\" alt=\"$0$\" data-tex=\"inline\"><\/math> \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430 (<math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b04\/ad7\/5df\/b04ad75dfd24757bf85281fe388a820c.svg\" alt=\"$0\\%$\" data-tex=\"inline\"><\/math>), \u043a\u043e\u0433\u0434\u0430 \u0443\u0433\u043e\u043b \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1f7\/311\/bbe\/1f7311bbeecd1aa665d6babf72501a8c.svg\" alt=\"$90^{\\circ}$\" data-tex=\"inline\"><\/math>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 <em>\u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u043e\u0439<\/em>, \u0442\u043e \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/64b\/eb7\/37a\/64beb737a23fb5cb0a455f0e9213f2a4.svg\" alt=\"$I$\" data-tex=\"inline\"><\/math>, \u0440\u0430\u0432\u043d\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/53b\/eec\/cba\/53beeccbae06dbcdfc09f99bc401aedd.svg\" alt=\"$N \\cdot L$\" data-tex=\"inline\"><\/math>, \u0433\u0434\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/89b\/d7c\/e4f\/89bd7ce4fcfc6095a0443a494eadcad6.svg\" alt=\"$\\cdot$\" data-tex=\"inline\"><\/math> \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c<\/strong>.<\/p>\n<p>  (1)<\/p>\n<p><math>$$display$$\\begin{equation*}  I = N \\cdot L \\end{equation*}$$display$$<\/math><\/p>\n<p>  \u0421\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0440\u043e\u0439 \u00ab\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f\u00bb \u0434\u0432\u0443\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430, \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 \u043e\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9d1\/49e\/a8e\/9d149ea8ef8692eb106a55ce5af36ccd.svg\" alt=\"$+1$\" data-tex=\"inline\"><\/math> (\u0443 \u0434\u0432\u0443\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432) \u0434\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d06\/719\/edc\/d06719edc69908e7467f7e6189302b74.svg\" alt=\"$-1$\" data-tex=\"inline\"><\/math> (\u0443 \u0434\u0432\u0443\u0445 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432). \u0421\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0432 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 <a href=\"https:\/\/www.alanzucconi.com\/2015\/06\/24\/physically-based-rendering\/\">Physically Based Rendering and Lighting Models<\/a>.<\/p>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>  \u0418 \u043a <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1e8\/0c3\/b30\/1e80c3b3087c0a57b68ad11261a9ec2b.svg\" alt=\"$N$\" data-tex=\"inline\"><\/math>, \u0438 \u043a <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a5a\/4e0\/afa\/a5a4e0afaec84939dbfda220172b2be0.svg\" alt=\"$L$\" data-tex=\"inline\"><\/math> \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 <code>s.Normal<\/code> \u0438 <code>gi.light.dirin<\/code>. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043c\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0435\u043c \u0438\u0445 \u0432 \u043a\u043e\u0434\u0435 \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u0432 <code>N<\/code> \u0438 <code>L<\/code>.<\/p>\n<pre><code class=\"cpp\">float3 DiffuseColor(float3 N, float3 L) {     float NdotL = saturate( dot(N, L) );     return NdotL; }<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>saturate<\/code> \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c \u043e\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f9c\/3c8\/e48\/f9c3c8e488ead4696749012f5ece6d13.svg\" alt=\"$0$\" data-tex=\"inline\"><\/math> \u0434\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3e4\/c77\/a6e\/3e4c77a6e7c579a778fa84a18b6f4be0.svg\" alt=\"$1$\" data-tex=\"inline\"><\/math>. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 \u043e\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d06\/719\/edc\/d06719edc69908e7467f7e6189302b74.svg\" alt=\"$-1$\" data-tex=\"inline\"><\/math> \u0434\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9d1\/49e\/a8e\/9d149ea8ef8692eb106a55ce5af36ccd.svg\" alt=\"$+1$\" data-tex=\"inline\"><\/math>, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0435\u0433\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0447\u0430\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">float NdotL = max(0, dot(N, L) );<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u0430 \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0425\u043e\u0442\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0442\u0435\u043d\u044f\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u043e\u043d\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u0447\u043d\u044b\u043c, \u043d\u0438 \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u043c. \u0412 \u0441\u0442\u0430\u0440\u044b\u0445 \u0438\u0433\u0440\u0430\u0445 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0448\u0435\u0439\u0434\u0435\u0440\u044b \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443. \u0418\u0433\u0440\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u0442\u0435\u0445\u043d\u0438\u043a\u0430, \u0447\u0430\u0441\u0442\u043e <em>\u043a\u0430\u0436\u0443\u0442\u0441\u044f<\/em> \u0441\u0442\u0430\u0440\u044b\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0443 \u0441\u0442\u0430\u0440\u044b\u0445 \u0438\u0433\u0440. \u0415\u0441\u043b\u0438 \u0432\u044b \u043a \u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u0441\u044c, \u0442\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438.<\/p>\n<p>  \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/en.wikipedia.org\/wiki\/Oren%E2%80%93Nayar_reflectance_model\" rel=\"noopener noreferrer\">\u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u041e\u0440\u0435\u043d\u0443-\u041d\u0430\u0439\u044f\u0440\u0443<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0430 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"http:\/\/www1.cs.columbia.edu\/CAVE\/publications\/pdfs\/Oren_SIGGRAPH94.pdf\" rel=\"noopener noreferrer\">Generalization of Lambert\u2019s Reflectance Model<\/a>, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432 1994 \u0433\u043e\u0434\u0443 \u041c\u0430\u0439\u043a\u043b\u043e\u043c \u041e\u0440\u0435\u043d\u043e\u043c \u0438 \u0428\u0440\u0438 \u041a. \u041d\u0430\u0439\u044f\u0440\u043e\u043c. \u041c\u043e\u0434\u0435\u043b\u044c \u041e\u0440\u0435\u043d\u0430-\u041d\u0430\u0439\u044f\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0434\u043b\u044f \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u044b\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Journey \u0445\u043e\u0442\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430 \u043f\u0435\u0441\u043a\u0430 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041e\u0440\u0435\u043d\u0443-\u041d\u0430\u0439\u044f\u0440\u0443. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0442 \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u0437-\u0437\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442.<\/p>\n<p>  \u0412 \u0441\u0432\u043e\u0451 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 2013 \u0433\u043e\u0434\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a \u0414\u0436\u043e\u043d \u042d\u0434\u0432\u0430\u0440\u0434\u0441 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0435\u0441\u043a\u0430 Journey, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0441\u0435\u0440\u0438\u0438 \u043f\u0440\u043e\u0431 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a, \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u043e\u0442\u043e\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043f\u0443\u0441\u0442\u044b\u043d\u0438, \u0430 \u0432\u0434\u043e\u0445\u043d\u0443\u0442\u044c \u0436\u0438\u0437\u043d\u044c \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e, \u0441\u0440\u0430\u0437\u0443 \u0443\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u0443\u044e \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0443.<\/p>\n<p>  \u041f\u043e \u0435\u0433\u043e \u0441\u043b\u043e\u0432\u0430\u043c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u0442\u043e\u043c\u0443 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e:<\/p>\n<p>  (2) <\/p>\n<p><math>$$display$$\\begin{equation*}  I = 4 * \\left( \\left(N\\odot \\left[1, 0.3, 1\\right]\\right) \\cdot L\\right) \\end{equation*}$$display$$<\/math><\/p>\n<p>  \u0433\u0434\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/671\/469\/35c\/67146935cf5aba0e5a807a03b1a373cb.svg\" alt=\"$\\odot$\" data-tex=\"inline\"><\/math> \u2014 <strong>\u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/strong> \u0434\u0432\u0443\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432.<\/p>\n<pre><code class=\"cpp\">float3 DiffuseColor(float3 N, float3 L) {     N.y *= 0.3;     float NdotL = saturate(4 * dot(N, L));     return NdotL; }<\/code><\/pre>\n<p>  \u041c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f (2) \u0414\u0436\u043e\u043d \u042d\u0434\u0432\u0430\u0440\u0434\u0441 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <strong>diffuse contrast<\/strong>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>  \u0412 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 (\u0441\u043b\u0435\u0432\u0430) \u0438 diffuse contrast \u0438\u0437 Journey (\u0441\u043f\u0440\u0430\u0432\u0430).<\/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\/q-hQiDA71Yg?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<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u0447\u0451\u043c \u0441\u043c\u044b\u0441\u043b 4 \u0438 0.3?<\/b><\/p>\n<div class=\"spoiler_text\">\u0425\u043e\u0442\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 diffuse contrast \u043d\u0435 \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u043a\u0430\u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u0447\u043d\u043e\u0435, \u043c\u044b \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>  \u041f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u043e\u043d\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443. \u041f\u0435\u0440\u0432\u043e\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/578\/281\/d89\/578281d8997e0a562a02dd61422d408e.svg\" alt=\"$4$\" data-tex=\"inline\"><\/math>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5fc\/5d7\/0b6\/5fc5d70b6ec460d4ee10de0435b3ed01.svg\" alt=\"$25\\%$\" data-tex=\"inline\"><\/math> \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0443\u0442 \u0441\u0438\u044f\u0442\u044c, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/35b\/e60\/e68\/35be60e68c535df673e0aef590e20870.svg\" alt=\"$100\\%$\" data-tex=\"inline\"><\/math> \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044e \u0432\u0441\u0435\u0433\u043e \u043d\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/578\/281\/d89\/578281d8997e0a562a02dd61422d408e.svg\" alt=\"$4$\" data-tex=\"inline\"><\/math> \u0441\u043b\u0430\u0431\u043e\u0435 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0443 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c\u043d\u043e\u0442\u043e\u0439 \u0438 \u0441\u0432\u0435\u0442\u043e\u043c \u2014 \u043c\u0435\u043d\u044c\u0448\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u043d\u044c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u0447\u0435.<\/p>\n<p>  \u0412\u043b\u0438\u044f\u043d\u0438\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <code>y<\/code> \u043d\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/34c\/99c\/5d3\/34c99c5d3317cdd989bf0d0d03e51b22.svg\" alt=\"$0.3$\" data-tex=\"inline\"><\/math> \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0435\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442. \u0421\u043d\u0438\u0436\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 <code>y<\/code> \u0434\u043e \u0432\u0441\u0435\u0433\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1c9\/840\/86b\/1c984086b3827f7eaa7abb469f68e4f1.svg\" alt=\"$30\\%$\" data-tex=\"inline\"><\/math> \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 diffuse contrast \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043d\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0431\u0430 \u0438\u043c\u0435\u044e\u0442 \u0434\u043b\u0438\u043d\u0443 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3e4\/c77\/a6e\/3e4c77a6e7c579a778fa84a18b6f4be0.svg\" alt=\"$1$\" data-tex=\"inline\"><\/math>. \u0412\u043d\u0435\u0441\u0451\u043d\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1e8\/0c3\/b30\/1e80c3b3087c0a57b68ad11261a9ec2b.svg\" alt=\"$N$\" data-tex=\"inline\"><\/math>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c.<\/div>\n<\/div>\n<p>  <\/p>\n<h2>\u041e\u0442 \u043e\u0442\u0442\u0435\u043d\u043a\u043e\u0432 \u0441\u0435\u0440\u043e\u0433\u043e \u043a \u0446\u0432\u0435\u0442\u0443<\/h2>\n<p>  \u0412\u0441\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0442\u0442\u0435\u043d\u043a\u0438 \u0441\u0435\u0440\u043e\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 \u043e\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f9c\/3c8\/e48\/f9c3c8e488ead4696749012f5ece6d13.svg\" alt=\"$0$\" data-tex=\"inline\"><\/math> \u0434\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3e4\/c77\/a6e\/3e4c77a6e7c579a778fa84a18b6f4be0.svg\" alt=\"$1$\" data-tex=\"inline\"><\/math>&#171;. \u041c\u044b \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0446\u0432\u0435\u0442\u0430, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c <code>NdotL<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0446\u0432\u0435\u0442\u0430\u043c\u0438: \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0442\u0435\u043d\u0451\u043d\u043d\u043e\u0433\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0441\u0432\u0435\u0449\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0441\u043a\u0430.<\/p>\n<pre><code class=\"cpp\">float3 _TerrainColor; float3 _ShadowColor;  float3 DiffuseColor(float3 N, float3 L) {     N.y *= 0.3;     float NdotL = saturate(4 * dot(N, L)); \t     float3 color = lerp(_ShadowColor, _TerrainColor, NdotL);     return color; }<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 3. \u041d\u043e\u0440\u043c\u0430\u043b\u0438 \u043f\u0435\u0441\u043a\u0430<\/h2>\n<p>  \u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u0430\u0440\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439, \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0445 \u0433\u043b\u0430\u0434\u043a\u0438\u0435 3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043f\u0435\u0441\u0447\u0430\u043d\u044b\u0435 \u0434\u044e\u043d\u044b.<\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0435\u0441\u043a\u0430 Journey. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043f\u0443\u0441\u0442\u044b\u043d\u043d\u044b\u0435 \u0434\u044e\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0441\u043a\u0438\u043c\u0438 \u0438 \u0441\u043a\u0443\u0447\u043d\u044b\u043c\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8cb\/dd6\/9a8\/8cbdd69a8a92614469132400c0979c79.png\"><\/div>\n<p>  \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0440\u0438\u0433\u0443\u044e\u0449\u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0432 Journey \u2014 \u044d\u0442\u043e \u0437\u0435\u0440\u043d\u0438\u0441\u0442\u043e\u0441\u0442\u044c \u043f\u0435\u0441\u043a\u0430. \u0412\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442, \u043d\u0430\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u044e\u043d\u044b \u043d\u0435 \u0433\u043b\u0430\u0434\u043a\u0438\u0435 \u0438 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0435, \u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0438\u0437 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0435\u0441\u0447\u0438\u043d\u043e\u043a.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e93\/307\/efc\/e93307efce359d4830f5894dde30c9e6.jpg\"><\/div>\n<p>  \u042d\u0442\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <strong>bump mapping<\/strong> (\u0440\u0435\u043b\u044c\u0435\u0444\u043d\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0441\u0432\u0435\u0442\u0443 \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u043b\u043e\u0441\u043a\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043e\u043d\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/90f\/9b4\/73f\/90f9b473f7d1eefcb6ca32871300fed8.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/07a\/739\/06d\/07a73906d58ed9d4c251340b4e92d7f5.png\"><\/div>\n<p>  \u041c\u0435\u043b\u043a\u0438\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ea7\/3d5\/b3f\/ea73d5b3fb56c941c9b61f022dcb8699.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2f8\/efa\/5c4\/2f8efa5c4926a0de947b8ff91e114498.png\"><\/div>\n<p>  <\/p>\n<h2>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439<\/h2>\n<p>  \u041f\u0435\u0441\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u0435\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u0435\u0441\u0447\u0438\u043d\u043e\u043a, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e \u0444\u043e\u0440\u043c\u0443 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432 (\u0441\u043c. \u043d\u0438\u0436\u0435). \u041a\u0430\u0436\u0434\u0430\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u0438\u0446\u0430 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0435\u0441\u0447\u0438\u043d\u043a\u0438. \u041d\u043e \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435\u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c.<\/p>\n<p>  \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 3D-\u043c\u043e\u0434\u0435\u043b\u044c\u044e. \u041a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0438\u043b\u0438 \u0433\u0440\u0430\u043d\u044c 3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0435\u0451 <strong>\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u0438<\/strong>. \u042d\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u0436\u0443\u0449\u0435\u0435\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0441\u0447\u0438\u043d\u043e\u043a, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d\u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/413\/bc4\/cc3\/413bc4cc3466b827a1a1d86559d54054.jpg\"><\/div>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u2014 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0439 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u044e\u043d\u044b.<\/p>\n<p>  <strong>\u041d\u043e\u0440\u043c\u0430\u043b\u044c \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong> <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1e8\/0c3\/b30\/1e80c3b3087c0a57b68ad11261a9ec2b.svg\" alt=\"$N$\" data-tex=\"inline\"><\/math> \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <strong>\u043a\u0430\u0440\u0442\u044b \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439<\/strong>. \u041a\u0430\u0440\u0442\u044b \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 (normal map) \u2014 \u044d\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>bump mapping<\/strong> (\u0440\u0435\u043b\u044c\u0435\u0444\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c).<\/p>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u2014 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>surf<\/code> <strong>\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430<\/strong>. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>struct<\/code> \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>SurfaceOutput<\/code>. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0447\u0430\u0441\u0442\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0442 \u0435\u0451 \u0446\u0432\u0435\u0442\u0430 (<code>o.Albedo<\/code>) \u0434\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 (<code>o.Alpha<\/code>). \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u2014 \u044d\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 (<code>o.Normal<\/code>), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>  \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Unity \u043f\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u044b\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c (<a href=\"https:\/\/docs.unity3d.com\/Manual\/SL-SurfaceShaders.html\" rel=\"noopener noreferrer\">Writing Surface Shaders<\/a>), \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 <code>o.Normal<\/code> \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>SurfaceOutput<\/code>, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u044b \u0432 <strong>\u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435<\/strong>:<\/p>\n<pre><code class=\"cpp\">struct SurfaceOutput {     fixed3 Albedo;  \/\/ diffuse color     fixed3 Normal;  \/\/ tangent space normal, if written     fixed3 Emission;     half Specular;  \/\/ specular power in 0..1 range     fixed Gloss;    \/\/ specular intensity     fixed Alpha;    \/\/ alpha for transparencies };<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043c\u0435\u0448\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 <code>o.Normal<\/code> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>float3(0, 0, 1)<\/code> \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<pre><code class=\"cpp\">void surf (Input IN, inout SurfaceOutput o) {     o.Albedo = _SandColor;     o.Alpha = 1;     o.Normal = float3(0, 0, 1); }<\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440 <code>float3(0, 0, 1)<\/code> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u0438, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u044b\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0432 <strong>\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435<\/strong>, \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 <code>o.Normal<\/code> \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong>:<\/p>\n<pre><code class=\"cpp\">void surf (Input IN, inout SurfaceOutput o) {     o.Albedo = _SandColor;     o.Alpha = 1;     o.Normal = ... \/\/ change the normal here }<\/code><\/pre>\n<p>  \u0412 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0432 \u0448\u0435\u0441\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430.<\/p>\n<h2>\u041d\u043e\u0440\u043c\u0430\u043b\u044c \u043f\u0435\u0441\u043a\u0430<\/h2>\n<p>  \u0421\u0430\u043c\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u0442\u043e\u0433\u043e, <em>\u043a\u0430\u043a<\/em> \u043f\u0435\u0441\u0447\u0438\u043d\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u0425\u043e\u0442\u044f \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0435\u0441\u0447\u0438\u043d\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0432 \u0446\u0435\u043b\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u0440\u0443\u0433\u043e\u0435. \u041b\u044e\u0431\u043e\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0441\u043a\u0430 \u0438 \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0422\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0438 \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c.<\/p>\n<p>  \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f <strong>\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440<\/strong>. \u0417\u0430\u0442\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u043d\u0430\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043a \u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0443. \u041f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0441\u043c\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u0437\u0435\u0440\u043d\u0438\u0441\u0442\u043e\u0441\u0442\u0438, \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0431\u0449\u0443\u044e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443 \u0434\u044e\u043d.<\/p>\n<p>  \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b R, G \u0438 B \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 X, Y \u0438 Z \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0446\u0432\u0435\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9cd\/bae\/2ce\/9cdbae2ce59ab8a2d9ec17eb08f4eebb.svg\" alt=\"$\\left[0, 1\\right]$\" data-tex=\"inline\"><\/math>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/45a\/2b3\/699\/45a2b3699e3f8f6f05ba85d63618b32b.svg\" alt=\"$\\left[-1,+1\\right]$\" data-tex=\"inline\"><\/math>. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0434\u043b\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3e4\/c77\/a6e\/3e4c77a6e7c579a778fa84a18b6f4be0.svg\" alt=\"$1$\" data-tex=\"inline\"><\/math>.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0d2\/c95\/03d\/0d2c9503d98fd2463e7e3682743736bd.png\"><\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440<\/b><\/p>\n<div class=\"spoiler_text\">\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0432\u0430\u0436\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u041d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u043d. \u041d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0446\u0432\u0435\u0442\u0430), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0432\u0430\u043b\u0438\u0440\u0443\u0435\u0442 \u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438. \u0422\u0430\u043a\u0430\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0434\u0430\u0451\u0442 \u043d\u0430\u043c \u0442\u0438\u043f \u043f\u0435\u0441\u043a\u0430, \u0440\u0430\u0441\u0441\u0435\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u0432\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u043d\u0430 GDC \u0414\u0436\u043e\u043d \u042d\u0434\u0432\u0430\u0440\u0434\u0441 \u0447\u0451\u0442\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0435\u0441\u043a\u0430 \u0432 Journey, \u0431\u044b\u043b\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438\u0437 \u0433\u0430\u0443\u0441\u0441\u043e\u0432\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0435\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u044e \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438.<\/p><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0443\u0436\u043d\u043e \u043b\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b?<\/b><\/p>\n<div class=\"spoiler_text\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043c\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u041f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c: \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b R, G \u0438 B \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0442\u043e\u0436\u0435 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0434\u043b\u0438\u043d\u0443, \u0440\u0430\u0432\u043d\u0443\u044e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3e4\/c77\/a6e\/3e4c77a6e7c579a778fa84a18b6f4be0.svg\" alt=\"$1$\" data-tex=\"inline\"><\/math>.<\/p>\n<p>  \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u043f\u0440\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u0437 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9cd\/bae\/2ce\/9cdbae2ce59ab8a2d9ec17eb08f4eebb.svg\" alt=\"$\\left[0, 1\\right]$\" data-tex=\"inline\"><\/math> \u0432 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/45a\/2b3\/699\/45a2b3699e3f8f6f05ba85d63618b32b.svg\" alt=\"$\\left[-1,+1\\right]$\" data-tex=\"inline\"><\/math> \u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043b\u0438\u043d\u0443 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3e4\/c77\/a6e\/3e4c77a6e7c579a778fa84a18b6f4be0.svg\" alt=\"$1$\" data-tex=\"inline\"><\/math>. \u041e\u0434\u043d\u0430\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<p>  \u041d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e <em>\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/em> \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 mip-\u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0446\u0432\u0435\u0442\u043e\u0432 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p><\/div>\n<\/div>\n<p>  <\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h2>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u043e\u043d\u044f\u0442\u0438\u0435\u043c \u00ab\u043a\u0430\u0440\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439\u00bb, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u0435\u0440\u0432\u043e\u043c \u043d\u0430\u0431\u0440\u043e\u0441\u043a\u0435 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438<\/strong> <code>surf<\/code>. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u0432 \u0441\u0445\u0435\u043c\u0443, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043f\u0435\u0441\u043a\u0430 Journey \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u0432\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 (<em>\u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043f\u0435\u0441\u043a\u0430<\/em>) \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 (<em>\u0432\u043e\u043b\u043d\u044b \u043f\u0435\u0441\u043a\u0430<\/em>) \u0438\u0437\u0443\u0447\u0438\u043c \u0432 \u0448\u0435\u0441\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<pre><code class=\"cpp\">void surf (Input IN, inout SurfaceOutput o) {     o.Albedo = _SandColor;     o.Alpha = 1;          float3 N = float3(0, 0, 1);     N = RipplesNormal(N); \/\/ Covered in Journey Sand Shader #6     N = SandNormal   (N); \/\/ Covered in this article          o.Normal = N; }<\/code><\/pre>\n<p>  \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u0432\u0432\u0435\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u043b\u044c\u0435\u0444\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (bump mapping), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e \u043d\u0430\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b (\u0432 \u043a\u043e\u0434\u0435 \u043e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>uv_SandTex<\/code>).<\/p>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043a\u043e\u0434\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0442\u044c \u0438\u0441\u0442\u0438\u043d\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0442\u043e\u0447\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0434\u043b\u044f \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043d\u0443\u0436\u043d\u0430 <strong>UV-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0447\u0442\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043d\u0430\u043c\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0441\u043a\u0430\u044f \u0438 \u0438\u043c\u0435\u0435\u0442 UV-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 UV \u0434\u043b\u044f \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b.<\/p>\n<pre><code class=\"cpp\">N = WavesNormal(IN.uv_SandTex.xy, N); N = SandNormal (IN.uv_SandTex.xy, N);<\/code><\/pre>\n<p>  \u0418\u043b\u0438 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u043c\u0438\u0440\u0435 (<code>IN.worldPos<\/code>) \u0440\u0435\u043d\u0434\u0435\u0440\u044f\u0449\u0435\u0439\u0441\u044f \u0442\u043e\u0447\u043a\u0438.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 <code>SandNormal<\/code> \u0438 \u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0438\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438\u0437 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0435\u0433\u043e (\u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440) \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u043e\u0432\u043e\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u0438.<\/p>\n<pre><code class=\"cpp\">sampler2D_float _SandTex;  float3 SandNormal (float2 uv, float3 N) {     \/\/ Random vector     float3 random = tex2D(_SandTex, uv).rgb;     \/\/ Random direction     \/\/ [0,1]-&gt;[-1,+1]     float3 S = normalize(random * 2 - 1);     return S; }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b?<\/b><\/p>\n<div class=\"spoiler_text\">\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 UV-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f 3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0435\u0441\u0447\u0438\u043d\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438, \u0438\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440.<\/p>\n<p>  \u042d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0430\u044f Unity \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0441\u0442\u0443\u0440. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>_SandText_ST<\/code>. Unity \u0441\u0432\u044f\u0436\u0435\u0442 \u0435\u0451 \u0441 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u0438 \u0435\u0451 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c) <code>_SandTex<\/code>.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>_SandText_ST<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b. \u042d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u043e\u0440\u0435, \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043b\u043e\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043a\u0430\u043a <em>Tiling<\/em> \u0438 <em>Offset<\/em>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f29\/a84\/059\/f29a84059ab970f412217f09c87fcf6f.png\"><\/div>\n<p>  \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0437\u0438\u043b\u0438\u0441\u044c \u0432 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441 <code>TRANSFORM_TEX<\/code>:<\/p>\n<pre><code class=\"cpp\">sampler2D_float _SandTex; float4          _SandTex_ST;  float3 SandNormal (float2 uv, float3 N) {     \/\/ Random vector     float3 random = tex2D(_SandTex, TRANSFORM_TEX(uv, _SandTex)).rgb;     \/\/ Random direction     \/\/ [0,1]-&gt;[-1,+1]     float3 S = normalize(random * 2 - 1);     return S; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2>\u041d\u0430\u043a\u043b\u043e\u043d\u044f\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u0438<\/h2>\n<p>  \u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0430: \u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u043d\u043e\u0440\u043c\u0430\u043b\u044c, \u043d\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u0435\u0440\u044f\u0435\u043c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0432\u0435\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u0438 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u0437\u0430\u0442\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0435\u0451 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435.<\/p>\n<p>  \u0420\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043d\u0438\u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445. \u0421\u0432\u0435\u0440\u0445\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0434\u044e\u043d \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b, \u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0430\u044f. \u0421\u043d\u0438\u0437\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0430\u0434\u043a\u0443\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/620\/9cb\/acb\/6209cbacb616db15bee5f95e314779c8.png\"><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/476\/f0a\/f25\/476f0af2535dc2d552ce4b01a1d7751a.png\"><\/div>\n<p>  \u041e\u0431\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u0447\u0442\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0435. \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b, \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f <em>\u043d\u0430\u043a\u043b\u043e\u043d\u0430<\/em> \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435:<\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/929\/dfb\/7e6\/929dfb7e6d4712b7c69a403d0733c25b.png\" width=\"239\" height=\"240\"><\/div>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>slerp<\/strong>, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <strong>spherical linear interpolation<\/strong> (\u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f). <em>Slerp<\/em> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 lerp, \u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u2014 \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u043c\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b.<\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f slerp \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0430\u0442\u0440\u0430\u0442\u043d\u0430. \u0418 \u0434\u043b\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043c\u0435\u0440\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u0438, \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u043e\u0433\u0438\u0447\u043d\u043e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u043d\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 slerp<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u0443\u0441\u0442\u044c \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0442\u043e\u0447\u043a\u0438, <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5d2\/a43\/136\/5d2a431368bf46ad80d36b97c89ff53a.svg\" alt=\"$p_0$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6ec\/46f\/d85\/6ec46fd85f904fee12e773c6018b2318.svg\" alt=\"$p_1$\" data-tex=\"inline\"><\/math> \u043d\u0430 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0435 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438, \u0446\u0435\u043d\u0442\u0440 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0422\u043e\u0433\u0434\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/16c\/09a\/24e\/16c09a24ec899370d0e322a42050c25a.svg\" alt=\"$slerp$\" data-tex=\"inline\"><\/math> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  (1)<\/p>\n<p><math>$$display$$\\begin{equation*} slerp\\left(p_0, p_1, t\\right) = \\frac{\\sin\\left[\\left(1-t\\right)\\Omega\\right]}{\\sin\\left(\\Omega\\right)}p_0 + \\frac{\\sin\\left(t\\Omega\\right)}{\\sin\\left(\\Omega\\right)} p_1 \\end{equation*}$$display$$<\/math><\/p>\n<p>  \u0433\u0434\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math> \u2014 \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5d2\/a43\/136\/5d2a431368bf46ad80d36b97c89ff53a.svg\" alt=\"$p_0$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6ec\/46f\/d85\/6ec46fd85f904fee12e773c6018b2318.svg\" alt=\"$p_1$\" data-tex=\"inline\"><\/math>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f:<\/p>\n<p>  (2)<\/p>\n<p><math>$$display$$\\begin{equation*} \\Omega=cos^{-1} \\left(p_0 \\cdot p_1 \\right) \\end{equation*}$$display$$<\/math><\/p>\n<p>  <\/div>\n<\/div>\n<p>  \u0412\u0430\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u0443\u044e <strong>\u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044e<\/strong>, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u043d\u0430\u0447\u0435:<\/p>\n<div style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/eef\/5e1\/42f\/eef5e142f1c8c05cac9b3d4f18d8e097.png\" width=\"239\" height=\"240\"><\/div>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f Lerp \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u043c\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0440\u0430\u0432\u0435\u043d <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3e4\/c77\/a6e\/3e4c77a6e7c579a778fa84a18b6f4be0.svg\" alt=\"$1$\" data-tex=\"inline\"><\/math> \u0438\u043b\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f9c\/3c8\/e48\/f9c3c8e488ead4696749012f5ece6d13.svg\" alt=\"$0$\" data-tex=\"inline\"><\/math>.<\/p>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044d\u0442\u043e, \u043f\u0440\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 lerp \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u043b\u0438\u0437\u043e\u043a \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u043c\u0443 slerp:<\/p>\n<pre><code class=\"cpp\">float3 nlerp(float3 n1, float3 n2, float t) {     return normalize(lerp(n1, n2, t)); }<\/code><\/pre>\n<p>  \u042d\u0442\u0430 \u0442\u0435\u0445\u043d\u0438\u043a\u0430, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f <strong>nlerp<\/strong>, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044e slerp. \u0415\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b <a href=\"https:\/\/twitter.com\/cmuratori\" rel=\"noopener noreferrer\">\u041a\u0435\u0439\u0441\u0438 \u041c\u0443\u0440\u0430\u0442\u043e\u0440\u0438<\/a>, \u043e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 <a href=\"https:\/\/store.steampowered.com\/app\/210970\/The_Witness\/\" rel=\"noopener noreferrer\">The Witness<\/a>. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0442\u0435\u043c\u0443, \u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/number-none.com\/product\/Understanding%20Slerp,%20Then%20Not%20Using%20It\/\" rel=\"noopener noreferrer\">Understanding Slerp. Then Not Using It<\/a> <a href=\"https:\/\/twitter.com\/jonathan_blow\" rel=\"noopener noreferrer\">\u0414\u0436\u043e\u043d\u0430\u0442\u0430\u043d\u0430 \u0411\u043b\u043e\u0443<\/a> \u0438 <a href=\"https:\/\/keithmaggio.wordpress.com\/2011\/02\/15\/math-magician-lerp-slerp-and-nlerp\/\" rel=\"noopener noreferrer\">Math Magician \u2013 Lerp, Slerp, and Nlerp<\/a>.<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f nlerp \u043c\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043d\u0430\u043a\u043b\u043e\u043d\u044f\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0438\u0437 <code>_SandTex<\/code>:<\/p>\n<pre><code class=\"cpp\">sampler2D_float _SandTex; float _SandStrength;  float3 SandNormal (float2 uv, float3 N) {     \/\/ Random vector     float3 random = tex2D(_SandTex, uv).rgb;     \/\/ Random direction     \/\/ [0,1]-&gt;[-1,+1]     float3 S = normalize(random * 2 - 1);          \/\/ Rotates N towards Ns based on _SandStrength     float3 Ns = nlerp(N, S, _SandStrength);     return Ns; }<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0438\u0436\u0435:<\/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\/rddUAStRjZ8?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<h2>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h2>\n<p>  \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0435\u0440\u0446\u0430\u044e\u0449\u0438\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u044e\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e\u043a\u0435\u0430\u043d.<\/p>\n<h3>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>  \u0412\u0438\u0434\u0435\u043e\u0438\u0433\u0440\u0430 <a href=\"http:\/\/thatgamecompany.com\/journey\/\" rel=\"noopener noreferrer\">Journey<\/a> \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 <strong>Thatgamecompany<\/strong> \u0438 \u0438\u0437\u0434\u0430\u043d\u0430 <strong>Sony Computer Entertainment<\/strong>. \u041e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f PC (<a href=\"https:\/\/www.epicgames.com\/store\/en-US\/product\/journey\/home\" rel=\"noopener noreferrer\">Epic Store<\/a>) \u0438 PS4 (<a href=\"https:\/\/www.playstation.com\/en-gb\/games\/journey-ps4\/\" rel=\"noopener noreferrer\">PS Store<\/a>).<\/p>\n<p>  3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u044e\u043d \u0444\u043e\u043d\u044b \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u044b <a href=\"https:\/\/github.com\/AtwoodDeng\/JourneySand\" rel=\"noopener noreferrer\">Jiadi Deng<\/a>.<\/p>\n<p>  3D-\u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 Journey \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043d\u0430 (\u043d\u044b\u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c) \u0444\u043e\u0440\u0443\u043c\u0435 FacePunch.<\/p>\n<h2>\u041f\u0430\u043a\u0435\u0442 Unity<\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442, \u0442\u043e \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 Unity \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043d\u0430 <a href=\"https:\/\/www.patreon.com\/posts\/30540389\/\" rel=\"noopener noreferrer\">Patreon<\/a>. \u0412 \u043d\u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432\u0441\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435, \u043e\u0442 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u0434\u043e 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439.<\/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\/476448\/\"> https:\/\/habr.com\/ru\/post\/476448\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/476448\/\">\u0421\u0440\u0435\u0434\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0438\u043d\u0434\u0438-\u0438\u0433\u0440, \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u043b\u0435\u0442, \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <em>Journey<\/em>. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435\u0439 \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0435 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u043c\u0443 \u0441\u0430\u0443\u043d\u0434\u0442\u0440\u0435\u043a\u0443 <em>Journey<\/em> \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u042f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0433\u0440 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0440\u0438\u0433\u043e\u0432\u0430\u043b \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043f\u0435\u0441\u043a\u0430. \u041e\u043d \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0440\u0430\u0441\u0438\u0432, \u043d\u043e \u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0435\u043c \u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0432 \u0446\u0435\u043b\u043e\u043c. <em>Journey<\/em> \u0432 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0438\u0437 \u043f\u0435\u0441\u043a\u0430, \u0438 \u0431\u0435\u0437 \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0441\u0430\u043c\u0430 \u0438\u0433\u0440\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/63f\/be0\/2a8\/63fbe02a87ccac8101001a43d953776f.jpg\"><\/div>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043d\u0430 \u0434\u0432\u0430 \u043f\u043e\u0441\u0442\u0430, \u044f \u043e\u0442\u0434\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u044e <em>Journey<\/em>, \u043d\u0430\u0443\u0447\u0438\u0432 \u0432\u0430\u0441 \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043f\u0435\u0441\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432. \u0412\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u044b \u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0438\u0433\u0440\u0435 \u043f\u0435\u0441\u0447\u0430\u043d\u044b\u0435 \u0434\u044e\u043d\u044b, \u044d\u0442\u0430 \u0441\u0435\u0440\u0438\u044f \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0443 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u0433\u0440\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043f\u0435\u0441\u043a\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 <em>Journey<\/em>, \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u043e\u043d \u0431\u044b\u043b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d. \u0418 \u0445\u043e\u0442\u044f \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0441\u043e \u043c\u043d\u043e\u0439 \u044d\u0442\u043e <em>\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432, \u043d\u043e \u0438 \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0441\u043e\u0447\u0435\u0442\u0430\u0442\u044c \u044d\u0441\u0442\u0435\u0442\u0438\u043a\u0443 \u0438 \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0439.  <\/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-295189","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/295189","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=295189"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/295189\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=295189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=295189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=295189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}