<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/GTA:SA_Rendering_System?action=history&amp;feed=atom</id>
	<title>GTA:SA Rendering System - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/GTA:SA_Rendering_System?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GTA:SA_Rendering_System&amp;action=history"/>
	<updated>2026-04-12T22:11:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GTA:SA_Rendering_System&amp;diff=48472&amp;oldid=prev</id>
		<title>Qaisjp: add category</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GTA:SA_Rendering_System&amp;diff=48472&amp;oldid=prev"/>
		<updated>2016-07-22T03:48:47Z</updated>

		<summary type="html">&lt;p&gt;add category&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:48, 22 July 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''VehicleAtomicRenderCallback''' is used to render all kinds of vehicle atomics. A reflective map can be attached to either one using the method described in '''ReflectiveRenderCallback'''. A special rendering method is added that renders a cubic environment map around an atomic, creating the illusion of reflection.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''VehicleAtomicRenderCallback''' is used to render all kinds of vehicle atomics. A reflective map can be attached to either one using the method described in '''ReflectiveRenderCallback'''. A special rendering method is added that renders a cubic environment map around an atomic, creating the illusion of reflection.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Development]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-38531:rev-48472 --&gt;
&lt;/table&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GTA:SA_Rendering_System&amp;diff=38531&amp;oldid=prev</id>
		<title>The GTA: Created page with &quot;The '''GTA:SA rendering system''' is a '''high-level render object management''' based on the RenderWare SDK and Direct3D 9.  ==Entity Rendering== Every game frame the engine loo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GTA:SA_Rendering_System&amp;diff=38531&amp;oldid=prev"/>
		<updated>2014-01-18T22:18:51Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;GTA:SA rendering system&amp;#039;&amp;#039;&amp;#039; is a &amp;#039;&amp;#039;&amp;#039;high-level render object management&amp;#039;&amp;#039;&amp;#039; based on the RenderWare SDK and Direct3D 9.  ==Entity Rendering== Every game frame the engine loo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The '''GTA:SA rendering system''' is a '''high-level render object management''' based on the RenderWare SDK and Direct3D 9.&lt;br /&gt;
&lt;br /&gt;
==Entity Rendering==&lt;br /&gt;
Every game frame the engine loops through all '''streamed-in entity sectors''' and builds up the rendering context based on every single entity it finds. The entities are processed by their '''type''' (building, vehicle, ped, object, dummy), their '''effective position''' (underwater, on ground, on/off screen) and '''game configuration''' (model flags, handling flags).&lt;br /&gt;
&lt;br /&gt;
As a result, multiple rendering lists are filled: sorted on ground, sorted underwater, sorted 'grasshouse' models, static array on-ground, static array level-of detail, static array out-of-sight low-priority.&lt;br /&gt;
&lt;br /&gt;
===Alpha Issues===&lt;br /&gt;
Due to the nature how GTA:SA renders its entities, several alpha issues crop up through-out the entire rendering stage. It starts with the fact that each rendering stage is not '''alpha-compatible''' to another. If alpha models render on two separate render stages, they will bug on certain camera angles if looking through either one. Another discomfort is that alpha through alpha is badly implemented on a per-model basis, leaving look-through artifacts when looking at trees or fences in certain places on the GTA:SA map.&lt;br /&gt;
&lt;br /&gt;
There is no performant ultimative fix for the whole GTA:SA scene. The issues can be combated in [[MTA:Eir/functions/engineSetWorldRenderMode|multiple ways]]. The '''meshlocal_alphafix''' method implements 'alpha fixing' on a per-mesh basis for objects and peds, so that leaves on a tree can be layered without limitation. The '''scene_alphafix''' method reorders the GTA:SA entity rendering queues so that they conform to '''alpha rendering rules'''.&lt;br /&gt;
&lt;br /&gt;
Each of these methods follows simple '''alpha rendering rules'''. Opaque pixels are drawn first so they occlude pixels behind them and unnecessary blending operations are avoided. Then '''translucent''' pixels are drawn in reverse order to the opaque elements, the most distant element being drawn first and the closest one last. In the end, the depth is written for each translucent pixel so that different rendering stages do not conflict with the already drawn pixels.&lt;br /&gt;
&lt;br /&gt;
These fixes are nowhere perfect. Perfect render ordering of alpha pixels is not determined but luck-based. Depth across rendering stages is conflicting for alpha pixels.&lt;br /&gt;
&lt;br /&gt;
==Rendering Callbacks==&lt;br /&gt;
The GTA:SA RenderWare implementation uses pipelines that can process implementation based requests. The most common request is the '''rendering of an atomic'''. With each pipeline there is a unique rendering callback associated with it. These callbacks implement special rendering functionality that is available to different GTA:SA engine model infos.&lt;br /&gt;
&lt;br /&gt;
The '''ReflectiveRenderCallback''' is used to render entities that may have reflective maps attached to their materials. A reflective map is a '''texture that is rendered as a billboard toward the camera''' on the surface of the atomic. &lt;br /&gt;
&lt;br /&gt;
The '''SpecialObjectRenderCallback''' is used to render entities in a similar way to '''ReflectiveRenderCallback'''. The actual rendering output is the same, but certain parameters are used differently.&lt;br /&gt;
&lt;br /&gt;
The '''VehicleAtomicRenderCallback''' is used to render all kinds of vehicle atomics. A reflective map can be attached to either one using the method described in '''ReflectiveRenderCallback'''. A special rendering method is added that renders a cubic environment map around an atomic, creating the illusion of reflection.&lt;/div&gt;</summary>
		<author><name>The GTA</name></author>
	</entry>
</feed>