{"id":292580,"date":"2019-07-25T21:00:39","date_gmt":"2019-07-25T21:00:39","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=292580"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=292580","title":{"rendered":"\u041a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f \u043a\u0430\u043a \u0432 \u0434\u0435\u0442\u0441\u0442\u0432\u0435"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3o\/ct\/ca\/3octca6ynkhdvllkfxunqcgohty.png\">  <\/p>\n<blockquote><p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0437\u0435\u0440\u043a\u0430\u043b\u0435 \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e, \u0447\u0435\u043c \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u2026<br \/>   \u2014 \u041b\u044c\u044e\u0438\u0441 \u041a\u044d\u0440\u0440\u043e\u043b\u043b (\u0410\u043b\u0438\u0441\u0430 \u0432 \u0437\u0430\u0437\u0435\u0440\u043a\u0430\u043b\u044c\u0435)<\/p><\/blockquote>\n<p>   \u0412 \u044e\u043d\u043e\u043c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430 \u0437\u0430\u0431\u0430\u0432\u043d\u0430\u044f \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u2013 \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f. \u0427\u0430\u0441\u0430\u043c\u0438 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0443\u0437\u043e\u0440\u044b, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u0440\u0430\u0437\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u043e\u0441\u043a\u043e\u043b\u043a\u043e\u0432 \u0431\u0438\u0442\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u043b\u0430. \u0427\u0442\u043e-\u0442\u043e \u0437\u0430\u0432\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u0431\u044b\u043b\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0434\u0438\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043e\u0437\u0435\u0440\u0446\u0430\u043d\u0438\u0438. \u041d\u044b\u043d\u0435, \u0431\u0443\u0434\u0443\u0447\u0438 \u043e\u0442\u0446\u043e\u043c, \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0438\u043c \u0447\u0430\u0434\u0430\u043c \u043a\u0440\u0430\u0441\u043e\u0442\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0439 \u0445\u0430\u043e\u0441\u0430. <\/p>\n<p>  \u0414\u0435\u0442\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0434\u0435\u0440\u043d\u043e\u0432\u044b\u0435, \u0438\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438 \u043c\u0430\u043b\u043e\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b, \u0438\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043f\u043e\u0434\u0430\u0432\u0430\u0439 \u0438\u043b\u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0432\u044b\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439.<\/p>\n<p>  \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0438 \u0412\u0430\u0441 \u043e\u043a\u0443\u043d\u0443\u0442\u044c\u0441\u044f \u0441\u043e \u043c\u043d\u043e\u0439 \u0432 \u043c\u0438\u0440 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<br \/>  <a name=\"habracut\"><\/a><br \/>   \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f\u0430. \u0414\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0437\u0435\u0440\u043a\u0430\u043b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c \u0434\u0440\u0443\u0433 \u043a \u0434\u0440\u0443\u0433\u0443 \u0443\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0440\u0443\u0431\u043a\u0443. \u041a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f \u0438\u0437 \u043c\u043e\u0435\u0433\u043e \u0434\u0435\u0442\u0441\u0442\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b \u0438\u0437 \u0442\u0440\u0451\u0445 \u0437\u0435\u0440\u043a\u0430\u043b, \u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438 \u0440\u0435\u0448\u0438\u043b \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c.<\/p>\n<p>  \u0421\u0430\u043c\u044b\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043b\u0443\u0447\u0435\u0439 (Ray tracing). \u0411\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b 3 \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c 120 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u0434\u0440\u0443\u0433 \u043a \u0434\u0440\u0443\u0433\u0443.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/7v\/ds\/wz\/7vdswzkzzuujwnidouulzxzxp0q.png\"><\/p>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0449\u0430\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0437\u0430 \u0434\u0430\u043b\u044c\u043d\u0438\u043c \u043a\u0440\u0430\u0435\u043c \u0437\u0435\u0440\u043a\u0430\u043b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043b\u0443\u0447\u0435\u0439 (\u043e\u043a\u043e\u043b\u043e 20 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439) \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/eq\/nz\/qv\/eqnzqvlydnjvqdfurrjn40bwnes.png\"><\/p>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0439\u0442\u0440\u0435\u0441\u0438\u043d\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440. \u0412\u044b\u0432\u043e\u0434 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0436\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0444\u0435\u0440\u044b, \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0444\u0438\u0433\u0443\u0440\u044b. \u041d\u0430 \u043c\u043e\u0435\u0439 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u0442\u0430\u0439\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u0433\u0430 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u043a\u043e\u043b\u043e 20-25 FPS, \u0438 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438 \u0442\u0440\u0451\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u0438 \u043e\u0434\u043d\u043e\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0441\u0432\u0435\u0442\u0430, \u0447\u0442\u043e \u0433\u0440\u0443\u0441\u0442\u043d\u043e. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0438\u0433\u0443\u0440, \u043a\u0430\u043a \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u0431\u044b \u043a \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044e. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u043e\u0442\u043b\u043e\u0436\u0438\u043b \u044d\u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u0430\u043a \u043c\u0430\u043b\u043e\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u0443\u044e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430 GLSL<\/b><\/p>\n<div class=\"spoiler_text\"><code>#version 430 core<br \/>  layout( local_size_x = 32, local_size_y = 32 ) in;<br \/>  layout(binding = 0, rgba8) uniform image2D IMG;<br \/>  layout(binding = 1, std430) buffer InSphere {vec4 Shape_obj[];};<br \/>  layout(binding = 2, std430) buffer InSphere_color {vec4 Sphere_color[];};<\/p>\n<p>  uniform vec2 u_InvScreenSize;<br \/>  uniform float u_ScreenRatio;<br \/>  uniform vec3 u_LightPosition;<br \/>  uniform vec3 u_CameraPosition;<\/p>\n<p>  \/\/ \u0437\u0430\u0434\u0430\u0451\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438<br \/>  const vec3 ray00 = vec3(-1*u_ScreenRatio,-1, -1.2);<br \/>  const vec3 ray01 = vec3(-1*u_ScreenRatio,+1, -1.2);<br \/>  const vec3 ray10 = vec3(+1*u_ScreenRatio,-1, -1.2);<br \/>  const vec3 ray11 = vec3(+1*u_ScreenRatio,+1, -1.2);<br \/>  const ivec2 size = imageSize(IMG);<\/p>\n<p>  const mat3 mat_rotate = mat3(-0.5, -0.86602540378443864676372317075294, 0, 0.86602540378443864676372317075294, -0.5, 0, 0, 0, 1);'+<br \/>   struct plane {<br \/>   vec3 v_plane;<br \/>   vec3 n_plane;<br \/>   vec3 p_plane;<br \/>  };'+<\/p>\n<p>  \/\/ \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0437\u0435\u0440\u043a\u0430\u043b\u0430<br \/>  plane m[3]; <br \/>  int last_plane;<\/p>\n<p>  \/\/----------------------------------------------------------<br \/>  float ray_intersect_sphere(vec3 orig, vec3 dir, vec4 Shape_obj) {<br \/>   vec3 l = Shape_obj.xyz - orig;<br \/>   float tca = dot(l,dir);<br \/>   float d2 = dot(l,l) - tca * tca;<br \/>   if (d2 &gt; Shape_obj.w * Shape_obj.w) {return 0;}<br \/>   float thc = sqrt(Shape_obj.w * Shape_obj.w - d2);<br \/>   float t0 = tca - thc;<br \/>   float t1 = tca + thc;<br \/>   if (t0 &lt; 0) {t0 = t1;}<br \/>   if (t0 &lt; 0) {return 0;}<br \/>   return t0;<br \/>   }<br \/>  \/\/---------------------------------------------------------<br \/>  'float ray_intersect_plane(in vec3 orig, in vec3 dir, inout plane p) {<br \/>   vec3 tested_direction = p.v_plane - orig;<br \/>   float k = dot(tested_direction, p.v_plane) \/ dot(dir, p.v_plane);<br \/>   if (k&gt;=0) {<br \/>   vec3 p0 = orig + dir * k;<br \/>   \/\/ \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u043c \u0437\u0435\u0440\u043a\u0430\u043b\u0430 \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 z<br \/>   if ((p0.z&gt;-80)&amp;&amp;(p0.z&lt;3)) { <br \/>   p.p_plane = p0;<br \/>   return length(p0-orig);<br \/>   }<br \/>   }<br \/>   return 1000000;<br \/>  }'+<br \/>  \/\/---------------------------------------------------------<br \/>  bool all_obj(inout vec3 loc_eye, inout vec3 dir, inout vec3 c) {<br \/>   float min_len = 1000000;<br \/>   uint near_id = 0;<br \/>   float len;<br \/>   float min_len2 = 1000000;<br \/>   int near_id2 = -1; <br \/>   for (int i=0; i&lt;3; i++) {<br \/>   if (i!=last_plane) {<br \/>   len = ray_intersect_plane(loc_eye, dir, m[i]);<br \/>   if (len&lt;min_len2) {<br \/>   min_len2 = len;<br \/>   near_id2 = i;<br \/>   }<br \/>   }<br \/>   }<\/p>\n<p>  \/\/ \u043b\u0443\u0447 \u043f\u043e\u043f\u0430\u043b \u0432 \u043e\u0434\u043d\u043e \u0438\u0437 \u0437\u0435\u0440\u043a\u0430\u043b<br \/>   if (near_id2&gt;=0) { <br \/>   loc_eye = m[near_id2].p_plane;<br \/>   dir = reflect(dir, m[near_id2].n_plane);<br \/>   last_plane =near_id2;<br \/>   return true;<br \/>   }<\/p>\n<p>  for (uint i=0; i&lt;Shape_obj.length(); i++) {<br \/>   len = ray_intersect_sphere(loc_eye, dir, Shape_obj[i]);<br \/>   if ((len&gt;0)&amp;&amp;(len&lt;min_len)) {<br \/>   min_len = len;<br \/>   near_id = i;<br \/>   }<br \/>   }<br \/>   \/\/ \u043d\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438<br \/>   if (min_len&gt;=1000000) {return false;} <\/p>\n<p>  vec3 hit = loc_eye + dir * min_len;<br \/>   vec3 Normal = normalize(hit - Shape_obj[near_id].xyz);<br \/>   vec3 to_light = u_LightPosition - hit;<br \/>   float to_light_len = length(to_light);<br \/>   vec3 light_dir = normalize(to_light);<br \/>   float diffuse_light = max(dot(light_dir, Normal), 0.0);<br \/>   c = min(c + Sphere_color[near_id].xyz * (diffuse_light*0.8+0.2),1);<br \/>   return false;<br \/>  }<br \/>  \/\/---------------------------------------------------------<br \/>  void main(void) {<br \/>   if (gl_GlobalInvocationID.x &gt;= size.x || gl_GlobalInvocationID.y &gt;= size.y) return;<br \/>   const vec2 pos = gl_GlobalInvocationID.xy * u_InvScreenSize.xy;<br \/>   vec3 dir = normalize(mix(mix(ray00, ray01, pos.y), mix(ray10, ray11, pos.y), pos.x));<br \/>   vec3 c = vec3(0, 0, 0);<br \/>   \/\/ \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b<br \/>   vec3 eye = vec3(u_CameraPosition); <\/p>\n<p>   \/\/ \u0437\u0430\u0434\u0430\u0451\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u0430\u043c<br \/>   m[0].v_plane = vec3(0,-5,0);<br \/>   m[0].n_plane = vec3(0,1,0);<br \/>   m[1].v_plane = mat_rotate * m[0].v_plane;<br \/>   m[1].n_plane = mat_rotate * m[0].n_plane;<br \/>   m[2].v_plane = mat_rotate * m[1].v_plane;<br \/>   m[2].n_plane = mat_rotate * m[1].n_plane;<\/p>\n<p>   \/\/ \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0435\u0440\u0435\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043b\u0443\u0447\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u0435\u0440\u043a\u0430\u043b\u0430\u043c\u0438<br \/>   for (int i=0; i&lt;20; i++) { <br \/>   if (!all_obj(eye, dir, c)) {break;}<br \/>   }<\/p>\n<p>  \/\/ \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0443<br \/>   imageStore(IMG, ivec2(gl_GlobalInvocationID.xy), vec4(c,1)); <br \/>  }<br \/>  <\/code>  <\/div>\n<\/div>\n<p>   \u0412 \u0438\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0443\u0437\u043e\u0440\u0430 \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f\u0430. \u041a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0434\u0432\u0443\u043c\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438, \u0442\u0443\u0442 \u0442\u0440\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0442\u0440\u0435\u043c\u044f \u0446\u0432\u0435\u0442\u0430\u043c\u0438.<br \/>  \u0411\u0443\u0444\u0435\u0440\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u0440\u0430\u0432\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432, \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u043c\u0431.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gb\/1p\/t3\/gb1pt3uwxr1x6wcfns-0gcyrr28.png\"><\/p>\n<p>  \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u0446\u0438\u0444\u0440\u0430\u043c\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0447\u0451\u0442\u043d\u044b\u0439 \u0438 \u043d\u0435 \u0447\u0451\u0442\u043d\u044b\u0439 \u0440\u044f\u0434\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0441\u043e \u0441\u0434\u0432\u0438\u0433\u043e\u043c \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443. \u041e\u0442\u0441\u0435\u043a\u0430\u0435\u043c \u043b\u0438\u0448\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0432\u044b\u0432\u043e\u0434\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0432\u0435\u0440\u0448\u0438\u043d \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u0448\u0435\u0441\u0442\u0438\u0433\u0440\u0430\u043d\u043d\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lk\/ie\/ck\/lkieckowtdl-qpzhjjrfnpng1ki.png\"><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0446\u0432\u0435\u0442\u0430 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0437 \u043c\u0438\u043d\u0438-\u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u2014 \u0448\u0430\u0431\u043b\u043e\u043d\u0430. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kz\/ob\/u7\/kzobu7zp4zeve534xvu0cvnio-0.png\"><br \/>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432.<\/p>\n<p>  \u0414\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0448\u0435\u0441\u0442\u0438\u0433\u0440\u0430\u043d\u043d\u0438\u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0434\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044d\u043a\u0440\u0430\u043d\u0430, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0441\u0435\u0432\u043e\u0435 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0430\u0440\u044b \u043c\u0438\u043d\u0443\u0442 \u0441\u043e\u0437\u0435\u0440\u0446\u0430\u043d\u0438\u044f \u043e\u0442 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0443\u0442\u0438\u0442\u044c. \u0414\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443.<\/p>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043d\u043e \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u0434\u0435\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u043d\u044f\u044f \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0422\u0430\u043a \u0443\u0437\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u044b\u043c \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c. <\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/al\/jo\/zm\/aljozmkcrtvdgdrs29ssxfhn3iu.png\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fw\/pb\/mg\/fwpbmgghaqtiambve80mej0umcq.png\"><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/10\/lh\/_c\/10lh_c_1z3qmj2ejgoehqju01w8.png\"><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0438\u0434\u0435\u043e<\/b><\/p>\n<div class=\"spoiler_text\">(\u041d\u0435 \u043c\u0430\u0441\u0442\u0430\u043a \u0432\u0430\u044f\u0442\u044c \u0432\u0438\u0434\u0435\u043e, \u0438\u0437\u0432\u0438\u043d\u044f\u044e\u0441\u044c \u0437\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e)<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/Ees1QVTpcNI?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/vuWLh4I4wao?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/J7fwIihZ_z0?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/4OEF9irbtk0?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/NnQ9sbq-WcQ?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/j1TWc1_OLP4?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/SgYbLaIRLak?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n<p>  \u041a\u043e\u0434 \u0448\u0435\u0439\u0434\u0435\u0440\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u0448\u0435\u0439\u0434\u0435\u0440\u043e\u0432 GLSL<\/b><\/p>\n<div class=\"spoiler_text\"><code>\/\/\u0412\u0435\u0440\u0448\u0438\u043d\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440<br \/>  #version 330 core<br \/>  layout (location = 0) in vec4 a_Position;<br \/>  uniform mat4 u_MVP;<br \/>  out vec4 v_Color;<br \/>  out vec2 v_TexCoords;<br \/>  void main() {<br \/>   v_TexCoords = a_Position.zw;<br \/>   gl_Position = u_MVP * vec4(a_Position.xy, 0, 1);<br \/>  }<\/p>\n<p>  \/\/\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0448\u0435\u0439\u0434\u0435\u0440<br \/>  #version 330 core<br \/>  precision mediump float;<br \/>  varying vec2 v_TexCoords;<br \/>  uniform sampler2D u_Texture;<br \/>  void main(){<br \/>   gl_FragColor = texture(u_Texture, v_TexCoords);<br \/>  }<\/code>  <\/div>\n<\/div>\n<p>  \u0414\u0435\u0442\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u044b, \u0430 \u044f \u0437\u0430\u0432\u0438\u0441 \u0432 \u043c\u0435\u0434\u0438\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0447\u0435\u0440\u043e\u0432.<\/p>\n<p>  <a href=\"https:\/\/yadi.sk\/d\/Pqhde9CXbTxxdQ\">\u0414\u0435\u043c\u043e<\/a> (EXE \u0434\u043b\u044f Windows)<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/461351\/\"> https:\/\/habr.com\/ru\/post\/461351\/<\/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\/webt\/3o\/ct\/ca\/3octca6ynkhdvllkfxunqcgohty.png\">  <\/p>\n<blockquote><p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0437\u0435\u0440\u043a\u0430\u043b\u0435 \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e, \u0447\u0435\u043c \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u2026<br \/>   \u2014 \u041b\u044c\u044e\u0438\u0441 \u041a\u044d\u0440\u0440\u043e\u043b\u043b (\u0410\u043b\u0438\u0441\u0430 \u0432 \u0437\u0430\u0437\u0435\u0440\u043a\u0430\u043b\u044c\u0435)<\/p><\/blockquote>\n<p>   \u0412 \u044e\u043d\u043e\u043c \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430 \u0437\u0430\u0431\u0430\u0432\u043d\u0430\u044f \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u2013 \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f. \u0427\u0430\u0441\u0430\u043c\u0438 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0443\u0437\u043e\u0440\u044b, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u0440\u0430\u0437\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u043e\u0441\u043a\u043e\u043b\u043a\u043e\u0432 \u0431\u0438\u0442\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u043b\u0430. \u0427\u0442\u043e-\u0442\u043e \u0437\u0430\u0432\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u0431\u044b\u043b\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0434\u0438\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043e\u0437\u0435\u0440\u0446\u0430\u043d\u0438\u0438. \u041d\u044b\u043d\u0435, \u0431\u0443\u0434\u0443\u0447\u0438 \u043e\u0442\u0446\u043e\u043c, \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0438\u043c \u0447\u0430\u0434\u0430\u043c \u043a\u0440\u0430\u0441\u043e\u0442\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0439 \u0445\u0430\u043e\u0441\u0430. <\/p>\n<p>  \u0414\u0435\u0442\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0434\u0435\u0440\u043d\u043e\u0432\u044b\u0435, \u0438\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0438\u0433\u0440\u0443\u0448\u043a\u0438 \u043c\u0430\u043b\u043e\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b, \u0438\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043f\u043e\u0434\u0430\u0432\u0430\u0439 \u0438\u043b\u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043a\u0430\u043b\u0435\u0439\u0434\u043e\u0441\u043a\u043e\u043f\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0432\u044b\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439.<\/p>\n<p>  \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0438 \u0412\u0430\u0441 \u043e\u043a\u0443\u043d\u0443\u0442\u044c\u0441\u044f \u0441\u043e \u043c\u043d\u043e\u0439 \u0432 \u043c\u0438\u0440 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-292580","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292580","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=292580"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292580\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=292580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=292580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=292580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}