<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://c4engine.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Release_Notes_for_Version_1.5.9</id>
	<title>Release Notes for Version 1.5.9 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://c4engine.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Release_Notes_for_Version_1.5.9"/>
	<link rel="alternate" type="text/html" href="https://c4engine.com/wiki/index.php?title=Release_Notes_for_Version_1.5.9&amp;action=history"/>
	<updated>2026-05-04T12:29:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://c4engine.com/wiki/index.php?title=Release_Notes_for_Version_1.5.9&amp;diff=550&amp;oldid=prev</id>
		<title>Eric Lengyel at 06:46, 6 December 2024</title>
		<link rel="alternate" type="text/html" href="https://c4engine.com/wiki/index.php?title=Release_Notes_for_Version_1.5.9&amp;diff=550&amp;oldid=prev"/>
		<updated>2024-12-06T06:46:22Z</updated>

		<summary type="html">&lt;p&gt;&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 06:46, 6 December 2024&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-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&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;=== Shaders ===&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;=== Shaders ===&lt;/div&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;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; 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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* The Expand process has been added to the engine. It multiplies the input by 2.0 and then subtracts 1.0. This is useful for expanding values from the [0,1] range to the [&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;âˆ’1&lt;/del&gt;,1] range. (Note that the Normal Map process already implicitly expands the values read from its texture, so it's not necessary to use an Expand process after a normal map is read.)&lt;/div&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;* The Expand process has been added to the engine. It multiplies the input by 2.0 and then subtracts 1.0. This is useful for expanding values from the [0,1] range to the [&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;minus;1&lt;/ins&gt;,1] range. (Note that the Normal Map process already implicitly expands the values read from its texture, so it's not necessary to use an Expand process after a normal map is read.)&lt;/div&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;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;=== Scripts ===&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;=== Scripts ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eric Lengyel</name></author>
	</entry>
	<entry>
		<id>https://c4engine.com/wiki/index.php?title=Release_Notes_for_Version_1.5.9&amp;diff=63&amp;oldid=prev</id>
		<title>Eric Lengyel: Created page with &quot;__NOTOC__ '''Release date:''' April 28, 2009  == Core Engine ==  === Shaders ===  * The Expand process has been added to the engine. It multiplies the input by 2.0 and then subtracts 1.0. This is useful for expanding values from the [0,1] range to the [âˆ’1,1] range. (Note that the Normal Map process already implicitly expands the values read from its texture, so it's not necessary to use an Expand process after a normal map is read.)  === Scripts ===  * A new Set Ex...&quot;</title>
		<link rel="alternate" type="text/html" href="https://c4engine.com/wiki/index.php?title=Release_Notes_for_Version_1.5.9&amp;diff=63&amp;oldid=prev"/>
		<updated>2023-07-15T10:00:20Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOTOC__ &amp;#039;&amp;#039;&amp;#039;Release date:&amp;#039;&amp;#039;&amp;#039; April 28, 2009  == Core Engine ==  === Shaders ===  * The Expand process has been added to the engine. It multiplies the input by 2.0 and then subtracts 1.0. This is useful for expanding values from the [0,1] range to the [âˆ’1,1] range. (Note that the Normal Map process already implicitly expands the values read from its texture, so it&amp;#039;s not necessary to use an Expand process after a normal map is read.)  === Scripts ===  * A new Set Ex...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTOC__&lt;br /&gt;
'''Release date:''' April 28, 2009&lt;br /&gt;
&lt;br /&gt;
== Core Engine ==&lt;br /&gt;
&lt;br /&gt;
=== Shaders ===&lt;br /&gt;
&lt;br /&gt;
* The Expand process has been added to the engine. It multiplies the input by 2.0 and then subtracts 1.0. This is useful for expanding values from the [0,1] range to the [âˆ’1,1] range. (Note that the Normal Map process already implicitly expands the values read from its texture, so it's not necessary to use an Expand process after a normal map is read.)&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* A new Set External Variable method has been added to the Basic tab in the Script Editor. This method can set the value of an object-scope variable in another script to the value of any local variable belonging to the script that is running.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
* Bone nodes in a model are now identified by a hash value derived from the bone's name instead of an index number based on the bone's position within the model. What this means is that any skinned mesh can be copied from one skeleton and pasted onto another skeleton as long as the bones that it needs exist in the new skeleton. There is no longer any requirement that the two skeletons have the same number of bones or that they occur in the same order within the skeletal hierarchy.&lt;br /&gt;
&lt;br /&gt;
* Normal maps can now be compressed using ordinary S3TC when the alpha channel is unused (which disqualifies parallax maps). Compressed normal maps only contain information in the green and alpha channels of the texture after they've been imported. These provide an 8-bit ''x'' component and a 6-bit ''y'' component for each normal vector, and the ''z'' component is reconstituted in a slightly more expensive fragment program.&lt;br /&gt;
&lt;br /&gt;
* A new &amp;lt;code&amp;gt;ShockwaveEffect&amp;lt;/code&amp;gt; class has been added to the engine, and it produces an expanding distortion ring in the scene. This effect is implemented in the Extras plugin module, and the &amp;lt;code&amp;gt;ShellEffect&amp;lt;/code&amp;gt; class has also been moved to the Extras plugin.&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;kControllerLocal&amp;lt;/code&amp;gt; flag can now be specified by a controller to indicate that it operates autonomously and does not need to receive messages from remote machines. This flag would ordinarily be set in the controller's &amp;lt;code&amp;gt;Preprocess()&amp;lt;/code&amp;gt; function before calling the base class's &amp;lt;code&amp;gt;Preprocess()&amp;lt;/code&amp;gt; function, and it prevents the controller from being added to the world's controller array or being assigned a controller index.&lt;br /&gt;
&lt;br /&gt;
* With this release, official support for PowerPC-based Macs has been discontinued. However, the engine still builds and runs just fine on PowerPC processors.&lt;/div&gt;</summary>
		<author><name>Eric Lengyel</name></author>
	</entry>
</feed>