{"id":291037,"date":"2018-10-19T11:45:02","date_gmt":"2018-10-19T07:45:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=291037"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=291037","title":{"rendered":"Learn OpenGL. \u0423\u0440\u043e\u043a 6.3 \u2013 IBL. \u0414\u0438\u0444\u0444\u0443\u0437\u043d\u0430\u044f \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/c9e\/9b2\/a3b\/c9e9b2a3baf749ab8e2b385c6d93d966.png\" alt=\"OGL3\" align=\"left\" width=\"300\"> \u041e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 <i>IBL <\/i>(<i>Image Based Lighting<\/i>) \u2013 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043d\u0430 \u0443\u0447\u0435\u0442\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441\u0432\u0435\u0442\u0430 (\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u0432 <a href=\"https:\/\/habr.com\/post\/424453\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u043a\u0435<\/a>), \u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0432\u0441\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430. \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u0430 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b) \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0432 \u043a\u0430\u0440\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f: \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u043a\u0441\u0435\u043b\u044c \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430. \u0412 \u043e\u0431\u0449\u0435\u043c \u0438 \u0446\u0435\u043b\u043e\u043c, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0441\u0446\u0435\u043d\u0435, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0435\u0439 \u043e\u0431\u0449\u0438\u0439 \u00ab\u0442\u043e\u043d\u00bb \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0446\u0435\u043d\u044b \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0435\u0439 \u043e\u0441\u0432\u0435\u0449\u0430\u0435\u043c\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0431\u044b\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u00ab\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438\u00bb \u0432 \u043d\u0435\u0435.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b IBL \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043d\u0435\u043a\u043e\u0435\u0433\u043e \u00ab\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u00bb \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0439 \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0435\u0439 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0433\u0440\u0443\u0431\u043e\u0439 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0435\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u042d\u0442\u043e\u0442 \u0430\u0441\u043f\u0435\u043a\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b IBL \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u044c PBR, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\u0427\u0430\u0441\u0442\u044c 1. \u041d\u0430\u0447\u0430\u043b\u043e<\/p>\n<ol>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/310790\/\">OpenGL<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/311198\/\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u043a\u043d\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/311234\/\">Hello Window<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/311808\/\">Hello Triangle<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/313380\/\">Shaders<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/315294\/\">\u0422\u0435\u043a\u0441\u0442\u0443\u0440\u044b<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/319144\/\">\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/324968\/\">\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/327604\/\">\u041a\u0430\u043c\u0435\u0440\u0430<\/a><\/li>\n<\/ol>\n<p>  \u0427\u0430\u0441\u0442\u044c 2. \u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435<\/p>\n<ol>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/329592\/\">\u0426\u0432\u0435\u0442\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/333932\/\">\u041e\u0441\u043d\u043e\u0432\u044b \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/336166\/\">\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/337550\/\">\u0422\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u044b<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/337642\/\">\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/338254\/\">\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/a><\/li>\n<\/ol>\n<p>  \u0427\u0430\u0441\u0442\u044c 3. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/p>\n<ol>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/338436\/\">\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 Assimp<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/338436\/\">\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Mesh<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/338998\/\">\u041a\u043b\u0430\u0441\u0441 3D-\u043c\u043e\u0434\u0435\u043b\u0438<\/a><\/li>\n<\/ol>\n<p>  \u0427\u0430\u0441\u0442\u044c 4. \u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 OpenGL <\/p>\n<ol>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/342610\/\">\u0422\u0435\u0441\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u044b<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/344238\/\">\u0422\u0435\u0441\u0442 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u0430<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/343096\/\">\u0421\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/346964\/\">\u041e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u043d\u0435\u0439<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/347354\/\">\u041a\u0430\u0434\u0440\u043e\u0432\u044b\u0439 \u0431\u0443\u0444\u0435\u0440<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/347750\/\">\u041a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/350008\/\">\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/350156\/\">\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 GLSL<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/350782\/\">\u0413\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0447\u043a\u0438\u0439 \u0448\u0435\u0439\u0434\u0435\u0440<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/352962\/\">\u0418\u043d\u0441\u0442\u0430\u043d\u0441\u0438\u043d\u0433<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/351706\/\">\u0421\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435<\/a><\/li>\n<\/ol>\n<p>  \u0427\u0430\u0441\u0442\u044c 5. \u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 <\/p>\n<ol>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/353054\/\">\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435. \u041c\u043e\u0434\u0435\u043b\u044c \u0411\u043b\u0438\u043d\u043d\u0430-\u0424\u043e\u043d\u0433\u0430.<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/353632\/\">\u0413\u0430\u043c\u043c\u0430-\u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/353956\/\">\u041a\u0430\u0440\u0442\u044b \u0442\u0435\u043d\u0435\u0439<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/354208\/\">\u0412\u0441\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u044b \u0442\u0435\u043d\u0435\u0439<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/415579\/\">Normal Mapping<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/416163\/\">Parallax Mapping<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/420409\/\">HDR<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/420375\/\">Bloom<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/420565\/\">\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/421385\/\">SSAO<\/a><\/li>\n<\/ol>\n<p>  \u0427\u0430\u0441\u0442\u044c 6. PBR <\/p>\n<ol>\n<li><a href=\"https:\/\/habr.com\/post\/426123\/\">\u0422\u0435\u043e\u0440\u0438\u044f<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/post\/424453\/\">\u0410\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430<\/a><\/li>\n<li><b>IBL. \u0414\u0438\u0444\u0444\u0443\u0437\u043d\u0430\u044f \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c.<\/b><\/li>\n<\/ol>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u043b\u0438\u044f\u043d\u0438\u044f IBL \u0432 \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 PBR \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u043c\u0443 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a35\/dd2\/97d\/a35dd297dd153af6dd49f5547a8dba97.svg\" alt=\"$L_o(p,\\omega_o) = \\int\\limits_{\\Omega} (k_d\\frac{c}{\\pi} + k_s\\frac{DFG}{4(\\omega_o \\cdot n)(\\omega_i \\cdot n)}) L_i(p,\\omega_i) n \\cdot \\omega_i d\\omega_i $\" data-tex=\"display\"><\/math><\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0440\u0430\u043d\u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math> \u043f\u043e \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math>. \u0412 <a href=\"https:\/\/habr.com\/post\/424453\">\u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0443\u0440\u043e\u043a\u0435<\/a> \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0440\u0435\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u043d\u0430\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441\u0432\u0435\u0442\u0430, \u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u0438 \u0432\u0441\u0435 \u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430, \u0447\u0442\u043e \u0438\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u0441 \u043d\u0430\u0441\u043a\u043e\u043a\u0430 \u043d\u0435 \u0440\u0435\u0448\u0438\u0442\u044c: <u>\u043b\u044e\u0431\u043e\u0439<\/u> \u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math> \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u0441\u0442\u0438 \u0441 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u0443\u044e \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0434\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:  <\/p>\n<ul>\n<li>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0441\u0446\u0435\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math>;<\/li>\n<li>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u043c\u043e\u0433\u043b\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/li>\n<\/ul>\n<p>  \u041d\u0443, \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0441\u043e\u0431\u043e\u0439. \u0417\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u043f\u0440\u043e\u0441\u043a\u043e\u0447\u0438\u043b \u043d\u0430\u043c\u0435\u043a \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0446\u0435\u043d\u044b \u0438\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u2013 \u044d\u0442\u043e \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0430, \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u043a\u0441\u0435\u043b\u044c \u0432 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u0437\u043b\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u041e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0443 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math> \u043c\u044b \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0441\u0446\u0435\u043d\u044b \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0441\u0446\u0435\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math>:   <\/p>\n<pre><code class=\"cpp\">vec3 radiance = texture(_cubemapEnvironment, w_i).rgb; <\/code><\/pre>\n<p>  \u0417\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u043d\u0430\u0441 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0438\u0437 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0430 \u0441\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435. \u0418 \u0442\u0430\u043a \u2013 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u0442\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044d\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c\u043e. \u0411\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0434\u044b\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u0435\u0449\u0435 \u0432\u043d\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0430\u0442\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u0432\u0430 \u0438 \u043f\u043e\u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0443\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a35\/dd2\/97d\/a35dd297dd153af6dd49f5547a8dba97.svg\" alt=\"$L_o(p,\\omega_o) = \\int\\limits_{\\Omega} (k_d\\frac{c}{\\pi} + k_s\\frac{DFG}{4(\\omega_o \\cdot n)(\\omega_i \\cdot n)}) L_i(p,\\omega_i) n \\cdot \\omega_i d\\omega_i$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0439 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/06b\/9c8\/a7f\/06b9c8a7f9fb33d975690e190b0dad86.svg\" alt=\"$k_d$\" data-tex=\"inline\"><\/math> \u0438 \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e\u0439 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/bc2\/8dc\/071\/bc28dc0716dd457727c8b51d5dece28f.svg\" alt=\"$k_s$\" data-tex=\"inline\"><\/math> \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 BRDF, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438. \u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/866\/684\/764\/8666847645401d4634128d02b66f5b81.svg\" alt=\"$L_o(p,\\omega_o) = \\int\\limits_{\\Omega} (k_d\\frac{c}{\\pi}) L_i(p,\\omega_i) n \\cdot \\omega_i d\\omega_i + \\int\\limits_{\\Omega} (k_s\\frac{DFG}{4(\\omega_o \\cdot n)(\\omega_i \\cdot n)}) L_i(p,\\omega_i) n \\cdot \\omega_i d\\omega_i$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0422\u0430\u043a\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0430\u0432\u0438\u043c\u0441\u044f \u0441 \u0447\u0430\u0441\u0442\u044c\u044e, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0439 \u0437\u0430 \u0440\u0430\u0441\u0441\u0435\u044f\u043d\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u041f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0432 \u0432\u0438\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u043f\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u041b\u0430\u043c\u0431\u0435\u0440\u0442\u0430 \u043f\u043e \u0441\u0443\u0442\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f (\u0446\u0432\u0435\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1b8\/54d\/440\/1b854d44003f175d56fe476eed7a5275.svg\" alt=\"$\u0441$\" data-tex=\"inline\"><\/math>, \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u043f\u0440\u0435\u043b\u043e\u043c\u043b\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/06b\/9c8\/a7f\/06b9c8a7f9fb33d975690e190b0dad86.svg\" alt=\"$k_d$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7af\/18b\/081\/7af18b0819e3a7a12aadc52f24feb01f.svg\" alt=\"$\\pi$\" data-tex=\"inline\"><\/math> \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c\u0438 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043f\u043e\u0434\u044b\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f) \u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u0437\u0430 \u0437\u043d\u0430\u043a \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/434\/315\/f93\/434315f936a5724534119d8ecd005532.svg\" alt=\"$L_o(p,\\omega_o) = k_d\\frac{c}{\\pi} \\int\\limits_{\\Omega} L_i(p,\\omega_i) n \\cdot \\omega_i d\\omega_i$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0422\u0430\u043a \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b, \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0438\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math> (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/839\/f25\/c27\/839f25c2746382debd4f08ea25ad5ecf.svg\" alt=\"$p$\" data-tex=\"inline\"><\/math> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0446\u0435\u043d\u0442\u0440\u0443 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f). \u041e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043b\u0438, \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435, \u043f\u0440\u0435\u0434-\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 (\u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0435\u043b\u044f \u043a\u0430\u0440\u0442\u044b) <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math> \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0432\u0435\u0440\u0442\u043a\u0438.<\/p>\n<p>  \u0421\u0432\u0435\u0440\u0442\u043a\u043e\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0432 \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0431\u043e\u0440\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0430\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0441\u0446\u0435\u043d\u044b \u0438\u043b\u0438 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u043c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0432\u0437\u044f\u0442\u044b\u0435 \u0441\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0447\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435, \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432\u043e\u043a\u0440\u0443\u0433 \u0442\u043e\u0447\u043a\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math> \u043f\u0443\u0442\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0432\u0434\u043e\u043b\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math>, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math>, \u0438 \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0438\u0442\u043e\u0433\u043e\u0432\u0443\u044e \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c. \u041f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0430, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math> \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u0434\u043e\u043b\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math>, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0430 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pr\/yl\/ql\/prylqltlmqjlvfhpaswbes8bmg8.png\"><\/div>\n<p>  \u0422\u0430\u043a\u0430\u044f \u043f\u0440\u0435\u0434-\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0430, \u0445\u0440\u0430\u043d\u044f\u0449\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math>, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0438 \u043a\u0430\u043a \u0445\u0440\u0430\u043d\u044f\u0449\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0441\u0446\u0435\u043d\u0435, \u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0434\u043e\u043b\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math>. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043a\u0430\u0440\u0442\u0430\u043c\u0438 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (irradiance map), \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u0430\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u0435\u0440\u0442\u043a\u0435 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0446\u0435\u043d\u044b, \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math>, \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439.  <\/p>\n<blockquote><p>\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0435 \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c, \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043a\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/839\/f25\/c27\/839f25c2746382debd4f08ea25ad5ecf.svg\" alt=\"$p$\" data-tex=\"inline\"><\/math>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u043f\u0440\u044f\u043c\u043e \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u043a\u0430\u0440\u0442\u044b \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0447\u0442\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0412 \u0440\u0430\u0437\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043f\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044e \u0441\u0446\u0435\u043d\u0430\u0445 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u0440\u0443\u0448\u0438\u0442\u044c \u0438\u043b\u043b\u044e\u0437\u0438\u044e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0441\u0446\u0435\u043d\u0430\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439). \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043a\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0440\u0435\u0448\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0441\u0446\u0435\u043d\u0435 \u2013 <i>\u043f\u0440\u043e\u0431\u044b \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/i>(<i>reflection probes<\/i>). \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439: \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0435 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c (\u0438 \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u044f\u0440\u043a\u043e\u0441\u0442\u044c) \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/839\/f25\/c27\/839f25c2746382debd4f08ea25ad5ecf.svg\" alt=\"$p$\" data-tex=\"inline\"><\/math> \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u0430\u043c\u0438 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u043c\u044b \u0443\u0441\u043b\u043e\u0432\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u0430\u043c\u043e\u0433\u043e \u0435\u0451 \u0446\u0435\u043d\u0442\u0440\u0430, \u0430 \u043f\u0440\u043e\u0431\u044b \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0443\u0440\u043e\u043a\u0430\u0445.<\/p><\/blockquote>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u0440\u0442\u0430 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (\u0437\u0430 \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u043e\u043c <a href=\"http:\/\/www.indiedb.com\/features\/using-image-based-lighting-ibl\">wave engine<\/a>), \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u044e\u0449\u0430\u044f \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math>.  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8c\/qz\/yg\/8cqzygcmwfdkdcadui_iqrtj4rw.png\"><\/div>\n<p>  \u0418\u0442\u0430\u043a, \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0445\u0440\u0430\u043d\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0435\u043a\u0441\u0435\u043b\u0435 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math>), \u0438 \u0432\u043d\u0435\u0448\u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0443\u0434\u0442\u043e \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0439 \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0412\u044b\u0431\u043e\u0440\u043a\u0430 \u0432 \u043b\u044e\u0431\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u0437 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0432\u0435\u0440\u043d\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0441 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<h2>PBR \u0438 HDR<\/h2>\n<p>  \u0412 <a href=\"https:\/\/habr.com\/post\/424453\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u043a\u0435<\/a> \u0443\u0436\u0435 \u0431\u044b\u043b \u043a\u0440\u0430\u0442\u043a\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b PBR \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0432\u0430\u0436\u0435\u043d \u0443\u0447\u0435\u0442 HDR \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u044f\u0440\u043a\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441\u0432\u0435\u0442\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u043e\u0434\u0435\u043b\u044c PBR \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u043f\u043e\u043b\u043d\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430\u0445 \u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u0445, \u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441\u0432\u0435\u0442\u0430 \u0438\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430\u043c. \u041d\u0435\u0432\u0430\u0436\u043d\u043e \u043a\u0430\u043a \u043c\u044b \u043e\u0431\u043e\u0441\u043d\u0443\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430: \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0433\u0440\u0443\u0431\u0443\u044e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0443\u044e \u043e\u0446\u0435\u043d\u043a\u0443 \u0438\u043b\u0438 \u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Lumen_(unit)\">\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430\u043c <\/a>\u2013 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043d\u0430\u0442\u043d\u043e\u0439 \u043b\u0430\u043c\u043f\u043e\u0439 \u0438 \u0441\u043e\u043b\u043d\u0446\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0433\u0440\u043e\u043c\u0430\u0434\u043d\u043e\u0439 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0411\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/habr.com\/post\/420409\">HDR<\/a> \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441\u0432\u0435\u0442\u0430.<\/p>\n<p>  \u0418\u0442\u0430\u043a, PBR \u0438 HDR \u2013 \u0434\u0440\u0443\u0437\u044c\u044f \u043d\u0430 \u0432\u0435\u043a, \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u0444\u0430\u043a\u0442 \u043a \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439? \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 PBR \u0432 HDR \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0434\u0435\u043b\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0435. \u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u00ab\u043d\u043e\u00bb: \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c HDR \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u043a\u0430\u0440\u0442\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0414\u043e \u0441\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 LDR \u0444\u043e\u0440\u043c\u0430\u0442\u0435 (\u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/habrahabr.ru\/post\/347750\">\u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u044b<\/a>). \u0412\u044b\u0431\u043e\u0440\u043a\u0443 \u0446\u0432\u0435\u0442\u0430 \u0438\u0437 \u043d\u0438\u0445 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0435 \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438 \u044d\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0438\u043d\u0433\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0418 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u0430\u0440\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439.<\/p>\n<h4>RGBE \u2013 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 HDR \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435<\/h4>\n<p>  \u041f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u0441\u044c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 RGBE. \u0424\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c &#171;<i>.hdr<\/i>&#187; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0448\u0438\u0440\u043e\u043a\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c, \u043e\u0442\u0432\u043e\u0434\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0431\u0430\u0439\u0442\u0443 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0442\u0440\u0438\u0430\u0434\u044b \u0438 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 \u043f\u043e\u0434 \u043e\u0431\u0449\u0443\u044e \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0442\u0443. \u0412 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u0438, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0437\u0430 LDR \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d [0., 1.]. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0432\u0435\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c, \u0431\u0443\u0434\u0443\u0447\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0412 \u0441\u0435\u0442\u0438 \u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RGBE, \u0441\u043d\u044f\u0442\u044b\u0445 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445. \u0412\u043e\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0441\u0430\u0439\u0442\u0430 <a href=\"http:\/\/www.hdrlabs.com\/sibl\/archive.html\">sIBL archive<\/a>:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fa\/ua\/aq\/fauaaqkw63r9dnghjofu83o-h2i.png\"><\/div>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u0441\u044c \u0443\u0432\u0438\u0434\u0435\u043d\u043d\u043e\u043c\u0443: \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0441 \u0435\u0451 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439 \u043d\u0430 6 \u0433\u0440\u0430\u043d\u0435\u0439. \u041e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0430 \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441\u043e \u0441\u0444\u0435\u0440\u044b \u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u2013 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0430 <i>\u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0430<\/i>. \u0421\u0434\u0435\u043b\u0430\u043d\u043e \u044d\u0442\u043e \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0430\u0440\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u0441\u0435\u0442 \u0441 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438: \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0432\u044b\u0448\u0435, \u043d\u0435\u0436\u0435\u043b\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0435 \u044d\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u0430\u043a \u0440\u0430\u0437-\u0442\u0430\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0430 \u043d\u0435 \u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439. \u041d\u0443 \u0438 \u043f\u043b\u044e\u0441 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u0434 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443.<\/p>\n<h4>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 RGBE \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432 stb_image.h<\/h4>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0438\u043b\u0430\u043c\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u043d\u0430\u043d\u0438\u044f <a href=\"http:\/\/radsite.lbl.gov\/radiance\/refer\/Notes\/picture_format.html\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430<\/a>, \u0447\u0442\u043e \u043f\u0443\u0441\u0442\u044c \u0438 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u043e. \u041d\u0430 \u043d\u0430\u0448\u0435 \u0441\u0447\u0430\u0441\u0442\u044c\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <a href=\"https:\/\/github.com\/nothings\/stb\/blob\/master\/stb_image.h\">stb_image.h<\/a>, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432 \u043e\u0434\u0438\u043d \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 RGBE \u0444\u0430\u0439\u043b\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u043c\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u2013 \u0442\u043e \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0446\u0435\u043b\u0435\u0439! \u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e:  <\/p>\n<pre><code class=\"cpp\">#include \"stb_image.h\" [...]  stbi_set_flip_vertically_on_load(true); int width, height, nrComponents; float *data = stbi_loadf(\"newport_loft.hdr\", &amp;width, &amp;height, &amp;nrComponents, 0); unsigned int hdrTexture; if (data) {     glGenTextures(1, &amp;hdrTexture);     glBindTexture(GL_TEXTURE_2D, hdrTexture);     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, width, height, 0, GL_RGB, GL_FLOAT, data);       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);      stbi_image_free(data); } else {     std::cout &lt;&lt; \"Failed to load HDR image.\" &lt;&lt; std::endl; }  <\/code><\/pre>\n<p>  \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e HDR \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441 \u0442\u0440\u0435\u043c\u044f \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u043c\u0438 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438. \u0412\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e HDR \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 2D \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0435 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439.<\/p>\n<h4>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443<\/h4>\n<p>  \u0420\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0443 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0438\u0437 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u0437\u0430\u0442\u0440\u0430\u0442\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043c\u044b \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u0435\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0438 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u044f\u043c\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0430\u043c \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u044b.<br \/>  \u0414\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0443\u0431 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044f \u0435\u0433\u043e \u0438\u0437\u043d\u0443\u0442\u0440\u0438, \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0435\u0433\u043e \u0433\u0440\u0430\u043d\u0438 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0438 \u0437\u0430\u0442\u0435\u043c \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0448\u0435\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0433\u0440\u0430\u043d\u0435\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u0440\u0430\u043d\u0435\u0439 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u0412\u0435\u0440\u0448\u0438\u043d\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442: \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043a\u0443\u0431\u0430 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u0445 \u043d\u0435\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438:  <\/p>\n<pre><code>#version 330 core layout (location = 0) in vec3 aPos;  out vec3 localPos;  uniform mat4 projection; uniform mat4 view;  void main() {     localPos = aPos;       gl_Position =  projection * view * vec4(localPos, 1.0); }<\/code><\/pre>\n<p>  \u0412\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435 \u043c\u044b \u0437\u0430\u0442\u0435\u043d\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0433\u0440\u0430\u043d\u044c \u043a\u0443\u0431\u0438\u043a\u0430 \u0442\u0430\u043a, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u0443\u0431\u0438\u043a \u043b\u0438\u0441\u0442\u043e\u043c \u0441 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u043e\u0439 \u0442\u0440\u0438\u0433\u043e\u043d\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0435\u0439 \u0438, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c \u0434\u0435\u043b\u0435 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u044b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0446\u0432\u0435\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0433\u0440\u0430\u043d\u0438 \u043a\u0443\u0431\u0438\u043a\u0430:  <\/p>\n<pre><code>#version 330 core out vec4 FragColor; in vec3 localPos;  uniform sampler2D equirectangularMap;  const vec2 invAtan = vec2(0.1591, 0.3183); vec2 SampleSphericalMap(vec3 v) {     vec2 uv = vec2(atan(v.z, v.x), asin(v.y));     uv *= invAtan;     uv += 0.5;     return uv; }  void main() {\t\t     \/\/ localPos \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438     vec2 uv = SampleSphericalMap(normalize(localPos));      vec3 color = texture(equirectangularMap, uv).rgb;          FragColor = vec4(color, 1.0); }<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0443\u0431 \u0441 \u044d\u0442\u0438\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u043c \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 HDR \u043a\u0430\u0440\u0442\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435:   <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wi\/xl\/u2\/wixlu2m9jwpr9d6oakhw7_nqcqa.png\"><\/div>\n<p>  \u0422.\u0435. \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u044b \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0443\u044e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u043d\u0430 \u043a\u0443\u0431. \u0417\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b? \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0443\u0431\u0438\u043a 6 \u0440\u0430\u0437 \u0441 \u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0441\u043c\u043e\u0442\u0440\u044f\u0449\u0435\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u0433\u0440\u0430\u043d\u0435\u0439, \u043f\u0440\u0438 \u0442\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u0432\u044b\u0432\u043e\u0434 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <a href=\"https:\/\/habrahabr.ru\/post\/347354\">\u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430<\/a>:  <\/p>\n<pre><code class=\"cpp\">unsigned int captureFBO, captureRBO; glGenFramebuffers(1, &amp;captureFBO); glGenRenderbuffers(1, &amp;captureRBO);  glBindFramebuffer(GL_FRAMEBUFFER, captureFBO); glBindRenderbuffer(GL_RENDERBUFFER, captureRBO); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, 512, 512); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, captureRBO); <\/code><\/pre>\n<p>  \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0448\u0435\u0441\u0442\u0438 \u0433\u0440\u0430\u043d\u0435\u0439 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b:  <\/p>\n<pre><code class=\"cpp\">unsigned int envCubemap; glGenTextures(1, &amp;envCubemap); glBindTexture(GL_TEXTURE_CUBE_MAP, envCubemap); for (unsigned int i = 0; i &lt; 6; ++i) {     \/\/ \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0433\u0440\u0430\u043d\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442      \/\/ 16\u0431\u0438\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439     glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB16F,                   512, 512, 0, GL_RGB, GL_FLOAT, nullptr); } glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0447\u0430\u0441\u0442\u0435\u0439 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u0433\u0440\u0430\u043d\u0438 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<p>  \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u043a\u043e\u0434 \u0432\u043e \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0432\u0438\u0434\u0435\u043d\u043d\u044b\u0439 \u0432 \u0443\u0440\u043e\u043a\u0430\u0445 \u043f\u043e <a href=\"https:\/\/habrahabr.ru\/post\/347354\">\u043a\u0430\u0434\u0440\u043e\u0432\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443 <\/a>\u0438 <a href=\"https:\/\/habr.com\/post\/354208\">\u0432\u0441\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u0435\u043d\u044f\u043c<\/a>. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0432\u0441\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0448\u0435\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043a\u0430\u043c\u0435\u0440\u0443 \u0441\u0442\u0440\u043e\u0433\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u0433\u0440\u0430\u043d\u0435\u0439 \u043a\u0443\u0431\u0438\u043a\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0441 \u0443\u0433\u043b\u043e\u043c \u0437\u0440\u0435\u043d\u0438\u044f \u0432 90\u00b0, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u0442\u044c \u0433\u0440\u0430\u043d\u044c \u043a\u0443\u0431\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0448\u0435\u0441\u0442\u044c \u0440\u0430\u0437 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u043d\u0434\u0435\u0440, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439:  <\/p>\n<pre><code class=\"cpp\">glm::mat4 captureProjection = glm::perspective(glm::radians(90.0f), 1.0f, 0.1f, 10.0f); glm::mat4 captureViews[] =  {    glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3( 1.0f,  0.0f,  0.0f), glm::vec3(0.0f, -1.0f,  0.0f)),    glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(-1.0f,  0.0f,  0.0f), glm::vec3(0.0f, -1.0f,  0.0f)),    glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3( 0.0f,  1.0f,  0.0f), glm::vec3(0.0f,  0.0f,  1.0f)),    glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3( 0.0f, -1.0f,  0.0f), glm::vec3(0.0f,  0.0f, -1.0f)),    glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3( 0.0f,  0.0f,  1.0f), glm::vec3(0.0f, -1.0f,  0.0f)),    glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3( 0.0f,  0.0f, -1.0f), glm::vec3(0.0f, -1.0f,  0.0f)) };  \/\/ \u043f\u0435\u0440\u0435\u0432\u043e\u0434 HDR \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0443\u044e \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443 equirectangularToCubemapShader.use(); equirectangularToCubemapShader.setInt(\"equirectangularMap\", 0); equirectangularToCubemapShader.setMat4(\"projection\", captureProjection); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, hdrTexture);  \/\/ \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044c\u044e\u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0430 glViewport(0, 0, 512, 512); glBindFramebuffer(GL_FRAMEBUFFER, captureFBO); for (unsigned int i = 0; i &lt; 6; ++i) {     equirectangularToCubemapShader.setMat4(\"view\", captureViews[i]);     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,                             GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, envCubemap, 0);     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);      renderCube(); \/\/ \u0432\u044b\u0432\u043e\u0434 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u0443\u0431\u0430 } glBindFramebuffer(GL_FRAMEBUFFER, 0);   <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0438 \u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0441\u043c\u0435\u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u0433\u0440\u0430\u043d\u0438 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0432\u043e\u0434\u0443 \u0440\u0435\u043d\u0434\u0435\u0440\u0430 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0433\u0440\u0430\u043d\u0435\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0443 \u043d\u0430\u0441 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <i>envCubemap<\/i>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 HDR \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u0432 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u0430:  <\/p>\n<pre><code>#version 330 core layout (location = 0) in vec3 aPos;  uniform mat4 projection; uniform mat4 view;  out vec3 localPos;  void main() {     localPos = aPos;     \/\/ \u0437\u0434\u0435\u0441\u044c \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u0438\u0437 \u0432\u0438\u0434\u043e\u0432\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b     mat4 rotView = mat4(mat3(view));     vec4 clipPos = projection * rotView * vec4(localPos, 1.0);      gl_Position = clipPos.xyww; } <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u044e\u043a \u0441 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 <i>clipPos<\/i>: \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0435\u0442\u0440\u0430\u0434\u0443 <i>xyww <\/i>\u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u0441\u0435\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u043c \u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u0443\u0431\u0438\u043d\u0443, \u0440\u0430\u0432\u043d\u0443\u044e 1.0 (\u043f\u043e\u0434\u0445\u043e\u0434 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0432 <a href=\"https:\/\/habrahabr.ru\/post\/347750\">\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0443\u0440\u043e\u043a\u0435<\/a>). \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043d\u0430 <i>GL_LEQUAL<\/i>:  <\/p>\n<pre><code class=\"cpp\">glDepthFunc(GL_LEQUAL); <\/code><\/pre>\n<p>  \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b:  <\/p>\n<pre><code>version 330 core out vec4 FragColor;  in vec3 localPos;    uniform samplerCube environmentMap;    void main() {     vec3 envColor = texture(environmentMap, localPos).rgb;          envColor = envColor \/ (envColor + vec3(1.0));     envColor = pow(envColor, vec3(1.0\/2.2));         FragColor = vec4(envColor, 1.0); }<\/code><\/pre>\n<p>  \u0412\u044b\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u043a\u0430\u0440\u0442\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d \u043a\u0443\u0431\u0430, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (\u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u043e\u0441\u044c \u0432 \u0443\u0440\u043e\u043a\u0435 \u043f\u043e \u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u0430\u043c, <i>\u043f\u0440\u0438\u043c. \u043f\u0435\u0440.<\/i>). \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0432 \u0432\u0438\u0434\u043e\u0432\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0442\u043e \u0440\u0435\u043d\u0434\u0435\u0440 \u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0438\u043b\u043b\u044e\u0437\u0438\u044e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e\u0433\u043e \u0444\u043e\u043d\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 HDR \u043a\u0430\u0440\u0442\u044b \u0432 \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0439\u0441\u044f LDR \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438 \u043e \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0438. \u0418, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435: \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 HDR \u043a\u0430\u0440\u0442\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438 <a href=\"https:\/\/habrahabr.ru\/post\/353632\">\u0433\u0430\u043c\u043c\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044e <\/a>\u043a\u0430\u043a \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043a\u043a\u043e\u0440\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0438 \u0432\u044b\u0432\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0441\u0444\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/s8\/-3\/vx\/s8-3vxu5dhzhrwm1adtb5uwffga.png\"><\/div>\n<p>  \u0427\u0442\u043e \u0436, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0443\u0441\u0438\u043b\u0438\u0439, \u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0441\u0432\u043e\u0438\u043b\u0438\u0441\u044c \u0441\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c HDR \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0441 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0435\u0451 \u0438\u0437 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c HDR \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u0430 \u0432 \u0441\u0446\u0435\u043d\u0435. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043a\u043e\u0434 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0430 \u043d\u0430 \u0448\u0435\u0441\u0442\u044c \u0433\u0440\u0430\u043d\u0435\u0439 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u043c \u0438 \u0434\u0430\u043b\u0435\u0435 \u2013 \u0432 \u0437\u0430\u0434\u0430\u0447\u0435 <i>\u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/i>. \u041a\u043e\u0434 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u2013 <a href=\"https:\/\/learnopengl.com\/code_viewer_gh.php?code=src\/6.pbr\/2.1.1.ibl_irradiance_conversion\/ibl_irradiance_conversion.cpp\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h2>\u0421\u0432\u0435\u0440\u0442\u043a\u0430 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b<\/h2>\n<p>  \u041a\u0430\u043a \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0443\u0440\u043e\u043a\u0430, \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u043d\u0430\u0448\u0430 \u0446\u0435\u043b\u044c \u2013 \u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0446\u0435\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0441\u0446\u0435\u043d\u044b <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/485\/55d\/2e3\/48555d2e3f7667d2ec9278f00aaa1a3f.svg\" alt=\"$L(p, w_i)$\" data-tex=\"inline\"><\/math> \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math>, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 HDR \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0441\u0446\u0435\u043d\u044b \u0441\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math> \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430.<br \/>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c\u043e\u0439 \u2013 \u0442\u0430\u043a\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044e, \u0432\u0437\u044f\u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 \u043a \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043f\u043e \u0441\u0443\u0442\u0438 \u0440\u0435\u0448\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b.<br \/>  \u041d\u043e \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0430\u0436\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u0435\u043d, \u0432\u0435\u0434\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430, \u0438 \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b\u043b\u043e \u0431\u044b <i>\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 <\/i>\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430, \u0432\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0437 \u043a\u0430\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u044b \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u0432\u0430\u0435\u043c \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ef4\/5c3\/b02\/ef45c3b022e27e6d85a948ecbe894900.svg\" alt=\"$w_o$\" data-tex=\"inline\"><\/math>:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/434\/315\/f93\/434315f936a5724534119d8ecd005532.svg\" alt=\"$L_o(p,\\omega_o) = k_d\\frac{c}{\\pi} \\int\\limits_{\\Omega} L_i(p,\\omega_i) n \\cdot \\omega_i d\\omega_i$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435, \u043f\u0440\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math>, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0434\u0430\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0439 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0433\u043e \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432 \u0442\u043e\u0447\u043a\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043c\u044b \u0431\u0435\u0440\u0435\u043c \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0439 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b, \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0446\u0435\u043d\u044b \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435:  <\/p>\n<pre><code>vec3 irradiance = texture(irradianceMap, N); <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u0432\u0435\u0440\u0442\u043a\u0443 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0435. \u041d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0434\u043e\u043b\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \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>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0432\u0435\u0440\u0442\u043a\u0430 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0440\u0430\u0441\u0447\u0435\u0442\u0443 \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0441\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/889\/700\/7ec\/8897007eca89140fe711eea3f97725b0.svg\" alt=\"$w_i$\" data-tex=\"inline\"><\/math> \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math>, \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0434\u043e\u043b\u044c \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>:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yc\/ip\/a2\/ycipa25cnkcvhxdqcvrfbqqozvg.png\"><\/div>\n<p>  \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0442\u0430 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0430\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0443\u0440\u043e\u043a\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c \u0448\u0435\u0439\u0434\u0435\u0440\u0435, \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443. \u041e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0437\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0448\u0435\u0439\u0434\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438:  <\/p>\n<pre><code>#version 330 core out vec4 FragColor; in vec3 localPos;  uniform samplerCube environmentMap;  const float PI = 3.14159265359;  void main() {\t\t     \/\/ \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b     vec3 normal = normalize(localPos);        vec3 irradiance = vec3(0.0);        [...] \/\/ \u043a\u043e\u0434 \u0441\u0432\u0435\u0440\u0442\u043a\u0438        FragColor = vec4(irradiance, 1.0); }<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0441\u044d\u043c\u043f\u043b\u0435\u0440 <i>environmentMap <\/i>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 HDR \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u0437 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439.<\/p>\n<p>  \u0421\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u0432\u0435\u0440\u0442\u043a\u0443 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043c\u0430\u043b\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0435\u043b\u044f \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043c\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math>, \u0441\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0434\u043e\u043b\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u0438 \u0443\u0441\u0440\u0435\u0434\u043d\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0430 \u0441\u0430\u043c\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u2013 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b. \u041e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043f\u043e\u0434\u044b\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435\u043c. \u0418 \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043c\u044b \u0432\u043e\u0437\u044c\u043c\u0435\u043c, \u0442\u0435\u043c \u0431\u043b\u0438\u0436\u0435 \u043a \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c.<br \/>  \u041f\u043e\u0434\u044b\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u0435\u043b\u0435\u0441\u043d\u043e\u0433\u043e \u0443\u0433\u043b\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/481\/e3c\/265\/481e3c2652541cb03aa65212f684a538.svg\" alt=\"$dw$\" data-tex=\"inline\"><\/math> \u2013 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0412\u043c\u0435\u0441\u0442\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0442\u0435\u043b\u0435\u0441\u043d\u043e\u043c\u0443 \u0443\u0433\u043b\u0443 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/481\/e3c\/265\/481e3c2652541cb03aa65212f684a538.svg\" alt=\"$dw$\" data-tex=\"inline\"><\/math> \u043c\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u0440\u0438\u0432\u0435\u0434\u044f \u043a \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u043e \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ff2\/c64\/99d\/ff2c6499d038a61a41d7ce75cd78788f.svg\" alt=\"$\\theta$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/63e\/da8\/03c\/63eda803ce3c511b570836fcbe8ea9ab.svg\" alt=\"$\\phi$\" data-tex=\"inline\"><\/math>:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vx\/8c\/_r\/vx8c_rphv4hhjo4xwhbduqhoslu.png\"><\/div>\n<p>  \u0423\u0433\u043e\u043b \u0424\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u0437\u0438\u043c\u0443\u0442 \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b, \u0438\u0437\u043c\u0435\u043d\u044f\u044f\u0441\u044c \u043e\u0442 0 \u0434\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/97f\/84d\/d78\/97f84dd782d8381441b2d4db41de5f2e.svg\" alt=\"$2\\pi$\" data-tex=\"inline\"><\/math>. \u0423\u0433\u043e\u043b <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ff2\/c64\/99d\/ff2c6499d038a61a41d7ce75cd78788f.svg\" alt=\"$\\theta$\" data-tex=\"inline\"><\/math> \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0443\u0433\u043e\u043b \u043c\u0435\u0441\u0442\u0430, \u0438\u0437\u043c\u0435\u043d\u044f\u044f\u0441\u044c \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0442 0 \u0434\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/759\/cb0\/de8\/759cb0de8a8fa967a5434c5d2ebf4d5b.svg\" alt=\"$\\frac{1}{2}\\pi$\" data-tex=\"inline\"><\/math>. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u0442\u0430\u043a\u0438\u0445 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/be4\/2e6\/1a8\/be42e61a8bebd726acde4307d6122741.svg\" alt=\"$L_o(p,\\phi_o, \\theta_o) = k_d\\frac{c}{\\pi} \\int_{\\phi = 0}^{2\\pi} \\int_{\\theta = 0}^{\\frac{1}{2}\\pi} L_i(p,\\phi_i, \\theta_i) \\cos(\\theta) \\sin(\\theta) d\\phi d\\theta$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0437\u044f\u0442\u0438\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u0432 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7f9\/5d3\/492\/7f95d3492d59cdaaf99bfd6d4d2919aa.svg\" alt=\"$\\Omega$\" data-tex=\"inline\"><\/math> \u0438 \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0417\u043d\u0430\u044f \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u0431\u043e\u0440\u043e\u043a <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3ce\/94a\/931\/3ce94a9314da6bbaa37b61428f0367b8.svg\" alt=\"$n1$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/fec\/530\/4d5\/fec5304d5696ddf9b27387e0c3cb6be0.svg\" alt=\"$n2$\" data-tex=\"inline\"><\/math> \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b \u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Riemann_sum\">\u0440\u0438\u043c\u0430\u043d\u043e\u0432\u0441\u043a\u043e\u0439 \u0441\u0443\u043c\u043c\u0435<\/a>:  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d6f\/e0a\/30a\/d6fe0a30afeb02744dd42333d1710560.svg\" alt=\"$L_o(p,\\phi_o, \\theta_o) = k_d\\frac{c}{\\pi} \\frac{1}{n1 n2} \\sum_{\\phi = 0}^{n1} \\sum_{\\theta = 0}^{n2} L_i(p,\\phi_i, \\theta_i) \\cos(\\theta) \\sin(\\theta) d\\phi d\\theta$\" data-tex=\"display\"><\/math><\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u0435 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e, \u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0439 \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043d\u0430 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0432\u044b\u0448\u0435. \u0418\u0437-\u0437\u0430 \u043f\u0440\u0438\u0440\u043e\u0434\u044b \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0438 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0443\u0433\u043b\u0430 \u043c\u0435\u0441\u0442\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ff2\/c64\/99d\/ff2c6499d038a61a41d7ce75cd78788f.svg\" alt=\"$\\theta$\" data-tex=\"inline\"><\/math> \u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u043a \u0437\u0435\u043d\u0438\u0442\u0443. \u0414\u043b\u044f \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u0441\u043e\u0432\u043e\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/475\/8b7\/2dd\/4758b72dd8d355efd455f70004e49409.svg\" alt=\"$sin\\theta$\" data-tex=\"inline\"><\/math>.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0432 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code>vec3 irradiance = vec3(0.0);    vec3 up    = vec3(0.0, 1.0, 0.0); vec3 right = cross(up, normal); up         = cross(normal, right);  float sampleDelta = 0.025; float nrSamples = 0.0;  for(float phi = 0.0; phi &lt; 2.0 * PI; phi += sampleDelta) {     for(float theta = 0.0; theta &lt; 0.5 * PI; theta += sampleDelta)     {         \/\/ \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043e\u0440\u0434. \u0432 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u044b (\u0432 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440-\u0432\u0435)         vec3 tangentSample = vec3(sin(theta) * cos(phi),  sin(theta) * sin(phi), cos(theta));         \/\/ \u0438\u0437 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e         vec3 sampleVec = tangentSample.x * right + tangentSample.y * up + tangentSample.z * N;           irradiance += texture(environmentMap, sampleVec).rgb * cos(theta) * sin(theta);         nrSamples++;     } } irradiance = PI * irradiance * (1.0 \/ float(nrSamples)); <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>sampleDelta <\/i>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043f\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u044b. \u041c\u0435\u043d\u044f\u044f \u044d\u0442\u0443 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.<br \/>  \u0412\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u043e\u0438\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 \u0438\u0437 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 3\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0437 \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432 \u043c\u0438\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438 \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 HDR \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>irradiance<\/i>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0444\u0438\u043d\u0430\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0435\u043b\u0435\u043d\u0430 \u043d\u0430 \u0447\u0438\u0441\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043e\u043a, \u0434\u0430\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430\u043c\u0438: <i>cos(theta)<\/i> \u2013 \u0434\u043b\u044f \u0443\u0447\u0435\u0442\u0430 \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0443\u0433\u043b\u0430\u0445, \u0438 <i>sin(theta)<\/i> \u2013 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 \u043a \u0437\u0435\u043d\u0438\u0442\u0443.<br \/>  \u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043a\u043e\u0434\u043e\u043c, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u0440\u0435\u043d\u0434\u0435\u0440 \u0438 \u0437\u0430\u0445\u0432\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <i>envCubemap<\/i>. \u0421\u043f\u0435\u0440\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (\u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e, \u0434\u043e \u0432\u0445\u043e\u0434\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u0440\u0435\u043d\u0434\u0435\u0440\u0430):  <\/p>\n<pre><code class=\"cpp\">unsigned int irradianceMap; glGenTextures(1, &amp;irradianceMap); glBindTexture(GL_TEXTURE_CUBE_MAP, irradianceMap); for (unsigned int i = 0; i &lt; 6; ++i) {     glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB16F, 32, 32, 0,                   GL_RGB, GL_FLOAT, nullptr); } glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0440\u0442\u0430 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043e\u043a \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u043e\u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u2013 \u0434\u043b\u044f \u0435\u0451 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f (\u0437\u0434\u0435\u0441\u044c \u2013 32\u044532) \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438.<br \/>  \u0414\u0430\u043b\u0435\u0435, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440 \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">glBindFramebuffer(GL_FRAMEBUFFER, captureFBO); glBindRenderbuffer(GL_RENDERBUFFER, captureRBO); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, 32, 32);   <\/code><\/pre>\n<p>  \u041a\u043e\u0434 \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0440\u0430\u0432\u043d\u043e\u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439 \u0432 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u0443\u044e, \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0435\u0439\u0434\u0435\u0440 \u0441\u0432\u0435\u0440\u0442\u043a\u0438:  <\/p>\n<pre><code class=\"cpp\">irradianceShader.use(); irradianceShader.setInt(\"environmentMap\", 0); irradianceShader.setMat4(\"projection\", captureProjection); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_CUBE_MAP, envCubemap);  \/\/ \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044c\u044e\u043f\u043e\u0440\u0442 \u043f\u043e\u0434 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 glViewport(0, 0, 32, 32); glBindFramebuffer(GL_FRAMEBUFFER, captureFBO); for (unsigned int i = 0; i &lt; 6; ++i) {     irradianceShader.setMat4(\"view\", captureViews[i]);     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,                             GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, irradianceMap, 0);     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);      renderCube(); } glBindFramebuffer(GL_FRAMEBUFFER, 0);   <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0443 \u043d\u0430\u0441 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0448\u043b\u0430 \u0441\u0432\u0435\u0440\u0442\u043a\u0430 \u2013 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443 \u0441\u043a\u0430\u0439\u0431\u043e\u043a\u0441\u0430 \u0441 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0443 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mt\/gc\/cs\/mtgccsxl0h80cdo1gg8wgl3tp9m.png\"><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u043d\u0435\u0447\u0442\u043e, \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043c\u044b\u0442\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0442\u043e, \u0432\u0435\u0440\u043d\u0435\u0439 \u0432\u0441\u0435\u0433\u043e, \u0441\u0432\u0435\u0440\u0442\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e.<\/p>\n<h2>PBR \u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u044f\u043c\u044b\u043c \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c<\/h2>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u043a\u043b\u0430\u0434 \u0441\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0432\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0430 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u0446\u0435\u043b\u043e\u043c, \u0442\u043e \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0435 \u0438 \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u043a\u0430\u043a \u0444\u043e\u043d\u043e\u0432\u043e\u0435 (<i>ambient<\/i>), \u0437\u0430\u043c\u0435\u043d\u044f\u044f \u0440\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u044d\u043c\u043f\u043b\u0435\u0440 \u0441 \u043a\u0430\u0440\u0442\u043e\u0439 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438:  <\/p>\n<pre><code>uniform samplerCube irradianceMap;<\/code><\/pre>\n<p>  \u0418\u043c\u0435\u044f \u043a\u0430\u0440\u0442\u0443 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0439 \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u043c \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u043c \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0441\u0446\u0435\u043d\u044b, \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c \u043a \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b:  <\/p>\n<pre><code>\/\/ vec3 ambient = vec3(0.03); vec3 ambient = texture(irradianceMap, N).rgb; <\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0435 \u0438\u0437\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0434\u043b\u044f \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0439 \u0438 \u0434\u043b\u044f \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b (\u0447\u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438), \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u043e\u0434\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u0443\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u043e\u0441\u043e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0422\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u043a\u0435, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0424\u0440\u0435\u043d\u0435\u043b\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u043f\u0440\u0435\u043b\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u0438\u043b\u0438 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u044b\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442:  <\/p>\n<pre><code>vec3 kS = fresnelSchlick(max(dot(N, V), 0.0), F0); vec3 kD = 1.0 - kS; vec3 irradiance = texture(irradianceMap, N).rgb; vec3 diffuse    = irradiance * albedo; vec3 ambient    = (kD * diffuse) * ao;  <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u043f\u043e\u043b\u0443\u0441\u0444\u0435\u0440\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \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>, \u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u044b\u0439 (<i>halfway<\/i>) \u0432\u0435\u043a\u0442\u043e\u0440 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0424\u0440\u0435\u043d\u0435\u043b\u044f. \u0414\u0430\u0431\u044b \u0441\u044b\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u0424\u0440\u0435\u043d\u0435\u043b\u044f \u0432 \u0442\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0433\u043b\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u044e \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0440\u0430\u043d\u0435\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0424\u0440\u0435\u043d\u0435\u043b\u044f \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0438\u0439 \u043e\u0442 \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u044c \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0442\u043e \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u043c. \u041d\u0435\u043f\u0440\u044f\u043c\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0446\u0435\u043b\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0442.\u0435. \u043e\u0442 \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u044b\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u043a\u0440\u0430\u044f\u043c. \u041d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u044c \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0424\u0440\u0435\u043d\u0435\u043b\u044e \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e \u043d\u0430 \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u044b\u0445 \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\u044f\u0445 (\u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043d\u0438\u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438):  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/q2\/oc\/ly\/q2oclypt9x6lcg5yyaqr4d8hu9i.png\"><\/div>\n<p>  \u041e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u0443 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0435\u043c \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u0438 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0424\u0440\u0435\u043c\u0435\u043d\u043b\u044f-\u0428\u043b\u0438\u043a\u0430, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 <a href=\"https:\/\/seblagarde.wordpress.com\/2011\/08\/17\/hello-world\/\">S\u00e9bastien Lagarde<\/a>:  <\/p>\n<pre><code>vec3 fresnelSchlickRoughness(float cosTheta, vec3 F0, float roughness) {     return F0 + (max(vec3(1.0 - roughness), F0) - F0) * pow(1.0 - cosTheta, 5.0); }<\/code><\/pre>\n<p>  \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043a-\u0442\u0430 \u0424\u0440\u0435\u043d\u0435\u043b\u044f, \u043a\u043e\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:  <\/p>\n<pre><code>vec3 kS = fresnelSchlickRoughness(max(dot(N, V), 0.0), F0, roughness);  vec3 kD = 1.0 - kS; vec3 irradiance = texture(irradianceMap, N).rgb; vec3 diffuse    = irradiance * albedo; vec3 ambient    = (kD * diffuse) * ao; <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0438\u0437 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u0412\u0441\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u043a\u0430\u0440\u0442\u0443 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0412\u0437\u044f\u0432 \u0437\u043d\u0430\u043a\u043e\u043c\u0443\u044e \u0441\u0446\u0435\u043d\u0443 \u0438\u0437 \u0443\u0440\u043e\u043a\u0430 \u043e\u0431 <a href=\"https:\/\/habr.com\/post\/424453\">\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445 <\/a>\u0441\u0432\u0435\u0442\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0444\u0435\u0440 \u0441 \u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0439\u0441\u044f \u043c\u0435\u0442\u0430\u043b\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0448\u0435\u0440\u043e\u0445\u043e\u0432\u0430\u0442\u043e\u0441\u0442\u044c\u044e, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0435 \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435:  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vd\/b1\/y1\/vdb1y1xddczspcyl-7exei76lxw.png\"><\/div>\n<p>  \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u043c\u0435\u0442\u0430\u043b\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435 \u0435\u0449\u0435 <u>\u0442\u0440\u0435\u0431\u0443\u044e\u0442 <\/u>\u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c, \u0445\u043c, \u043c\u0435\u0442\u0430\u043b\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 (\u043c\u0435\u0442\u0430\u043b\u043b\u044b \u0432\u0435\u0434\u044c \u043d\u0435 \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0442 \u0434\u0438\u0444\u0444\u0443\u0437\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435). \u0410 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043e\u0442 \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441\u0432\u0435\u0442\u0430. \u0418 \u0432\u0441\u0435 \u0436\u0435, \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0444\u0435\u0440\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u0430\u0440\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f), \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0442 \u043d\u0430 \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u044b.<\/p>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0443\u0440\u043e\u043a\u0430 \u2013 <a href=\"https:\/\/learnopengl.com\/code_viewer_gh.php?code=src\/6.pbr\/2.1.2.ibl_irradiance\/ibl_irradiance.cpp\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0443\u0440\u043e\u043a\u0435 \u043c\u044b, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0439 \u0437\u0430 \u043d\u0435\u043f\u0440\u044f\u043c\u043e\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0432\u044b \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0435 \u043c\u043e\u0449\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u0430 PBR \u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0438.<\/p>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/www.codinglabs.net\/article_physically_based_rendering.aspx\">Coding Labs: Physically based rendering<\/a>: \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c PBR \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u0440\u0442\u0430 \u043e\u0431\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li><a href=\"http:\/\/www.scratchapixel.com\/lessons\/mathematics-physics-for-computer-graphics\/mathematics-of-shading\">The Mathematics of Shading<\/a>: \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043e\u0442 ScratchAPixel, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u0435\u043c\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043e \u043f\u043e\u043b\u044f\u0440\u043d\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u0430\u0445.<\/li>\n<\/ul>\n<p>  <b>P.S.<\/b>: \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <a href=\"https:\/\/t.me\/joinchat\/Cpb05A46UPpMWdNVVCb4Vg\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043a\u043e\u043d\u0444\u0430 <\/a>\u0434\u043b\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c, \u0442\u043e \u043c\u0438\u043b\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0438\u043c!<\/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\/post\/426987\/\"> https:\/\/habr.com\/post\/426987\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/web\/c9e\/9b2\/a3b\/c9e9b2a3baf749ab8e2b385c6d93d966.png\" alt=\"OGL3\" align=\"left\" width=\"300\"> \u041e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 <i>IBL <\/i>(<i>Image Based Lighting<\/i>) \u2013 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043d\u0430 \u0443\u0447\u0435\u0442\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441\u0432\u0435\u0442\u0430 (\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u0432 <a href=\"https:\/\/habr.com\/post\/424453\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u043a\u0435<\/a>), \u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0432\u0441\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430. \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u0430 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b) \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0432 \u043a\u0430\u0440\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f: \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u043a\u0441\u0435\u043b\u044c \u043a\u0443\u0431\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430. \u0412 \u043e\u0431\u0449\u0435\u043c \u0438 \u0446\u0435\u043b\u043e\u043c, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0441\u0446\u0435\u043d\u0435, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0435\u0439 \u043e\u0431\u0449\u0438\u0439 \u00ab\u0442\u043e\u043d\u00bb \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0446\u0435\u043d\u044b \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0435\u0439 \u043e\u0441\u0432\u0435\u0449\u0430\u0435\u043c\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0431\u044b\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u00ab\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438\u00bb \u0432 \u043d\u0435\u0435.<\/p>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b IBL \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043d\u0435\u043a\u043e\u0435\u0433\u043e \u00ab\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u00bb \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0439 \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0435\u0439 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0433\u0440\u0443\u0431\u043e\u0439 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0435\u0439 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u042d\u0442\u043e\u0442 \u0430\u0441\u043f\u0435\u043a\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b IBL \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u044c PBR, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-291037","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/291037","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=291037"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/291037\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=291037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=291037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=291037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}