<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RRP Team &#8212; ReflectRP Blog</title>
	<atom:link href="https://blog.reflectrp.ru/ru/author/rrpteam/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.reflectrp.ru</link>
	<description>ReflectRP development blog</description>
	<lastBuildDate>Fri, 04 Nov 2022 10:28:26 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.2</generator>
	<item>
		<title>История разработки нашего рендера #4</title>
		<link>https://blog.reflectrp.ru/ru/reflectrp-render-4/</link>
					<comments>https://blog.reflectrp.ru/ru/reflectrp-render-4/#respond</comments>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Fri, 04 Nov 2022 10:26:18 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=259</guid>

					<description><![CDATA[Продолжаем рассказывать о том, как мы достигли того результата, который вы не раз видели на наших скриншотах, а также о том, что ещё добавлялось в клиент игры помимо графики. Отражения В прошлой части мы рассказали про SSR отражения — отражения, которые работают исключительно с той информацией, что есть в данный момент на экране. Именно по &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/ru/reflectrp-render-4/" class="more-link">Читать далее<span class="screen-reader-text"> "История разработки нашего рендера #4"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<p>Продолжаем рассказывать о том, как мы достигли того результата, который вы не раз видели на наших скриншотах, а также о том, что ещё добавлялось в клиент игры помимо графики.</p>



<h2 class="wp-block-heading">Отражения</h2>



<p>В прошлой части мы рассказали про SSR отражения — отражения, которые работают исключительно с той информацией, что есть в данный момент на экране. Именно по этой причине такие отражения «исчезают», если камера смотрит вниз под сильным углом — информации на экране не хватает для построения полноценного отражения.</p>



<p>Но в игре используются не только они. Например, когда мы подходим к металлическому столбику, то мы хотим, чтобы в нём отражалось то, что находится вокруг — даже то, что находится за пределами нашей видимости (за нашей спиной, например). Для этого игра должна поставить камеру на место этого столбика, а затем сделать «захват» изображения всего, что находится вокруг и в последующем именно это «захваченное» изображение и используется для рисования отражения. Эдакая карта отражений.</p>



<p>Чтобы игра знала, где нужно создавать такие карты отражений, в редакторе расставляются специальные маркеры, называемые сферами захвата отражений (Sphere Reflection Capture) и боксами захвата отражений (Box Reflection Capture). В большинстве случаев используются именно сферы, а боксы применяются, например, в комнатах.</p>



<p>Вот так выглядят эти сферы у нас в MTA</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="640" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_4-1024x640.jpg" alt="" class="wp-image-260" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_4-1024x640.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_4-300x188.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_4-768x480.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_4-1536x960.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_4.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Основное их предназначение именно в этих местах — отражения в стёклах торгового центра.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="640" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_1-1024x640.jpg" alt="" class="wp-image-261" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_1-1024x640.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_1-300x188.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_1-768x480.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_1-1536x960.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_1.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>В стекле можно увидеть отражение домов, находящихся за пределами видимости. Выглядят они так страшненько из-за того, что стоят низкие настройки качества отражений и также отключено размытие.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="640" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_3-1024x640.jpg" alt="" class="wp-image-262" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_3-1024x640.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_3-300x188.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_3-768x480.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_3-1536x960.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_3.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>А это пример со столбиками. В них видно красные оттенки — это отражается рядом стоящий ТЦ.</p>



<p>Помимо того, что эти отражения позволяют показывать то, что находится за пределами экрана, они также менее требовательны к мощности компьютера (особенно статические отражения).</p>



<p>Сложность, с которой мы столкнулись при их реализации — то, что такие отражения для оптимизации строятся либо очень редко, либо вообще всего один раз. Но тогда они не учитывают небо (время суток, цвет неба и т.п.). Пришлось хорошо подумать, чтобы совместить всё это вместе и при этом не потерять в производительности.</p>



<h2 class="wp-block-heading">Сплайны</h2>



<p>После того, как мы решили использовать в качестве редактора карты Unreal Engine, мы также задумались о том, чтобы добавить в MTA часть тех возможностей, которые широко используются в UE и значительно упрощают жизнь моделлерам/дизайнерам уровней.</p>



<p>Одна из таких возможностей — сплайны. Ведь очень удобно, когда можно поставить несколько точек и между ними автоматически построится, например, забор, рельсы, дорога или висящий провод.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="320" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-1024x320.jpg" alt="" class="wp-image-263" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-1024x320.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-300x94.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-768x240.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-1536x480.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-2048x640.jpg 2048w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-2000x625.jpg 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Тестовый сплайн в редакторе (UE) и он же в MTA.</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="640" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_2-1024x640.jpg" alt="" class="wp-image-264" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_2-1024x640.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_2-300x188.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_2-768x480.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_2-1536x960.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_2.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Эта возможность активно используется, например, для дорог и проводов (скриншоты с более поздних стадий разработки):</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_1-1024x576.jpg" alt="" class="wp-image-265" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_1.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Пример использования сплайна для грунтовой дороги (скриншот с более поздних стадий разработки)</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_2-1024x576.jpg" alt="" class="wp-image-266" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_2-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_2-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_2-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_2-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_2.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Пример использования сплайна для висящих проводов (скриншот с более поздних стадий разработки)</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_3-1024x576.jpg" alt="" class="wp-image-267" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_3-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_3-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_3-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_3-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_3.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Пример использования сплайна для дороги и проводов (скриншот с более поздних стадий разработки)</figcaption></figure>



<h2 class="wp-block-heading">Облака</h2>



<p>Для слабых компьютеров у нас используется просто качественный скайбокс (подобно тому, что мы делали для RPBOX), но вот для обладателей мощного железа мы решили сделать самые настоящие динамические объёмные облака.</p>



<p>Для этого мы рассматривали разные варианты, включая готовые решения, вроде trueSky, но в итоге решили сделать собственную реализацию, близкую по качеству картинки и возможностям к облакам Unreal Engine.</p>



<p>Заняла эта работа почти месяц.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="640" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_2-1024x640.jpg" alt="" class="wp-image-268" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_2-1024x640.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_2-300x188.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_2-768x480.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_2-1536x960.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_2.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Высокое окно — это список настроек облаков. Всеми этими параметрами управляет система погоды, о которой мы расскажем в одной из следующих статей.</p>



<p>А это облака с правильным тонмаппингом и постобработкой:</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="640" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_4-1024x640.jpg" alt="" class="wp-image-269" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_4-1024x640.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_4-300x188.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_4-768x480.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_4-1536x960.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_4.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Нравится? Мы довольны получившимся результатом.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Дневники разработки ReflectRP. Volumetric Clouds для MTA." width="950" height="534" src="https://www.youtube.com/embed/MbQiV6EPY4A?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p>Не обошлось и без забавных багов</p>



<figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="984" height="362" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_1.png" alt="" class="wp-image-270" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_1.png 984w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_1-300x110.png 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_1-768x283.png 768w" sizes="(max-width: 984px) 100vw, 984px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="543" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_3-1024x543.png" alt="" class="wp-image-271" srcset="https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_3-1024x543.png 1024w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_3-300x159.png 300w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_3-768x408.png 768w, https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_3.png 1140w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>В сочетании с атмосферным рассеиванием, о котором мы рассказывали во второй части дневников, получается вот такая красота:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Дневники разработки. Облака + цикл дня и ночи (MTA)" width="950" height="534" src="https://www.youtube.com/embed/fJa6dcvYj8E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Оптимизация</h2>



<p>Оптимизация охватывает огромнейшее количество аспектов. Но сейчас расскажем только об одной оптимизации, которая называется Occlusion culling.</p>



<p>Это технология, которая позволяет не рисовать на экране те объекты, которые скрыты другими объектами.</p>



<p>В GTA SA эта технология также используется, но она там реализована на достаточно примитивном уровне, из-за чего её нельзя использовать для слишком большого количества объектов, иначе это может вызвать заметное падение производительности. Не говоря уже о том, что там все перекрывающие плоскости нужно расставлять вручную.</p>



<p>Так как у нас модели значительно более «тяжёлые» и сложные, использование такой оптимизации становится весьма критичным. Поэтому мы сделали свою версию оптимизации, где идёт автоматический расчёт размеров видимых объектов и если они занимают больше определённой площади на экране, то для них включается occlusion culling и все объекты, которые находятся за ними, перестают рисоваться.</p>



<p>Небольшая демонстрация:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Дневники разработки ReflectRP. Occlusion Culling" width="950" height="713" src="https://www.youtube.com/embed/LY6QBexeGO4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div><figcaption class="wp-element-caption">Продвинутая реализация Occlusion Culling.</figcaption></figure>



<p>Здесь красные боксы показывают границы объектов, которые были исключены из рисования на экране алгоритмом occlusion culling&#8217;а.</p>



<p>На сегодня всё, увидимся в следующей части!</p>



<figure class="wp-block-video"><video controls src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/кондиционер-cut.mp4"></video></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.reflectrp.ru/ru/reflectrp-render-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://blog.reflectrp.ru/wp-content/uploads/2022/11/кондиционер-cut.mp4" length="348333" type="video/mp4" />

			</item>
		<item>
		<title>История разработки нашего рендера #3</title>
		<link>https://blog.reflectrp.ru/ru/reflectrp-render-3/</link>
					<comments>https://blog.reflectrp.ru/ru/reflectrp-render-3/#respond</comments>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Sat, 25 Dec 2021 20:09:03 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=225</guid>

					<description><![CDATA[Хотя статьи и выходят под названием «история разработки нашего рендера», здесь мы рассказываем не только о работе над непосредственно рендером, но и о работе над другими аспектами клиента игры, так что не удивляйтесь. Можете воспринимать это просто как дневники разработки. Отражения и PBR Не раз мы читали под нашими скриншотами сообщения вроде «в MTA/GTA SA &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/ru/reflectrp-render-3/" class="more-link">Читать далее<span class="screen-reader-text"> "История разработки нашего рендера #3"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<p>Хотя статьи и выходят под названием «история разработки нашего рендера», здесь мы рассказываем не только о работе над непосредственно рендером, но и о работе над другими аспектами клиента игры, так что не удивляйтесь. Можете воспринимать это просто как дневники разработки.</p>



<h2 class="wp-block-heading">Отражения и PBR</h2>



<p>Не раз мы читали под нашими скриншотами сообщения вроде «в MTA/GTA SA нет отражений». Да, таких отражений, как у нас — нет&nbsp;<em>(хотя и в GTA SA есть, например, зеркала и зеркальный пол)</em>. Но у нас всё достаточно серьёзно переработано и мы сделали Screen Space Reflections&nbsp;<em>(к слову, на первой версии рендера такие отражения было бы сделать очень и очень проблематично, если вообще возможно)</em>.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="576" data-id="228"  src="https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr1-1-1024x576.jpg" alt="" class="wp-image-228" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr1-1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr1-1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr1-1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr1-1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr1-1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Отражения на не настроенной сцене</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="576" data-id="229"  src="https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr2-1-1024x576.jpg" alt="" class="wp-image-229" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr2-1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr2-1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr2-1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr2-1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/12/ssr2-1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption>Сцена всё ещё не настроена, но уже добавлено несколько источников освещения</figcaption></figure>
</figure>



<p>На этих ранних скриншотах сцена не настроена (нет источников освещения, не учитывается окружение), а также видны мелкие артефакты (мелкие квадратики) на поверхностях — это из-за того, что текстуры нормалей сжаты, а поддержку сжатия в рендер на тот момент ещё не добавили. Но в целом, отражения достаточно хорошо видны.</p>



<p><em>Немного технических подробностей. До этого нормали сжимались алгоритмом DXT5, как и обычные текстуры. Но у такого вида сжатия не хватает точности для хранения нормали. Поэтому мы добавили поддержку BC5 (по сути, это два совмещенных DXT3), которая сильно повышает точность и нормали выглядят корректно.</em></p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1920" height="1200" data-id="234"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/pool1.png" alt="" class="wp-image-234"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1920" height="1200" data-id="235"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/pool2.png" alt="" class="wp-image-235"/></figure>
<figcaption class="blocks-gallery-caption">Сцена всё ещё не настроена, но отражения теперь учитывают окружение.</figcaption></figure>



<p>А вот более поздний вариант — добавлена поддержка сжатия, вследствие чего исчезли артефакты на поверхностях, а также в отражения добавлен учёт окружения, благодаря чему сцена стала выглядеть заметно лучше.</p>



<p>Если присмотреться внимательнее ко второму скриншоту, то на полотенцах можно заметить графические артефакты в виде небольших светлых горизонтальных полосочек:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="799" height="682" data-id="230"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/artifacts.png" alt="" class="wp-image-230"/></figure>
<figcaption class="blocks-gallery-caption">Медузы из GTA SA прорываются в реальность ReflectRP</figcaption></figure>



<p>Забавно, но это не баги графического движка, как можно было бы подумать. На самом деле это медузы, которых вы наверняка не раз видели под водой в GTA SA <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>А это — тестовая сцена, на которой хорошо виден результат PBR. Все эти потёртости на металле в динамике выглядят ещё круче!</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1920" height="1200" data-id="237"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/station1.png" alt="" class="wp-image-237"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1920" height="1200" data-id="238"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/station2.png" alt="" class="wp-image-238"/></figure>
<figcaption class="blocks-gallery-caption">PBR, тестовая сцена</figcaption></figure>



<p>Помните, как эта сцена выглядела в предыдущей статье? Ну вот, добавили отражения, расставили несколько источников света и сцена заметно преобразилась, не правда ли? И стоит заметить, что это — далеко не самый лучший результат, который можно получить.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-9 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1920" height="1200" data-id="236"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/ssr3.png" alt="" class="wp-image-236"/></figure>
<figcaption class="blocks-gallery-caption">Финальный вариант SSR отражений</figcaption></figure>



<p>А это уже более-менее финальный вариант отражений. Сцена не настроена и отражения специально выкручены «на максимум», чтобы их можно было лучше рассмотреть.</p>



<p>Зернистость отражений — характерная особенность SSR. Кстати, эту зернистость можно заметить на многих наших скриншотах, достаточно увеличить изображение на каком-нибудь отражении.</p>



<p>Чтобы полностью избавиться от этой зернистости, нужно использовать рейтрейсинг. У нас его ещё нет, но он запланирован в отдалённом будущем (увы, цены на RTX видеокарты как-то не способствуют активному развитию в этом направлении).</p>



<h2 class="wp-block-heading">Ландшафт</h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-11 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1920" height="1200" data-id="240"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/terrain2.png" alt="" class="wp-image-240"/></figure>
<figcaption class="blocks-gallery-caption">Тестовая сцена. Графические артефакты — не наша заслуга, так оно в оригинале и было.</figcaption></figure>



<p>Обычный путь, который используется для создания ландшафтов для GTA SA — это моделирование в каком-то редакторе (3ds Max, Blender и т.п.), затем нарезка его на части размером не более 256×256 метров и после — перенос этих мешей в игру. И при необходимости внесения любого изменения весь этот процесс нужно повторять снова и снова. В общем, сложно, долго, жутко неудобно и запросто может приводить ко всяким проблемам вроде зазоров между кусками ландшафта, провалам, невидимым стенам и другим проблемам, которые могут добавить большое количество головной боли.</p>



<p>Мы решили пойти другим путём и создать собственную систему ландшафта, которая не будет ограничена в размерах (да, можно делать хоть тысячу на тысячу километров), легко поддаётся изменениям, слабо нагружает систему и удобна для моделлеров. Сказано — сделано!</p>



<p>За основу ландшафтной системы мы взяли то, как реализован ландшафт в Unreal Engine. Фактически, наша система полностью воспроизводит результат, созданный в UE. Впрочем, это касается не только ландшафта — мы уже упоминали, что активно используем UE для разработки проекта&nbsp;<em>(в частности, настраиваем в нём все материалы, освещение, отражения, компонуем карту и т.п., но об этом расскажем как-нибудь в другой раз)</em>. В своём проекте мы полностью пытаемся повторить ту картинку, которую выдаёт Unreal Engine и, как видно по скриншотам в группе, отлично справляемся с этой задачей.</p>



<p>Пример, на котором созданный в UE ландшафт один к одному воспроизводится в MTA (небольшая разница в цвете обусловлена освещением). И наша система поддерживает почти все возможности, которые есть у ландшафта UE.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-13 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="3840" height="1200" data-id="239"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/terrain.jpg" alt="" class="wp-image-239"/></figure>
<figcaption class="blocks-gallery-caption">Перенос ландшафта из UE в MTA. Тестовая сцена. Размер этого ландшафта — 4×4 км.</figcaption></figure>



<p>Стандартная система GTA SA для физики использует коллизии, сохранённые в col файлах. Также она используется для того, чтобы задавать различные свойства поверхностей: внешний вид (где растёт трава, например), звуки, тени, а так же определяет, видим ли объект на экране.</p>



<p>Для того, чтобы динамически создавать ландшафт, нам пришлось модифицировать эту систему, чтобы была возможность создавать коллизии «на лету», причём, произвольного размера, не ограничиваясь максимальными для GTA SA 256×256 метров&nbsp;<em>(это не совсем верно, так как и в стандартной GTA SA можно использовать гораздо более крупные коллизии, но вряд ли можно рекомендовать это делать, потому что как раз за счёт этой «нарезки» производится значительная часть оптимизации)</em>.</p>



<p>Более того, мы прикрутили современный физический движок к ландшафту, что дало нам многопоточность в обработке столкновений с ландшафтом, возможность динамически менять ландшафт (в том числе, копать ямы, например) и некоторые другие вещи, о которых мы расскажем в будущем.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-15 is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1920" height="1200" data-id="241"  src="https://blog.reflectrp.ru/wp-content/uploads/render3/terrain3.png" alt="" class="wp-image-241"/></figure>
<figcaption class="blocks-gallery-caption">Тестовая сцена. Для расчёта столкновений используется сторонняя физика. Да, это 14 миллионов треугольников (не спрашивайте, просто не спрашивайте :D) при 70 FPS (сцена не оптимизирована, да)</figcaption></figure>



<p>Сам ландшафт рисуется небольшими частями с разным качеством — те, что ближе, рисуются с максимальной детализацией, и чем дальше от камеры, тем ниже качество. Называется эта технология Continuous Geo-MipMap LOD.</p>



<p>В специальном отладочном режиме хорошо видна полигональная сетка ландшафта.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Дневники разработки ReflectRP. Система динамического ландшафта для MTA #1" width="950" height="534" src="https://www.youtube.com/embed/j-GVY27mFAo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div><figcaption>Continuous Geo-MipMap LOD. Рекомендуется смотреть в 4K, даже если разрешение экрана ниже.</figcaption></figure>



<p>Тут уже добавлено плавное смешивание разных уровней LOD&#8217;ов, что даёт превосходный конечный результат.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Дневники разработки ReflectRP. Система динамического ландшафта для MTA #2" width="950" height="534" src="https://www.youtube.com/embed/379Rva-ruH8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div><figcaption>Continuous Geo-MipMap LOD. Рекомендуется смотреть в 4K, даже если разрешение экрана ниже.</figcaption></figure>



<h2 class="wp-block-heading">GUI</h2>



<p>Из-за способа, который мы применили, чтобы перевести игру на DirectX11/12, мы не могли использовать обычные GUI системы для MTA, так как это очень сильно снижает производительность в нашем случае. Нам требовалось интегрированное непосредственно в клиент игры решение, напрямую работающее с DirectX11/12. Мы проверили множество доступных вариантов и остановились на совершенно нетипичном для GTA SA решении — NoesisGUI.</p>



<p>Это современное продвинутое GUI, основанное на XAML, поддерживающее векторную графику, сложные анимации, темы и многое другое. А самое интересное — интерфейсы строятся не непосредственно в коде игры, а в специальных конфиг-файлах. Это значит, что изменение и создание новых интерфейсов значительно упрощается. А проверять их работоспособность можно даже в браузере, не запуская игру.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Дневники разработки ReflectRP. MTA + NoesisGUI" width="950" height="534" src="https://www.youtube.com/embed/AnbaHkp7jfg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div><figcaption>MTA + NoesisGUI (официальные примеры от NoesisGUI)</figcaption></figure>



<p>Подключение NoesisGUI к MTA заняло всего несколько дней, а вот интеграция с Lua потребовала значительно больше времени. Всего на это ушёл примерно месяц.</p>



<p>Только не просите нас сейчас показывать наши интерфейсы <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Покажем, когда будем готовы <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>На сегодня, пожалуй, всё! Увидимся в следующей части!</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.reflectrp.ru/ru/reflectrp-render-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>История разработки нашего рендера #2</title>
		<link>https://blog.reflectrp.ru/ru/reflectrp-render-2/</link>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Sun, 28 Nov 2021 07:43:06 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=155</guid>

					<description><![CDATA[Версия вторая, которую мы разрабатываем для нашего проекта ReflectRP. Для того, чтобы избежать потенциальных проблем с бывшим работодателем, ReflectRP было решено делать полностью с нуля, не используя ничего из того, что мы делали для RPBOX. Это же касается и системы рендера. Запланировали использовать систему с совершенно другим подходом, а заодно получить несравнимо более качественный результат. &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/ru/reflectrp-render-2/" class="more-link">Читать далее<span class="screen-reader-text"> "История разработки нашего рендера #2"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Версия вторая, которую мы разрабатываем для нашего проекта ReflectRP.</h2>



<p>Для того, чтобы избежать потенциальных проблем с бывшим работодателем, ReflectRP было решено делать полностью с нуля, не используя ничего из того, что мы делали для RPBOX. Это же касается и системы рендера. Запланировали использовать систему с совершенно другим подходом, а заодно получить несравнимо более качественный результат.</p>



<p>Как известно, GTA SA работает на DirectX 9, который был выпущен в далёком 2002 году. Естественно, что за эти почти 19 лет, прошедшие с того момента, появилось множество технологий — как программных, так и аппаратных, — дающих множество преимуществ как разработчикам, так и простым пользователям.</p>



<p>Поэтому первым делом мы перевели GTA SA на DirectX 11/12. Хотя это и звучит так просто, работа была проделана огромнейшая (что заняло где-то в районе полугода работы), так как вся MTA «заточена» под DX9. То есть, если переключить игру на DX11/12, то почти весь функционал MTA, связанный с графикой, перестанет работать и нет какого-то простого эффективного способа обойти эту проблему. Однако, мы успешно справились с этой задачей, что позволило нам сделать кучу оптимизаций, использовать современные средства разработки и получить качественный результат. А некоторые вещи без этого было бы сделать вообще невозможно.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-17 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug.jpg"><img decoding="async" loading="lazy" width="1024" height="586" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug-1024x586.jpg" alt="" data-id="156" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=156" class="wp-image-156" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug-1024x586.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug-300x172.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug-768x440.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug-1536x879.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/debug.jpg 1897w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Современные средства отладки графики на службе у GTA SA</figcaption></figure>



<p>Например, у нас очень низкое потребление памяти игрой, ведь теперь в полной мере используются все возможности видеопамяти — нет необходимости дублировать модели и текстуры в основной памяти.</p>



<h2 class="wp-block-heading">Тени</h2>



<p>После перехода на DX11/12 мы начали работу над тенями. Сначала это просто чёрные пятна</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-19 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1-1024x576.jpg" alt="" data-id="160" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=160" class="wp-image-160" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3-1024x576.jpg" alt="" data-id="161" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=161" class="wp-image-161" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows1_3.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul></figure>



<p>к которым позже добавляется прозрачность</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-21 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2-1024x576.jpg" alt="" data-id="163" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=163" class="wp-image-163" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_2.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1-1024x576.jpg" alt="" data-id="162" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=162" class="wp-image-162" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Shadows2_1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul></figure>



<p>это самые ранние скриншоты, но даже здесь видно, что тени более качественные, чем в первой версии рендера.</p>



<p><em>Если кому-то интересны технические подробности, то тени уже на тот момент поддерживали до восьми каскадов (в предыдущей версии было максимум четыре), сглаживание швов, сглаживание PCF с различными настройками зерна, алгоритмы подстраивания и оптимизации каскадов для наилучшего соотношения пикселей теневой карты на растеризуемый тексель, а также возможность выбирать различные типы теневых карт, в зависимости от возможностей железа.</em></p>



<h2 class="wp-block-heading">Небо</h2>



<p>Следующим шагом стала работа над небом.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-23 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2-1024x576.jpg" alt="" data-id="164" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=164" class="wp-image-164" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox2.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul></figure>



<p>Пока что базовым — без облаков, солнца, луны и звёзд. Казалось бы, а что в таком случае там ещё осталось? Всё очень просто — осталась атмосфера. В зависимости от времени суток у нас корректно рассчитывается цвет неба и атмосферное рассеивание света.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-25 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3-1024x576.jpg" alt="" data-id="165" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=165" class="wp-image-165" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/Skybox3.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Атмосферное рассеивание</figcaption></figure>



<p>Кто-то из вас наверняка видел подобное небо в Unreal Engine или Unity, либо в играх, сделанных на этих движках (есть даже те, кто думал, что скрины с одного из этих движков, видя такое небо). А кто-то скажет:&nbsp;<em>«просто какой-то туман, чего такого?»</em>. Но нет, это не простой туман. Вот пара картинок из интернета, показывающих, что даёт атмосферное рассеивание:</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-27 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_1.jpg"><img decoding="async" loading="lazy" width="800" height="507" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_1.jpg" alt="" data-id="166" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_1.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=166" class="wp-image-166" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_1.jpg 800w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_1-300x190.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_1-768x487.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_2.jpg"><img decoding="async" loading="lazy" width="1024" height="466" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_2-1024x466.jpg" alt="" data-id="167" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_2.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=167" class="wp-image-167" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_2-1024x466.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_2-300x137.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_2-768x350.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/atm_sc_2.jpg 1403w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Атмосферное рассеивание. Изображение с просторов интернета</figcaption></figure>



<p>Красота, не правда ли? Вот и у нас это будет, когда завершим работу*.</p>



<p><em>*Хотя мы стараемся рассказывать о проделанной работе в хронологическом порядке, на момент публикации данной статьи атмосферное рассеивание всё ещё не закончено до конца — требуются кое-какие доработки и настройка, чем мы будем заниматься уже ближе к открытию проекта, а потому подобных скриншотов именно с нашей карты в ближайшее время ждать не следует.</em></p>



<h2 class="wp-block-heading">PBR</h2>



<p>Следующий шаг — добавление PBR, физически корректного рендеринга. Это современный стандарт, позволяющий получить фотореалистичное изображение: металл будет выглядеть металлом, стекло — стеклом, кожа — кожей, дерево — деревом и т.п. То есть, этот стандарт позволяет достоверно воспроизводить оптические свойства поверхностей.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-29 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04-1024x576.jpg" alt="" data-id="159" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=159" class="wp-image-159" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_04.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02-1024x576.jpg" alt="" data-id="157" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=157" class="wp-image-157" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/may_02.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1-1024x576.jpg" alt="" data-id="168" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=168" class="wp-image-168" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="blocks-gallery-item__caption">Интерьеры на этой стадии смотрятся хуже из-за отсутствия сглаживания, источников света и отражений.</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2-1024x576.jpg" alt="" data-id="169" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=169" class="wp-image-169" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="blocks-gallery-item__caption">Интерьеры на этой стадии смотрятся хуже из-за отсутствия сглаживания, источников света и отражений.</figcaption></figure></li></ul></figure>



<p>Уличные сцены даже без пост-обработки выглядят неплохо, не правда ли? Если бы здесь было самозатенение (Ambient Occlusion) и сглаживание, то было бы уже почти то же самое, что на скриншотах, которые вы видели в группе. А вот интерьеры на этой стадии смотрятся заметно хуже из-за отсутствия сглаживания, настроенных источников света и отражений.</p>



<h2 class="wp-block-heading">Производительность</h2>



<p>С учётом того, что модели на нашей карте проработаны гораздо детальнее, чем в других проектах, основанных на GTA SA, объёмы ресурсов выходят на совершенно другой уровень. И, разумеется, что игра просто не может справиться с такими объёмами данных.</p>



<p>Чтобы всё работало, нам пришлось также существенно переработать множество вещей в GTA SA и MTA. Например, мы используем собственные форматы моделей и текстур.</p>



<p>Существующий инструментарий для GTA SA/MTA также непригоден для работы над проектом нашего уровня — для этого нам пришлось адаптировать современные инструменты и разрабатывать свои собственные. И это тоже огромный объём работы. Возможно, что обо всём этом мы также когда-нибудь расскажем.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-31 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/station.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/station-1024x576.jpg" alt="" data-id="170" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/station.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=170" class="wp-image-170" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/station-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/station-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/station-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/station-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/station.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Тестовая сцена. Почти три миллиона треугольников при средних 100 FPS</figcaption></figure>



<p>Почти три миллиона треугольников при средних 100 FPS. Как уже говорилось, на данной стадии разработки, сцены в интерьерах выглядят невзрачно из-за отсутствия сглаживания, настроенных источников света и отражений (ну и мы решили не тратить время, расставляя и настраивая источники света в тестовых сценах — даже не думали, что кто-то кроме нас увидит эти скриншоты).</p>



<h2 class="wp-block-heading">Ambient Occlusion и сглаживание</h2>



<p>Следующим этапом у нас шла работа над самозатенением (Ambient Occlusion) и сглаживанием. Для разных по мощности компьютеров делается несколько разных алгоритмов — быстрые, но с менее качественным результатом, и медленные, но с отличным качеством.</p>



<p><em>Если интересны технические подробности, то на момент написания статьи для сглаживания поддерживаются SMAA 1x, SMAA 1x + TSSAA и SMAA 4x, а для Ambient Occlusion — SSAO, HBAO и Alchemy AO.</em></p>



<p>Но прямо на этом этапе разработки нашей системы рендера реализовывались только самые базовые алгоритмы.</p>



<p>Результат простого сглаживания:</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-33 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1-1024x576.jpg" alt="" data-id="171" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=171" class="wp-image-171" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2-1024x576.jpg" alt="" data-id="172" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=172" class="wp-image-172" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa2.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Результат работы простого алгоритма сглаживания</figcaption></figure>



<p>А это результат работы базового алгоритма самозатенения:</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-35 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1-1024x576.jpg" alt="" data-id="173" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=173" class="wp-image-173" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2-1024x576.jpg" alt="" data-id="174" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=174" class="wp-image-174" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao2.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3-1024x576.jpg" alt="" data-id="175" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=175" class="wp-image-175" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/ao3.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul><figcaption class="blocks-gallery-caption">Результат работы самого простого алгоритма Ambient Occlusion</figcaption></figure>



<p>Затем полученное изображение используется при рисовании финальной картинки: белый цвет остаётся без изменений, а тёмный как раз добавляет затенение.</p>



<p>Совмещаем самозатенение и сглаживание, что значительно улучшает результат:</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-37 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1-1024x576.jpg" alt="" data-id="176" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=176" class="wp-image-176" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_1.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2-1024x576.jpg" alt="" data-id="177" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2.jpg" data-link="https://blog.reflectrp.ru/?attachment_id=177" class="wp-image-177" srcset="https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2-1024x576.jpg 1024w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2-300x169.jpg 300w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2-768x432.jpg 768w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2-1536x864.jpg 1536w, https://blog.reflectrp.ru/wp-content/uploads/2021/11/aa_ao_2.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></li></ul></figure>



<h2 class="wp-block-heading">Что было дальше?</h2>



<p>Позже мы добавляли более качественные алгоритмы самозатенения и сглаживания, вели серьёзную работу над динамическим освещением, прозрачными объектами, отражениями, тесселяцией и многим другим, но об этом мы расскажем в следующих частях.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>История разработки нашего рендера #1</title>
		<link>https://blog.reflectrp.ru/ru/reflectrp-render-1/</link>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Sat, 27 Nov 2021 05:32:15 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=1</guid>

					<description><![CDATA[Версия первая, которую наша команда разрабатывала для RPBOX. Разработка собственного рендера началась в конце 2019 года, когда наша команда работала над RPBOX. Руководство проекта не хотело тратить время на что-то, что не приносит деньги, поэтому разработкой рендера мы тогда занялись по собственной инициативе, в свободное время — вечерами и по выходным дням. И только увидев &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/ru/reflectrp-render-1/" class="more-link">Читать далее<span class="screen-reader-text"> "История разработки нашего рендера #1"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Версия первая, которую наша команда разрабатывала для RPBOX.</h3>



<p>Разработка собственного рендера началась в конце 2019 года, когда наша команда работала над RPBOX. Руководство проекта не хотело тратить время на что-то, что не приносит деньги, поэтому разработкой рендера мы тогда занялись по собственной инициативе, в свободное время — вечерами и по выходным дням. И только увидев первые результаты, руководство одобрило постоянную работу в этом направлении.</p>



<p>Чтобы не было недопонимания, данный рендер — не ENB. Это гораздо более сложная работа. Если вкратце, то мы полностью отключили ту часть GTA SA, которая отвечает за отображение игры и вместо этого сделали свою собственную систему.</p>



<p>Сначала мы хотели просто добавить тени и качественные отражения.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-39 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/1.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/1.jpg" alt="" data-id="20" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/1.jpg" data-link="https://blog.reflectrp.ru/1/" class="wp-image-20"/></a><figcaption class="blocks-gallery-item__caption">Самая первая версия теней и отражений</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/2.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/2.jpg" alt="" data-id="31" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/2.jpg" data-link="https://blog.reflectrp.ru/2/" class="wp-image-31"/></a><figcaption class="blocks-gallery-item__caption">На прозрачных текстурах тени также работали корректно</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/3.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/3.jpg" alt="" data-id="41" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/3.jpg" data-link="https://blog.reflectrp.ru/3/" class="wp-image-41"/></a><figcaption class="blocks-gallery-item__caption">Глянцевые колёса и отсутствие сглаживания — работы предстояло ещё очень много…</figcaption></figure></li></ul></figure>



<p>Под качественными отражениями подразумевается, что в них отражается именно то, что в данный момент находится вокруг и даже то, что находится за пределами экрана.</p>



<p>Затем добавили Ambient Occlusion (самозатенение близко располагающихся поверхностей):</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-41 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/4.jpg"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/render1/4.jpg" alt="" data-id=""/></a></figure></li></ul><figcaption class="blocks-gallery-caption">Первая версия Ambient Occlusion, без сглаживания</figcaption></figure>



<p>После этого добавили возможность корректировки гаммы и палитры, чтобы реализовать разную картинку в зависимости от времени суток.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-43 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/5.jpg"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/render1/5.jpg" alt="" data-id=""/></a></figure></li></ul><figcaption class="blocks-gallery-caption">GTA SA с палитрой одной из частей Just Cause</figcaption></figure>



<p>Дальше следовал многократный процесс настройки визуальной части.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-45 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/6.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/6.jpg" alt="" data-id="44" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/6.jpg" data-link="https://blog.reflectrp.ru/6/" class="wp-image-44"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/7.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/7.jpg" alt="" data-id="45" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/7.jpg" data-link="https://blog.reflectrp.ru/7/" class="wp-image-45"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/8.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/8.jpg" alt="" data-id="46" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/8.jpg" data-link="https://blog.reflectrp.ru/8/" class="wp-image-46"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/9.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/9.jpg" alt="" data-id="47" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/9.jpg" data-link="https://blog.reflectrp.ru/9/" class="wp-image-47"/></a></figure></li></ul></figure>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-47 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/10.jpg"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/render1/10.jpg" alt="" data-id=""/></a></figure></li></ul><figcaption class="blocks-gallery-caption">Вариант со скайбоксом</figcaption></figure>



<p>В 2020-м году подключили это всё к RPBOX, а также начали заниматься настройкой транспорта на нём</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-49 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/11.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/11.jpg" alt="" data-id="22" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/11.jpg" data-link="https://blog.reflectrp.ru/11/" class="wp-image-22"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/12.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/12.jpg" alt="" data-id="23" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/12.jpg" data-link="https://blog.reflectrp.ru/12/" class="wp-image-23"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/13.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/13.jpg" alt="" data-id="24" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/13.jpg" data-link="https://blog.reflectrp.ru/13/" class="wp-image-24"/></a></figure></li></ul><figcaption class="blocks-gallery-caption"> Настройка на карте RPBOX </figcaption></figure>



<p>и постепенно пришли к чему-то такому:</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-51 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/14.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/14.jpg" alt="" data-id="25" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/14.jpg" data-link="https://blog.reflectrp.ru/14/" class="wp-image-25"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/15.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/15.jpg" alt="" data-id="26" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/15.jpg" data-link="https://blog.reflectrp.ru/15/" class="wp-image-26"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/16.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/16.jpg" alt="" data-id="27" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/16.jpg" data-link="https://blog.reflectrp.ru/16/" class="wp-image-27"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/17.jpg"><img decoding="async" loading="lazy" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/17.jpg" alt="" data-id="28" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/17.jpg" data-link="https://blog.reflectrp.ru/17/" class="wp-image-28"/></a></figure></li></ul></figure>



<p>Позже было реализовано сглаживание, шикарное небо, PBR, динамические тени, планарные отражения и некоторые другие вещи</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-53 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/18.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/18.jpg" alt="" data-id="29" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/18.jpg" data-link="https://blog.reflectrp.ru/18/" class="wp-image-29"/></a><figcaption class="blocks-gallery-item__caption">Отражения, динамические тени от фар</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/19.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/19.jpg" alt="" data-id="30" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/19.jpg" data-link="https://blog.reflectrp.ru/19/" class="wp-image-30"/></a><figcaption class="blocks-gallery-item__caption">Динамические источники света (в данном случае без теней)</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/20.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/20.jpg" alt="" data-id="32" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/20.jpg" data-link="https://blog.reflectrp.ru/20/" class="wp-image-32"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/21.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/21.jpg" alt="" data-id="33" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/21.jpg" data-link="https://blog.reflectrp.ru/21/" class="wp-image-33"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/22.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/22.jpg" alt="" data-id="34" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/22.jpg" data-link="https://blog.reflectrp.ru/22/" class="wp-image-34"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/23.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/23.jpg" alt="" data-id="35" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/23.jpg" data-link="https://blog.reflectrp.ru/23/" class="wp-image-35"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/24.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/24.jpg" alt="" data-id="36" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/24.jpg" data-link="https://blog.reflectrp.ru/24/" class="wp-image-36"/></a><figcaption class="blocks-gallery-item__caption">PBR, отражения люстр и источников света</figcaption></figure></li></ul></figure>



<p>Увы, стёкла зарелизить не успели, так как в проект вернулся Никита и мы всей командой ушли. А вы просто посмотрите на эту красоту:</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/render1/25.jpg" alt=""/><figcaption>Стёкла так и не были релизнуты</figcaption></figure>



<p>Там же решалась проблема всех прозрачных материалов: больше не было проблем с окантовкой вокруг крон деревьев, прозрачностью стёкол в транспорте и т.п.</p>



<p>В тот момент из более-менее крупных вещей, которые оставались не завершены, оставалась только вода.</p>



<p>На этом история первой версии рендера завершена, так как для ReflectRP мы не стали брать никакие свои наработки и начали работу полностью с нуля, о чём расскажем в следующей части.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="First version of the our render engine we did for RPBOX project." width="950" height="713" src="https://www.youtube.com/embed/8hUfQ3Oc9gI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div><figcaption>Это не финальная версия, но получить представление можно</figcaption></figure>



<p>В заключение, примеры забавных багов, которые вылезали в процессе работы над первой версией рендера.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-55 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/26.jpg"><img decoding="async" loading="lazy" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/26.jpg" alt="" data-id="38" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/26.jpg" data-link="https://blog.reflectrp.ru/26/" class="wp-image-38"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/27.jpg"><img decoding="async" loading="lazy" width="1920" height="1080" src="https://blog.reflectrp.ru/wp-content/uploads/render1/27.jpg" alt="" data-id="39" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/27.jpg" data-link="https://blog.reflectrp.ru/27/" class="wp-image-39"/></a></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/28.jpg"><img decoding="async" loading="lazy" width="1920" height="1080" src="https://blog.reflectrp.ru/wp-content/uploads/render1/28.jpg" alt="" data-id="40" data-full-url="https://blog.reflectrp.ru/wp-content/uploads/render1/28.jpg" data-link="https://blog.reflectrp.ru/28/" class="wp-image-40"/></a></figure></li></ul></figure>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
