<?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 &#8211; ReflectRP Blog</title>
	<atom:link href="https://blog.reflectrp.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 19:03:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.2</generator>
	<item>
		<title>Development history of our render #4</title>
		<link>https://blog.reflectrp.ru/reflectrp-render-4-en/</link>
					<comments>https://blog.reflectrp.ru/reflectrp-render-4-en/#respond</comments>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Fri, 04 Nov 2022 19:01:37 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=275</guid>

					<description><![CDATA[We continue to talk about how we achieved the result that you have seen many times in our screenshots, as well as about what else was added to the game client besides graphics. Reflections In the last part, we talked about SSR reflections &#8211; reflections that work exclusively with the information that is currently on &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/reflectrp-render-4-en/" class="more-link">Read more<span class="screen-reader-text"> "Development history of our render #4"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<p>We continue to talk about how we achieved the result that you have seen many times in our screenshots, as well as about what else was added to the game client besides graphics.</p>



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



<p>In the last part, we talked about SSR reflections &#8211; reflections that work exclusively with the information that is currently on the screen. It is for this reason that such reflections &#8220;disappear&#8221; if the camera looks down at a strong angle &#8211; there is not enough information on the screen to build a full-fledged reflection.</p>



<p>But they are not the only ones used in the game. For example, when we approach a metal post, we want it to reflect what is around us &#8211; even what is beyond our visibility (behind our back, for example). To do this, the game must put the camera in place of this column, and then make a “capture” of the image of everything that is around and subsequently it is this “captured” image that is used to draw the reflection. A kind of reflection map.</p>



<p>In order for the game to know where to create such reflection maps, special markers are placed in the editor, called Sphere Reflection Capture and Box Reflection Capture. In most cases, for example, spheres are used, and boxes are used in rooms.</p>



<p>This is what these spheres look like in our MTA client</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_4.jpg" alt=""/></figure>



<p>Their main purpose in these places is reflections in the glass of the shopping center.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_1.jpg" alt=""/></figure>



<p>In the glass, you can see the reflection of houses that are out of sight. They lookd odd because the reflection quality settings are low and blur is also turned off.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/reflections_3.jpg" alt=""/></figure>



<p>And this is an example with columns. You can see red shades in them &#8211; this is the reflection of anearby shopping center.</p>



<p>Apart from the fact that these reflections allow you to show what is off the screen, they are also less demanding on computing power (especially static reflections).</p>



<p>The difficulty that we encountered in their implementation is that such reflections for optimization are built either very rarely, or even only once. But then they do not take into account the sky (time of day, color of the sky, etc.). I had to think carefully to combine all this together and at the same time not lose performance.</p>



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



<p>After we decided to use Unreal Engine as the map editor, we also thought about adding to the MTA some of the features that are widely used in UE and make life much easier for modelers / level designers.</p>



<p>One such feature is splines. After all, it is very convenient when you can put several points and between them, for example, a fence, rails, a road or a hanging wire will be automatically built.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_1-scaled.jpg" alt=""/><figcaption class="wp-element-caption">Test spline in the editor (UE) and also in MTA.</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/spline_2.jpg" alt=""/></figure>



<p>This feature is actively used, for example, for roads and wires (screenshots from later stages of development):</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_1.jpg" alt=""/><figcaption class="wp-element-caption">An example of using a spline for a dirt road (screenshot from later stages of development)</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_2.jpg" alt=""/><figcaption class="wp-element-caption">An example of using a spline for hanging wires (a screenshot from a later stage of development)</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/example_3.jpg" alt=""/><figcaption class="wp-element-caption">An example of using a spline for a road and wires (a screenshot from a later stage of development)</figcaption></figure>



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



<p>For weak computers, we just use a high-quality skybox (similar to what we did for RPBOX), but for owners of powerful hardware, we decided to make real dynamic volumetric clouds.</p>



<p>To do this, we considered various options, including ready-made solutions, like trueSky, but in the end we decided to make our own implementation, close in image quality and capabilities to Unreal Engine clouds.</p>



<p>This job took almost a month.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_2.jpg" alt=""/></figure>



<p>The tall window is a list of cloud settings. All these parameters are controlled by the weather system, which we will discuss in one of the following articles.</p>



<p>And these are the clouds with the correct tonemapping and post-processing:</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/clouds_4.jpg" alt=""/></figure>



<p>Like it? We are pleased with the result.</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 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>Not without &#8216;interesting&#8217; bugs</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_1.png" alt=""/></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/cloud_3.png" alt=""/></figure>



<p>Combined with atmospheric dispersion, which we talked about in the second part of the diaries, this is the beauty:</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 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">Optimization</h2>



<p>Optimization covers a huge number of aspects. But now we will talk about optimization, which is called Occlusion culling.</p>



<p>This is a technology that allows you not to draw on the screen those objects that are hidden by other objects.</p>



<p>GTA SA also uses this technology, but it is implemented there at a rather primitive level, which is why it cannot be used for too many objects, otherwise it can cause a noticeable performance drop. Not to mention the fact that there all the overlapping planes must be placed manually.</p>



<p>Since our models are much more “heavy” and complex, the use of such optimization becomes very critical. Therefore, we made our version of optimization, where the size of visible objects is automatically calculated, and if they occupy more than a certain area on the screen, then occlusion culling is turned on for them and all objects that are behind them stop being drawn.</p>



<p>A little demonstration:</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 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></figure>



<p>Advanced implementation of Occlusion Culling.</p>



<p>Here, the red boxes show the boundaries of the objects that were excluded from being drawn on the screen by the occlusion culling algorithm.</p>



<p>That&#8217;s all for today, see you in the next part!</p>



<figure class="wp-block-video"><video controls src="https://blog.reflectrp.ru/wp-content/uploads/2022/11/кондиционер-cut.mp4"></video></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.reflectrp.ru/reflectrp-render-4-en/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>Development history of our render # 3</title>
		<link>https://blog.reflectrp.ru/reflectrp-render-3-en/</link>
					<comments>https://blog.reflectrp.ru/reflectrp-render-3-en/#respond</comments>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Sat, 25 Dec 2021 20:26:52 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=245</guid>

					<description><![CDATA[Although the articles are published under the title &#8220;History of the development of our render&#8221;, here we talk not only about the work on the render itself but also about the work on other aspects of the game client, so do not be surprised. You can just think of it as development diaries. Reflections and &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/reflectrp-render-3-en/" class="more-link">Read more<span class="screen-reader-text"> "Development history of our render # 3"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<p>Although the articles are published under the title &#8220;History of the development of our render&#8221;, here we talk not only about the work on the render itself but also about the work on other aspects of the game client, so do not be surprised. You can just think of it as development diaries.</p>



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



<p>From time to time we read messages like &#8220;there are no reflections in MTA / GTA SA&#8221; under our screenshots. Yes, there are no such reflections as we have <em>(although in GTA SA there are, for example, mirrors and mirrored floors)</em>. But we have everything quite seriously redesigned, and we made Screen Space Reflections<em> (by the way, on the first version of the render, such reflections would be very, very problematic, if at all possible)</em>.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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>Reflections on a non-tuned scene</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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>The scene is still not set up, but several lights have already been added</figcaption></figure>
</figure>



<p>In these early screenshots, the scene is unconfigured (there are no light sources, the environment is not taken into account), and small artifacts (small squares) are visible on the surfaces &#8211; that is because the normal textures are compressed, and support for compression in the render at that time was not yet added. But in general, the reflections are quite visible.</p>



<p><em>A few technical details. Before that, the normals were compressed by using the DXT5 algorithm, just like regular textures. But this kind of compression does not have enough precision to store the normal. Therefore, we added support for BC5 (in fact, these are two combined DXT3s), which greatly increases the accuracy and the normals look correct.</em></p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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">The scene is still not set up, but the reflections now take into account the environment.</figcaption></figure>



<p>Here is a later version &#8211; added compression support, as a result of which artifacts on surfaces disappeared, and took into account the environment in reflections, thanks to which the scene began to look noticeably better.</p>



<p>If you take a closer look at the second screenshot, you will see graphic artifacts in the form of small light horizontal stripes on the towels:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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">Jellyfish from GTA SA break into reality ReflectRP</figcaption></figure>



<p>It&#8217;s funny, but these are not graphics engine bugs, as one might think. These are jellyfish, which you probably saw more than once underwater in 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>And this is a test scene where the PBR result is clearly visible. All these abrasions on the metal in the speaker look even cooler!</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 test scene</figcaption></figure>



<p>Remember what this scene looked like in the previous article? Well, we added reflections, placed several light sources, and the scene changed noticeably, didn&#8217;t it? And it is worth noting that this is far from the best result that can be achieved.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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">The final version of SSR reflections</figcaption></figure>



<p>And this is more or less the final version of the reflections. The scene is not tuned and the reflections are specially twisted &#8220;to the maximum&#8221; so that they can be better seen.</p>



<p>The graininess of the reflections is a characteristic feature of SSR. By the way, this graininess can be seen in many of our screenshots; it is enough to enlarge the image on some reflection.</p>



<p>To completely get rid of this graininess, you need to use ray tracing. We do not have it yet, but it is proposed for the distant future (alas, the prices for RTX video cards somehow do not contribute to active development in this direction).</p>



<h2 class="wp-block-heading"><strong>Landscape</strong></h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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">Test scene. Graphical artifacts are not our merit, as they were in the original.</figcaption></figure>



<p>The usual method that is used to create landscapes for GTA SA is modelling in some kind of editor (3ds Max, Blender, etc.), then slicing it into pieces no larger than 256 × 256 meters and then transferring these meshes to the game. And if you need to make any changes, this entire process must be repeated over and over again. In general, it is difficult, long, terribly inconvenient and can easily lead to all sorts of problems, like gaps between pieces of the landscape, sinkholes, invisible walls, and other problems that can cause a lot of headaches.</p>



<p>We decided to go the other way and create our landscape system, which will not be limited in size (yes, you can do even a thousand by a thousand kilometres), is easy to change, does not load the system, and is convenient for modellers. No sooner said than done!</p>



<p>As a basis for the landscape system, we took the way the landscape is implemented in the Unreal Engine. Our system completely reproduces the result created by the UE. However, this applies not only to the landscape; we have already mentioned that we actively use UE to develop the project<em> (in particular, we set up all materials, lighting, reflections in it, compose the map, etc., but we will talk about this somehow another time)</em>. In our project, we are completely trying to reproduce the picture that the Unreal Engine produces, and, as you can see from the screenshots in the group, we do an excellent job with this task.</p>



<p>An example in which a landscape created in UE is reproduced one-to-one in MTA (slight colour difference due to lighting). And our system supports almost every feature that the UE landscape has.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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">Transfer of terrain from UE to MTA. Test scene. The size of this landscape is 4 × 4 km.</figcaption></figure>



<p>The standard GTA SA system for physics uses collisions stored in col files. It is also used to set various properties of surfaces: appearance (where the grass grows, for example), sounds, shadows, and determines whether an object is visible on the screen.</p>



<p>In order to dynamically create the landscape, we had to modify this system so that it was possible to create collisions &#8220;on the fly&#8221;, and of arbitrary size, not limited to the maximum for GTA SA 256 × 256 meters <em>(this is not entirely true, as in the standard GTA SA can use much larger collisions, but it can hardly be recommended to do this because a significant part of the optimization is done precisely due to this &#8220;slicing&#8221;)</em>.</p>



<p>Moreover, we attached a modern physics engine to the landscape, which gave us multithreading in handling collisions with the landscape, the ability to dynamically change the landscape (including digging holes, for example) and some other things that we will talk about in the future.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" 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">Test scene. Third-party physics is used to calculate collisions. Yes, that&#8217;s 14 million triangles (don&#8217;t ask, please don&#8217;t ask why :D) at 70 FPS (the scene is not optimized).</figcaption></figure>



<p>The landscape itself is drawn in small parts with different qualities &#8211; those that are closer are drawn with maximum detail, and the farther from the camera, the lower the quality. This technology is called Continuous Geo-MipMap LOD.</p>



<p>In a special debug mode, the polygonal mesh of the landscape is clearly visible. It is best to watch videos in 4K quality, even if you have a much smaller screen &#8211; this will force YouTube to play videos with a higher bitrate, otherwise the picture is very blurry and all these thin lines turn into some kind of spots.</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</figcaption></figure>



<p>It has already added smooth blending of different levels of LODs, which gives an excellent result.</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</figcaption></figure>



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



<p>Due to the method that we used to transfer the game to DirectX11 / 12, we could not use the usual GUI systems for the MTA, as this greatly reduced the performance in our case. We needed a solution integrated directly into the game client, directly working with DirectX11 / 12. We checked many available options and settled on a completely atypical solution for GTA SA &#8211; NoesisGUI.</p>



<p>It is a modern and advanced XAML-based GUI that supports vectors, complex animations, themes, and more. And the most interesting thing is that interfaces are not built directly into the game code but in special config files. This means that changing and creating new interfaces is much easier. And you can check their performance even in a browser without starting the game.</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 (official examples from NoesisGUI)</figcaption></figure>



<p>It took NoesisGUI to connect to MTA only a few days, while Lua integration took significantly longer. In total, it took about a month.</p>



<p>Just don&#8217;t ask us to show our interfaces now <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;" /> We will show you when we are ready <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>For today, perhaps everything! See you in the next part of our blog!</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.reflectrp.ru/reflectrp-render-3-en/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The history of our render development #2</title>
		<link>https://blog.reflectrp.ru/reflectrp-render-2-en/</link>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Sun, 28 Nov 2021 08:36:19 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=192</guid>

					<description><![CDATA[The second version, which we are developing for our ReflectRP project. In order to avoid potential problems with the former employer, we decided to do ReflectRP completely from scratch, without using anything that we did for RPBOX. The same goes for the rendering system. We planned to use the system with a completely different approach, &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/reflectrp-render-2-en/" class="more-link">Read more<span class="screen-reader-text"> "The history of our render development #2"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">The second version, which we are developing for our ReflectRP project.</h2>



<p>In order to avoid potential problems with the former employer, we decided to do ReflectRP completely from scratch, without using anything that we did for RPBOX. The same goes for the rendering system. We planned to use the system with a completely different approach, and at the same time get an incomparably better result.</p>



<p>As you know, GTA SA runs on DirectX 9, which was released back in 2002. Naturally, over almost 19 years that have passed since that moment, many technologies &#8211; both software and hardware &#8211; have emerged that provide many benefits to both developers and ordinary users.</p>



<p>Therefore, the first thing we did was transfer GTA SA to DirectX 11/12. Although it sounds so simple, the work was enormous (which took somewhere in the region of six months of work), since the entire MTA is &#8220;sharpened&#8221; for DX9. That is, if you switch the game to DX11 / 12, then almost all the MTA functionality related to graphics will stop working and there is no simple effective way to get around this problem. However, we successfully coped with this task, which allowed us to make a bunch of optimizations, use modern development tools and get a high-quality result. And some things without this would be impossible to do at all.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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">Modern graphics debugging tools in the service of GTA SA</figcaption></figure>



<p>For example, we have a very low memory consumption of the game, because now all the possibilities of video memory are fully used &#8211; there is no need to duplicate models and textures in the main memory.</p>



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



<p>After switching to DX11 / 12, we started working on the shadows. At first it&#8217;s just black spots</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-10 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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>to which transparency is later added</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-11 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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>these are the earliest screenshots, but even here you can see that the shadows are of higher quality than in the first version of the render.</p>



<p><em><em><em>If someone is interested in technical details, the shadows already supported up to eight cascades (in the previous version there were a maximum of four), smoothing seams, smoothing PCF with different grain settings, algorithms for adjusting and optimizing cascades for the best ratio of pixels of the shadow map to the rasterized texel, as well as the ability to choose different types of shadow cards, depending on the capabilities of the hardware.</em></em></em></p>



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



<p>The next step was to work on the sky.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-12 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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>So far, basic &#8211; no clouds, sun, moon and stars. It would seem, what in that case is still there? It&#8217;s very simple &#8211; the atmosphere remains. Depending on the time of day, the sky color and atmospheric light scattering are correctly adjusted.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-13 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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">Atmospheric scattering</figcaption></figure>



<p>Some of you have probably seen a similar sky in Unreal Engine or Unity, or in games made on these engines (there are even those who thought that screenshots from one of these engines, seeing such a sky). And someone will say: <em>&#8220;just some kind of fog, what is it?&#8221;</em>&#8230; But no, this is not a simple fog. Here are a couple of pictures from the internet showing what atmospheric dispersion does:</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-14 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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">Atmospheric scattering. Image from the vastness of the Internet.</figcaption></figure>



<p>Beauty, isn&#8217;t it? So we will have it when we complete the work *.</p>



<p><em><em><em>* Although we try to talk about the work done in chronological order, at the time of publication of this article, atmospheric scattering is still not completely finished &#8211; some improvements and adjustments are required, which we will be doing closer to the opening of the project, and therefore such screenshots of our game map are not to be posted anytime soon.</em></em></em></p>



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



<p>The next step is to add PBR, a physically based rendering. This is a modern standard that allows you to get a photorealistic image: metal will look like metal, glass &#8211; glass, leather &#8211; leather, wood &#8211; wood, etc. Thus, this standard allows you to reliably reproduce the optical properties of surfaces.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-15 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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">Interiors at this stage look much worse due to the lack of anti-aliasing, tuned light sources and reflections.</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/2021/11/pbr2.jpg"><img loading="lazy" decoding="async" 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">Interiors at this stage look much worse due to the lack of anti-aliasing, tuned light sources and reflections.</figcaption></figure></li></ul></figure>



<p>Street scenes look pretty good even without post-processing, don&#8217;t they? If there were self-shadowing (Ambient Occlusion) and anti-aliasing, it would be almost the same as in the screenshots that you saw in the group. But the interiors at this stage look much worse due to the lack of anti-aliasing, tuned light sources and reflections.</p>



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



<p>Taking into account the fact that the models on our map are worked out in much more detail than in other projects based on GTA SA, the volume of resources goes to a completely different level. And, of course, the game simply cannot handle such volumes of data.</p>



<p>To make it work, we also had to significantly rework a lot of things in GTA SA and MTA. For example, we use our own model and texture formats.</p>



<p>The existing toolkit for GTA SA / MTA is also unsuitable for working on a project of our level &#8211; for this we had to adapt modern tools and develop our own. And this is also a huge amount of work. It is possible that we will also tell you about this someday.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-16 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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">Test scene. Nearly three million triangles at an average 100 FPS</figcaption></figure>



<p>Almost three million triangles at an average of 100 FPS. As already mentioned, at this stage of development, scenes in interiors look inconspicuous due to the lack of anti-aliasing, adjusted light sources and reflections (well, we decided not to waste time arranging and adjusting light sources in test scenes &#8211; we did not even think that someone besides us will see these screenshots).</p>



<h2 class="wp-block-heading">Ambient occlusion and anti-aliasing</h2>



<p>The next step was work on self-shadowing (Ambient Occlusion) and anti-aliasing. For computers of different power, several of different algorithms are made &#8211; fast, but with a lower quality result; and slow, but with excellent quality.</p>



<p><em><em>If you are interested in technical details, at the time of this writing, SMAA 1x, SMAA 1x + TSSAA and SMAA 4x are supported for anti-aliasing, and SSAO, HBAO and Alchemy AO for Ambient Occlusion.</em></em></p>



<p>But right at this stage of the development of our rendering system, only the most basic algorithms were implemented.</p>



<p>Simple anti-aliasing result:</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-17 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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">The result of a simple anti-aliasing algorithm</figcaption></figure>



<p>And this is the result of the basic self-shadowing algorithm:</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-18 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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">The result of the simplest Ambient Occlusion algorithm</figcaption></figure>



<p>Then the resulting image is used when drawing the final image: the white color remains unchanged, and the dark one just adds shading.</p>



<p>We combine self-shadowing and anti-aliasing, which significantly improves the result:</p>



<figure class="wp-block-gallery columns-2 is-cropped wp-block-gallery-19 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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">What happened next?</h2>



<p>Later, we added better self-shadowing and anti-aliasing algorithms, we did serious work on dynamic lighting, transparent objects, reflections, tessellation and much more, but we will talk about this in the next parts.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The history of our render development #1</title>
		<link>https://blog.reflectrp.ru/reflectrp-render-1-en/</link>
		
		<dc:creator><![CDATA[RRP Team]]></dc:creator>
		<pubDate>Sat, 27 Nov 2021 18:16:03 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.reflectrp.ru/?p=117</guid>

					<description><![CDATA[The first version that our team developed for RPBOX. The development of our own render began at the end of 2019, when our team was working for RPBOX. The project management did not want to waste time on something that did not bring money, so we then started developing the render on our own initiative, &#8230; <p class="link-more"><a href="https://blog.reflectrp.ru/reflectrp-render-1-en/" class="more-link">Read more<span class="screen-reader-text"> "The history of our render development #1"</span></a></p>]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">The first version that our team developed for RPBOX.</h3>



<p>The development of our own render began at the end of 2019, when our team was working for RPBOX. The project management did not want to waste time on something that did not bring money, so we then started developing the render on our own initiative, in our spare time &#8211; in the evenings and on weekends. And only after seeing the first results, the management approved the full-time work in this direction.</p>



<p>To avoid confusion, this render is not ENB. This is a much more complex. In short, we completely disabled the part of GTA SA that is responsible for displaying the game and instead made our own system.</p>



<p>At first we just wanted to add shadows and qualitative reflections.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-20 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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">The very first version of shadows and reflections</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/2.jpg"><img loading="lazy" decoding="async" 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">Shadows also worked correctly with transparent textures.</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/3.jpg"><img loading="lazy" decoding="async" 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">Glossy wheels and lack of anti-aliasing &#8211; there was still a lot of work to be done&#8230; </figcaption></figure></li></ul></figure>



<p>Qualitative reflections mean that they reflect exactly what is currently around and even what is outside the screen.</p>



<p>Then we added Ambient Occlusion (self-shadowing of closely spaced surfaces):</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-21 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/4.jpg" alt="" data-id="42" class="wp-image-42"/></a></figure></li></ul><figcaption class="blocks-gallery-caption">First version of Ambient Occlusion, with no anti-aliasing</figcaption></figure>



<p>After that, we added the ability to adjust the gamma and palette in order to make a different picture depending on the time of day.</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-22 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" width="1920" height="1200" src="https://blog.reflectrp.ru/wp-content/uploads/render1/5.jpg" alt="" data-id="43" class="wp-image-43"/></a></figure></li></ul><figcaption class="blocks-gallery-caption">GTA SA with a palette of one of the parts of Just Cause</figcaption></figure>



<p>This was followed by multiple processes of customizing the visual part.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-23 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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-24 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" width="1920" height="1080" src="https://blog.reflectrp.ru/wp-content/uploads/render1/10.jpg" alt="" data-id="21" class="wp-image-21"/></a></figure></li></ul><figcaption class="blocks-gallery-caption">A version with skybox</figcaption></figure>



<p>In 2020, we added all this to the RPBOX, and also began to tune the vehicles for it</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-25 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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><figcaption class="blocks-gallery-item__caption">Setting up on the RPBOX map</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/12.jpg"><img loading="lazy" decoding="async" 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><figcaption class="blocks-gallery-item__caption">Setting up on the RPBOX map</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/13.jpg"><img loading="lazy" decoding="async" 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><figcaption class="blocks-gallery-item__caption">Setting up on the RPBOX map</figcaption></figure></li></ul></figure>



<p>and gradually came to something like this:</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-26 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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>Later we implemented anti-aliasing, gorgeous sky, PBR, dynamic shadows, planar reflections and some other features.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-27 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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">Reflections, dynamic headlight shadows</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/19.jpg"><img loading="lazy" decoding="async" 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">Dynamic light sources (in this case without shadows)</figcaption></figure></li><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/20.jpg"><img loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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, reflections of chandeliers and other light sources </figcaption></figure></li></ul></figure>



<p>Unfortunatly, we did not have enough time to release the glass, since RPBOX&#8217;s founder (who tried to rip us off for money some times) returned to the project, our whole team decided to leave the project. Just look at this beauty:</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-28 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="https://blog.reflectrp.ru/wp-content/uploads/render1/25.jpg"><img loading="lazy" decoding="async" width="1600" height="900" src="https://blog.reflectrp.ru/wp-content/uploads/render1/25.jpg" alt="" data-id="37" class="wp-image-37"/></a></figure></li></ul><figcaption class="blocks-gallery-caption">As mentioned, the glass were never released</figcaption></figure>



<p>The problem of all transparent materials was also solved there: there were no more problems with edges around tree crowns, transparency of glass in vehicles, etc.</p>



<p>At that moment, all the main parts were completed, apart from the water.</p>



<p>This completes the story of the first version of the render history, since we did not take any of our developments for ReflectRP and started working completely from scratch, which we will talk about in the next part.</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>This is not the final version, but you can get an idea</figcaption></figure>



<p>In conclusion, a couple examples of funny bugs that came out in the process of working on the first version of the render.</p>



<figure class="wp-block-gallery columns-3 is-cropped wp-block-gallery-29 is-layout-flex wp-block-gallery-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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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 loading="lazy" decoding="async" 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>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
