<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.polycount.com/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.polycount.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CarlosMontero</id>
		<title>polycount - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.polycount.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CarlosMontero"/>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Special:Contributions/CarlosMontero"/>
		<updated>2026-05-07T07:32:36Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.2</generator>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Whitepapers</id>
		<title>Category:Whitepapers</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Whitepapers"/>
				<updated>2013-05-17T17:31:05Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category Whitepapers =&lt;br /&gt;
This page has links to conference proceedings and research papers (aka whitepapers) about game graphics. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Company Whitepapers ==&lt;br /&gt;
* [http://www2.disney.co.uk/disneyinteractivestudios/blackrockstudio/technology/ Black Rock Studios]&lt;br /&gt;
* [http://www.bitsquid.se/technology.html#papers Bitsquid]&lt;br /&gt;
* Bungie - Link Broken&lt;br /&gt;
* [http://www1.cs.columbia.edu/CAVE/publications/ CAVE (Columbia U)]&lt;br /&gt;
* [http://www.crytek.com/cryengine/presentations/ Crytek]&lt;br /&gt;
* [http://publications.dice.se/ DICE]&lt;br /&gt;
* [http://www.unrealtechnology.com/whats-new.php?ref=downloads Epic Games]&lt;br /&gt;
* [http://www.firaxis.com/?/blog Firaxis]&lt;br /&gt;
* [http://www.guerrilla-games.com/publications/ Guerilla Games]&lt;br /&gt;
* [http://www.insomniacgames.com/tech/techpage.php Insomniac Games]&lt;br /&gt;
* [http://maverick.inria.fr/Publications/ Maverick]&lt;br /&gt;
* [http://www.naughtydog.com/tag/presentations/ Naughty Dog]&lt;br /&gt;
* [http://developer.nvidia.com/page/documentation.html NVIDIA Developer Documentation]&lt;br /&gt;
* [http://research.nvidia.com/ NVIDIA Research]&lt;br /&gt;
* [http://graphics.pixar.com/library/ Pixar Library]&lt;br /&gt;
* [http://www.splashdamage.com/publications Spash Damage]&lt;br /&gt;
* [http://www.research.scea.com/research/research.html Sony Computer Entertainment America]&lt;br /&gt;
* [http://www.jp.square-enix.com/info/library/ Square-Enix]&lt;br /&gt;
* [http://www.cg.tuwien.ac.at/research/rendering/publications/ Technische Universitat wien]&lt;br /&gt;
* [http://research.tri-ace.com/ Tri-Ace Research]&lt;br /&gt;
* [http://engineroom.ubi.com/ Ubisoft Engine Room]&lt;br /&gt;
* [http://www.valvesoftware.com/publications.html Valve Software]&lt;br /&gt;
* [http://www.volition-inc.com/gdc/ Volition Inc.]&lt;br /&gt;
&lt;br /&gt;
== Conference Whitepapers ==&lt;br /&gt;
* [http://kesen.realtimerendering.com/ Conference Whitepapers Master List]&lt;br /&gt;
* [http://kesen.realtimerendering.com/sig2011.html SIGGRAPH 2011]&lt;br /&gt;
* [http://www.gdcvault.com/free/category/ Game Developers Conference 2005-2010]&lt;br /&gt;
* [http://www.microsoftgamefest.com/london2010.htm Gamefest London 2010]&lt;br /&gt;
* [http://www.microsoftgamefest.com/seattle2010.htm Gamefest Seattle 2010]&lt;br /&gt;
* [http://www.highperformancegraphics.org/index.php#3 High Performance Graphics]&lt;br /&gt;
&lt;br /&gt;
== Game Graphics Books ==&lt;br /&gt;
* [http://www.gamedev.net/reference/articles/article1698.asp Graphics Programming Black Book] by Michael Abrash (2001) - free download&lt;br /&gt;
&lt;br /&gt;
== Game Renderer Articles ==&lt;br /&gt;
These articles help artists understand how game engines work, so they can learn how to build art that performs better.&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=wWi4hqTOoGQ Realtime Rendering - Overview and Optimisations for 3D Artists] a video by [http://mikepickton.co.uk/ Mike Pickton]&lt;br /&gt;
* [http://www.cgchannel.com/2010/10/cg-science-for-artists-part-1-real-time-and-offline-rendering/ CG Science for Artists – Part 1: Real-Time and Offline Rendering] by [http://www.cgchannel.com/about/ Leonard Teo]&lt;br /&gt;
* [http://www.cgchannel.com/2010/11/cg-science-for-artists-part-2-the-real-time-rendering-pipeline/ CG Science for Artists - Part 2: The Real-Time Rendering Pipeline] by [http://www.cgchannel.com/about/ Leonard Teo]&lt;br /&gt;
* [http://www.ericchadwick.com/examples/provost/byf1.html Beautiful, Yet Friendly Part 1: Stop Hitting the Bottleneck] by [http://ca.linkedin.com/in/gprovost Guillaume Provost]&lt;br /&gt;
* [http://www.ericchadwick.com/examples/provost/byf2.html Beautiful, Yet Friendly Part 2: Maximizing Efficiency] by [http://ca.linkedin.com/in/gprovost Guillaume Provost]&lt;br /&gt;
* [http://www.extremetech.com/article2/0,3973,9722,00.asp ExtremeTech 3D Pipeline Tutorial] by [http://www.extremetech.com/author_bio/0,1728,a%253D234,00.asp Dave Salvator]&lt;br /&gt;
* [http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/ The Direct3D Graphics Pipeline] by [http://www.xmission.com/~legalize Richard Thomson]&lt;br /&gt;
* [http://artisaverb.info/Hygiene.html Efficient Art Production. Theory and practice] by [http://artisaverb.info/ Andrew Maximov]&lt;br /&gt;
* [[Polygon Count]]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=50588 FAQ: Game art optimisation (do polygon counts really matter?)] from the Polycount forum&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=72921 How many textures per model is too many?] from the Polycount forum&lt;br /&gt;
* [http://www.devmaster.net/wiki/Main_Page#Graphics Graphics topics on the DevMaster wiki]&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=971696#post971696 Why so blue?] thread on the Polycount forum has an informed discussion about texture compression.&lt;br /&gt;
&lt;br /&gt;
== Pages in This Category ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technology]] [[Category:Rendering]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Whitepapers</id>
		<title>Category:Whitepapers</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Whitepapers"/>
				<updated>2011-03-12T11:34:33Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: added Volition to the list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category Whitepapers =&lt;br /&gt;
This page has links to conference proceedings and research papers (aka whitepapers) about game graphics. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Company Whitepapers ==&lt;br /&gt;
* [http://www2.disney.co.uk/disneyinteractivestudios/blackrockstudio/technology/ Black Rock Studios]&lt;br /&gt;
* [http://www.bungie.net/Inside/publications.aspx Bungie]&lt;br /&gt;
* [http://www.crytek.com/cryengine/presentations/ Crytek]&lt;br /&gt;
* [http://publications.dice.se/ DICE]&lt;br /&gt;
* [http://www.unrealtechnology.com/whats-new.php?ref=downloads Epic Games]&lt;br /&gt;
* [http://www.guerrilla-games.com/publications/ Guerilla Games]&lt;br /&gt;
* [http://www.insomniacgames.com/tech/techpage.php Insomniac Games]&lt;br /&gt;
* [http://www.naughtydog.com/tag/presentations/ Naughty Dog]&lt;br /&gt;
* [http://developer.nvidia.com/page/documentation.html NVIDIA Developer Documentation]&lt;br /&gt;
* [http://research.nvidia.com/ NVIDIA Research]&lt;br /&gt;
* [http://graphics.pixar.com/library/ Pixar Library]&lt;br /&gt;
* [http://www.research.scea.com/research/research.html Sony Computer Entertainment America]&lt;br /&gt;
* [http://www.valvesoftware.com/publications.html Valve Software]&lt;br /&gt;
* [http://www.volition-inc.com/gdc/ Volition Inc.]&lt;br /&gt;
&lt;br /&gt;
== Conference Whitepapers ==&lt;br /&gt;
* [http://www.gdcvault.com/free/category/ Game Developers Conference 2005-2010]&lt;br /&gt;
* [http://www.microsoftgamefest.com/london2010.htm Gamefest London 2010]&lt;br /&gt;
* [http://www.microsoftgamefest.com/seattle2010.htm Gamefest Seattle 2010]&lt;br /&gt;
* [http://www.highperformancegraphics.org/program.html High Performance Graphics 2010]&lt;br /&gt;
* [http://kesen.huang.googlepages.com/ Whitepapers master list]&lt;br /&gt;
&lt;br /&gt;
== Game Graphics Books ==&lt;br /&gt;
* [http://www.gamedev.net/reference/articles/article1698.asp Graphics Programming Black Book] by Michael Abrash (2001) - free download&lt;br /&gt;
&lt;br /&gt;
== Game Renderer Articles ==&lt;br /&gt;
These articles help artists understand how game engines work, so they can learn how to build art that performs better.&lt;br /&gt;
&lt;br /&gt;
* [http://www.cgchannel.com/2010/10/cg-science-for-artists-part-1-real-time-and-offline-rendering/ CG Science for Artists – Part 1: Real-Time and Offline Rendering] by [http://www.cgchannel.com/about/ Leonard Teo]&lt;br /&gt;
* [http://www.cgchannel.com/2010/11/cg-science-for-artists-part-2-the-real-time-rendering-pipeline/ CG Science for Artists - Part 2: The Real-Time Rendering Pipeline] by [http://www.cgchannel.com/about/ Leonard Teo]&lt;br /&gt;
* [http://www.ericchadwick.com/examples/provost/byf1.html Beautiful, Yet Friendly Part 1: Stop Hitting the Bottleneck] by [http://ca.linkedin.com/in/gprovost Guillaume Provost]&lt;br /&gt;
* [http://www.ericchadwick.com/examples/provost/byf2.html Beautiful, Yet Friendly Part 2: Maximizing Efficiency] by [http://ca.linkedin.com/in/gprovost Guillaume Provost]&lt;br /&gt;
* [http://www.extremetech.com/article2/0,3973,9722,00.asp ExtremeTech 3D Pipeline Tutorial] by [http://www.extremetech.com/author_bio/0,1728,a%253D234,00.asp Dave Salvator]&lt;br /&gt;
* [http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/ The Direct3D Graphics Pipeline] by [http://www.xmission.com/~legalize Richard Thomson]&lt;br /&gt;
* [[Polygon Count]]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=50588 FAQ: Game art optimisation (do polygon counts really matter?)] from the Polycount forum&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=72921 How many textures per model is too many?] from the Polycount forum&lt;br /&gt;
* [http://www.devmaster.net/wiki/Main_Page#Graphics Graphics topics on the DevMaster wiki]&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=971696#post971696 Why so blue?] thread on the Polycount forum has an informed discussion about texture compression.&lt;br /&gt;
&lt;br /&gt;
== Pages in This Category ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technology]] [[Category:Rendering]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Texturing</id>
		<title>Category:Texturing</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Texturing"/>
				<updated>2010-07-20T07:27:42Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category Texturing =&lt;br /&gt;
This is a list of textures used in games, the texture maps that are used as visual layers in game shaders, the texturing techniques that are used to create these maps, and the file formats that are used to store them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Popular Texture Types ==&lt;br /&gt;
[[Category:TextureTypes]] is for teaching about the most commonly used texture types for games, such as Diffuse, Emissive, Normal, Opacity, and Specular Color. However the types you use will be dictated by the asset itself, and the Art Direction for the project. &lt;br /&gt;
&lt;br /&gt;
== Texture Formats ==&lt;br /&gt;
Texture file formats come in two basic categories: those that are used at runtime (in-game), versus those that are used by artists in general but have to be converted to be used &amp;quot;live&amp;quot; in-game. Two of the main reasons for conversion are to reduce memory load and to store [[MipMap|mips]].&lt;br /&gt;
&lt;br /&gt;
[[Category:TextureFormatRuntime]] is for file formats used in-game:&lt;br /&gt;
&lt;br /&gt;
* (3Dc, DDS, DXT, PVR, TPL, etc.)&lt;br /&gt;
&lt;br /&gt;
[[Category:TextureFormat]] is for general-use file formats:&lt;br /&gt;
&lt;br /&gt;
* (BMP, EXR, GIF, HDR, JPEG, PNG, PSD, TGA, TIFF, etc.)&lt;br /&gt;
&lt;br /&gt;
== Texture Photography ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://udn.epicgames.com/Three/TakingBetterPhotosForTextures.html Taking Better Photos for Textures] - by ''[http://www.mutantspoon.com/ Jordan Walker]'' &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://boards.polycount.net/showthread.php?t=65262 Better Sharpening in Photoshop] - by ''[http://poopinmymouth.com Ben &amp;quot;poopinmymouth&amp;quot; Mathis]'' &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://cgtextures.com/content.php?action=tutorials Texture Photography &amp;amp; Processing Tutorials]&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Category:Environment#ES2|Environment Skies]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Texturing</id>
		<title>Category:Texturing</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Texturing"/>
				<updated>2010-07-20T07:16:32Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: moved texture types to CategoryTextureTypes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category Texturing =&lt;br /&gt;
This is a list of textures used in games, the texture maps that are used as visual layers in game shaders, the texturing techniques that are used to create these maps, and the file formats that are used to store them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Popular Texture Types ==&lt;br /&gt;
[[Category:TextureTypes]] is for teaching about the most commonly used texture types for games, such as Diffuse, Emissive, Normal, Opacity, and Specular Color. However the types you use will be dictated by the asset itself, and the Art Direction for the project. &lt;br /&gt;
&lt;br /&gt;
== Texture Formats ==&lt;br /&gt;
Texture file formats come in two basic categories: those that are used at runtime (in-game), versus those that are used by artists in general but have to be converted to be used &amp;quot;live&amp;quot; in-game. Two of the main reasons for conversion are to reduce memory load and to store [[MipMap|mips]].&lt;br /&gt;
&lt;br /&gt;
[[Category:TextureFormatRuntime]] is for file formats used in-game:&lt;br /&gt;
&lt;br /&gt;
* (3Dc, DDS, DXT, PVR, TPL, etc.)&lt;br /&gt;
&lt;br /&gt;
[[Category:TextureFormat]] is for general-use file formats:&lt;br /&gt;
&lt;br /&gt;
* (BMP, EXR, GIF, HDR, JPEG, PNG, PSD, TGA, TIFF, etc.)&lt;br /&gt;
&lt;br /&gt;
== Texture Photography ==&lt;br /&gt;
* [[Image:Category:Texturing$2dtut_takingbetterphotoswalker.png]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://udn.epicgames.com/Three/TakingBetterPhotosForTextures.html Taking Better Photos for Textures] - by ''[http://www.mutantspoon.com/ Jordan Walker]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using a flash rig and polarization filters to avoid most specular highlights and directional lighting.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Category:Texturing$2dtut_sharpeningmathis.png]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://boards.polycount.net/showthread.php?t=65262 Better Sharpening in Photoshop] - by ''[http://poopinmymouth.com Ben &amp;quot;poopinmymouth&amp;quot; Mathis]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using High Pass and Smart Sharpen.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Category:Texturing$2dtut_cgtexturestuts.png]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://cgtextures.com/content.php?action=tutorials Texture Photography &amp;amp; Processing Tutorials] - from CGTextures.com&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}} The [[Category:Environment#ES2|Environment Skies]] wiki section&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tutorials specific to creating environment sky textures.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Texturing</id>
		<title>Category:Texturing</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Texturing"/>
				<updated>2010-07-20T07:10:41Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: moved over texture photography from 2D Tutorials page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category Texturing =&lt;br /&gt;
This is a list of textures used in games, the texture maps that are used as visual layers in game shaders, the texturing techniques that are used to create these maps, and the file formats that are used to store them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Popular Texture Types ==&lt;br /&gt;
For game assets the most commonly used texture types are Diffuse, Emissive, Normal, Opacity, and Specular Color. However the types you use will be dictated by the asset itself, and the Art Direction for the project. &lt;br /&gt;
&lt;br /&gt;
=== Bump Maps ===&lt;br /&gt;
[[Category:BumpMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Color Maps ===&lt;br /&gt;
[[Category:ColorMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Environment Maps ===&lt;br /&gt;
[[Category:EnvironmentMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Light Maps ===&lt;br /&gt;
[[Category:LightMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Specular Maps ===&lt;br /&gt;
[[Category:SpecularMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Transparency Maps ===&lt;br /&gt;
[[Category:TransparencyMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Texture Techniques ===&lt;br /&gt;
[[Category:TextureTechnique]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[2D Tutorials]]: Painting and texturing tutorials.&lt;br /&gt;
* [[Category:Environment#EC|Environment Concepting]]: Tutorials about concept art for environments.&lt;br /&gt;
* [[Category:Environment#ET|Environment Texturing]]: Tutorials for creating environment textures.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=65614 Painting Tutorials]: Polycount forum thread with lots of links to painting tutorials.&lt;br /&gt;
* [http://www.leighvanderbyl.com/pdf/texturing.pdf Texturing for Dummies]: A PDF overview of texturing and texture types.&lt;br /&gt;
* [http://www.cambridgeincolour.com/tutorials/photoshop-curves.htm Using the Photoshop Curves Tool]: Exactly how the Curves tool works, very informative!&lt;br /&gt;
&lt;br /&gt;
== Texture Formats ==&lt;br /&gt;
Texture file formats come in two basic categories: those that are used at runtime (in-game), versus those that are used by artists in general but have to be converted to be used &amp;quot;live&amp;quot; in-game. Two of the main reasons for conversion are to reduce memory load and to store [[MipMap|mips]].&lt;br /&gt;
&lt;br /&gt;
[[Category:TextureFormatRuntime]] is for file formats used in-game:&lt;br /&gt;
&lt;br /&gt;
* (3Dc, DDS, DXT, PVR, TPL, etc.)&lt;br /&gt;
&lt;br /&gt;
[[Category:TextureFormat]] is for general-use file formats:&lt;br /&gt;
&lt;br /&gt;
* (BMP, EXR, GIF, HDR, JPEG, PNG, PSD, TGA, TIFF, etc.)&lt;br /&gt;
&lt;br /&gt;
== Texture Photography ==&lt;br /&gt;
* [[Image:Category:Texturing$2dtut_takingbetterphotoswalker.png]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://udn.epicgames.com/Three/TakingBetterPhotosForTextures.html Taking Better Photos for Textures] - by ''[http://www.mutantspoon.com/ Jordan Walker]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using a flash rig and polarization filters to avoid most specular highlights and directional lighting.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Category:Texturing$2dtut_sharpeningmathis.png]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://boards.polycount.net/showthread.php?t=65262 Better Sharpening in Photoshop] - by ''[http://poopinmymouth.com Ben &amp;quot;poopinmymouth&amp;quot; Mathis]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using High Pass and Smart Sharpen.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Category:Texturing$2dtut_cgtexturestuts.png]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://cgtextures.com/content.php?action=tutorials Texture Photography &amp;amp; Processing Tutorials] - from CGTextures.com&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}} The [[Category:Environment#ES2|Environment Skies]] wiki section&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tutorials specific to creating environment sky textures.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Environment</id>
		<title>Category:Environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Environment"/>
				<updated>2010-07-15T10:43:15Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: CategoryEnvironment was part of CategoryModeling, which made no sense whatsoever.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Environment =&lt;br /&gt;
Topics about the design and creation of levels and environment artwork in games.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Concepting ==&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73282 Digital Environment/Landscape painting for beginners] Polycount thread&lt;br /&gt;
* [http://www.conceptart.org/forums/forumdisplay.php?f=140 Enviromentoring] and [http://www.conceptart.org/forums/forumdisplay.php?f=42 Tutorials, Tips &amp;amp; Tricks] - at [http://www.conceptart.org ConceptArt.Org]&lt;br /&gt;
* [http://www.handprint.com/HP/WCL/tech10.html elements of perspective] - by ''[http://www.handprint.com Bruce MacEvoy]'' &lt;br /&gt;
* [http://www.youtube.com/watch?v=NwBcssDYJ3o Whit Brachna Snowy Mountain] timelapse video with voiceover - by ''[http://brushbook.com Whit Brachna]'' ([http://www.youtube.com/user/MassiveDVD#g/u more freebies from Massive Black])&lt;br /&gt;
* [http://artpad.org/wordpress/wp-content/gallery/old-work/step%20by%20step.jpg Coastline] step by step image - by ''[http://artpad.org Jaime Jones]'' ([http://artpad.org/wordpress/wp-content/gallery/2005-2007/coastline2.jpg final])&lt;br /&gt;
* [http://daarken.com/flash2005/tutorials/fire_escape_02.pdf Fire Escape] step by step image - by ''[http://daarken.com/ Daarken]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/category/43/Feng-Zhu Concept Design Video Tutorials] ($) - by ''[http://www.artbyfeng.com/ Feng Zhu]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/product/55/The-Techniques-of-Dylan-Cole-1 Introduction to Landscape Matte Painting] ($) - by ''[http://www.dylancolestudio.com/ Dylan Cole]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[2D Tutorials|2D Tutorials]] section has more tutorials and resources for concept painting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EW&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;EWAM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Workflow &amp;amp; Modularity ==&lt;br /&gt;
&lt;br /&gt;
* [http://udn.epicgames.com/Two/WorkflowAndModularity.html Workflow techniques and modularity with Unreal game technology] - by ''[http://www.epicgames.com Epic Games]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A guide to setting up your art-to-level-design pipeline and designing modularly.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=678052#post678052 Environment workflow @ EpicGames] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A summary of the modular workflow used at Epic on Unreal Tournament 3.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=924231#post924231 Gears of War 2 modular modeling] - by ''[http://wiki.polycount.net/Rorshach Kevin Johnstone]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots of using the grid for modular work, as well as a ton of useful insight into the Environment worflow at Epic. A highly recommended read!&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1101338#post1101338 Modular brick wall tiling] - by ''[http://iamglynnsmith.com/ Glynn Smith]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots for sculpting modular brick walls.&lt;br /&gt;
* [http://www.brameulaers.com/tutorials/generic_wall_tutorial/generic_wall_tutorial.html Generic wall tutorial] - by ''[http://www.brameulaers.com Bram &amp;quot;Peris&amp;quot; Eulaers]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using 3ds Max and Mudbox to sculpt tilable modular sections for a stone wall.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=50160 Rock modeling approaches] - a [http://boards.polycount.net/ Polycount] thread &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A variety of approaches for sculpting individual rocks and tilable cliffs.&lt;br /&gt;
* [http://osart3d.wordpress.com/home-page/tutorial-creating-perfectly-tiling-meshes-in-zbrush-for-use-in-videogame-environments/ Creating Perfectly Tiling Meshes in Zbrush for use in Videogame Environments] - by ''[http://osart3d.wordpress.com/ Owen &amp;quot;SHEPEIRO&amp;quot; Shepherd]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using ZBrush's 2.5D canvas to tile stamped meshes, then using Maya to model tilable geometry.&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsindex.htm Unreal Engine 3 tutorials, game industry articles, level design/art/technical tutorials] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of tutorials and articles about designing levels with the Unreal Technology.&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=39&amp;amp;t=444791&amp;amp;page=7&amp;amp;pp=15#post4855106 Environment workflow from an artist working on a Crysis mod] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A modular city building and its texture sheet. &lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54178 Mod Facade Challenge] - by ''[http://www.linkedin.com/in/earthquake Joe &amp;quot;EarthQuake&amp;quot; Wilson]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking up a building into modular pieces and designing the texture sheet.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=51254 Maintaining the suspension of disbelief...] Polycount thread&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Discussion about the importance of using imperfection to create believable worlds.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52743 Adam Bromell's sketchbook thread] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking an environment down into modular pieces.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52565 Chris' sketchbook thread] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environment design &amp;amp; modular workflow.&lt;br /&gt;
* [http://www.3dbuzz.com/vbforum/sv_videonav.php?fid=836eb5e382b5d9f430df48883fca918e Level Design Video Tutorials] - from ''[http://www.3dbuzz.com 3DBuzz]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of useful tutorials and design tips about creating levels.&lt;br /&gt;
* [http://www.chrisalbeluhn.com/Building_Layout_Guideline_Tutorial.html Visually Appealing Building Guide] - by ''[http://www.chrisalbeluhn.com Christopher Albeluhn]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;An excellent breakdown of how to create visual interest with game buildings. [http://www.chrisalbeluhn.com/3D_Tutorials.html Additional tutorials here].&lt;br /&gt;
&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[DigitalSculpting#TS|Digital Sculpting]] section has more tutorials about modular workflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Modeling ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=62114 Gears2 Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54311 UT3 &amp;amp; Gears Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [[attachment:rorshach_scifi_supportbeam.pdf|SciFi Support Beam PDF]] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://chrisholden.net/tutor/ Environment tutorials] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=40608 Environment modeling basics] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Category:Modeling]] wiki section has more modeling tutorials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EF&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Foliage ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1021264 3D TreesTutorials] thread from the ''[http://boards.polycount.net Polycount boards]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Multiple methods.&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/11251-trees-beginners-3ds-max-tutorial.html Trees for Beginners in 3ds Max Tutorial] - by ''&amp;quot;braveryd&amp;quot;''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the AEC Extended: Foliage tree generator in 3ds Max.&lt;br /&gt;
* [http://www.andyzibits.com/tut_particle_tree_generation.html Tree creation using particle generator] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in 3ds Max.&lt;br /&gt;
* [http://learnfobia.com/category-Maya-129/tutorial-Sprite-Based-Particle-Trees-2259.html Sprite-Based Particle Trees] - by ''[http://stores.lulu.com/sunchirp Steven J. Tubbrit]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in Maya.&lt;br /&gt;
* [http://www.andyzibits.com/tut_maya_low_poly.html Ultra-efficient tree texturing and modeling] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture and branches.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1020341#post1020341 Low-poly Tree Using Maya PaintFX] - by ''[http://www.mobygames.com/developer/sheet/view/developerId,107125/ Jeramy Cooke]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture, then hand-modeling the tree.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1152529#post1152529 Bending vertex normals and using vertex color] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the Edit Normals modifier in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1149155#post1149155 Bending the vertex normals with Normal Thief] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the [http://www.scriptspot.com/3ds-max/scripts/normal-thief Normal Thief] script in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://http.developer.nvidia.com/GPUGems3/gpugems3_ch16.html Vegetation Procedural Animation and Shading in Crysis] - by ''[https://www.cmpevents.com/GD08/a.asp?option=G&amp;amp;V=3&amp;amp;id=563008 Tiago Sousa]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A detailed overview of Crytek's process for vegetation shading.&lt;br /&gt;
* [http://3dfolio.com/files/tree_tut.pdf Tree Modeling Techniques and Principles] (PDF) - by ''[http://www.3dfolio.com/ Matthew D'Onofrio]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Modeling efficient low-poly branches in 3ds Max using ''Extrude Along Spline''.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=67620 Hedges and Topiary a quick tutorial] - by [http://www.vigville.com/ 'Vig']&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Modeling and texturing method for stylized bushes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=72325 Tree making fast technique?] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree modeling techniques discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73556 Tree texturing] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree texturing discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=74330 Real quick tree texturing question] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More tree stuff.&lt;br /&gt;
* Stuff to research: &lt;br /&gt;
** Warhammer Online trees? &lt;br /&gt;
** RexM trees? &lt;br /&gt;
** Adam trees?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FMT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Foliage Modeling Tools ===&lt;br /&gt;
There are a lot of tools for modeling high-resolution plants, but few for modeling game-resolution models. Here are a few...&lt;br /&gt;
* [http://ngplant.sourceforge.net/ ngPlant]&lt;br /&gt;
* [http://www.frecle.net/index.php?show=treed.about frecle tree[d]] (exports formats .B3D, .OBJ, .X)&lt;br /&gt;
* [http://www.scriptspot.com/3ds-max/scripts/tree-maker TreeMaker script for 3ds Max]&lt;br /&gt;
* [http://www.branches.ws/ Branches script for 3ds Max]&lt;br /&gt;
* [http://www.youtube.com/watch?v=bG79EosNiBQ SpeedTree in UDK] ($)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Sculpting ==&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] See the [[DigitalSculpting]] section of the Polycount wiki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Skies ==&lt;br /&gt;
* [http://cgtextures.com/textures.php?t=browse&amp;amp;q=23740 CG Textures - Panoramic Skies] free 360-degree sky photos.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=45543 360 HDR skies for sale?] from the [http://boards.polycount.net Polycount forums] has a tutorial and links about photographing HDR skies.&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-create-a-terragen-2-skybox/ How to: Create a Terragen 2 Skybox] by ''[http://www.outpt.co.uk/about/ Outpt]''.&lt;br /&gt;
* [http://3dmotive.com/product-skydome 3dmotive.com - Creating a Skydome] is a tutorial for converting a latlong sky into a spheremap layout and mapping it to a dome mesh with Photoshop and 3ds Max.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68600 Skymap workflow] by ''[http://boards.polycount.net/member.php?u=27009 divi]'' is a quick tutorial about converting a latlong sky into a square dome-like layout that uses all the texture space. [[attachment:Skymap_workflow.pdf|PDF here]]&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-convert-a-skybox-to-a-skydome/ How to: Convert a Skybox to a Skydome] by ''[http://www.outpt.co.uk/about/ Outpt]'' is an in-depth tutorial about converting a cubemap into a latlong image with [http://developer.amd.com/gpu/cubemapgen/pages/default.aspx CubeMapGen], HDRShop, Photoshop, and Unreal.&lt;br /&gt;
* [http://www.e-onsoftware.com/products/ Vue] is a popular skydome creation tool.&lt;br /&gt;
* [http://www.planetside.co.uk/ Terragen] is another popular skydome creation tool.&lt;br /&gt;
* [http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Cube Map|Cube Map]] wiki section describes how to create and use cube maps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ET&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Texturing ==&lt;br /&gt;
* [http://vimeo.com/9067032 Texture Workflow videos] - by ''[http://www.hitenmistry.com/ Hiten &amp;quot;Mistry10&amp;quot; Mistry]'', from the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69850 Mistry's Texture Workflow w/Video]''&lt;br /&gt;
* [http://www.game-artist.net/forums/tutorials/182-step-step-techniques-tiling-textures-3ds-max.html Creating tiling textures in 3dsmax] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://poopinmymouth.com/process/tips/thirding.jpg Thirding - Utilizing your texture space for environment work] - by ''[http://poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis]''&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=46&amp;amp;t=373024 Hard Surface Texture Painting] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&lt;br /&gt;
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=17688 Tutorial: Brick Arch (Baking Multiple Maps in 3dsmax)] - by ''[http://boards.polycount.net/member.php?u=18074 mikebart]''&lt;br /&gt;
* [http://udn.epicgames.com/Two/VertexBlendingTutorial.html UDN UnrealEngine2 Vertex Blending Tutorial] - by ''[http://epicgames.com Epic Games]''&lt;br /&gt;
* [http://boards.polycount.net/showpost.php?p=756818&amp;amp;postcount=18 Using vertex blending to grunge a level and add variety] - by ''[http://www.strangefate.com/ Mario &amp;quot;StrangeFate&amp;quot; Vazquez]''&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsue3terrain.htm UE3 Terrain Tutorial] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.moddb.com/tutorials/lighting-in-game-environments-the-hows-and-whys Lighting in game environments] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.amazon.com/Painting-Light-John-Alton/dp/0520089499 Painting with Light] - by the cinematographer ''John Alton''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;II&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Industry Information ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52862 Percentage of environment artists .vs. character artists at most studios] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52412 What's the difference between a level designer and environment artist?] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[GameBusiness]] wiki section has links for threads and articles about how to get game jobs, how to negotiate your salary, how to manage your role, etc. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;IR&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Inspiration &amp;amp; Reference ==&lt;br /&gt;
* [http://images.google.com/ Google Image Search]&lt;br /&gt;
* [http://flickr.com/search/advanced/ Flickr Image Search]&lt;br /&gt;
* [http://images.search.yahoo.com/images/advanced?ei=UTF-8 Yahoo Image Search]&lt;br /&gt;
* [http://www.bbcmotiongallery.com/Customer/AdvancedSearch.aspx? BBC Motion Gallery] - video reference&lt;br /&gt;
* [http://www.corbismotion.com/ Corbis Motion] - video reference&lt;br /&gt;
* [http://www.gettyimages.com/Search/AdvancedSearch.aspx Getty Images Footage] - video reference&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=34320 Polycount Forums - Reference Thread]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=53002 Polycount Forums - Environment Modeling FAQ &amp;amp; Resources]&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/4379-reference-thread.html Game Artist Forums - Reference Thread]&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Model_Presentation</id>
		<title>Model Presentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Model_Presentation"/>
				<updated>2010-07-15T10:41:36Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: Moved to CategoryPortfolio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Model Presentation =&lt;br /&gt;
&lt;br /&gt;
== Lighting ==&lt;br /&gt;
* [[Image:Model_Presentation$lighting_3pointbirn.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://www.3drender.com/light/3point.html Three-Point Lighting for 3D Renderings] - by ''[http://www.3drender.com Jeremy Birn]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; How to create the classic Hollywood lighting scheme called three-point lighting.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$lighting_richardyot.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://www.itchy-animation.co.uk/light.htm LIGHT - a detailed tutorial] - by ''[http://www.itchy-animation.co.uk Richard Yot]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A detailed dissection of real-world lighting.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$lighting_advlightakram.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://warpedspace.org/lightingT/part1.htm Advanced Lighting Techniques]  - by ''[http://warpedspace.org Amaan Akram]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Lighting for mood using basic lighting theories.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High-Poly Models ==&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_fudge.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.mikefudge.com/tutorials/RenderingSculpture.htm Rendering a Sculpture] - by ''[http://www.mikefudge.com Mike Fudge]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Lighting, material, and rendering setup in Maya.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_volchik.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.artemstudios.com/08Portfolio/Tutorial/MaterialRenderingTut.htm High Poly Material Rendering Tutorial] - by ''[http://www.artemstudios.com Artem &amp;quot;X-Convict&amp;quot; Volchik]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Double-specular material setup in 3ds Max. Discussion and examples [http://boards.polycount.net/showthread.php?t=60887 here in Polycount].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_gullotti.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://boards.polycount.net/showthread.php?t=69829 MR materials for 3ds Max] - by ''[http://www.aliquaforma.com/ Enrico &amp;quot;SyncViewS&amp;quot; Gullotti]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;mental ray materials for 3ds Max, including dark shiny, light wireframe, and dark wireframe. Discussion and examples [http://boards.polycount.net/showthread.php?t=69829 here in Polycount].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_engineeringdraper.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.xenomorphic.co.uk/doc_engineering.htm Engineering Material] - by ''[http://www.xenomorphic.co.uk Pete Draper]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Outline and cross-hatching render setup, using the Ink and Paint material in 3ds Max.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Low-Poly Models ==&lt;br /&gt;
Low-poly models are usually best presented as screenshots from a game engine, or from your modeling app's viewport using [[Category:Shaders|shaders]].&lt;br /&gt;
&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_gamematerial-hall.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[attachment:currentnextgengamematerialrendering_jameshall.jpg|Current/Nextgen Game Material Rendering]] - by ''[http://shortfus3d.com James Hall]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Lighting a normal-mapped model using 2-point lighting and ambient occlusion.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_3dsmax-viewport-dof_oberson.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[attachment:3dsmax-viewport-dof_oberson.jpg|Depth of field in the 3ds Max viewport]] - by ''[http://www.pioroberson.com/ Pior &amp;quot;pior&amp;quot; Oberson]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using real-time depth of field, plus antialiased wireframes, in 3ds Max.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_3dsmax-viewport-baked-shadows_oberson.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[attachment:3dsmax-viewport-baked-shadows_oberson.jpg|Baked shadow maps in the 3ds Max viewport]] - by ''[http://www.pioroberson.com/ Pior &amp;quot;pior&amp;quot; Oberson]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Self-shadowing can be easily baked in 3ds Max. However baking can be avoided in version 2009 onwards because Max now supports real-time dynamic shadowing in the viewport.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_udk.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://www.polycount.com/forum/showthread.php?t=73930 Setting up UDK for portfolio renders?] thread on Polycount &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Helpful tips about using UDK to create nice screenshots of your models. See also [http://www.gameartisans.org/forums/showpost.php?p=210702&amp;amp;postcount=4 this post from Lamont] about capturing animation from UDK.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Portfolio]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Rendering</id>
		<title>Category:Rendering</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Rendering"/>
				<updated>2010-07-15T10:25:25Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category: Rendering =&lt;br /&gt;
This page is to help game artists understand how a game engine renders their artwork.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Terminology]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Offline vs. Real-Time Rendering]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Primers]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]] [[Category:Technology]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Quake_2</id>
		<title>Quake 2</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Quake_2"/>
				<updated>2010-07-15T10:25:04Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!wiki caution&lt;br /&gt;
'''BADLY OUTDATED'''&lt;br /&gt;
&lt;br /&gt;
The following page is badly out of date and should be considered obsolete at this point in time.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Quake 2 =&lt;br /&gt;
&lt;br /&gt;
* Introduction&lt;br /&gt;
* About PPM's(plug-in player models/player plug-in models)&lt;br /&gt;
** Limitations of the file formats&lt;br /&gt;
** PPM statistic information&lt;br /&gt;
* Tools&lt;br /&gt;
* Resources&lt;br /&gt;
* Terminology&lt;br /&gt;
* Aaaarrrggh! I need Help!&lt;br /&gt;
&lt;br /&gt;
'''Introduction'''&lt;br /&gt;
&lt;br /&gt;
Released in 1997, Quake 2 (or Quake II) by Id Software was the first multiplayer game to natively support plug-in player models. Id software has a long history of cultivating end user modifiable content, but Quake 2 was the turning point, and of course the genesis for Polycount itself in its initial iteration as the [[Q2PMP]].  &lt;br /&gt;
&lt;br /&gt;
'''About PPM's(plug-in player models/player plug-in models)'''&lt;br /&gt;
&lt;br /&gt;
The information here is written for vanilla quake 2. If you are using an updated q2 engine the information might not be correct.&lt;br /&gt;
&lt;br /&gt;
Player models are stored in the baseq2/players/*modelName* directory. &lt;br /&gt;
&lt;br /&gt;
A player model consists of three types of files. .md2 contains the mesh and vertex animations, .pcx contains the textures and .wav contains the sound effects.&lt;br /&gt;
&lt;br /&gt;
Certain files are needed for a model to work:&lt;br /&gt;
* tris.md2 - contains the player mesh and it's animations. (Animation list can be found in the reference section)&lt;br /&gt;
* weapon.md2 - contains the player weapon and it's animations. (Animation list can be found in the reference section)&lt;br /&gt;
* weapon.pcx - contains the texture for the weapon model. &lt;br /&gt;
* skinName.pcx - contains the skin texture.&lt;br /&gt;
* skinName_i.pcx - contain the icon for the skin texture.&lt;br /&gt;
&lt;br /&gt;
Additional skin textures can be added by including including another skinName.pcx and skinName_i.pcx file.&lt;br /&gt;
&lt;br /&gt;
Sound effects can be added to your PPM by the files:&lt;br /&gt;
* death1.wav - &lt;br /&gt;
* death2.wav - &lt;br /&gt;
* death3.wav - &lt;br /&gt;
* death4.wav - &lt;br /&gt;
* drown1.wav - Played when you drown. (This file is never played as the default male drown1.wav is always played)??? &lt;br /&gt;
* fall1.wav - &lt;br /&gt;
* fall2.wav -&lt;br /&gt;
* gurp1.wav - &lt;br /&gt;
* gurp2.wav - &lt;br /&gt;
* jump1.wav - &lt;br /&gt;
* pain100_1.wav - &lt;br /&gt;
* pain100_2.wav - &lt;br /&gt;
* pain25_1.wav - &lt;br /&gt;
* pain25_2.wav - &lt;br /&gt;
* pain50_1.wav - &lt;br /&gt;
* pain50_2.wav - &lt;br /&gt;
* pain75_1.wav - &lt;br /&gt;
* pain75_2.wav - &lt;br /&gt;
&lt;br /&gt;
If you wanted to add VWep support you need to include the following files.(If you are using the original weapon models you do not need to include the skin (.pcx) files. You can just link to the skin textures in the pak0.pak archive by using NST.) All of the extra weapon .md2's need to be animated like the default weapon.md2.&lt;br /&gt;
&lt;br /&gt;
* w_bfg.md2 - model that replaces the BFG.&lt;br /&gt;
* w_bfg.pcx - skin for the BFG replacement.&lt;br /&gt;
* w_blaster.md2 - model the replaces the Blaster &lt;br /&gt;
* w_blaster.pcx - skin for the Blaster replacement. &lt;br /&gt;
* w_chaingun.md2 - model that replaces the Chaingun. &lt;br /&gt;
* w_chaingun.pcx - skin for the Chaingun replacement.&lt;br /&gt;
* w_glauncher.md2 - model that replaces the Grenade Launcher. &lt;br /&gt;
* w_glauncher.pcx - skin for the Gernade Launcher replacement.&lt;br /&gt;
* w_hyperblaster.md2 - model that replaces the Hyper Blaster. &lt;br /&gt;
* w_hyperblaster.pcx - skin for the Hyper Blaster replacement.&lt;br /&gt;
* w_machinegun.md2 - model that replaces the Machinegun. &lt;br /&gt;
* w_machinegun.pcx - skin for the Machinegun replacement.&lt;br /&gt;
* w_railgun.md2 - model that replaces the Railgun. &lt;br /&gt;
* w_railgun.pcx - skin for the Railgunreplacement.&lt;br /&gt;
* w_rlauncher.md2 - model that replaces the Rocket Launcher. &lt;br /&gt;
* w_rlauncher.pcx - skin for the Rocket Launcher replacement.&lt;br /&gt;
* w_shotgun.md2 - model that replaces the Shotgun. &lt;br /&gt;
* w_shotgun.pcx - skin for the Shotgun replacement.&lt;br /&gt;
* w_sshotgun.md2 - model that replaces the Super Shotgun.&lt;br /&gt;
* w_sshotgun.pcx - skin for the Super Shotgun replacement.&lt;br /&gt;
&lt;br /&gt;
If you want the VWep to support all the offical addons to Quake 2 you will need to also include:&lt;br /&gt;
&lt;br /&gt;
* w_chainfist.md2 - model that replaces the Chainfist. &lt;br /&gt;
* w_chainfist.pcx - skin for the Chainfist replacement.&lt;br /&gt;
* w_disrupt.md2 - model that replaces the &lt;br /&gt;
* w_disrupt.pcx - skin for the replacement.&lt;br /&gt;
* w_etfrifle.md2 - model that replaces the &lt;br /&gt;
* w_etfrifle.pcx - skin for the replacement.&lt;br /&gt;
* w_grapple.md2 - model that replaces the Grapple. &lt;br /&gt;
* w_grapple.pcx - skin for the Grapple replacement.&lt;br /&gt;
* w_phalanx.md2 - model that replaces the Phalanx. &lt;br /&gt;
* w_phalanx.pcx - skin for the Phalanx replacement.&lt;br /&gt;
* w_plasma.md2 - model that replaces the &lt;br /&gt;
* w_plasma.pcx - skin for the replacement.&lt;br /&gt;
* w_plauncher.md2 - model that replaces the &lt;br /&gt;
* w_plauncher.pcx - skin for the replacement.&lt;br /&gt;
* w_ripper.md2 - model that replaces the Ripper.&lt;br /&gt;
* w_ripper.pcx - skin for the ripper replacement.&lt;br /&gt;
&lt;br /&gt;
'''Limitations of the file formats'''&lt;br /&gt;
&lt;br /&gt;
Limitations of the .md2 model format.&lt;br /&gt;
* Vertices - 2048???&lt;br /&gt;
* Triangles - 4096???&lt;br /&gt;
* Skin Resolution - 640*480???&lt;br /&gt;
* Frames - 512???&lt;br /&gt;
* There can be seperate objects in the .md2 but they all must be solid.&lt;br /&gt;
* .md2 has a small vertex array which will give a model vert boil.&lt;br /&gt;
&lt;br /&gt;
Limitations of the .pcx skin format&lt;br /&gt;
* Limited 256 colour Pallete(Can be downloaded here) &lt;br /&gt;
* No alpha channel. &lt;br /&gt;
&lt;br /&gt;
Limitations of the Quake 2 .wav format&lt;br /&gt;
* PCM 22,050 kHz, 16 bit, Mono. (44kHz CAN play in the game, however the sound system in Q2 can only mix up to 22kHz. Ditto for Q3A)&lt;br /&gt;
&lt;br /&gt;
'''PPM statistic information '''&lt;br /&gt;
&lt;br /&gt;
OOTB PPM information&lt;br /&gt;
* Vertices - &lt;br /&gt;
* Triangles - &lt;br /&gt;
* Image Resolution - &lt;br /&gt;
&lt;br /&gt;
OOTB Weapon model information&lt;br /&gt;
* Vertices - &lt;br /&gt;
* Triangles - &lt;br /&gt;
* Image Resolution - &lt;br /&gt;
&lt;br /&gt;
Custom player model information&lt;br /&gt;
* Poly - &lt;br /&gt;
* Verts - &lt;br /&gt;
* Image Resolution - 256*256 &lt;br /&gt;
&lt;br /&gt;
Custom Weapon model information&lt;br /&gt;
* Vertices - &lt;br /&gt;
* Triangles - &lt;br /&gt;
* Image Resolution - 128*128&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&lt;br /&gt;
&lt;br /&gt;
'''Resources'''&lt;br /&gt;
&lt;br /&gt;
Animation List&lt;br /&gt;
&lt;br /&gt;
* tris.md2 needs to contain all 198 frames.&lt;br /&gt;
* weapon.md2( and all VWep.md2's) contain 173 frames. Crouch Death, Death1, Death2 and Death3 aren't needed as the weapon disappears when the player dies.&lt;br /&gt;
* Extra frames can be added after the 198 or 173 frames. These can be useful for creating poses that would be helpful when skinning. &lt;br /&gt;
&lt;br /&gt;
Liek fuck am I converting an html frame list to wikicacká. :D&lt;br /&gt;
&lt;br /&gt;
'''Terminology'''&lt;br /&gt;
&lt;br /&gt;
* Vert boil - Vert boil occurs when the file format doesn't have a large enough vertex array. Vertices can't be placed with the accuracy needed so the mesh takes on a jelly like effect. The Quake 2 powered game Kingpin suffered alot from this issue.&lt;br /&gt;
* VWep - After the release of Quake 2 a new feature was added VWep(viewable weapons). VWep added the ability for the player model to visually hold individual weapons depending on which weapon the player was using.&lt;br /&gt;
&lt;br /&gt;
'''Aaaarrrggh! I need Help!'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:GameEngines]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:GameEngines</id>
		<title>Category:GameEngines</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:GameEngines"/>
				<updated>2010-07-15T10:24:57Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Game Engines =&lt;br /&gt;
This category is to list relevant Game Engines and documentation for them.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:GameEngines</id>
		<title>Category:GameEngines</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:GameEngines"/>
				<updated>2010-07-15T10:24:44Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Game Engines =&lt;br /&gt;
This category is to list relevant Game Engines and documentation for them.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:GameEngines</id>
		<title>Category:GameEngines</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:GameEngines"/>
				<updated>2010-07-15T10:24:08Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Game Engines =&lt;br /&gt;
&lt;br /&gt;
== Game Engine List ==&lt;br /&gt;
This category is to list relevant Game Engines and documentation for them.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Quake_2</id>
		<title>Quake 2</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Quake_2"/>
				<updated>2010-07-15T10:19:31Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removed breadcrumbs, added Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!wiki caution&lt;br /&gt;
'''BADLY OUTDATED'''&lt;br /&gt;
&lt;br /&gt;
The following page is badly out of date and should be considered obsolete at this point in time.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Quake 2 =&lt;br /&gt;
&lt;br /&gt;
* Introduction&lt;br /&gt;
* About PPM's(plug-in player models/player plug-in models)&lt;br /&gt;
** Limitations of the file formats&lt;br /&gt;
** PPM statistic information&lt;br /&gt;
* Tools&lt;br /&gt;
* Resources&lt;br /&gt;
* Terminology&lt;br /&gt;
* Aaaarrrggh! I need Help!&lt;br /&gt;
&lt;br /&gt;
'''Introduction'''&lt;br /&gt;
&lt;br /&gt;
Released in 1997, Quake 2 (or Quake II) by Id Software was the first multiplayer game to natively support plug-in player models. Id software has a long history of cultivating end user modifiable content, but Quake 2 was the turning point, and of course the genesis for Polycount itself in its initial iteration as the [[Q2PMP]].  &lt;br /&gt;
&lt;br /&gt;
'''About PPM's(plug-in player models/player plug-in models)'''&lt;br /&gt;
&lt;br /&gt;
The information here is written for vanilla quake 2. If you are using an updated q2 engine the information might not be correct.&lt;br /&gt;
&lt;br /&gt;
Player models are stored in the baseq2/players/*modelName* directory. &lt;br /&gt;
&lt;br /&gt;
A player model consists of three types of files. .md2 contains the mesh and vertex animations, .pcx contains the textures and .wav contains the sound effects.&lt;br /&gt;
&lt;br /&gt;
Certain files are needed for a model to work:&lt;br /&gt;
* tris.md2 - contains the player mesh and it's animations. (Animation list can be found in the reference section)&lt;br /&gt;
* weapon.md2 - contains the player weapon and it's animations. (Animation list can be found in the reference section)&lt;br /&gt;
* weapon.pcx - contains the texture for the weapon model. &lt;br /&gt;
* skinName.pcx - contains the skin texture.&lt;br /&gt;
* skinName_i.pcx - contain the icon for the skin texture.&lt;br /&gt;
&lt;br /&gt;
Additional skin textures can be added by including including another skinName.pcx and skinName_i.pcx file.&lt;br /&gt;
&lt;br /&gt;
Sound effects can be added to your PPM by the files:&lt;br /&gt;
* death1.wav - &lt;br /&gt;
* death2.wav - &lt;br /&gt;
* death3.wav - &lt;br /&gt;
* death4.wav - &lt;br /&gt;
* drown1.wav - Played when you drown. (This file is never played as the default male drown1.wav is always played)??? &lt;br /&gt;
* fall1.wav - &lt;br /&gt;
* fall2.wav -&lt;br /&gt;
* gurp1.wav - &lt;br /&gt;
* gurp2.wav - &lt;br /&gt;
* jump1.wav - &lt;br /&gt;
* pain100_1.wav - &lt;br /&gt;
* pain100_2.wav - &lt;br /&gt;
* pain25_1.wav - &lt;br /&gt;
* pain25_2.wav - &lt;br /&gt;
* pain50_1.wav - &lt;br /&gt;
* pain50_2.wav - &lt;br /&gt;
* pain75_1.wav - &lt;br /&gt;
* pain75_2.wav - &lt;br /&gt;
&lt;br /&gt;
If you wanted to add VWep support you need to include the following files.(If you are using the original weapon models you do not need to include the skin (.pcx) files. You can just link to the skin textures in the pak0.pak archive by using NST.) All of the extra weapon .md2's need to be animated like the default weapon.md2.&lt;br /&gt;
&lt;br /&gt;
* w_bfg.md2 - model that replaces the BFG.&lt;br /&gt;
* w_bfg.pcx - skin for the BFG replacement.&lt;br /&gt;
* w_blaster.md2 - model the replaces the Blaster &lt;br /&gt;
* w_blaster.pcx - skin for the Blaster replacement. &lt;br /&gt;
* w_chaingun.md2 - model that replaces the Chaingun. &lt;br /&gt;
* w_chaingun.pcx - skin for the Chaingun replacement.&lt;br /&gt;
* w_glauncher.md2 - model that replaces the Grenade Launcher. &lt;br /&gt;
* w_glauncher.pcx - skin for the Gernade Launcher replacement.&lt;br /&gt;
* w_hyperblaster.md2 - model that replaces the Hyper Blaster. &lt;br /&gt;
* w_hyperblaster.pcx - skin for the Hyper Blaster replacement.&lt;br /&gt;
* w_machinegun.md2 - model that replaces the Machinegun. &lt;br /&gt;
* w_machinegun.pcx - skin for the Machinegun replacement.&lt;br /&gt;
* w_railgun.md2 - model that replaces the Railgun. &lt;br /&gt;
* w_railgun.pcx - skin for the Railgunreplacement.&lt;br /&gt;
* w_rlauncher.md2 - model that replaces the Rocket Launcher. &lt;br /&gt;
* w_rlauncher.pcx - skin for the Rocket Launcher replacement.&lt;br /&gt;
* w_shotgun.md2 - model that replaces the Shotgun. &lt;br /&gt;
* w_shotgun.pcx - skin for the Shotgun replacement.&lt;br /&gt;
* w_sshotgun.md2 - model that replaces the Super Shotgun.&lt;br /&gt;
* w_sshotgun.pcx - skin for the Super Shotgun replacement.&lt;br /&gt;
&lt;br /&gt;
If you want the VWep to support all the offical addons to Quake 2 you will need to also include:&lt;br /&gt;
&lt;br /&gt;
* w_chainfist.md2 - model that replaces the Chainfist. &lt;br /&gt;
* w_chainfist.pcx - skin for the Chainfist replacement.&lt;br /&gt;
* w_disrupt.md2 - model that replaces the &lt;br /&gt;
* w_disrupt.pcx - skin for the replacement.&lt;br /&gt;
* w_etfrifle.md2 - model that replaces the &lt;br /&gt;
* w_etfrifle.pcx - skin for the replacement.&lt;br /&gt;
* w_grapple.md2 - model that replaces the Grapple. &lt;br /&gt;
* w_grapple.pcx - skin for the Grapple replacement.&lt;br /&gt;
* w_phalanx.md2 - model that replaces the Phalanx. &lt;br /&gt;
* w_phalanx.pcx - skin for the Phalanx replacement.&lt;br /&gt;
* w_plasma.md2 - model that replaces the &lt;br /&gt;
* w_plasma.pcx - skin for the replacement.&lt;br /&gt;
* w_plauncher.md2 - model that replaces the &lt;br /&gt;
* w_plauncher.pcx - skin for the replacement.&lt;br /&gt;
* w_ripper.md2 - model that replaces the Ripper.&lt;br /&gt;
* w_ripper.pcx - skin for the ripper replacement.&lt;br /&gt;
&lt;br /&gt;
'''Limitations of the file formats'''&lt;br /&gt;
&lt;br /&gt;
Limitations of the .md2 model format.&lt;br /&gt;
* Vertices - 2048???&lt;br /&gt;
* Triangles - 4096???&lt;br /&gt;
* Skin Resolution - 640*480???&lt;br /&gt;
* Frames - 512???&lt;br /&gt;
* There can be seperate objects in the .md2 but they all must be solid.&lt;br /&gt;
* .md2 has a small vertex array which will give a model vert boil.&lt;br /&gt;
&lt;br /&gt;
Limitations of the .pcx skin format&lt;br /&gt;
* Limited 256 colour Pallete(Can be downloaded here) &lt;br /&gt;
* No alpha channel. &lt;br /&gt;
&lt;br /&gt;
Limitations of the Quake 2 .wav format&lt;br /&gt;
* PCM 22,050 kHz, 16 bit, Mono. (44kHz CAN play in the game, however the sound system in Q2 can only mix up to 22kHz. Ditto for Q3A)&lt;br /&gt;
&lt;br /&gt;
'''PPM statistic information '''&lt;br /&gt;
&lt;br /&gt;
OOTB PPM information&lt;br /&gt;
* Vertices - &lt;br /&gt;
* Triangles - &lt;br /&gt;
* Image Resolution - &lt;br /&gt;
&lt;br /&gt;
OOTB Weapon model information&lt;br /&gt;
* Vertices - &lt;br /&gt;
* Triangles - &lt;br /&gt;
* Image Resolution - &lt;br /&gt;
&lt;br /&gt;
Custom player model information&lt;br /&gt;
* Poly - &lt;br /&gt;
* Verts - &lt;br /&gt;
* Image Resolution - 256*256 &lt;br /&gt;
&lt;br /&gt;
Custom Weapon model information&lt;br /&gt;
* Vertices - &lt;br /&gt;
* Triangles - &lt;br /&gt;
* Image Resolution - 128*128&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&lt;br /&gt;
&lt;br /&gt;
'''Resources'''&lt;br /&gt;
&lt;br /&gt;
Animation List&lt;br /&gt;
&lt;br /&gt;
* tris.md2 needs to contain all 198 frames.&lt;br /&gt;
* weapon.md2( and all VWep.md2's) contain 173 frames. Crouch Death, Death1, Death2 and Death3 aren't needed as the weapon disappears when the player dies.&lt;br /&gt;
* Extra frames can be added after the 198 or 173 frames. These can be useful for creating poses that would be helpful when skinning. &lt;br /&gt;
&lt;br /&gt;
Liek fuck am I converting an html frame list to wikicacká. :D&lt;br /&gt;
&lt;br /&gt;
'''Terminology'''&lt;br /&gt;
&lt;br /&gt;
* Vert boil - Vert boil occurs when the file format doesn't have a large enough vertex array. Vertices can't be placed with the accuracy needed so the mesh takes on a jelly like effect. The Quake 2 powered game Kingpin suffered alot from this issue.&lt;br /&gt;
* VWep - After the release of Quake 2 a new feature was added VWep(viewable weapons). VWep added the ability for the player model to visually hold individual weapons depending on which weapon the player was using.&lt;br /&gt;
&lt;br /&gt;
'''Aaaarrrggh! I need Help!'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:GameEngineList]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:GameEngines</id>
		<title>Category:GameEngines</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:GameEngines"/>
				<updated>2010-07-15T10:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: adding sub-category listing to give some organizational infrastructure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Game Engines =&lt;br /&gt;
&lt;br /&gt;
== Game Engine List ==&lt;br /&gt;
This category is to list relevant Game Engines and documentation for them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rendering ==&lt;br /&gt;
This category is to help game artists understand how a game engine renders their artwork.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:GameEngines</id>
		<title>Category:GameEngines</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:GameEngines"/>
				<updated>2010-07-15T10:15:37Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Game Engines =&lt;br /&gt;
&lt;br /&gt;
== Category: Game Engine List ==&lt;br /&gt;
This category is to list relevant Game Engines and documentation for them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Category: Rendering ==&lt;br /&gt;
This category is to help game artists understand how a game engine renders their artwork.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Rendering</id>
		<title>Category:Rendering</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Rendering"/>
				<updated>2010-07-15T10:11:06Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category: Rendering =&lt;br /&gt;
This page is to help game artists understand how a game engine renders their artwork.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Terminology]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Offline vs. Real-Time Rendering]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Primers]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]] [[Category:GameEngines]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Offline_vs._Real-Time_Rendering</id>
		<title>Offline vs. Real-Time Rendering</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Offline_vs._Real-Time_Rendering"/>
				<updated>2010-07-15T09:51:58Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removed breadcrumbs, added Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Offline Rendering vs. Real-Time Rendering =&lt;br /&gt;
&lt;br /&gt;
* ''&amp;quot;Offline rendering systems, such as those used in CAD applications, stress accuracy over frame rate... each frame of animation might take hours to render. Real-time renderers, like game engines and simulators, tend to emphasize constant frame rate to keep animations smooth and fluid, and are willing to sacrifice both geometric and texture detail in order to do this.&amp;quot;'' - from the [http://www.extremetech.com/article2/0,3973,9722,00.asp ExtremeTech 3D Pipeline Tutorial] by [http://www.extremetech.com/author_bio/0,1728,a%253D234,00.asp Dave Salvator]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Rendering]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Rendering</id>
		<title>Category:Rendering</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Rendering"/>
				<updated>2010-07-15T09:51:12Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category: Rendering =&lt;br /&gt;
This page is to help game artists understand how a game engine renders their artwork.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Terminology]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Offline vs. Real-Time Rendering]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Primers]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Rendering</id>
		<title>Category:Rendering</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Rendering"/>
				<updated>2010-07-15T09:50:44Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: Adding Category fullsearch to this category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category: Rendering =&lt;br /&gt;
This page is to help game artists understand how a game engine renders their artwork.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Terminology]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Offline vs. Real-Time Rendering]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Primers]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/GameStatistics</id>
		<title>GameStatistics</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/GameStatistics"/>
				<updated>2010-07-15T09:43:35Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removed breadcrumbs, added CategoryGameIndustry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[GameStatistics]] =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Game Statistics and Reports ==&lt;br /&gt;
[http://news.softpedia.com/news/ESA-S-2005-Essential-Facts-About-the-Computer-and-Video-Game-Industry-11841.shtml esa 2005 essential facts about the computer and video game industry] :: [http://www.theesa.com/files/2005EssentialFacts.pdf (more detailed PDF version)]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
[http://www.idsa.com/IDSAfinal.pdf PDF - Interactive Digital Software Association, “Video Game Youth &amp;amp; Violence: Examining the Facts” (2001)]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Violence ==&lt;br /&gt;
&lt;br /&gt;
== Gender ==&lt;br /&gt;
[http://www.igda.org/women/MTNW_Women-in-Games_Sep04.pdf PDF - Media Training North West, “why are there so few women in games?” (2004)]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Race ==&lt;br /&gt;
&lt;br /&gt;
== Sales ==&lt;br /&gt;
&lt;br /&gt;
== Culture ==&lt;br /&gt;
[http://gac.sagepub.com/content/vol1/issue1/ A Journal of Interactive Media]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
[http://socialstudygames.com/index.php?option=com_content&amp;amp;task=blogcategory&amp;amp;id=78&amp;amp;Itemid=83 socialstudygames.com]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Video_game_history Video Game History: wikipedia]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:GameIndustry]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:GameIndustry</id>
		<title>Category:GameIndustry</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:GameIndustry"/>
				<updated>2010-07-15T09:43:13Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: this page was underneath it's own category...which wasn't right. fixed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ## page was renamed from [[GameBusiness]] --&amp;gt;&lt;br /&gt;
= Category Game Industry =&lt;br /&gt;
Links and articles about the game industry: how to get game jobs, how to manage your role, etc.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Industry Insight ==&lt;br /&gt;
* GDC 2010 [http://www.gdcvault.com/play/1012343/The-Belly-of-the-Whale The Belly of the Whale: Living a Creative Life in the Game Industry] - by [http://www.bobbates.com/ Bob Bates]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Insights into how creative types can survive and thrive in the game industry. Highly recommended [http://www.polycount.com/forum/showthread.php?t=74876 by many Polycounters].&lt;br /&gt;
* [[GameStatistics]] has more links.&lt;br /&gt;
&lt;br /&gt;
== Job Searching ==&lt;br /&gt;
Most game developers get their jobs by word of mouth, this industry puts personal contacts first and foremost. Networking is key; keep in contact with your friends and former co-workers.&lt;br /&gt;
&lt;br /&gt;
* [http://www.boomzap.com/blog/industry-tips-how-to-find-a-job-in-the-game-industry/ Industry tips: How to find a job in the game industry] - by ''[http://www.boomzap.com/ Christopher Natsuume]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Frank tips about job searching.&lt;br /&gt;
* [http://www.joelonsoftware.com/articles/ThePhoneScreen.html The Phone Screen] - by ''[http://www.joelonsoftware.com/ Joel &amp;quot;joelonsoftware&amp;quot; Spolsky]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;How companies weed out applicants, and how to present yourself to make the cut.&lt;br /&gt;
* The Polycount threads [http://boards.polycount.net/showthread.php?t=38472 Game and Mod Development Article] and [http://boards.polycount.net/showthread.php?t=42157 Some mod guidelines] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; All you need to know about creating or joining a mod team.&lt;br /&gt;
&lt;br /&gt;
== Resumes ==&lt;br /&gt;
* [http://www.joelonsoftware.com/articles/ResumeRead.html Getting Your Résumé Read] - by ''[http://www.joelonsoftware.com/ Joel &amp;quot;joelonsoftware&amp;quot; Spolsky]''&lt;br /&gt;
* [http://www.joelonsoftware.com/articles/SortingResumes.html Sorting Resumes] - by ''[http://www.joelonsoftware.com/ Joel &amp;quot;joelonsoftware&amp;quot; Spolsky]''&lt;br /&gt;
&lt;br /&gt;
== Portfolios ==&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=39516 Your Portfolio Repels Jobs] describes the do's and don'ts of online portfolios.&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=44187 Setting up a quick portfolio site] has more portfolio tips.&lt;br /&gt;
&lt;br /&gt;
== Art Tests ==&lt;br /&gt;
* The GameArtisans thread [http://forum.gameartisans.org/forums/showthread.php?t=5970 Art Test Master List]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Links to art tests that game companies ask their art applicants to complete.&lt;br /&gt;
&lt;br /&gt;
== Interviews ==&lt;br /&gt;
* [http://www.boston.com/bostonworks/galleries/job_interview_tips?pg=2 10 Tips for Your First Interview] - by ''Dave Sanford''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Time-tested interview strategies:&lt;br /&gt;
*# Research&lt;br /&gt;
*# Practice&lt;br /&gt;
*# Clothing&lt;br /&gt;
*# Get there early&lt;br /&gt;
*# Observe&lt;br /&gt;
*# Know thyself&lt;br /&gt;
*# Handshake&lt;br /&gt;
*# Listen&lt;br /&gt;
*# Finishing&lt;br /&gt;
*# Follow up&lt;br /&gt;
* [http://hotjobs.yahoo.com/career-experts-four_steps_to_a_better_job_interview-51 Four Steps to a Better Job Interview] - by ''Brad Karsh''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Four simple things to improve your interviews.&lt;br /&gt;
*# Relax, not a battle of wits.&lt;br /&gt;
*# Job description = questions that you'll be asked.&lt;br /&gt;
*# Have answers about why you did certain things.&lt;br /&gt;
*# Have questions about them.&lt;br /&gt;
* [http://www.jobbankusa.com/interviews/articles_tips/10_follow_up_rules.html Ten Tips for the Interview Follow Up] - by ''Carole Martin''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;How to avoid a non-response after your interview.&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=57317 job interview, 2-3 hours, why so long?]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Game developers talking about the interview process they do, or have been through.&lt;br /&gt;
&lt;br /&gt;
== Salary Research ==&lt;br /&gt;
Do the research to figure out what a fair offer is for your skill level and geographic area.&lt;br /&gt;
&lt;br /&gt;
* [http://gamedeveloper.texterity.com/gamedeveloper/2009fall/#pg33 2009 Game Industry Salary Survey] - from ''[http://www.gdmag.com/ Game Developer magazine]'' (mostly USA) See also [http://gamedeveloper.texterity.com/gamedeveloper/2008careerguide/#pg13 2008], [http://www.gamecareerguide.com/features/416/the_game_industry_salary_survey_.php?page=1 2007], [http://www.gamecareerguide.com/features/266/are_you_in_demand_2006_game_.php?page=1 2006].&lt;br /&gt;
* [http://www.glassdoor.com/Salaries/us-computer-software-senior-artist-salary-SRCH_IL.0,2_IN1_II1121.3,20_KO21,34_SDAS.htm# Senior Artist Salaries at Computer Software companies in United States] - from ''[http://www.glassdoor.com Glassdoor.com]'' (USA) Customize your search, and enter your salary data for full access.&lt;br /&gt;
* [http://www.flcdatacenter.com/CaseH1B.aspx The Foreign Labor Certification Data Center - Online Wage Library] - from the ''[http://www.doleta.gov/ US Department of Labor]'' (USA)&lt;br /&gt;
&lt;br /&gt;
== Negotiation ==&lt;br /&gt;
Salary negotiation is an essential skill that will be put to the test when you interview. &lt;br /&gt;
&lt;br /&gt;
* [http://realtimecollisiondetection.net/blog/?p=70 Salary of a game programmer (artist, designer, or producer)] - by ''[http://realtimecollisiondetection.net Christer Ericcson]'', Sony Computer Entertainment&lt;br /&gt;
* [http://www.boomzap.com/blog/industry-tips-how-to-not-ask-for-money/ Industry tips: How to not ask for money] - by ''[http://www.boomzap.com/ Christopher Natsuume]''&lt;br /&gt;
* [http://www.kclabor.org/kyrmpp.htm Know Your Rights - The Myth of Pay Privacy] - by ''[http://www.kclabor.org KC Labor]'' (USA)&lt;br /&gt;
&lt;br /&gt;
== Employee Rights ==&lt;br /&gt;
* [http://www.nlrb.gov/about_us/overview/national_labor_relations_act.aspx National Labor Relations Board] (USA)&lt;br /&gt;
* [http://www.direct.gov.uk/en/Employment/Employees/index.htm Directgov Employment Terms and Conditions] (UK)&lt;br /&gt;
* [http://www.kclabor.org/know_your_rights1.htm Know Your Rights] - by [http://www.kclabor.org KC Labor] (USA)&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=71929 Discussing issues at work, grounds for firing?] has information about workers discussing their compensation with one another.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:GameIndustry</id>
		<title>Category:GameIndustry</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:GameIndustry"/>
				<updated>2010-07-15T09:42:00Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: Adding Category fullsearch to this category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ## page was renamed from [[GameBusiness]] --&amp;gt;&lt;br /&gt;
= Category Game Industry =&lt;br /&gt;
Links and articles about the game industry: how to get game jobs, how to manage your role, etc.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Industry Insight ==&lt;br /&gt;
* GDC 2010 [http://www.gdcvault.com/play/1012343/The-Belly-of-the-Whale The Belly of the Whale: Living a Creative Life in the Game Industry] - by [http://www.bobbates.com/ Bob Bates]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Insights into how creative types can survive and thrive in the game industry. Highly recommended [http://www.polycount.com/forum/showthread.php?t=74876 by many Polycounters].&lt;br /&gt;
* [[GameStatistics]] has more links.&lt;br /&gt;
&lt;br /&gt;
== Job Searching ==&lt;br /&gt;
Most game developers get their jobs by word of mouth, this industry puts personal contacts first and foremost. Networking is key; keep in contact with your friends and former co-workers.&lt;br /&gt;
&lt;br /&gt;
* [http://www.boomzap.com/blog/industry-tips-how-to-find-a-job-in-the-game-industry/ Industry tips: How to find a job in the game industry] - by ''[http://www.boomzap.com/ Christopher Natsuume]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Frank tips about job searching.&lt;br /&gt;
* [http://www.joelonsoftware.com/articles/ThePhoneScreen.html The Phone Screen] - by ''[http://www.joelonsoftware.com/ Joel &amp;quot;joelonsoftware&amp;quot; Spolsky]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;How companies weed out applicants, and how to present yourself to make the cut.&lt;br /&gt;
* The Polycount threads [http://boards.polycount.net/showthread.php?t=38472 Game and Mod Development Article] and [http://boards.polycount.net/showthread.php?t=42157 Some mod guidelines] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; All you need to know about creating or joining a mod team.&lt;br /&gt;
&lt;br /&gt;
== Resumes ==&lt;br /&gt;
* [http://www.joelonsoftware.com/articles/ResumeRead.html Getting Your Résumé Read] - by ''[http://www.joelonsoftware.com/ Joel &amp;quot;joelonsoftware&amp;quot; Spolsky]''&lt;br /&gt;
* [http://www.joelonsoftware.com/articles/SortingResumes.html Sorting Resumes] - by ''[http://www.joelonsoftware.com/ Joel &amp;quot;joelonsoftware&amp;quot; Spolsky]''&lt;br /&gt;
&lt;br /&gt;
== Portfolios ==&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=39516 Your Portfolio Repels Jobs] describes the do's and don'ts of online portfolios.&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=44187 Setting up a quick portfolio site] has more portfolio tips.&lt;br /&gt;
&lt;br /&gt;
== Art Tests ==&lt;br /&gt;
* The GameArtisans thread [http://forum.gameartisans.org/forums/showthread.php?t=5970 Art Test Master List]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Links to art tests that game companies ask their art applicants to complete.&lt;br /&gt;
&lt;br /&gt;
== Interviews ==&lt;br /&gt;
* [http://www.boston.com/bostonworks/galleries/job_interview_tips?pg=2 10 Tips for Your First Interview] - by ''Dave Sanford''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Time-tested interview strategies:&lt;br /&gt;
*# Research&lt;br /&gt;
*# Practice&lt;br /&gt;
*# Clothing&lt;br /&gt;
*# Get there early&lt;br /&gt;
*# Observe&lt;br /&gt;
*# Know thyself&lt;br /&gt;
*# Handshake&lt;br /&gt;
*# Listen&lt;br /&gt;
*# Finishing&lt;br /&gt;
*# Follow up&lt;br /&gt;
* [http://hotjobs.yahoo.com/career-experts-four_steps_to_a_better_job_interview-51 Four Steps to a Better Job Interview] - by ''Brad Karsh''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Four simple things to improve your interviews.&lt;br /&gt;
*# Relax, not a battle of wits.&lt;br /&gt;
*# Job description = questions that you'll be asked.&lt;br /&gt;
*# Have answers about why you did certain things.&lt;br /&gt;
*# Have questions about them.&lt;br /&gt;
* [http://www.jobbankusa.com/interviews/articles_tips/10_follow_up_rules.html Ten Tips for the Interview Follow Up] - by ''Carole Martin''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;How to avoid a non-response after your interview.&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=57317 job interview, 2-3 hours, why so long?]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Game developers talking about the interview process they do, or have been through.&lt;br /&gt;
&lt;br /&gt;
== Salary Research ==&lt;br /&gt;
Do the research to figure out what a fair offer is for your skill level and geographic area.&lt;br /&gt;
&lt;br /&gt;
* [http://gamedeveloper.texterity.com/gamedeveloper/2009fall/#pg33 2009 Game Industry Salary Survey] - from ''[http://www.gdmag.com/ Game Developer magazine]'' (mostly USA) See also [http://gamedeveloper.texterity.com/gamedeveloper/2008careerguide/#pg13 2008], [http://www.gamecareerguide.com/features/416/the_game_industry_salary_survey_.php?page=1 2007], [http://www.gamecareerguide.com/features/266/are_you_in_demand_2006_game_.php?page=1 2006].&lt;br /&gt;
* [http://www.glassdoor.com/Salaries/us-computer-software-senior-artist-salary-SRCH_IL.0,2_IN1_II1121.3,20_KO21,34_SDAS.htm# Senior Artist Salaries at Computer Software companies in United States] - from ''[http://www.glassdoor.com Glassdoor.com]'' (USA) Customize your search, and enter your salary data for full access.&lt;br /&gt;
* [http://www.flcdatacenter.com/CaseH1B.aspx The Foreign Labor Certification Data Center - Online Wage Library] - from the ''[http://www.doleta.gov/ US Department of Labor]'' (USA)&lt;br /&gt;
&lt;br /&gt;
== Negotiation ==&lt;br /&gt;
Salary negotiation is an essential skill that will be put to the test when you interview. &lt;br /&gt;
&lt;br /&gt;
* [http://realtimecollisiondetection.net/blog/?p=70 Salary of a game programmer (artist, designer, or producer)] - by ''[http://realtimecollisiondetection.net Christer Ericcson]'', Sony Computer Entertainment&lt;br /&gt;
* [http://www.boomzap.com/blog/industry-tips-how-to-not-ask-for-money/ Industry tips: How to not ask for money] - by ''[http://www.boomzap.com/ Christopher Natsuume]''&lt;br /&gt;
* [http://www.kclabor.org/kyrmpp.htm Know Your Rights - The Myth of Pay Privacy] - by ''[http://www.kclabor.org KC Labor]'' (USA)&lt;br /&gt;
&lt;br /&gt;
== Employee Rights ==&lt;br /&gt;
* [http://www.nlrb.gov/about_us/overview/national_labor_relations_act.aspx National Labor Relations Board] (USA)&lt;br /&gt;
* [http://www.direct.gov.uk/en/Employment/Employees/index.htm Directgov Employment Terms and Conditions] (UK)&lt;br /&gt;
* [http://www.kclabor.org/know_your_rights1.htm Know Your Rights] - by [http://www.kclabor.org KC Labor] (USA)&lt;br /&gt;
* The Polycount thread [http://boards.polycount.net/showthread.php?t=71929 Discussing issues at work, grounds for firing?] has information about workers discussing their compensation with one another.&lt;br /&gt;
&lt;br /&gt;
[[Category:GameIndustry]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/User:Cman2k</id>
		<title>User:Cman2k</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/User:Cman2k"/>
				<updated>2010-07-14T07:17:05Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= [[CarlosMontero]] =&lt;br /&gt;
&amp;lt;!-- ## Optional biography here. --&amp;gt;&lt;br /&gt;
=== Nickname Origin ===&lt;br /&gt;
cman2k: back from the AOL days when I was 13 and my name was cmans2kool B)&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* Forum name: [http://www.polycount.com/forum/member.php?u=15804 cman2k]&lt;br /&gt;
* Website: http://carlosmontero.com&lt;br /&gt;
* Email: &amp;lt;&amp;lt;[[MailTo]](cman2k AT gmail DOT com)&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Additive Color Model, , to=&amp;quot;^----$&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Homepage]] [[Category:WikiMembers]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/User:Cman2k</id>
		<title>User:Cman2k</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/User:Cman2k"/>
				<updated>2010-07-14T07:14:16Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= [[CarlosMontero]] =&lt;br /&gt;
&amp;lt;!-- ## Optional biography here. --&amp;gt;&lt;br /&gt;
=== Nickname Origin ===&lt;br /&gt;
cman2k: back from the AOL days when I was 13 and my name was cmans2kool B)&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* Forum name: [http://www.polycount.com/forum/member.php?u=15804 cman2k]&lt;br /&gt;
* Website: http://carlosmontero.com&lt;br /&gt;
* Email: &amp;lt;&amp;lt;[[MailTo]](cman2k AT gmail DOT com)&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Additive Color Blending, , to=&amp;quot;^----$&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Homepage]] [[Category:WikiMembers]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/User:Cman2k</id>
		<title>User:Cman2k</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/User:Cman2k"/>
				<updated>2010-07-14T07:12:32Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: example of including a glossary page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= [[CarlosMontero]] =&lt;br /&gt;
&amp;lt;!-- ## Optional biography here. --&amp;gt;&lt;br /&gt;
=== Nickname Origin ===&lt;br /&gt;
cman2k: back from the AOL days when I was 13 and my name was cmans2kool B)&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* Forum name: [http://www.polycount.com/forum/member.php?u=15804 cman2k]&lt;br /&gt;
* Website: http://carlosmontero.com&lt;br /&gt;
* Email: &amp;lt;&amp;lt;[[MailTo]](cman2k AT gmail DOT com)&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{:Additive Color Blending}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Homepage]] [[Category:WikiMembers]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Shaders</id>
		<title>Category:Shaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Shaders"/>
				<updated>2010-07-14T05:38:58Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Shaders =&lt;br /&gt;
Links to popular shaders and articles about how to make new shaders. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;P3MS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Popular 3ds Max Shaders ==&lt;br /&gt;
(in no particular order)&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.3pointstudios.com/3pointshader_about.shtml 3Point Shader Lite]''' by [http://www.3pointstudios.com 3 Point Studios]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader with many options, including near-perfect results for 3ds Max generated normal maps. See the Polycount thread [http://boards.polycount.net/showthread.php?t=72861 3Point Shader Lite - Shader material editor and Quality Mode normalmaps for 3ds Max].&lt;br /&gt;
* '''[http://www.greveson.co.uk/shaders/MoP_TextureBlender.fx MoP Texture Blender]''' by [http://www.greveson.co.uk Paul &amp;quot;MoP&amp;quot; Greveson]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; This shader uses blendmodulate for vertex blending with per-pixel detail. From the Polycount thread [http://boards.polycount.net/showthread.php?p=1024948#post1024948 The Snow and Ice of Uncharted2?].&lt;br /&gt;
* '''[http://www.luxinia.de/index.php/ArtTools/3dsmaxFX#genbrdf 3ds Max version of the BRDF shader]''' ported by [http://crazybutcher.cottages.polycount.com/ Christoph &amp;quot;CrazyButcher&amp;quot; Kubisch]. &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Original [http://www.mentalwarp.com/~brice/brdf.php BRDF shader for Maya] by [http://www.mentalwarp.com/~brice Brice Vandemoortele] and [http://www.kjapi.com/ Cedric Caillaud]. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=49920 Free Maya/max cgfx/fx Shader]''. '''Update:''' [http://boards.polycount.net/showthread.php?p=821862#post821862 New version here] with many updates, including object-space normal maps, relief mapping, self-shadowing, etc. &lt;br /&gt;
* '''[http://www.laurenscorijn.com/viewportshader 3ds Max viewport shader]''' by [http://www.laurenscorijn.com/ Laurens &amp;quot;Xoliul&amp;quot; Corijn].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;  More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=62006 Xoliul's 3DS Max Viewport Shader]''.&lt;br /&gt;
* '''[http://blog.maginot.eu/index.php?seite=people&amp;amp;people=till&amp;amp;page=mhn2048106717 TF2 Shader for 3ds Max]''' and '''[http://blog.maginot.eu/index.php?p=till.1__scriptnstuff_shader_toon Toon/Comic Shader for 3ds Max]''' by [http://www.till.maginot.eu/ Till &amp;quot;Rollin&amp;quot; Maginot].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=64453 TF2 and TOON realtime viewport shader (3ds max)]''.&lt;br /&gt;
* '''[http://rtshaders.deviantart.com/art/Agusturinn-Shader-Demo-100883093 Agusturinn Shader Demo]''' by [http://rtshaders.deviantart.com Wang &amp;quot;RTshaders&amp;quot; Jing].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader features: ''&amp;quot;One UV texture, Two point lights, Diffuse map(include alpha which control transparency), AO(ambient occlusion) map or Lightmap share the same channel, Normal map,Specular map,Specular level map,Gloss map,Emissive map, Two type of Cubemap---One is diffuse cubemap for generating IBL(image based lighting), the other is enviroment cubemap for reflection.&amp;quot;''&lt;br /&gt;
* '''[http://rtshaders.deviantart.com/art/Paragalis-Shader-Demo-110994545 Paragalis Shader Demo]''' by [http://rtshaders.deviantart.com Wang &amp;quot;RTshaders&amp;quot; Jing].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader features: ''&amp;quot;Post effect, 3dsmax2008/2009 viewport shadowmap, Subsurface scattering, Cubemap Image based lighting, Diffuse(alpha channel control opacity),Normal map,Ao map/Light map,Specular,Specular lever(mask),Gloss etc., Shadermodel 2.x compatible for AMD ATI card.&amp;quot;''&lt;br /&gt;
* '''[http://fabio.policarpo.nom.br/Demos.html Planar Relief Mapping]''' by [http://fabio.policarpo.nom.br Fabio Policarpo].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; ''&amp;quot;This version works with any mesh and execute the ray intersection in tangent space. Apparent depth can be controlled with a factor (aspect from width or height divided by depth). So depth 0.1 means 10% of texture tile width/height in object space. This version does not require any extra information passed on vertices.&amp;quot;''&lt;br /&gt;
* '''[http://www.bencloward.com/resources_shaders.shtml Shaders]''' by [http://www.bencloward.com Ben Cloward].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; He has a bunch of HLSL shaders available for normal mapping, ambient occlusion, car paint, skin, etc.&lt;br /&gt;
* '''[http://www.jistyles.com/main.php?id=doc&amp;amp;page=hlsl SSS Skin Shader]''' by [http://www.jistyles.com/ J.I. Styles].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; ''&amp;quot;The aim of this shader is to emulate all the perceptual qualities of realistic skin like translucency (sss), fresnal specular, gloss, oiliness, etc - kludging what I can to produce fast yet realistic looking results.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;PMS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Popular Maya Shaders ==&lt;br /&gt;
(in no particular order)&lt;br /&gt;
&lt;br /&gt;
* '''[http://blog.leocov.com/search/label/hlsl lcNextGenShader]''' by [http://www.leocov.com/ Leonardo &amp;quot;chronic&amp;quot; Covarrubias]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Has many techniques and parameters, including normal mapping, specular, ambient env cube, SSS, etc.&lt;br /&gt;
* '''[http://www.mentalwarp.com/~brice/brdf.php BRDF shader for Maya]''' by [http://www.mentalwarp.com/~brice Brice Vandemoortele] and [http://www.kjapi.com/ Cedric Caillaud]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.luxinia.de/index.php/ArtTools/3dsmaxFX#genbrdf 3ds Max version] ported by [http://crazybutcher.cottages.polycount.com/ Christoph &amp;quot;CrazyButcher&amp;quot; Kubisch]. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=49920 Free Maya/max cgfx/fx Shader]''. '''Update:''' [http://boards.polycount.net/showthread.php?p=821862#post821862 New version here] with many updates, including object-space normal maps, relief mapping, self-shadowing, etc. &lt;br /&gt;
* '''[http://www.kostas.se/shader/ Maya CG shader]''' by [http://www.kostas.se Kostas &amp;quot;Kodde&amp;quot; Gialitakis]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Also supports a BRDF map. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69161 &amp;quot;KoddeShader&amp;quot;, a Maya CGFX shader]''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Creating Shaders ==&lt;br /&gt;
* [http://tech-artists.org/wiki/Portal:Shaders The Tech-Artists.Org Shaders Portal]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A ton of great information about creating shaders.&lt;br /&gt;
* [http://www.moddb.com/games/unreal-tournament-3/tutorials/tf2-shading-in-ut3 TF2 Shading in UT3] by [http://polyphobia.de Steffen &amp;quot;Neox&amp;quot; &amp;quot;polyphobia&amp;quot; Unger]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shows how the Team Fortress 2 look can be emulated using a shader network in Unreal Engine 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]] [[Category:Texturing]] [[Category:Portfolio]] [[Category:Technology]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Shaders</id>
		<title>Category:Shaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Shaders"/>
				<updated>2010-07-14T04:39:37Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: Adding CategoryPortfolio and CategoryTechnology to this category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Shaders =&lt;br /&gt;
Links to popular shaders and articles about how to make new shaders. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;P3MS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Popular 3ds Max Shaders ==&lt;br /&gt;
(in no particular order)&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.3pointstudios.com/3pointshader_about.shtml 3Point Shader Lite]''' by [http://www.3pointstudios.com 3 Point Studios]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader with many options, including near-perfect results for 3ds Max generated normal maps. See the Polycount thread [http://boards.polycount.net/showthread.php?t=72861 3Point Shader Lite - Shader material editor and Quality Mode normalmaps for 3ds Max].&lt;br /&gt;
* '''[http://www.greveson.co.uk/shaders/MoP_TextureBlender.fx MoP Texture Blender]''' by [http://www.greveson.co.uk Paul &amp;quot;MoP&amp;quot; Greveson]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; This shader uses blendmodulate for vertex blending with per-pixel detail. From the Polycount thread [http://boards.polycount.net/showthread.php?p=1024948#post1024948 The Snow and Ice of Uncharted2?].&lt;br /&gt;
* '''[http://www.luxinia.de/index.php/ArtTools/3dsmaxFX#genbrdf 3ds Max version of the BRDF shader]''' ported by [http://crazybutcher.cottages.polycount.com/ Christoph &amp;quot;CrazyButcher&amp;quot; Kubisch]. &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Original [http://www.mentalwarp.com/~brice/brdf.php BRDF shader for Maya] by [http://www.mentalwarp.com/~brice Brice Vandemoortele] and [http://www.kjapi.com/ Cedric Caillaud]. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=49920 Free Maya/max cgfx/fx Shader]''. '''Update:''' [http://boards.polycount.net/showthread.php?p=821862#post821862 New version here] with many updates, including object-space normal maps, relief mapping, self-shadowing, etc. &lt;br /&gt;
* '''[http://www.laurenscorijn.com/viewportshader 3ds Max viewport shader]''' by [http://www.laurenscorijn.com/ Laurens &amp;quot;Xoliul&amp;quot; Corijn].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;  More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=62006 Xoliul's 3DS Max Viewport Shader]''.&lt;br /&gt;
* '''[http://blog.maginot.eu/index.php?seite=people&amp;amp;people=till&amp;amp;page=mhn2048106717 TF2 Shader for 3ds Max]''' and '''[http://blog.maginot.eu/index.php?p=till.1__scriptnstuff_shader_toon Toon/Comic Shader for 3ds Max]''' by [http://www.till.maginot.eu/ Till &amp;quot;Rollin&amp;quot; Maginot].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=64453 TF2 and TOON realtime viewport shader (3ds max)]''.&lt;br /&gt;
* '''[http://rtshaders.deviantart.com/art/Agusturinn-Shader-Demo-100883093 Agusturinn Shader Demo]''' by [http://rtshaders.deviantart.com Wang &amp;quot;RTshaders&amp;quot; Jing].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader features: ''&amp;quot;One UV texture, Two point lights, Diffuse map(include alpha which control transparency), AO(ambient occlusion) map or Lightmap share the same channel, Normal map,Specular map,Specular level map,Gloss map,Emissive map, Two type of Cubemap---One is diffuse cubemap for generating IBL(image based lighting), the other is enviroment cubemap for reflection.&amp;quot;''&lt;br /&gt;
* '''[http://rtshaders.deviantart.com/art/Paragalis-Shader-Demo-110994545 Paragalis Shader Demo]''' by [http://rtshaders.deviantart.com Wang &amp;quot;RTshaders&amp;quot; Jing].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader features: ''&amp;quot;Post effect, 3dsmax2008/2009 viewport shadowmap, Subsurface scattering, Cubemap Image based lighting, Diffuse(alpha channel control opacity),Normal map,Ao map/Light map,Specular,Specular lever(mask),Gloss etc., Shadermodel 2.x compatible for AMD ATI card.&amp;quot;''&lt;br /&gt;
* '''[http://fabio.policarpo.nom.br/Demos.html Planar Relief Mapping]''' by [http://fabio.policarpo.nom.br Fabio Policarpo].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; ''&amp;quot;This version works with any mesh and execute the ray intersection in tangent space. Apparent depth can be controlled with a factor (aspect from width or height divided by depth). So depth 0.1 means 10% of texture tile width/height in object space. This version does not require any extra information passed on vertices.&amp;quot;''&lt;br /&gt;
* '''[http://www.bencloward.com/resources_shaders.shtml Shaders]''' by [http://www.bencloward.com Ben Cloward].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; He has a bunch of HLSL shaders available for normal mapping, ambient occlusion, car paint, skin, etc.&lt;br /&gt;
* '''[http://www.jistyles.com/main.php?id=doc&amp;amp;page=hlsl SSS Skin Shader]''' by [http://www.jistyles.com/ J.I. Styles].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; ''&amp;quot;The aim of this shader is to emulate all the perceptual qualities of realistic skin like translucency (sss), fresnal specular, gloss, oiliness, etc - kludging what I can to produce fast yet realistic looking results.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;PMS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Popular Maya Shaders ==&lt;br /&gt;
(in no particular order)&lt;br /&gt;
&lt;br /&gt;
* '''[http://blog.leocov.com/search/label/hlsl lcNextGenShader]''' by [http://www.leocov.com/ Leonardo &amp;quot;chronic&amp;quot; Covarrubias]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Has many techniques and parameters, including normal mapping, specular, ambient env cube, SSS, etc.&lt;br /&gt;
* '''[http://www.mentalwarp.com/~brice/brdf.php BRDF shader for Maya]''' by [http://www.mentalwarp.com/~brice Brice Vandemoortele] and [http://www.kjapi.com/ Cedric Caillaud]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.luxinia.de/index.php/ArtTools/3dsmaxFX#genbrdf 3ds Max version] ported by [http://crazybutcher.cottages.polycount.com/ Christoph &amp;quot;CrazyButcher&amp;quot; Kubisch]. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=49920 Free Maya/max cgfx/fx Shader]''. '''Update:''' [http://boards.polycount.net/showthread.php?p=821862#post821862 New version here] with many updates, including object-space normal maps, relief mapping, self-shadowing, etc. &lt;br /&gt;
* '''[http://www.kostas.se/shader/ Maya CG shader]''' by [http://www.kostas.se Kostas &amp;quot;Kodde&amp;quot; Gialitakis]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Also supports a BRDF map. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69161 &amp;quot;KoddeShader&amp;quot;, a Maya CGFX shader]''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Creating Shaders ==&lt;br /&gt;
* [http://tech-artists.org/wiki/Portal:Shaders The Tech-Artists.Org Shaders Portal]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A ton of great information about creating shaders.&lt;br /&gt;
* [http://www.moddb.com/games/unreal-tournament-3/tutorials/tf2-shading-in-ut3 TF2 Shading in UT3] by [http://polyphobia.de Steffen &amp;quot;Neox&amp;quot; &amp;quot;polyphobia&amp;quot; Unger]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shows how the Team Fortress 2 look can be emulated using a shader network in Unreal Engine 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]] [[Category:Portfolio]] [[Category:Technology]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Environment</id>
		<title>Category:Environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Environment"/>
				<updated>2010-07-14T04:32:29Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: Moving Level Design information to CategoryLevelDesign&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Environment =&lt;br /&gt;
Topics about the design and creation of levels and environment artwork in games.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Concepting ==&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73282 Digital Environment/Landscape painting for beginners] Polycount thread&lt;br /&gt;
* [http://www.conceptart.org/forums/forumdisplay.php?f=140 Enviromentoring] and [http://www.conceptart.org/forums/forumdisplay.php?f=42 Tutorials, Tips &amp;amp; Tricks] - at [http://www.conceptart.org ConceptArt.Org]&lt;br /&gt;
* [http://www.handprint.com/HP/WCL/tech10.html elements of perspective] - by ''[http://www.handprint.com Bruce MacEvoy]'' &lt;br /&gt;
* [http://www.youtube.com/watch?v=NwBcssDYJ3o Whit Brachna Snowy Mountain] timelapse video with voiceover - by ''[http://brushbook.com Whit Brachna]'' ([http://www.youtube.com/user/MassiveDVD#g/u more freebies from Massive Black])&lt;br /&gt;
* [http://artpad.org/wordpress/wp-content/gallery/old-work/step%20by%20step.jpg Coastline] step by step image - by ''[http://artpad.org Jaime Jones]'' ([http://artpad.org/wordpress/wp-content/gallery/2005-2007/coastline2.jpg final])&lt;br /&gt;
* [http://daarken.com/flash2005/tutorials/fire_escape_02.pdf Fire Escape] step by step image - by ''[http://daarken.com/ Daarken]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/category/43/Feng-Zhu Concept Design Video Tutorials] ($) - by ''[http://www.artbyfeng.com/ Feng Zhu]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/product/55/The-Techniques-of-Dylan-Cole-1 Introduction to Landscape Matte Painting] ($) - by ''[http://www.dylancolestudio.com/ Dylan Cole]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[2D Tutorials|2D Tutorials]] section has more tutorials and resources for concept painting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EW&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;EWAM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Workflow &amp;amp; Modularity ==&lt;br /&gt;
&lt;br /&gt;
* [http://udn.epicgames.com/Two/WorkflowAndModularity.html Workflow techniques and modularity with Unreal game technology] - by ''[http://www.epicgames.com Epic Games]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A guide to setting up your art-to-level-design pipeline and designing modularly.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=678052#post678052 Environment workflow @ EpicGames] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A summary of the modular workflow used at Epic on Unreal Tournament 3.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=924231#post924231 Gears of War 2 modular modeling] - by ''[http://wiki.polycount.net/Rorshach Kevin Johnstone]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots of using the grid for modular work, as well as a ton of useful insight into the Environment worflow at Epic. A highly recommended read!&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1101338#post1101338 Modular brick wall tiling] - by ''[http://iamglynnsmith.com/ Glynn Smith]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots for sculpting modular brick walls.&lt;br /&gt;
* [http://www.brameulaers.com/tutorials/generic_wall_tutorial/generic_wall_tutorial.html Generic wall tutorial] - by ''[http://www.brameulaers.com Bram &amp;quot;Peris&amp;quot; Eulaers]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using 3ds Max and Mudbox to sculpt tilable modular sections for a stone wall.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=50160 Rock modeling approaches] - a [http://boards.polycount.net/ Polycount] thread &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A variety of approaches for sculpting individual rocks and tilable cliffs.&lt;br /&gt;
* [http://osart3d.wordpress.com/home-page/tutorial-creating-perfectly-tiling-meshes-in-zbrush-for-use-in-videogame-environments/ Creating Perfectly Tiling Meshes in Zbrush for use in Videogame Environments] - by ''[http://osart3d.wordpress.com/ Owen &amp;quot;SHEPEIRO&amp;quot; Shepherd]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using ZBrush's 2.5D canvas to tile stamped meshes, then using Maya to model tilable geometry.&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsindex.htm Unreal Engine 3 tutorials, game industry articles, level design/art/technical tutorials] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of tutorials and articles about designing levels with the Unreal Technology.&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=39&amp;amp;t=444791&amp;amp;page=7&amp;amp;pp=15#post4855106 Environment workflow from an artist working on a Crysis mod] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A modular city building and its texture sheet. &lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54178 Mod Facade Challenge] - by ''[http://www.linkedin.com/in/earthquake Joe &amp;quot;EarthQuake&amp;quot; Wilson]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking up a building into modular pieces and designing the texture sheet.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=51254 Maintaining the suspension of disbelief...] Polycount thread&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Discussion about the importance of using imperfection to create believable worlds.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52743 Adam Bromell's sketchbook thread] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking an environment down into modular pieces.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52565 Chris' sketchbook thread] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environment design &amp;amp; modular workflow.&lt;br /&gt;
* [http://www.3dbuzz.com/vbforum/sv_videonav.php?fid=836eb5e382b5d9f430df48883fca918e Level Design Video Tutorials] - from ''[http://www.3dbuzz.com 3DBuzz]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of useful tutorials and design tips about creating levels.&lt;br /&gt;
* [http://www.chrisalbeluhn.com/Building_Layout_Guideline_Tutorial.html Visually Appealing Building Guide] - by ''[http://www.chrisalbeluhn.com Christopher Albeluhn]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;An excellent breakdown of how to create visual interest with game buildings. [http://www.chrisalbeluhn.com/3D_Tutorials.html Additional tutorials here].&lt;br /&gt;
&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[DigitalSculpting#TS|Digital Sculpting]] section has more tutorials about modular workflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Modeling ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=62114 Gears2 Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54311 UT3 &amp;amp; Gears Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [[attachment:rorshach_scifi_supportbeam.pdf|SciFi Support Beam PDF]] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://chrisholden.net/tutor/ Environment tutorials] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=40608 Environment modeling basics] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Category:Modeling]] wiki section has more modeling tutorials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EF&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Foliage ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1021264 3D TreesTutorials] thread from the ''[http://boards.polycount.net Polycount boards]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Multiple methods.&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/11251-trees-beginners-3ds-max-tutorial.html Trees for Beginners in 3ds Max Tutorial] - by ''&amp;quot;braveryd&amp;quot;''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the AEC Extended: Foliage tree generator in 3ds Max.&lt;br /&gt;
* [http://www.andyzibits.com/tut_particle_tree_generation.html Tree creation using particle generator] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in 3ds Max.&lt;br /&gt;
* [http://learnfobia.com/category-Maya-129/tutorial-Sprite-Based-Particle-Trees-2259.html Sprite-Based Particle Trees] - by ''[http://stores.lulu.com/sunchirp Steven J. Tubbrit]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in Maya.&lt;br /&gt;
* [http://www.andyzibits.com/tut_maya_low_poly.html Ultra-efficient tree texturing and modeling] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture and branches.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1020341#post1020341 Low-poly Tree Using Maya PaintFX] - by ''[http://www.mobygames.com/developer/sheet/view/developerId,107125/ Jeramy Cooke]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture, then hand-modeling the tree.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1152529#post1152529 Bending vertex normals and using vertex color] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the Edit Normals modifier in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1149155#post1149155 Bending the vertex normals with Normal Thief] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the [http://www.scriptspot.com/3ds-max/scripts/normal-thief Normal Thief] script in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://http.developer.nvidia.com/GPUGems3/gpugems3_ch16.html Vegetation Procedural Animation and Shading in Crysis] - by ''[https://www.cmpevents.com/GD08/a.asp?option=G&amp;amp;V=3&amp;amp;id=563008 Tiago Sousa]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A detailed overview of Crytek's process for vegetation shading.&lt;br /&gt;
* [http://3dfolio.com/files/tree_tut.pdf Tree Modeling Techniques and Principles] (PDF) - by ''[http://www.3dfolio.com/ Matthew D'Onofrio]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Modeling efficient low-poly branches in 3ds Max using ''Extrude Along Spline''.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=67620 Hedges and Topiary a quick tutorial] - by [http://www.vigville.com/ 'Vig']&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Modeling and texturing method for stylized bushes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=72325 Tree making fast technique?] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree modeling techniques discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73556 Tree texturing] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree texturing discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=74330 Real quick tree texturing question] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More tree stuff.&lt;br /&gt;
* Stuff to research: &lt;br /&gt;
** Warhammer Online trees? &lt;br /&gt;
** RexM trees? &lt;br /&gt;
** Adam trees?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FMT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Foliage Modeling Tools ===&lt;br /&gt;
There are a lot of tools for modeling high-resolution plants, but few for modeling game-resolution models. Here are a few...&lt;br /&gt;
* [http://ngplant.sourceforge.net/ ngPlant]&lt;br /&gt;
* [http://www.frecle.net/index.php?show=treed.about frecle tree[d]] (exports formats .B3D, .OBJ, .X)&lt;br /&gt;
* [http://www.scriptspot.com/3ds-max/scripts/tree-maker TreeMaker script for 3ds Max]&lt;br /&gt;
* [http://www.branches.ws/ Branches script for 3ds Max]&lt;br /&gt;
* [http://www.youtube.com/watch?v=bG79EosNiBQ SpeedTree in UDK] ($)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Sculpting ==&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] See the [[DigitalSculpting]] section of the Polycount wiki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Skies ==&lt;br /&gt;
* [http://cgtextures.com/textures.php?t=browse&amp;amp;q=23740 CG Textures - Panoramic Skies] free 360-degree sky photos.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=45543 360 HDR skies for sale?] from the [http://boards.polycount.net Polycount forums] has a tutorial and links about photographing HDR skies.&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-create-a-terragen-2-skybox/ How to: Create a Terragen 2 Skybox] by ''[http://www.outpt.co.uk/about/ Outpt]''.&lt;br /&gt;
* [http://3dmotive.com/product-skydome 3dmotive.com - Creating a Skydome] is a tutorial for converting a latlong sky into a spheremap layout and mapping it to a dome mesh with Photoshop and 3ds Max.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68600 Skymap workflow] by ''[http://boards.polycount.net/member.php?u=27009 divi]'' is a quick tutorial about converting a latlong sky into a square dome-like layout that uses all the texture space. [[attachment:Skymap_workflow.pdf|PDF here]]&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-convert-a-skybox-to-a-skydome/ How to: Convert a Skybox to a Skydome] by ''[http://www.outpt.co.uk/about/ Outpt]'' is an in-depth tutorial about converting a cubemap into a latlong image with [http://developer.amd.com/gpu/cubemapgen/pages/default.aspx CubeMapGen], HDRShop, Photoshop, and Unreal.&lt;br /&gt;
* [http://www.e-onsoftware.com/products/ Vue] is a popular skydome creation tool.&lt;br /&gt;
* [http://www.planetside.co.uk/ Terragen] is another popular skydome creation tool.&lt;br /&gt;
* [http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Cube Map|Cube Map]] wiki section describes how to create and use cube maps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ET&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Texturing ==&lt;br /&gt;
* [http://vimeo.com/9067032 Texture Workflow videos] - by ''[http://www.hitenmistry.com/ Hiten &amp;quot;Mistry10&amp;quot; Mistry]'', from the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69850 Mistry's Texture Workflow w/Video]''&lt;br /&gt;
* [http://www.game-artist.net/forums/tutorials/182-step-step-techniques-tiling-textures-3ds-max.html Creating tiling textures in 3dsmax] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://poopinmymouth.com/process/tips/thirding.jpg Thirding - Utilizing your texture space for environment work] - by ''[http://poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis]''&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=46&amp;amp;t=373024 Hard Surface Texture Painting] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&lt;br /&gt;
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=17688 Tutorial: Brick Arch (Baking Multiple Maps in 3dsmax)] - by ''[http://boards.polycount.net/member.php?u=18074 mikebart]''&lt;br /&gt;
* [http://udn.epicgames.com/Two/VertexBlendingTutorial.html UDN UnrealEngine2 Vertex Blending Tutorial] - by ''[http://epicgames.com Epic Games]''&lt;br /&gt;
* [http://boards.polycount.net/showpost.php?p=756818&amp;amp;postcount=18 Using vertex blending to grunge a level and add variety] - by ''[http://www.strangefate.com/ Mario &amp;quot;StrangeFate&amp;quot; Vazquez]''&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsue3terrain.htm UE3 Terrain Tutorial] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.moddb.com/tutorials/lighting-in-game-environments-the-hows-and-whys Lighting in game environments] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.amazon.com/Painting-Light-John-Alton/dp/0520089499 Painting with Light] - by the cinematographer ''John Alton''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;II&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Industry Information ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52862 Percentage of environment artists .vs. character artists at most studios] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52412 What's the difference between a level designer and environment artist?] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[GameBusiness]] wiki section has links for threads and articles about how to get game jobs, how to negotiate your salary, how to manage your role, etc. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;IR&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Inspiration &amp;amp; Reference ==&lt;br /&gt;
* [http://images.google.com/ Google Image Search]&lt;br /&gt;
* [http://flickr.com/search/advanced/ Flickr Image Search]&lt;br /&gt;
* [http://images.search.yahoo.com/images/advanced?ei=UTF-8 Yahoo Image Search]&lt;br /&gt;
* [http://www.bbcmotiongallery.com/Customer/AdvancedSearch.aspx? BBC Motion Gallery] - video reference&lt;br /&gt;
* [http://www.corbismotion.com/ Corbis Motion] - video reference&lt;br /&gt;
* [http://www.gettyimages.com/Search/AdvancedSearch.aspx Getty Images Footage] - video reference&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=34320 Polycount Forums - Reference Thread]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=53002 Polycount Forums - Environment Modeling FAQ &amp;amp; Resources]&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/4379-reference-thread.html Game Artist Forums - Reference Thread]&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]] [[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Environment</id>
		<title>Category:Environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Environment"/>
				<updated>2010-07-14T04:31:08Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: Adding Category fullsearch to this category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Environment =&lt;br /&gt;
Topics about the design and creation of levels and environment artwork in games.&lt;br /&gt;
&lt;br /&gt;
Pages in this category:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;LD&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Level Design ==&lt;br /&gt;
* [http://forums.mapcore.net/viewtopic.php?f=57&amp;amp;t=3913 Level Design Help Files], a collection of help sites for level design themed files - from the ''[http://forums.mapcore.net MapCore]'' forums&lt;br /&gt;
* [http://www.adambromell.com/articles/article3.html Environment Artist: The Story Teller] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&lt;br /&gt;
* [http://developer.valvesoftware.com/wiki/How_To_Develop_A_Map_That_Works How To Develop A Map That Works] - from ''The Valve Developer Community''&lt;br /&gt;
* [http://wiki.beyondunreal.com/Legacy:Map_Planning Map Planning] - from the ''Unreal Wiki''&lt;br /&gt;
* [http://www.fcmaps.net/files/public/tutorials/Bens_Small_Bible_of_Realistic_Multiplayer_Level_Design.pdf Ben's Small Bible of Realistic Multiplayer Level Design] by ''Benjamin Bauer''&lt;br /&gt;
* [http://www.interlopers.net/index.php?page=what-is-level-design What Is Level Design?] - by ''Sérgio Duarte''&lt;br /&gt;
* [http://www.theinspiracy.com/Current%20Rules%20Master%20List.htm The 400 Project] - by ''[http://www.finitearts.com/Pages/biopage.html Hal Barwood]'' &amp;amp; ''[http://www.theinspiracy.com/ Noah Falstein]''&lt;br /&gt;
* [http://www.vancouver.wsu.edu/fac/peabody/game-book/Chapter6.html Design Techniques and Ideals] from ''[http://www.vancouver.wsu.edu/fac/peabody/game-book/Coverpage.html The Art of Computer Game Design]'' - by ''[http://en.wikipedia.org/wiki/Chris_Crawford_%28game_designer%29 Chris Crawford]''&lt;br /&gt;
* [http://www.amazon.com/Level-Design-Concept-Theory-Practice/dp/1568813384 Level Design: Concept, Theory, and Practice] ($) - by ''Rudolf Kremers''&lt;br /&gt;
* [http://www.hourences.com/book/bookgameplay.htm The Hows and Whys of Level Design] ($) - by ''Sjoerd &amp;quot;hourences&amp;quot; De Jong''&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Visual_semiotics Visual Semiotics] - from ''Wikipedia''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environments involve the player more if they have several layers of thinking behind their design.&lt;br /&gt;
* [http://wiki.answers.com/Q/What_is_a_visual_metaphor What is a visual metaphor?] - from ''Answers.com''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;LDB&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Level Design Blogs ==&lt;br /&gt;
* [http://lifeofadesignmonkey.blogspot.com/ Life of a Design Monkey] - a blog by ''Mark Davies'', game designer at Ninja Theory&lt;br /&gt;
* [http://randomencounters.vox.com/ Random Encounters in Imaginary Realms] - a blog by ''Random Encounters'', game designer&lt;br /&gt;
* [http://www.lostgarden.com/ Lost Garden] - a blog by ''Danc'', game designer&lt;br /&gt;
* [http://cliffyb.com/rants/ CliffyB.com] - a blog by ''Cliff Bleszinski'', game designer at Epic Games&lt;br /&gt;
* [http://www.johnsto.co.uk/design Level Design] - a blog by ''David Alexander Johnston'', freelance game designer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Concepting ==&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73282 Digital Environment/Landscape painting for beginners] Polycount thread&lt;br /&gt;
* [http://www.conceptart.org/forums/forumdisplay.php?f=140 Enviromentoring] and [http://www.conceptart.org/forums/forumdisplay.php?f=42 Tutorials, Tips &amp;amp; Tricks] - at [http://www.conceptart.org ConceptArt.Org]&lt;br /&gt;
* [http://www.handprint.com/HP/WCL/tech10.html elements of perspective] - by ''[http://www.handprint.com Bruce MacEvoy]'' &lt;br /&gt;
* [http://www.youtube.com/watch?v=NwBcssDYJ3o Whit Brachna Snowy Mountain] timelapse video with voiceover - by ''[http://brushbook.com Whit Brachna]'' ([http://www.youtube.com/user/MassiveDVD#g/u more freebies from Massive Black])&lt;br /&gt;
* [http://artpad.org/wordpress/wp-content/gallery/old-work/step%20by%20step.jpg Coastline] step by step image - by ''[http://artpad.org Jaime Jones]'' ([http://artpad.org/wordpress/wp-content/gallery/2005-2007/coastline2.jpg final])&lt;br /&gt;
* [http://daarken.com/flash2005/tutorials/fire_escape_02.pdf Fire Escape] step by step image - by ''[http://daarken.com/ Daarken]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/category/43/Feng-Zhu Concept Design Video Tutorials] ($) - by ''[http://www.artbyfeng.com/ Feng Zhu]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/product/55/The-Techniques-of-Dylan-Cole-1 Introduction to Landscape Matte Painting] ($) - by ''[http://www.dylancolestudio.com/ Dylan Cole]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[2D Tutorials|2D Tutorials]] section has more tutorials and resources for concept painting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EW&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;EWAM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Workflow &amp;amp; Modularity ==&lt;br /&gt;
&lt;br /&gt;
* [http://udn.epicgames.com/Two/WorkflowAndModularity.html Workflow techniques and modularity with Unreal game technology] - by ''[http://www.epicgames.com Epic Games]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A guide to setting up your art-to-level-design pipeline and designing modularly.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=678052#post678052 Environment workflow @ EpicGames] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A summary of the modular workflow used at Epic on Unreal Tournament 3.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=924231#post924231 Gears of War 2 modular modeling] - by ''[http://wiki.polycount.net/Rorshach Kevin Johnstone]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots of using the grid for modular work, as well as a ton of useful insight into the Environment worflow at Epic. A highly recommended read!&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1101338#post1101338 Modular brick wall tiling] - by ''[http://iamglynnsmith.com/ Glynn Smith]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots for sculpting modular brick walls.&lt;br /&gt;
* [http://www.brameulaers.com/tutorials/generic_wall_tutorial/generic_wall_tutorial.html Generic wall tutorial] - by ''[http://www.brameulaers.com Bram &amp;quot;Peris&amp;quot; Eulaers]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using 3ds Max and Mudbox to sculpt tilable modular sections for a stone wall.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=50160 Rock modeling approaches] - a [http://boards.polycount.net/ Polycount] thread &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A variety of approaches for sculpting individual rocks and tilable cliffs.&lt;br /&gt;
* [http://osart3d.wordpress.com/home-page/tutorial-creating-perfectly-tiling-meshes-in-zbrush-for-use-in-videogame-environments/ Creating Perfectly Tiling Meshes in Zbrush for use in Videogame Environments] - by ''[http://osart3d.wordpress.com/ Owen &amp;quot;SHEPEIRO&amp;quot; Shepherd]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using ZBrush's 2.5D canvas to tile stamped meshes, then using Maya to model tilable geometry.&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsindex.htm Unreal Engine 3 tutorials, game industry articles, level design/art/technical tutorials] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of tutorials and articles about designing levels with the Unreal Technology.&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=39&amp;amp;t=444791&amp;amp;page=7&amp;amp;pp=15#post4855106 Environment workflow from an artist working on a Crysis mod] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A modular city building and its texture sheet. &lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54178 Mod Facade Challenge] - by ''[http://www.linkedin.com/in/earthquake Joe &amp;quot;EarthQuake&amp;quot; Wilson]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking up a building into modular pieces and designing the texture sheet.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=51254 Maintaining the suspension of disbelief...] Polycount thread&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Discussion about the importance of using imperfection to create believable worlds.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52743 Adam Bromell's sketchbook thread] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking an environment down into modular pieces.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52565 Chris' sketchbook thread] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environment design &amp;amp; modular workflow.&lt;br /&gt;
* [http://www.3dbuzz.com/vbforum/sv_videonav.php?fid=836eb5e382b5d9f430df48883fca918e Level Design Video Tutorials] - from ''[http://www.3dbuzz.com 3DBuzz]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of useful tutorials and design tips about creating levels.&lt;br /&gt;
* [http://www.chrisalbeluhn.com/Building_Layout_Guideline_Tutorial.html Visually Appealing Building Guide] - by ''[http://www.chrisalbeluhn.com Christopher Albeluhn]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;An excellent breakdown of how to create visual interest with game buildings. [http://www.chrisalbeluhn.com/3D_Tutorials.html Additional tutorials here].&lt;br /&gt;
&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[DigitalSculpting#TS|Digital Sculpting]] section has more tutorials about modular workflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Modeling ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=62114 Gears2 Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54311 UT3 &amp;amp; Gears Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [[attachment:rorshach_scifi_supportbeam.pdf|SciFi Support Beam PDF]] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://chrisholden.net/tutor/ Environment tutorials] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=40608 Environment modeling basics] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Category:Modeling]] wiki section has more modeling tutorials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EF&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Foliage ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1021264 3D TreesTutorials] thread from the ''[http://boards.polycount.net Polycount boards]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Multiple methods.&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/11251-trees-beginners-3ds-max-tutorial.html Trees for Beginners in 3ds Max Tutorial] - by ''&amp;quot;braveryd&amp;quot;''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the AEC Extended: Foliage tree generator in 3ds Max.&lt;br /&gt;
* [http://www.andyzibits.com/tut_particle_tree_generation.html Tree creation using particle generator] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in 3ds Max.&lt;br /&gt;
* [http://learnfobia.com/category-Maya-129/tutorial-Sprite-Based-Particle-Trees-2259.html Sprite-Based Particle Trees] - by ''[http://stores.lulu.com/sunchirp Steven J. Tubbrit]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in Maya.&lt;br /&gt;
* [http://www.andyzibits.com/tut_maya_low_poly.html Ultra-efficient tree texturing and modeling] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture and branches.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1020341#post1020341 Low-poly Tree Using Maya PaintFX] - by ''[http://www.mobygames.com/developer/sheet/view/developerId,107125/ Jeramy Cooke]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture, then hand-modeling the tree.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1152529#post1152529 Bending vertex normals and using vertex color] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the Edit Normals modifier in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1149155#post1149155 Bending the vertex normals with Normal Thief] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the [http://www.scriptspot.com/3ds-max/scripts/normal-thief Normal Thief] script in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://http.developer.nvidia.com/GPUGems3/gpugems3_ch16.html Vegetation Procedural Animation and Shading in Crysis] - by ''[https://www.cmpevents.com/GD08/a.asp?option=G&amp;amp;V=3&amp;amp;id=563008 Tiago Sousa]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A detailed overview of Crytek's process for vegetation shading.&lt;br /&gt;
* [http://3dfolio.com/files/tree_tut.pdf Tree Modeling Techniques and Principles] (PDF) - by ''[http://www.3dfolio.com/ Matthew D'Onofrio]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Modeling efficient low-poly branches in 3ds Max using ''Extrude Along Spline''.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=67620 Hedges and Topiary a quick tutorial] - by [http://www.vigville.com/ 'Vig']&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Modeling and texturing method for stylized bushes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=72325 Tree making fast technique?] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree modeling techniques discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73556 Tree texturing] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree texturing discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=74330 Real quick tree texturing question] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More tree stuff.&lt;br /&gt;
* Stuff to research: &lt;br /&gt;
** Warhammer Online trees? &lt;br /&gt;
** RexM trees? &lt;br /&gt;
** Adam trees?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FMT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Foliage Modeling Tools ===&lt;br /&gt;
There are a lot of tools for modeling high-resolution plants, but few for modeling game-resolution models. Here are a few...&lt;br /&gt;
* [http://ngplant.sourceforge.net/ ngPlant]&lt;br /&gt;
* [http://www.frecle.net/index.php?show=treed.about frecle tree[d]] (exports formats .B3D, .OBJ, .X)&lt;br /&gt;
* [http://www.scriptspot.com/3ds-max/scripts/tree-maker TreeMaker script for 3ds Max]&lt;br /&gt;
* [http://www.branches.ws/ Branches script for 3ds Max]&lt;br /&gt;
* [http://www.youtube.com/watch?v=bG79EosNiBQ SpeedTree in UDK] ($)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Sculpting ==&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] See the [[DigitalSculpting]] section of the Polycount wiki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Skies ==&lt;br /&gt;
* [http://cgtextures.com/textures.php?t=browse&amp;amp;q=23740 CG Textures - Panoramic Skies] free 360-degree sky photos.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=45543 360 HDR skies for sale?] from the [http://boards.polycount.net Polycount forums] has a tutorial and links about photographing HDR skies.&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-create-a-terragen-2-skybox/ How to: Create a Terragen 2 Skybox] by ''[http://www.outpt.co.uk/about/ Outpt]''.&lt;br /&gt;
* [http://3dmotive.com/product-skydome 3dmotive.com - Creating a Skydome] is a tutorial for converting a latlong sky into a spheremap layout and mapping it to a dome mesh with Photoshop and 3ds Max.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68600 Skymap workflow] by ''[http://boards.polycount.net/member.php?u=27009 divi]'' is a quick tutorial about converting a latlong sky into a square dome-like layout that uses all the texture space. [[attachment:Skymap_workflow.pdf|PDF here]]&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-convert-a-skybox-to-a-skydome/ How to: Convert a Skybox to a Skydome] by ''[http://www.outpt.co.uk/about/ Outpt]'' is an in-depth tutorial about converting a cubemap into a latlong image with [http://developer.amd.com/gpu/cubemapgen/pages/default.aspx CubeMapGen], HDRShop, Photoshop, and Unreal.&lt;br /&gt;
* [http://www.e-onsoftware.com/products/ Vue] is a popular skydome creation tool.&lt;br /&gt;
* [http://www.planetside.co.uk/ Terragen] is another popular skydome creation tool.&lt;br /&gt;
* [http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Cube Map|Cube Map]] wiki section describes how to create and use cube maps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ET&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Texturing ==&lt;br /&gt;
* [http://vimeo.com/9067032 Texture Workflow videos] - by ''[http://www.hitenmistry.com/ Hiten &amp;quot;Mistry10&amp;quot; Mistry]'', from the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69850 Mistry's Texture Workflow w/Video]''&lt;br /&gt;
* [http://www.game-artist.net/forums/tutorials/182-step-step-techniques-tiling-textures-3ds-max.html Creating tiling textures in 3dsmax] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://poopinmymouth.com/process/tips/thirding.jpg Thirding - Utilizing your texture space for environment work] - by ''[http://poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis]''&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=46&amp;amp;t=373024 Hard Surface Texture Painting] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&lt;br /&gt;
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=17688 Tutorial: Brick Arch (Baking Multiple Maps in 3dsmax)] - by ''[http://boards.polycount.net/member.php?u=18074 mikebart]''&lt;br /&gt;
* [http://udn.epicgames.com/Two/VertexBlendingTutorial.html UDN UnrealEngine2 Vertex Blending Tutorial] - by ''[http://epicgames.com Epic Games]''&lt;br /&gt;
* [http://boards.polycount.net/showpost.php?p=756818&amp;amp;postcount=18 Using vertex blending to grunge a level and add variety] - by ''[http://www.strangefate.com/ Mario &amp;quot;StrangeFate&amp;quot; Vazquez]''&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsue3terrain.htm UE3 Terrain Tutorial] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.moddb.com/tutorials/lighting-in-game-environments-the-hows-and-whys Lighting in game environments] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.amazon.com/Painting-Light-John-Alton/dp/0520089499 Painting with Light] - by the cinematographer ''John Alton''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;II&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Industry Information ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52862 Percentage of environment artists .vs. character artists at most studios] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52412 What's the difference between a level designer and environment artist?] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[GameBusiness]] wiki section has links for threads and articles about how to get game jobs, how to negotiate your salary, how to manage your role, etc. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;IR&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Inspiration &amp;amp; Reference ==&lt;br /&gt;
* [http://images.google.com/ Google Image Search]&lt;br /&gt;
* [http://flickr.com/search/advanced/ Flickr Image Search]&lt;br /&gt;
* [http://images.search.yahoo.com/images/advanced?ei=UTF-8 Yahoo Image Search]&lt;br /&gt;
* [http://www.bbcmotiongallery.com/Customer/AdvancedSearch.aspx? BBC Motion Gallery] - video reference&lt;br /&gt;
* [http://www.corbismotion.com/ Corbis Motion] - video reference&lt;br /&gt;
* [http://www.gettyimages.com/Search/AdvancedSearch.aspx Getty Images Footage] - video reference&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=34320 Polycount Forums - Reference Thread]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=53002 Polycount Forums - Environment Modeling FAQ &amp;amp; Resources]&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/4379-reference-thread.html Game Artist Forums - Reference Thread]&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]] [[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Texturing</id>
		<title>Category:Texturing</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Texturing"/>
				<updated>2010-07-07T05:18:50Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Texturing =&lt;br /&gt;
For game assets the most commonly used texture types are Diffuse, Emissive, Normal, Opacity, and Specular Color. However the types you use will be dictated by the asset itself, and the Art Direction for the project. &lt;br /&gt;
&lt;br /&gt;
== Bump Maps ==&lt;br /&gt;
[[Category:BumpMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Color Maps ==&lt;br /&gt;
[[Category:ColorMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environment Maps ==&lt;br /&gt;
[[Category:EnvironmentMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Light Maps ==&lt;br /&gt;
[[Category:LightMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specular Maps ==&lt;br /&gt;
[[Category:SpecularMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Transparency Maps ==&lt;br /&gt;
[[Category:TransparencyMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game Texture Formats ==&lt;br /&gt;
[[Category:TextureFormat]] pages:&lt;br /&gt;
&lt;br /&gt;
== Texture Techniques ==&lt;br /&gt;
[[Category:TextureTechnique]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[2D Tutorials]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Decal]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Edge Padding]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Category:Environment#EC|Environment Concepting]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Category:Environment#ET|Environment Texturing]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Hair Techniques]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Mip Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Multitexture]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Painting Across Seams]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://boards.polycount.net/showthread.php?t=65614 Painting Tutorials] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://www.leighvanderbyl.com/pdf/texturing.pdf Texturing for Dummies] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://www.cambridgeincolour.com/tutorials/photoshop-curves.htm Using the Photoshop Curves Tool] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Value Correction]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Texturing</id>
		<title>Category:Texturing</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Texturing"/>
				<updated>2010-07-07T05:14:17Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: replacing manual links with auto-category searches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Texturing =&lt;br /&gt;
For game assets the most commonly used texture types are Diffuse, Emissive, Normal, Opacity, and Specular Color. However the types you use will be dictated by the asset itself, and the Art Direction for the project. &lt;br /&gt;
&lt;br /&gt;
== Bump Maps ==&lt;br /&gt;
[[Category:BumpMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Color Maps ==&lt;br /&gt;
[[Category:ColorMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environment Maps ==&lt;br /&gt;
[[Category:EnvironmentMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Light Maps ==&lt;br /&gt;
[[Category:LightMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specular Maps ==&lt;br /&gt;
[[Category:SpecularMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Transparency Maps ==&lt;br /&gt;
[[Category:TransparencyMap]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game Texture Formats ==&lt;br /&gt;
[[Category:TextureFormat]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://en.wikipedia.org/wiki/3Dc 3Dc] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[DDS]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[PVR]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Techniques ==&lt;br /&gt;
[[Category:TextureTechnique]] pages:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[2D Tutorials]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Decal]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Edge Padding]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Category:Environment#EC|Environment Concepting]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Category:Environment#ET|Environment Texturing]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Hair Techniques]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Mip Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Multitexture]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Painting Across Seams]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://boards.polycount.net/showthread.php?t=65614 Painting Tutorials] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://www.leighvanderbyl.com/pdf/texturing.pdf Texturing for Dummies] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://www.cambridgeincolour.com/tutorials/photoshop-curves.htm Using the Photoshop Curves Tool] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Value Correction]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Environment</id>
		<title>Category:Environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Environment"/>
				<updated>2010-07-07T05:05:59Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removed breadcrumbs, added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Environment =&lt;br /&gt;
Topics about the design and creation of levels and environment artwork in games.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;LD&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Level Design ==&lt;br /&gt;
* [http://forums.mapcore.net/viewtopic.php?f=57&amp;amp;t=3913 Level Design Help Files], a collection of help sites for level design themed files - from the ''[http://forums.mapcore.net MapCore]'' forums&lt;br /&gt;
* [http://www.adambromell.com/articles/article3.html Environment Artist: The Story Teller] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&lt;br /&gt;
* [http://developer.valvesoftware.com/wiki/How_To_Develop_A_Map_That_Works How To Develop A Map That Works] - from ''The Valve Developer Community''&lt;br /&gt;
* [http://wiki.beyondunreal.com/Legacy:Map_Planning Map Planning] - from the ''Unreal Wiki''&lt;br /&gt;
* [http://www.fcmaps.net/files/public/tutorials/Bens_Small_Bible_of_Realistic_Multiplayer_Level_Design.pdf Ben's Small Bible of Realistic Multiplayer Level Design] by ''Benjamin Bauer''&lt;br /&gt;
* [http://www.interlopers.net/index.php?page=what-is-level-design What Is Level Design?] - by ''Sérgio Duarte''&lt;br /&gt;
* [http://www.theinspiracy.com/Current%20Rules%20Master%20List.htm The 400 Project] - by ''[http://www.finitearts.com/Pages/biopage.html Hal Barwood]'' &amp;amp; ''[http://www.theinspiracy.com/ Noah Falstein]''&lt;br /&gt;
* [http://www.vancouver.wsu.edu/fac/peabody/game-book/Chapter6.html Design Techniques and Ideals] from ''[http://www.vancouver.wsu.edu/fac/peabody/game-book/Coverpage.html The Art of Computer Game Design]'' - by ''[http://en.wikipedia.org/wiki/Chris_Crawford_%28game_designer%29 Chris Crawford]''&lt;br /&gt;
* [http://www.amazon.com/Level-Design-Concept-Theory-Practice/dp/1568813384 Level Design: Concept, Theory, and Practice] ($) - by ''Rudolf Kremers''&lt;br /&gt;
* [http://www.hourences.com/book/bookgameplay.htm The Hows and Whys of Level Design] ($) - by ''Sjoerd &amp;quot;hourences&amp;quot; De Jong''&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Visual_semiotics Visual Semiotics] - from ''Wikipedia''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environments involve the player more if they have several layers of thinking behind their design.&lt;br /&gt;
* [http://wiki.answers.com/Q/What_is_a_visual_metaphor What is a visual metaphor?] - from ''Answers.com''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;LDB&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Level Design Blogs ==&lt;br /&gt;
* [http://lifeofadesignmonkey.blogspot.com/ Life of a Design Monkey] - a blog by ''Mark Davies'', game designer at Ninja Theory&lt;br /&gt;
* [http://randomencounters.vox.com/ Random Encounters in Imaginary Realms] - a blog by ''Random Encounters'', game designer&lt;br /&gt;
* [http://www.lostgarden.com/ Lost Garden] - a blog by ''Danc'', game designer&lt;br /&gt;
* [http://cliffyb.com/rants/ CliffyB.com] - a blog by ''Cliff Bleszinski'', game designer at Epic Games&lt;br /&gt;
* [http://www.johnsto.co.uk/design Level Design] - a blog by ''David Alexander Johnston'', freelance game designer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Concepting ==&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73282 Digital Environment/Landscape painting for beginners] Polycount thread&lt;br /&gt;
* [http://www.conceptart.org/forums/forumdisplay.php?f=140 Enviromentoring] and [http://www.conceptart.org/forums/forumdisplay.php?f=42 Tutorials, Tips &amp;amp; Tricks] - at [http://www.conceptart.org ConceptArt.Org]&lt;br /&gt;
* [http://www.handprint.com/HP/WCL/tech10.html elements of perspective] - by ''[http://www.handprint.com Bruce MacEvoy]'' &lt;br /&gt;
* [http://www.youtube.com/watch?v=NwBcssDYJ3o Whit Brachna Snowy Mountain] timelapse video with voiceover - by ''[http://brushbook.com Whit Brachna]'' ([http://www.youtube.com/user/MassiveDVD#g/u more freebies from Massive Black])&lt;br /&gt;
* [http://artpad.org/wordpress/wp-content/gallery/old-work/step%20by%20step.jpg Coastline] step by step image - by ''[http://artpad.org Jaime Jones]'' ([http://artpad.org/wordpress/wp-content/gallery/2005-2007/coastline2.jpg final])&lt;br /&gt;
* [http://daarken.com/flash2005/tutorials/fire_escape_02.pdf Fire Escape] step by step image - by ''[http://daarken.com/ Daarken]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/category/43/Feng-Zhu Concept Design Video Tutorials] ($) - by ''[http://www.artbyfeng.com/ Feng Zhu]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/product/55/The-Techniques-of-Dylan-Cole-1 Introduction to Landscape Matte Painting] ($) - by ''[http://www.dylancolestudio.com/ Dylan Cole]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[2D Tutorials|2D Tutorials]] section has more tutorials and resources for concept painting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EW&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;EWAM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Workflow &amp;amp; Modularity ==&lt;br /&gt;
&lt;br /&gt;
* [http://udn.epicgames.com/Two/WorkflowAndModularity.html Workflow techniques and modularity with Unreal game technology] - by ''[http://www.epicgames.com Epic Games]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A guide to setting up your art-to-level-design pipeline and designing modularly.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=678052#post678052 Environment workflow @ EpicGames] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A summary of the modular workflow used at Epic on Unreal Tournament 3.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=924231#post924231 Gears of War 2 modular modeling] - by ''[http://wiki.polycount.net/Rorshach Kevin Johnstone]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots of using the grid for modular work, as well as a ton of useful insight into the Environment worflow at Epic. A highly recommended read!&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1101338#post1101338 Modular brick wall tiling] - by ''[http://iamglynnsmith.com/ Glynn Smith]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots for sculpting modular brick walls.&lt;br /&gt;
* [http://www.brameulaers.com/tutorials/generic_wall_tutorial/generic_wall_tutorial.html Generic wall tutorial] - by ''[http://www.brameulaers.com Bram &amp;quot;Peris&amp;quot; Eulaers]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using 3ds Max and Mudbox to sculpt tilable modular sections for a stone wall.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=50160 Rock modeling approaches] - a [http://boards.polycount.net/ Polycount] thread &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A variety of approaches for sculpting individual rocks and tilable cliffs.&lt;br /&gt;
* [http://osart3d.wordpress.com/home-page/tutorial-creating-perfectly-tiling-meshes-in-zbrush-for-use-in-videogame-environments/ Creating Perfectly Tiling Meshes in Zbrush for use in Videogame Environments] - by ''[http://osart3d.wordpress.com/ Owen &amp;quot;SHEPEIRO&amp;quot; Shepherd]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using ZBrush's 2.5D canvas to tile stamped meshes, then using Maya to model tilable geometry.&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsindex.htm Unreal Engine 3 tutorials, game industry articles, level design/art/technical tutorials] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of tutorials and articles about designing levels with the Unreal Technology.&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=39&amp;amp;t=444791&amp;amp;page=7&amp;amp;pp=15#post4855106 Environment workflow from an artist working on a Crysis mod] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A modular city building and its texture sheet. &lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54178 Mod Facade Challenge] - by ''[http://www.linkedin.com/in/earthquake Joe &amp;quot;EarthQuake&amp;quot; Wilson]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking up a building into modular pieces and designing the texture sheet.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=51254 Maintaining the suspension of disbelief...] Polycount thread&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Discussion about the importance of using imperfection to create believable worlds.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52743 Adam Bromell's sketchbook thread] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking an environment down into modular pieces.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52565 Chris' sketchbook thread] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environment design &amp;amp; modular workflow.&lt;br /&gt;
* [http://www.3dbuzz.com/vbforum/sv_videonav.php?fid=836eb5e382b5d9f430df48883fca918e Level Design Video Tutorials] - from ''[http://www.3dbuzz.com 3DBuzz]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of useful tutorials and design tips about creating levels.&lt;br /&gt;
* [http://www.chrisalbeluhn.com/Building_Layout_Guideline_Tutorial.html Visually Appealing Building Guide] - by ''[http://www.chrisalbeluhn.com Christopher Albeluhn]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;An excellent breakdown of how to create visual interest with game buildings. [http://www.chrisalbeluhn.com/3D_Tutorials.html Additional tutorials here].&lt;br /&gt;
&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[DigitalSculpting#TS|Digital Sculpting]] section has more tutorials about modular workflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Modeling ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=62114 Gears2 Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54311 UT3 &amp;amp; Gears Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [[attachment:rorshach_scifi_supportbeam.pdf|SciFi Support Beam PDF]] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://chrisholden.net/tutor/ Environment tutorials] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=40608 Environment modeling basics] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Category:Modeling]] wiki section has more modeling tutorials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EF&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Foliage ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1021264 3D TreesTutorials] thread from the ''[http://boards.polycount.net Polycount boards]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Multiple methods.&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/11251-trees-beginners-3ds-max-tutorial.html Trees for Beginners in 3ds Max Tutorial] - by ''&amp;quot;braveryd&amp;quot;''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the AEC Extended: Foliage tree generator in 3ds Max.&lt;br /&gt;
* [http://www.andyzibits.com/tut_particle_tree_generation.html Tree creation using particle generator] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in 3ds Max.&lt;br /&gt;
* [http://learnfobia.com/category-Maya-129/tutorial-Sprite-Based-Particle-Trees-2259.html Sprite-Based Particle Trees] - by ''[http://stores.lulu.com/sunchirp Steven J. Tubbrit]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in Maya.&lt;br /&gt;
* [http://www.andyzibits.com/tut_maya_low_poly.html Ultra-efficient tree texturing and modeling] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture and branches.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1020341#post1020341 Low-poly Tree Using Maya PaintFX] - by ''[http://www.mobygames.com/developer/sheet/view/developerId,107125/ Jeramy Cooke]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture, then hand-modeling the tree.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1152529#post1152529 Bending vertex normals and using vertex color] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the Edit Normals modifier in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1149155#post1149155 Bending the vertex normals with Normal Thief] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the [http://www.scriptspot.com/3ds-max/scripts/normal-thief Normal Thief] script in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://http.developer.nvidia.com/GPUGems3/gpugems3_ch16.html Vegetation Procedural Animation and Shading in Crysis] - by ''[https://www.cmpevents.com/GD08/a.asp?option=G&amp;amp;V=3&amp;amp;id=563008 Tiago Sousa]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A detailed overview of Crytek's process for vegetation shading.&lt;br /&gt;
* [http://3dfolio.com/files/tree_tut.pdf Tree Modeling Techniques and Principles] (PDF) - by ''[http://www.3dfolio.com/ Matthew D'Onofrio]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Modeling efficient low-poly branches in 3ds Max using ''Extrude Along Spline''.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=67620 Hedges and Topiary a quick tutorial] - by [http://www.vigville.com/ 'Vig']&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Modeling and texturing method for stylized bushes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=72325 Tree making fast technique?] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree modeling techniques discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73556 Tree texturing] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree texturing discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=74330 Real quick tree texturing question] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More tree stuff.&lt;br /&gt;
* Stuff to research: &lt;br /&gt;
** Warhammer Online trees? &lt;br /&gt;
** RexM trees? &lt;br /&gt;
** Adam trees?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FMT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Foliage Modeling Tools ===&lt;br /&gt;
There are a lot of tools for modeling high-resolution plants, but few for modeling game-resolution models. Here are a few...&lt;br /&gt;
* [http://ngplant.sourceforge.net/ ngPlant]&lt;br /&gt;
* [http://www.frecle.net/index.php?show=treed.about frecle tree[d]] (exports formats .B3D, .OBJ, .X)&lt;br /&gt;
* [http://www.scriptspot.com/3ds-max/scripts/tree-maker TreeMaker script for 3ds Max]&lt;br /&gt;
* [http://www.branches.ws/ Branches script for 3ds Max]&lt;br /&gt;
* [http://www.youtube.com/watch?v=bG79EosNiBQ SpeedTree in UDK] ($)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Sculpting ==&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] See the [[DigitalSculpting]] section of the Polycount wiki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Skies ==&lt;br /&gt;
* [http://cgtextures.com/textures.php?t=browse&amp;amp;q=23740 CG Textures - Panoramic Skies] free 360-degree sky photos.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=45543 360 HDR skies for sale?] from the [http://boards.polycount.net Polycount forums] has a tutorial and links about photographing HDR skies.&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-create-a-terragen-2-skybox/ How to: Create a Terragen 2 Skybox] by ''[http://www.outpt.co.uk/about/ Outpt]''.&lt;br /&gt;
* [http://3dmotive.com/product-skydome 3dmotive.com - Creating a Skydome] is a tutorial for converting a latlong sky into a spheremap layout and mapping it to a dome mesh with Photoshop and 3ds Max.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68600 Skymap workflow] by ''[http://boards.polycount.net/member.php?u=27009 divi]'' is a quick tutorial about converting a latlong sky into a square dome-like layout that uses all the texture space. [[attachment:Skymap_workflow.pdf|PDF here]]&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-convert-a-skybox-to-a-skydome/ How to: Convert a Skybox to a Skydome] by ''[http://www.outpt.co.uk/about/ Outpt]'' is an in-depth tutorial about converting a cubemap into a latlong image with [http://developer.amd.com/gpu/cubemapgen/pages/default.aspx CubeMapGen], HDRShop, Photoshop, and Unreal.&lt;br /&gt;
* [http://www.e-onsoftware.com/products/ Vue] is a popular skydome creation tool.&lt;br /&gt;
* [http://www.planetside.co.uk/ Terragen] is another popular skydome creation tool.&lt;br /&gt;
* [http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Cube Map|Cube Map]] wiki section describes how to create and use cube maps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ET&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Texturing ==&lt;br /&gt;
* [http://vimeo.com/9067032 Texture Workflow videos] - by ''[http://www.hitenmistry.com/ Hiten &amp;quot;Mistry10&amp;quot; Mistry]'', from the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69850 Mistry's Texture Workflow w/Video]''&lt;br /&gt;
* [http://www.game-artist.net/forums/tutorials/182-step-step-techniques-tiling-textures-3ds-max.html Creating tiling textures in 3dsmax] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://poopinmymouth.com/process/tips/thirding.jpg Thirding - Utilizing your texture space for environment work] - by ''[http://poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis]''&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=46&amp;amp;t=373024 Hard Surface Texture Painting] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&lt;br /&gt;
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=17688 Tutorial: Brick Arch (Baking Multiple Maps in 3dsmax)] - by ''[http://boards.polycount.net/member.php?u=18074 mikebart]''&lt;br /&gt;
* [http://udn.epicgames.com/Two/VertexBlendingTutorial.html UDN UnrealEngine2 Vertex Blending Tutorial] - by ''[http://epicgames.com Epic Games]''&lt;br /&gt;
* [http://boards.polycount.net/showpost.php?p=756818&amp;amp;postcount=18 Using vertex blending to grunge a level and add variety] - by ''[http://www.strangefate.com/ Mario &amp;quot;StrangeFate&amp;quot; Vazquez]''&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsue3terrain.htm UE3 Terrain Tutorial] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.moddb.com/tutorials/lighting-in-game-environments-the-hows-and-whys Lighting in game environments] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.amazon.com/Painting-Light-John-Alton/dp/0520089499 Painting with Light] - by the cinematographer ''John Alton''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;II&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Industry Information ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52862 Percentage of environment artists .vs. character artists at most studios] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52412 What's the difference between a level designer and environment artist?] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[GameBusiness]] wiki section has links for threads and articles about how to get game jobs, how to negotiate your salary, how to manage your role, etc. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;IR&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Inspiration &amp;amp; Reference ==&lt;br /&gt;
* [http://images.google.com/ Google Image Search]&lt;br /&gt;
* [http://flickr.com/search/advanced/ Flickr Image Search]&lt;br /&gt;
* [http://images.search.yahoo.com/images/advanced?ei=UTF-8 Yahoo Image Search]&lt;br /&gt;
* [http://www.bbcmotiongallery.com/Customer/AdvancedSearch.aspx? BBC Motion Gallery] - video reference&lt;br /&gt;
* [http://www.corbismotion.com/ Corbis Motion] - video reference&lt;br /&gt;
* [http://www.gettyimages.com/Search/AdvancedSearch.aspx Getty Images Footage] - video reference&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=34320 Polycount Forums - Reference Thread]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=53002 Polycount Forums - Environment Modeling FAQ &amp;amp; Resources]&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/4379-reference-thread.html Game Artist Forums - Reference Thread]&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]] [[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Model_Presentation</id>
		<title>Model Presentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Model_Presentation"/>
				<updated>2010-07-07T05:02:00Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removed breadcrumbs, added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Model Presentation =&lt;br /&gt;
&lt;br /&gt;
== Lighting ==&lt;br /&gt;
* [[Image:Model_Presentation$lighting_3pointbirn.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://www.3drender.com/light/3point.html Three-Point Lighting for 3D Renderings] - by ''[http://www.3drender.com Jeremy Birn]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; How to create the classic Hollywood lighting scheme called three-point lighting.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$lighting_richardyot.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://www.itchy-animation.co.uk/light.htm LIGHT - a detailed tutorial] - by ''[http://www.itchy-animation.co.uk Richard Yot]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A detailed dissection of real-world lighting.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$lighting_advlightakram.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://warpedspace.org/lightingT/part1.htm Advanced Lighting Techniques]  - by ''[http://warpedspace.org Amaan Akram]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Lighting for mood using basic lighting theories.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High-Poly Models ==&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_fudge.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.mikefudge.com/tutorials/RenderingSculpture.htm Rendering a Sculpture] - by ''[http://www.mikefudge.com Mike Fudge]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Lighting, material, and rendering setup in Maya.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_volchik.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.artemstudios.com/08Portfolio/Tutorial/MaterialRenderingTut.htm High Poly Material Rendering Tutorial] - by ''[http://www.artemstudios.com Artem &amp;quot;X-Convict&amp;quot; Volchik]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Double-specular material setup in 3ds Max. Discussion and examples [http://boards.polycount.net/showthread.php?t=60887 here in Polycount].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_gullotti.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://boards.polycount.net/showthread.php?t=69829 MR materials for 3ds Max] - by ''[http://www.aliquaforma.com/ Enrico &amp;quot;SyncViewS&amp;quot; Gullotti]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;mental ray materials for 3ds Max, including dark shiny, light wireframe, and dark wireframe. Discussion and examples [http://boards.polycount.net/showthread.php?t=69829 here in Polycount].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_engineeringdraper.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.xenomorphic.co.uk/doc_engineering.htm Engineering Material] - by ''[http://www.xenomorphic.co.uk Pete Draper]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Outline and cross-hatching render setup, using the Ink and Paint material in 3ds Max.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Low-Poly Models ==&lt;br /&gt;
Low-poly models are usually best presented as screenshots from a game engine, or from your modeling app's viewport using [[Category:Shaders|shaders]].&lt;br /&gt;
&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_gamematerial-hall.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[attachment:currentnextgengamematerialrendering_jameshall.jpg|Current/Nextgen Game Material Rendering]] - by ''[http://shortfus3d.com James Hall]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Lighting a normal-mapped model using 2-point lighting and ambient occlusion.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_3dsmax-viewport-dof_oberson.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[attachment:3dsmax-viewport-dof_oberson.jpg|Depth of field in the 3ds Max viewport]] - by ''[http://www.pioroberson.com/ Pior &amp;quot;pior&amp;quot; Oberson]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using real-time depth of field, plus antialiased wireframes, in 3ds Max.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_3dsmax-viewport-baked-shadows_oberson.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[attachment:3dsmax-viewport-baked-shadows_oberson.jpg|Baked shadow maps in the 3ds Max viewport]] - by ''[http://www.pioroberson.com/ Pior &amp;quot;pior&amp;quot; Oberson]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Self-shadowing can be easily baked in 3ds Max. However baking can be avoided in version 2009 onwards because Max now supports real-time dynamic shadowing in the viewport.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
* [[Image:Model_Presentation$modelmat_udk.png]] &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [http://www.polycount.com/forum/showthread.php?t=73930 Setting up UDK for portfolio renders?] thread on Polycount &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Helpful tips about using UDK to create nice screenshots of your models. See also [http://www.gameartisans.org/forums/showpost.php?p=210702&amp;amp;postcount=4 this post from Lamont] about capturing animation from UDK.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/LevelOfDetail</id>
		<title>LevelOfDetail</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/LevelOfDetail"/>
				<updated>2010-07-07T05:01:06Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removed breadcrumbs, added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Level Of Detail =&lt;br /&gt;
A '''Level of Detail''' model (LOD) is a lower-resolution version of the main game model. &lt;br /&gt;
&lt;br /&gt;
The model is swapped to a lower-detail version to improve performance, which improves the framerate. &lt;br /&gt;
&lt;br /&gt;
== LOD Metrics ==&lt;br /&gt;
There are many methods for determining when to swap; the most common is based on distance. Another method is to swap depending on how fast the player is moving, because a player typically won't notice the drop in quality for a fast-moving object. Yet another method is to drop to lower LODs when the framerate drops below a certain number. &lt;br /&gt;
&lt;br /&gt;
== LOD Modeling ==&lt;br /&gt;
[http://www.polycount.com/forum/showthread.php?t=74619 LOD resources/information anyone?]&lt;br /&gt;
&lt;br /&gt;
== LOD Texturing ==&lt;br /&gt;
[http://www.polycount.com/forum/showthread.php?t=74619 LOD resources/information anyone?]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/User:Cman2k</id>
		<title>User:Cman2k</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/User:Cman2k"/>
				<updated>2010-07-06T05:40:20Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: finalizing new category names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= [[CarlosMontero]] =&lt;br /&gt;
&amp;lt;!-- ## Optional biography here. --&amp;gt;&lt;br /&gt;
=== Nickname Origin ===&lt;br /&gt;
cman2k: back from the AOL days when I was 13 and my name was cmans2kool B)&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* Forum name: [http://www.polycount.com/forum/member.php?u=15804 cman2k]&lt;br /&gt;
* Website: http://carlosmontero.com&lt;br /&gt;
* Email: &amp;lt;&amp;lt;[[MailTo]](cman2k AT gmail DOT com)&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= New Front Page =&lt;br /&gt;
&lt;br /&gt;
= Welcome to the Polycount Wiki! =&lt;br /&gt;
The Polycount Wiki is a catalog of information aimed at artists working in game development, whether professional or hobbyist.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000 tablestyle=&amp;quot;width:80%;text-align:left;&amp;quot;&amp;gt;|Information &lt;br /&gt;
|&amp;lt;33% #000000&amp;gt;|Art Disciplines &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;style=&amp;quot;color:#37864d;vertical-align:top;&amp;quot;&amp;gt;| [[GameIndustry]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[HistoryOfPolycount]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[HowToContribute]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[ReferenceLibrary]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[WikiMembers]] &lt;br /&gt;
|&amp;lt;style=&amp;quot;color:#37864d;vertical-align:top;&amp;quot;&amp;gt;|[[Category:Animation]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[[Category:Character]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[[Category:Concept]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[[Category:Environment]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Category:GameDesign]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[[Category:LevelDesign]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[[Category:SpecialEffects]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[[Category:UserInterface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!wiki comment/dotted&lt;br /&gt;
 * Lighting -&amp;gt; Move into environments&lt;br /&gt;
 * Texture Coordinates -&amp;gt; Split into Environments/Characters&lt;br /&gt;
 * Texturing -&amp;gt; Split/Mirror into Environments/Characters&lt;br /&gt;
--Carlos Montero&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!wiki comment/dotted&lt;br /&gt;
 * How To Contribute on a separate page.&lt;br /&gt;
 * Game Statistics can be linked from Game Industry. Shaders can be linked from Game Technology and from Presentation.&lt;br /&gt;
 * Adam is interested in revamping [[http://www.ericchadwick.com/portfolio/glossary/|the old glossary]] that I shared on polycount back in 2001 or so, the idea is we could add links in our pages to standard definitions.&lt;br /&gt;
 * Not sure where we would include any game-specific tutorials. For now, we could link to them from '''History of Polycount''', but eventually we may need a dedicated section (not really a Discipline or a Tech).&lt;br /&gt;
--Eric Chadwick&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!wiki comment/dotted&lt;br /&gt;
 * Glossary looks great, seems like a perfect solution.&lt;br /&gt;
 * added Game Engines category under technology.  This seems perfectly reasonable to me, what do you think?&lt;br /&gt;
--Carlos Montero&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;#!wiki comment/dotted&lt;br /&gt;
 * Game Engines category is great. I'm a little hesitant, since it's like the Tools page... the data will be changing rapidly, so a wiki page will be out-of-date a lot of the time, unless it's meticulously updated.&lt;br /&gt;
 * Some of the Glossary is wrong (I've learned a lot since then!). So I'm thinking we should move them into the wiki piecemeal, updating them as we go. Also the Glossary pages should probably be both Subpages of the Glossary landing page, and should be in !CategoryGlossary too.&lt;br /&gt;
 * I would like to start renaming the page titles to WikiName format, since that's so much easier to link to. Better to do this sooner than later. I guess we should also update all the links that point to a renamed page... renaming a page creates an automatic redirect, but I don't think a redirect preserves anchors, so links with anchors in them will be broken/incomplete.&lt;br /&gt;
 * Looks good Carlos, thanks for the ideas!&lt;br /&gt;
--Eric Chadwick&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
= How to Contribute =&lt;br /&gt;
If you'd like to contribute to the wiki, you'll need a wiki account. First [http://www.polycount.com/forum/register.php register] a Forum account, then send a PM to [http://www.polycount.com/forum/private.php?do=newpm&amp;amp;u=13837 EricChadwick]. He needs two things: your email address (never shared, for password recovery) and the name you want to use (real name in FirstnameLastname format, or your Forum name).&lt;br /&gt;
&lt;br /&gt;
If you have questions about how it's done, check out [[HelpOnEditing]]. There's also a link at the bottom of the page editor.&lt;br /&gt;
&lt;br /&gt;
Finally, if you want some major brownie points, check out the [[Polycount#Work_To_Do|Work To Do]] page. |-)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Homepage]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Rendering</id>
		<title>Category:Rendering</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Rendering"/>
				<updated>2010-07-06T05:27:39Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing breadcrumbs, adding categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category: Rendering =&lt;br /&gt;
This page is to help game artists understand how a game engine renders their artwork.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Terminology]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Offline vs. Real-Time Rendering]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Game Rendering Primers]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Shaders</id>
		<title>Category:Shaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Shaders"/>
				<updated>2010-07-06T05:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing breadcrumbs, adding categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Shaders =&lt;br /&gt;
Links to popular shaders and articles about how to make new shaders. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;P3MS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Popular 3ds Max Shaders ==&lt;br /&gt;
(in no particular order)&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.3pointstudios.com/3pointshader_about.shtml 3Point Shader Lite]''' by [http://www.3pointstudios.com 3 Point Studios]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader with many options, including near-perfect results for 3ds Max generated normal maps. See the Polycount thread [http://boards.polycount.net/showthread.php?t=72861 3Point Shader Lite - Shader material editor and Quality Mode normalmaps for 3ds Max].&lt;br /&gt;
* '''[http://www.greveson.co.uk/shaders/MoP_TextureBlender.fx MoP Texture Blender]''' by [http://www.greveson.co.uk Paul &amp;quot;MoP&amp;quot; Greveson]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; This shader uses blendmodulate for vertex blending with per-pixel detail. From the Polycount thread [http://boards.polycount.net/showthread.php?p=1024948#post1024948 The Snow and Ice of Uncharted2?].&lt;br /&gt;
* '''[http://www.luxinia.de/index.php/ArtTools/3dsmaxFX#genbrdf 3ds Max version of the BRDF shader]''' ported by [http://crazybutcher.cottages.polycount.com/ Christoph &amp;quot;CrazyButcher&amp;quot; Kubisch]. &amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Original [http://www.mentalwarp.com/~brice/brdf.php BRDF shader for Maya] by [http://www.mentalwarp.com/~brice Brice Vandemoortele] and [http://www.kjapi.com/ Cedric Caillaud]. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=49920 Free Maya/max cgfx/fx Shader]''. '''Update:''' [http://boards.polycount.net/showthread.php?p=821862#post821862 New version here] with many updates, including object-space normal maps, relief mapping, self-shadowing, etc. &lt;br /&gt;
* '''[http://www.laurenscorijn.com/viewportshader 3ds Max viewport shader]''' by [http://www.laurenscorijn.com/ Laurens &amp;quot;Xoliul&amp;quot; Corijn].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;  More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=62006 Xoliul's 3DS Max Viewport Shader]''.&lt;br /&gt;
* '''[http://blog.maginot.eu/index.php?seite=people&amp;amp;people=till&amp;amp;page=mhn2048106717 TF2 Shader for 3ds Max]''' and '''[http://blog.maginot.eu/index.php?p=till.1__scriptnstuff_shader_toon Toon/Comic Shader for 3ds Max]''' by [http://www.till.maginot.eu/ Till &amp;quot;Rollin&amp;quot; Maginot].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=64453 TF2 and TOON realtime viewport shader (3ds max)]''.&lt;br /&gt;
* '''[http://rtshaders.deviantart.com/art/Agusturinn-Shader-Demo-100883093 Agusturinn Shader Demo]''' by [http://rtshaders.deviantart.com Wang &amp;quot;RTshaders&amp;quot; Jing].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader features: ''&amp;quot;One UV texture, Two point lights, Diffuse map(include alpha which control transparency), AO(ambient occlusion) map or Lightmap share the same channel, Normal map,Specular map,Specular level map,Gloss map,Emissive map, Two type of Cubemap---One is diffuse cubemap for generating IBL(image based lighting), the other is enviroment cubemap for reflection.&amp;quot;''&lt;br /&gt;
* '''[http://rtshaders.deviantart.com/art/Paragalis-Shader-Demo-110994545 Paragalis Shader Demo]''' by [http://rtshaders.deviantart.com Wang &amp;quot;RTshaders&amp;quot; Jing].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shader features: ''&amp;quot;Post effect, 3dsmax2008/2009 viewport shadowmap, Subsurface scattering, Cubemap Image based lighting, Diffuse(alpha channel control opacity),Normal map,Ao map/Light map,Specular,Specular lever(mask),Gloss etc., Shadermodel 2.x compatible for AMD ATI card.&amp;quot;''&lt;br /&gt;
* '''[http://fabio.policarpo.nom.br/Demos.html Planar Relief Mapping]''' by [http://fabio.policarpo.nom.br Fabio Policarpo].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; ''&amp;quot;This version works with any mesh and execute the ray intersection in tangent space. Apparent depth can be controlled with a factor (aspect from width or height divided by depth). So depth 0.1 means 10% of texture tile width/height in object space. This version does not require any extra information passed on vertices.&amp;quot;''&lt;br /&gt;
* '''[http://www.bencloward.com/resources_shaders.shtml Shaders]''' by [http://www.bencloward.com Ben Cloward].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; He has a bunch of HLSL shaders available for normal mapping, ambient occlusion, car paint, skin, etc.&lt;br /&gt;
* '''[http://www.jistyles.com/main.php?id=doc&amp;amp;page=hlsl SSS Skin Shader]''' by [http://www.jistyles.com/ J.I. Styles].&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; ''&amp;quot;The aim of this shader is to emulate all the perceptual qualities of realistic skin like translucency (sss), fresnal specular, gloss, oiliness, etc - kludging what I can to produce fast yet realistic looking results.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;PMS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Popular Maya Shaders ==&lt;br /&gt;
(in no particular order)&lt;br /&gt;
&lt;br /&gt;
* '''[http://blog.leocov.com/search/label/hlsl lcNextGenShader]''' by [http://www.leocov.com/ Leonardo &amp;quot;chronic&amp;quot; Covarrubias]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Has many techniques and parameters, including normal mapping, specular, ambient env cube, SSS, etc.&lt;br /&gt;
* '''[http://www.mentalwarp.com/~brice/brdf.php BRDF shader for Maya]''' by [http://www.mentalwarp.com/~brice Brice Vandemoortele] and [http://www.kjapi.com/ Cedric Caillaud]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[http://www.luxinia.de/index.php/ArtTools/3dsmaxFX#genbrdf 3ds Max version] ported by [http://crazybutcher.cottages.polycount.com/ Christoph &amp;quot;CrazyButcher&amp;quot; Kubisch]. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=49920 Free Maya/max cgfx/fx Shader]''. '''Update:''' [http://boards.polycount.net/showthread.php?p=821862#post821862 New version here] with many updates, including object-space normal maps, relief mapping, self-shadowing, etc. &lt;br /&gt;
* '''[http://www.kostas.se/shader/ Maya CG shader]''' by [http://www.kostas.se Kostas &amp;quot;Kodde&amp;quot; Gialitakis]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Also supports a BRDF map. More info in the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69161 &amp;quot;KoddeShader&amp;quot;, a Maya CGFX shader]''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Creating Shaders ==&lt;br /&gt;
* [http://tech-artists.org/wiki/Portal:Shaders The Tech-Artists.Org Shaders Portal]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A ton of great information about creating shaders.&lt;br /&gt;
* [http://www.moddb.com/games/unreal-tournament-3/tutorials/tf2-shading-in-ut3 TF2 Shading in UT3] by [http://polyphobia.de Steffen &amp;quot;Neox&amp;quot; &amp;quot;polyphobia&amp;quot; Unger]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Shows how the Team Fortress 2 look can be emulated using a shader network in Unreal Engine 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Texturing</id>
		<title>Category:Texturing</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Texturing"/>
				<updated>2010-07-06T05:26:50Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing breadcrumbs, adding categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category Texturing =&lt;br /&gt;
For game assets the most commonly used texture types are Diffuse, Emissive, Normal, Opacity, and Specular Color. However the types you use will be dictated by the asset itself, and the Art Direction for the project. &lt;br /&gt;
&lt;br /&gt;
== Bump Maps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Color Maps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environment Maps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Cube Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Diffusely Convolved Cube Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Spherical Environment Map]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Light Maps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Ambient Occlusion Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[BRDF Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Light Map]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specular Maps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Specular Gloss Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Specular Color Map]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Transparency Maps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Opacity Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Vertex Alpha]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game Texture Formats ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://en.wikipedia.org/wiki/3Dc 3Dc] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[DDS]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[PVR]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Texture Techniques ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[2D Tutorials]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Decal]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Edge Padding]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Category:Environment#EC|Environment Concepting]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Category:Environment#ET|Environment Texturing]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Hair Techniques]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Mip Map]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Multitexture]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Painting Across Seams]] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://boards.polycount.net/showthread.php?t=65614 Painting Tutorials] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://www.leighvanderbyl.com/pdf/texturing.pdf Texturing for Dummies] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [http://www.cambridgeincolour.com/tutorials/photoshop-curves.htm Using the Photoshop Curves Tool] &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;#000000&amp;gt;| [[Value Correction]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Whitepapers</id>
		<title>Category:Whitepapers</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Whitepapers"/>
				<updated>2010-07-06T05:25:45Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing breadcrumbs, adding categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Category: Whitepapers =&lt;br /&gt;
This page has links to conference proceedings and research papers (aka whitepapers) about game graphics. &lt;br /&gt;
&lt;br /&gt;
== Company Whitepapers ==&lt;br /&gt;
* [http://www2.disney.co.uk/disneyinteractivestudios/blackrockstudio/technology/ Black Rock Studios]&lt;br /&gt;
* [http://www.bungie.net/Inside/publications.aspx Bungie]&lt;br /&gt;
* [http://www.crytek.com/technology/presentations/ Crytek]&lt;br /&gt;
* [http://publications.dice.se/ DICE]&lt;br /&gt;
* [http://www.unrealtechnology.com/whats-new.php?ref=downloads Epic Games]&lt;br /&gt;
* [http://www.guerrilla-games.com/publications/ Guerilla Games]&lt;br /&gt;
* [http://www.insomniacgames.com/tech/techpage.php Insomniac Games]&lt;br /&gt;
* [http://www.naughtydog.com/tag/presentations/ Naughty Dog]&lt;br /&gt;
* [http://www.research.scea.com/research/research.html Sony Computer Entertainment America]&lt;br /&gt;
* [http://www.valvesoftware.com/publications.html Valve Software]&lt;br /&gt;
&lt;br /&gt;
== Conference Whitepapers ==&lt;br /&gt;
* [http://www.gdcvault.com/free/category/ Game Developers Conference 2005-2010]&lt;br /&gt;
* [http://www.microsoftgamefest.com/london2010.htm Gamefest London 2010]&lt;br /&gt;
* [http://www.microsoftgamefest.com/seattle2010.htm Gamefest Seattle 2010]&lt;br /&gt;
* [http://www.highperformancegraphics.org/program.html High Performance Graphics 2010]&lt;br /&gt;
* [http://kesen.huang.googlepages.com/ Whitepapers master list]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Environment</id>
		<title>Category:Environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Environment"/>
				<updated>2010-07-06T05:24:36Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing breadcrumbs, adding categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Category: Environment =&lt;br /&gt;
Topics about the design and creation of levels and environment artwork in games.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;LD&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Level Design ==&lt;br /&gt;
* [http://forums.mapcore.net/viewtopic.php?f=57&amp;amp;t=3913 Level Design Help Files], a collection of help sites for level design themed files - from the ''[http://forums.mapcore.net MapCore]'' forums&lt;br /&gt;
* [http://www.adambromell.com/articles/article3.html Environment Artist: The Story Teller] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&lt;br /&gt;
* [http://developer.valvesoftware.com/wiki/How_To_Develop_A_Map_That_Works How To Develop A Map That Works] - from ''The Valve Developer Community''&lt;br /&gt;
* [http://wiki.beyondunreal.com/Legacy:Map_Planning Map Planning] - from the ''Unreal Wiki''&lt;br /&gt;
* [http://www.fcmaps.net/files/public/tutorials/Bens_Small_Bible_of_Realistic_Multiplayer_Level_Design.pdf Ben's Small Bible of Realistic Multiplayer Level Design] by ''Benjamin Bauer''&lt;br /&gt;
* [http://www.interlopers.net/index.php?page=what-is-level-design What Is Level Design?] - by ''Sérgio Duarte''&lt;br /&gt;
* [http://www.theinspiracy.com/Current%20Rules%20Master%20List.htm The 400 Project] - by ''[http://www.finitearts.com/Pages/biopage.html Hal Barwood]'' &amp;amp; ''[http://www.theinspiracy.com/ Noah Falstein]''&lt;br /&gt;
* [http://www.vancouver.wsu.edu/fac/peabody/game-book/Chapter6.html Design Techniques and Ideals] from ''[http://www.vancouver.wsu.edu/fac/peabody/game-book/Coverpage.html The Art of Computer Game Design]'' - by ''[http://en.wikipedia.org/wiki/Chris_Crawford_%28game_designer%29 Chris Crawford]''&lt;br /&gt;
* [http://www.amazon.com/Level-Design-Concept-Theory-Practice/dp/1568813384 Level Design: Concept, Theory, and Practice] ($) - by ''Rudolf Kremers''&lt;br /&gt;
* [http://www.hourences.com/book/bookgameplay.htm The Hows and Whys of Level Design] ($) - by ''Sjoerd &amp;quot;hourences&amp;quot; De Jong''&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Visual_semiotics Visual Semiotics] - from ''Wikipedia''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environments involve the player more if they have several layers of thinking behind their design.&lt;br /&gt;
* [http://wiki.answers.com/Q/What_is_a_visual_metaphor What is a visual metaphor?] - from ''Answers.com''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;LDB&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Level Design Blogs ==&lt;br /&gt;
* [http://lifeofadesignmonkey.blogspot.com/ Life of a Design Monkey] - a blog by ''Mark Davies'', game designer at Ninja Theory&lt;br /&gt;
* [http://randomencounters.vox.com/ Random Encounters in Imaginary Realms] - a blog by ''Random Encounters'', game designer&lt;br /&gt;
* [http://www.lostgarden.com/ Lost Garden] - a blog by ''Danc'', game designer&lt;br /&gt;
* [http://cliffyb.com/rants/ CliffyB.com] - a blog by ''Cliff Bleszinski'', game designer at Epic Games&lt;br /&gt;
* [http://www.johnsto.co.uk/design Level Design] - a blog by ''David Alexander Johnston'', freelance game designer&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Concepting ==&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73282 Digital Environment/Landscape painting for beginners] Polycount thread&lt;br /&gt;
* [http://www.conceptart.org/forums/forumdisplay.php?f=140 Enviromentoring] and [http://www.conceptart.org/forums/forumdisplay.php?f=42 Tutorials, Tips &amp;amp; Tricks] - at [http://www.conceptart.org ConceptArt.Org]&lt;br /&gt;
* [http://www.handprint.com/HP/WCL/tech10.html elements of perspective] - by ''[http://www.handprint.com Bruce MacEvoy]'' &lt;br /&gt;
* [http://www.youtube.com/watch?v=NwBcssDYJ3o Whit Brachna Snowy Mountain] timelapse video with voiceover - by ''[http://brushbook.com Whit Brachna]'' ([http://www.youtube.com/user/MassiveDVD#g/u more freebies from Massive Black])&lt;br /&gt;
* [http://artpad.org/wordpress/wp-content/gallery/old-work/step%20by%20step.jpg Coastline] step by step image - by ''[http://artpad.org Jaime Jones]'' ([http://artpad.org/wordpress/wp-content/gallery/2005-2007/coastline2.jpg final])&lt;br /&gt;
* [http://daarken.com/flash2005/tutorials/fire_escape_02.pdf Fire Escape] step by step image - by ''[http://daarken.com/ Daarken]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/category/43/Feng-Zhu Concept Design Video Tutorials] ($) - by ''[http://www.artbyfeng.com/ Feng Zhu]''&lt;br /&gt;
* [http://www.thegnomonworkshop.com/store/product/55/The-Techniques-of-Dylan-Cole-1 Introduction to Landscape Matte Painting] ($) - by ''[http://www.dylancolestudio.com/ Dylan Cole]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[2D Tutorials|2D Tutorials]] section has more tutorials and resources for concept painting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EW&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;EWAM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Workflow &amp;amp; Modularity ==&lt;br /&gt;
&lt;br /&gt;
* [http://udn.epicgames.com/Two/WorkflowAndModularity.html Workflow techniques and modularity with Unreal game technology] - by ''[http://www.epicgames.com Epic Games]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A guide to setting up your art-to-level-design pipeline and designing modularly.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=678052#post678052 Environment workflow @ EpicGames] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A summary of the modular workflow used at Epic on Unreal Tournament 3.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=924231#post924231 Gears of War 2 modular modeling] - by ''[http://wiki.polycount.net/Rorshach Kevin Johnstone]'' &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots of using the grid for modular work, as well as a ton of useful insight into the Environment worflow at Epic. A highly recommended read!&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1101338#post1101338 Modular brick wall tiling] - by ''[http://iamglynnsmith.com/ Glynn Smith]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Tips and screenshots for sculpting modular brick walls.&lt;br /&gt;
* [http://www.brameulaers.com/tutorials/generic_wall_tutorial/generic_wall_tutorial.html Generic wall tutorial] - by ''[http://www.brameulaers.com Bram &amp;quot;Peris&amp;quot; Eulaers]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using 3ds Max and Mudbox to sculpt tilable modular sections for a stone wall.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=50160 Rock modeling approaches] - a [http://boards.polycount.net/ Polycount] thread &amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A variety of approaches for sculpting individual rocks and tilable cliffs.&lt;br /&gt;
* [http://osart3d.wordpress.com/home-page/tutorial-creating-perfectly-tiling-meshes-in-zbrush-for-use-in-videogame-environments/ Creating Perfectly Tiling Meshes in Zbrush for use in Videogame Environments] - by ''[http://osart3d.wordpress.com/ Owen &amp;quot;SHEPEIRO&amp;quot; Shepherd]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Using ZBrush's 2.5D canvas to tile stamped meshes, then using Maya to model tilable geometry.&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsindex.htm Unreal Engine 3 tutorials, game industry articles, level design/art/technical tutorials] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of tutorials and articles about designing levels with the Unreal Technology.&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=39&amp;amp;t=444791&amp;amp;page=7&amp;amp;pp=15#post4855106 Environment workflow from an artist working on a Crysis mod] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A modular city building and its texture sheet. &lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54178 Mod Facade Challenge] - by ''[http://www.linkedin.com/in/earthquake Joe &amp;quot;EarthQuake&amp;quot; Wilson]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking up a building into modular pieces and designing the texture sheet.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=51254 Maintaining the suspension of disbelief...] Polycount thread&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Discussion about the importance of using imperfection to create believable worlds.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52743 Adam Bromell's sketchbook thread] - by ''[http://www.adambromell.com Adam &amp;quot;adamBrome&amp;quot; Bromell]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Breaking an environment down into modular pieces.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52565 Chris' sketchbook thread] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Environment design &amp;amp; modular workflow.&lt;br /&gt;
* [http://www.3dbuzz.com/vbforum/sv_videonav.php?fid=836eb5e382b5d9f430df48883fca918e Level Design Video Tutorials] - from ''[http://www.3dbuzz.com 3DBuzz]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A ton of useful tutorials and design tips about creating levels.&lt;br /&gt;
* [http://www.chrisalbeluhn.com/Building_Layout_Guideline_Tutorial.html Visually Appealing Building Guide] - by ''[http://www.chrisalbeluhn.com Christopher Albeluhn]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;An excellent breakdown of how to create visual interest with game buildings. [http://www.chrisalbeluhn.com/3D_Tutorials.html Additional tutorials here].&lt;br /&gt;
&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[DigitalSculpting#TS|Digital Sculpting]] section has more tutorials about modular workflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Modeling ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=62114 Gears2 Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=54311 UT3 &amp;amp; Gears Environment Art] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [[attachment:rorshach_scifi_supportbeam.pdf|SciFi Support Beam PDF]] - by ''[http://www.kevinjohnstone.com/ Kevin Johnstone]''&lt;br /&gt;
* [http://chrisholden.net/tutor/ Environment tutorials] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=40608 Environment modeling basics] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Category:Modeling]] wiki section has more modeling tutorials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EF&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Foliage ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1021264 3D TreesTutorials] thread from the ''[http://boards.polycount.net Polycount boards]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Multiple methods.&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/11251-trees-beginners-3ds-max-tutorial.html Trees for Beginners in 3ds Max Tutorial] - by ''&amp;quot;braveryd&amp;quot;''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the AEC Extended: Foliage tree generator in 3ds Max.&lt;br /&gt;
* [http://www.andyzibits.com/tut_particle_tree_generation.html Tree creation using particle generator] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in 3ds Max.&lt;br /&gt;
* [http://learnfobia.com/category-Maya-129/tutorial-Sprite-Based-Particle-Trees-2259.html Sprite-Based Particle Trees] - by ''[http://stores.lulu.com/sunchirp Steven J. Tubbrit]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using a particle system in Maya.&lt;br /&gt;
* [http://www.andyzibits.com/tut_maya_low_poly.html Ultra-efficient tree texturing and modeling] - by ''[http://www.andyzibits.com Andy Zibits]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture and branches.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1020341#post1020341 Low-poly Tree Using Maya PaintFX] - by ''[http://www.mobygames.com/developer/sheet/view/developerId,107125/ Jeramy Cooke]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using ''Paint Effects'' in Maya to create the foliage texture, then hand-modeling the tree.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1152529#post1152529 Bending vertex normals and using vertex color] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the Edit Normals modifier in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?p=1149155#post1149155 Bending the vertex normals with Normal Thief] - by ''[http://ericchadwick.com Eric Chadwick]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Using the [http://www.scriptspot.com/3ds-max/scripts/normal-thief Normal Thief] script in 3ds Max to bend the vertex normals of low-poly foliage planes.&lt;br /&gt;
* [http://http.developer.nvidia.com/GPUGems3/gpugems3_ch16.html Vegetation Procedural Animation and Shading in Crysis] - by ''[https://www.cmpevents.com/GD08/a.asp?option=G&amp;amp;V=3&amp;amp;id=563008 Tiago Sousa]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; A detailed overview of Crytek's process for vegetation shading.&lt;br /&gt;
* [http://3dfolio.com/files/tree_tut.pdf Tree Modeling Techniques and Principles] (PDF) - by ''[http://www.3dfolio.com/ Matthew D'Onofrio]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Modeling efficient low-poly branches in 3ds Max using ''Extrude Along Spline''.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=67620 Hedges and Topiary a quick tutorial] - by [http://www.vigville.com/ 'Vig']&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Modeling and texturing method for stylized bushes.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=72325 Tree making fast technique?] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree modeling techniques discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73556 Tree texturing] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Tree texturing discussed.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=74330 Real quick tree texturing question] thread on Polycount&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; More tree stuff.&lt;br /&gt;
* Stuff to research: &lt;br /&gt;
** Warhammer Online trees? &lt;br /&gt;
** RexM trees? &lt;br /&gt;
** Adam trees?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FMT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Foliage Modeling Tools ===&lt;br /&gt;
There are a lot of tools for modeling high-resolution plants, but few for modeling game-resolution models. Here are a few...&lt;br /&gt;
* [http://ngplant.sourceforge.net/ ngPlant]&lt;br /&gt;
* [http://www.frecle.net/index.php?show=treed.about frecle tree[d]] (exports formats .B3D, .OBJ, .X)&lt;br /&gt;
* [http://www.scriptspot.com/3ds-max/scripts/tree-maker TreeMaker script for 3ds Max]&lt;br /&gt;
* [http://www.branches.ws/ Branches script for 3ds Max]&lt;br /&gt;
* [http://www.youtube.com/watch?v=bG79EosNiBQ SpeedTree in UDK] ($)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Sculpting ==&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] See the [[DigitalSculpting]] section of the Polycount wiki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ES2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Skies ==&lt;br /&gt;
* [http://cgtextures.com/textures.php?t=browse&amp;amp;q=23740 CG Textures - Panoramic Skies] free 360-degree sky photos.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=45543 360 HDR skies for sale?] from the [http://boards.polycount.net Polycount forums] has a tutorial and links about photographing HDR skies.&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-create-a-terragen-2-skybox/ How to: Create a Terragen 2 Skybox] by ''[http://www.outpt.co.uk/about/ Outpt]''.&lt;br /&gt;
* [http://3dmotive.com/product-skydome 3dmotive.com - Creating a Skydome] is a tutorial for converting a latlong sky into a spheremap layout and mapping it to a dome mesh with Photoshop and 3ds Max.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68600 Skymap workflow] by ''[http://boards.polycount.net/member.php?u=27009 divi]'' is a quick tutorial about converting a latlong sky into a square dome-like layout that uses all the texture space. [[attachment:Skymap_workflow.pdf|PDF here]]&lt;br /&gt;
* [http://www.outpt.co.uk/how-to-convert-a-skybox-to-a-skydome/ How to: Convert a Skybox to a Skydome] by ''[http://www.outpt.co.uk/about/ Outpt]'' is an in-depth tutorial about converting a cubemap into a latlong image with [http://developer.amd.com/gpu/cubemapgen/pages/default.aspx CubeMapGen], HDRShop, Photoshop, and Unreal.&lt;br /&gt;
* [http://www.e-onsoftware.com/products/ Vue] is a popular skydome creation tool.&lt;br /&gt;
* [http://www.planetside.co.uk/ Terragen] is another popular skydome creation tool.&lt;br /&gt;
* [http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[Cube Map|Cube Map]] wiki section describes how to create and use cube maps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ET&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Environment Texturing ==&lt;br /&gt;
* [http://vimeo.com/9067032 Texture Workflow videos] - by ''[http://www.hitenmistry.com/ Hiten &amp;quot;Mistry10&amp;quot; Mistry]'', from the Polycount thread ''[http://boards.polycount.net/showthread.php?t=69850 Mistry's Texture Workflow w/Video]''&lt;br /&gt;
* [http://www.game-artist.net/forums/tutorials/182-step-step-techniques-tiling-textures-3ds-max.html Creating tiling textures in 3dsmax] - by ''[http://chrisholden.net/ Chris &amp;quot;cholden&amp;quot; Holden]''&lt;br /&gt;
* [http://poopinmymouth.com/process/tips/thirding.jpg Thirding - Utilizing your texture space for environment work] - by ''[http://poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis]''&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=46&amp;amp;t=373024 Hard Surface Texture Painting] - by ''[http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell]''&lt;br /&gt;
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=17688 Tutorial: Brick Arch (Baking Multiple Maps in 3dsmax)] - by ''[http://boards.polycount.net/member.php?u=18074 mikebart]''&lt;br /&gt;
* [http://udn.epicgames.com/Two/VertexBlendingTutorial.html UDN UnrealEngine2 Vertex Blending Tutorial] - by ''[http://epicgames.com Epic Games]''&lt;br /&gt;
* [http://boards.polycount.net/showpost.php?p=756818&amp;amp;postcount=18 Using vertex blending to grunge a level and add variety] - by ''[http://www.strangefate.com/ Mario &amp;quot;StrangeFate&amp;quot; Vazquez]''&lt;br /&gt;
* [http://www.hourences.com/book/tutorialsue3terrain.htm UE3 Terrain Tutorial] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.moddb.com/tutorials/lighting-in-game-environments-the-hows-and-whys Lighting in game environments] - by ''[http://www.hourences.com Sjoerd &amp;quot;hourences&amp;quot; De Jong]''&lt;br /&gt;
* [http://www.amazon.com/Painting-Light-John-Alton/dp/0520089499 Painting with Light] - by the cinematographer ''John Alton''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;II&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Industry Information ==&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52862 Percentage of environment artists .vs. character artists at most studios] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=52412 What's the difference between a level designer and environment artist?] - from the ''[http://boards.polycount.net Polycount boards]''&lt;br /&gt;
 .[http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/icon_arrow.gif}}] The [[GameBusiness]] wiki section has links for threads and articles about how to get game jobs, how to negotiate your salary, how to manage your role, etc. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;IR&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Inspiration &amp;amp; Reference ==&lt;br /&gt;
* [http://images.google.com/ Google Image Search]&lt;br /&gt;
* [http://flickr.com/search/advanced/ Flickr Image Search]&lt;br /&gt;
* [http://images.search.yahoo.com/images/advanced?ei=UTF-8 Yahoo Image Search]&lt;br /&gt;
* [http://www.bbcmotiongallery.com/Customer/AdvancedSearch.aspx? BBC Motion Gallery] - video reference&lt;br /&gt;
* [http://www.corbismotion.com/ Corbis Motion] - video reference&lt;br /&gt;
* [http://www.gettyimages.com/Search/AdvancedSearch.aspx Getty Images Footage] - video reference&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=34320 Polycount Forums - Reference Thread]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=53002 Polycount Forums - Environment Modeling FAQ &amp;amp; Resources]&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/4379-reference-thread.html Game Artist Forums - Reference Thread]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Category:Animation</id>
		<title>Category:Animation</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Category:Animation"/>
				<updated>2010-07-06T05:22:48Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing breadcrumbs, adding categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
= [[Category:Animation]] =&lt;br /&gt;
Articles about animation for games.&lt;br /&gt;
&lt;br /&gt;
== Animation Theory ==&lt;br /&gt;
* [http://www.freetoon.com/prestonblair Cartoon Animation] by [http://en.wikipedia.org/wiki/Preston_Blair Preston Blair]&lt;br /&gt;
* [http://www.animationarena.com/principles-of-animation.html 28 Principles of Animation] by [http://en.wikipedia.org/wiki/Walt_Stanchfield Walt Stanchfield]&lt;br /&gt;
* [http://www.siggraph.org/education/materials/HyperGraph/animation/character_animation/principles/lasseter_s94.htm Tricks to Animating Characters with a Computer] by [http://en.wikipedia.org/wiki/John_Lasseter John Lasseter]&lt;br /&gt;
* [http://www.animationarena.com/acting-and-animation.html Acting and Animation] by [http://www.doronmeir.com Doron A. Meir]&lt;br /&gt;
* [http://www.guerrillacg.org/home/3d-rigging/the-rotation-problem Dealing with gimbal lock] by [http://www.guerrillacg.org/presenters/andrew-silke Andrew Silke]&lt;br /&gt;
* [http://www.lettersofnote.com/2010/06/how-to-train-animator-by-walt-disney.html Letters of Note - How to Train an Animator] by Walt Disney&lt;br /&gt;
&lt;br /&gt;
== Animation Tutorials ==&lt;br /&gt;
* [http://www.3dtotal.com/ffa/tutorials/maya/pose_animation/pose1.php Pose to Pose Pop-Through Animation] by [http://keithlango.com Keith Lango]&lt;br /&gt;
* [http://www.idleworm.com/how/anm/02w/walk1.shtml The Walk Cycle] tutorial by [http://www.angryanimator.com Dermot O’ Connor]&lt;br /&gt;
* [http://www.anticz.com/learn.htm Animation tutorials] by [http://www.anticz.com Mike Brown] (theory, gimbal lock, rigging, walk cycles)&lt;br /&gt;
* [http://animationclinic.com/ The Animation Clinic: Animation Training for the Masses] ($) by [http://keithlango.com Keith Lango]&lt;br /&gt;
* [http://spungella.blogspot.com/2008/06/animation-links-tools-tutorials-and.html Spungella] Many tutorials and links, great resource for Portfolio Tips, Animation Resources, and Rigs&lt;br /&gt;
* [http://andres.aniguild.com/animation_resources.htm Great Links at AndyToons] More links, Tutorials, Interviews with Great Animators etc.gathered by [http://andres.aniguild.com/email.htm Andres G. Lazaro]&lt;br /&gt;
* [http://www.angryanimator.com/word/test/ The Angry Animator] Bouncing Ball, Walk Cycle, and Lip Sync Tutorials by Dermot O' Conner&lt;br /&gt;
* [http://animationbuffet.blogspot.com/2008/03/norman.html Manipulating Rigs] at Animation Buffet (norman rig but can be applied to any rig) by Nair Archawattana&lt;br /&gt;
* [http://www.jasonryananimation.com/ Jason Ryan Animation]&lt;br /&gt;
* [http://www.traptcg.com/ TraptCG - animation tutorials as well as others.]&lt;br /&gt;
&lt;br /&gt;
== Animation Reference ==&lt;br /&gt;
* [http://www.biomotionlab.ca/Demos/BMLwalker.html Bio Motion Lab] - A rotateable walk cycle with different parameters (male female, happy sad, heavy light)&lt;br /&gt;
* [http://www.artnatomia.net/uk/index.html ARTnatomy] Artist friendly facial antomy (start on  level 2). A  flash based web application that allows you to sort and isolate with opacity between  the muscles, skin and skull.&lt;br /&gt;
* [http://www.posemaniacs.com/ Posemaniacs] - Essential for capturing the essence of a character in a short span of time&lt;br /&gt;
* [http://research.animationsinstitut.de/45.0.html The Facial Expression Repertoire] by Filmakademie Baden-Wuerttemberg&lt;br /&gt;
&lt;br /&gt;
== Rigging ==&lt;br /&gt;
* [http://www.3dtotal.com/team/Tutorials/face_rig/face_rig.php Facial  Rigging Tutorial] by [http://www.aldenfilion.com/ Alden Filion]. Rigging up a  control board with the help of a script.&lt;br /&gt;
* [http://www.viefex.com/view_tutorial.php?viewkey=066b82ab86dff8a46af6&amp;amp;page=1&amp;amp;viewtype=&amp;amp;category=3 Facial Control Board Tutorial] by [http://www.jessesandifer.com/ Jesse Sandifer]. A video  tutorial that outlines the same method but walks you through it  manually, good info to know.&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=68446 Wrinkle Map Wiring in 3dsMax] by [http://vigville.com/ Mark  &amp;quot;Vig&amp;quot; Dygert]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1021761#post1021761 3ds  Max - Cloth Sim to Bones] by [http://www.vigville.com Mark  &amp;quot;Vig&amp;quot; Dygert]&lt;br /&gt;
* [http://www.hyperent.com/Hyp-Tutorial-Cloth-001.php Multi Layer Cloth Basics] by [http://www.hyperent.com/ Paul  Hormis]&lt;br /&gt;
* [http://www.hyperent.com/Hyp-Tutorial-Cloth-002.php Creating Collision Meshes Using Conform Wrap] by [http://www.hyperent.com/ Paul Hormis]&lt;br /&gt;
* [http://www.hyperent.com/Hyp-Tutorial-Cloth-003.php Using Cloth to Simulate Chains] by [http://www.hyperent.com/ Paul  Hormis]&lt;br /&gt;
* [http://www.hippydrome.com/ Articulation] by [http://www.hippydrome.com/ Tenner Jones] Character Technical Director at Pixar&lt;br /&gt;
* [http://www.rigging101.com/ Rigging 101] by [http://www.javiersolsona.com/ Javier Solsona] Maya rigging tutorials and resources&lt;br /&gt;
* [http://www.anzovin.com/products/tsm2maya.html The Setup Machine] Maya rigging made simple&lt;br /&gt;
&lt;br /&gt;
== Motion Capture ==&lt;br /&gt;
Sources for free motion capture (mocap).&lt;br /&gt;
&lt;br /&gt;
* http://mocap.cs.cmu.edu/ ([http://sites.google.com/a/cgspeed.com/cgspeed/motion-capture/3dsmax-friendly-release-of-cmu-motion-database bvh format for 3ds Max here])&lt;br /&gt;
* http://stockmoves.e-motek.com/&lt;br /&gt;
* http://www.mocapdata.com/&lt;br /&gt;
* http://freemotionfiles.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
== Blogs, Podcasts, Etc. ==&lt;br /&gt;
* http://www.navone.org/blogger/  Victor Navone's blog (The alien song guy who works for Pixar now)&lt;br /&gt;
* http://animationpodcast.com/  Animation Pod Cast&lt;br /&gt;
* [http://www.speakingofanimation.com/ Speaking of Animation] - Podcasts with Industry Professionals on current releases by [http://www.speakingofanimation.com/about/ Ben Willis, Adam Strick, Jacob Gardner, Stephen Melagrano]&lt;br /&gt;
* [http://www.carlosbaena.com Carlos Baena's Blog]&lt;br /&gt;
* [http://theyellingrocket.blogspot.com/ The Yelling Rocket]&lt;br /&gt;
&lt;br /&gt;
== Must Read Books ==&lt;br /&gt;
* [http://www.amazon.com/Illusion-Life-Disney-Animation/dp/0786860707/ The Illusion of Life] by Ollie Johnston and Frank Thomas&lt;br /&gt;
* [http://www.theanimatorssurvivalkit.com The Animator's Survival Kit] by [http://www.theanimatorssurvivalkit.com/biography.html Richard Williams]&lt;br /&gt;
* [http://www.amazon.com/Drawn-Life-Classes-Stanchfield-Lectures/dp/0240810961 Drawn to Life] by Walt Stanchfield&lt;br /&gt;
* [http://www.amazon.com/Animators-Workbook-Step-Step-Techniques/dp/0823002292/ The Animators Workbook] by Tony White&lt;br /&gt;
* [http://www.amazon.com/Stop-Staring-Facial-Modeling-Animation/dp/0471789208/ Stop Staring] by Jason Osipa&lt;br /&gt;
* [http://www.amazon.de/gp/product/0240810767/ Directing the Story] by Francis Glebas&lt;br /&gt;
* [http://www.anamie.com/anamie_home.html Anamie - simplified Drawing/planning animation] by&lt;br /&gt;
* [http://www.amazon.de/gp/product/0811850161/ Draw the Looney Toons] by Dan Romanelli&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Primer]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/Normal_map</id>
		<title>Normal map</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/Normal_map"/>
				<updated>2010-07-06T04:56:20Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: breaking wikiName automatic links to temporarily remove broken linking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ## page was renamed from Normal Map --&amp;gt;&lt;br /&gt;
= Normal Map =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;WhatIsANormalMap&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;WIANM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== What is a Normal Map? ==&lt;br /&gt;
A Normal Map is usually used to fake high-res geometry detail when it's mapped onto a low-res mesh. The pixels of the normal map each store a ''normal'', a vector that describes the surface slope of the original high-res mesh at that point. The red, green, and blue channels of the normal map are used to control the direction of each pixel's normal. &lt;br /&gt;
&lt;br /&gt;
When a normal map is applied to a low-poly mesh, the texture pixels control the direction each of the pixels on the low-poly mesh will be facing in 3D space, creating the illusion of more surface detail or better curvature. However, the silhouette of the model doesn't change. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|  [[Image:NormalMap$Whatif_normalmap_mapped2.jpg]] &lt;br /&gt;
|  [[Image:NormalMap$Whatif_normalmap_low.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
|  A model with a normal map.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;image by [http://www.3dartisan.net/~kuman/ James Ku]&amp;lt;/span&amp;gt; &lt;br /&gt;
|  The low-resolution wireframe.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;image by [http://www.3dartisan.net/~kuman/ James Ku]&amp;lt;/span&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;TSVOS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;&amp;lt;Anchor([[TangentSpaceVsObjectSpace]])&amp;gt;&amp;gt;&lt;br /&gt;
== Tangent-Space vs. Object-Space ==&lt;br /&gt;
Normal maps can be made in either of two basic flavors: tangent-space or object-space. Object-space is also called local-space or model-space, same thing. World-space is basically the same as object-space, except it requires the model to remain in its original orientation, neither rotating nor deforming, so it's almost never used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;TSNM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Tangent-space normal map ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Predominantly-blue colors. Object can rotate and deform. Good for deforming meshes, like characters, animals, flags, etc.&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$green_plus.png]] Maps can be reused easily, like on differently-shaped meshes.&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$green_plus.png]] Maps can be tiled and mirrored easily, though some games might not support [[#M|mirroring]] very well.&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$green_plus.png]] Easier to [[#BlendingNormalMapsTogether|overlay painted details]].&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$green_plus.png]] Easier to use [[#NormalMapCompression|image compression]].&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$red_x.png]] More difficult to avoid smoothing problems from the low-poly vertex normals (see [[#SmoothingGroupsAndHardEdges|Smoothing Groups and Hard Edges]]).&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$red_x.png]] Slightly slower performance than an object-space map (but not by much).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;OSNM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Object-space normal map ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Rainbow colors. Objects can rotate, but usually shouldn't be deformed, unless the shader has been modified to support deformation.&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$green_plus.png]] Easier to generate high-quality curvature because it completely ignores the crude smoothing of the low-poly vertex normals.&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$green_plus.png]] Slightly better performance than a tangent-space map (but not by much).&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$red_x.png]] Can't easily reuse maps, different mesh shapes require unique maps.&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$red_x.png]] Difficult to tile properly, and mirroring requires [http://boards.polycount.net/showthread.php?t=53986 specific shader support].&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$red_x.png]] Harder to [[#BlendingNormalMapsTogether|overlay painted details]] because the base colors vary across the surface of the mesh. Painted details must be converted into Object Space to be combined properly with the OS map.&lt;br /&gt;
&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; [[Image:NormalMap$red_x.png]] They don't [[#NormalMapCompression|compress]] very well, since the blue channel can't be recreated in the shader like with tangent-space maps. Also the three color channels contain very different data which doesn't compress well, creating many artifacts. Using a half-resolution object-space map is one option.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CBS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;&amp;lt;Anchor([[ConvertingBetweenSpaces]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Converting Between Spaces ===&lt;br /&gt;
Normal maps can be converted between tangent space and object space, in order to use them with different blending tools and shaders, which require one type or the other.&lt;br /&gt;
&lt;br /&gt;
[http://diogo.codingcorner.net Diogo &amp;quot;fozi&amp;quot; Teixeira] created a tool called [http://boards.polycount.net/showthread.php?p=1072599#post1072599 NSpace] that converts an object-space normal map into a tangent-space map, which then works seamlessly in the Max viewport. He converts the map by using the same tangent basis that 3ds Max uses for its hardware shader. To see the results, load the converted map via the ''Normal Bump'' map and enable &amp;quot;Show Hardware Map in Viewport&amp;quot;. [http://gameartist.nl/ Osman &amp;quot;osman&amp;quot; Tsjardiwal] created a GUI for NSpace, you can [http://boards.polycount.net/showthread.php?p=1075143#post1075143 download it here], just put it in the same folder as the NSpace exe and run it. Diogo has further [http://boards.polycount.net/showthread.php?p=1074160#post1074160 plans for the tool] as well.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[http://www.linkedin.com/in/earthquake Joe &amp;quot;EarthQuake&amp;quot; Wilson] said: &amp;quot;[8Monkey Labs has] a tool that lets you load up your reference mesh and object space map. Then load up your tangent normals, and adjust some sliders for things like tile and amount. We need to load up a mesh to know how to correctly orient the tangent normals or else things will come out upside down or reverse etc. It mostly works, but it tends to &amp;quot;bend&amp;quot; the resulting normals, so you gotta split the mesh up into some smoothing groups before you run it, and then I usually will just composite this &amp;quot;combo&amp;quot; texture over my orig map in Photoshop.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;RGBC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;RGBChannels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== RGB Channels ==&lt;br /&gt;
Shaders can use different techniques to render tangent-space normal maps, but the normal map directions are usually consistent within a game. Usually the red channel of a tangent-space normal map stores the X axis (pointing the normals predominantly leftwards or rightwards), the green channel stores the Y axis (pointing the normals predominantly upwards or downwards), and the blue channel stores the Z axis (pointing the normals outwards away from the surface).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you see lighting coming from the wrong angle when you're looking at your normal-mapped model, and the model is using a tangent-space normal map, the normal map shader might be expecting the red or green channel (or both) to point in the opposite direction. To fix this either change the shader, or simply invert the appropriate color channels in an image editor, so that the black pixels become white and the white pixels become black.&lt;br /&gt;
&lt;br /&gt;
Some shaders expect the color channels to be swapped or re-arranged to work with a particular [[#NormalMapCompression|compression format]]. For example the DXT5_nm format usually expects the X axis to be in the alpha channel, the Y axis to be in the green channel, and the red and blue channels to be empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;TB&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;&amp;lt;Anchor([[TangentBasis]])&amp;gt;&amp;gt;&lt;br /&gt;
== Tangent Basis ==&lt;br /&gt;
[[#TangentSpaceVsObjectSpace|Tangent-space]] normal maps use a special kind of vertex data called the ''tangent basis''. This is similar to UV coordinates except it provides directionality across the surface, it forms a surface-relative coordinate system for the per-pixel normals stored in the normal map. &lt;br /&gt;
&lt;br /&gt;
Light rays are in world space, but the normals stored in the normal map are in tangent space. When a normal-mapped model is being rendered, the light rays must be converted from world space into tangent space, using the tangent basis to get there. At that point the incoming light rays are compared against the directions of the normals in the normal map, and this determines how much each pixel of the mesh is going to be lit. Alternatively, instead of converting the light rays some shaders will convert the normals in the normal map from tangent space into world space. Then those world-space normals are compared against the light rays, and the model is lit appropriately. The method depends on who wrote the shader, but the end result is the same.&lt;br /&gt;
&lt;br /&gt;
Unfortunately for artists, there are many different ways to calculate the tangent basis: [http://area.autodesk.com/blogs/chris/how_the_3ds_max_scanline_renderer_computes_tangent_and_binormal_vectors_for_normal_mapping 3ds Max], [http://download.autodesk.com/us/maya/2011help/index.html?url=./files/Appendix_A_Tangent_and_binormal_vectors.htm,topicNumber=d0e227193 Maya], [http://www.codesampler.com/dx9src/dx9src_4.htm#dx9_dot3_bump_mapping DirectX 9], [http://developer.nvidia.com/object/NVMeshMender.html NVMeshMender], [http://www.terathon.com/code/tangent.html Eric Lengyel], a custom solution, etc. This means a normal map baked in one application probably won't shade correctly in another. Artists must do some testing with different [[#T|baking tools]] to find which works best with their output. When the renderer (or game engine) renders your game model, [[#ShadersAndSeams|the shader]] must use the same tangent basis as the normal map baker, otherwise you'll get incorrect lighting, especially across the seams between UV shells.&lt;br /&gt;
&lt;br /&gt;
The [http://www.xnormal.net/ xNormal] SDK supports custom tangent basis methods. When a programmer uses it to implement their renderer's own tangent basis, artists can then use Xnormal to bake normal maps that will match their renderer perfectly.&lt;br /&gt;
&lt;br /&gt;
The [[#UVC|UVs]] and the [[#SGAHE|vertex normals]] on the low-res mesh directly influence the coloring of a [[#TSNM|tangent-space]] normal map when it is baked. Each tangent basis vertex is a combination of three things: the mesh vertex's normal (influenced by smoothing), the vertex's tangent (usually derived from the V texture coordinate), and the vertex's bitangent (derived in code, also called the binormal). These three vectors create an axis for each vertex, giving it a specific orientation in the tangent space. These axes are used to properly transform the incoming lighting from world space into tangent space, so your normal-mapped model will be lit correctly.&lt;br /&gt;
&lt;br /&gt;
When a triangle's vertex normals are pointing straight out, and a pixel in the normal map is neutral blue (128,128,255) this means that pixel's normal will be pointing straight out from the surface of the low-poly mesh. When that pixel normal is tilted towards the left or the right in the tangent coordinate space, it will get either more or less red color, depending on whether the normal map is set to store the X axis as either a positive or a negative value. Same goes for when the normal is tilted up or down in tangent space, it will either get more or less green color. If the vertex normals aren't exactly perpendicular to the triangle, the normal map pixels will be tinted away from neutral blue as well. The vertex normals and the pixel normals in the normal map are combined together to create the final per-pixel surface normals.&lt;br /&gt;
&lt;br /&gt;
[[#SAS|Shaders]] are written to use a particular direction or &amp;quot;handedness&amp;quot; for the X and Y axes in a normal map. Most apps tend to prefer +X (red facing right) and +Y (green facing up), while others like 3ds Max prefer +X and -Y. This is why you often need to invert the green channel of a normal map to get it to render correctly in this or that app... the shader is expecting a particular handedness.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When you look at a tangent-space normal map for a character, you typically see different colors along the UV seams. This is because the UV shells are often oriented at different angles on the mesh, a necessary evil when translating the 3D mesh into 2D textures. The body might be mapped with a vertical shell, and the arm mapped with a horizontal one. This requires the normals in the normal map to be twisted for the different orientations of those UV shells. The UVs are twisted, so the normals must be twisted in order to compensate. The tangent basis helps reorient (twist) the lighting as it comes into the surface's local space, so the lighting will then look uniform across the normal mapped mesh.&lt;br /&gt;
&lt;br /&gt;
When an artist tiles a tangent-space normal map across an arbitrary mesh, like a landscape, this tends to shade correctly because the mesh has a uniform direction in tangent space. If the mesh has discontinuous UV coordinates (UV seams), or the normal map has large directional gradients across it, the tangent space won't be uniform anymore so the surface will probably have shading seams.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;MTLPM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Modeling the Low-Poly Mesh ==&lt;br /&gt;
The in-game mesh usually needs to be carefully optimized to create a good silhouette, define edge-loops for better deformation, and minimize extreme changes between the vertex normals for better shading (see [[#SmoothingGroupsAndHardEdges|Smoothing Groups &amp;amp; Hard Edges]]).&lt;br /&gt;
&lt;br /&gt;
In order to create an optimized in-game mesh including a good silhouette and loops for deforming in animation, you can start with the 2nd subdivision level of your [[DigitalSculpting|digital sculpt]], or in some cases with the base mesh itself. Then you can just collapse edge loops or cut in new edges to add/remove detail as necessary. Or you can [[DigitalSculpting#OART|re-toplogize]] from scratch if that works better for you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;UVC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;UVCoordinates&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== UV Coordinates ===&lt;br /&gt;
Normal map baking tools only capture normals within the 0-1 UV square, any UV bits outside this area are ignored. &lt;br /&gt;
&lt;br /&gt;
Only one copy of the forward-facing UVs should remain in the 0-1 UV square at baking time. If the mesh uses overlapping UVs, this will likely cause artifacts to appear in the baked map, since the baker will try render each UV shell into the map. Before baking, it's best to move all the overlaps and mirrored bits outside the 0-1 sqaure. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you move all the overlaps and mirrored bits exactly 1 UV unit (any whole number will do), then you can leave them there after the bake and they will still be mapped correctly. You can move them back if you want, it doesn't matter to most game engines. Be aware that ZBrush does use UV offsets to manage mesh visibility, however this usually doesn't matter because the ZBrush cage mesh is often a different mesh than the in-game mesh used for baking.&lt;br /&gt;
&lt;br /&gt;
You should avoid changing the UVs after baking the normal map, because rotating or mirroring UVs after baking will cause the normal map not to match the [[#TB|tangent basis]] anymore, which will likely cause lighting problems. &lt;br /&gt;
&lt;br /&gt;
In 3ds Max, W is a third texture coordinate. It's used for 3D procedural textures and for storing vertex color in UV channels (you need 3 axes for RGB, so UVW can store vertex color). Bake problems can be avoided by moving any overlapping UVs to -1 on the W axis, with the same results as moving them 1 unit on the U or V axes. The tool Render To Texture will always bake whatever UVs are the highest along the W axis. However using W can be messy... it's generally hidden unless you purposefully look for it (bad for team work), doesn't get preserved on export to other apps, and high W values can prevent selecting and/or welding UVs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;M&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;Mirroring&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Mirroring ===&lt;br /&gt;
Normal maps can be mirrored across a model to create symmetrical details, and save UV space, which allows more detail in the normal map since the texture pixels are smaller on the model. &lt;br /&gt;
&lt;br /&gt;
With [[#OSNM|object-space]] maps, mirroring requires [http://boards.polycount.net/showthread.php?t=53986 specific shader support]. For [[#TSNM|tangent-space]] maps, mirroring typically creates a shading seam, but this can be reduced or hidden altogether, depending on the method used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;TMW&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Typical Mirroring Workflow ====&lt;br /&gt;
# Delete the mesh half that will be mirrored. &lt;br /&gt;
# Arrange the UVs for the remaining model, filling the UV square.&lt;br /&gt;
# Mirror the model to create a &amp;quot;whole&amp;quot; mesh, welding the mesh vertices along the seam. &lt;br /&gt;
# Move the mirrored UVs exactly 1 unit (or any whole number) out of the 0-1 UV square.&lt;br /&gt;
# Bake the normal map.&lt;br /&gt;
&lt;br /&gt;
Sometimes an artist will decide to delete half of a symmetrical model before baking. &lt;br /&gt;
&lt;br /&gt;
This is a mistake however because often the vertex normals along the hole will bend towards the hole a bit; there are no faces on the other side to average the normals with. This will create a strong lighting seam in the normal map. &lt;br /&gt;
&lt;br /&gt;
It's typically best to use the complete mirrored model to bake the normal map, not just the unique half. &lt;br /&gt;
&lt;br /&gt;
To prevent the mirrored UVs from causing overlaps or baking errors, move the mirrored [[#UVC|UVs]] out of the 0-1 UV space, so only one copy of the non-mirrored UVs is left within the 0-1 square.&lt;br /&gt;
&lt;br /&gt;
To avoid texel &amp;quot;leaks&amp;quot; between the UV shells, make sure there's enough [[Edge Padding]] around each shell, including along the edges of the normal map. None of the UV shells should be touching the edge of the 0-1 UV square, unless they're meant to tile with the other side of the map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Center Mirroring ====&lt;br /&gt;
If the mirror seam runs along the surface of a continuous mesh, like down the center of a human face for example, then it will probably create a lighting seam. &lt;br /&gt;
&lt;br /&gt;
In Epic Games' [http://www.unrealtechnology.com/technology.php Unreal Engine 3] (UE3) their symmetrical models commonly use centered mirroring. Epic uses materials that mix a [[DetailMap]] with the normal maps; these seem to scatter the diffuse/specular lighting and help minimize the obviousness of the mirror seams. For their [[Light Map]]ped models they use [http://udn.epicgames.com/Three/LightMapUnwrapping.html a technique] that can almost completely hide the mirror seam.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''''[http://www.zbrushcentral.com/showpost.php?p=573108&amp;amp;postcount=28 GOW2 normal map seams], [http://utforums.epicgames.com/showthread.php?p=27166791#post27166791 UDK normal map seams]'''''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;OM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Offset Mirroring ====&lt;br /&gt;
Offset mirroring is a method where you move the mirror seam off to one side of the model, so the seam doesn't run exactly down the center. For example with a character's head, the UV seam can go down along the side of the head in front of the ear. The UV shell for the nearest ear can then be mirrored to use the area on the other side of the head. &lt;br /&gt;
&lt;br /&gt;
This avoids the &amp;quot;Rorschach&amp;quot; effect and allows non-symmetrical details, but it still saves texture space because the two sides of the head can be mirrored (they're never seen at the same time anyhow).&lt;br /&gt;
&lt;br /&gt;
Offset mirroring doesn't get rid of the seam, but it does move it off to a place where it can either be less obvious, or where it can be hidden in a natural seam on the model.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FCM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Flat Color Mirroring ====&lt;br /&gt;
[http://boards.polycount.net/showthread.php?t=51088 Tutorial for painting out seams on mirrored tangent-space normal maps] by [http://www.warbeast.de/ warby] solves seams by painting a flat set of normals along the seam, using neutral blue (128,128,255). However it only works along horizontal or vertical UV seams, not across any angled UVs. It also removes any details along the mirror seam, creating blank areas. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Element Mirroring ====&lt;br /&gt;
The mirror seam can be avoided completely when it doesn't run directly through any mesh. For example if there's a detached mesh element that runs down the center of the model, this can be uniquely mapped, while the meshes on either side can be mirrors of each other. Whenever the mirrored parts don't share any vertex normals with the non-mirrored parts, there won't be any seams. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;SGAHE&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[SmoothingGroupsAndHardEdges]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Smoothing Groups &amp;amp; Hard Edges ===&lt;br /&gt;
&lt;br /&gt;
Each vertex in a mesh has at least one vertex normal. These normals are used to light the triangles of the mesh. Each vertex however can have more than one normal, as many as the number of triangles connected to it. When two triangles have different vertex normals along their shared edge, it creates a shading seam, called a ''hard edge'' in most modeling apps. 3ds Max uses ''Smoothing Groups'' to get the same result... creating hard and soft edges by splitting and combining vertex normals.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the mesh uses all soft normals (a single smoothing group) this can produce extreme shading differences across the model, as the lighting is interpolated across the extreme differences between the vertex normals. It is best to reduce these extremes when you can because the [[#TangentBasis|tangent basis]] can only do so much to counteract it.&lt;br /&gt;
&lt;br /&gt;
Hard edges are usually best where the model already has a natural seam. For example, you can add a hard edge along the rim of a car's wheel well, to prevent the inside of the wheel well from distorting the shading for the outside of the car body. Mechanical models usually need hard edges where ever the surface bends more than about 45 degrees. &lt;br /&gt;
&lt;br /&gt;
For most meshes, the best results usually come from adding hard edges where ever there are UV seams. There are no hard rules however, you must experiment with different approaches to find what works best in your game.&lt;br /&gt;
&lt;br /&gt;
When you use object-space normal maps the vertex normal problem goes away since you're no longer relying on the crude vertex normals of the mesh. An object-space normal map completely ignores vertex normals. Object-space mapping allows you to use all soft edges and no bevels on the low-res mesh, without showing lighting errors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;HEDAT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Hard Edge Discussions &amp;amp; Tutorials ====&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73593 Normal Maps: Can Somone Explain This &amp;quot;Black Edge&amp;quot; issue]&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=73566 Normal Maps: Can someone explain normals, tangents and split UVs?]&lt;br /&gt;
* [http://www.polycount.com/forum/showthread.php?t=72861 3Point Shader Lite - Shader material editor and Quality Mode normalmaps for 3ds Max]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68173 Why you should NOT trust 3ds Max's viewport normal-map display!]&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/10503-xsi-normal-mapped-cube-looks-bad.html XSI - normal mapped cube looks bad]&lt;br /&gt;
* [http://www.game-artist.net/forums/support-tech-discussion/11924-weird-maya-normal-map-seam-artifact-problem-am-i-making-simple-mistake.html Weird Maya normal map seam/artifact problem]&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?p=1080600 Seams in Normals when Creating Tiling Environment Trims and other Tiles]&lt;br /&gt;
* The tutorial [http://www.svartberg.com/tutorials/article_normalmaps/normalmaps.html Normalmaps for the Technical Game Modeler] by [http://www.svartberg.com Ariel Chai] shows how low-poly smoothing can affect the normal map.&lt;br /&gt;
* The tutorial: [http://wiki.polycount.net/3D_Tutorials/Modeling_High-Low_Poly_Models_for_Next_Gen_Games Modeling High/Low Poly Models for Next Gen Games] by [http://www.acetylenegames.com/artbymasa/ João &amp;quot;Masakari&amp;quot; Costa] shows how smoothing affects raycasting.&lt;br /&gt;
* The [http://tech-artists.org/wiki/Beveling Beveling section on the Tech-Artists.Org Wiki] discusses the breaking of normals and smoothing groups in general terms.&lt;br /&gt;
* The two-part article [http://www.ericchadwick.com/examples/provost/byf2.html#wts Beautiful, Yet Friendly] by [http://www.linkedin.com/in/gprovost Guillaume Provost] explains how smoothing groups and other mesh attributes cause vertices to be duplicated in the game. The vertex count is actually what matters in the game, not the triangle count.&lt;br /&gt;
* The Crysis documentation [http://doc.crymod.com/AssetCreation/PolyBumpReference.html PolyBump Reference] has a section towards the bottom that shows how smoothing affects their baked normal maps.&lt;br /&gt;
* The polycount thread [http://boards.polycount.net/showthread.php?t=60694 Toying around with normal map approaches] has a great discussion of how best to use smoothing groups and bevels for better shading.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;UB&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Using Bevels ====&lt;br /&gt;
Bevels/chamfers generally improve the silhouette of the model, and can also help reflect specular highlights better. &lt;br /&gt;
&lt;br /&gt;
However bevels tend to produce long thin triangles, which slow down the in-game rendering of your model. Real-time renderers have trouble rendering long thin triangles because they create a lot of sub-pixel areas to render. &lt;br /&gt;
&lt;br /&gt;
Bevels also balloon the vertex count, which can increase the transform cost and memory usage. Hard edges increase the vertex count too, but not when  the edge also shares a seam in UV space. For a good explanation of the vertex count issue, see [http://www.ericchadwick.com/examples/provost/byf2.html#wts Beautiful, Yet Friendly].&lt;br /&gt;
&lt;br /&gt;
Using hard edges with matching UV shells tends to give better performance and better cosmetic results than using bevels. However there are differing opinions on this, see the Polycount thread &amp;quot;[http://boards.polycount.net/showthread.php?t=71760 Maya transfer maps help]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EVN&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Edited Vertex Normals ====&lt;br /&gt;
If you use bevels the shading will be improved by editing the vertex normals so the larger flat surfaces have perpendicular normals. The vertex normals are then forced to blend across the smaller bevel faces, instead of across the larger faces. See the Polycount thread [http://boards.polycount.net/showthread.php?t=66139 Superspecular soft edges tutorial chapter 1].&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;MTHPM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;&amp;lt;Anchor([[ModelingTheHighPolyMesh]])&amp;gt;&amp;gt;&lt;br /&gt;
== Modeling The High-Poly Mesh ==&lt;br /&gt;
[[Subdivision Surface Modeling]] and [[DigitalSculpting]] are the techniques most often used for modeling a normal map. &lt;br /&gt;
&lt;br /&gt;
Some artists prefer to model the in-game mesh first, other artists prefer to model the high-res mesh first, and others start somewhere in the middle. The modeling order is ultimately a personal choice though, all three methods can produce excellent results:&lt;br /&gt;
* Build the in-game model, then up-res it and sculpt it.&lt;br /&gt;
* Build and sculpt a high resolution model, then build a new in-game model around that.&lt;br /&gt;
* Build a basemesh model, up-res and sculpt it, then step down a few levels of detail and use that as a base for building a better in-game mesh.&lt;br /&gt;
If the in-game mesh is started from one of the subdivision levels of the basemesh sculpt, various edge loops can be collapsed or new edges can be cut to add/remove detail as necessary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;SE&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Sloped Extrusions ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [[3D Tutorials/Modeling High-Low Poly Models for Next Gen Games|Modeling High/Low Poly Models for Next Gen Games]] by [http://www.acetylenegames.com/artbymasa/ João &amp;quot;Masakari&amp;quot; Costa]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;MRF&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;MRRCB&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== mental ray Round Corners Bump ===&lt;br /&gt;
The mental ray renderer offers an automatic bevel rendering effect called Round Corners Bump that can be baked into a normal map. This is available in 3ds Max, Maya, and XSI. See [http://boards.polycount.net/showthread.php?t=71995 Zero Effort Beveling for normal maps] - by [http://boards.polycount.net/member.php?u=31662 Robert &amp;quot;r_fletch_r&amp;quot; Fletcher].&lt;br /&gt;
&lt;br /&gt;
[http://jeffpatton.net/ Jeff Patton] posted about [http://jeffpatton.cgsociety.org/blog/archive/2007/10/ how to expose Round Corners Bump] in 3ds Max so you can use it in other materials.&lt;br /&gt;
&lt;br /&gt;
[http://cryrid.com/art/ Michael &amp;quot;cryrid&amp;quot; Taylor] posted a tutorial about how to use [http://cryrid.com/images/temp/XSI/zeroeffort_bevels.jpg Round Corners in XSI].&lt;br /&gt;
&lt;br /&gt;
XSI is able to bake a good normal map with it, but 3ds Max seems to bake it incorrectly, and Maya isn't able to bake the effect at all. Maybe Max might be able to bake it correctly, if the .mi shader is edited to use the correct coordinate space?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Baking&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Baking ==&lt;br /&gt;
The process of transferring normals from the high-res model to the in-game model is often called baking. The baking tool usually starts projecting a certain numerical distance out from the low-poly mesh, and sends rays inwards towards the high-poly mesh. When a ray intersects the high-poly mesh, it records the mesh's surface normal and saves it in the normal map.&lt;br /&gt;
&lt;br /&gt;
To get an understanding of how all the options affect your normal map, do some test bakes on simple meshes like boxes. They generate quickly so you can experiment with [[#UVCoordinates|UV mirroring]], [[#SGAHE|smoothing groups]], etc. This helps you learn the settings that really matter.&lt;br /&gt;
* The tutorial [http://wiki.polycount.net/3D_Tutorials/Modeling_High-Low_Poly_Models_for_Next_Gen_Games Modeling High/Low Poly Models for Next Gen Games] by [http://www.acetylenegames.com/artbymasa/ João &amp;quot;Masakari&amp;quot; Costa] has more examples of ray-casting, plus how to get better results from the bake.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;RT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Reset Transforms ===&lt;br /&gt;
Before baking, make sure your low-poly model's transforms have been reset. '''''This is very important!''''' Often during the modeling process a model will be rotated and scaled, but these compounded transforms can create a messy local &amp;quot;space&amp;quot; for the model, which in turn often creates rendering errors for normal maps. &lt;br /&gt;
&lt;br /&gt;
In 3ds Max, use the Reset Xforms utility then Collapse the Modifier Stack. In Maya use Freeze Transformation. In XSI use the Freeze button.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;TRI&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Triangulating ===&lt;br /&gt;
Before baking, it is usually best to triangulate the low-poly model, converting it from polygons into pure triangles. This prevents the vertex normals from being changed later on, which can create specular artifacts.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sometimes a baking tool or a mesh exporter/importer will re-triangulate the polygons. A quad polygon is actually treated as two triangles, and the internal edge between them is often switched diagonally during modeling operations. When the vertices of the quad are moved around in certain shapes, the software's algorithm for polygon models tries to keep the quad surface in a &amp;quot;rational&amp;quot; non-overlapping shape. It does this by switching the internal edge between its triangles.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;WWC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[WorkingWithCages]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Working with Cages ===&lt;br /&gt;
''Cage'' has two meanings in the normal-mapping process: a low-poly base for [[subdivision surface modeling]] (usually called the [[DigitalSculpting#BM|basemesh]]), or a ray-casting mesh used for normal map baking. This section covers the ray-casting cage.&lt;br /&gt;
&lt;br /&gt;
Most normal map baking tools allow you to use a distance-based raycast. A ray is sent outwards along each vertex normal, then at the distance you set a ray is cast back inwards. Where ever that ray intersects the high poly mesh, it will sample the normals from it. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|  [[Image:NormalMap$Normalmap_raycasting_1.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| Hard edges and a distance-based raycast (gray areas) cause ray misses (yellow) and ray overlaps (cyan).&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;image by[http://www.mankua.com/ Diego Castaño]&amp;lt;/span&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unfortunately with a distance-based raycast, [[#SGAHE|split vertex normals]] will cause the bake to miss parts of the high-res mesh, causing errors and seams. &lt;br /&gt;
&lt;br /&gt;
Some software allows you to use ''cage mesh'' option instead, which basically inflates a copy of the low-poly mesh, then raycasts inwards from each vertex. This ballooned-out mesh is the cage.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|&amp;lt;tablebgcolor=&amp;quot;#ffaaaa&amp;quot;&amp;gt;| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In 3ds Max the cage controls both the distance and the direction of the raycasting. &lt;br /&gt;
&lt;br /&gt;
In Maya the cage only controls the distance; the ray direction matches the vertex normals (inverted).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration: line-through&amp;quot;&amp;gt; This may have been fixed in the latest release...&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&lt;br /&gt;
In Xnormal the cage is split everywhere the model has [[#SGAHE|hard edges]], causing ray misses in the bake. You can fix the hard edge split problem but it involves an overly complex workflow. You must also repeat the whole process any time you change your mesh:&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Load the 3d viewer.&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Turn on the cage editing tools.&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Select all of the vertices.&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Weld all vertices.&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Expand the cage as you normally would.&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Save out your mesh using the Xnormal format.&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt; Make sure Xnormal is loading the correct mesh.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;SI&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[SolvingIntersections]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Solving Intersections ===&lt;br /&gt;
The projection process often causes problems like misses, or overlaps, or intersections. It can be difficult generating a clean normal map in areas where the high-poly mesh intersects or nearly intersects itself, like in between the fingers of a hand. Setting the ray distance too large will make the baker pick the other finger as the source normal, while setting the ray distance too small will lead to problems at other places on the mesh where the distances between in-game mesh and high-poly mesh are greater.&lt;br /&gt;
&lt;br /&gt;
Fortunately there are several methods for solving these problems.&lt;br /&gt;
&lt;br /&gt;
# Change the shape of the cage. Manually edit points on the projection cage to help solve tight bits like the gaps between fingers.&lt;br /&gt;
# Limit the projection to matching materials, or matching UVs.&lt;br /&gt;
# Explode the meshes. See the polycount thread [http://boards.polycount.net/showthread.php?t=62921 Explode script needed (for baking purposes)].&lt;br /&gt;
# Bake two or more times using different cage sizes, and combine them in Photoshop.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;SWL&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[SolvingWavyLines]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Solving Wavy Lines ===&lt;br /&gt;
When capturing from a cylindrical shape, often the differences between the low-poly mesh and the high-poly mesh will create a wavy edge in the normal map. There are a couple ways to avoid this:&lt;br /&gt;
&lt;br /&gt;
# Adjust the shape of the cage to influence the directions the rays will be cast. At the bottom of [http://www.poopinmymouth.com/tutorial/normal_workflow_2.htm this page of his normal map tutorial], [http://www.poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis] shows how to do this in 3ds Max. Same method can be seen in the image below.&lt;br /&gt;
# Subdivide the low-res mesh so it more closely matches the high-res mesh. [http://www.custom-airbrush.com/ Jeff &amp;quot;airbrush&amp;quot; Ross] has a [http://dodownload.filefront.com/9086954//72f71c0147df53765045a22253c18361a29a6d532425842007ead644d39cbb85d0794ab560365cfa video tutorial] that shows how to do this in Maya.&lt;br /&gt;
# Paint out the wavy line. The [http://www.poopinmymouth.com/tutorial/normal_workflow_3.htm normal map process tutorial] by [http://www.poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis] includes an example of painting out wavy lines in a baked normal map.&lt;br /&gt;
# Use a separate planar-projected mesh for the details that wrap around the barrel area, so the ray-casting is more even. For example to add tread around a tire, the tread can be baked from a tread model that is laid out flat, then that bake can layered onto the bake from the cylindrical tire mesh in a paint program.&lt;br /&gt;
# The polycount thread &amp;quot;[http://boards.polycount.net/showthread.php?t=55754 approach to techy stuff]&amp;quot; has some good tips for normal-mapping cylindrical shapes.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[SolvingPixelArtifacts]])&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;SPA&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Solving Pixel Artifacts ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
If you are using 3ds Max's ''Render To Texture'' to bake from one UV layout to another, you may see stray pixels scattered across the bake. This only happens if you are using a copy of the original mesh in the Projection, and that mesh is using a different UV channel than the original mesh.&lt;br /&gt;
&lt;br /&gt;
There are two solutions for this:&lt;br /&gt;
&lt;br /&gt;
* Add a Push modifier to the copied mesh, and set it to a low value like 0.01.&lt;br /&gt;
- or -&lt;br /&gt;
&lt;br /&gt;
* Turn off ''Filter Maps'' in the render settings (Rendering menu &amp;gt; Render Setup &amp;gt; Renderer tab &amp;gt; uncheck Filter Maps). To prevent aliasing you may want to enable the Global Supersampler in Render Setup.&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[BakingTransparency]])&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;BT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Baking Transparency ===&lt;br /&gt;
Sometimes you need to bake a normal map from an object that uses opacity maps, like a branch with opacity-mapped leaves. Unfortunately baking apps often completely ignore any transparency mapping on your high-poly mesh.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|  [[Image:NormalMap$JoeWilson_ivynormals_error.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| 3ds Max's RTT baker causes transparency errors.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;image by[http://www.linkedin.com/in/earthquake Joe &amp;quot;EarthQuake&amp;quot; Wilson]&amp;lt;/span&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this, render a Top view of the mesh. This only works if you're using a planar UV projection for your low-poly mesh and you're baking a tangent-space normal map.&lt;br /&gt;
&lt;br /&gt;
* Make sure the Top view matches the dimensions of the planar UV projection used by the low-poly mesh. It helps to use an orthographic camera for precise placement.&lt;br /&gt;
* On the high-poly mesh either use a specific lighting setup or a use special material shader:&lt;br /&gt;
* 1) The lighting setup is described in these tutorials:&lt;br /&gt;
* * [http://www.bencloward.com/tutorials_normal_maps11.shtml Creating A Normal Map Right In Your 3D App] by [http://www.bencloward.com/ Ben Cloward]&lt;br /&gt;
* *[http://www.pinwire.com/articles/26/1/Generating-High-Fidelity-Normal-Maps-with-3-D-Software.html Generating High Fidelity Normal Maps with 3-D Software] by [http://www.linkedin.com/pub/0/277/4AB Dave McCoy], Graphics Techniques Consultant, Xbox Content and Design Team&lt;br /&gt;
* 2) The material shader does the same thing, but doesn't require lights.&lt;br /&gt;
* * [http://www.scriptspot.com/3ds-max/normaltexmap NormalTexMap] scripted map for 3ds Max by [http://www.scriptspot.com/users/dave-locke Dave Locke].&lt;br /&gt;
* * [http://www.footools.com/3dsmax_plugins.html InfoTexture] map plugin for 3ds Max by [http://www.footools.com John Burnett]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[AntiAliasing]])&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;AA&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Anti-Aliasing ===&lt;br /&gt;
Turning on super-sampling or anti-aliasing (or whatever multi-ray casting is called in your normal map baking tool) will help to fix any jagged edges where the high-res model overlaps itself within the UV borders of the low-poly mesh, or wherever the background shows through holes in the mesh. Unfortunately this tends to render much much slower, and takes more memory.&lt;br /&gt;
&lt;br /&gt;
One trick to speed this up is to render 2x the intended image size then scale the normal map down 1/2 in a paint program like Photoshop. The reduction's pixel resampling will add anti-aliasing for you in a very quick process. After scaling, make sure to re-normalize the map if your game doesn't do that already, because the un-normalized pixels in your normalmap may cause pixelly artifacts in your specular highlights. Re-normalizing can be done with [http://developer.nvidia.com/object/photoshop_dds_plugins.html NVIDIA's normal map filter] for Photoshop.&lt;br /&gt;
&lt;br /&gt;
3ds Max's supersampling doesn't work nicely with edge padding, it produces dark streaks in the padded pixels. If so then turn off padding and re-do the padding later, either by re-baking without supersampling or by using a Photoshop filter like the one that comes with [[#3DTools|Xnormal]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;EP&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[EdgePadding]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Edge Padding ===&lt;br /&gt;
If a normal map doesn't have enough [[Edge Padding]], this will create shading seams on the UV borders. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;P&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;Painting&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Painting ==&lt;br /&gt;
Don't be afraid to edit normal maps in Photoshop. After all it is just a texture, so you can clone, blur, copy, blend all you want... as long as it looks good of course. Some understanding of [[#RGBChannels|the way colors work]] in normal maps will go a long way in helping you paint effectively.&lt;br /&gt;
&lt;br /&gt;
A normal map sampled from a high-poly mesh will nearly always be better than one sampled from a texture, since you're actually grabbing &amp;quot;proper&amp;quot; normals from an accurate, highly detailed surface. That means your normal map's pixels will basically be recreating the surface angles of your high-poly mesh, resulting in a very believable look.&lt;br /&gt;
&lt;br /&gt;
If you only convert an image into a normal-map, it can look very flat, and in some cases it can be completely wrong unless you're very careful about your value ranges. Most image conversion tools assume the input is a heightmap, where black is low and white is high. If you try to convert a diffuse texture that you've painted, the results are often very poor. Often the best results are obtained by baking the large and mid-level details from a high-poly mesh, and then combined with photo-sourced &amp;quot;fine detail&amp;quot; normals for surface details such as fabric weave, scratches and grain.&lt;br /&gt;
&lt;br /&gt;
Sometimes creating a high poly surface takes more time than your budget allows. For character or significant environment assets then that is the best route, but for less significant environment surfaces working from a heightmap-based texture will provide a good enough result for a much less commitment in time.&lt;br /&gt;
&lt;br /&gt;
* [http://crazybump.com/ CrazyBump] is a commercial normal map converter.&lt;br /&gt;
* [http://www.renderingsystems.com/support/showthread.php?tid=3 ShaderMap] is a commercial normal map converter.&lt;br /&gt;
* [http://www.pixplant.com/ PixPlant] is a commercial normal map converter.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68860 NJob] is a free normal map converter.&lt;br /&gt;
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html NVIDIA normalmap filter for Photoshop] is a free normal map converter.&lt;br /&gt;
* [http://xnormal.net Xnormal height-to-normals filter for Photoshop] is a free normal map converter.&lt;br /&gt;
* [http://www.poopinmymouth.com/tutorial/normal_workflow_3.htm Normal map process tutorial] by [http://www.poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis] includes an example of painting out wavy lines in a baked normal map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;BNMT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[BlendingNormalMapsTogether]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Blending Normal Maps Together ===&lt;br /&gt;
Blending normal maps together is a quick way to add high-frequency detail like wrinkles, cracks, and the like. Fine details can be painted as a height map, then it can be converted into a normal map using one of the normal map tools. Then this &amp;quot;details&amp;quot; normal map can be blended with a geometry-derived normal map using one of the methods below. &lt;br /&gt;
&lt;br /&gt;
Here is a comparison of four of the blending methods. Note that in these examples the default values were used for CrazyBump (Intensity 50, Strength 33, Strength 33), but the tool allows each layer's strength to be adjusted individually for stronger or milder results. Each of the normal maps below were [[#Renormalizing|re-normalized]] after blending.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
| [[Image:NormalMap$nrmlmap_blending_methods_Maps.png}}&lt;br /&gt;
|-&lt;br /&gt;
| The blended normal maps.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;image by[http://www.ericchadwick.com Eric Chadwick]&amp;lt;/span&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The four blending methods used above:&lt;br /&gt;
# [http://www.crazybump.com CrazyBump] by Ryan Clark blends normal maps together using calculations in 3D space rather than just in 2D. This does probably the best job at preserving details, and each layer's strength settings can be tweaked individually. &lt;br /&gt;
# [http://www.rodgreen.com/?p=4 Combining Normal Maps in Photoshop] by Rod Green blends normal maps together using Linear Dodge mode for the positive values and Difference mode for the negative values, along with a Photoshop Action to simplify the process. It's free, but the results may be less accurate than CrazyBump.&lt;br /&gt;
# [http://www.paultosca.com/makingofvarga.html Making of Varga] by [http://www.paultosca.com/ Paul &amp;quot;paultosca&amp;quot; Tosca] blends normal maps together using Overlay mode for the red and green channels and Multiply mode for the blue channel. This gives a slightly stronger bump than the Overlay-only method. [http://www.leocov.com/ Leo &amp;quot;chronic&amp;quot; Covarrubias] has a step-by-step tutorial for this method in [http://www.cgbootcamp.com/tutorials/2009/12/9/photoshop-combine-normal-maps.html CG Bootcamp Combine Normal Maps].&lt;br /&gt;
# [http://www.poopinmymouth.com/process/tips/normalmap_deepening.jpg Normalmap Deepening] by [http://www.poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis] shows how to blend normal maps together using Overlay mode. [http://cgtextures.com/content.php?action=tutorial&amp;amp;name=normalmap CGTextures tutorial for the NVIDIA Photoshop filter] by [http://hirezstudios.com/ Scott Warren] also shows how to create normalmaps using multiple layers (Note: to work with the Overlay blend mode each layer's Output Level should be 128 instead of 255, you can use the Levels tool for this).&lt;br /&gt;
&lt;br /&gt;
The [http://boards.polycount.net/showthread.php?t=69615 Getting good height from Nvidia-filter normalizing grayscale height] thread on the Polycount forum has a discussion of different painting/blending options. Also see the [[#2DT|2D Tools]] section for painting and conversion tools.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;PCT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Pre-Created Templates ===&lt;br /&gt;
A library of shapes can be developed and stored for later use, to save creation time for future normal maps. Things like screws, ports, pipes, and other doo-dads. These shapes can be stored as bitmaps with transparency so they can be layered into baked normal maps.&lt;br /&gt;
&lt;br /&gt;
* [http://www.beautifulrobot.com/?p=69 Creating &amp;amp; Using NormalMap &amp;quot;Widgets&amp;quot;] - by ''[http://www.beautifulrobot.com Steev &amp;quot;kobra&amp;quot; Kelly]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; How to set up and render template objects.&lt;br /&gt;
* [http://www.akramparvez.com/portfolio/scripts/normalmap-widget-for-3ds-max/ NormalMap Widget for 3ds Max] - by ''[http://www.akramparvez.com Akram Parvez]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;A script to automate the setup and rendering process.&lt;br /&gt;
* See the section [[#BT|Baking Transparency]] for more template-rendering tools and tutorials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;RN&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span id=&amp;quot;Renormalizing&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Re-normalizing ===&lt;br /&gt;
Re-normalizing means resetting the length of each normal in the map to 1.&lt;br /&gt;
&lt;br /&gt;
A normal mapping shader takes the three color channels of a normal map and combines them to create the direction and length of each pixel's normal. These normals are then used to apply the scene lighting to the mesh. However if you edit normal maps by hand or if you blend multiple normal maps together this can cause those lengths to change. Most shaders expect the length of the normals to always be 1 (normalized), but some are written to re-normalize the normal map dynamically (for example, 3ds Max's Hardware Shaders do re-normalize).&lt;br /&gt;
&lt;br /&gt;
If the normals in your normal map are not normalized, and your shader doesn't re-normalize them either, then you may see artifacts on the shaded surface... the specular highlight may speckle like crazy, the surface may get patches of odd shadowing, etc. To help you avoid this NVIDIA's normal map filter for Photoshop provides an easy way to re-normalize a map after editing; just use the '''Normalize Only''' option. [http://xnormal.net Xnormal] also comes with a Normalize filter for Photoshop.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some shaders use [[#NormalMapCompression|compressed normal maps]]. Usually this means the blue channel is thrown away completely, so it's recalculated on-the-fly in the shader. However the shader has to re-normalize in order to recreate that data, so any custom normal lengths that were edited into the map will be ignored completely. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;AOIANM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;AmbientOcclusionIntoANormalMap&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Ambient Occlusion into a Normal Map ===&lt;br /&gt;
If the shader doesn't re-normalize the normal map, an [[Ambient Occlusion Map]] can actually be baked into the normal map. This will shorten the normals in the crevices of the surface, causing the surface to receive less light there. This works with both diffuse and specular, or any other pass that uses the normal map, like reflection.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To bake the AO into a normal map, adjust the levels of the AO layer first so the darks only go as low as 127 gray, then set the AO layer to Darken mode. This will shorten the normals in the normalmap, causing the surface to receive less light in the darker areas. &lt;br /&gt;
&lt;br /&gt;
This trick doesn't work with any shaders that re-normalize, like 3ds Max's Hardware Shaders. The shader must be altered to actually use the lengths of your custom normals; most shaders just assume all normals are 1 in length because this makes the shader code simpler. Also this trick will not work with most of the common [[#NormalMapCompression|normal map compression formats]], which often discard the blue channel and recalculate it in the shader, which requires re-normalization.&lt;br /&gt;
&lt;br /&gt;
For the best results it's usually best to multiply AO into the color map instead of editing it into the normal map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;BLE&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[BacklightingExample]])&amp;gt;&amp;gt;&lt;br /&gt;
=== Back Lighting Example ===&lt;br /&gt;
You can customize normal maps for some interesting effects. If you invert the blue channel of a tangent-space map, the normals will be pointing to the opposite side of the surface, which can simulate backlighting.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|  [[Image:NormalMap$tree_front.jpg]] &lt;br /&gt;
|-&lt;br /&gt;
| Tree simulating subsurface scattering (front view).&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;image by[http://www.linkedin.com/in/ericchadwick Eric Chadwick]&amp;lt;/span&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The tree leaves use a shader than adds together two diffuse maps, one using a regular tangent-space normal map, the other using the same normal map but with the blue channel inverted. This causes the diffuse map using the regular normal map to only get lit on the side facing the light (front view), while the diffuse map using the inverted normal map only gets lit on the opposite side of the leaves (back view). The leaf geometry is 2-sided but uses the same shader on both sides, so the effect works no matter the lighting angle. As an added bonus, because the tree is self-shadowing the leaves in shadow do not receive direct lighting, which means their backsides do not show the inverted normal map, so the fake subsurface scatter effect only appears where the light directly hits the leaves. This wouldn't work for a whole forest because of the computational cost of self-shadowing and double normal maps, but could be useful for a single &amp;quot;star&amp;quot; asset, or if LODs switched the distant trees to a model that uses a cheaper shader.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;SAS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[ShadersAndSeams]])&amp;gt;&amp;gt;&lt;br /&gt;
== Shaders and Seams ==&lt;br /&gt;
You need to use the right kind of shader to avoid seeing seams where UV breaks occur. It must be written to use the same [[#TangentBasis|tangent basis]] that was used during baking. If the shader doesn't, the lighting will either be inconsistent across UV borders or it will show smoothing errors from the low-poly vertex normals.&lt;br /&gt;
&lt;br /&gt;
Xnormal generates accurate normals when displayed in Xnormal, and the SDK includes a method to write your own custom tangent space generator for the tool. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;3MS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 3ds Max Shaders ===&lt;br /&gt;
The &amp;quot;Render To Texture&amp;quot; tool in 3ds Max 2011 and older generates [[#TSNM|tangent-space]] normal maps that render correctly in the offline renderer (scanline) but do not render correctly in the realtime viewport with the 3ds Max shaders. Max is using a different [[#TangentBasis|tangent basis]] for each. This is readily apparent when creating non-organic hard surface normalmaps; smoothing errors appear in the viewport that do not appear when rendered. &lt;br /&gt;
&lt;br /&gt;
The errors can be fixed by using &amp;quot;Render To Texture&amp;quot; to bake a [[#TSNM|tangent-space]] or [[#OSNM|object-space]] map, and using the free [http://www.3pointstudios.com/3pointshader_about.shtml &amp;quot;3Point Shader&amp;quot;] by Christoph '[[CrazyButcher]]' Kubisch and Per 'perna' Abrahamsen. The shader uses the same tangent basis as the baking tool, so it produces nearly flawless results. It also works with old bakes.&lt;br /&gt;
&lt;br /&gt;
You can get OK results in the Max viewport using a tangent-space map baked in Maya, loading it in a Standard material, and enabling &amp;quot;Show Hardware Map in Viewport&amp;quot;. Another method is to use Render To Texture to bake an [[#OSNM|object-space]] map then use [[#CBS|Nspace]] to convert it into a tangent-space map then load that in a DirectX material and use the RTTNormalMap.fx shader. &lt;br /&gt;
&lt;br /&gt;
Autodesk is aware of these issues, and plans to address them in an upcoming release. See these links for more information:&lt;br /&gt;
* Christoph &amp;quot;[[CrazyButcher]]&amp;quot; Kubisch and Per &amp;quot;perna&amp;quot; Abrahamsen designed a shader/modifier combination approach that fixes the viewport problem, see the Polycount forum post [http://boards.polycount.net/showthread.php?t=72861 3Point Shader Lite - Shader material editor and Quality Mode normalmaps for 3ds Max].&lt;br /&gt;
* Jean-Francois &amp;quot;jfyelle&amp;quot; Yelle, Autodesk Media &amp;amp; Entertainment Technical Product Manager, has [http://boards.polycount.net/showthread.php?p=1115812#post1115812 this post]. &lt;br /&gt;
* Ben Cloward posted [http://boards.polycount.net/showthread.php?p=1100270#post1100270 workarounds and FX code].&lt;br /&gt;
* Christopher &amp;quot;cdiggins&amp;quot; Diggins, SDK writer for 3ds Max, shares some of the SDK code in his blog posts &amp;quot;[http://area.autodesk.com/blogs/chris/how_the_3ds_max_scanline_renderer_computes_tangent_and_binormal_vectors_for_normal_mapping How the 3ds Max Scanline Renderer Computes Tangent and Binormal Vectors for Normal Mapping]&amp;quot; and &amp;quot;[http://area.autodesk.com/blogs/chris/3ds_max_normal_map_baking_and_face_angle_weighting_the_plot_thickens 3ds Max Normal Map Baking and Face Angle Weighting: The Plot Thickens]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|  [[Image:NormalMap$max2010_normalmap_workarounds_thumb.png]] &lt;br /&gt;
|-&lt;br /&gt;
| Viewport methods in 3ds Max 2010.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;[[attachment:max2010_normalmap_workarounds.png|Actual size]]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;&amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;image by [http://www.linkedin.com/in/ericchadwick Eric Chadwick]&amp;lt;/span&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;3MENT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 3ds Max Edit Normals Trick ===&lt;br /&gt;
After baking, if you add an Edit Normals modifier to your low-poly normalmapped model, this seems to &amp;quot;relax&amp;quot; the vertex normals for more accurate viewport shading. The modifier can be collapsed if desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;MS&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Maya Shaders ===&lt;br /&gt;
Maya seems to correctly generate normals to view in realtime, with the correct [[#TangentBasis|tangent basis]], with much less smoothing errors than 3ds Max. &lt;br /&gt;
* [http://www.mentalwarp.com/~brice/shader.php BRDF shader] by [http://www.mentalwarp.com/~brice/ Brice Vandemoortele] and [http://www.kjapi.com/ Cedric Caillaud] (more info in [http://boards.polycount.net/showthread.php?t=49920 this Polycount thread]) '''Update:''' [http://boards.polycount.net/showthread.php?p=821862#post821862 New version here] with many updates, including object-space normal maps, relief mapping, self-shadowing, etc. Make sure you enable cgFX shaders in the Maya plugin manager, then you can create them in the same way you create a Lambert, Phong etc. Switch OFF high quality rendering in the viewports to see them correctly too.&lt;br /&gt;
* If you want to use the software renderer, use mental ray instead of Maya's software renderer because mental ray correctly interprets tangent space normals. The Maya renderer treats the normal map as a grayscale bump map, giving nasty results. Mental ray supports Maya's Phong shader just fine (amongst others), although it won't recognise a gloss map plugged into the &amp;quot;cosine power&amp;quot; slot. The slider still works though, if you don't mind having a uniform value for gloss. Spec maps work fine though. Just use the same set up as you would for viewport rendering. You'll need to have your textures saved as TGAs or similar for mental ray to work though. - from [http://boards.polycount.net/member.php?u=14235 CheeseOnToast]&lt;br /&gt;
&amp;lt;&amp;lt;Anchor([[NormalMapCompression]])&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;NMC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Normal Map Compression ==&lt;br /&gt;
Normal maps can take up a lot of memory. Compression can reduce the size of a map to 1/4 of what it was uncompressed, which means you can either increase the resolution or you can use more maps.&lt;br /&gt;
&lt;br /&gt;
Usually the compression method is to throw away the Blue channel, because this can be re-computing at minimal cost in the shader code. Then the bitmap only has to store two color channels, instead of four (red, green, blue, and alpha).&lt;br /&gt;
&lt;br /&gt;
* The article [http://developer.nvidia.com/object/real-time-normal-map-dxt-compression.html Real-Time Normal Map DXT Compression] from [http://www.idsoftware.com/ id software] and [http://developer.nvidia.com NVIDIA] is an excellent introduction to compression.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;DXT5C&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== DXT5nm Compression ===&lt;br /&gt;
DXT5nm is the same file format as DXT5 except before compression the red channel is moved into the alpha channel, the green channel is left as-is, and the red and blue channels are blanked with the same solid color. This re-arranging of the color channels is often called ''swizzling''.&lt;br /&gt;
&lt;br /&gt;
The Green and Alpha channels are used because in the DXT format they are compressed using somewhat higher bit depths than the Red and Blue channels. Red and Blue have to be filled with the same solid color because DXT uses a compression system that compares differences between the three color channels. If you try to store some kind of texture in Red and/or Blue (specular power, height map, etc.) then the compressor will create more compression artifacts because it has to compare all three channels.&lt;br /&gt;
&lt;br /&gt;
There are some options in the NVIDIA DXT compressor that help reduce the artifacts if you want to add texture to the Red or Blue channels. The artifacts will be greater than if you keep Red and Blue empty, but it might be a tradeoff worth making. Some notes about this on the [http://developer.nvidia.com/forums/index.php?showtopic=1366 NVIDIA Developer Forums].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;DXT1C&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== DXT1 Compression ===&lt;br /&gt;
DXT1 is also used sometimes for tangent-space normal maps, because it is half the size of a DXT5. The downside though is that it causes many more compression artifacts, so much so that most people end up not using it. &lt;br /&gt;
&lt;br /&gt;
* The blog post [http://realtimecollisiondetection.net/blog/?p=28#more-28 I like spilled beans!] by [http://realtimecollisiondetection.net/blog/?page_id=2 Christer Ericson] has a section about Capcom's clever use of DXT1 and DXT5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;3DCC&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 3DC Compression ===&lt;br /&gt;
3Dc compression works similar to DXT5nm, with some important differences. It yields the best results of any listed algorithm for tangent space normal map compression, and requires no extra processing time or unique hardware. Details can be found in the[http://ati.de/products/radeonx800/3DcWhitePaper.pdf 3Dc whitepaper] from ATI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;A8L8C&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== [[A8L8]] Compression ===&lt;br /&gt;
The DDS format !A8L8 isn't actually compressed, it's just two 8bit grayscale channels (256 grays each). It does save you from having to store all three color channels. Your shader has to recompute the blue channel for it to work. However, !A8L8 does not actually save any space in texture memory, it is typically converted to a four-channel 32bit texture when it's sent to the card. This format really only helps save disk space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;L&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;3DT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;Tools&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span id=&amp;quot;3DTools&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 3D Tools ===&lt;br /&gt;
* The major 3D apps (3ds Max, Blender, Cinema 4D, Maya, XSI) and dedicated 3D sculpting tools (Modo, Mudbox, [http://boards.polycount.net/showthread.php?p=1124702#post1124702 ZBrush]) each have their own integrated normal map baking tools.&lt;br /&gt;
* [http://www.xnormal.net/ xNormal] by [http://santyhammer.blogspot.com/ Santiago Orgaz &amp;amp; collaborators] is a free application to generate normal, ambient occlusion, parallax displacement, and relief maps. It can also project the texture of the highpoly model into the lowpoly mesh, even with different topologies. It includes an interactive 3D viewer with multiple mesh and textures format support, shaders, realtime soft shadows, and glow effect. It also includes useful tools like height map, normal map, cavity map, occlusion map, and tangent-space/object-space conversion.&lt;br /&gt;
* [http://www.illuminatelabs.com/turtle/technical-specifications Turtle] by [http://www.illuminatelabs.com/ Illuminate Labs] is a commercial baking and rendering plugin for Maya.&lt;br /&gt;
* [https://udn.epicgames.com/Three/SHToolsReference SHTools for UE3] (restricted access) is a baking application included with Unreal Engine 3.&lt;br /&gt;
* [http://doc.crymod.com/AssetCreation/frames.html?frmname=topic&amp;amp;frmfile=PolybumpStandAloneTutorial.html PolyBump2] by [http://www.crytek.com/ Crytek] is a baking application included with CryEngine 2.&lt;br /&gt;
* [http://www.iddevnet.com/doom3/bumpmaps.php Renderbump] by [http://www.idsoftware.com/ id software] is a baking application included with Doom 3.&lt;br /&gt;
* [http://www.mankua.com/kaldera.htm Kaldera] by [http://www.mankua.com/ Mankua] is a commercial baking plugin for 3ds Max, but it hasn't been updated since 2005.&lt;br /&gt;
* [http://developer.nvidia.com/object/melody_home.html Melody] by [http://developer.nvidia.com/ NVIDIA] is a free baking application, but it hasn't been updated since 2005.&lt;br /&gt;
* [http://developer.amd.com/gpu/normalmapper/Pages/default.aspx NormalMapper] by [http://developer.amd.com/ ATI/AMD] is a free baking application, but it hasn't been updated since 2004.&lt;br /&gt;
* [http://engineering.soclab.bth.se/tools/177.aspx ORB (Open Render Bump)] by [http://engineering.soclab.bth.se/personnel/296.aspx Martin Fredriksson] and C. Seger is a free baking application, but it hasn't been updated since 2003.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;2DT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;2DTools&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 2D Tools ===&lt;br /&gt;
* [http://www.crazybump.com/ Crazy Bump] by [http://www.zarria.net/ Ryan Clark] is a commercial tangent-space normal map converter for 2D images. It is very likely the best and the fastest of them all. It also creates displacement maps, specular maps, fixes problems with diffuse maps, layers multiple normal maps, etc. &lt;br /&gt;
* [http://www.renderingsystems.com/support/showthread.php?tid=3 ShaderMap] by [http://www.renderingsystems.com/index.php Rendering Systems] is a commercial normal map converter for photos and displacement maps. It has a free command-line version and a low-cost GUI version.&lt;br /&gt;
* [http://www.pixplant.com/ PixPlant] is a commercial normal map converter.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=68860 NJob] is a free normal map converter.&lt;br /&gt;
* [http://xnormal.net Xnormal height-to-normals filter for Photoshop] is a free normal map converter.&lt;br /&gt;
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html NVIDIA normal map filter] is a free tangent-space normal map converter for 2D images. A filter for Photoshop, it also re-normalizes, converts to height, and creates [[DuDvMap]]s.&lt;br /&gt;
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html NVIDIA DDS texture compression plugin] for Photoshop is also free, and has the same options as the NVIDIA normal map filter. Additionally it lets you create the best-quality [[Mip Map]]s for a normal map, by filtering each mip independently from the original source image, rather than simply scaling down the normal map.&lt;br /&gt;
* [http://nifelheim.dyndns.org/~cocidius/normalmap/ GIMP normalmap plugin] is a free plugin by [http://nifelheim.dyndns.org/~cocidius/ Shawn Kirst].&lt;br /&gt;
* [http://diogo.codingcorner.net/uploads/NSpacePack.zip NSpace] is a free convert from [http://diogo.codingcorner.net Diogo Teixeira] that can convert Object Space normal maps into Tangent Space normal maps. The tool is discussed in this [http://boards.polycount.net/showthread.php?p=1072599#post1072599 thread] and [http://gameartist.nl/ Osman &amp;quot;osman&amp;quot; Tsjardiwal] has created [http://boards.polycount.net/showthread.php?p=1075143#post1075143a GUI for it] as well. &lt;br /&gt;
* [http://www.sinistergfx.com/data/ps/sgfx_normal_map_actions.zip Normal Map Actions for Photoshop] by [http://www.sinistergfx.com Will &amp;quot;sinistergfx&amp;quot; Fuller]&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Overlay: Levels blue channel of current layer to 127 and sets the blend mode to overlay. Used for overlaying additional normal map detail.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Normalize: Just does a nVidia normal map filter normalize on the current layer.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Normalize (flatten): Flattens the image and does a nVidia normal map filter normalize.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Rotate 90 CW: Rotates current normal map layer 90 degrees clockwise and fixes your red and green channels so that it doesn't break your normal map.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Rotate 90 CW (inverted Y): Rotates current normal map layer 90 degrees clockwise and fixes your red and green channels so that it doesn't break your normal map. For normal maps that use the inverted Y convention.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Rotate 90 CCW: Rotates current normal map layer 90 degrees counter-clockwise and fixes your red and green channels so that it doesn't break your normal map.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Rotate 90 CCW (inverted Y): Rotates current normal map layer 90 degrees counter-clockwise and fixes your red and green channels so that it doesn't break your normal map. For normal maps that use the inverted Y convention.&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;• Rotate 180: Rotates current normal map layer 180 degrees and fixes your red and green channels so that it doesn't break your normal map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;T&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tutorials&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
* [http://www.katsbits.com/htm/tutorials/blender-baking-normal-maps-from-models.htm Renderbump and baking normal maps from high poly models using Blender 3D] by ''[http://www.katsbits.com/htm/about.htm &amp;quot;katsbits&amp;quot;]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt;Baking normal maps in Blender.&lt;br /&gt;
* [http://cg.tutsplus.com/tutorials/autodesk-3ds-max/how-to-bake-a-flawless-normal-map-in-3ds-max/ How to Bake a Flawless Normal Map in 3ds Max] by ''[http://racer445.com/ &amp;quot;racer445&amp;quot;]''&amp;lt;&amp;lt;BR&amp;gt;&amp;gt; Overall a great intro, but there are [[racer445 Normal Map Issues|a lot of misconceptions]]. &lt;br /&gt;
* [http://udn.epicgames.com/Three/CreatingNormalMaps.html Techniques for Creating Normal Maps] in the Unreal Developer Network's [http://udn.epicgames.com/Three/WebHome.html Unreal Engine 3 section] contains advice from [http://www.epicgames.com/ Epic Games] artists on creating normal maps for UE3. The [http://udn.epicgames.com/Three/DesignWorkflow.html#Creating%20normal%20maps%20from%20meshes Design Workflow page] has a summary.&lt;br /&gt;
* [http://www.iddevnet.com/quake4/ArtReference_CreatingModels#head-3400c230e92ff7d57424b2a68f6e0ea75dee4afa Creating Models in Quake 4] by [http://www.ravensoft.com/ Raven Software] is a comprehensive guide to creating Quake 4 characters.&lt;br /&gt;
* [http://www.svartberg.com/tutorials/article_normalmaps/normalmaps.html Normalmaps for the Technical Game Modeler] by [http://www.svartberg.com Ariel Chai] shows how low-poly smoothing and UVs can affect normal maps in Doom 3.&lt;br /&gt;
* [http://wiki.polycount.net/3D_Tutorials/Modeling_High-Low_Poly_Models_for_Next_Gen_Games Modeling High/Low Poly Models for Next Gen Games] by [http://www.acetylenegames.com/artbymasa/ João &amp;quot;Masakari&amp;quot; Costa] is an overview of modeling for normal maps.&lt;br /&gt;
* The [http://tech-artists.org/wiki/Beveling Beveling section on the Tech-Artists.Org Wiki] discusses how smoothing groups and bevels affect the topology of the low-poly model.&lt;br /&gt;
* The two-part article [http://www.ericchadwick.com/examples/provost/byf2.html#wts Beautiful, Yet Friendly] by [http://www.linkedin.com/in/gprovost Guillaume Provost] explains how smoothing groups and other mesh attributes cause vertices to be duplicated in the game. The vertex count is actually what matters in-game, not the triangle or poly count.&lt;br /&gt;
* [http://www.poopinmymouth.com/tutorial/normal_workflow_2.htm Normal map workflow] by [http://www.poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis] demonstrates his normal mapping workflow in 3ds Max and Photoshop.&lt;br /&gt;
* [http://dodownload.filefront.com/9086954//72f71c0147df53765045a22253c18361a29a6d532425842007ead644d39cbb85d0794ab560365cfa This video tutorial] by [http://www.custom-airbrush.com/ Jeff &amp;quot;airbrush&amp;quot; Ross] shows in Maya how to subdivide the low-poly mesh so it more closely matches the high-poly mesh, to help solve wavy lines in the bake.&lt;br /&gt;
* [http://www.bencloward.com/tutorials_normal_maps1.shtml Normal Mapping Tutorial] by [http://www.bencloward.com/ Ben Cloward] is a comprehensive tutorial about the entire normal map creation process.&lt;br /&gt;
* [http://www.pinwire.com/articles/26/1/Generating-High-Fidelity-Normal-Maps-with-3-D-Software.html Generating High Fidelity Normal Maps with 3-D Software] by [http://www.linkedin.com/pub/0/277/4AB Dave McCoy] shows how to use a special lighting setup to render normal maps (instead of baking them).&lt;br /&gt;
* [http://cgtextures.com/content.php?action=tutorial&amp;amp;name=normalmap Tutorial for the NVIDIA Photoshop filter] by [http://hirezstudios.com/ Scott Warren] shows how to create deep normal maps using multiple layers. Note: to use Overlay blend mode properly, make sure to change each layer's Levels ''Output Level'' to 128 instead of 255.&lt;br /&gt;
* [http://www.poopinmymouth.com/process/tips/normalmap_deepening.jpg Normalmap Deepening] by [http://www.poopinmymouth.com/ Ben &amp;quot;poopinmymouth&amp;quot; Mathis] shows how to adjust normal maps, and how to layer together painted and baked normal maps.&lt;br /&gt;
* [http://boards.polycount.net/showthread.php?t=51088 Tutorial for painting out seams on mirrored tangent-space normal maps] by [http://www.warbeast.de/ warby] helps to solve seams along horizontal or vertical UV edges, but not across angled UVs.&lt;br /&gt;
* [http://planetpixelemporium.com/tutorialpages/normal.html Cinema 4D and Normal Maps For Games] by [http://planetpixelemporium.com/index.php James Hastings-Trew] describes normal maps in plain language, with tips on creating them in Cinema 4D.&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=39&amp;amp;t=359082 3ds Max normal mapping overview] by [http://www.alan-noon.com/ Alan Noon] is a great thread on CGTalk about the normal mapping process.&lt;br /&gt;
* [http://forums.cgsociety.org/showthread.php?f=46&amp;amp;t=373024 Hard Surface Texture Painting] by [http://stefan-morrell.cgsociety.org/gallery/ Stefan Morrell] is a good introduction to painting textures for metal surfaces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;D&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;Discussion&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Discussion ===&lt;br /&gt;
[http://boards.polycount.net/showthread.php?p=820218 Discuss this page on the Polycount forums]. Suggestions welcome.&lt;br /&gt;
&lt;br /&gt;
Even though only one person has been editing this page so far, the information here was gathered from many different sources. We wish to thank all the contributors for their hard-earned knowledge. It is much appreciated! [http://wiki.polycount.net {{http://boards.polycount.net/images/smilies/pcount/icons/smokin.gif}}]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Texturing]] [[Category:BumpMap]]&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteResourcesQuake2WeaponSkinLinking</id>
		<title>OldSiteResourcesQuake2WeaponSkinLinking</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteResourcesQuake2WeaponSkinLinking"/>
				<updated>2010-07-06T04:47:21Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing broken links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
'''Weapon Skin Linking'''&lt;br /&gt;
&lt;br /&gt;
by rogue13&lt;br /&gt;
&lt;br /&gt;
A lot of beginning modelers have a problem with correctly linking the weapon model's skin to the weapon.  This creates the nasty &amp;quot;nullskin&amp;quot; warning one or two of you may have seen before.   So with that in mind I've written a tutorial on this arduous task.  This will work for any model with the requirements listed and should be easy enough that any user can fix any model that they have problems with.&lt;br /&gt;
&lt;br /&gt;
This only works for Quake2 models and will work for any model that has its skins not in a PAK file. Usually the weapon and its skin are in the player model directory and tutorial follows this assumption.&lt;br /&gt;
&lt;br /&gt;
# Open the weapon model in q2pmp/dev central1/tools.htm NST, and pull down the '''Skins''' menu.   From here '''D''''''elete/Close''' the current skin. You may have to do this a couple of times until the model goes black and the Skins listing is blank.&lt;br /&gt;
# Now under the '''File''' menu go to '''Save As''' and save on top of the weapon model under the proper directory.&lt;br /&gt;
# Close q2pmp/dev central1/tools.htm NST and reopen it.  [this is just to be completely sure that everything is fine]&lt;br /&gt;
# Manually reopen the model even if it loaded automatically, again just to be sure.&lt;br /&gt;
# Under the '''Skins''' menu select the weapon's skin under the '''Open''' command.&lt;br /&gt;
# Now you should be seeing the skin correctly. Under the '''Skins''' menu go to '''Link''' and re-pick the exact same skin. It is now linked correctly.&lt;br /&gt;
# Under the '''File''' menu, do another '''Save As''' on top of the model again and you should be gold.  If you close q2pmp/dev central1/tools.htm NST and reopen it, NST should automatically reload the skin.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteResourcesQuake2WeaponSkinLinking</id>
		<title>OldSiteResourcesQuake2WeaponSkinLinking</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteResourcesQuake2WeaponSkinLinking"/>
				<updated>2010-07-06T04:46:39Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: removing broken links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
'''Weapon Skin Linking'''&lt;br /&gt;
&lt;br /&gt;
by rogue13&lt;br /&gt;
&lt;br /&gt;
A lot of beginning modelers have a problem with correctly linking the weapon model's skin to the weapon.  This creates the nasty &amp;quot;nullskin&amp;quot; warning one or two of you may have seen before.   So with that in mind I've written a tutorial on this arduous task.  This will work for any model with the requirements listed and should be easy enough that any user can fix any model that they have problems with.&lt;br /&gt;
&lt;br /&gt;
This only works for Quake2 models and will work for any model that has its skins not in a PAK file. Usually the weapon and its skin are in the player model directory and tutorial follows this assumption.&lt;br /&gt;
&lt;br /&gt;
# Open the weapon model in q2pmp/dev central1/tools.htm NST, and pull down the '''Skins''' menu.   From here '''D''''''elete/Close''' the current skin. You may have to do this a couple of times until the model goes black and the Skins listing is blank.&lt;br /&gt;
# Now under the '''File''' menu go to '''Save As''' and save on top of the weapon model under the proper directory.&lt;br /&gt;
# Close q2pmp/dev central1/tools.htm NST and reopen it.  [this is just to be completely sure that everything is fine]&lt;br /&gt;
# Manually reopen the model even if it loaded automatically, again just to be sure.&lt;br /&gt;
# Under the '''Skins''' menu select the weapon's skin under the '''Open''' command.&lt;br /&gt;
# Now you should be seeing the skin correctly. Under the '''Skins''' menu go to '''Link''' and re-pick the exact same skin. It is now linked correctly.&lt;br /&gt;
# Under the '''File''' menu, do another '''Save As''' on top of the model again and you should be gold.  If you close [[q2pmp/dev central1/tools.htm|NST]] and reopen it, NST should automatically reload the skin.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteResourcesQuake3ShaderManual</id>
		<title>OldSiteResourcesQuake3ShaderManual</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteResourcesQuake3ShaderManual"/>
				<updated>2010-07-06T04:38:42Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: breaking WikiName automatic links to temporarily remove broken linking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
'''NOTE:''' The Quake 3 Arena Shader Manual is also&lt;br /&gt;
 available for download in .PDF format at the following&lt;br /&gt;
 link: [http://dl.fileplanet.com/dl/dl.asp?q2pmp/Q3AShader_manual_pdf.zip Quake 3 Arena Shader Manual in .PDF format]  Quake III Arena&lt;br /&gt;
&lt;br /&gt;
Shader Manual&lt;br /&gt;
&lt;br /&gt;
Revision #12&lt;br /&gt;
&lt;br /&gt;
By Paul Jaquays and Brian Hook&lt;br /&gt;
&lt;br /&gt;
(with additional material by John Carmack, Christian Antkow, Kevin Cloud, &amp;amp; Adrian Carmack)&lt;br /&gt;
&lt;br /&gt;
 1          Preface: Making Your Own Shaders&lt;br /&gt;
The Manual for the [[Q3Radiant]] editor program contains a section called '''''Creating New Assets''''' that has the necessary information for setting up the files to create your own custom Quake III Arena shaders.  It is recommended that you study the scripts in this document and in the individual shader scripts. Pay careful attention to syntax and punctuation. This is where you are most likely to make mistakes.&lt;br /&gt;
&lt;br /&gt;
 2         Introduction&lt;br /&gt;
The graphic engine for ''Quake III Arena'' has taken a step forward by putting much more direct control over the surface qualities of textures into the hands of designers and artists.  In writing this manual, we have tried to define the concepts and tools that are used to modify textures in a way that, it is hoped, will be graspable by users who already have basic knowledge of computer graphics but are not necessarily computer programmers.  It is not a tutorial, nor was it intended to be one.&lt;br /&gt;
&lt;br /&gt;
= 2.1        What is a Shader? =&lt;br /&gt;
Shaders are short text scripts that define the properties of a surface as it appears and functions in a game world (or compatible editing tool).  By convention, the documents that contain these scripts usually has the same name as the texture set which contains the textures being modified (e.g; base, hell, castle, etc,).  Several specific script documents have also been created to handle special cases, like liquids, sky and special effects.&lt;br /&gt;
&lt;br /&gt;
For ''Quake III Arena,'' Shader scripts are located in quake3/baseq3/scripts.&lt;br /&gt;
&lt;br /&gt;
 A ''Quake III Arena''  shader file consists of a series of surface attribute and rendering instructions formatted within braces (“{“ and “}”).  Below you can see a simple example of syntax and format for a single process, including the Q3MAP keywords or “Surface Parameters”, which follow the first bracket and a single bracketed  “stage”:&lt;br /&gt;
&lt;br /&gt;
 textures/liquids/lava&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       deformVertexes wave sin 0 3 0 0.1&lt;br /&gt;
&lt;br /&gt;
       tessSize 64&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
       map textures/common/lava.tga&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 2.2         Shader Name &amp;amp; File Conventions =&lt;br /&gt;
The first line is the shader name.  Shader names can be up to 63 characters long.  The names are often a mirror of a pathname to a .tga file without the extension or basedir (/quake3/baseq3 in our case), but they do not need to be.&lt;br /&gt;
&lt;br /&gt;
Shaders that are only going to be referenced by the game code, not modeling tools, often are just a single world, like “projectionShadow” or “viewBlood”.&lt;br /&gt;
&lt;br /&gt;
Shaders that are used on characters or other polygon models need to mirror a .tga file, which allows the modelers to build with normal textures, then have the special effects show up when the model is loaded into the game.&lt;br /&gt;
&lt;br /&gt;
Shaders that are placed on surfaces in the map editor commonly mirror a .tga file, but the “qer_editorimage” shader parameter can force the editor to use an arbitrary image for display.&lt;br /&gt;
&lt;br /&gt;
Shader pathnames have a case sensitivity issue – on windows, they ''aren’t'' case sensitive, but on unix they ''are''.  Try to always use lowercase for filenames, and always use forward slashes “/” for directory separators.&lt;br /&gt;
&lt;br /&gt;
= 2.3        Shader Types =&lt;br /&gt;
The keywords that affect shaders are divided into two classes.  The first class of keywords are global parameters.  Some global parameters ( '''“surfaceparms.”''' And all '''“q3map_” keywords''') are processed by Q3MAP, and change physical attributes of the surface that uses the shader. These attributes can affect the player. To see changes in these parameters one must re-bsp the map.&lt;br /&gt;
&lt;br /&gt;
The remaining global keywords, and all Stage Specific Keywords are processed by the renderer.  They are appearance changes only and have no effect on game play or game mechanics. Changes to any of these attributes will take effect as soon as the game goes to another level or vid_restarts (type command '''vid_restart''' in the game console).&lt;br /&gt;
&lt;br /&gt;
Shader keywords are ''not'' case sensitive.&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT NOTE:''' some of the shader commands may be order dependent, so it’s good practice to place all global shader commands (keywords defined in this section) at the very beginning of the shader and to place shader stages at the end (see various examples).&lt;br /&gt;
&lt;br /&gt;
= 2.4        Key Concepts =&lt;br /&gt;
Ideally, a designer or artist who is manipulating textures with shader files has a basic understanding of wave forms and knows about mixing colored light (high school physics sort of stuff).  If not, there are some concepts you need to have a grasp on to make shaders work for you.&lt;br /&gt;
&lt;br /&gt;
== 2.4.1          Surface Effects vs. Content Effects vs. Deformation Effects ==&lt;br /&gt;
Shaders not only modify the visible aspect of textures on a geometry brush, curve, patch or mesh model, but they can also have an effect on both the content, “shape,” and apparent movement of those things.  A surface effect does nothing to modify the shape or content of the brush.  Surface effects include glows, transparencies and rgb (red, green, blue) value changes. Content shaders affect the way the brush operates in the game world. Examples include water, fog, nonsolid, and structural.  Deformation effects change the actual shape of the affected brush or curve, and may make it appear to move.&lt;br /&gt;
&lt;br /&gt;
== 2.4.2          Power Has a Price ==&lt;br /&gt;
The shader script gives the designer, artist and programmer a great deal of easily accessible power over the appearance of and potential special effects that may be applied to surfaces in the game world.  But it is power that comes with a price tag attached, and the cost is measured in performance speed.  Each shader phase that affects the appearance of a texture causes the ''Q3:A'' engine to make another processing pass and redraw the world.  Think of it as if you were adding all the shader-affected triangles to the total r_speed count for each stage in the shader script. A shader-manipulated texture that is seen through another shader manipulated texture (e.g.; a light in fog) has the effect of ''adding'' the total number of passes together for the affected triangles.  A light that required two passes seen through a fog that requires one pass will be treated as having to redraw that part of the world three times.&lt;br /&gt;
&lt;br /&gt;
== 2.4.3          RGB Color ==&lt;br /&gt;
RGB means “Red, Green, Blue.” Mixing red, green and blue light in differing intensities creates the colors in computers and television monitors.  This is called ''additive color'' (as opposed to the mixing of pigments in paint or colored ink in the printing process, which is subtractive color).  In ''Quake III Arena'' and most higher-end computer art programs (and the color selector in Windows), the intensities of the individual Red, Green and Blue components are expressed as number values. When mixed together on a screen, number values of equal intensity in each component color create a completely neutral (gray) color.  The lower the number value (towards 0), the darker the shade.  The higher the value, the lighter the shade or the more saturated the color until it reaches a maximum value of 255 (in the art programs).  All colors possible on the computer can be expressed as a formula of three numbers. The value for complete black is 0 0 0. The value for complete white is 255 255 255. However, the ''Quake III Arena'' graphics engine requires that the color range be  “normalized” into a range between 0.0 and 1.0.&lt;br /&gt;
&lt;br /&gt;
== 2.4.4          Normalization: a Scale of 0 to 1 ==&lt;br /&gt;
The mathematics in ''Quake III Arena'' use a scale of 0.0 to 1.0 instead of 0 to 255. Most computer art programs that can express RGB values as numbers use the 0 to 255 scale.  To convert numbers, divide each of the art program’s values for the component colors by 255.  The resulting three values are your ''Quake III Arena'' formula for that color component.  The same holds true for texture coordinates.&lt;br /&gt;
&lt;br /&gt;
== 2.4.5          Texture Sizes ==&lt;br /&gt;
TGA texture files are measured in pixels (picture elements).  Textures are measured in powers of 2, with 16 x16 pixels being the smallest (typically) texture in use.  Most will be larger. Textures need not be square, so long as both dimensions are powers of 2. Examples include: 32x256, 16x32, 128x16.&lt;br /&gt;
&lt;br /&gt;
== 2.4.6          Color Math ==&lt;br /&gt;
In ''Quake III Arena'' , colors are changed by mathematical equations worked on the textures by way of the scripts or “programlets”  in the shader file.  An equation that adds to or multiplies the number values in a texture causes it to become darker.  Equations that subtract from or modulate number values in a texture cause it to become lighter.  Either equation can change the hue and saturation of a color.&lt;br /&gt;
&lt;br /&gt;
== 2.4.7          Measurements ==&lt;br /&gt;
The measurements used in the shaders are in either game units, color units, or texture units.&lt;br /&gt;
&lt;br /&gt;
 ·          '''Game unit:''' A game unit is used by deformations to specify sizes relative to the world.  Game units are the same scale we have had since way back in the ''Wolfenstein'' days – 8 units equals one foot. The default texture scale used by the [[Q3Radiant]] map editor results in two texels for each game unit, but that can be freely changed.&lt;br /&gt;
&lt;br /&gt;
 ·         '''Color units''': Colors scale the values generated by the texture units to produce lighting effects.  A value of 0.0 will be completely black, and a value of 1.0 will leave the texture unchanged. Colors are sometimes specified with a single value to be used across all red, green, and blue channels, or sometimes as separate values for each channel.&lt;br /&gt;
&lt;br /&gt;
 ·         '''Texture units:''' This is the normalized (see above) dimensions of the original texture image  (or a previously modified texture at a given stage in the shader pipeline).  A full texture, regardless of its original size in texels, has a normalized measurement of 1.0 x 1.0.  For normal repeating textures, it is possible to have value greater than 1.0 or less than 0.0, resulting in repeating of the texture.  The coordinates are usually assigned by the level editor or modeling tools, but you still need to be aware of this for scrolling or turbulent movement of the texture at runtime.&lt;br /&gt;
&lt;br /&gt;
== 2.4.8           Waveform Functions ==&lt;br /&gt;
Many of the shader functions use waveforms to modulate measurements over time.  Where appropriate, additional information is provided with wave modulated keyword functions to describe the effect of a particular waveform on that process. Currently there are five waveforms in use in ''Q3A'' shaders:&lt;br /&gt;
&lt;br /&gt;
'''Sin''': Sin stands for sine wave, a regular smoothly flowing wave ranging from –1 to 1.&lt;br /&gt;
&lt;br /&gt;
'''Triangle:''' Triangle is a wave with a sharp ascent and a sharp decay, ranging from 0 to 1. It will make a choppy looking wave forms.&lt;br /&gt;
&lt;br /&gt;
'''Square''': A square wave simply switches from –1 to 1 with no in-between.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' In the sawtooth wave, the ascent is like a triangle wave from 0 to 1, but the decay cuts off sharply back to 0.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth:''' This is the reverse of the sawtooth … instant ascent to the peak value (1), then a triangle wave descent to the valley value (0).  The phase on this goes from 1.0 to 0.0 instead of 0.0 to 1.0.  This wave is particularly useful for additive cross-fades.&lt;br /&gt;
&lt;br /&gt;
'''Waveforms all have the following properties''':&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Where the wave form begins. Amplitude is measured from this base value.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' This is the height of the wave created, measured from the base'''.''' You will probably need to test and tweak this value to get it correct for each new shader stage. The greater the amplitude, the higher the wave peaks and the deeper the valleys.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' This is a normalized value between 0.0 and 1.0.  Changing phase to a non-zero value affects the point on the wave at which the wave form initially begins to be plotted. Example: In  Sin or Triangle wave, a phase of 0.25 means it begins one fourth (25%) of the way along the curve, or more simply put, it begins at the peak of the wave.  A phase of 0.5 would begin at the point the wave re-crosses the base line.  A phase of 0.75 would be at the lowest point of the valley.  If only one wave form is being used in a shader, a phase shift will probably not be noticed and phase should have a value of zero (0).  However, including two or more stages of the same process in a single shader, but with the phases shifted can be used to create interesting visual effects.   Example:  using rgbGen in two stages with different colors and a 0.5 difference in phase would cause the manipulated texture to modulate between two distinct colors.   Phase changes can also be used when you have two uses of the same effect near each other, and you don’t want them to be synchronized. You would write a separate shader for each, changing only the phase value.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;''' Frequency. This value is expressed as repetitions or cycles of the wave per second.  A value of 1 would cycle once per second.  A value of 10 would cycle 10 times per second.  A value of 0.1 would cycle once every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
 3         General Shader Keywords&lt;br /&gt;
'''IMPORTANT NOTE:''' Once again, be aware that some of the shader commands may be order dependent, so it’s good practice to place all global shader commands (keywords defined in this section) at the very beginning of the shader and to place shader stages at the end (see various examples).&lt;br /&gt;
&lt;br /&gt;
These Keywords are global to a shader and affect all stages.  They are also ignored by Q3MAP.&lt;br /&gt;
&lt;br /&gt;
= 3.1        skyParms &amp;lt;farbox&amp;gt; &amp;lt;cloudheight&amp;gt; &amp;lt;nearbox&amp;gt; =&lt;br /&gt;
Specifies how to use the surface as a sky, including an optional far box (stars, moon, etc), optional cloud layers with any shader attributes, and an optional near box (mountains in front of the clouds, etc).&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;Farbox&amp;gt;''' Specifies a set of files to use as an environment box behind all cloud layers.  Specify “-“ for no farbox, or a file base name.  A base name of  “env/test” would look for files “env/test_rt.tga”, “env/test_lf.tga”, “env/test_ft.tga”, “env/test_bk.tga”, “env/test_up.tga”, “env/test_dn.tga” to use as the right / left / front / back / up / down sides.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;cloudheight&amp;gt;''' controls apparent curvature of the cloud layers – lower numbers mean more curvature (and thus more distortion at the horizons).  Higher height values create “flatter” skies with less horizon distortion.  Think of height as the radius of a sphere on which the clouds are mapped. Good ranges are 64 to 256.  The default value is 128.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nearbox&amp;gt;'''   Specified as farbox, to be alpha blended on top of the clouds.  This has not been tested in a long time, so it probably doesn’t actually work.  Set to “-“ to ignore.&lt;br /&gt;
&lt;br /&gt;
Design Notes:&lt;br /&gt;
&lt;br /&gt;
 ·         If you are making a map where the sky is seen by looking up most of the time, use a lower cloudheight value.  Under those circumstances the tighter curve looks more dynamic. If you are making a map where the sky is seen by looking out windows most of the time or has a map area that is open to the sky on one or more sides, use a higher height to make the clouds seem more natural.&lt;br /&gt;
&lt;br /&gt;
 ·         It is possible to create a sky with up to 8 cloud layers, but that also means 8 processing passes and a potentially large processing hit.&lt;br /&gt;
&lt;br /&gt;
 ·          Be aware that the skybox does not wrap around the entire world. The “floor” or bottom face of the skybox is not drawn by the game. If a player in the game can see that face, they will see the “hall of mirrors” effect.&lt;br /&gt;
&lt;br /&gt;
 '''Example: Sky script'''&lt;br /&gt;
&lt;br /&gt;
 textures/skies/xtoxicsky_dm9&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       qer_editorimage textures/skies/toxicsky.tga&lt;br /&gt;
&lt;br /&gt;
       surfaceparm noimpact&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
 q3map_globaltexture&lt;br /&gt;
&lt;br /&gt;
 q3map_lightsubdivide 256&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 400&lt;br /&gt;
&lt;br /&gt;
       surfaceparm sky&lt;br /&gt;
&lt;br /&gt;
       q3map_sun   1 1 0.5 150 30 60&lt;br /&gt;
&lt;br /&gt;
       skyparms full 512 -&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/skies/inteldimclouds.tga&lt;br /&gt;
&lt;br /&gt;
             tcMod scroll 0.1 0.1&lt;br /&gt;
&lt;br /&gt;
              tcMod scale 3 2&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/skies/intelredclouds.tga&lt;br /&gt;
&lt;br /&gt;
              blendFunc add&lt;br /&gt;
&lt;br /&gt;
             tcMod scroll 0.05 0.05&lt;br /&gt;
&lt;br /&gt;
             tcMod scale 3 3&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 3.2        cull &amp;lt;side&amp;gt; =&lt;br /&gt;
Every surface of a polygon has two sides, a front and a back.  Typically, we only see the front or “out” side. For example, a solid block you only show the front side.  In many applications we see both. For example, in water, you can see both front and a back. The same is true for things like grates and screens.&lt;br /&gt;
&lt;br /&gt;
To “cull” means to remove. The value parameter determines the type of face culling to apply.  The default value is cull ''front'' if this keyword is not specified.  However for items that should be inverted then the value ''back'' should be used.  To disable culling, the value  ''disable'' or ''none'' should be used. Only one cull instruction can be set for the shader.&lt;br /&gt;
&lt;br /&gt;
== 3.2.1          cull front ==&lt;br /&gt;
The front or “outside” of the polygon is not drawn in the world.  This is the default value.  It is used if the keyword “'''cull'''” appears in the content instructions without a '''&amp;lt;side&amp;gt;''' value or if the keyword cull does not appear at all in the shader.&lt;br /&gt;
&lt;br /&gt;
== 3.2.2          cull back ==&lt;br /&gt;
Cull back removes the back or “inside” of a polygon from being drawn in the world.&lt;br /&gt;
&lt;br /&gt;
== 3.2.3          cull disable, cull none ==&lt;br /&gt;
Neither side of the polygon is removed.  Both sides are drawn in the game. Very useful for making panels or barriers that have no depth, such as grates, screens, metal wire fences and so on and for liquid volumes that the player can see from within.  Also used for energy fields, sprites, and weapon effects (e.g.; plasma).&lt;br /&gt;
&lt;br /&gt;
Design Notes: For things like grates and screens, put the texture with the cull none property on one face only. On the other faces, use a non-drawing texture.&lt;br /&gt;
&lt;br /&gt;
= 3.3        deformVertexes =&lt;br /&gt;
This function performs a general deformation on the surface’s vertexes, changing the actual shape of the surface before drawing the shader passes.  You can stack multiple deformVertexes commands to modify positions in more complex ways, making an object move in two dimensions, for instance.&lt;br /&gt;
&lt;br /&gt;
== 3.3.1          deformVertexes wave &amp;lt;div&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt;  &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Designed for water surfaces, modifying the values differently at each point.  It accepts the standard wave functions of the type '''sin''', '''triangle''', '''square, sawtooth''' or '''inversesawtooth'''.  The “div” parameter is used to control the wave “spread” – a value equal to the tessSize of the surface is a good default value (tessSize is subdivision size, in game units, used for the shader when seen in the game world) .&lt;br /&gt;
&lt;br /&gt;
== 3.3.2          deformVertexes normal &amp;lt;div&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude ~0.1-~0.5&amp;gt; &amp;lt;frequency ~1.0-~4.0&amp;gt; ==&lt;br /&gt;
This deformation affects the normals of a vertex without actually moving it, which will effect later shader options like lighting and especially environment mapping.  If the shader stages don’t use normals in any of their calculations, there will be no visible effect.&lt;br /&gt;
&lt;br /&gt;
Design Notes:  Putting values of  0.1 t o 0.5 in Amplitude and 1.0 to 4.0 in the Frequency can produce some satisfying results.  Some things that have been done with it:  A small fluttering bat, falling leaves, rain, flags.&lt;br /&gt;
&lt;br /&gt;
== 3.3.3          deformVertexes bulge &amp;lt;bulgeWidth&amp;gt;  &amp;lt;bulgeHeight&amp;gt; &amp;lt;bulgeSpeed&amp;gt; ==&lt;br /&gt;
This forces a bulge to move along the given '''s''' and '''t''' directions.  Designed for use on curved pipes.&lt;br /&gt;
&lt;br /&gt;
'''Specific parameter definitions for deform keywords:'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;div&amp;gt; ''' This is roughly defined as the size of the waves that occur. It is measured in game units. Smaller values create a greater density of smaller wave forms occurring in a given area.  Larger values create a lesser density of waves, or otherwise put, the appearance of larger waves.  To look correct this value should closely correspond to the value (in pixels) set for tessSize (tessellation size) of the texture.  A value of 100.0 is a good default value (which means your tessSize should be close to that for things to look “wavelike”).&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;func&amp;gt;''' This is the type of wave form being created.  Sin stands for sine wave, a regular smoothly flowing wave.  Triangle is a wave with a sharp ascent and a sharp decay. It will make a choppy looking wave forms.  A square wave is simply on or off for the period of the frequency with no in between. The sawtooth wave has the ascent of a triangle wave, but has the decay cut off sharply like a square wave.  An inversesawtooth wave reverses this.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;'''  This is the distance, in game units that the apparent surface of the texture is displaced from the actual surface of the brush as placed in the editor.  A positive value appears above the brush surface. A negative value appears below the brush surface.  An example of this is the Quad effect, which essentially is a shell with a positive base value to stand it away from the model surface and a 0 (zero) value for amplitude.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' The distance that the deformation moves away from the base value.  See Wave Forms in the introduction for a description of amplitude.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See Wave Forms in the introduction for a description of phase)&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;frequency&amp;gt;''' See Wave Forms in the introduction for a description of frequency)&lt;br /&gt;
&lt;br /&gt;
Design Note:  The div and amplitude parameters, when used in conjunction with liquid volumes like water should take into consideration how much the water will be moving.  A large ocean area would have have massive swells (big div values) that rose and fell dramatically (big amplitude values). While a small, quiet pool may move very little.&lt;br /&gt;
&lt;br /&gt;
== 3.3.4          deformVertexes move &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt;  &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
This keyword is used to make a brush, curve patch or md3 model appear to move together as a unit.  The &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; and &amp;lt;z&amp;gt; values are the distance and direction in game units the object appears to move relative to it’s point of origin in the map.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; and &amp;lt;freq&amp;gt; values are the same as found in other wave form manipulations.&lt;br /&gt;
&lt;br /&gt;
The product of the function modifies the values x, y, and z. Therefore, if you have an amplitude of 5 and an x value of 2, the object will travel 10 units from its point of origin along the x axis. This results in a total of 20 units of motion along the x axis, since the amplitude is the variation both above and below the base.&lt;br /&gt;
&lt;br /&gt;
It must be noted that an object made with this shader does not actually change position, it only appears to.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:'''  If an object is made up of surfaces with different shaders, all must have matching deformVertexes move values or the object will appear to tear itself apart.&lt;br /&gt;
&lt;br /&gt;
== 3.3.5          [[DeformVertexes]] autosprite ==&lt;br /&gt;
This function can be used to make any given triangle quad (pair of triangles that form a square rectangle) automatically behave like a sprite without having to make it a separate entity.  This means that the “sprite” on which the texture is placed will rotate to always appear at right angles to the player’s view as a sprite would. Any four-sided brush side, flat patch, or pair of triangles in an .md3 model can have the '''autosprite''' effect on it.  '''The brush face containing a texture with this shader keyword must be square.'''&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This is best used on objects that would appear the same regardless of viewing angle.  An example might be a glowing light flare.&lt;br /&gt;
&lt;br /&gt;
== 3.3.6          [[DeformVertexes]] autosprite2 ==&lt;br /&gt;
Is a slightly modified “sprite” that only rotates around the middle of its longest axis.  This allows you to make a pillar of fire that you can walk around, or an energy beam stretched across the room.&lt;br /&gt;
&lt;br /&gt;
= 3.4         fogparms &amp;lt;red value&amp;gt; &amp;lt;green value&amp;gt; &amp;lt;blue value&amp;gt; &amp;lt;distance to Opaque&amp;gt; =&lt;br /&gt;
Note: you must also specify “surfaceparm fog” to cause q3map to identify the surfaces inside the volume.  Fogparms only describes how to render the fog on the surfaces.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;red value&amp;gt; &amp;lt;green value&amp;gt; &amp;lt;blue value&amp;gt;''' These are normalized values. A good computer art program should give you the RGB values for a color. To obtain the values that define fog color for Quake III Arena , divide the desired color’s Red, Green and Blue values by 255 to obtain three normalized numbers within the 0.0 to 1.0 range.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;distance to opaque&amp;gt;''' This is the distance, in  game units, until the fog becomes totally opaque, as measured from the point of view of the observer.  By making the height of the fog brush shorter than the distance to opaque ,  the apparent density of the fog can be reduced (because it never reaches the depth at which full opacity occurs)..&lt;br /&gt;
&lt;br /&gt;
 ·         The fog volume can only have one surface visible (from outside the fog).&lt;br /&gt;
&lt;br /&gt;
 ·         Fog must be made of one brush. It cannot be made of adjacent brushes.&lt;br /&gt;
&lt;br /&gt;
 ·         Fog brushes must be axial.  This means that only square or rectangular brushes may contain fog, and those must have their edges drawn along the axes of the map grid (all 90 degree angles).&lt;br /&gt;
&lt;br /&gt;
 ·&lt;br /&gt;
&lt;br /&gt;
'''Design Notes: '''&lt;br /&gt;
&lt;br /&gt;
 ·         If a water texture contains a fog parameter, it must be treated as if it were a fog texture when in use.&lt;br /&gt;
&lt;br /&gt;
 ·         If a room is to be filled completely with a fog volume, it can only be entered through one surface (and still have the fog function correctly).&lt;br /&gt;
&lt;br /&gt;
  ·         Additional shader passes may be placed on a fog brush, as with other brushes.&lt;br /&gt;
&lt;br /&gt;
= 3.5        nopicmip =&lt;br /&gt;
This causes the texture to ignore user-set values for the  '''r_picmip''' cvar command.  The image will always be high resolution.  Example:  Used to keep images and text in the heads up display from blurring when user optimizes the game graphics.&lt;br /&gt;
&lt;br /&gt;
= 3.6        nomipmap: =&lt;br /&gt;
This implies nopicmip, but also prevents the generation of any lower resolution mipmaps for use by the 3d card.  This will cause the texture to alias when it gets smaller, but there are some cases where you would rather have this than a blurry image.  Sometimes thin slivers of triangles force things to very low mipmap levels, which leave a few constant pixels on otherwise scrolling special effects.&lt;br /&gt;
&lt;br /&gt;
= 3.7        polygonOffset =&lt;br /&gt;
Surfaces rendered with the '''polygonOffset''' keyword are rendered slightly off the polygon’s surface.  This is typically used for wall markings and “decals.” The distance between the offset and the polygon is fixed.  It is not a variable in Quake III Arena.&lt;br /&gt;
&lt;br /&gt;
= 3.8        portal =&lt;br /&gt;
Specifies that this texture is the surface for a portal or mirror.  In the game map, a portal entity must be placed directly in front of the texture (within 64 game units).  All this does is set “sort portal”, so it isn’t needed if you specify that explicitly.&lt;br /&gt;
&lt;br /&gt;
= 3.9        sort &amp;lt;value&amp;gt; =&lt;br /&gt;
Use this keyword to fine-tune the depth sorting of shaders as they are compared against other shaders in the game world. The basic concept is that if there is a question or a problem with shaders drawing in the wrong order against each other, this allows the designer to create a hierarchy of which shader draws in what order.&lt;br /&gt;
&lt;br /&gt;
The default behavior is to put all blended shaders in sort “additive” and all other shaders in sort “opaque”, so you only need to specify this when you are trying to work around a sorting problem with multiple transparent surfaces in a scene.&lt;br /&gt;
&lt;br /&gt;
The value here can be either a numerical value or one of the keywords in the following list (listed in order of ascending priority):&lt;br /&gt;
&lt;br /&gt;
'''portal (1):''' This surface is a portal, it draws over every other shader seen inside the portal, but before anything in the main view.&lt;br /&gt;
&lt;br /&gt;
'''Sky (2):''' Typically, the sky is the farthest surface in the game world.  Drawing this after other opaque surfaces can be an optimization on some cards.  This currently has the wrong value for this purpose, so it doesn’t do much of anything.&lt;br /&gt;
&lt;br /&gt;
'''Opaque (3):''' This surface is opaque (rarely needed since this is the default with no blendfunc)&lt;br /&gt;
&lt;br /&gt;
'''Banner (6) :''' Transparent, but very close to walls.&lt;br /&gt;
&lt;br /&gt;
'''Underwater (8):''' Draw behind normal transparent surfaces.&lt;br /&gt;
&lt;br /&gt;
'''Additive (9):'''  normal transparent surface (default for shaders with blendfuncs)&lt;br /&gt;
&lt;br /&gt;
'''nearest (16):''' this shader should always sort closest to the viewer, e.g. muzzle flashes and blend blobs&lt;br /&gt;
&lt;br /&gt;
 4         Q3MAP Specific Shader Keywords&lt;br /&gt;
These keywords change the physical nature of the textures and the brushes that are marked with them. Changing any of these values will require the map to be re-compiled. These are global and affect the entire shader.&lt;br /&gt;
&lt;br /&gt;
= 4.1        tessSize &amp;lt;amount&amp;gt; =&lt;br /&gt;
For consistency’s sake, this really should have been called q3map_tessSize. But it wasn’t. The tessSize shader controls the tessellation size (how finely a surface is chopped up in to triangles), in game units, of the surface.  This is only applicable to solid brushes, not curves, and is generally only used on surfaces that are flagged with the '''deformVertexes''' keyword.  Abuse of this can create a huge number of triangles.  This happens during q3map processing, so maps must be reprocessed for changes to take effect.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' It can also be used on tesselating surfaces to make sure that tesselations are large, and thus, less costly in terms of triangles created.&lt;br /&gt;
&lt;br /&gt;
= 4.2        q3map_backshader &amp;lt;shadername&amp;gt; =&lt;br /&gt;
This allows a brush to use a different shader when you are inside it looking out. By way of example, this would allow a water brush (or other) surfaces to have a different sort order (see '''''sort''''' above) or appearance when seen from the inside.&lt;br /&gt;
&lt;br /&gt;
= 4.3         q3map_globaltexture =&lt;br /&gt;
Use this shader in the global keyword commands whenever the '''tcMod scale''' function is used in one of the later render stages. Many problems with getting shader effects to work across multiple adjacent brushes are a result of the way q3map optimizes texture precision. This option resolves that, but at the expense of some precision of the textures when they are far away from the origin of the map.&lt;br /&gt;
&lt;br /&gt;
= 4.4        q3map_sun &amp;lt;red&amp;gt; &amp;lt;green&amp;gt; &amp;lt;blue&amp;gt; &amp;lt;intensity&amp;gt; &amp;lt;degrees&amp;gt; &amp;lt;elevation&amp;gt; =&lt;br /&gt;
This keyword in a sky shader will create the illusion of light cast into a map by a single, infinitely distance light source (sun, moon, hellish fire, etc.).  This is only processed during the lighting phase of q3map.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;red&amp;gt; &amp;lt;green&amp;gt; &amp;lt;blue&amp;gt;''' Color is described by three normalized rgb values.  Color will be normalized to a 0.0 to 1.0 range, so it doesn’t matter what range you use.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;intensity&amp;gt;''' is the brightness of the generated light.  A value of 100 is a fairly bright sun.  The intensity of the light falls off with angle but not distance.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;degrees&amp;gt;''' is the angle relative to the directions on the map file.  A setting of 0 degrees equals east. 90 is north, 180 is west and 270 is south.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;elevation&amp;gt;''' is the distance, measured in degrees from the horizon (z value of zero in the map file).  An elevation of 0 is sunrise/sunset. An elevation of 90 is noon&lt;br /&gt;
&lt;br /&gt;
'''DESIGN NOTE: ''' Sky shaders should probably still have a '''q3map_surfacelight''' value.  The “sun” gives a strong directional light, but doesn’t necessarily give the fill light needed to soften and illuminate shadows.  Skies with clouds should probably have a weaker '''q3map_sun''' value and a higher  '''q3map_surfacelight''' value.  Heavy clouds diffuse light and weaken shadows.  The opposite is true of a cloudless or nearly cloudless sky.  In such cases, the “sun” or “moon” will cast stronger, shadows that have a greater degree of contrast.&lt;br /&gt;
&lt;br /&gt;
'''Design Trick:''' Not certain what color formula you want to use for the sun’s light? Try this. Create a light entity.  Use the [[Q3Radiant]] editor’s color selection tools to pick a color.  The light’s _color key’s value will be the normalized RGB formula. Copy it from the value line in the editor (CTRL+c) and paste it into your shader.&lt;br /&gt;
&lt;br /&gt;
= 4.5        q3map_surfaceLight &amp;lt;light value&amp;gt; =&lt;br /&gt;
The texture gives off light equal to the '''&amp;lt;light value&amp;gt;''' set for it.  The relative surface area of the texture in the world affects the actual amount of light that appears to be radiated.  To give off what appears to be the same amount of light, a smaller texture must be significantly brighter than a larger texture. Unless the qer_lightimage keyword is used to select a different source for the texture’s light color information, the color of the light will be the averaged color of the texture.&lt;br /&gt;
&lt;br /&gt;
= 4.6         q3map_lightimage &amp;lt; texturepath/texturename&amp;gt; =&lt;br /&gt;
The keyword '''q3map_lightimage''' generates lighting from the average color of the TGA image specified by the  q3map_lightimage.&lt;br /&gt;
&lt;br /&gt;
The keyword sequence for generating light on a '''q3map_surfacelight''' should be ordered as follows:&lt;br /&gt;
&lt;br /&gt;
1) '''q3map_lightimage''' ; (the texture providing the light and the color of the light)&lt;br /&gt;
&lt;br /&gt;
2) '''qer_editorimage''' ; (the editor-only image used to select the source map for the texture)&lt;br /&gt;
&lt;br /&gt;
3) the average color of the light emitted from the shader is calculated from the '''lightimage.''')&lt;br /&gt;
&lt;br /&gt;
The reason '''q3map_lightimage''' is specified for the light in the example below, is because the blend map is predominantly yellow, and the designer wanted more yellow light to be emitted from the light.&lt;br /&gt;
&lt;br /&gt;
'''Example: Taking light from another source texture'''&lt;br /&gt;
&lt;br /&gt;
 textures/eerie/ironcrosslt2_10000&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 q3map_lightimage textures/gothic_light/ironcrosslt2.blend.tga&lt;br /&gt;
&lt;br /&gt;
 // this TGA is the source for the color of the blended light&lt;br /&gt;
&lt;br /&gt;
  qer_editorimage textures/gothic_light/ironcrosslt2.tga&lt;br /&gt;
&lt;br /&gt;
 //base TGA (used because the shader is used with several&lt;br /&gt;
&lt;br /&gt;
 // different light values&lt;br /&gt;
&lt;br /&gt;
 q3map_surfacelight 10000&lt;br /&gt;
&lt;br /&gt;
 //emitted light value of 10,000&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map $lightmap&lt;br /&gt;
&lt;br /&gt;
 //source texture is affected by the lightmap&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 // this command handles the overbright bits created by “sunlight”&lt;br /&gt;
&lt;br /&gt;
 // in the game&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/gothic_light/ironcrosslt2.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc filter&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/gothic_light/ironcrosslt2.blend.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc add&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 4.7        q3map_lightsubdivide &amp;lt;value&amp;gt; =&lt;br /&gt;
This allows the user to define how large, or small to make the subdivisions (triangles) in a textured surface, particularly aimed at light-emitting textures like skies.  It defaults to 120 game units, but can be made larger (256 or 512) for sky boxes or smaller for light surfaces at the bottoms of cracks.  This can be a dominant factor in processing time for q3map lighting.&lt;br /&gt;
&lt;br /&gt;
= 4.8        surfaceparm &amp;lt;parm&amp;gt; =&lt;br /&gt;
All surfaceparm keywords are preceded by the word surfaceparm as follows: '''surfaceparm fog''' or '''surfaceparm noimpact.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.1          alphashadow ==&lt;br /&gt;
This keyword applied to a texture on a brush, patch or model will cause the lighting phase of the q3map process to use the texture’s alpha channel as a mask for casting static shadows in the game world.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' Alphashadow does not work well with fine line detail on a texture.  Fine lines may not cast acceptable shadows.  It appears to work best with well-defined silhouettes and wider lines within the texture.  Most of our tattered banners use this to cast tattered shadows.&lt;br /&gt;
&lt;br /&gt;
== 4.8.2          areaportal ==&lt;br /&gt;
A brush marked with this keyword functions as an area portal, a break in the Q3MAP tree.  It is typically placed on a very thin brush placed inside a door entity (but is not a part of that entity).  The intent is to block the game from processing surface triangles located behind it when the door is closed.  It is also used by the BSPC (bot area file creation compiler) in the same manner as a cluster portal. The brush must touch all the structural brushes surrounding the '''areaportal.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.3          clusterportal ==&lt;br /&gt;
A brush marked with this keyword function creates a subdivision of the area file (.aas) used by the bots for navigation. It is typically placed in locations that are natural breaks in a map, such as entrances to halls, doors, tunnels, etc. The intent is keep the bot from having to process the entire map at once. As with the the areaportal parameter, the affected brush must touch all the structural brushes surrounding the '''areaportal.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.4          donotenter ==&lt;br /&gt;
Read as “do not enter.” Like clusterportal, this is a bot-only property. A brush marked with donotenter will not affect non-bot players, but bots will not enter it.  It should be used only when bots appear to have difficulty navigating around some map features.&lt;br /&gt;
&lt;br /&gt;
== 4.8.5          flesh ==&lt;br /&gt;
This will cue different sounds (in a similar manner to metalsteps ) and cause blood to appear instead of bullet impact flashes.&lt;br /&gt;
&lt;br /&gt;
== 4.8.6          fog ==&lt;br /&gt;
Fog defines the brush as being a “fog” brush.  This is a Q3MAP function that chops and identifies all geometry inside the brush. The General shader keyword fogparms must also be specified to tell how to draw the fog.&lt;br /&gt;
&lt;br /&gt;
== 4.8.7          lava ==&lt;br /&gt;
Assigns to the texture the game properties set for lava.  This affects both the surface and the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.8          metalsteps ==&lt;br /&gt;
The player sounds as if he is walking on clanging metal steps or gratings. Other than specifiying '''flesh''', '''metalsteps''', '''nosteps''', or default (i.e.; specify nothing) it is currently not possible for a designer to create or assign a specific sound routine to a texture.  Note: If no sound is set for a texture, then the default footsteps sound routines are heard.&lt;br /&gt;
&lt;br /&gt;
== 4.8.9          nodamage ==&lt;br /&gt;
The player takes no damage if he falls onto a texture with this surfaceparm&lt;br /&gt;
&lt;br /&gt;
== 4.8.10      nodlight ==&lt;br /&gt;
Read as “No ''Dee'' Light”. A texture containing this parameter will not be affected or lit by dynamic lights, such as weapon effects.  And example in ''Quake III Arena''  would be solid lava.&lt;br /&gt;
&lt;br /&gt;
== 4.8.11      nodraw ==&lt;br /&gt;
A texture marked with nodraw will not visually appear in the game world.  Most often used for triggers, clip brushes, origin brushes, and so on.&lt;br /&gt;
&lt;br /&gt;
== 4.8.12      nodrop ==&lt;br /&gt;
When a player dies inside a volume (brush) marked nodrop, no weapon is dropped.  The intend use is for “Pits of Death.”  Have a kill trigger inside a nodrop volume, and when the players die here, they won't drop their weapons. The intent is to prevent unnecessary polygon pileups on the floors of pits.&lt;br /&gt;
&lt;br /&gt;
== 4.8.13      noimpact ==&lt;br /&gt;
World entities will not impact on this texture.  No explosions occur when projectiles strike this surface and no marks will be left on it. Sky textures are usually marked with this texture so those projectiles will not hit the sky and leave marks.&lt;br /&gt;
&lt;br /&gt;
== 4.8.14      nomarks ==&lt;br /&gt;
Projectiles will explode upon contact with this surface, but will not leave marks.  Blood will also not mark this surface.  This is useful to keep lights from being temporarily obscured by battle damage.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' Use this on any surface with a deformVertexes keyword.  Otherwise, the marks will appear on the unmodified surface location of the texture with the surface wriggles and squirms through the marks.&lt;br /&gt;
&lt;br /&gt;
== 4.8.15      nolightmap ==&lt;br /&gt;
This texture does not have a lightmap phase.  It is not affected by the ambient lighting of the world around it. It does not require the addition of an rgbGen identity keyword in that stage.&lt;br /&gt;
&lt;br /&gt;
== 4.8.16      nosteps ==&lt;br /&gt;
The player makes no sound when walking on this texture.&lt;br /&gt;
&lt;br /&gt;
== 4.8.17      nonsolid ==&lt;br /&gt;
This attribute indicates a brush, which does not block the movement of entities in the game world.  It applied to triggers, hint brushes and similar brushes.  This affects the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.18      origin ==&lt;br /&gt;
Used on the “origin”  texture.  Rotating entities need to contain an origin brush in their construction. The brush must be rectangular (or square).  The origin point is the exact center of the origin brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.19      playerclip ==&lt;br /&gt;
Blocks player movement through a '''nonsolid''' texture.  Other game world entities can pass through a brush marked '''playerclip'''. The intended use for this is to block the player but not block projectiles like rockets.&lt;br /&gt;
&lt;br /&gt;
== 4.8.20      slick ==&lt;br /&gt;
This surfaceparm included in a texture should give it significantly reduced friction.&lt;br /&gt;
&lt;br /&gt;
== 4.8.21      slime ==&lt;br /&gt;
Assigns to the texture the game properties for slime. This affects both the surface and the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.22      structural ==&lt;br /&gt;
This surface attribute causes a brush to be seen by the Q3MAP process as a possible break-point in a BSP tree.  It is used as a part of the shader for the “hint” texture.  Generally speaking, any opaque texture not marked as “'''detail'''” is by default,  '''structural,''' so you shouldn’t need to specify this.&lt;br /&gt;
&lt;br /&gt;
== 4.8.23      trans ==&lt;br /&gt;
Tells q3map that pre-computed visibility should not be blocked by this surface.  Generally, any shaders that have blendfuncs should be marked as surfaceparm trans.&lt;br /&gt;
&lt;br /&gt;
== 4.8.24      water ==&lt;br /&gt;
Assigns to the texture the game properties for water.&lt;br /&gt;
&lt;br /&gt;
 5         Editor specific shader instructions&lt;br /&gt;
These instructions only affect the texture when it is seen in the [[Q3Radiant]] editor.  They should be grouped with the surface parameters but ahead of them in sequence.&lt;br /&gt;
&lt;br /&gt;
= 5.1        qer_editorimage &amp;lt; texture path/texturename&amp;gt; =&lt;br /&gt;
This keyword creates a shader name in memory, but in the editor, it displays the TGA art image specified in qer_editorimage (in the example below this is textures/eerie/lavahell.tga).&lt;br /&gt;
&lt;br /&gt;
The editor maps a texture using the size attributes of the TGA file used for the editor image. When that editor image represents a shader, any texture used in any of the shader stages will be scaled up or down to the dimensions of the editor image. If a 128x128 pixel image is used to represent the shader in the editor, then a 256x256 image used in a later stage will be shrunk to fit.  A 64x64 image would be stretched to fit. Be sure to check this on bouncy, acceleration, and power-up pads placed on surfaces other than 256 x 256. Use '''tcMod scale''' to change the size of the stretched texture. Remember that '''tcMod scale''' 0.5 0.5 will double your image, while '''tcMod scale''' 2 2 will halve it.&lt;br /&gt;
&lt;br /&gt;
'''Design Notes:'''  The base_light and gothic_light shaders contain numerous uses of this. It can be very useful for making different light styles (mostly to change the light brightnesses) without having  to create a new piece of TGA art for each new shader.&lt;br /&gt;
&lt;br /&gt;
 textures/liquids/lavahell2 //path and name of new texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 qer_editorimage textures/eerie/lavahell.tga&lt;br /&gt;
&lt;br /&gt;
 //based on this&lt;br /&gt;
&lt;br /&gt;
 qer_nocarve&lt;br /&gt;
&lt;br /&gt;
  //cannot be cut by CSG subtract&lt;br /&gt;
&lt;br /&gt;
 surfaceparm noimpact&lt;br /&gt;
&lt;br /&gt;
 //projectiles do not hit it&lt;br /&gt;
&lt;br /&gt;
 surfaceparm lava&lt;br /&gt;
&lt;br /&gt;
 //has the game properties of lava&lt;br /&gt;
&lt;br /&gt;
 surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
 //environment lighting does not affect&lt;br /&gt;
&lt;br /&gt;
 q3map_surfacelight 3000&lt;br /&gt;
&lt;br /&gt;
 //light is emitted&lt;br /&gt;
&lt;br /&gt;
 tessSize 256&lt;br /&gt;
&lt;br /&gt;
 //relatively large triangles&lt;br /&gt;
&lt;br /&gt;
 cull disable&lt;br /&gt;
&lt;br /&gt;
 //no sides are removed&lt;br /&gt;
&lt;br /&gt;
 deformVertexes wave 100 sin 5 5 .5 0.02&lt;br /&gt;
&lt;br /&gt;
 fogparms 0.8519142 0.309723 0.0 128 128&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/eerie/lavahell.tga&lt;br /&gt;
&lt;br /&gt;
 //base texture artwork&lt;br /&gt;
&lt;br /&gt;
 tcMod turb .25 0.2 1 0.02&lt;br /&gt;
&lt;br /&gt;
 //texture is subjected to turbulence&lt;br /&gt;
&lt;br /&gt;
 tcMod scroll 0.1 0.1&lt;br /&gt;
&lt;br /&gt;
 //the turbulence is scrolled&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 5.2        qer_nocarve =&lt;br /&gt;
A brush marked with this instruction will not be affected by CSG subtract functions.  It is especially useful for water and fog textures.&lt;br /&gt;
&lt;br /&gt;
= 5.3        qer_trans &amp;lt;value&amp;gt; =&lt;br /&gt;
This parameter defines the percentage of transparency that a brush will have when seen in the editor (no effect on game rendering at all).  It can have a positive value between 0 and 1.  The higher the value, the less transparent the texture. Example: qer_trans 0.2 means the brush is 20% opaque and nearly invisible.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
'''&lt;br /&gt;
 6         Stage Specific Keywords&lt;br /&gt;
Stage specifications only affect rendering.  Changing any keywords or values within a stage will usually take effect as soon as a vid_restart is executed.  Q3MAP ignores stage specific keywords entirely.&lt;br /&gt;
&lt;br /&gt;
A stage can specify a texture map, a color function, an alpha function, a texture coordinate function, a blend function, and a few other rasterization options.&lt;br /&gt;
&lt;br /&gt;
= 6.1        Texture map specification =&lt;br /&gt;
== 6.1.1          map &amp;lt;texturepath/texturename&amp;gt; ==&lt;br /&gt;
Specifies the source texture map (a 24 or 32-bit TGA file) used for this stage.  The texture may or may not contain alpha channel information.  The special keywords '''$lightmap''' and '''$whiteimage''' may be substituted in lieu of an actual texture map name. In those cases, the texture named in the first line of the shader becomes the texture that supplies the light mapping data for the process.&lt;br /&gt;
&lt;br /&gt;
== $lightmap ==&lt;br /&gt;
This is the overall lightmap for the game world.  It is calculated during the Q3MAP process.  It is the initial color data found in the framebuffer.  Note: due to the use of overbright bits in light calculation, the keyword '''rgbGen identity''' must accompany all '''$lightmap''' instructions.&lt;br /&gt;
&lt;br /&gt;
== $whiteimage ==&lt;br /&gt;
This is used for specular lighting on MD3 models. This is is a white image generated internally by the game.  This image can be used in lieu of $lightmap or an actual texture map if, for example, you wish for the vertex colors to come through unaltered.&lt;br /&gt;
&lt;br /&gt;
== 6.1.2          Clampmap &amp;lt;texturepath&amp;gt; ==&lt;br /&gt;
Dictates that this stage should clamp texture coordinates instead of wrapping them.  During a stretch function, the area, which the texture must cover during a wave cycle, enlarges and decreases.  Instead of repeating a texture multiple times during enlargement (or seeing only a portion of the texture during shrinking) the texture dimensions increase or contract accordingly. This is only relevant when using something like deformTexCoordParms to stretch/compress texture coordinates for a specific special effect.  Remember that the Quake III Arena engine normalizes all texture coordinates (regardless of actual texture size) into a scale of  0.0 to 1.0.&lt;br /&gt;
&lt;br /&gt;
'''Proper Alignment:''' When using '''clampTexCoords''' be make sure the texture is properly aligned on the brush. The '''clampTexCoords''' function keeps the image from tiling. However, the editor doesn’t represent this properly and shows a tiled image. Therefore, what appears to be the correct position may be offset. This is very apparent on anything with a '''tcMod rotate''' and '''clampTexCoords''' function.&lt;br /&gt;
&lt;br /&gt;
'''Avoiding Distortion:''' When seen at a given distance (which can vary, depending on hardware and the size of the texture), the compression phase of a stretch function will cause a “cross”-like visual artifact to form on the modified texture due to the way that textures are reduced.  This occurs because the texture undergoing modification lacks sufficient “empty space” around the displayed (non-black) part of the texture (see figure 2a). To compensate for this, make the non-zero portion of the texture substantially smaller (50% of maximum stretched size -- see figure 2b) than the dimensions of the texture.  Then, write a scaling function (tcScale) into the appropriate shader phase, to enlarge the image to the desired proportion.&lt;br /&gt;
&lt;br /&gt;
The shaders for the bouncy pads (in the sfx.shader file) show the stretch function in use, including the scaling of the stretched texture:&lt;br /&gt;
&lt;br /&gt;
  '''Example: Using clampTexCoords to control a stretching texture'''&lt;br /&gt;
&lt;br /&gt;
 textures/sfx/metalbridge06_bounce&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       //q3map_surfacelight 2000&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nodamage&lt;br /&gt;
&lt;br /&gt;
       q3map_lightimage textures/sfx/jumppadsmall.tga&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 400&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map textures/sfx/metalbridge06_bounce.tga&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map $lightmap&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_dst_color gl_zero&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/sfx/bouncepad01b_layer1.tga&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_one gl_one&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sin .5 .5 0 1.5&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
             clampmap textures/sfx/jumppadsmall.tga&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_one gl_one&lt;br /&gt;
&lt;br /&gt;
             tcMod stretch sin 1.2 .8 0 1.5&lt;br /&gt;
&lt;br /&gt;
              rgbGen wave square .5 .5 .25 1.5&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       //    END&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 6.1.3          [[AnimMap]] &amp;lt;frequency&amp;gt; &amp;lt;texture1&amp;gt; … &amp;lt;texture8&amp;gt; ==&lt;br /&gt;
The surfaces in the game can be animated by displaying a sequence of 1 to 8 frames (separate texture maps).  These animations are affected by other keyword effects in the same and later shader stages.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;Frequency&amp;gt;:''' the number of times that the animation cycle will repeat within a one second time period.   The larger the value, the more repeats within a second. Animations that should last for more than a second need to be expressed as decimal values.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;texture1&amp;gt; … &amp;lt;texture8&amp;gt;:'''  the texturepath/texture name for each animation frame must be explicitly listed. Up to eight frames (eight separate .tga files) can be used to make an animated sequence.  Each frame is displayed for an equal subdivision of the frequency value.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' ''AnimMap 0.25 animMap 10 textures/sfx/b_flame1.tga textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga'' would be a 4 frame animated sequence, calling each frame in sequence over a cycle length of 4 seconds.  Each frame would be displayed for 1 seconds before the next one is displayed. The cycle repeats after the last frame in sequence is shown.&lt;br /&gt;
&lt;br /&gt;
'''Design Notes:''' To make a texture image appear for an unequal (longer) amount of time (compared to other frames), repeat that frame more than once in the sequence.&lt;br /&gt;
&lt;br /&gt;
 textures/sfx/flameanim_blue&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
        //    *************************************************&lt;br /&gt;
&lt;br /&gt;
       //    *      Blue Flame                               *&lt;br /&gt;
&lt;br /&gt;
       //     *      July 20, 1999 Surface Light 1800         *&lt;br /&gt;
&lt;br /&gt;
       //    *     Please Comment Changes                    *&lt;br /&gt;
&lt;br /&gt;
       //    *************************************************&lt;br /&gt;
&lt;br /&gt;
       qer_editorimage textures/sfx/b_flame7.tga&lt;br /&gt;
&lt;br /&gt;
       q3map_lightimage textures/sfx/b_flame7.tga&lt;br /&gt;
&lt;br /&gt;
       surfaceparm trans&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nomarks&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
       cull none&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 1800&lt;br /&gt;
&lt;br /&gt;
        // texture changed to blue flame.... PAJ&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             animMap 10 textures/sfx/b_flame1.tga textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga textures/sfx/b_flame5.tga textures/sfx/b_flame6.tga textures/sfx/b_flame7.tga textures/sfx/b_flame8.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
              rgbGen wave inverseSawtooth 0 1 0 10&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             animMap 10 textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga textures/sfx/b_flame5.tga textures/sfx/b_flame6.tga textures/sfx/b_flame7.tga textures/sfx/b_flame8.tga textures/sfx/b_flame1.tga&lt;br /&gt;
&lt;br /&gt;
              blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sawtooth 0 1 0 10&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map textures/sfx/b_flameball.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sin .6 .2 0 .6&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 6.2        Blend Functions =&lt;br /&gt;
Blend functions are the keyword commands that tell the ''Quake III Arena'' graphic engine’s renderer how graphic layers are to be mixed together.&lt;br /&gt;
&lt;br /&gt;
== 6.2.1          Simplified blend functions: ==&lt;br /&gt;
The most common blend functions are set up here as simple commands, and should be used unless you really know what you are doing.&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.1         blendfunc add ===&lt;br /&gt;
This is a shorthand command for '''blendfunc gl_one gl_one. ''' Effects like fire and energy are additive.''' '''&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.2         blendfunc filter ===&lt;br /&gt;
This is a shorthand command that can be substituted for either   '''blendfunc gl_dst_color gl_zero''' or '''blendfunc gl_zero gl_src_color'''.  A filter will always result in darker pixels than what is behind it, but it can also remove color selectively.  Lightmaps are filters.&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.3         blendfunc blend ===&lt;br /&gt;
Shorthand for blendfunc gl_src_alpha gl_one_minus_src_alpha.  This is conventional transparency, where part of the background is mixed with part of the texture.&lt;br /&gt;
&lt;br /&gt;
== 6.2.2          Explicit blend functions: ==&lt;br /&gt;
Getting a handle on this concept is absolutely key to understanding all shader manipulation of graphics.&lt;br /&gt;
&lt;br /&gt;
BlendFunc or “Blend Function” is the equation at the core of processing shader graphics.  The formula reads as follows:&lt;br /&gt;
&lt;br /&gt;
 '''[Source * &amp;lt;srcBlend&amp;gt;] + [Destination * &amp;lt;dstBlend&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
'''Source''' is usually the RGB color data in a texture TGA file (remember it’s all numbers) modified by any rgbgen and alphagen. In the shader, the source is generally identified by command MAP, followed by the name of the image.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''Destination''' is the color data currently existing in the frame buffer.&lt;br /&gt;
&lt;br /&gt;
Rather than think of the entire texture as a whole, it may be easier to think of the number values that correspond to a single pixel, because that is essentially what the computer is processing … one pixel of the bit map at a time.&lt;br /&gt;
&lt;br /&gt;
The process for calculating the final look of a texture in place in the game world begins with the precalculated lightmap for the area where the texture will be located. This data is in the frame buffer. That is to say, it is the initial data in the '''Destination'''. In an unmanipulated texture (i.e.; one without a special shader script), color information from the texture is combined with the lightmap. In a shader-modified texture, the $lightmap stage must be present for the lightmap to be included in the calculation of the final texture appearance.&lt;br /&gt;
&lt;br /&gt;
Each pass or “stage” of blending is combined (in a cumulative manner) with the color data passed onto it by the previous stage.  How that data combines together depends on the values chosen for the Source Blends and Destination Blends at each stage.  Remember it’s numbers that are being mathematically combined together that are ultimately interpreted as colors.&lt;br /&gt;
&lt;br /&gt;
A general rule is that any '''Source Blend''' other than  '''GL_ONE''' (or '''GL_SRC_ALPHA''' where the alpha channel is entirely white) will cause the Source to become darker.&lt;br /&gt;
&lt;br /&gt;
== 6.2.3          Source Blend &amp;lt;srcBlend&amp;gt; ==&lt;br /&gt;
The following values are valid for the Source Blend part of the equation.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
  '''GL_ONE'''                               This is the value 1.  When multiplied by the '''Source''', the value stays the same the value of the color information does not change.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ZERO'''                             This is the value 0. When multiplied by the '''Source''', all RGB data in the '''Source''' becomes Zero (essentially black).&lt;br /&gt;
&lt;br /&gt;
 '''GL_DST_COLOR'''              This is the value of color data currently in the Destination (frame buffer).  The value of that information depends on the information supplied by previous stages.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_DST_COLOR  ''' This is nearly the same as GL_DST_COLOR except that the value for each component color is inverted by subtracting it from one. (,i.e.; R = 1.0 – DST.R, G = 1.0 – DST.G, B = 1.0 – DST.B, etc.)&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_ALPHA'''               The TGA file being used for the '''Source''' data &amp;lt;u&amp;gt;must have an alpha channel&amp;lt;/u&amp;gt; in addition to its RGB channels (for a total of four channels).  The alpha channel is an 8-bit black and white only channel. An entirely white alpha channel will not darken the '''Source'''.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_SRC_ALPHA   ''' This is the same as GL_SRC_ALPHA except that the value in the alpha channel is inverted by subtracting it from one. (i.e.; A=1.0 – SRC.A)&lt;br /&gt;
&lt;br /&gt;
== 6.2.4          Destination Blend &amp;lt;dstBlend&amp;gt; ==&lt;br /&gt;
The following values are valid for the Destination Blend part of the equation.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE'''                               This is the value 1.  When multiplied by the '''Destination''', the value stays the same the value of the color information does not change.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ZERO'''                             This is the value 0. When multiplied by the '''Destination''', all RGB data in the  '''Destination''' becomes Zero (essentially black).&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_COLOR'''              This is the value of color data currently in the '''Source''' (which is the texture being manipulated here).&lt;br /&gt;
&lt;br /&gt;
  '''GL_ONE_MINUS_SRC_COLOR  ''' This is the value of color data currently in '''Source''', but subtracted from one (i.e.; inverted).&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_ALPHA'''               The TGA file being used for the '''Source''' data &amp;lt;u&amp;gt;must have an alpha channel&amp;lt;/u&amp;gt; in addition to its RGB channels (four a total of four channels).  The alpha channel is an 8-bit black and white only channel. An entirely white alpha channel will not darken the '''Source'''.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_SRC_ALPHA   ''' This is the same as GL_SRC_ALPHA except that the value in the alpha channel is inverted by subtracting it from one. (i.e.; A=1.0 – SRC.A).&lt;br /&gt;
&lt;br /&gt;
 ''' '''&lt;br /&gt;
&lt;br /&gt;
 '''Doing the Math: The Final Result'''&lt;br /&gt;
&lt;br /&gt;
The product of the '''Source''' side of the equation is added to the product of the '''Destination''' side of the equation.  The sum is then placed into the frame buffer to become the '''Destination''' information for the next stage.   Ultimately, the equation creates a modified color value that is used by other functions to define what happens in the texture when it is displayed in the game world.&lt;br /&gt;
&lt;br /&gt;
== 6.2.5          Default Blend Function ==&lt;br /&gt;
''If no '''blendFunc''' is specified then no blending will take place.''  A warning is generated if any stage after the first stage does not have a '''blendFunc''' specified.&lt;br /&gt;
&lt;br /&gt;
== 6.2.6           Technical Information/Limitations Regarding Blend Modes: ==&lt;br /&gt;
The Riva 128 graphics card supports ONLY the following blend modes:&lt;br /&gt;
&lt;br /&gt;
GL_ONE, GL_ONE&lt;br /&gt;
&lt;br /&gt;
GL_DST_COLOR, GL_ZERO&lt;br /&gt;
&lt;br /&gt;
GL_ZERO, GL_SRC_COLOR&lt;br /&gt;
&lt;br /&gt;
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
Cards running in 16 bit color cannot use any GL_DST_ALPHA blends.&lt;br /&gt;
&lt;br /&gt;
= 6.3        rgbGen &amp;lt;func&amp;gt; =&lt;br /&gt;
There are two color sources for any given shader, the texture file and the vertex colors. Output at any given time will be equal to '''TEXTURE''' multiplied by '''VERTEXCOLOR'''. Most of the time VERTEXCOLOR will default to white (which is a normalized value of 1.0), so output will be TEXTURE (this usually lands in the '''Source''' side of the shader equation).  Sometimes you do the opposite and use TEXTURE = WHITE, but this is only commonly used when doing specular lighting on entities (i.e.; shaders that level designers will probably never create&lt;br /&gt;
&lt;br /&gt;
The most common reason to use rgbGen is to pulsate something. This means that the VERTEXCOLOR will oscillate between two values, and that value will be multiplied (darkening) the texture.&lt;br /&gt;
&lt;br /&gt;
If no rgbGen is specified, either “identityLighting” or “identity” will be selected, depending on which blend modes are used.&lt;br /&gt;
&lt;br /&gt;
Valid &amp;lt;func&amp;gt; parameters are '''wave, identity, identityLighting, entity, oneMinusEntity, fromVertex,''' and '''lightingDiffuse'''.&lt;br /&gt;
&lt;br /&gt;
== 6.3.1          [[RgbGen]] identityLighting ==&lt;br /&gt;
Colors will be (1.0,1.0,1.0) if running without overbright bits (NT, linux, windowed modes), or (0.5, 0.5, 0.5) if running with overbright.  Overbright allows a greater color range at the expense of a loss of precision.  Additive and blended stages will get this by default.&lt;br /&gt;
&lt;br /&gt;
== 6.3.2          rgbGen identity ==&lt;br /&gt;
Colors are assumed to be all white (1.0,1.0,1.0).  All filters stages (lightmaps, etc) will get this by default.&lt;br /&gt;
&lt;br /&gt;
== 6.3.3          rgbGen wave &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amp&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Colors are generated using the specified waveform.  An affected texture with become darker and lighter, but will not change hue. Hue stays constant.   Note that the rgb values for color will not go below 0 (black) or above 1 (white). Valid waveforms are sin, triangle, square, sawtooth and inversesawtooth.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;func&amp;gt; Wave''' forms and their effects:&lt;br /&gt;
&lt;br /&gt;
'''Sin:''' color flows smoothly through changes.&lt;br /&gt;
&lt;br /&gt;
'''Triangle:''' color changes at a constant rate and spends no appreciable time at peaks and valleys.&lt;br /&gt;
&lt;br /&gt;
'''Square:'''  color alternates instantly between its peak and valley values.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' With a positive frequency value, the color changes at a constant rate to the peak then instantly drops to its valley value.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth:''' An inverse sawtooth wave will reverse this, making the ascent immediate (like a square wave) and the decay fall off like a triangle wave.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Baseline value. The initial RGB formula of a color (normalilzed.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amp&amp;gt;'''  Amplitude.  This is the degree of change from the baseline value.  In some cases you will want values outside the 0.0 to 1.0 range, but it will induce clamping (holding at the maximum or minimum value for a time period) instead of continuous change.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See the explanation for phase under the waveforms heading of Key Concepts.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;'''    Frequency.  This is a value (NOT normalized) that indicates peaks per second.&lt;br /&gt;
&lt;br /&gt;
== 6.3.4          [[RgbGen]] entity ==&lt;br /&gt;
Colors are grabbed from the entity’s '''modulate''' field.  This is used for things like explosions.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer.&lt;br /&gt;
&lt;br /&gt;
== 6.3.5           rgbGen oneMinusEntity ==&lt;br /&gt;
Colors are grabbed from 1.0 minus the entity’s modulate field.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer.&lt;br /&gt;
&lt;br /&gt;
== 6.3.6          rgbGen Vertex ==&lt;br /&gt;
Colors are filled in directly by the data from the map or model files.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': rgbGen vertex should be used when you want the RGB values to be computed&lt;br /&gt;
&lt;br /&gt;
for a static model (i.e. mapobject) in the world using precomputed static&lt;br /&gt;
&lt;br /&gt;
lighting from Q3BSP. This would be used on things like the gargoyles, the portal frame,&lt;br /&gt;
&lt;br /&gt;
skulls, and other decorative MD3s put into the Quake III Arena  world.&lt;br /&gt;
&lt;br /&gt;
== 6.3.7          rgbGen oneMinusVertex ==&lt;br /&gt;
As rgbGen vertex, but inverted.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer&lt;br /&gt;
&lt;br /&gt;
== 6.3.8          rgbGen lightingDiffuse ==&lt;br /&gt;
Colors are computed using a standard diffuse lighting equation. It uses the vertex normals to illuminate the object correctly.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' - rgbGen lightingDiffuse is used when you want the RGB values to be&lt;br /&gt;
&lt;br /&gt;
computed for a dynamic model (i.e. non-map object) in the world using&lt;br /&gt;
&lt;br /&gt;
regular in-game lighting. For example, you would specify on shaders for&lt;br /&gt;
&lt;br /&gt;
items, characters, weapons, etc.&lt;br /&gt;
&lt;br /&gt;
= 6.4        [[AlphaGen]] &amp;lt;func&amp;gt; =&lt;br /&gt;
The alpha channel can be specified like the rgb channels.  If not specified, it defaults to 1.0.&lt;br /&gt;
&lt;br /&gt;
== 6.4.1          [[AlphaGen]] portal ==&lt;br /&gt;
This rendering stage keyword is used in conjunction with the surface parameter keyword '''portal'''.  The function accomplishes the  “fade” that causes the scene in the portal to fade from view.  Specifically, it means “Generate alpha values based on the distance from the viewer to the portal.” Use '''alphaGen''' portal on the last rendering pass.&lt;br /&gt;
&lt;br /&gt;
= 6.5        tcGen &amp;lt;coordinate source&amp;gt; =&lt;br /&gt;
Specifies how texture coordinates are generated and where they come from. Valid functions are '''base''', '''lightmap''' and '''environment.'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' = base texture coordinates from the original art.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;lightmap&amp;gt;''' = lightmap texture coordinates&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;environment&amp;gt;''' = Make this object environment mapped.&lt;br /&gt;
&lt;br /&gt;
== 6.5.1          tcGen vector (&amp;lt;sx&amp;gt; &amp;lt;sy&amp;gt; &amp;lt;sz&amp;gt;) (&amp;lt;tx&amp;gt; &amp;lt;ty&amp;gt; &amp;lt;tz&amp;gt;) ==&lt;br /&gt;
New texcoord generation by world projection. This allows you to project a&lt;br /&gt;
&lt;br /&gt;
texture onto a surface in a fixed way, regardless of its orientation.&lt;br /&gt;
&lt;br /&gt;
S coordinates correspond to the “x” coordinates on the texture itself.&lt;br /&gt;
&lt;br /&gt;
T coordinates correspond to the “y” coordinates on the texture itself.&lt;br /&gt;
&lt;br /&gt;
The measurements are in game units.&lt;br /&gt;
&lt;br /&gt;
Example: tcGen vector (0.01 0 0) (0 0.01 0)&lt;br /&gt;
&lt;br /&gt;
This would project a texture with a repeat every 100 units across the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
= 6.6        tcMod &amp;lt;func&amp;gt; &amp;lt;…&amp;gt; =&lt;br /&gt;
Specifies how texture coordinates are modified after they are generated. The valid functions for tcMod are '''rotate, scale, scroll, stretch and transform.'''  '''Transform''' is a function generally reserved for use by programmers who suggest that designers leave it alone.  When using multiple tcMod functions during a stage, place the '''scroll''' command last in order, because it performs a mod operation to save precision, and that can disturb other operations. Texture coordinates are modified in the order in which tcMods are specified.  In other words, if you see:&lt;br /&gt;
&lt;br /&gt;
'''tcMod scale 0.5 0.5'''&lt;br /&gt;
&lt;br /&gt;
'''tcMod scroll 1 1'''&lt;br /&gt;
&lt;br /&gt;
Then the texture coordinates will be '''scaled''' ''then'' '''scrolled.'''&lt;br /&gt;
&lt;br /&gt;
== 6.6.1          tcMod rotate &amp;lt;degrees per per second&amp;gt; ==&lt;br /&gt;
This keyword causes the texture coordinates to rotate. The value is expressed in degrees rotated each second.  A positive value means clockwise rotation.  A negative value means counterclockwise rotation. For example “tcMod rotate 5”  would rotate texture coordinates 5 degrees each second in a clockwise direction.  The texture rotates around the center point of the texture map, so you are rotating a texture with a single repetition, be careful to center it on the brush (unless off-center rotation is desired).&lt;br /&gt;
&lt;br /&gt;
== 6.6.2          tcMod scale &amp;lt;sScale&amp;gt; &amp;lt;tScale&amp;gt; ==&lt;br /&gt;
Resizes (enlarges or shrinks) the texture coordinates by multiplying them against the given factors of &amp;lt;sScale&amp;gt; and &amp;lt;tScale).  The values “s” and “t” conform to the “x” and “y”  values (respectively) as they are found in the original texture TGA.  The values for '''sScale''' and '''tScale''' are NOT normalized.  This means that a value greater than 1.0 will increase the size of the texture.  A positive value less than one will reduce the texture to a fraction of its size and cause it to repeat within the same area as the original texture (Note: see '''clampTexCoords''' for ways to control this).;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' ''tcMod scale 0.5 2'' would cause the texture to repeat twice along its width, but expand to twice its height (in which case half of the texture would be seen in the same area as the original)&lt;br /&gt;
&lt;br /&gt;
== 6.6.3          tcMod scroll &amp;lt;sSpeed&amp;gt; &amp;lt;tSpeed&amp;gt; ==&lt;br /&gt;
Scrolls the texture coordinates with the given speeds. ).  The values  “s” and “t” conform to the “x” and “y” values (respectively) as they are found in the original texture TGA,  The scroll speed is measured in “textures” per second. A “texture” is the dimension of the texture being modified and includes any previous shader modifications to the original TGA). A negative s value would scroll the texture to the left.  A negative t value would scroll the texture down.&lt;br /&gt;
&lt;br /&gt;
Example: tcMod scroll 0.5 -0.5 moves the texture down and right (relative to the TGA files original coordinates) at the rate of a half texture each second of travel.&lt;br /&gt;
&lt;br /&gt;
This should be the LAST tcMod in a stage. Otherwise there may be popping or snapping visual effects in some shaders.&lt;br /&gt;
&lt;br /&gt;
== 6.6.4          tcMod stretch &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;frequency&amp;gt; ==&lt;br /&gt;
Stretches the texture coordinates with the given function.  Stretching is defined as stretching the texture coordinate away from the center of  the polygon and then compressing it towards the center of the polygon&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;:''' A base value of one is the original dimension of the texture when it reaches the stretch stage.  Inserting other values positive or negative in this variable will produce unknown effects.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;:''' This is the measurement of   distance the texture will stretch from the base size.  It is measured, like scroll, in textures.  A value of 1 here will double the size of the texture at its peak.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;:''' See the explanation for phase under the deform vertexes keyword.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;frequency&amp;gt;''': this is wave peaks per second.&lt;br /&gt;
&lt;br /&gt;
 '''Wave Functions &amp;lt;func&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''Sin wave''': the texture expands smoothly to its peak dimension and then shrinks smoothly to its valley dimension in a flowing manner.&lt;br /&gt;
&lt;br /&gt;
'''Triangle wave:''' The textures stretch at a constant rate and spend no appreciable time at the peak or valley points.&lt;br /&gt;
&lt;br /&gt;
'''Square wave:'''  The texture is shown at its peak for the duration of the frequency and then at its valley for the duration of the  frequency.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' the texture stretches like a triangle wave until it reaches a peak, then instantly drops to the valley, as in a square wave.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth''': this is the reverse of the sawtooth wave.&lt;br /&gt;
&lt;br /&gt;
== 6.6.5          tcMod &amp;lt;transform&amp;gt; &amp;lt;m00&amp;gt; &amp;lt;m01&amp;gt;  &amp;lt;m10&amp;gt; &amp;lt;m11&amp;gt; &amp;lt;t0&amp;gt; &amp;lt;t1&amp;gt; ==&lt;br /&gt;
Transforms each texture coordinate as follows:&lt;br /&gt;
&lt;br /&gt;
S’ = s * m00 + t * m10 + t0&lt;br /&gt;
&lt;br /&gt;
T’ = t * m01 + s * m11 + t1&lt;br /&gt;
&lt;br /&gt;
This is for use by programmers.&lt;br /&gt;
&lt;br /&gt;
== 6.6.6          tcMod turb &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Applies turbulence to the texture coordinate.  Turbulence is a back and forth churning and swirling effect on the texture.&lt;br /&gt;
&lt;br /&gt;
The parameters for this shader are defined as follows:&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Currently undefined.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' This is essentially the intensity of the disturbance or twisting and squiggling of the texture.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See the explanation for phase under the '''deform vertexes''' keyword.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;''' Frequency. This value is expressed as repetitions or cycles of the wave per second.  A value of one would cycle once per second.  A value of 10 would cycle 10 times per second.  A value of 0.1 would cycle once every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
= 6.7        depthFunc &amp;lt;func&amp;gt; =&lt;br /&gt;
This controls the depth comparison function used while rendering.   The default is “lequal” (Less than or equal to) where any surface that is at the same depth or closer of an existing surface is drawn. This is used for textures with transparency or translucency.  Under some circumstances you may wish to use “equal”, e.g. for lightmapped grates that are alpha tested (it is also used for mirrors).&lt;br /&gt;
&lt;br /&gt;
= 6.8        depthWrite =&lt;br /&gt;
By default, writes to the depth buffer when depthFunc passes will happen for opaque surfaces and not for translucent surfaces.  Blended surfaces can have the depth writes forced with this function.&lt;br /&gt;
&lt;br /&gt;
= 6.9        Detail =&lt;br /&gt;
This feature was not used in Quake III Arena maps, but should still function.&lt;br /&gt;
&lt;br /&gt;
Designates this stage as a detail texture stage, which means that if the c_var, r_detailtextures, is set to 0 then this stage will be ignored (detail will not be displayed).  This keyword, by itself, does not affect rendering at all.  If you do put in a detail texture, it has to conform to very specific rules.  Specifically, the blendFunc:&lt;br /&gt;
&lt;br /&gt;
'''blendFunc GL_DST_COLOR GL_SRC_COLOR'''&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
This is also the simple blend function: '''blendfunc filter'''&lt;br /&gt;
&lt;br /&gt;
And the average ''intensity'' of the detail texture itself must be around 127.&lt;br /&gt;
&lt;br /&gt;
Detail is used to blend fine pixel detail back into a base texture whose scale has been increased significantly. When detail is written into a set of stage instructions, it allows the stage to be disabled by the c_var console command setting &amp;quot;r_detailtextures 0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A texture whose scale has been increased beyond a 1:1 ratio tends not to have very high frequency content. In other words, one texel can cover a lot of real estate.  Frequency is also known as “detail.”  Lack of detail can appear acceptable if the player never has the opportunity to see the texture at close range. But seen close up, such textures look glaringly wrong within the sharp detail of the Quake III Arena environment. A detail texture solves this problem by taking a noisy &amp;quot;detail&amp;quot; pattern (a tiling texture that appears to have a great deal of surface roughness) and applying it to the base texture at a very densely packed scale (that is, reduced from its normal size). This is done programmatically in the shader, and does not require modification of the base texture. Note that if the detail texture is the same size and scale as the base texture that you may as well just add the detail directly to the base texture. The theory is that the detail texture's scale will be so high compared to the base texture (e.g.; 9 detail texels fitting into 1 base texel) that it is literally impossible to fit that detail into the base texture directly.&lt;br /&gt;
&lt;br /&gt;
For this to work, the rules are as&lt;br /&gt;
&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
 A.)    the lightmap must be rendered first. This is because the subsequent detail texture will be modifying the lightmap in the framebuffer directly;&lt;br /&gt;
&lt;br /&gt;
B.) the detail texture must be rendered next since it modifies the lightmap in the framebuffer&lt;br /&gt;
&lt;br /&gt;
C.) the base texture must be rendered last ;&lt;br /&gt;
&lt;br /&gt;
D.) the detail texture MUST have a mean intensity around 127-129. If it does not then it will modify the displayed texture’s perceived brightness in the world&lt;br /&gt;
&lt;br /&gt;
E.) the detail shader stage MUST have the &amp;quot;'''detail'''&amp;quot; keyword or it will not&lt;br /&gt;
&lt;br /&gt;
be disabled if the user uses the &amp;quot;r_detailtextures 0&amp;quot; setting ;&lt;br /&gt;
&lt;br /&gt;
F.) the detail stage MUST use &amp;quot;blendFunc GL_DST_COLOR GL_SRC_COLOR&amp;quot;.  Any&lt;br /&gt;
&lt;br /&gt;
other BlendFunc will cause mismatches in brightness between detail and non-detail views.;&lt;br /&gt;
&lt;br /&gt;
G.) the detail stage should scale its textures by some amount (usually between 3 and 12) using &amp;quot;tcMod&amp;quot; to control density. This roughly corresponds to coarseness. A very large number, such as 12, will give very fine detail, however that detail will disappear VERY quickly as the viewer moves away from the wall since it will be MIP mapped away. A very small number, e.g. 3, gives diminishing returns since not enough is brought in when the user gets very close. I'm currently using values between 6 and 9.5. You should use non-integral numbers as much as possible to avoid seeing repeating patterns.&lt;br /&gt;
&lt;br /&gt;
H.) detail textures add one pass of overdraw, so there is a definite performance hit .&lt;br /&gt;
&lt;br /&gt;
I.) detail textures can be shared, so designers may wish to define only a very&lt;br /&gt;
&lt;br /&gt;
small handful of detail textures for common surfaces such as rocks, etc.&lt;br /&gt;
&lt;br /&gt;
An example (non-existent) detail shader is as follows:&lt;br /&gt;
&lt;br /&gt;
'''Example: Texture with Detail'''&lt;br /&gt;
&lt;br /&gt;
 textures/bwhtest/foo&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 // draw the lightmap first&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map $lightmap&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // modify the lightmap in the framebuffer by&lt;br /&gt;
&lt;br /&gt;
 // a highly compressed detail texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/details/detail01.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc GL_DST_COLOR GL_SRC_COLOR&lt;br /&gt;
&lt;br /&gt;
 // YOU MUST USE THIS!!&lt;br /&gt;
&lt;br /&gt;
 detail&lt;br /&gt;
&lt;br /&gt;
 // for the detail to be disabled, this must be present&lt;br /&gt;
&lt;br /&gt;
 tcMod scale 9.1 9.2&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // now slap on the base texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/castle/blocks11b.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc filter&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 6.10    alphaFunc &amp;lt;func&amp;gt; =&lt;br /&gt;
Determines the alpha test function used when rendering this map.  Valid values are GT0, LT128, and GE128.  These correspond to “GREATER THAN 0”, “LESS THAN 128”, and “GREATER THAN OR EQUAL TO 128”.  This function is used when determining if a pixel should be written to the framebuffer.  For example, if GT0 is specified, the only the portions of the texture map with corresponding alpha values greater than zero will be written to the framebuffer.  By default alpha testing is disabled.&lt;br /&gt;
&lt;br /&gt;
Both alpha testing and normal alpha blending can be used to get textures that have see-through parts.  The difference is that alphaFunc is an all-or-nothing test, while blending smoothly blends between opaque and translucent at pixel edges.  Alpha test can also be used with '''depthwrite''', allowing other effects to be conditionally layered on top of just the opaque pixels by setting '''depthFunc''' to equal.&lt;br /&gt;
&lt;br /&gt;
 7         Notes on Alpha Channels&lt;br /&gt;
To use some blend modes of alphaFunc, you must add an alpha channel to your texture files.  Photoshop can do this. Paintshop Pro has the ability to make an alpha channel cannot work directly in to it. In Photoshop you want to set the type to Mask.  Black has a value of 255.  White has a value of 0.  The darkness of a pixel’s alpha value determines the transparency of the corresponding RGB value in the game world. Darker = more transparent.&lt;br /&gt;
&lt;br /&gt;
Care must be taken when reworking textures with alpha channels. Textures without alpha channels are saved as 24 bit images while textures with alpha channels are saved as 32 bit. If you save them out as 24 bit, the alpha channel is erased. Note: Adobe Photoshop will prompt you to save as 32, 24 or 16 bit.  Choose wisely. If you save a texture as 32 bit and you don’t actually have anything in the alpha channel, Quake III Arena may still be forced to use a lower quality texture format (when in 16 bit rendering) than if you had saved it as 24 bit.&lt;br /&gt;
&lt;br /&gt;
To create a texture that has “open” areas, make those areas black in the alpha channel and make white the areas that are to be opaque.  Using gray shades can create varying degrees of opacity/transparency.&lt;br /&gt;
&lt;br /&gt;
Example: An opaque texture with see-through holes knocked in it.&lt;br /&gt;
&lt;br /&gt;
 textures/base_floor/pjgrate1&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       surfaceparm metalsteps&lt;br /&gt;
&lt;br /&gt;
       cull none&lt;br /&gt;
&lt;br /&gt;
       // A GRATE OR GRILL THAT CAN BE SEEN FROM BOTH SIDES&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/base_floor/pjgrate1.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
             alphaFunc GT0&lt;br /&gt;
&lt;br /&gt;
              depthWrite&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map $lightmap&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_DST_COLOR GL_ZERO&lt;br /&gt;
&lt;br /&gt;
             depthFunc equal&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The alpha channel can also be used to merge a texture (including one that contains black) into another image so that the merged art appears to be and opaque decal on a solid surface (unaffected by the surface it appears to sit on), without actually using an alpha function. The following is a very simple example:&lt;br /&gt;
&lt;br /&gt;
 [[Image:OldSiteResourcesQuake3ShaderManual$image003.jpg]]&lt;br /&gt;
 [[Image:OldSiteResourcesQuake3ShaderManual$image002.png]]&lt;br /&gt;
&lt;br /&gt;
 Figure 1&lt;br /&gt;
&lt;br /&gt;
Start with a TGA file image. In this case, a pentagram on a plain white field (figure 1A).  The color of the field surrrounding the image to be merged is not relevant to this process (although having a hard-edged break between the image to be isolated and the field makes the mask making process easier).  Make an alpha channel.  The area of the image to be merged with another image is masked off in white.  The area to be masked out (not used) is pure black (figure 1B).  The image to be merged into is greenfloor.tga (figure 1C).&lt;br /&gt;
&lt;br /&gt;
Make a '''qer_editorimage''' of greenfloor.tga.  This is placed in the frame buffer as the map image for the texture. By using GL_SRC_ALPHA as the source part of the blend equation, the shader adds in only the non-black parts of the pentagram.  Using GL_MINUS_ONE_SRC_ALPHA, the shader inverts the pentagram’s alpha channel and adds in only the non-black parts of  the green floor.&lt;br /&gt;
&lt;br /&gt;
In a like manner, the alpha channel can be used to blend the textures more evenly.  A simple experiment involves using a linear gradiant in the alpha channel (white to black) and merging two textures so they appear to cross fade into each other.&lt;br /&gt;
&lt;br /&gt;
A more complicated experiment would be to take the pentagram in the first example and give it an aliased edge so that the pentagram appeared to fade or blend into the floor.&lt;br /&gt;
&lt;br /&gt;
 8         Troubleshooting Shaders&lt;br /&gt;
&lt;br /&gt;
If a shader is not working, look first for syntax errors.&lt;br /&gt;
&lt;br /&gt;
Are the brackets correctly set?&lt;br /&gt;
&lt;br /&gt;
Do you have too many parameter values on a line?&lt;br /&gt;
&lt;br /&gt;
Are you using a word in a parameter that wants a numerical value?&lt;br /&gt;
&lt;br /&gt;
Are you using a numerical value in a parameter that wants a word?&lt;br /&gt;
&lt;br /&gt;
Are the path names to your textures correct?&lt;br /&gt;
&lt;br /&gt;
Are your texture names correct? There is a chance that the texture name is too long or too complex.  Try renaming a texture with a shorter, simpler name.&lt;br /&gt;
&lt;br /&gt;
 9          Creating New Textures&lt;br /&gt;
                If you are familiar with the required tools, creating new assets for use in Quake III Arena is not particularly difficult.  As a general rule, you should create new directories for each map with names different from the names used by id.  If you are making a map that will be called “H4x0r_D00M”, every directory containing new assets for that map should be titled H4x0r_D00M. This is to try and avoid asset directories overwriting each other as the editor and the game load in assets.&lt;br /&gt;
&lt;br /&gt;
= 9.1        Tools Needed =&lt;br /&gt;
Any combination of graphic programs and plug-ins that can output a 24 bit MS windows compatible Targa (.tga) or JPEG (.jpg) graphic file. If you plan to make textures that will have an alpha channel component (a 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; 8-bit greyscale channel that is used by the shaders to further manipulate the art), you must have a program that can create 32-bit art with that fourth channel.&lt;br /&gt;
&lt;br /&gt;
Adobe Photoshop has the ability to easily create alpha channels.  Paint Shop Pro from JASC (v5.0+) can also make an alpha channel by creating a mask and naming it “alpha”.&lt;br /&gt;
&lt;br /&gt;
Generally speaking, regardless of the program used, we found it best to do most of the art manipulation of the alpha channel in a separate layer or file and then paste it into the alpha channel before saving.&lt;br /&gt;
&lt;br /&gt;
= 9.2        Setting up Files =&lt;br /&gt;
The editor and the game program look for assets to be located along the paths set up in your project file. Start by creating a directory for you new textures by creating file folders to make a directory path as follows: quake3\baseq3\textures\[mymapname]&lt;br /&gt;
&lt;br /&gt;
The installation of [[Q3Radiant]] will create a text document called “shaderlist.txt” in the following path:&lt;br /&gt;
&lt;br /&gt;
quake3\baseq3\scripts\shaderlist.txt&lt;br /&gt;
&lt;br /&gt;
[[Q3Radiant]] will use the contents of this script to grab your new textures for inclusion in the game. The contents of shaderlist.txt document will contain a listing of all the shader documents that were used by id Software to create Quake III Arena.&lt;br /&gt;
&lt;br /&gt;
Since you will obviously want to create your own shaders, you need to put them in separate folders and create a new shader script for them.&lt;br /&gt;
&lt;br /&gt;
If you plan to work on several maps at once and want to distinguish between textures used in each map, simply add additional map names here. For map and mod makers, we STRONGLY recommend that any new shader scripts created use the name of the map or mod in the shader file name. We know we can’t avoid every incident of files overwriting each other, but we certainly can advise you how to try.&lt;br /&gt;
&lt;br /&gt;
Now, in the scripts directory that you just created, create another text file and call it:&lt;br /&gt;
&lt;br /&gt;
                 [mymapname].shader&lt;br /&gt;
&lt;br /&gt;
                This file will contain the shader scripts you write to modify a particular texture.&lt;br /&gt;
&lt;br /&gt;
= 9.3        Rules and Guidelines =&lt;br /&gt;
== 9.3.1          Rules ==&lt;br /&gt;
Follow these rules when creating textures for the Quake III Arena engine:&lt;br /&gt;
&lt;br /&gt;
  ·         Save your textures into your new [map name] directories.&lt;br /&gt;
&lt;br /&gt;
 ·         Don’t use the same names that id used for textures. It will cause problems.&lt;br /&gt;
&lt;br /&gt;
 ·         For best quality, save textures without an alpha channel as 24 bit TARGA files. Using JPEG files can save memory space, but at the risk of losing detail and depth in the texture. JPEG files cannot be used for textures requiring an alpha channel.&lt;br /&gt;
&lt;br /&gt;
 ·          Textures containing an alpha channel must be saved as 32 bit TARGA files.&lt;br /&gt;
&lt;br /&gt;
 ·         If a new texture requires no further manipulation, it does not need a shader script.&lt;br /&gt;
&lt;br /&gt;
 ·         Size textures in powers of 2. Example: 8x8, 16x16, 32x32, 64x64 pixels and so on.&lt;br /&gt;
&lt;br /&gt;
 ·         Textures don’t need to be square. A 32x256 pixel texture is perfectly acceptable.&lt;br /&gt;
&lt;br /&gt;
== 9.3.2          Guidelines ==&lt;br /&gt;
 The following are some things the id designers learned about textures.&lt;br /&gt;
&lt;br /&gt;
 ·         Create textures in “suites” built around one or two large textures with a number of much smaller supporting detail or accent textures.&lt;br /&gt;
&lt;br /&gt;
 ·          Very large textures are possible, but some video cards compress textures larger than 256x256 pixels.&lt;br /&gt;
&lt;br /&gt;
 ·         Textures are grouped alphabetically by name in the texture display window, so you may want to give suites of textures similar names.&lt;br /&gt;
&lt;br /&gt;
 ·         Use the shader function qe3_editorimage to conserve memory when making multiple versions of a single texture (as in the case of a glowing texture with several light values).&lt;br /&gt;
&lt;br /&gt;
 ·         Unless you are creating special effects or textures designed to draw the player’s eye to a specific spot, muted, middle value colors work best with the game engine.&lt;br /&gt;
&lt;br /&gt;
 ·         Extremely busy (a lot of fussy detail) textures can break up or form visually unpleasant patterns when seen at distances.&lt;br /&gt;
&lt;br /&gt;
= 9.4        Making the .pk3 File =&lt;br /&gt;
When you go to distribute your creation to the gaming world, you need to put your newly created map, textures, bot area files, and shader documents into an archive format called a “pk3” file.  You do not need to include the shaderlist.txt file, since that is only used by the editor. You will need to keep the paths to the various assets the same. So your paths should be something like this:&lt;br /&gt;
&lt;br /&gt;
Textures: baseq3/textures/[mymapnamefolder]&lt;br /&gt;
&lt;br /&gt;
Bsp &amp;amp; aas: baseq3/maps/mymapname.bsp , mymapname.aas&lt;br /&gt;
&lt;br /&gt;
Shader scripts: baseq3/scripts/mymapname.shader&lt;br /&gt;
&lt;br /&gt;
You need to use an archiving program call Winzip to make the pk3 file.  Get Winzip from http://www.winzip.com/winzip/winzip.htm&lt;br /&gt;
&lt;br /&gt;
Make a zip archive called mymapname.zip&lt;br /&gt;
&lt;br /&gt;
Zip all the required assets into a zip archive file (Quake III Arena ''DOES'' support compressed pk3 files).&lt;br /&gt;
&lt;br /&gt;
Rename the zip archive to mymapname.pk3&lt;br /&gt;
&lt;br /&gt;
Put it where the Quake III Arena community can find it.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteResourcesQuake3ShaderManual</id>
		<title>OldSiteResourcesQuake3ShaderManual</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteResourcesQuake3ShaderManual"/>
				<updated>2010-07-06T04:37:35Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
'''NOTE:''' The Quake 3 Arena Shader Manual is also&lt;br /&gt;
 available for download in .PDF format at the following&lt;br /&gt;
 link: [http://dl.fileplanet.com/dl/dl.asp?q2pmp/Q3AShader_manual_pdf.zip Quake 3 Arena Shader Manual in .PDF format]  Quake III Arena&lt;br /&gt;
&lt;br /&gt;
Shader Manual&lt;br /&gt;
&lt;br /&gt;
Revision #12&lt;br /&gt;
&lt;br /&gt;
By Paul Jaquays and Brian Hook&lt;br /&gt;
&lt;br /&gt;
(with additional material by John Carmack, Christian Antkow, Kevin Cloud, &amp;amp; Adrian Carmack)&lt;br /&gt;
&lt;br /&gt;
 1          Preface: Making Your Own Shaders&lt;br /&gt;
The Manual for the [[Q3Radiant]] editor program contains a section called '''''Creating New Assets''''' that has the necessary information for setting up the files to create your own custom Quake III Arena shaders.  It is recommended that you study the scripts in this document and in the individual shader scripts. Pay careful attention to syntax and punctuation. This is where you are most likely to make mistakes.&lt;br /&gt;
&lt;br /&gt;
 2         Introduction&lt;br /&gt;
The graphic engine for ''Quake III Arena'' has taken a step forward by putting much more direct control over the surface qualities of textures into the hands of designers and artists.  In writing this manual, we have tried to define the concepts and tools that are used to modify textures in a way that, it is hoped, will be graspable by users who already have basic knowledge of computer graphics but are not necessarily computer programmers.  It is not a tutorial, nor was it intended to be one.&lt;br /&gt;
&lt;br /&gt;
= 2.1        What is a Shader? =&lt;br /&gt;
Shaders are short text scripts that define the properties of a surface as it appears and functions in a game world (or compatible editing tool).  By convention, the documents that contain these scripts usually has the same name as the texture set which contains the textures being modified (e.g; base, hell, castle, etc,).  Several specific script documents have also been created to handle special cases, like liquids, sky and special effects.&lt;br /&gt;
&lt;br /&gt;
For ''Quake III Arena,'' Shader scripts are located in quake3/baseq3/scripts.&lt;br /&gt;
&lt;br /&gt;
 A ''Quake III Arena''  shader file consists of a series of surface attribute and rendering instructions formatted within braces (“{“ and “}”).  Below you can see a simple example of syntax and format for a single process, including the Q3MAP keywords or “Surface Parameters”, which follow the first bracket and a single bracketed  “stage”:&lt;br /&gt;
&lt;br /&gt;
 textures/liquids/lava&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       deformVertexes wave sin 0 3 0 0.1&lt;br /&gt;
&lt;br /&gt;
       tessSize 64&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
       map textures/common/lava.tga&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 2.2         Shader Name &amp;amp; File Conventions =&lt;br /&gt;
The first line is the shader name.  Shader names can be up to 63 characters long.  The names are often a mirror of a pathname to a .tga file without the extension or basedir (/quake3/baseq3 in our case), but they do not need to be.&lt;br /&gt;
&lt;br /&gt;
Shaders that are only going to be referenced by the game code, not modeling tools, often are just a single world, like “projectionShadow” or “viewBlood”.&lt;br /&gt;
&lt;br /&gt;
Shaders that are used on characters or other polygon models need to mirror a .tga file, which allows the modelers to build with normal textures, then have the special effects show up when the model is loaded into the game.&lt;br /&gt;
&lt;br /&gt;
Shaders that are placed on surfaces in the map editor commonly mirror a .tga file, but the “qer_editorimage” shader parameter can force the editor to use an arbitrary image for display.&lt;br /&gt;
&lt;br /&gt;
Shader pathnames have a case sensitivity issue – on windows, they ''aren’t'' case sensitive, but on unix they ''are''.  Try to always use lowercase for filenames, and always use forward slashes “/” for directory separators.&lt;br /&gt;
&lt;br /&gt;
= 2.3        Shader Types =&lt;br /&gt;
The keywords that affect shaders are divided into two classes.  The first class of keywords are global parameters.  Some global parameters ( '''“surfaceparms.”''' And all '''“q3map_” keywords''') are processed by Q3MAP, and change physical attributes of the surface that uses the shader. These attributes can affect the player. To see changes in these parameters one must re-bsp the map.&lt;br /&gt;
&lt;br /&gt;
The remaining global keywords, and all Stage Specific Keywords are processed by the renderer.  They are appearance changes only and have no effect on game play or game mechanics. Changes to any of these attributes will take effect as soon as the game goes to another level or vid_restarts (type command '''vid_restart''' in the game console).&lt;br /&gt;
&lt;br /&gt;
Shader keywords are ''not'' case sensitive.&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT NOTE:''' some of the shader commands may be order dependent, so it’s good practice to place all global shader commands (keywords defined in this section) at the very beginning of the shader and to place shader stages at the end (see various examples).&lt;br /&gt;
&lt;br /&gt;
= 2.4        Key Concepts =&lt;br /&gt;
Ideally, a designer or artist who is manipulating textures with shader files has a basic understanding of wave forms and knows about mixing colored light (high school physics sort of stuff).  If not, there are some concepts you need to have a grasp on to make shaders work for you.&lt;br /&gt;
&lt;br /&gt;
== 2.4.1          Surface Effects vs. Content Effects vs. Deformation Effects ==&lt;br /&gt;
Shaders not only modify the visible aspect of textures on a geometry brush, curve, patch or mesh model, but they can also have an effect on both the content, “shape,” and apparent movement of those things.  A surface effect does nothing to modify the shape or content of the brush.  Surface effects include glows, transparencies and rgb (red, green, blue) value changes. Content shaders affect the way the brush operates in the game world. Examples include water, fog, nonsolid, and structural.  Deformation effects change the actual shape of the affected brush or curve, and may make it appear to move.&lt;br /&gt;
&lt;br /&gt;
== 2.4.2          Power Has a Price ==&lt;br /&gt;
The shader script gives the designer, artist and programmer a great deal of easily accessible power over the appearance of and potential special effects that may be applied to surfaces in the game world.  But it is power that comes with a price tag attached, and the cost is measured in performance speed.  Each shader phase that affects the appearance of a texture causes the ''Q3:A'' engine to make another processing pass and redraw the world.  Think of it as if you were adding all the shader-affected triangles to the total r_speed count for each stage in the shader script. A shader-manipulated texture that is seen through another shader manipulated texture (e.g.; a light in fog) has the effect of ''adding'' the total number of passes together for the affected triangles.  A light that required two passes seen through a fog that requires one pass will be treated as having to redraw that part of the world three times.&lt;br /&gt;
&lt;br /&gt;
== 2.4.3          RGB Color ==&lt;br /&gt;
RGB means “Red, Green, Blue.” Mixing red, green and blue light in differing intensities creates the colors in computers and television monitors.  This is called ''additive color'' (as opposed to the mixing of pigments in paint or colored ink in the printing process, which is subtractive color).  In ''Quake III Arena'' and most higher-end computer art programs (and the color selector in Windows), the intensities of the individual Red, Green and Blue components are expressed as number values. When mixed together on a screen, number values of equal intensity in each component color create a completely neutral (gray) color.  The lower the number value (towards 0), the darker the shade.  The higher the value, the lighter the shade or the more saturated the color until it reaches a maximum value of 255 (in the art programs).  All colors possible on the computer can be expressed as a formula of three numbers. The value for complete black is 0 0 0. The value for complete white is 255 255 255. However, the ''Quake III Arena'' graphics engine requires that the color range be  “normalized” into a range between 0.0 and 1.0.&lt;br /&gt;
&lt;br /&gt;
== 2.4.4          Normalization: a Scale of 0 to 1 ==&lt;br /&gt;
The mathematics in ''Quake III Arena'' use a scale of 0.0 to 1.0 instead of 0 to 255. Most computer art programs that can express RGB values as numbers use the 0 to 255 scale.  To convert numbers, divide each of the art program’s values for the component colors by 255.  The resulting three values are your ''Quake III Arena'' formula for that color component.  The same holds true for texture coordinates.&lt;br /&gt;
&lt;br /&gt;
== 2.4.5          Texture Sizes ==&lt;br /&gt;
TGA texture files are measured in pixels (picture elements).  Textures are measured in powers of 2, with 16 x16 pixels being the smallest (typically) texture in use.  Most will be larger. Textures need not be square, so long as both dimensions are powers of 2. Examples include: 32x256, 16x32, 128x16.&lt;br /&gt;
&lt;br /&gt;
== 2.4.6          Color Math ==&lt;br /&gt;
In ''Quake III Arena'' , colors are changed by mathematical equations worked on the textures by way of the scripts or “programlets”  in the shader file.  An equation that adds to or multiplies the number values in a texture causes it to become darker.  Equations that subtract from or modulate number values in a texture cause it to become lighter.  Either equation can change the hue and saturation of a color.&lt;br /&gt;
&lt;br /&gt;
== 2.4.7          Measurements ==&lt;br /&gt;
The measurements used in the shaders are in either game units, color units, or texture units.&lt;br /&gt;
&lt;br /&gt;
 ·          '''Game unit:''' A game unit is used by deformations to specify sizes relative to the world.  Game units are the same scale we have had since way back in the ''Wolfenstein'' days – 8 units equals one foot. The default texture scale used by the [[Q3Radiant]] map editor results in two texels for each game unit, but that can be freely changed.&lt;br /&gt;
&lt;br /&gt;
 ·         '''Color units''': Colors scale the values generated by the texture units to produce lighting effects.  A value of 0.0 will be completely black, and a value of 1.0 will leave the texture unchanged. Colors are sometimes specified with a single value to be used across all red, green, and blue channels, or sometimes as separate values for each channel.&lt;br /&gt;
&lt;br /&gt;
 ·         '''Texture units:''' This is the normalized (see above) dimensions of the original texture image  (or a previously modified texture at a given stage in the shader pipeline).  A full texture, regardless of its original size in texels, has a normalized measurement of 1.0 x 1.0.  For normal repeating textures, it is possible to have value greater than 1.0 or less than 0.0, resulting in repeating of the texture.  The coordinates are usually assigned by the level editor or modeling tools, but you still need to be aware of this for scrolling or turbulent movement of the texture at runtime.&lt;br /&gt;
&lt;br /&gt;
== 2.4.8           Waveform Functions ==&lt;br /&gt;
Many of the shader functions use waveforms to modulate measurements over time.  Where appropriate, additional information is provided with wave modulated keyword functions to describe the effect of a particular waveform on that process. Currently there are five waveforms in use in ''Q3A'' shaders:&lt;br /&gt;
&lt;br /&gt;
'''Sin''': Sin stands for sine wave, a regular smoothly flowing wave ranging from –1 to 1.&lt;br /&gt;
&lt;br /&gt;
'''Triangle:''' Triangle is a wave with a sharp ascent and a sharp decay, ranging from 0 to 1. It will make a choppy looking wave forms.&lt;br /&gt;
&lt;br /&gt;
'''Square''': A square wave simply switches from –1 to 1 with no in-between.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' In the sawtooth wave, the ascent is like a triangle wave from 0 to 1, but the decay cuts off sharply back to 0.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth:''' This is the reverse of the sawtooth … instant ascent to the peak value (1), then a triangle wave descent to the valley value (0).  The phase on this goes from 1.0 to 0.0 instead of 0.0 to 1.0.  This wave is particularly useful for additive cross-fades.&lt;br /&gt;
&lt;br /&gt;
'''Waveforms all have the following properties''':&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Where the wave form begins. Amplitude is measured from this base value.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' This is the height of the wave created, measured from the base'''.''' You will probably need to test and tweak this value to get it correct for each new shader stage. The greater the amplitude, the higher the wave peaks and the deeper the valleys.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' This is a normalized value between 0.0 and 1.0.  Changing phase to a non-zero value affects the point on the wave at which the wave form initially begins to be plotted. Example: In  Sin or Triangle wave, a phase of 0.25 means it begins one fourth (25%) of the way along the curve, or more simply put, it begins at the peak of the wave.  A phase of 0.5 would begin at the point the wave re-crosses the base line.  A phase of 0.75 would be at the lowest point of the valley.  If only one wave form is being used in a shader, a phase shift will probably not be noticed and phase should have a value of zero (0).  However, including two or more stages of the same process in a single shader, but with the phases shifted can be used to create interesting visual effects.   Example:  using rgbGen in two stages with different colors and a 0.5 difference in phase would cause the manipulated texture to modulate between two distinct colors.   Phase changes can also be used when you have two uses of the same effect near each other, and you don’t want them to be synchronized. You would write a separate shader for each, changing only the phase value.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;''' Frequency. This value is expressed as repetitions or cycles of the wave per second.  A value of 1 would cycle once per second.  A value of 10 would cycle 10 times per second.  A value of 0.1 would cycle once every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
 3         General Shader Keywords&lt;br /&gt;
'''IMPORTANT NOTE:''' Once again, be aware that some of the shader commands may be order dependent, so it’s good practice to place all global shader commands (keywords defined in this section) at the very beginning of the shader and to place shader stages at the end (see various examples).&lt;br /&gt;
&lt;br /&gt;
These Keywords are global to a shader and affect all stages.  They are also ignored by Q3MAP.&lt;br /&gt;
&lt;br /&gt;
= 3.1        skyParms &amp;lt;farbox&amp;gt; &amp;lt;cloudheight&amp;gt; &amp;lt;nearbox&amp;gt; =&lt;br /&gt;
Specifies how to use the surface as a sky, including an optional far box (stars, moon, etc), optional cloud layers with any shader attributes, and an optional near box (mountains in front of the clouds, etc).&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;Farbox&amp;gt;''' Specifies a set of files to use as an environment box behind all cloud layers.  Specify “-“ for no farbox, or a file base name.  A base name of  “env/test” would look for files “env/test_rt.tga”, “env/test_lf.tga”, “env/test_ft.tga”, “env/test_bk.tga”, “env/test_up.tga”, “env/test_dn.tga” to use as the right / left / front / back / up / down sides.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;cloudheight&amp;gt;''' controls apparent curvature of the cloud layers – lower numbers mean more curvature (and thus more distortion at the horizons).  Higher height values create “flatter” skies with less horizon distortion.  Think of height as the radius of a sphere on which the clouds are mapped. Good ranges are 64 to 256.  The default value is 128.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nearbox&amp;gt;'''   Specified as farbox, to be alpha blended on top of the clouds.  This has not been tested in a long time, so it probably doesn’t actually work.  Set to “-“ to ignore.&lt;br /&gt;
&lt;br /&gt;
Design Notes:&lt;br /&gt;
&lt;br /&gt;
 ·         If you are making a map where the sky is seen by looking up most of the time, use a lower cloudheight value.  Under those circumstances the tighter curve looks more dynamic. If you are making a map where the sky is seen by looking out windows most of the time or has a map area that is open to the sky on one or more sides, use a higher height to make the clouds seem more natural.&lt;br /&gt;
&lt;br /&gt;
 ·         It is possible to create a sky with up to 8 cloud layers, but that also means 8 processing passes and a potentially large processing hit.&lt;br /&gt;
&lt;br /&gt;
 ·          Be aware that the skybox does not wrap around the entire world. The “floor” or bottom face of the skybox is not drawn by the game. If a player in the game can see that face, they will see the “hall of mirrors” effect.&lt;br /&gt;
&lt;br /&gt;
 '''Example: Sky script'''&lt;br /&gt;
&lt;br /&gt;
 textures/skies/xtoxicsky_dm9&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       qer_editorimage textures/skies/toxicsky.tga&lt;br /&gt;
&lt;br /&gt;
       surfaceparm noimpact&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
 q3map_globaltexture&lt;br /&gt;
&lt;br /&gt;
 q3map_lightsubdivide 256&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 400&lt;br /&gt;
&lt;br /&gt;
       surfaceparm sky&lt;br /&gt;
&lt;br /&gt;
       q3map_sun   1 1 0.5 150 30 60&lt;br /&gt;
&lt;br /&gt;
       skyparms full 512 -&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/skies/inteldimclouds.tga&lt;br /&gt;
&lt;br /&gt;
             tcMod scroll 0.1 0.1&lt;br /&gt;
&lt;br /&gt;
              tcMod scale 3 2&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/skies/intelredclouds.tga&lt;br /&gt;
&lt;br /&gt;
              blendFunc add&lt;br /&gt;
&lt;br /&gt;
             tcMod scroll 0.05 0.05&lt;br /&gt;
&lt;br /&gt;
             tcMod scale 3 3&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 3.2        cull &amp;lt;side&amp;gt; =&lt;br /&gt;
Every surface of a polygon has two sides, a front and a back.  Typically, we only see the front or “out” side. For example, a solid block you only show the front side.  In many applications we see both. For example, in water, you can see both front and a back. The same is true for things like grates and screens.&lt;br /&gt;
&lt;br /&gt;
To “cull” means to remove. The value parameter determines the type of face culling to apply.  The default value is cull ''front'' if this keyword is not specified.  However for items that should be inverted then the value ''back'' should be used.  To disable culling, the value  ''disable'' or ''none'' should be used. Only one cull instruction can be set for the shader.&lt;br /&gt;
&lt;br /&gt;
== 3.2.1          cull front ==&lt;br /&gt;
The front or “outside” of the polygon is not drawn in the world.  This is the default value.  It is used if the keyword “'''cull'''” appears in the content instructions without a '''&amp;lt;side&amp;gt;''' value or if the keyword cull does not appear at all in the shader.&lt;br /&gt;
&lt;br /&gt;
== 3.2.2          cull back ==&lt;br /&gt;
Cull back removes the back or “inside” of a polygon from being drawn in the world.&lt;br /&gt;
&lt;br /&gt;
== 3.2.3          cull disable, cull none ==&lt;br /&gt;
Neither side of the polygon is removed.  Both sides are drawn in the game. Very useful for making panels or barriers that have no depth, such as grates, screens, metal wire fences and so on and for liquid volumes that the player can see from within.  Also used for energy fields, sprites, and weapon effects (e.g.; plasma).&lt;br /&gt;
&lt;br /&gt;
Design Notes: For things like grates and screens, put the texture with the cull none property on one face only. On the other faces, use a non-drawing texture.&lt;br /&gt;
&lt;br /&gt;
= 3.3        deformVertexes =&lt;br /&gt;
This function performs a general deformation on the surface’s vertexes, changing the actual shape of the surface before drawing the shader passes.  You can stack multiple deformVertexes commands to modify positions in more complex ways, making an object move in two dimensions, for instance.&lt;br /&gt;
&lt;br /&gt;
== 3.3.1          deformVertexes wave &amp;lt;div&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt;  &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Designed for water surfaces, modifying the values differently at each point.  It accepts the standard wave functions of the type '''sin''', '''triangle''', '''square, sawtooth''' or '''inversesawtooth'''.  The “div” parameter is used to control the wave “spread” – a value equal to the tessSize of the surface is a good default value (tessSize is subdivision size, in game units, used for the shader when seen in the game world) .&lt;br /&gt;
&lt;br /&gt;
== 3.3.2          deformVertexes normal &amp;lt;div&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude ~0.1-~0.5&amp;gt; &amp;lt;frequency ~1.0-~4.0&amp;gt; ==&lt;br /&gt;
This deformation affects the normals of a vertex without actually moving it, which will effect later shader options like lighting and especially environment mapping.  If the shader stages don’t use normals in any of their calculations, there will be no visible effect.&lt;br /&gt;
&lt;br /&gt;
Design Notes:  Putting values of  0.1 t o 0.5 in Amplitude and 1.0 to 4.0 in the Frequency can produce some satisfying results.  Some things that have been done with it:  A small fluttering bat, falling leaves, rain, flags.&lt;br /&gt;
&lt;br /&gt;
== 3.3.3          deformVertexes bulge &amp;lt;bulgeWidth&amp;gt;  &amp;lt;bulgeHeight&amp;gt; &amp;lt;bulgeSpeed&amp;gt; ==&lt;br /&gt;
This forces a bulge to move along the given '''s''' and '''t''' directions.  Designed for use on curved pipes.&lt;br /&gt;
&lt;br /&gt;
'''Specific parameter definitions for deform keywords:'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;div&amp;gt; ''' This is roughly defined as the size of the waves that occur. It is measured in game units. Smaller values create a greater density of smaller wave forms occurring in a given area.  Larger values create a lesser density of waves, or otherwise put, the appearance of larger waves.  To look correct this value should closely correspond to the value (in pixels) set for tessSize (tessellation size) of the texture.  A value of 100.0 is a good default value (which means your tessSize should be close to that for things to look “wavelike”).&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;func&amp;gt;''' This is the type of wave form being created.  Sin stands for sine wave, a regular smoothly flowing wave.  Triangle is a wave with a sharp ascent and a sharp decay. It will make a choppy looking wave forms.  A square wave is simply on or off for the period of the frequency with no in between. The sawtooth wave has the ascent of a triangle wave, but has the decay cut off sharply like a square wave.  An inversesawtooth wave reverses this.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;'''  This is the distance, in game units that the apparent surface of the texture is displaced from the actual surface of the brush as placed in the editor.  A positive value appears above the brush surface. A negative value appears below the brush surface.  An example of this is the Quad effect, which essentially is a shell with a positive base value to stand it away from the model surface and a 0 (zero) value for amplitude.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' The distance that the deformation moves away from the base value.  See Wave Forms in the introduction for a description of amplitude.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See Wave Forms in the introduction for a description of phase)&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;frequency&amp;gt;''' See Wave Forms in the introduction for a description of frequency)&lt;br /&gt;
&lt;br /&gt;
Design Note:  The div and amplitude parameters, when used in conjunction with liquid volumes like water should take into consideration how much the water will be moving.  A large ocean area would have have massive swells (big div values) that rose and fell dramatically (big amplitude values). While a small, quiet pool may move very little.&lt;br /&gt;
&lt;br /&gt;
== 3.3.4          deformVertexes move &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt;  &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
This keyword is used to make a brush, curve patch or md3 model appear to move together as a unit.  The &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; and &amp;lt;z&amp;gt; values are the distance and direction in game units the object appears to move relative to it’s point of origin in the map.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; and &amp;lt;freq&amp;gt; values are the same as found in other wave form manipulations.&lt;br /&gt;
&lt;br /&gt;
The product of the function modifies the values x, y, and z. Therefore, if you have an amplitude of 5 and an x value of 2, the object will travel 10 units from its point of origin along the x axis. This results in a total of 20 units of motion along the x axis, since the amplitude is the variation both above and below the base.&lt;br /&gt;
&lt;br /&gt;
It must be noted that an object made with this shader does not actually change position, it only appears to.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:'''  If an object is made up of surfaces with different shaders, all must have matching deformVertexes move values or the object will appear to tear itself apart.&lt;br /&gt;
&lt;br /&gt;
== 3.3.5          [[DeformVertexes]] autosprite ==&lt;br /&gt;
This function can be used to make any given triangle quad (pair of triangles that form a square rectangle) automatically behave like a sprite without having to make it a separate entity.  This means that the “sprite” on which the texture is placed will rotate to always appear at right angles to the player’s view as a sprite would. Any four-sided brush side, flat patch, or pair of triangles in an .md3 model can have the '''autosprite''' effect on it.  '''The brush face containing a texture with this shader keyword must be square.'''&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This is best used on objects that would appear the same regardless of viewing angle.  An example might be a glowing light flare.&lt;br /&gt;
&lt;br /&gt;
== 3.3.6          [[DeformVertexes]] autosprite2 ==&lt;br /&gt;
Is a slightly modified “sprite” that only rotates around the middle of its longest axis.  This allows you to make a pillar of fire that you can walk around, or an energy beam stretched across the room.&lt;br /&gt;
&lt;br /&gt;
= 3.4         fogparms &amp;lt;red value&amp;gt; &amp;lt;green value&amp;gt; &amp;lt;blue value&amp;gt; &amp;lt;distance to Opaque&amp;gt; =&lt;br /&gt;
Note: you must also specify “surfaceparm fog” to cause q3map to identify the surfaces inside the volume.  Fogparms only describes how to render the fog on the surfaces.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;red value&amp;gt; &amp;lt;green value&amp;gt; &amp;lt;blue value&amp;gt;''' These are normalized values. A good computer art program should give you the RGB values for a color. To obtain the values that define fog color for Quake III Arena , divide the desired color’s Red, Green and Blue values by 255 to obtain three normalized numbers within the 0.0 to 1.0 range.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;distance to opaque&amp;gt;''' This is the distance, in  game units, until the fog becomes totally opaque, as measured from the point of view of the observer.  By making the height of the fog brush shorter than the distance to opaque ,  the apparent density of the fog can be reduced (because it never reaches the depth at which full opacity occurs)..&lt;br /&gt;
&lt;br /&gt;
 ·         The fog volume can only have one surface visible (from outside the fog).&lt;br /&gt;
&lt;br /&gt;
 ·         Fog must be made of one brush. It cannot be made of adjacent brushes.&lt;br /&gt;
&lt;br /&gt;
 ·         Fog brushes must be axial.  This means that only square or rectangular brushes may contain fog, and those must have their edges drawn along the axes of the map grid (all 90 degree angles).&lt;br /&gt;
&lt;br /&gt;
 ·&lt;br /&gt;
&lt;br /&gt;
'''Design Notes: '''&lt;br /&gt;
&lt;br /&gt;
 ·         If a water texture contains a fog parameter, it must be treated as if it were a fog texture when in use.&lt;br /&gt;
&lt;br /&gt;
 ·         If a room is to be filled completely with a fog volume, it can only be entered through one surface (and still have the fog function correctly).&lt;br /&gt;
&lt;br /&gt;
  ·         Additional shader passes may be placed on a fog brush, as with other brushes.&lt;br /&gt;
&lt;br /&gt;
= 3.5        nopicmip =&lt;br /&gt;
This causes the texture to ignore user-set values for the  '''r_picmip''' cvar command.  The image will always be high resolution.  Example:  Used to keep images and text in the heads up display from blurring when user optimizes the game graphics.&lt;br /&gt;
&lt;br /&gt;
= 3.6        nomipmap: =&lt;br /&gt;
This implies nopicmip, but also prevents the generation of any lower resolution mipmaps for use by the 3d card.  This will cause the texture to alias when it gets smaller, but there are some cases where you would rather have this than a blurry image.  Sometimes thin slivers of triangles force things to very low mipmap levels, which leave a few constant pixels on otherwise scrolling special effects.&lt;br /&gt;
&lt;br /&gt;
= 3.7        polygonOffset =&lt;br /&gt;
Surfaces rendered with the '''polygonOffset''' keyword are rendered slightly off the polygon’s surface.  This is typically used for wall markings and “decals.” The distance between the offset and the polygon is fixed.  It is not a variable in Quake III Arena.&lt;br /&gt;
&lt;br /&gt;
= 3.8        portal =&lt;br /&gt;
Specifies that this texture is the surface for a portal or mirror.  In the game map, a portal entity must be placed directly in front of the texture (within 64 game units).  All this does is set “sort portal”, so it isn’t needed if you specify that explicitly.&lt;br /&gt;
&lt;br /&gt;
= 3.9        sort &amp;lt;value&amp;gt; =&lt;br /&gt;
Use this keyword to fine-tune the depth sorting of shaders as they are compared against other shaders in the game world. The basic concept is that if there is a question or a problem with shaders drawing in the wrong order against each other, this allows the designer to create a hierarchy of which shader draws in what order.&lt;br /&gt;
&lt;br /&gt;
The default behavior is to put all blended shaders in sort “additive” and all other shaders in sort “opaque”, so you only need to specify this when you are trying to work around a sorting problem with multiple transparent surfaces in a scene.&lt;br /&gt;
&lt;br /&gt;
The value here can be either a numerical value or one of the keywords in the following list (listed in order of ascending priority):&lt;br /&gt;
&lt;br /&gt;
'''portal (1):''' This surface is a portal, it draws over every other shader seen inside the portal, but before anything in the main view.&lt;br /&gt;
&lt;br /&gt;
'''Sky (2):''' Typically, the sky is the farthest surface in the game world.  Drawing this after other opaque surfaces can be an optimization on some cards.  This currently has the wrong value for this purpose, so it doesn’t do much of anything.&lt;br /&gt;
&lt;br /&gt;
'''Opaque (3):''' This surface is opaque (rarely needed since this is the default with no blendfunc)&lt;br /&gt;
&lt;br /&gt;
'''Banner (6) :''' Transparent, but very close to walls.&lt;br /&gt;
&lt;br /&gt;
'''Underwater (8):''' Draw behind normal transparent surfaces.&lt;br /&gt;
&lt;br /&gt;
'''Additive (9):'''  normal transparent surface (default for shaders with blendfuncs)&lt;br /&gt;
&lt;br /&gt;
'''nearest (16):''' this shader should always sort closest to the viewer, e.g. muzzle flashes and blend blobs&lt;br /&gt;
&lt;br /&gt;
 4         Q3MAP Specific Shader Keywords&lt;br /&gt;
These keywords change the physical nature of the textures and the brushes that are marked with them. Changing any of these values will require the map to be re-compiled. These are global and affect the entire shader.&lt;br /&gt;
&lt;br /&gt;
= 4.1        tessSize &amp;lt;amount&amp;gt; =&lt;br /&gt;
For consistency’s sake, this really should have been called q3map_tessSize. But it wasn’t. The tessSize shader controls the tessellation size (how finely a surface is chopped up in to triangles), in game units, of the surface.  This is only applicable to solid brushes, not curves, and is generally only used on surfaces that are flagged with the '''deformVertexes''' keyword.  Abuse of this can create a huge number of triangles.  This happens during q3map processing, so maps must be reprocessed for changes to take effect.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' It can also be used on tesselating surfaces to make sure that tesselations are large, and thus, less costly in terms of triangles created.&lt;br /&gt;
&lt;br /&gt;
= 4.2        q3map_backshader &amp;lt;shadername&amp;gt; =&lt;br /&gt;
This allows a brush to use a different shader when you are inside it looking out. By way of example, this would allow a water brush (or other) surfaces to have a different sort order (see '''''sort''''' above) or appearance when seen from the inside.&lt;br /&gt;
&lt;br /&gt;
= 4.3         q3map_globaltexture =&lt;br /&gt;
Use this shader in the global keyword commands whenever the '''tcMod scale''' function is used in one of the later render stages. Many problems with getting shader effects to work across multiple adjacent brushes are a result of the way q3map optimizes texture precision. This option resolves that, but at the expense of some precision of the textures when they are far away from the origin of the map.&lt;br /&gt;
&lt;br /&gt;
= 4.4        q3map_sun &amp;lt;red&amp;gt; &amp;lt;green&amp;gt; &amp;lt;blue&amp;gt; &amp;lt;intensity&amp;gt; &amp;lt;degrees&amp;gt; &amp;lt;elevation&amp;gt; =&lt;br /&gt;
This keyword in a sky shader will create the illusion of light cast into a map by a single, infinitely distance light source (sun, moon, hellish fire, etc.).  This is only processed during the lighting phase of q3map.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;red&amp;gt; &amp;lt;green&amp;gt; &amp;lt;blue&amp;gt;''' Color is described by three normalized rgb values.  Color will be normalized to a 0.0 to 1.0 range, so it doesn’t matter what range you use.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;intensity&amp;gt;''' is the brightness of the generated light.  A value of 100 is a fairly bright sun.  The intensity of the light falls off with angle but not distance.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;degrees&amp;gt;''' is the angle relative to the directions on the map file.  A setting of 0 degrees equals east. 90 is north, 180 is west and 270 is south.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;elevation&amp;gt;''' is the distance, measured in degrees from the horizon (z value of zero in the map file).  An elevation of 0 is sunrise/sunset. An elevation of 90 is noon&lt;br /&gt;
&lt;br /&gt;
'''DESIGN NOTE: ''' Sky shaders should probably still have a '''q3map_surfacelight''' value.  The “sun” gives a strong directional light, but doesn’t necessarily give the fill light needed to soften and illuminate shadows.  Skies with clouds should probably have a weaker '''q3map_sun''' value and a higher  '''q3map_surfacelight''' value.  Heavy clouds diffuse light and weaken shadows.  The opposite is true of a cloudless or nearly cloudless sky.  In such cases, the “sun” or “moon” will cast stronger, shadows that have a greater degree of contrast.&lt;br /&gt;
&lt;br /&gt;
'''Design Trick:''' Not certain what color formula you want to use for the sun’s light? Try this. Create a light entity.  Use the [[Q3Radiant]] editor’s color selection tools to pick a color.  The light’s _color key’s value will be the normalized RGB formula. Copy it from the value line in the editor (CTRL+c) and paste it into your shader.&lt;br /&gt;
&lt;br /&gt;
= 4.5        q3map_surfaceLight &amp;lt;light value&amp;gt; =&lt;br /&gt;
The texture gives off light equal to the '''&amp;lt;light value&amp;gt;''' set for it.  The relative surface area of the texture in the world affects the actual amount of light that appears to be radiated.  To give off what appears to be the same amount of light, a smaller texture must be significantly brighter than a larger texture. Unless the qer_lightimage keyword is used to select a different source for the texture’s light color information, the color of the light will be the averaged color of the texture.&lt;br /&gt;
&lt;br /&gt;
= 4.6         q3map_lightimage &amp;lt; texturepath/texturename&amp;gt; =&lt;br /&gt;
The keyword '''q3map_lightimage''' generates lighting from the average color of the TGA image specified by the  q3map_lightimage.&lt;br /&gt;
&lt;br /&gt;
The keyword sequence for generating light on a '''q3map_surfacelight''' should be ordered as follows:&lt;br /&gt;
&lt;br /&gt;
1) '''q3map_lightimage''' ; (the texture providing the light and the color of the light)&lt;br /&gt;
&lt;br /&gt;
2) '''qer_editorimage''' ; (the editor-only image used to select the source map for the texture)&lt;br /&gt;
&lt;br /&gt;
3) the average color of the light emitted from the shader is calculated from the '''lightimage.''')&lt;br /&gt;
&lt;br /&gt;
The reason '''q3map_lightimage''' is specified for the light in the example below, is because the blend map is predominantly yellow, and the designer wanted more yellow light to be emitted from the light.&lt;br /&gt;
&lt;br /&gt;
'''Example: Taking light from another source texture'''&lt;br /&gt;
&lt;br /&gt;
 textures/eerie/ironcrosslt2_10000&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 q3map_lightimage textures/gothic_light/ironcrosslt2.blend.tga&lt;br /&gt;
&lt;br /&gt;
 // this TGA is the source for the color of the blended light&lt;br /&gt;
&lt;br /&gt;
  qer_editorimage textures/gothic_light/ironcrosslt2.tga&lt;br /&gt;
&lt;br /&gt;
 //base TGA (used because the shader is used with several&lt;br /&gt;
&lt;br /&gt;
 // different light values&lt;br /&gt;
&lt;br /&gt;
 q3map_surfacelight 10000&lt;br /&gt;
&lt;br /&gt;
 //emitted light value of 10,000&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map $lightmap&lt;br /&gt;
&lt;br /&gt;
 //source texture is affected by the lightmap&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 // this command handles the overbright bits created by “sunlight”&lt;br /&gt;
&lt;br /&gt;
 // in the game&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/gothic_light/ironcrosslt2.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc filter&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/gothic_light/ironcrosslt2.blend.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc add&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 4.7        q3map_lightsubdivide &amp;lt;value&amp;gt; =&lt;br /&gt;
This allows the user to define how large, or small to make the subdivisions (triangles) in a textured surface, particularly aimed at light-emitting textures like skies.  It defaults to 120 game units, but can be made larger (256 or 512) for sky boxes or smaller for light surfaces at the bottoms of cracks.  This can be a dominant factor in processing time for q3map lighting.&lt;br /&gt;
&lt;br /&gt;
= 4.8        surfaceparm &amp;lt;parm&amp;gt; =&lt;br /&gt;
All surfaceparm keywords are preceded by the word surfaceparm as follows: '''surfaceparm fog''' or '''surfaceparm noimpact.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.1          alphashadow ==&lt;br /&gt;
This keyword applied to a texture on a brush, patch or model will cause the lighting phase of the q3map process to use the texture’s alpha channel as a mask for casting static shadows in the game world.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' Alphashadow does not work well with fine line detail on a texture.  Fine lines may not cast acceptable shadows.  It appears to work best with well-defined silhouettes and wider lines within the texture.  Most of our tattered banners use this to cast tattered shadows.&lt;br /&gt;
&lt;br /&gt;
== 4.8.2          areaportal ==&lt;br /&gt;
A brush marked with this keyword functions as an area portal, a break in the Q3MAP tree.  It is typically placed on a very thin brush placed inside a door entity (but is not a part of that entity).  The intent is to block the game from processing surface triangles located behind it when the door is closed.  It is also used by the BSPC (bot area file creation compiler) in the same manner as a cluster portal. The brush must touch all the structural brushes surrounding the '''areaportal.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.3          clusterportal ==&lt;br /&gt;
A brush marked with this keyword function creates a subdivision of the area file (.aas) used by the bots for navigation. It is typically placed in locations that are natural breaks in a map, such as entrances to halls, doors, tunnels, etc. The intent is keep the bot from having to process the entire map at once. As with the the areaportal parameter, the affected brush must touch all the structural brushes surrounding the '''areaportal.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.4          donotenter ==&lt;br /&gt;
Read as “do not enter.” Like clusterportal, this is a bot-only property. A brush marked with donotenter will not affect non-bot players, but bots will not enter it.  It should be used only when bots appear to have difficulty navigating around some map features.&lt;br /&gt;
&lt;br /&gt;
== 4.8.5          flesh ==&lt;br /&gt;
This will cue different sounds (in a similar manner to metalsteps ) and cause blood to appear instead of bullet impact flashes.&lt;br /&gt;
&lt;br /&gt;
== 4.8.6          fog ==&lt;br /&gt;
Fog defines the brush as being a “fog” brush.  This is a Q3MAP function that chops and identifies all geometry inside the brush. The General shader keyword fogparms must also be specified to tell how to draw the fog.&lt;br /&gt;
&lt;br /&gt;
== 4.8.7          lava ==&lt;br /&gt;
Assigns to the texture the game properties set for lava.  This affects both the surface and the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.8          metalsteps ==&lt;br /&gt;
The player sounds as if he is walking on clanging metal steps or gratings. Other than specifiying '''flesh''', '''metalsteps''', '''nosteps''', or default (i.e.; specify nothing) it is currently not possible for a designer to create or assign a specific sound routine to a texture.  Note: If no sound is set for a texture, then the default footsteps sound routines are heard.&lt;br /&gt;
&lt;br /&gt;
== 4.8.9          nodamage ==&lt;br /&gt;
The player takes no damage if he falls onto a texture with this surfaceparm&lt;br /&gt;
&lt;br /&gt;
== 4.8.10      nodlight ==&lt;br /&gt;
Read as “No ''Dee'' Light”. A texture containing this parameter will not be affected or lit by dynamic lights, such as weapon effects.  And example in ''Quake III Arena''  would be solid lava.&lt;br /&gt;
&lt;br /&gt;
== 4.8.11      nodraw ==&lt;br /&gt;
A texture marked with nodraw will not visually appear in the game world.  Most often used for triggers, clip brushes, origin brushes, and so on.&lt;br /&gt;
&lt;br /&gt;
== 4.8.12      nodrop ==&lt;br /&gt;
When a player dies inside a volume (brush) marked nodrop, no weapon is dropped.  The intend use is for “Pits of Death.”  Have a kill trigger inside a nodrop volume, and when the players die here, they won't drop their weapons. The intent is to prevent unnecessary polygon pileups on the floors of pits.&lt;br /&gt;
&lt;br /&gt;
== 4.8.13      noimpact ==&lt;br /&gt;
World entities will not impact on this texture.  No explosions occur when projectiles strike this surface and no marks will be left on it. Sky textures are usually marked with this texture so those projectiles will not hit the sky and leave marks.&lt;br /&gt;
&lt;br /&gt;
== 4.8.14      nomarks ==&lt;br /&gt;
Projectiles will explode upon contact with this surface, but will not leave marks.  Blood will also not mark this surface.  This is useful to keep lights from being temporarily obscured by battle damage.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' Use this on any surface with a deformVertexes keyword.  Otherwise, the marks will appear on the unmodified surface location of the texture with the surface wriggles and squirms through the marks.&lt;br /&gt;
&lt;br /&gt;
== 4.8.15      nolightmap ==&lt;br /&gt;
This texture does not have a lightmap phase.  It is not affected by the ambient lighting of the world around it. It does not require the addition of an rgbGen identity keyword in that stage.&lt;br /&gt;
&lt;br /&gt;
== 4.8.16      nosteps ==&lt;br /&gt;
The player makes no sound when walking on this texture.&lt;br /&gt;
&lt;br /&gt;
== 4.8.17      nonsolid ==&lt;br /&gt;
This attribute indicates a brush, which does not block the movement of entities in the game world.  It applied to triggers, hint brushes and similar brushes.  This affects the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.18      origin ==&lt;br /&gt;
Used on the “origin”  texture.  Rotating entities need to contain an origin brush in their construction. The brush must be rectangular (or square).  The origin point is the exact center of the origin brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.19      playerclip ==&lt;br /&gt;
Blocks player movement through a '''nonsolid''' texture.  Other game world entities can pass through a brush marked '''playerclip'''. The intended use for this is to block the player but not block projectiles like rockets.&lt;br /&gt;
&lt;br /&gt;
== 4.8.20      slick ==&lt;br /&gt;
This surfaceparm included in a texture should give it significantly reduced friction.&lt;br /&gt;
&lt;br /&gt;
== 4.8.21      slime ==&lt;br /&gt;
Assigns to the texture the game properties for slime. This affects both the surface and the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.22      structural ==&lt;br /&gt;
This surface attribute causes a brush to be seen by the Q3MAP process as a possible break-point in a BSP tree.  It is used as a part of the shader for the “hint” texture.  Generally speaking, any opaque texture not marked as “'''detail'''” is by default,  '''structural,''' so you shouldn’t need to specify this.&lt;br /&gt;
&lt;br /&gt;
== 4.8.23      trans ==&lt;br /&gt;
Tells q3map that pre-computed visibility should not be blocked by this surface.  Generally, any shaders that have blendfuncs should be marked as surfaceparm trans.&lt;br /&gt;
&lt;br /&gt;
== 4.8.24      water ==&lt;br /&gt;
Assigns to the texture the game properties for water.&lt;br /&gt;
&lt;br /&gt;
 5         Editor specific shader instructions&lt;br /&gt;
These instructions only affect the texture when it is seen in the [[Q3Radiant]] editor.  They should be grouped with the surface parameters but ahead of them in sequence.&lt;br /&gt;
&lt;br /&gt;
= 5.1        qer_editorimage &amp;lt; texture path/texturename&amp;gt; =&lt;br /&gt;
This keyword creates a shader name in memory, but in the editor, it displays the TGA art image specified in qer_editorimage (in the example below this is textures/eerie/lavahell.tga).&lt;br /&gt;
&lt;br /&gt;
The editor maps a texture using the size attributes of the TGA file used for the editor image. When that editor image represents a shader, any texture used in any of the shader stages will be scaled up or down to the dimensions of the editor image. If a 128x128 pixel image is used to represent the shader in the editor, then a 256x256 image used in a later stage will be shrunk to fit.  A 64x64 image would be stretched to fit. Be sure to check this on bouncy, acceleration, and power-up pads placed on surfaces other than 256 x 256. Use '''tcMod scale''' to change the size of the stretched texture. Remember that '''tcMod scale''' 0.5 0.5 will double your image, while '''tcMod scale''' 2 2 will halve it.&lt;br /&gt;
&lt;br /&gt;
'''Design Notes:'''  The base_light and gothic_light shaders contain numerous uses of this. It can be very useful for making different light styles (mostly to change the light brightnesses) without having  to create a new piece of TGA art for each new shader.&lt;br /&gt;
&lt;br /&gt;
 textures/liquids/lavahell2 //path and name of new texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 qer_editorimage textures/eerie/lavahell.tga&lt;br /&gt;
&lt;br /&gt;
 //based on this&lt;br /&gt;
&lt;br /&gt;
 qer_nocarve&lt;br /&gt;
&lt;br /&gt;
  //cannot be cut by CSG subtract&lt;br /&gt;
&lt;br /&gt;
 surfaceparm noimpact&lt;br /&gt;
&lt;br /&gt;
 //projectiles do not hit it&lt;br /&gt;
&lt;br /&gt;
 surfaceparm lava&lt;br /&gt;
&lt;br /&gt;
 //has the game properties of lava&lt;br /&gt;
&lt;br /&gt;
 surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
 //environment lighting does not affect&lt;br /&gt;
&lt;br /&gt;
 q3map_surfacelight 3000&lt;br /&gt;
&lt;br /&gt;
 //light is emitted&lt;br /&gt;
&lt;br /&gt;
 tessSize 256&lt;br /&gt;
&lt;br /&gt;
 //relatively large triangles&lt;br /&gt;
&lt;br /&gt;
 cull disable&lt;br /&gt;
&lt;br /&gt;
 //no sides are removed&lt;br /&gt;
&lt;br /&gt;
 deformVertexes wave 100 sin 5 5 .5 0.02&lt;br /&gt;
&lt;br /&gt;
 fogparms 0.8519142 0.309723 0.0 128 128&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/eerie/lavahell.tga&lt;br /&gt;
&lt;br /&gt;
 //base texture artwork&lt;br /&gt;
&lt;br /&gt;
 tcMod turb .25 0.2 1 0.02&lt;br /&gt;
&lt;br /&gt;
 //texture is subjected to turbulence&lt;br /&gt;
&lt;br /&gt;
 tcMod scroll 0.1 0.1&lt;br /&gt;
&lt;br /&gt;
 //the turbulence is scrolled&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 5.2        qer_nocarve =&lt;br /&gt;
A brush marked with this instruction will not be affected by CSG subtract functions.  It is especially useful for water and fog textures.&lt;br /&gt;
&lt;br /&gt;
= 5.3        qer_trans &amp;lt;value&amp;gt; =&lt;br /&gt;
This parameter defines the percentage of transparency that a brush will have when seen in the editor (no effect on game rendering at all).  It can have a positive value between 0 and 1.  The higher the value, the less transparent the texture. Example: qer_trans 0.2 means the brush is 20% opaque and nearly invisible.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
'''&lt;br /&gt;
 6         Stage Specific Keywords&lt;br /&gt;
Stage specifications only affect rendering.  Changing any keywords or values within a stage will usually take effect as soon as a vid_restart is executed.  Q3MAP ignores stage specific keywords entirely.&lt;br /&gt;
&lt;br /&gt;
A stage can specify a texture map, a color function, an alpha function, a texture coordinate function, a blend function, and a few other rasterization options.&lt;br /&gt;
&lt;br /&gt;
= 6.1        Texture map specification =&lt;br /&gt;
== 6.1.1          map &amp;lt;texturepath/texturename&amp;gt; ==&lt;br /&gt;
Specifies the source texture map (a 24 or 32-bit TGA file) used for this stage.  The texture may or may not contain alpha channel information.  The special keywords '''$lightmap''' and '''$whiteimage''' may be substituted in lieu of an actual texture map name. In those cases, the texture named in the first line of the shader becomes the texture that supplies the light mapping data for the process.&lt;br /&gt;
&lt;br /&gt;
== $lightmap ==&lt;br /&gt;
This is the overall lightmap for the game world.  It is calculated during the Q3MAP process.  It is the initial color data found in the framebuffer.  Note: due to the use of overbright bits in light calculation, the keyword '''rgbGen identity''' must accompany all '''$lightmap''' instructions.&lt;br /&gt;
&lt;br /&gt;
== $whiteimage ==&lt;br /&gt;
This is used for specular lighting on MD3 models. This is is a white image generated internally by the game.  This image can be used in lieu of $lightmap or an actual texture map if, for example, you wish for the vertex colors to come through unaltered.&lt;br /&gt;
&lt;br /&gt;
== 6.1.2          Clampmap &amp;lt;texturepath&amp;gt; ==&lt;br /&gt;
Dictates that this stage should clamp texture coordinates instead of wrapping them.  During a stretch function, the area, which the texture must cover during a wave cycle, enlarges and decreases.  Instead of repeating a texture multiple times during enlargement (or seeing only a portion of the texture during shrinking) the texture dimensions increase or contract accordingly. This is only relevant when using something like deformTexCoordParms to stretch/compress texture coordinates for a specific special effect.  Remember that the Quake III Arena engine normalizes all texture coordinates (regardless of actual texture size) into a scale of  0.0 to 1.0.&lt;br /&gt;
&lt;br /&gt;
'''Proper Alignment:''' When using '''clampTexCoords''' be make sure the texture is properly aligned on the brush. The '''clampTexCoords''' function keeps the image from tiling. However, the editor doesn’t represent this properly and shows a tiled image. Therefore, what appears to be the correct position may be offset. This is very apparent on anything with a '''tcMod rotate''' and '''clampTexCoords''' function.&lt;br /&gt;
&lt;br /&gt;
'''Avoiding Distortion:''' When seen at a given distance (which can vary, depending on hardware and the size of the texture), the compression phase of a stretch function will cause a “cross”-like visual artifact to form on the modified texture due to the way that textures are reduced.  This occurs because the texture undergoing modification lacks sufficient “empty space” around the displayed (non-black) part of the texture (see figure 2a). To compensate for this, make the non-zero portion of the texture substantially smaller (50% of maximum stretched size -- see figure 2b) than the dimensions of the texture.  Then, write a scaling function (tcScale) into the appropriate shader phase, to enlarge the image to the desired proportion.&lt;br /&gt;
&lt;br /&gt;
The shaders for the bouncy pads (in the sfx.shader file) show the stretch function in use, including the scaling of the stretched texture:&lt;br /&gt;
&lt;br /&gt;
  '''Example: Using clampTexCoords to control a stretching texture'''&lt;br /&gt;
&lt;br /&gt;
 textures/sfx/metalbridge06_bounce&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       //q3map_surfacelight 2000&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nodamage&lt;br /&gt;
&lt;br /&gt;
       q3map_lightimage textures/sfx/jumppadsmall.tga&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 400&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map textures/sfx/metalbridge06_bounce.tga&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map $lightmap&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_dst_color gl_zero&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/sfx/bouncepad01b_layer1.tga&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_one gl_one&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sin .5 .5 0 1.5&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
             clampmap textures/sfx/jumppadsmall.tga&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_one gl_one&lt;br /&gt;
&lt;br /&gt;
             tcMod stretch sin 1.2 .8 0 1.5&lt;br /&gt;
&lt;br /&gt;
              rgbGen wave square .5 .5 .25 1.5&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       //    END&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 6.1.3          [[AnimMap]] &amp;lt;frequency&amp;gt; &amp;lt;texture1&amp;gt; … &amp;lt;texture8&amp;gt; ==&lt;br /&gt;
The surfaces in the game can be animated by displaying a sequence of 1 to 8 frames (separate texture maps).  These animations are affected by other keyword effects in the same and later shader stages.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;Frequency&amp;gt;:''' the number of times that the animation cycle will repeat within a one second time period.   The larger the value, the more repeats within a second. Animations that should last for more than a second need to be expressed as decimal values.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;texture1&amp;gt; … &amp;lt;texture8&amp;gt;:'''  the texturepath/texture name for each animation frame must be explicitly listed. Up to eight frames (eight separate .tga files) can be used to make an animated sequence.  Each frame is displayed for an equal subdivision of the frequency value.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' ''AnimMap 0.25 animMap 10 textures/sfx/b_flame1.tga textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga'' would be a 4 frame animated sequence, calling each frame in sequence over a cycle length of 4 seconds.  Each frame would be displayed for 1 seconds before the next one is displayed. The cycle repeats after the last frame in sequence is shown.&lt;br /&gt;
&lt;br /&gt;
'''Design Notes:''' To make a texture image appear for an unequal (longer) amount of time (compared to other frames), repeat that frame more than once in the sequence.&lt;br /&gt;
&lt;br /&gt;
 textures/sfx/flameanim_blue&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
        //    *************************************************&lt;br /&gt;
&lt;br /&gt;
       //    *      Blue Flame                               *&lt;br /&gt;
&lt;br /&gt;
       //     *      July 20, 1999 Surface Light 1800         *&lt;br /&gt;
&lt;br /&gt;
       //    *     Please Comment Changes                    *&lt;br /&gt;
&lt;br /&gt;
       //    *************************************************&lt;br /&gt;
&lt;br /&gt;
       qer_editorimage textures/sfx/b_flame7.tga&lt;br /&gt;
&lt;br /&gt;
       q3map_lightimage textures/sfx/b_flame7.tga&lt;br /&gt;
&lt;br /&gt;
       surfaceparm trans&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nomarks&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
       cull none&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 1800&lt;br /&gt;
&lt;br /&gt;
        // texture changed to blue flame.... PAJ&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             animMap 10 textures/sfx/b_flame1.tga textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga textures/sfx/b_flame5.tga textures/sfx/b_flame6.tga textures/sfx/b_flame7.tga textures/sfx/b_flame8.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
              rgbGen wave inverseSawtooth 0 1 0 10&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             animMap 10 textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga textures/sfx/b_flame5.tga textures/sfx/b_flame6.tga textures/sfx/b_flame7.tga textures/sfx/b_flame8.tga textures/sfx/b_flame1.tga&lt;br /&gt;
&lt;br /&gt;
              blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sawtooth 0 1 0 10&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map textures/sfx/b_flameball.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sin .6 .2 0 .6&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 6.2        Blend Functions =&lt;br /&gt;
Blend functions are the keyword commands that tell the ''Quake III Arena'' graphic engine’s renderer how graphic layers are to be mixed together.&lt;br /&gt;
&lt;br /&gt;
== 6.2.1          Simplified blend functions: ==&lt;br /&gt;
The most common blend functions are set up here as simple commands, and should be used unless you really know what you are doing.&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.1         blendfunc add ===&lt;br /&gt;
This is a shorthand command for '''blendfunc gl_one gl_one. ''' Effects like fire and energy are additive.''' '''&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.2         blendfunc filter ===&lt;br /&gt;
This is a shorthand command that can be substituted for either   '''blendfunc gl_dst_color gl_zero''' or '''blendfunc gl_zero gl_src_color'''.  A filter will always result in darker pixels than what is behind it, but it can also remove color selectively.  Lightmaps are filters.&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.3         blendfunc blend ===&lt;br /&gt;
Shorthand for blendfunc gl_src_alpha gl_one_minus_src_alpha.  This is conventional transparency, where part of the background is mixed with part of the texture.&lt;br /&gt;
&lt;br /&gt;
== 6.2.2          Explicit blend functions: ==&lt;br /&gt;
Getting a handle on this concept is absolutely key to understanding all shader manipulation of graphics.&lt;br /&gt;
&lt;br /&gt;
BlendFunc or “Blend Function” is the equation at the core of processing shader graphics.  The formula reads as follows:&lt;br /&gt;
&lt;br /&gt;
 '''[Source * &amp;lt;srcBlend&amp;gt;] + [Destination * &amp;lt;dstBlend&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
'''Source''' is usually the RGB color data in a texture TGA file (remember it’s all numbers) modified by any rgbgen and alphagen. In the shader, the source is generally identified by command MAP, followed by the name of the image.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''Destination''' is the color data currently existing in the frame buffer.&lt;br /&gt;
&lt;br /&gt;
Rather than think of the entire texture as a whole, it may be easier to think of the number values that correspond to a single pixel, because that is essentially what the computer is processing … one pixel of the bit map at a time.&lt;br /&gt;
&lt;br /&gt;
The process for calculating the final look of a texture in place in the game world begins with the precalculated lightmap for the area where the texture will be located. This data is in the frame buffer. That is to say, it is the initial data in the '''Destination'''. In an unmanipulated texture (i.e.; one without a special shader script), color information from the texture is combined with the lightmap. In a shader-modified texture, the $lightmap stage must be present for the lightmap to be included in the calculation of the final texture appearance.&lt;br /&gt;
&lt;br /&gt;
Each pass or “stage” of blending is combined (in a cumulative manner) with the color data passed onto it by the previous stage.  How that data combines together depends on the values chosen for the Source Blends and Destination Blends at each stage.  Remember it’s numbers that are being mathematically combined together that are ultimately interpreted as colors.&lt;br /&gt;
&lt;br /&gt;
A general rule is that any '''Source Blend''' other than  '''GL_ONE''' (or '''GL_SRC_ALPHA''' where the alpha channel is entirely white) will cause the Source to become darker.&lt;br /&gt;
&lt;br /&gt;
== 6.2.3          Source Blend &amp;lt;srcBlend&amp;gt; ==&lt;br /&gt;
The following values are valid for the Source Blend part of the equation.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
  '''GL_ONE'''                               This is the value 1.  When multiplied by the '''Source''', the value stays the same the value of the color information does not change.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ZERO'''                             This is the value 0. When multiplied by the '''Source''', all RGB data in the '''Source''' becomes Zero (essentially black).&lt;br /&gt;
&lt;br /&gt;
 '''GL_DST_COLOR'''              This is the value of color data currently in the Destination (frame buffer).  The value of that information depends on the information supplied by previous stages.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_DST_COLOR  ''' This is nearly the same as GL_DST_COLOR except that the value for each component color is inverted by subtracting it from one. (,i.e.; R = 1.0 – DST.R, G = 1.0 – DST.G, B = 1.0 – DST.B, etc.)&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_ALPHA'''               The TGA file being used for the '''Source''' data &amp;lt;u&amp;gt;must have an alpha channel&amp;lt;/u&amp;gt; in addition to its RGB channels (for a total of four channels).  The alpha channel is an 8-bit black and white only channel. An entirely white alpha channel will not darken the '''Source'''.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_SRC_ALPHA   ''' This is the same as GL_SRC_ALPHA except that the value in the alpha channel is inverted by subtracting it from one. (i.e.; A=1.0 – SRC.A)&lt;br /&gt;
&lt;br /&gt;
== 6.2.4          Destination Blend &amp;lt;dstBlend&amp;gt; ==&lt;br /&gt;
The following values are valid for the Destination Blend part of the equation.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE'''                               This is the value 1.  When multiplied by the '''Destination''', the value stays the same the value of the color information does not change.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ZERO'''                             This is the value 0. When multiplied by the '''Destination''', all RGB data in the  '''Destination''' becomes Zero (essentially black).&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_COLOR'''              This is the value of color data currently in the '''Source''' (which is the texture being manipulated here).&lt;br /&gt;
&lt;br /&gt;
  '''GL_ONE_MINUS_SRC_COLOR  ''' This is the value of color data currently in '''Source''', but subtracted from one (i.e.; inverted).&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_ALPHA'''               The TGA file being used for the '''Source''' data &amp;lt;u&amp;gt;must have an alpha channel&amp;lt;/u&amp;gt; in addition to its RGB channels (four a total of four channels).  The alpha channel is an 8-bit black and white only channel. An entirely white alpha channel will not darken the '''Source'''.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_SRC_ALPHA   ''' This is the same as GL_SRC_ALPHA except that the value in the alpha channel is inverted by subtracting it from one. (i.e.; A=1.0 – SRC.A).&lt;br /&gt;
&lt;br /&gt;
 ''' '''&lt;br /&gt;
&lt;br /&gt;
 '''Doing the Math: The Final Result'''&lt;br /&gt;
&lt;br /&gt;
The product of the '''Source''' side of the equation is added to the product of the '''Destination''' side of the equation.  The sum is then placed into the frame buffer to become the '''Destination''' information for the next stage.   Ultimately, the equation creates a modified color value that is used by other functions to define what happens in the texture when it is displayed in the game world.&lt;br /&gt;
&lt;br /&gt;
== 6.2.5          Default Blend Function ==&lt;br /&gt;
''If no '''blendFunc''' is specified then no blending will take place.''  A warning is generated if any stage after the first stage does not have a '''blendFunc''' specified.&lt;br /&gt;
&lt;br /&gt;
== 6.2.6           Technical Information/Limitations Regarding Blend Modes: ==&lt;br /&gt;
The Riva 128 graphics card supports ONLY the following blend modes:&lt;br /&gt;
&lt;br /&gt;
GL_ONE, GL_ONE&lt;br /&gt;
&lt;br /&gt;
GL_DST_COLOR, GL_ZERO&lt;br /&gt;
&lt;br /&gt;
GL_ZERO, GL_SRC_COLOR&lt;br /&gt;
&lt;br /&gt;
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
Cards running in 16 bit color cannot use any GL_DST_ALPHA blends.&lt;br /&gt;
&lt;br /&gt;
= 6.3        rgbGen &amp;lt;func&amp;gt; =&lt;br /&gt;
There are two color sources for any given shader, the texture file and the vertex colors. Output at any given time will be equal to '''TEXTURE''' multiplied by '''VERTEXCOLOR'''. Most of the time VERTEXCOLOR will default to white (which is a normalized value of 1.0), so output will be TEXTURE (this usually lands in the '''Source''' side of the shader equation).  Sometimes you do the opposite and use TEXTURE = WHITE, but this is only commonly used when doing specular lighting on entities (i.e.; shaders that level designers will probably never create&lt;br /&gt;
&lt;br /&gt;
The most common reason to use rgbGen is to pulsate something. This means that the VERTEXCOLOR will oscillate between two values, and that value will be multiplied (darkening) the texture.&lt;br /&gt;
&lt;br /&gt;
If no rgbGen is specified, either “identityLighting” or “identity” will be selected, depending on which blend modes are used.&lt;br /&gt;
&lt;br /&gt;
Valid &amp;lt;func&amp;gt; parameters are '''wave, identity, identityLighting, entity, oneMinusEntity, fromVertex,''' and '''lightingDiffuse'''.&lt;br /&gt;
&lt;br /&gt;
== 6.3.1          [[RgbGen]] identityLighting ==&lt;br /&gt;
Colors will be (1.0,1.0,1.0) if running without overbright bits (NT, linux, windowed modes), or (0.5, 0.5, 0.5) if running with overbright.  Overbright allows a greater color range at the expense of a loss of precision.  Additive and blended stages will get this by default.&lt;br /&gt;
&lt;br /&gt;
== 6.3.2          rgbGen identity ==&lt;br /&gt;
Colors are assumed to be all white (1.0,1.0,1.0).  All filters stages (lightmaps, etc) will get this by default.&lt;br /&gt;
&lt;br /&gt;
== 6.3.3          rgbGen wave &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amp&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Colors are generated using the specified waveform.  An affected texture with become darker and lighter, but will not change hue. Hue stays constant.   Note that the rgb values for color will not go below 0 (black) or above 1 (white). Valid waveforms are sin, triangle, square, sawtooth and inversesawtooth.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;func&amp;gt; Wave''' forms and their effects:&lt;br /&gt;
&lt;br /&gt;
'''Sin:''' color flows smoothly through changes.&lt;br /&gt;
&lt;br /&gt;
'''Triangle:''' color changes at a constant rate and spends no appreciable time at peaks and valleys.&lt;br /&gt;
&lt;br /&gt;
'''Square:'''  color alternates instantly between its peak and valley values.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' With a positive frequency value, the color changes at a constant rate to the peak then instantly drops to its valley value.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth:''' An inverse sawtooth wave will reverse this, making the ascent immediate (like a square wave) and the decay fall off like a triangle wave.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Baseline value. The initial RGB formula of a color (normalilzed.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amp&amp;gt;'''  Amplitude.  This is the degree of change from the baseline value.  In some cases you will want values outside the 0.0 to 1.0 range, but it will induce clamping (holding at the maximum or minimum value for a time period) instead of continuous change.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See the explanation for phase under the waveforms heading of Key Concepts.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;'''    Frequency.  This is a value (NOT normalized) that indicates peaks per second.&lt;br /&gt;
&lt;br /&gt;
== 6.3.4          [[RgbGen]] entity ==&lt;br /&gt;
Colors are grabbed from the entity’s '''modulate''' field.  This is used for things like explosions.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer.&lt;br /&gt;
&lt;br /&gt;
== 6.3.5           rgbGen oneMinusEntity ==&lt;br /&gt;
Colors are grabbed from 1.0 minus the entity’s modulate field.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer.&lt;br /&gt;
&lt;br /&gt;
== 6.3.6          rgbGen Vertex ==&lt;br /&gt;
Colors are filled in directly by the data from the map or model files.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': rgbGen vertex should be used when you want the RGB values to be computed&lt;br /&gt;
&lt;br /&gt;
for a static model (i.e. mapobject) in the world using precomputed static&lt;br /&gt;
&lt;br /&gt;
lighting from Q3BSP. This would be used on things like the gargoyles, the portal frame,&lt;br /&gt;
&lt;br /&gt;
skulls, and other decorative MD3s put into the Quake III Arena  world.&lt;br /&gt;
&lt;br /&gt;
== 6.3.7          rgbGen oneMinusVertex ==&lt;br /&gt;
As rgbGen vertex, but inverted.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer&lt;br /&gt;
&lt;br /&gt;
== 6.3.8          rgbGen lightingDiffuse ==&lt;br /&gt;
Colors are computed using a standard diffuse lighting equation. It uses the vertex normals to illuminate the object correctly.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' - rgbGen lightingDiffuse is used when you want the RGB values to be&lt;br /&gt;
&lt;br /&gt;
computed for a dynamic model (i.e. non-map object) in the world using&lt;br /&gt;
&lt;br /&gt;
regular in-game lighting. For example, you would specify on shaders for&lt;br /&gt;
&lt;br /&gt;
items, characters, weapons, etc.&lt;br /&gt;
&lt;br /&gt;
= 6.4        [[AlphaGen]] &amp;lt;func&amp;gt; =&lt;br /&gt;
The alpha channel can be specified like the rgb channels.  If not specified, it defaults to 1.0.&lt;br /&gt;
&lt;br /&gt;
== 6.4.1          [[AlphaGen]] portal ==&lt;br /&gt;
This rendering stage keyword is used in conjunction with the surface parameter keyword '''portal'''.  The function accomplishes the  “fade” that causes the scene in the portal to fade from view.  Specifically, it means “Generate alpha values based on the distance from the viewer to the portal.” Use '''alphaGen''' portal on the last rendering pass.&lt;br /&gt;
&lt;br /&gt;
= 6.5        tcGen &amp;lt;coordinate source&amp;gt; =&lt;br /&gt;
Specifies how texture coordinates are generated and where they come from. Valid functions are '''base''', '''lightmap''' and '''environment.'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' = base texture coordinates from the original art.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;lightmap&amp;gt;''' = lightmap texture coordinates&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;environment&amp;gt;''' = Make this object environment mapped.&lt;br /&gt;
&lt;br /&gt;
== 6.5.1          tcGen vector (&amp;lt;sx&amp;gt; &amp;lt;sy&amp;gt; &amp;lt;sz&amp;gt;) (&amp;lt;tx&amp;gt; &amp;lt;ty&amp;gt; &amp;lt;tz&amp;gt;) ==&lt;br /&gt;
New texcoord generation by world projection. This allows you to project a&lt;br /&gt;
&lt;br /&gt;
texture onto a surface in a fixed way, regardless of its orientation.&lt;br /&gt;
&lt;br /&gt;
S coordinates correspond to the “x” coordinates on the texture itself.&lt;br /&gt;
&lt;br /&gt;
T coordinates correspond to the “y” coordinates on the texture itself.&lt;br /&gt;
&lt;br /&gt;
The measurements are in game units.&lt;br /&gt;
&lt;br /&gt;
Example: tcGen vector (0.01 0 0) (0 0.01 0)&lt;br /&gt;
&lt;br /&gt;
This would project a texture with a repeat every 100 units across the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
= 6.6        tcMod &amp;lt;func&amp;gt; &amp;lt;…&amp;gt; =&lt;br /&gt;
Specifies how texture coordinates are modified after they are generated. The valid functions for tcMod are '''rotate, scale, scroll, stretch and transform.'''  '''Transform''' is a function generally reserved for use by programmers who suggest that designers leave it alone.  When using multiple tcMod functions during a stage, place the '''scroll''' command last in order, because it performs a mod operation to save precision, and that can disturb other operations. Texture coordinates are modified in the order in which tcMods are specified.  In other words, if you see:&lt;br /&gt;
&lt;br /&gt;
'''tcMod scale 0.5 0.5'''&lt;br /&gt;
&lt;br /&gt;
'''tcMod scroll 1 1'''&lt;br /&gt;
&lt;br /&gt;
Then the texture coordinates will be '''scaled''' ''then'' '''scrolled.'''&lt;br /&gt;
&lt;br /&gt;
== 6.6.1          tcMod rotate &amp;lt;degrees per per second&amp;gt; ==&lt;br /&gt;
This keyword causes the texture coordinates to rotate. The value is expressed in degrees rotated each second.  A positive value means clockwise rotation.  A negative value means counterclockwise rotation. For example “tcMod rotate 5”  would rotate texture coordinates 5 degrees each second in a clockwise direction.  The texture rotates around the center point of the texture map, so you are rotating a texture with a single repetition, be careful to center it on the brush (unless off-center rotation is desired).&lt;br /&gt;
&lt;br /&gt;
== 6.6.2          tcMod scale &amp;lt;sScale&amp;gt; &amp;lt;tScale&amp;gt; ==&lt;br /&gt;
Resizes (enlarges or shrinks) the texture coordinates by multiplying them against the given factors of &amp;lt;sScale&amp;gt; and &amp;lt;tScale).  The values “s” and “t” conform to the “x” and “y”  values (respectively) as they are found in the original texture TGA.  The values for '''sScale''' and '''tScale''' are NOT normalized.  This means that a value greater than 1.0 will increase the size of the texture.  A positive value less than one will reduce the texture to a fraction of its size and cause it to repeat within the same area as the original texture (Note: see '''clampTexCoords''' for ways to control this).;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' ''tcMod scale 0.5 2'' would cause the texture to repeat twice along its width, but expand to twice its height (in which case half of the texture would be seen in the same area as the original)&lt;br /&gt;
&lt;br /&gt;
== 6.6.3          tcMod scroll &amp;lt;sSpeed&amp;gt; &amp;lt;tSpeed&amp;gt; ==&lt;br /&gt;
Scrolls the texture coordinates with the given speeds. ).  The values  “s” and “t” conform to the “x” and “y” values (respectively) as they are found in the original texture TGA,  The scroll speed is measured in “textures” per second. A “texture” is the dimension of the texture being modified and includes any previous shader modifications to the original TGA). A negative s value would scroll the texture to the left.  A negative t value would scroll the texture down.&lt;br /&gt;
&lt;br /&gt;
Example: tcMod scroll 0.5 -0.5 moves the texture down and right (relative to the TGA files original coordinates) at the rate of a half texture each second of travel.&lt;br /&gt;
&lt;br /&gt;
This should be the LAST tcMod in a stage. Otherwise there may be popping or snapping visual effects in some shaders.&lt;br /&gt;
&lt;br /&gt;
== 6.6.4          tcMod stretch &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;frequency&amp;gt; ==&lt;br /&gt;
Stretches the texture coordinates with the given function.  Stretching is defined as stretching the texture coordinate away from the center of  the polygon and then compressing it towards the center of the polygon&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;:''' A base value of one is the original dimension of the texture when it reaches the stretch stage.  Inserting other values positive or negative in this variable will produce unknown effects.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;:''' This is the measurement of   distance the texture will stretch from the base size.  It is measured, like scroll, in textures.  A value of 1 here will double the size of the texture at its peak.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;:''' See the explanation for phase under the deform vertexes keyword.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;frequency&amp;gt;''': this is wave peaks per second.&lt;br /&gt;
&lt;br /&gt;
 '''Wave Functions &amp;lt;func&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''Sin wave''': the texture expands smoothly to its peak dimension and then shrinks smoothly to its valley dimension in a flowing manner.&lt;br /&gt;
&lt;br /&gt;
'''Triangle wave:''' The textures stretch at a constant rate and spend no appreciable time at the peak or valley points.&lt;br /&gt;
&lt;br /&gt;
'''Square wave:'''  The texture is shown at its peak for the duration of the frequency and then at its valley for the duration of the  frequency.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' the texture stretches like a triangle wave until it reaches a peak, then instantly drops to the valley, as in a square wave.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth''': this is the reverse of the sawtooth wave.&lt;br /&gt;
&lt;br /&gt;
== 6.6.5          tcMod &amp;lt;transform&amp;gt; &amp;lt;m00&amp;gt; &amp;lt;m01&amp;gt;  &amp;lt;m10&amp;gt; &amp;lt;m11&amp;gt; &amp;lt;t0&amp;gt; &amp;lt;t1&amp;gt; ==&lt;br /&gt;
Transforms each texture coordinate as follows:&lt;br /&gt;
&lt;br /&gt;
S’ = s * m00 + t * m10 + t0&lt;br /&gt;
&lt;br /&gt;
T’ = t * m01 + s * m11 + t1&lt;br /&gt;
&lt;br /&gt;
This is for use by programmers.&lt;br /&gt;
&lt;br /&gt;
== 6.6.6          tcMod turb &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Applies turbulence to the texture coordinate.  Turbulence is a back and forth churning and swirling effect on the texture.&lt;br /&gt;
&lt;br /&gt;
The parameters for this shader are defined as follows:&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Currently undefined.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' This is essentially the intensity of the disturbance or twisting and squiggling of the texture.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See the explanation for phase under the '''deform vertexes''' keyword.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;''' Frequency. This value is expressed as repetitions or cycles of the wave per second.  A value of one would cycle once per second.  A value of 10 would cycle 10 times per second.  A value of 0.1 would cycle once every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
= 6.7        depthFunc &amp;lt;func&amp;gt; =&lt;br /&gt;
This controls the depth comparison function used while rendering.   The default is “lequal” (Less than or equal to) where any surface that is at the same depth or closer of an existing surface is drawn. This is used for textures with transparency or translucency.  Under some circumstances you may wish to use “equal”, e.g. for lightmapped grates that are alpha tested (it is also used for mirrors).&lt;br /&gt;
&lt;br /&gt;
= 6.8        depthWrite =&lt;br /&gt;
By default, writes to the depth buffer when depthFunc passes will happen for opaque surfaces and not for translucent surfaces.  Blended surfaces can have the depth writes forced with this function.&lt;br /&gt;
&lt;br /&gt;
= 6.9        Detail =&lt;br /&gt;
This feature was not used in Quake III Arena maps, but should still function.&lt;br /&gt;
&lt;br /&gt;
Designates this stage as a detail texture stage, which means that if the c_var, r_detailtextures, is set to 0 then this stage will be ignored (detail will not be displayed).  This keyword, by itself, does not affect rendering at all.  If you do put in a detail texture, it has to conform to very specific rules.  Specifically, the blendFunc:&lt;br /&gt;
&lt;br /&gt;
'''blendFunc GL_DST_COLOR GL_SRC_COLOR'''&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
This is also the simple blend function: '''blendfunc filter'''&lt;br /&gt;
&lt;br /&gt;
And the average ''intensity'' of the detail texture itself must be around 127.&lt;br /&gt;
&lt;br /&gt;
Detail is used to blend fine pixel detail back into a base texture whose scale has been increased significantly. When detail is written into a set of stage instructions, it allows the stage to be disabled by the c_var console command setting &amp;quot;r_detailtextures 0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A texture whose scale has been increased beyond a 1:1 ratio tends not to have very high frequency content. In other words, one texel can cover a lot of real estate.  Frequency is also known as “detail.”  Lack of detail can appear acceptable if the player never has the opportunity to see the texture at close range. But seen close up, such textures look glaringly wrong within the sharp detail of the Quake III Arena environment. A detail texture solves this problem by taking a noisy &amp;quot;detail&amp;quot; pattern (a tiling texture that appears to have a great deal of surface roughness) and applying it to the base texture at a very densely packed scale (that is, reduced from its normal size). This is done programmatically in the shader, and does not require modification of the base texture. Note that if the detail texture is the same size and scale as the base texture that you may as well just add the detail directly to the base texture. The theory is that the detail texture's scale will be so high compared to the base texture (e.g.; 9 detail texels fitting into 1 base texel) that it is literally impossible to fit that detail into the base texture directly.&lt;br /&gt;
&lt;br /&gt;
For this to work, the rules are as&lt;br /&gt;
&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
 A.)    the lightmap must be rendered first. This is because the subsequent detail texture will be modifying the lightmap in the framebuffer directly;&lt;br /&gt;
&lt;br /&gt;
B.) the detail texture must be rendered next since it modifies the lightmap in the framebuffer&lt;br /&gt;
&lt;br /&gt;
C.) the base texture must be rendered last ;&lt;br /&gt;
&lt;br /&gt;
D.) the detail texture MUST have a mean intensity around 127-129. If it does not then it will modify the displayed texture’s perceived brightness in the world&lt;br /&gt;
&lt;br /&gt;
E.) the detail shader stage MUST have the &amp;quot;'''detail'''&amp;quot; keyword or it will not&lt;br /&gt;
&lt;br /&gt;
be disabled if the user uses the &amp;quot;r_detailtextures 0&amp;quot; setting ;&lt;br /&gt;
&lt;br /&gt;
F.) the detail stage MUST use &amp;quot;blendFunc GL_DST_COLOR GL_SRC_COLOR&amp;quot;.  Any&lt;br /&gt;
&lt;br /&gt;
other [[BlendFunc]] will cause mismatches in brightness between detail and non-detail views.;&lt;br /&gt;
&lt;br /&gt;
G.) the detail stage should scale its textures by some amount (usually between 3 and 12) using &amp;quot;tcMod&amp;quot; to control density. This roughly corresponds to coarseness. A very large number, such as 12, will give very fine detail, however that detail will disappear VERY quickly as the viewer moves away from the wall since it will be MIP mapped away. A very small number, e.g. 3, gives diminishing returns since not enough is brought in when the user gets very close. I'm currently using values between 6 and 9.5. You should use non-integral numbers as much as possible to avoid seeing repeating patterns.&lt;br /&gt;
&lt;br /&gt;
H.) detail textures add one pass of overdraw, so there is a definite performance hit .&lt;br /&gt;
&lt;br /&gt;
I.) detail textures can be shared, so designers may wish to define only a very&lt;br /&gt;
&lt;br /&gt;
small handful of detail textures for common surfaces such as rocks, etc.&lt;br /&gt;
&lt;br /&gt;
An example (non-existent) detail shader is as follows:&lt;br /&gt;
&lt;br /&gt;
'''Example: Texture with Detail'''&lt;br /&gt;
&lt;br /&gt;
 textures/bwhtest/foo&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 // draw the lightmap first&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map $lightmap&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // modify the lightmap in the framebuffer by&lt;br /&gt;
&lt;br /&gt;
 // a highly compressed detail texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/details/detail01.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc GL_DST_COLOR GL_SRC_COLOR&lt;br /&gt;
&lt;br /&gt;
 // YOU MUST USE THIS!!&lt;br /&gt;
&lt;br /&gt;
 detail&lt;br /&gt;
&lt;br /&gt;
 // for the detail to be disabled, this must be present&lt;br /&gt;
&lt;br /&gt;
 tcMod scale 9.1 9.2&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // now slap on the base texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/castle/blocks11b.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc filter&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 6.10    alphaFunc &amp;lt;func&amp;gt; =&lt;br /&gt;
Determines the alpha test function used when rendering this map.  Valid values are GT0, LT128, and GE128.  These correspond to “GREATER THAN 0”, “LESS THAN 128”, and “GREATER THAN OR EQUAL TO 128”.  This function is used when determining if a pixel should be written to the framebuffer.  For example, if GT0 is specified, the only the portions of the texture map with corresponding alpha values greater than zero will be written to the framebuffer.  By default alpha testing is disabled.&lt;br /&gt;
&lt;br /&gt;
Both alpha testing and normal alpha blending can be used to get textures that have see-through parts.  The difference is that alphaFunc is an all-or-nothing test, while blending smoothly blends between opaque and translucent at pixel edges.  Alpha test can also be used with '''depthwrite''', allowing other effects to be conditionally layered on top of just the opaque pixels by setting '''depthFunc''' to equal.&lt;br /&gt;
&lt;br /&gt;
 7         Notes on Alpha Channels&lt;br /&gt;
To use some blend modes of alphaFunc, you must add an alpha channel to your texture files.  Photoshop can do this. Paintshop Pro has the ability to make an alpha channel cannot work directly in to it. In Photoshop you want to set the type to Mask.  Black has a value of 255.  White has a value of 0.  The darkness of a pixel’s alpha value determines the transparency of the corresponding RGB value in the game world. Darker = more transparent.&lt;br /&gt;
&lt;br /&gt;
Care must be taken when reworking textures with alpha channels. Textures without alpha channels are saved as 24 bit images while textures with alpha channels are saved as 32 bit. If you save them out as 24 bit, the alpha channel is erased. Note: Adobe Photoshop will prompt you to save as 32, 24 or 16 bit.  Choose wisely. If you save a texture as 32 bit and you don’t actually have anything in the alpha channel, Quake III Arena may still be forced to use a lower quality texture format (when in 16 bit rendering) than if you had saved it as 24 bit.&lt;br /&gt;
&lt;br /&gt;
To create a texture that has “open” areas, make those areas black in the alpha channel and make white the areas that are to be opaque.  Using gray shades can create varying degrees of opacity/transparency.&lt;br /&gt;
&lt;br /&gt;
Example: An opaque texture with see-through holes knocked in it.&lt;br /&gt;
&lt;br /&gt;
 textures/base_floor/pjgrate1&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       surfaceparm metalsteps&lt;br /&gt;
&lt;br /&gt;
       cull none&lt;br /&gt;
&lt;br /&gt;
       // A GRATE OR GRILL THAT CAN BE SEEN FROM BOTH SIDES&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/base_floor/pjgrate1.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
             alphaFunc GT0&lt;br /&gt;
&lt;br /&gt;
              depthWrite&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map $lightmap&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_DST_COLOR GL_ZERO&lt;br /&gt;
&lt;br /&gt;
             depthFunc equal&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The alpha channel can also be used to merge a texture (including one that contains black) into another image so that the merged art appears to be and opaque decal on a solid surface (unaffected by the surface it appears to sit on), without actually using an alpha function. The following is a very simple example:&lt;br /&gt;
&lt;br /&gt;
 [[Image:OldSiteResourcesQuake3ShaderManual$image003.jpg]]&lt;br /&gt;
 [[Image:OldSiteResourcesQuake3ShaderManual$image002.png]]&lt;br /&gt;
&lt;br /&gt;
 Figure 1&lt;br /&gt;
&lt;br /&gt;
Start with a TGA file image. In this case, a pentagram on a plain white field (figure 1A).  The color of the field surrrounding the image to be merged is not relevant to this process (although having a hard-edged break between the image to be isolated and the field makes the mask making process easier).  Make an alpha channel.  The area of the image to be merged with another image is masked off in white.  The area to be masked out (not used) is pure black (figure 1B).  The image to be merged into is greenfloor.tga (figure 1C).&lt;br /&gt;
&lt;br /&gt;
Make a '''qer_editorimage''' of greenfloor.tga.  This is placed in the frame buffer as the map image for the texture. By using GL_SRC_ALPHA as the source part of the blend equation, the shader adds in only the non-black parts of the pentagram.  Using GL_MINUS_ONE_SRC_ALPHA, the shader inverts the pentagram’s alpha channel and adds in only the non-black parts of  the green floor.&lt;br /&gt;
&lt;br /&gt;
In a like manner, the alpha channel can be used to blend the textures more evenly.  A simple experiment involves using a linear gradiant in the alpha channel (white to black) and merging two textures so they appear to cross fade into each other.&lt;br /&gt;
&lt;br /&gt;
A more complicated experiment would be to take the pentagram in the first example and give it an aliased edge so that the pentagram appeared to fade or blend into the floor.&lt;br /&gt;
&lt;br /&gt;
 8         Troubleshooting Shaders&lt;br /&gt;
&lt;br /&gt;
If a shader is not working, look first for syntax errors.&lt;br /&gt;
&lt;br /&gt;
Are the brackets correctly set?&lt;br /&gt;
&lt;br /&gt;
Do you have too many parameter values on a line?&lt;br /&gt;
&lt;br /&gt;
Are you using a word in a parameter that wants a numerical value?&lt;br /&gt;
&lt;br /&gt;
Are you using a numerical value in a parameter that wants a word?&lt;br /&gt;
&lt;br /&gt;
Are the path names to your textures correct?&lt;br /&gt;
&lt;br /&gt;
Are your texture names correct? There is a chance that the texture name is too long or too complex.  Try renaming a texture with a shorter, simpler name.&lt;br /&gt;
&lt;br /&gt;
 9          Creating New Textures&lt;br /&gt;
                If you are familiar with the required tools, creating new assets for use in Quake III Arena is not particularly difficult.  As a general rule, you should create new directories for each map with names different from the names used by id.  If you are making a map that will be called “H4x0r_D00M”, every directory containing new assets for that map should be titled H4x0r_D00M. This is to try and avoid asset directories overwriting each other as the editor and the game load in assets.&lt;br /&gt;
&lt;br /&gt;
= 9.1        Tools Needed =&lt;br /&gt;
Any combination of graphic programs and plug-ins that can output a 24 bit MS windows compatible Targa (.tga) or JPEG (.jpg) graphic file. If you plan to make textures that will have an alpha channel component (a 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; 8-bit greyscale channel that is used by the shaders to further manipulate the art), you must have a program that can create 32-bit art with that fourth channel.&lt;br /&gt;
&lt;br /&gt;
Adobe Photoshop has the ability to easily create alpha channels.  Paint Shop Pro from JASC (v5.0+) can also make an alpha channel by creating a mask and naming it “alpha”.&lt;br /&gt;
&lt;br /&gt;
Generally speaking, regardless of the program used, we found it best to do most of the art manipulation of the alpha channel in a separate layer or file and then paste it into the alpha channel before saving.&lt;br /&gt;
&lt;br /&gt;
= 9.2        Setting up Files =&lt;br /&gt;
The editor and the game program look for assets to be located along the paths set up in your project file. Start by creating a directory for you new textures by creating file folders to make a directory path as follows: quake3\baseq3\textures\[mymapname]&lt;br /&gt;
&lt;br /&gt;
The installation of [[Q3Radiant]] will create a text document called “shaderlist.txt” in the following path:&lt;br /&gt;
&lt;br /&gt;
quake3\baseq3\scripts\shaderlist.txt&lt;br /&gt;
&lt;br /&gt;
[[Q3Radiant]] will use the contents of this script to grab your new textures for inclusion in the game. The contents of shaderlist.txt document will contain a listing of all the shader documents that were used by id Software to create Quake III Arena.&lt;br /&gt;
&lt;br /&gt;
Since you will obviously want to create your own shaders, you need to put them in separate folders and create a new shader script for them.&lt;br /&gt;
&lt;br /&gt;
If you plan to work on several maps at once and want to distinguish between textures used in each map, simply add additional map names here. For map and mod makers, we STRONGLY recommend that any new shader scripts created use the name of the map or mod in the shader file name. We know we can’t avoid every incident of files overwriting each other, but we certainly can advise you how to try.&lt;br /&gt;
&lt;br /&gt;
Now, in the scripts directory that you just created, create another text file and call it:&lt;br /&gt;
&lt;br /&gt;
                 [mymapname].shader&lt;br /&gt;
&lt;br /&gt;
                This file will contain the shader scripts you write to modify a particular texture.&lt;br /&gt;
&lt;br /&gt;
= 9.3        Rules and Guidelines =&lt;br /&gt;
== 9.3.1          Rules ==&lt;br /&gt;
Follow these rules when creating textures for the Quake III Arena engine:&lt;br /&gt;
&lt;br /&gt;
  ·         Save your textures into your new [map name] directories.&lt;br /&gt;
&lt;br /&gt;
 ·         Don’t use the same names that id used for textures. It will cause problems.&lt;br /&gt;
&lt;br /&gt;
 ·         For best quality, save textures without an alpha channel as 24 bit TARGA files. Using JPEG files can save memory space, but at the risk of losing detail and depth in the texture. JPEG files cannot be used for textures requiring an alpha channel.&lt;br /&gt;
&lt;br /&gt;
 ·          Textures containing an alpha channel must be saved as 32 bit TARGA files.&lt;br /&gt;
&lt;br /&gt;
 ·         If a new texture requires no further manipulation, it does not need a shader script.&lt;br /&gt;
&lt;br /&gt;
 ·         Size textures in powers of 2. Example: 8x8, 16x16, 32x32, 64x64 pixels and so on.&lt;br /&gt;
&lt;br /&gt;
 ·         Textures don’t need to be square. A 32x256 pixel texture is perfectly acceptable.&lt;br /&gt;
&lt;br /&gt;
== 9.3.2          Guidelines ==&lt;br /&gt;
 The following are some things the id designers learned about textures.&lt;br /&gt;
&lt;br /&gt;
 ·         Create textures in “suites” built around one or two large textures with a number of much smaller supporting detail or accent textures.&lt;br /&gt;
&lt;br /&gt;
 ·          Very large textures are possible, but some video cards compress textures larger than 256x256 pixels.&lt;br /&gt;
&lt;br /&gt;
 ·         Textures are grouped alphabetically by name in the texture display window, so you may want to give suites of textures similar names.&lt;br /&gt;
&lt;br /&gt;
 ·         Use the shader function qe3_editorimage to conserve memory when making multiple versions of a single texture (as in the case of a glowing texture with several light values).&lt;br /&gt;
&lt;br /&gt;
 ·         Unless you are creating special effects or textures designed to draw the player’s eye to a specific spot, muted, middle value colors work best with the game engine.&lt;br /&gt;
&lt;br /&gt;
 ·         Extremely busy (a lot of fussy detail) textures can break up or form visually unpleasant patterns when seen at distances.&lt;br /&gt;
&lt;br /&gt;
= 9.4        Making the .pk3 File =&lt;br /&gt;
When you go to distribute your creation to the gaming world, you need to put your newly created map, textures, bot area files, and shader documents into an archive format called a “pk3” file.  You do not need to include the shaderlist.txt file, since that is only used by the editor. You will need to keep the paths to the various assets the same. So your paths should be something like this:&lt;br /&gt;
&lt;br /&gt;
Textures: baseq3/textures/[mymapnamefolder]&lt;br /&gt;
&lt;br /&gt;
Bsp &amp;amp; aas: baseq3/maps/mymapname.bsp , mymapname.aas&lt;br /&gt;
&lt;br /&gt;
Shader scripts: baseq3/scripts/mymapname.shader&lt;br /&gt;
&lt;br /&gt;
You need to use an archiving program call Winzip to make the pk3 file.  Get Winzip from http://www.winzip.com/winzip/winzip.htm&lt;br /&gt;
&lt;br /&gt;
Make a zip archive called mymapname.zip&lt;br /&gt;
&lt;br /&gt;
Zip all the required assets into a zip archive file (Quake III Arena ''DOES'' support compressed pk3 files).&lt;br /&gt;
&lt;br /&gt;
Rename the zip archive to mymapname.pk3&lt;br /&gt;
&lt;br /&gt;
Put it where the Quake III Arena community can find it.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteResourcesQuake3ShaderManual</id>
		<title>OldSiteResourcesQuake3ShaderManual</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteResourcesQuake3ShaderManual"/>
				<updated>2010-07-06T04:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
'''NOTE:''' The Quake 3 Arena Shader Manual is also&lt;br /&gt;
 available for download in .PDF format at the following&lt;br /&gt;
 link: [http://dl.fileplanet.com/dl/dl.asp?q2pmp/Q3AShader_manual_pdf.zip Quake 3 Arena Shader Manual in .PDF format]  Quake III Arena&lt;br /&gt;
&lt;br /&gt;
Shader Manual&lt;br /&gt;
&lt;br /&gt;
Revision #12&lt;br /&gt;
&lt;br /&gt;
By Paul Jaquays and Brian Hook&lt;br /&gt;
&lt;br /&gt;
(with additional material by John Carmack, Christian Antkow, Kevin Cloud, &amp;amp; Adrian Carmack)&lt;br /&gt;
&lt;br /&gt;
 1          Preface: Making Your Own Shaders&lt;br /&gt;
The Manual for the [[Q3Radiant]] editor program contains a section called '''''Creating New Assets''''' that has the necessary information for setting up the files to create your own custom Quake III Arena shaders.  It is recommended that you study the scripts in this document and in the individual shader scripts. Pay careful attention to syntax and punctuation. This is where you are most likely to make mistakes.&lt;br /&gt;
&lt;br /&gt;
 2         Introduction&lt;br /&gt;
The graphic engine for ''Quake III Arena'' has taken a step forward by putting much more direct control over the surface qualities of textures into the hands of designers and artists.  In writing this manual, we have tried to define the concepts and tools that are used to modify textures in a way that, it is hoped, will be graspable by users who already have basic knowledge of computer graphics but are not necessarily computer programmers.  It is not a tutorial, nor was it intended to be one.&lt;br /&gt;
&lt;br /&gt;
= 2.1        What is a Shader? =&lt;br /&gt;
Shaders are short text scripts that define the properties of a surface as it appears and functions in a game world (or compatible editing tool).  By convention, the documents that contain these scripts usually has the same name as the texture set which contains the textures being modified (e.g; base, hell, castle, etc,).  Several specific script documents have also been created to handle special cases, like liquids, sky and special effects.&lt;br /&gt;
&lt;br /&gt;
For ''Quake III Arena,'' Shader scripts are located in quake3/baseq3/scripts.&lt;br /&gt;
&lt;br /&gt;
 A ''Quake III Arena''  shader file consists of a series of surface attribute and rendering instructions formatted within braces (“{“ and “}”).  Below you can see a simple example of syntax and format for a single process, including the Q3MAP keywords or “Surface Parameters”, which follow the first bracket and a single bracketed  “stage”:&lt;br /&gt;
&lt;br /&gt;
 textures/liquids/lava&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       deformVertexes wave sin 0 3 0 0.1&lt;br /&gt;
&lt;br /&gt;
       tessSize 64&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
       map textures/common/lava.tga&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 2.2         Shader Name &amp;amp; File Conventions =&lt;br /&gt;
The first line is the shader name.  Shader names can be up to 63 characters long.  The names are often a mirror of a pathname to a .tga file without the extension or basedir (/quake3/baseq3 in our case), but they do not need to be.&lt;br /&gt;
&lt;br /&gt;
Shaders that are only going to be referenced by the game code, not modeling tools, often are just a single world, like “projectionShadow” or “viewBlood”.&lt;br /&gt;
&lt;br /&gt;
Shaders that are used on characters or other polygon models need to mirror a .tga file, which allows the modelers to build with normal textures, then have the special effects show up when the model is loaded into the game.&lt;br /&gt;
&lt;br /&gt;
Shaders that are placed on surfaces in the map editor commonly mirror a .tga file, but the “qer_editorimage” shader parameter can force the editor to use an arbitrary image for display.&lt;br /&gt;
&lt;br /&gt;
Shader pathnames have a case sensitivity issue – on windows, they ''aren’t'' case sensitive, but on unix they ''are''.  Try to always use lowercase for filenames, and always use forward slashes “/” for directory separators.&lt;br /&gt;
&lt;br /&gt;
= 2.3        Shader Types =&lt;br /&gt;
The keywords that affect shaders are divided into two classes.  The first class of keywords are global parameters.  Some global parameters ( '''“surfaceparms.”''' And all '''“q3map_” keywords''') are processed by Q3MAP, and change physical attributes of the surface that uses the shader. These attributes can affect the player. To see changes in these parameters one must re-bsp the map.&lt;br /&gt;
&lt;br /&gt;
The remaining global keywords, and all Stage Specific Keywords are processed by the renderer.  They are appearance changes only and have no effect on game play or game mechanics. Changes to any of these attributes will take effect as soon as the game goes to another level or vid_restarts (type command '''vid_restart''' in the game console).&lt;br /&gt;
&lt;br /&gt;
Shader keywords are ''not'' case sensitive.&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT NOTE:''' some of the shader commands may be order dependent, so it’s good practice to place all global shader commands (keywords defined in this section) at the very beginning of the shader and to place shader stages at the end (see various examples).&lt;br /&gt;
&lt;br /&gt;
= 2.4        Key Concepts =&lt;br /&gt;
Ideally, a designer or artist who is manipulating textures with shader files has a basic understanding of wave forms and knows about mixing colored light (high school physics sort of stuff).  If not, there are some concepts you need to have a grasp on to make shaders work for you.&lt;br /&gt;
&lt;br /&gt;
== 2.4.1          Surface Effects vs. Content Effects vs. Deformation Effects ==&lt;br /&gt;
Shaders not only modify the visible aspect of textures on a geometry brush, curve, patch or mesh model, but they can also have an effect on both the content, “shape,” and apparent movement of those things.  A surface effect does nothing to modify the shape or content of the brush.  Surface effects include glows, transparencies and rgb (red, green, blue) value changes. Content shaders affect the way the brush operates in the game world. Examples include water, fog, nonsolid, and structural.  Deformation effects change the actual shape of the affected brush or curve, and may make it appear to move.&lt;br /&gt;
&lt;br /&gt;
== 2.4.2          Power Has a Price ==&lt;br /&gt;
The shader script gives the designer, artist and programmer a great deal of easily accessible power over the appearance of and potential special effects that may be applied to surfaces in the game world.  But it is power that comes with a price tag attached, and the cost is measured in performance speed.  Each shader phase that affects the appearance of a texture causes the ''Q3:A'' engine to make another processing pass and redraw the world.  Think of it as if you were adding all the shader-affected triangles to the total r_speed count for each stage in the shader script. A shader-manipulated texture that is seen through another shader manipulated texture (e.g.; a light in fog) has the effect of ''adding'' the total number of passes together for the affected triangles.  A light that required two passes seen through a fog that requires one pass will be treated as having to redraw that part of the world three times.&lt;br /&gt;
&lt;br /&gt;
== 2.4.3          RGB Color ==&lt;br /&gt;
RGB means “Red, Green, Blue.” Mixing red, green and blue light in differing intensities creates the colors in computers and television monitors.  This is called ''additive color'' (as opposed to the mixing of pigments in paint or colored ink in the printing process, which is subtractive color).  In ''Quake III Arena'' and most higher-end computer art programs (and the color selector in Windows), the intensities of the individual Red, Green and Blue components are expressed as number values. When mixed together on a screen, number values of equal intensity in each component color create a completely neutral (gray) color.  The lower the number value (towards 0), the darker the shade.  The higher the value, the lighter the shade or the more saturated the color until it reaches a maximum value of 255 (in the art programs).  All colors possible on the computer can be expressed as a formula of three numbers. The value for complete black is 0 0 0. The value for complete white is 255 255 255. However, the ''Quake III Arena'' graphics engine requires that the color range be  “normalized” into a range between 0.0 and 1.0.&lt;br /&gt;
&lt;br /&gt;
== 2.4.4          Normalization: a Scale of 0 to 1 ==&lt;br /&gt;
The mathematics in ''Quake III Arena'' use a scale of 0.0 to 1.0 instead of 0 to 255. Most computer art programs that can express RGB values as numbers use the 0 to 255 scale.  To convert numbers, divide each of the art program’s values for the component colors by 255.  The resulting three values are your ''Quake III Arena'' formula for that color component.  The same holds true for texture coordinates.&lt;br /&gt;
&lt;br /&gt;
== 2.4.5          Texture Sizes ==&lt;br /&gt;
TGA texture files are measured in pixels (picture elements).  Textures are measured in powers of 2, with 16 x16 pixels being the smallest (typically) texture in use.  Most will be larger. Textures need not be square, so long as both dimensions are powers of 2. Examples include: 32x256, 16x32, 128x16.&lt;br /&gt;
&lt;br /&gt;
== 2.4.6          Color Math ==&lt;br /&gt;
In ''Quake III Arena'' , colors are changed by mathematical equations worked on the textures by way of the scripts or “programlets”  in the shader file.  An equation that adds to or multiplies the number values in a texture causes it to become darker.  Equations that subtract from or modulate number values in a texture cause it to become lighter.  Either equation can change the hue and saturation of a color.&lt;br /&gt;
&lt;br /&gt;
== 2.4.7          Measurements ==&lt;br /&gt;
The measurements used in the shaders are in either game units, color units, or texture units.&lt;br /&gt;
&lt;br /&gt;
 ·          '''Game unit:''' A game unit is used by deformations to specify sizes relative to the world.  Game units are the same scale we have had since way back in the ''Wolfenstein'' days – 8 units equals one foot. The default texture scale used by the [[Q3Radiant]] map editor results in two texels for each game unit, but that can be freely changed.&lt;br /&gt;
&lt;br /&gt;
 ·         '''Color units''': Colors scale the values generated by the texture units to produce lighting effects.  A value of 0.0 will be completely black, and a value of 1.0 will leave the texture unchanged. Colors are sometimes specified with a single value to be used across all red, green, and blue channels, or sometimes as separate values for each channel.&lt;br /&gt;
&lt;br /&gt;
 ·         '''Texture units:''' This is the normalized (see above) dimensions of the original texture image  (or a previously modified texture at a given stage in the shader pipeline).  A full texture, regardless of its original size in texels, has a normalized measurement of 1.0 x 1.0.  For normal repeating textures, it is possible to have value greater than 1.0 or less than 0.0, resulting in repeating of the texture.  The coordinates are usually assigned by the level editor or modeling tools, but you still need to be aware of this for scrolling or turbulent movement of the texture at runtime.&lt;br /&gt;
&lt;br /&gt;
== 2.4.8           Waveform Functions ==&lt;br /&gt;
Many of the shader functions use waveforms to modulate measurements over time.  Where appropriate, additional information is provided with wave modulated keyword functions to describe the effect of a particular waveform on that process. Currently there are five waveforms in use in ''Q3A'' shaders:&lt;br /&gt;
&lt;br /&gt;
'''Sin''': Sin stands for sine wave, a regular smoothly flowing wave ranging from –1 to 1.&lt;br /&gt;
&lt;br /&gt;
'''Triangle:''' Triangle is a wave with a sharp ascent and a sharp decay, ranging from 0 to 1. It will make a choppy looking wave forms.&lt;br /&gt;
&lt;br /&gt;
'''Square''': A square wave simply switches from –1 to 1 with no in-between.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' In the sawtooth wave, the ascent is like a triangle wave from 0 to 1, but the decay cuts off sharply back to 0.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth:''' This is the reverse of the sawtooth … instant ascent to the peak value (1), then a triangle wave descent to the valley value (0).  The phase on this goes from 1.0 to 0.0 instead of 0.0 to 1.0.  This wave is particularly useful for additive cross-fades.&lt;br /&gt;
&lt;br /&gt;
'''Waveforms all have the following properties''':&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Where the wave form begins. Amplitude is measured from this base value.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' This is the height of the wave created, measured from the base'''.''' You will probably need to test and tweak this value to get it correct for each new shader stage. The greater the amplitude, the higher the wave peaks and the deeper the valleys.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' This is a normalized value between 0.0 and 1.0.  Changing phase to a non-zero value affects the point on the wave at which the wave form initially begins to be plotted. Example: In  Sin or Triangle wave, a phase of 0.25 means it begins one fourth (25%) of the way along the curve, or more simply put, it begins at the peak of the wave.  A phase of 0.5 would begin at the point the wave re-crosses the base line.  A phase of 0.75 would be at the lowest point of the valley.  If only one wave form is being used in a shader, a phase shift will probably not be noticed and phase should have a value of zero (0).  However, including two or more stages of the same process in a single shader, but with the phases shifted can be used to create interesting visual effects.   Example:  using rgbGen in two stages with different colors and a 0.5 difference in phase would cause the manipulated texture to modulate between two distinct colors.   Phase changes can also be used when you have two uses of the same effect near each other, and you don’t want them to be synchronized. You would write a separate shader for each, changing only the phase value.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;''' Frequency. This value is expressed as repetitions or cycles of the wave per second.  A value of 1 would cycle once per second.  A value of 10 would cycle 10 times per second.  A value of 0.1 would cycle once every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
 3         General Shader Keywords&lt;br /&gt;
'''IMPORTANT NOTE:''' Once again, be aware that some of the shader commands may be order dependent, so it’s good practice to place all global shader commands (keywords defined in this section) at the very beginning of the shader and to place shader stages at the end (see various examples).&lt;br /&gt;
&lt;br /&gt;
These Keywords are global to a shader and affect all stages.  They are also ignored by Q3MAP.&lt;br /&gt;
&lt;br /&gt;
= 3.1        skyParms &amp;lt;farbox&amp;gt; &amp;lt;cloudheight&amp;gt; &amp;lt;nearbox&amp;gt; =&lt;br /&gt;
Specifies how to use the surface as a sky, including an optional far box (stars, moon, etc), optional cloud layers with any shader attributes, and an optional near box (mountains in front of the clouds, etc).&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;Farbox&amp;gt;''' Specifies a set of files to use as an environment box behind all cloud layers.  Specify “-“ for no farbox, or a file base name.  A base name of  “env/test” would look for files “env/test_rt.tga”, “env/test_lf.tga”, “env/test_ft.tga”, “env/test_bk.tga”, “env/test_up.tga”, “env/test_dn.tga” to use as the right / left / front / back / up / down sides.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;cloudheight&amp;gt;''' controls apparent curvature of the cloud layers – lower numbers mean more curvature (and thus more distortion at the horizons).  Higher height values create “flatter” skies with less horizon distortion.  Think of height as the radius of a sphere on which the clouds are mapped. Good ranges are 64 to 256.  The default value is 128.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;nearbox&amp;gt;'''   Specified as farbox, to be alpha blended on top of the clouds.  This has not been tested in a long time, so it probably doesn’t actually work.  Set to “-“ to ignore.&lt;br /&gt;
&lt;br /&gt;
Design Notes:&lt;br /&gt;
&lt;br /&gt;
 ·         If you are making a map where the sky is seen by looking up most of the time, use a lower cloudheight value.  Under those circumstances the tighter curve looks more dynamic. If you are making a map where the sky is seen by looking out windows most of the time or has a map area that is open to the sky on one or more sides, use a higher height to make the clouds seem more natural.&lt;br /&gt;
&lt;br /&gt;
 ·         It is possible to create a sky with up to 8 cloud layers, but that also means 8 processing passes and a potentially large processing hit.&lt;br /&gt;
&lt;br /&gt;
 ·          Be aware that the skybox does not wrap around the entire world. The “floor” or bottom face of the skybox is not drawn by the game. If a player in the game can see that face, they will see the “hall of mirrors” effect.&lt;br /&gt;
&lt;br /&gt;
 '''Example: Sky script'''&lt;br /&gt;
&lt;br /&gt;
 textures/skies/xtoxicsky_dm9&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       qer_editorimage textures/skies/toxicsky.tga&lt;br /&gt;
&lt;br /&gt;
       surfaceparm noimpact&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
 q3map_globaltexture&lt;br /&gt;
&lt;br /&gt;
 q3map_lightsubdivide 256&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 400&lt;br /&gt;
&lt;br /&gt;
       surfaceparm sky&lt;br /&gt;
&lt;br /&gt;
       q3map_sun   1 1 0.5 150 30 60&lt;br /&gt;
&lt;br /&gt;
       skyparms full 512 -&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/skies/inteldimclouds.tga&lt;br /&gt;
&lt;br /&gt;
             tcMod scroll 0.1 0.1&lt;br /&gt;
&lt;br /&gt;
              tcMod scale 3 2&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/skies/intelredclouds.tga&lt;br /&gt;
&lt;br /&gt;
              blendFunc add&lt;br /&gt;
&lt;br /&gt;
             tcMod scroll 0.05 0.05&lt;br /&gt;
&lt;br /&gt;
             tcMod scale 3 3&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 3.2        cull &amp;lt;side&amp;gt; =&lt;br /&gt;
Every surface of a polygon has two sides, a front and a back.  Typically, we only see the front or “out” side. For example, a solid block you only show the front side.  In many applications we see both. For example, in water, you can see both front and a back. The same is true for things like grates and screens.&lt;br /&gt;
&lt;br /&gt;
To “cull” means to remove. The value parameter determines the type of face culling to apply.  The default value is cull ''front'' if this keyword is not specified.  However for items that should be inverted then the value ''back'' should be used.  To disable culling, the value  ''disable'' or ''none'' should be used. Only one cull instruction can be set for the shader.&lt;br /&gt;
&lt;br /&gt;
== 3.2.1          cull front ==&lt;br /&gt;
The front or “outside” of the polygon is not drawn in the world.  This is the default value.  It is used if the keyword “'''cull'''” appears in the content instructions without a '''&amp;lt;side&amp;gt;''' value or if the keyword cull does not appear at all in the shader.&lt;br /&gt;
&lt;br /&gt;
== 3.2.2          cull back ==&lt;br /&gt;
Cull back removes the back or “inside” of a polygon from being drawn in the world.&lt;br /&gt;
&lt;br /&gt;
== 3.2.3          cull disable, cull none ==&lt;br /&gt;
Neither side of the polygon is removed.  Both sides are drawn in the game. Very useful for making panels or barriers that have no depth, such as grates, screens, metal wire fences and so on and for liquid volumes that the player can see from within.  Also used for energy fields, sprites, and weapon effects (e.g.; plasma).&lt;br /&gt;
&lt;br /&gt;
Design Notes: For things like grates and screens, put the texture with the cull none property on one face only. On the other faces, use a non-drawing texture.&lt;br /&gt;
&lt;br /&gt;
= 3.3        deformVertexes =&lt;br /&gt;
This function performs a general deformation on the surface’s vertexes, changing the actual shape of the surface before drawing the shader passes.  You can stack multiple deformVertexes commands to modify positions in more complex ways, making an object move in two dimensions, for instance.&lt;br /&gt;
&lt;br /&gt;
== 3.3.1          deformVertexes wave &amp;lt;div&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt;  &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Designed for water surfaces, modifying the values differently at each point.  It accepts the standard wave functions of the type '''sin''', '''triangle''', '''square, sawtooth''' or '''inversesawtooth'''.  The “div” parameter is used to control the wave “spread” – a value equal to the tessSize of the surface is a good default value (tessSize is subdivision size, in game units, used for the shader when seen in the game world) .&lt;br /&gt;
&lt;br /&gt;
== 3.3.2          deformVertexes normal &amp;lt;div&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude ~0.1-~0.5&amp;gt; &amp;lt;frequency ~1.0-~4.0&amp;gt; ==&lt;br /&gt;
This deformation affects the normals of a vertex without actually moving it, which will effect later shader options like lighting and especially environment mapping.  If the shader stages don’t use normals in any of their calculations, there will be no visible effect.&lt;br /&gt;
&lt;br /&gt;
Design Notes:  Putting values of  0.1 t o 0.5 in Amplitude and 1.0 to 4.0 in the Frequency can produce some satisfying results.  Some things that have been done with it:  A small fluttering bat, falling leaves, rain, flags.&lt;br /&gt;
&lt;br /&gt;
== 3.3.3          deformVertexes bulge &amp;lt;bulgeWidth&amp;gt;  &amp;lt;bulgeHeight&amp;gt; &amp;lt;bulgeSpeed&amp;gt; ==&lt;br /&gt;
This forces a bulge to move along the given '''s''' and '''t''' directions.  Designed for use on curved pipes.&lt;br /&gt;
&lt;br /&gt;
'''Specific parameter definitions for deform keywords:'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;div&amp;gt; ''' This is roughly defined as the size of the waves that occur. It is measured in game units. Smaller values create a greater density of smaller wave forms occurring in a given area.  Larger values create a lesser density of waves, or otherwise put, the appearance of larger waves.  To look correct this value should closely correspond to the value (in pixels) set for tessSize (tessellation size) of the texture.  A value of 100.0 is a good default value (which means your tessSize should be close to that for things to look “wavelike”).&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;func&amp;gt;''' This is the type of wave form being created.  Sin stands for sine wave, a regular smoothly flowing wave.  Triangle is a wave with a sharp ascent and a sharp decay. It will make a choppy looking wave forms.  A square wave is simply on or off for the period of the frequency with no in between. The sawtooth wave has the ascent of a triangle wave, but has the decay cut off sharply like a square wave.  An inversesawtooth wave reverses this.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;'''  This is the distance, in game units that the apparent surface of the texture is displaced from the actual surface of the brush as placed in the editor.  A positive value appears above the brush surface. A negative value appears below the brush surface.  An example of this is the Quad effect, which essentially is a shell with a positive base value to stand it away from the model surface and a 0 (zero) value for amplitude.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' The distance that the deformation moves away from the base value.  See Wave Forms in the introduction for a description of amplitude.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See Wave Forms in the introduction for a description of phase)&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;frequency&amp;gt;''' See Wave Forms in the introduction for a description of frequency)&lt;br /&gt;
&lt;br /&gt;
Design Note:  The div and amplitude parameters, when used in conjunction with liquid volumes like water should take into consideration how much the water will be moving.  A large ocean area would have have massive swells (big div values) that rose and fell dramatically (big amplitude values). While a small, quiet pool may move very little.&lt;br /&gt;
&lt;br /&gt;
== 3.3.4          deformVertexes move &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt; &amp;lt;func&amp;gt; &amp;lt;base&amp;gt;  &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
This keyword is used to make a brush, curve patch or md3 model appear to move together as a unit.  The &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; and &amp;lt;z&amp;gt; values are the distance and direction in game units the object appears to move relative to it’s point of origin in the map.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; and &amp;lt;freq&amp;gt; values are the same as found in other wave form manipulations.&lt;br /&gt;
&lt;br /&gt;
The product of the function modifies the values x, y, and z. Therefore, if you have an amplitude of 5 and an x value of 2, the object will travel 10 units from its point of origin along the x axis. This results in a total of 20 units of motion along the x axis, since the amplitude is the variation both above and below the base.&lt;br /&gt;
&lt;br /&gt;
It must be noted that an object made with this shader does not actually change position, it only appears to.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:'''  If an object is made up of surfaces with different shaders, all must have matching deformVertexes move values or the object will appear to tear itself apart.&lt;br /&gt;
&lt;br /&gt;
== 3.3.5          [[DeformVertexes]] autosprite ==&lt;br /&gt;
This function can be used to make any given triangle quad (pair of triangles that form a square rectangle) automatically behave like a sprite without having to make it a separate entity.  This means that the “sprite” on which the texture is placed will rotate to always appear at right angles to the player’s view as a sprite would. Any four-sided brush side, flat patch, or pair of triangles in an .md3 model can have the '''autosprite''' effect on it.  '''The brush face containing a texture with this shader keyword must be square.'''&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This is best used on objects that would appear the same regardless of viewing angle.  An example might be a glowing light flare.&lt;br /&gt;
&lt;br /&gt;
== 3.3.6          [[DeformVertexes]] autosprite2 ==&lt;br /&gt;
Is a slightly modified “sprite” that only rotates around the middle of its longest axis.  This allows you to make a pillar of fire that you can walk around, or an energy beam stretched across the room.&lt;br /&gt;
&lt;br /&gt;
= 3.4         fogparms &amp;lt;red value&amp;gt; &amp;lt;green value&amp;gt; &amp;lt;blue value&amp;gt; &amp;lt;distance to Opaque&amp;gt; =&lt;br /&gt;
Note: you must also specify “surfaceparm fog” to cause q3map to identify the surfaces inside the volume.  Fogparms only describes how to render the fog on the surfaces.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;red value&amp;gt; &amp;lt;green value&amp;gt; &amp;lt;blue value&amp;gt;''' These are normalized values. A good computer art program should give you the RGB values for a color. To obtain the values that define fog color for Quake III Arena , divide the desired color’s Red, Green and Blue values by 255 to obtain three normalized numbers within the 0.0 to 1.0 range.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;distance to opaque&amp;gt;''' This is the distance, in  game units, until the fog becomes totally opaque, as measured from the point of view of the observer.  By making the height of the fog brush shorter than the distance to opaque ,  the apparent density of the fog can be reduced (because it never reaches the depth at which full opacity occurs)..&lt;br /&gt;
&lt;br /&gt;
 ·         The fog volume can only have one surface visible (from outside the fog).&lt;br /&gt;
&lt;br /&gt;
 ·         Fog must be made of one brush. It cannot be made of adjacent brushes.&lt;br /&gt;
&lt;br /&gt;
 ·         Fog brushes must be axial.  This means that only square or rectangular brushes may contain fog, and those must have their edges drawn along the axes of the map grid (all 90 degree angles).&lt;br /&gt;
&lt;br /&gt;
 ·&lt;br /&gt;
&lt;br /&gt;
'''Design Notes: '''&lt;br /&gt;
&lt;br /&gt;
 ·         If a water texture contains a fog parameter, it must be treated as if it were a fog texture when in use.&lt;br /&gt;
&lt;br /&gt;
 ·         If a room is to be filled completely with a fog volume, it can only be entered through one surface (and still have the fog function correctly).&lt;br /&gt;
&lt;br /&gt;
  ·         Additional shader passes may be placed on a fog brush, as with other brushes.&lt;br /&gt;
&lt;br /&gt;
= 3.5        nopicmip =&lt;br /&gt;
This causes the texture to ignore user-set values for the  '''r_picmip''' cvar command.  The image will always be high resolution.  Example:  Used to keep images and text in the heads up display from blurring when user optimizes the game graphics.&lt;br /&gt;
&lt;br /&gt;
= 3.6        nomipmap: =&lt;br /&gt;
This implies nopicmip, but also prevents the generation of any lower resolution mipmaps for use by the 3d card.  This will cause the texture to alias when it gets smaller, but there are some cases where you would rather have this than a blurry image.  Sometimes thin slivers of triangles force things to very low mipmap levels, which leave a few constant pixels on otherwise scrolling special effects.&lt;br /&gt;
&lt;br /&gt;
= 3.7        polygonOffset =&lt;br /&gt;
Surfaces rendered with the '''polygonOffset''' keyword are rendered slightly off the polygon’s surface.  This is typically used for wall markings and “decals.” The distance between the offset and the polygon is fixed.  It is not a variable in Quake III Arena.&lt;br /&gt;
&lt;br /&gt;
= 3.8        portal =&lt;br /&gt;
Specifies that this texture is the surface for a portal or mirror.  In the game map, a portal entity must be placed directly in front of the texture (within 64 game units).  All this does is set “sort portal”, so it isn’t needed if you specify that explicitly.&lt;br /&gt;
&lt;br /&gt;
= 3.9        sort &amp;lt;value&amp;gt; =&lt;br /&gt;
Use this keyword to fine-tune the depth sorting of shaders as they are compared against other shaders in the game world. The basic concept is that if there is a question or a problem with shaders drawing in the wrong order against each other, this allows the designer to create a hierarchy of which shader draws in what order.&lt;br /&gt;
&lt;br /&gt;
The default behavior is to put all blended shaders in sort “additive” and all other shaders in sort “opaque”, so you only need to specify this when you are trying to work around a sorting problem with multiple transparent surfaces in a scene.&lt;br /&gt;
&lt;br /&gt;
The value here can be either a numerical value or one of the keywords in the following list (listed in order of ascending priority):&lt;br /&gt;
&lt;br /&gt;
'''portal (1):''' This surface is a portal, it draws over every other shader seen inside the portal, but before anything in the main view.&lt;br /&gt;
&lt;br /&gt;
'''Sky (2):''' Typically, the sky is the farthest surface in the game world.  Drawing this after other opaque surfaces can be an optimization on some cards.  This currently has the wrong value for this purpose, so it doesn’t do much of anything.&lt;br /&gt;
&lt;br /&gt;
'''Opaque (3):''' This surface is opaque (rarely needed since this is the default with no blendfunc)&lt;br /&gt;
&lt;br /&gt;
'''Banner (6) :''' Transparent, but very close to walls.&lt;br /&gt;
&lt;br /&gt;
'''Underwater (8):''' Draw behind normal transparent surfaces.&lt;br /&gt;
&lt;br /&gt;
'''Additive (9):'''  normal transparent surface (default for shaders with blendfuncs)&lt;br /&gt;
&lt;br /&gt;
'''nearest (16):''' this shader should always sort closest to the viewer, e.g. muzzle flashes and blend blobs&lt;br /&gt;
&lt;br /&gt;
 4         Q3MAP Specific Shader Keywords&lt;br /&gt;
These keywords change the physical nature of the textures and the brushes that are marked with them. Changing any of these values will require the map to be re-compiled. These are global and affect the entire shader.&lt;br /&gt;
&lt;br /&gt;
= 4.1        tessSize &amp;lt;amount&amp;gt; =&lt;br /&gt;
For consistency’s sake, this really should have been called q3map_tessSize. But it wasn’t. The tessSize shader controls the tessellation size (how finely a surface is chopped up in to triangles), in game units, of the surface.  This is only applicable to solid brushes, not curves, and is generally only used on surfaces that are flagged with the '''deformVertexes''' keyword.  Abuse of this can create a huge number of triangles.  This happens during q3map processing, so maps must be reprocessed for changes to take effect.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' It can also be used on tesselating surfaces to make sure that tesselations are large, and thus, less costly in terms of triangles created.&lt;br /&gt;
&lt;br /&gt;
= 4.2        q3map_backshader &amp;lt;shadername&amp;gt; =&lt;br /&gt;
This allows a brush to use a different shader when you are inside it looking out. By way of example, this would allow a water brush (or other) surfaces to have a different sort order (see '''''sort''''' above) or appearance when seen from the inside.&lt;br /&gt;
&lt;br /&gt;
= 4.3         q3map_globaltexture =&lt;br /&gt;
Use this shader in the global keyword commands whenever the '''tcMod scale''' function is used in one of the later render stages. Many problems with getting shader effects to work across multiple adjacent brushes are a result of the way q3map optimizes texture precision. This option resolves that, but at the expense of some precision of the textures when they are far away from the origin of the map.&lt;br /&gt;
&lt;br /&gt;
= 4.4        q3map_sun &amp;lt;red&amp;gt; &amp;lt;green&amp;gt; &amp;lt;blue&amp;gt; &amp;lt;intensity&amp;gt; &amp;lt;degrees&amp;gt; &amp;lt;elevation&amp;gt; =&lt;br /&gt;
This keyword in a sky shader will create the illusion of light cast into a map by a single, infinitely distance light source (sun, moon, hellish fire, etc.).  This is only processed during the lighting phase of q3map.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;red&amp;gt; &amp;lt;green&amp;gt; &amp;lt;blue&amp;gt;''' Color is described by three normalized rgb values.  Color will be normalized to a 0.0 to 1.0 range, so it doesn’t matter what range you use.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;intensity&amp;gt;''' is the brightness of the generated light.  A value of 100 is a fairly bright sun.  The intensity of the light falls off with angle but not distance.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;degrees&amp;gt;''' is the angle relative to the directions on the map file.  A setting of 0 degrees equals east. 90 is north, 180 is west and 270 is south.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;elevation&amp;gt;''' is the distance, measured in degrees from the horizon (z value of zero in the map file).  An elevation of 0 is sunrise/sunset. An elevation of 90 is noon&lt;br /&gt;
&lt;br /&gt;
'''DESIGN NOTE: ''' Sky shaders should probably still have a '''q3map_surfacelight''' value.  The “sun” gives a strong directional light, but doesn’t necessarily give the fill light needed to soften and illuminate shadows.  Skies with clouds should probably have a weaker '''q3map_sun''' value and a higher  '''q3map_surfacelight''' value.  Heavy clouds diffuse light and weaken shadows.  The opposite is true of a cloudless or nearly cloudless sky.  In such cases, the “sun” or “moon” will cast stronger, shadows that have a greater degree of contrast.&lt;br /&gt;
&lt;br /&gt;
'''Design Trick:''' Not certain what color formula you want to use for the sun’s light? Try this. Create a light entity.  Use the [[Q3Radiant]] editor’s color selection tools to pick a color.  The light’s _color key’s value will be the normalized RGB formula. Copy it from the value line in the editor (CTRL+c) and paste it into your shader.&lt;br /&gt;
&lt;br /&gt;
= 4.5        q3map_surfaceLight &amp;lt;light value&amp;gt; =&lt;br /&gt;
The texture gives off light equal to the '''&amp;lt;light value&amp;gt;''' set for it.  The relative surface area of the texture in the world affects the actual amount of light that appears to be radiated.  To give off what appears to be the same amount of light, a smaller texture must be significantly brighter than a larger texture. Unless the qer_lightimage keyword is used to select a different source for the texture’s light color information, the color of the light will be the averaged color of the texture.&lt;br /&gt;
&lt;br /&gt;
= 4.6         q3map_lightimage &amp;lt; texturepath/texturename&amp;gt; =&lt;br /&gt;
The keyword '''q3map_lightimage''' generates lighting from the average color of the TGA image specified by the  q3map_lightimage.&lt;br /&gt;
&lt;br /&gt;
The keyword sequence for generating light on a '''q3map_surfacelight''' should be ordered as follows:&lt;br /&gt;
&lt;br /&gt;
1) '''q3map_lightimage''' ; (the texture providing the light and the color of the light)&lt;br /&gt;
&lt;br /&gt;
2) '''qer_editorimage''' ; (the editor-only image used to select the source map for the texture)&lt;br /&gt;
&lt;br /&gt;
3) the average color of the light emitted from the shader is calculated from the '''lightimage.''')&lt;br /&gt;
&lt;br /&gt;
The reason '''q3map_lightimage''' is specified for the light in the example below, is because the blend map is predominantly yellow, and the designer wanted more yellow light to be emitted from the light.&lt;br /&gt;
&lt;br /&gt;
'''Example: Taking light from another source texture'''&lt;br /&gt;
&lt;br /&gt;
 textures/eerie/ironcrosslt2_10000&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 q3map_lightimage textures/gothic_light/ironcrosslt2.blend.tga&lt;br /&gt;
&lt;br /&gt;
 // this TGA is the source for the color of the blended light&lt;br /&gt;
&lt;br /&gt;
  qer_editorimage textures/gothic_light/ironcrosslt2.tga&lt;br /&gt;
&lt;br /&gt;
 //base TGA (used because the shader is used with several&lt;br /&gt;
&lt;br /&gt;
 // different light values&lt;br /&gt;
&lt;br /&gt;
 q3map_surfacelight 10000&lt;br /&gt;
&lt;br /&gt;
 //emitted light value of 10,000&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map $lightmap&lt;br /&gt;
&lt;br /&gt;
 //source texture is affected by the lightmap&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 // this command handles the overbright bits created by “sunlight”&lt;br /&gt;
&lt;br /&gt;
 // in the game&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/gothic_light/ironcrosslt2.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc filter&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/gothic_light/ironcrosslt2.blend.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc add&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 4.7        q3map_lightsubdivide &amp;lt;value&amp;gt; =&lt;br /&gt;
This allows the user to define how large, or small to make the subdivisions (triangles) in a textured surface, particularly aimed at light-emitting textures like skies.  It defaults to 120 game units, but can be made larger (256 or 512) for sky boxes or smaller for light surfaces at the bottoms of cracks.  This can be a dominant factor in processing time for q3map lighting.&lt;br /&gt;
&lt;br /&gt;
= 4.8        surfaceparm &amp;lt;parm&amp;gt; =&lt;br /&gt;
All surfaceparm keywords are preceded by the word surfaceparm as follows: '''surfaceparm fog''' or '''surfaceparm noimpact.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.1          alphashadow ==&lt;br /&gt;
This keyword applied to a texture on a brush, patch or model will cause the lighting phase of the q3map process to use the texture’s alpha channel as a mask for casting static shadows in the game world.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' Alphashadow does not work well with fine line detail on a texture.  Fine lines may not cast acceptable shadows.  It appears to work best with well-defined silhouettes and wider lines within the texture.  Most of our tattered banners use this to cast tattered shadows.&lt;br /&gt;
&lt;br /&gt;
== 4.8.2          areaportal ==&lt;br /&gt;
A brush marked with this keyword functions as an area portal, a break in the Q3MAP tree.  It is typically placed on a very thin brush placed inside a door entity (but is not a part of that entity).  The intent is to block the game from processing surface triangles located behind it when the door is closed.  It is also used by the BSPC (bot area file creation compiler) in the same manner as a cluster portal. The brush must touch all the structural brushes surrounding the '''areaportal.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.3          clusterportal ==&lt;br /&gt;
A brush marked with this keyword function creates a subdivision of the area file (.aas) used by the bots for navigation. It is typically placed in locations that are natural breaks in a map, such as entrances to halls, doors, tunnels, etc. The intent is keep the bot from having to process the entire map at once. As with the the areaportal parameter, the affected brush must touch all the structural brushes surrounding the '''areaportal.'''&lt;br /&gt;
&lt;br /&gt;
== 4.8.4          donotenter ==&lt;br /&gt;
Read as “do not enter.” Like clusterportal, this is a bot-only property. A brush marked with donotenter will not affect non-bot players, but bots will not enter it.  It should be used only when bots appear to have difficulty navigating around some map features.&lt;br /&gt;
&lt;br /&gt;
== 4.8.5          flesh ==&lt;br /&gt;
This will cue different sounds (in a similar manner to metalsteps ) and cause blood to appear instead of bullet impact flashes.&lt;br /&gt;
&lt;br /&gt;
== 4.8.6          fog ==&lt;br /&gt;
Fog defines the brush as being a “fog” brush.  This is a Q3MAP function that chops and identifies all geometry inside the brush. The General shader keyword fogparms must also be specified to tell how to draw the fog.&lt;br /&gt;
&lt;br /&gt;
== 4.8.7          lava ==&lt;br /&gt;
Assigns to the texture the game properties set for lava.  This affects both the surface and the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.8          metalsteps ==&lt;br /&gt;
The player sounds as if he is walking on clanging metal steps or gratings. Other than specifiying '''flesh''', '''metalsteps''', '''nosteps''', or default (i.e.; specify nothing) it is currently not possible for a designer to create or assign a specific sound routine to a texture.  Note: If no sound is set for a texture, then the default footsteps sound routines are heard.&lt;br /&gt;
&lt;br /&gt;
== 4.8.9          nodamage ==&lt;br /&gt;
The player takes no damage if he falls onto a texture with this surfaceparm&lt;br /&gt;
&lt;br /&gt;
== 4.8.10      nodlight ==&lt;br /&gt;
Read as “No ''Dee'' Light”. A texture containing this parameter will not be affected or lit by dynamic lights, such as weapon effects.  And example in ''Quake III Arena''  would be solid lava.&lt;br /&gt;
&lt;br /&gt;
== 4.8.11      nodraw ==&lt;br /&gt;
A texture marked with nodraw will not visually appear in the game world.  Most often used for triggers, clip brushes, origin brushes, and so on.&lt;br /&gt;
&lt;br /&gt;
== 4.8.12      nodrop ==&lt;br /&gt;
When a player dies inside a volume (brush) marked nodrop, no weapon is dropped.  The intend use is for “Pits of Death.”  Have a kill trigger inside a nodrop volume, and when the players die here, they won't drop their weapons. The intent is to prevent unnecessary polygon pileups on the floors of pits.&lt;br /&gt;
&lt;br /&gt;
== 4.8.13      noimpact ==&lt;br /&gt;
World entities will not impact on this texture.  No explosions occur when projectiles strike this surface and no marks will be left on it. Sky textures are usually marked with this texture so those projectiles will not hit the sky and leave marks.&lt;br /&gt;
&lt;br /&gt;
== 4.8.14      nomarks ==&lt;br /&gt;
Projectiles will explode upon contact with this surface, but will not leave marks.  Blood will also not mark this surface.  This is useful to keep lights from being temporarily obscured by battle damage.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' Use this on any surface with a deformVertexes keyword.  Otherwise, the marks will appear on the unmodified surface location of the texture with the surface wriggles and squirms through the marks.&lt;br /&gt;
&lt;br /&gt;
== 4.8.15      nolightmap ==&lt;br /&gt;
This texture does not have a lightmap phase.  It is not affected by the ambient lighting of the world around it. It does not require the addition of an rgbGen identity keyword in that stage.&lt;br /&gt;
&lt;br /&gt;
== 4.8.16      nosteps ==&lt;br /&gt;
The player makes no sound when walking on this texture.&lt;br /&gt;
&lt;br /&gt;
== 4.8.17      nonsolid ==&lt;br /&gt;
This attribute indicates a brush, which does not block the movement of entities in the game world.  It applied to triggers, hint brushes and similar brushes.  This affects the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.18      origin ==&lt;br /&gt;
Used on the “origin”  texture.  Rotating entities need to contain an origin brush in their construction. The brush must be rectangular (or square).  The origin point is the exact center of the origin brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.19      playerclip ==&lt;br /&gt;
Blocks player movement through a '''nonsolid''' texture.  Other game world entities can pass through a brush marked '''playerclip'''. The intended use for this is to block the player but not block projectiles like rockets.&lt;br /&gt;
&lt;br /&gt;
== 4.8.20      slick ==&lt;br /&gt;
This surfaceparm included in a texture should give it significantly reduced friction.&lt;br /&gt;
&lt;br /&gt;
== 4.8.21      slime ==&lt;br /&gt;
Assigns to the texture the game properties for slime. This affects both the surface and the content of a brush.&lt;br /&gt;
&lt;br /&gt;
== 4.8.22      structural ==&lt;br /&gt;
This surface attribute causes a brush to be seen by the Q3MAP process as a possible break-point in a BSP tree.  It is used as a part of the shader for the “hint” texture.  Generally speaking, any opaque texture not marked as “'''detail'''” is by default,  '''structural,''' so you shouldn’t need to specify this.&lt;br /&gt;
&lt;br /&gt;
== 4.8.23      trans ==&lt;br /&gt;
Tells q3map that pre-computed visibility should not be blocked by this surface.  Generally, any shaders that have blendfuncs should be marked as surfaceparm trans.&lt;br /&gt;
&lt;br /&gt;
== 4.8.24      water ==&lt;br /&gt;
Assigns to the texture the game properties for water.&lt;br /&gt;
&lt;br /&gt;
 5         Editor specific shader instructions&lt;br /&gt;
These instructions only affect the texture when it is seen in the [[Q3Radiant]] editor.  They should be grouped with the surface parameters but ahead of them in sequence.&lt;br /&gt;
&lt;br /&gt;
= 5.1        qer_editorimage &amp;lt; texture path/texturename&amp;gt; =&lt;br /&gt;
This keyword creates a shader name in memory, but in the editor, it displays the TGA art image specified in qer_editorimage (in the example below this is textures/eerie/lavahell.tga).&lt;br /&gt;
&lt;br /&gt;
The editor maps a texture using the size attributes of the TGA file used for the editor image. When that editor image represents a shader, any texture used in any of the shader stages will be scaled up or down to the dimensions of the editor image. If a 128x128 pixel image is used to represent the shader in the editor, then a 256x256 image used in a later stage will be shrunk to fit.  A 64x64 image would be stretched to fit. Be sure to check this on bouncy, acceleration, and power-up pads placed on surfaces other than 256 x 256. Use '''tcMod scale''' to change the size of the stretched texture. Remember that '''tcMod scale''' 0.5 0.5 will double your image, while '''tcMod scale''' 2 2 will halve it.&lt;br /&gt;
&lt;br /&gt;
'''Design Notes:'''  The base_light and gothic_light shaders contain numerous uses of this. It can be very useful for making different light styles (mostly to change the light brightnesses) without having  to create a new piece of TGA art for each new shader.&lt;br /&gt;
&lt;br /&gt;
 textures/liquids/lavahell2 //path and name of new texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 qer_editorimage textures/eerie/lavahell.tga&lt;br /&gt;
&lt;br /&gt;
 //based on this&lt;br /&gt;
&lt;br /&gt;
 qer_nocarve&lt;br /&gt;
&lt;br /&gt;
  //cannot be cut by CSG subtract&lt;br /&gt;
&lt;br /&gt;
 surfaceparm noimpact&lt;br /&gt;
&lt;br /&gt;
 //projectiles do not hit it&lt;br /&gt;
&lt;br /&gt;
 surfaceparm lava&lt;br /&gt;
&lt;br /&gt;
 //has the game properties of lava&lt;br /&gt;
&lt;br /&gt;
 surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
 //environment lighting does not affect&lt;br /&gt;
&lt;br /&gt;
 q3map_surfacelight 3000&lt;br /&gt;
&lt;br /&gt;
 //light is emitted&lt;br /&gt;
&lt;br /&gt;
 tessSize 256&lt;br /&gt;
&lt;br /&gt;
 //relatively large triangles&lt;br /&gt;
&lt;br /&gt;
 cull disable&lt;br /&gt;
&lt;br /&gt;
 //no sides are removed&lt;br /&gt;
&lt;br /&gt;
 deformVertexes wave 100 sin 5 5 .5 0.02&lt;br /&gt;
&lt;br /&gt;
 fogparms 0.8519142 0.309723 0.0 128 128&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/eerie/lavahell.tga&lt;br /&gt;
&lt;br /&gt;
 //base texture artwork&lt;br /&gt;
&lt;br /&gt;
 tcMod turb .25 0.2 1 0.02&lt;br /&gt;
&lt;br /&gt;
 //texture is subjected to turbulence&lt;br /&gt;
&lt;br /&gt;
 tcMod scroll 0.1 0.1&lt;br /&gt;
&lt;br /&gt;
 //the turbulence is scrolled&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 5.2        qer_nocarve =&lt;br /&gt;
A brush marked with this instruction will not be affected by CSG subtract functions.  It is especially useful for water and fog textures.&lt;br /&gt;
&lt;br /&gt;
= 5.3        qer_trans &amp;lt;value&amp;gt; =&lt;br /&gt;
This parameter defines the percentage of transparency that a brush will have when seen in the editor (no effect on game rendering at all).  It can have a positive value between 0 and 1.  The higher the value, the less transparent the texture. Example: qer_trans 0.2 means the brush is 20% opaque and nearly invisible.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
'''&lt;br /&gt;
 6         Stage Specific Keywords&lt;br /&gt;
Stage specifications only affect rendering.  Changing any keywords or values within a stage will usually take effect as soon as a vid_restart is executed.  Q3MAP ignores stage specific keywords entirely.&lt;br /&gt;
&lt;br /&gt;
A stage can specify a texture map, a color function, an alpha function, a texture coordinate function, a blend function, and a few other rasterization options.&lt;br /&gt;
&lt;br /&gt;
= 6.1        Texture map specification =&lt;br /&gt;
== 6.1.1          map &amp;lt;texturepath/texturename&amp;gt; ==&lt;br /&gt;
Specifies the source texture map (a 24 or 32-bit TGA file) used for this stage.  The texture may or may not contain alpha channel information.  The special keywords '''$lightmap''' and '''$whiteimage''' may be substituted in lieu of an actual texture map name. In those cases, the texture named in the first line of the shader becomes the texture that supplies the light mapping data for the process.&lt;br /&gt;
&lt;br /&gt;
== $lightmap ==&lt;br /&gt;
This is the overall lightmap for the game world.  It is calculated during the Q3MAP process.  It is the initial color data found in the framebuffer.  Note: due to the use of overbright bits in light calculation, the keyword '''rgbGen identity''' must accompany all '''$lightmap''' instructions.&lt;br /&gt;
&lt;br /&gt;
== $whiteimage ==&lt;br /&gt;
This is used for specular lighting on MD3 models. This is is a white image generated internally by the game.  This image can be used in lieu of $lightmap or an actual texture map if, for example, you wish for the vertex colors to come through unaltered.&lt;br /&gt;
&lt;br /&gt;
== 6.1.2          Clampmap &amp;lt;texturepath&amp;gt; ==&lt;br /&gt;
Dictates that this stage should clamp texture coordinates instead of wrapping them.  During a stretch function, the area, which the texture must cover during a wave cycle, enlarges and decreases.  Instead of repeating a texture multiple times during enlargement (or seeing only a portion of the texture during shrinking) the texture dimensions increase or contract accordingly. This is only relevant when using something like deformTexCoordParms to stretch/compress texture coordinates for a specific special effect.  Remember that the Quake III Arena engine normalizes all texture coordinates (regardless of actual texture size) into a scale of  0.0 to 1.0.&lt;br /&gt;
&lt;br /&gt;
'''Proper Alignment:''' When using '''clampTexCoords''' be make sure the texture is properly aligned on the brush. The '''clampTexCoords''' function keeps the image from tiling. However, the editor doesn’t represent this properly and shows a tiled image. Therefore, what appears to be the correct position may be offset. This is very apparent on anything with a '''tcMod rotate''' and '''clampTexCoords''' function.&lt;br /&gt;
&lt;br /&gt;
'''Avoiding Distortion:''' When seen at a given distance (which can vary, depending on hardware and the size of the texture), the compression phase of a stretch function will cause a “cross”-like visual artifact to form on the modified texture due to the way that textures are reduced.  This occurs because the texture undergoing modification lacks sufficient “empty space” around the displayed (non-black) part of the texture (see figure 2a). To compensate for this, make the non-zero portion of the texture substantially smaller (50% of maximum stretched size -- see figure 2b) than the dimensions of the texture.  Then, write a scaling function (tcScale) into the appropriate shader phase, to enlarge the image to the desired proportion.&lt;br /&gt;
&lt;br /&gt;
The shaders for the bouncy pads (in the sfx.shader file) show the stretch function in use, including the scaling of the stretched texture:&lt;br /&gt;
&lt;br /&gt;
  '''Example: Using clampTexCoords to control a stretching texture'''&lt;br /&gt;
&lt;br /&gt;
 textures/sfx/metalbridge06_bounce&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       //q3map_surfacelight 2000&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nodamage&lt;br /&gt;
&lt;br /&gt;
       q3map_lightimage textures/sfx/jumppadsmall.tga&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 400&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map textures/sfx/metalbridge06_bounce.tga&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map $lightmap&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_dst_color gl_zero&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/sfx/bouncepad01b_layer1.tga&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_one gl_one&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sin .5 .5 0 1.5&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
             clampmap textures/sfx/jumppadsmall.tga&lt;br /&gt;
&lt;br /&gt;
             blendfunc gl_one gl_one&lt;br /&gt;
&lt;br /&gt;
             tcMod stretch sin 1.2 .8 0 1.5&lt;br /&gt;
&lt;br /&gt;
              rgbGen wave square .5 .5 .25 1.5&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       //    END&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 6.1.3          [[AnimMap]] &amp;lt;frequency&amp;gt; &amp;lt;texture1&amp;gt; … &amp;lt;texture8&amp;gt; ==&lt;br /&gt;
The surfaces in the game can be animated by displaying a sequence of 1 to 8 frames (separate texture maps).  These animations are affected by other keyword effects in the same and later shader stages.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;Frequency&amp;gt;:''' the number of times that the animation cycle will repeat within a one second time period.   The larger the value, the more repeats within a second. Animations that should last for more than a second need to be expressed as decimal values.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;texture1&amp;gt; … &amp;lt;texture8&amp;gt;:'''  the texturepath/texture name for each animation frame must be explicitly listed. Up to eight frames (eight separate .tga files) can be used to make an animated sequence.  Each frame is displayed for an equal subdivision of the frequency value.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' ''AnimMap 0.25 animMap 10 textures/sfx/b_flame1.tga textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga'' would be a 4 frame animated sequence, calling each frame in sequence over a cycle length of 4 seconds.  Each frame would be displayed for 1 seconds before the next one is displayed. The cycle repeats after the last frame in sequence is shown.&lt;br /&gt;
&lt;br /&gt;
'''Design Notes:''' To make a texture image appear for an unequal (longer) amount of time (compared to other frames), repeat that frame more than once in the sequence.&lt;br /&gt;
&lt;br /&gt;
 textures/sfx/flameanim_blue&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
        //    *************************************************&lt;br /&gt;
&lt;br /&gt;
       //    *      Blue Flame                               *&lt;br /&gt;
&lt;br /&gt;
       //     *      July 20, 1999 Surface Light 1800         *&lt;br /&gt;
&lt;br /&gt;
       //    *     Please Comment Changes                    *&lt;br /&gt;
&lt;br /&gt;
       //    *************************************************&lt;br /&gt;
&lt;br /&gt;
       qer_editorimage textures/sfx/b_flame7.tga&lt;br /&gt;
&lt;br /&gt;
       q3map_lightimage textures/sfx/b_flame7.tga&lt;br /&gt;
&lt;br /&gt;
       surfaceparm trans&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nomarks&lt;br /&gt;
&lt;br /&gt;
       surfaceparm nolightmap&lt;br /&gt;
&lt;br /&gt;
       cull none&lt;br /&gt;
&lt;br /&gt;
       q3map_surfacelight 1800&lt;br /&gt;
&lt;br /&gt;
        // texture changed to blue flame.... PAJ&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             animMap 10 textures/sfx/b_flame1.tga textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga textures/sfx/b_flame5.tga textures/sfx/b_flame6.tga textures/sfx/b_flame7.tga textures/sfx/b_flame8.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
              rgbGen wave inverseSawtooth 0 1 0 10&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             animMap 10 textures/sfx/b_flame2.tga textures/sfx/b_flame3.tga textures/sfx/b_flame4.tga textures/sfx/b_flame5.tga textures/sfx/b_flame6.tga textures/sfx/b_flame7.tga textures/sfx/b_flame8.tga textures/sfx/b_flame1.tga&lt;br /&gt;
&lt;br /&gt;
              blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sawtooth 0 1 0 10&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map textures/sfx/b_flameball.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_ONE GL_ONE&lt;br /&gt;
&lt;br /&gt;
             rgbGen wave sin .6 .2 0 .6&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 6.2        Blend Functions =&lt;br /&gt;
Blend functions are the keyword commands that tell the ''Quake III Arena'' graphic engine’s renderer how graphic layers are to be mixed together.&lt;br /&gt;
&lt;br /&gt;
== 6.2.1          Simplified blend functions: ==&lt;br /&gt;
The most common blend functions are set up here as simple commands, and should be used unless you really know what you are doing.&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.1         blendfunc add ===&lt;br /&gt;
This is a shorthand command for '''blendfunc gl_one gl_one. ''' Effects like fire and energy are additive.''' '''&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.2         blendfunc filter ===&lt;br /&gt;
This is a shorthand command that can be substituted for either   '''blendfunc gl_dst_color gl_zero''' or '''blendfunc gl_zero gl_src_color'''.  A filter will always result in darker pixels than what is behind it, but it can also remove color selectively.  Lightmaps are filters.&lt;br /&gt;
&lt;br /&gt;
=== 6.2.1.3         blendfunc blend ===&lt;br /&gt;
Shorthand for blendfunc gl_src_alpha gl_one_minus_src_alpha.  This is conventional transparency, where part of the background is mixed with part of the texture.&lt;br /&gt;
&lt;br /&gt;
== 6.2.2          Explicit blend functions: ==&lt;br /&gt;
Getting a handle on this concept is absolutely key to understanding all shader manipulation of graphics.&lt;br /&gt;
&lt;br /&gt;
[[BlendFunc]] or “Blend Function” is the equation at the core of processing shader graphics.  The formula reads as follows:&lt;br /&gt;
&lt;br /&gt;
 '''[Source * &amp;lt;srcBlend&amp;gt;] + [Destination * &amp;lt;dstBlend&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
'''Source''' is usually the RGB color data in a texture TGA file (remember it’s all numbers) modified by any rgbgen and alphagen. In the shader, the source is generally identified by command MAP, followed by the name of the image.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''Destination''' is the color data currently existing in the frame buffer.&lt;br /&gt;
&lt;br /&gt;
Rather than think of the entire texture as a whole, it may be easier to think of the number values that correspond to a single pixel, because that is essentially what the computer is processing … one pixel of the bit map at a time.&lt;br /&gt;
&lt;br /&gt;
The process for calculating the final look of a texture in place in the game world begins with the precalculated lightmap for the area where the texture will be located. This data is in the frame buffer. That is to say, it is the initial data in the '''Destination'''. In an unmanipulated texture (i.e.; one without a special shader script), color information from the texture is combined with the lightmap. In a shader-modified texture, the $lightmap stage must be present for the lightmap to be included in the calculation of the final texture appearance.&lt;br /&gt;
&lt;br /&gt;
Each pass or “stage” of blending is combined (in a cumulative manner) with the color data passed onto it by the previous stage.  How that data combines together depends on the values chosen for the Source Blends and Destination Blends at each stage.  Remember it’s numbers that are being mathematically combined together that are ultimately interpreted as colors.&lt;br /&gt;
&lt;br /&gt;
A general rule is that any '''Source Blend''' other than  '''GL_ONE''' (or '''GL_SRC_ALPHA''' where the alpha channel is entirely white) will cause the Source to become darker.&lt;br /&gt;
&lt;br /&gt;
== 6.2.3          Source Blend &amp;lt;srcBlend&amp;gt; ==&lt;br /&gt;
The following values are valid for the Source Blend part of the equation.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
  '''GL_ONE'''                               This is the value 1.  When multiplied by the '''Source''', the value stays the same the value of the color information does not change.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ZERO'''                             This is the value 0. When multiplied by the '''Source''', all RGB data in the '''Source''' becomes Zero (essentially black).&lt;br /&gt;
&lt;br /&gt;
 '''GL_DST_COLOR'''              This is the value of color data currently in the Destination (frame buffer).  The value of that information depends on the information supplied by previous stages.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_DST_COLOR  ''' This is nearly the same as GL_DST_COLOR except that the value for each component color is inverted by subtracting it from one. (,i.e.; R = 1.0 – DST.R, G = 1.0 – DST.G, B = 1.0 – DST.B, etc.)&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_ALPHA'''               The TGA file being used for the '''Source''' data &amp;lt;u&amp;gt;must have an alpha channel&amp;lt;/u&amp;gt; in addition to its RGB channels (for a total of four channels).  The alpha channel is an 8-bit black and white only channel. An entirely white alpha channel will not darken the '''Source'''.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_SRC_ALPHA   ''' This is the same as GL_SRC_ALPHA except that the value in the alpha channel is inverted by subtracting it from one. (i.e.; A=1.0 – SRC.A)&lt;br /&gt;
&lt;br /&gt;
== 6.2.4          Destination Blend &amp;lt;dstBlend&amp;gt; ==&lt;br /&gt;
The following values are valid for the Destination Blend part of the equation.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE'''                               This is the value 1.  When multiplied by the '''Destination''', the value stays the same the value of the color information does not change.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ZERO'''                             This is the value 0. When multiplied by the '''Destination''', all RGB data in the  '''Destination''' becomes Zero (essentially black).&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_COLOR'''              This is the value of color data currently in the '''Source''' (which is the texture being manipulated here).&lt;br /&gt;
&lt;br /&gt;
  '''GL_ONE_MINUS_SRC_COLOR  ''' This is the value of color data currently in '''Source''', but subtracted from one (i.e.; inverted).&lt;br /&gt;
&lt;br /&gt;
 '''GL_SRC_ALPHA'''               The TGA file being used for the '''Source''' data &amp;lt;u&amp;gt;must have an alpha channel&amp;lt;/u&amp;gt; in addition to its RGB channels (four a total of four channels).  The alpha channel is an 8-bit black and white only channel. An entirely white alpha channel will not darken the '''Source'''.&lt;br /&gt;
&lt;br /&gt;
 '''GL_ONE_MINUS_SRC_ALPHA   ''' This is the same as GL_SRC_ALPHA except that the value in the alpha channel is inverted by subtracting it from one. (i.e.; A=1.0 – SRC.A).&lt;br /&gt;
&lt;br /&gt;
 ''' '''&lt;br /&gt;
&lt;br /&gt;
 '''Doing the Math: The Final Result'''&lt;br /&gt;
&lt;br /&gt;
The product of the '''Source''' side of the equation is added to the product of the '''Destination''' side of the equation.  The sum is then placed into the frame buffer to become the '''Destination''' information for the next stage.   Ultimately, the equation creates a modified color value that is used by other functions to define what happens in the texture when it is displayed in the game world.&lt;br /&gt;
&lt;br /&gt;
== 6.2.5          Default Blend Function ==&lt;br /&gt;
''If no '''blendFunc''' is specified then no blending will take place.''  A warning is generated if any stage after the first stage does not have a '''blendFunc''' specified.&lt;br /&gt;
&lt;br /&gt;
== 6.2.6           Technical Information/Limitations Regarding Blend Modes: ==&lt;br /&gt;
The Riva 128 graphics card supports ONLY the following blend modes:&lt;br /&gt;
&lt;br /&gt;
GL_ONE, GL_ONE&lt;br /&gt;
&lt;br /&gt;
GL_DST_COLOR, GL_ZERO&lt;br /&gt;
&lt;br /&gt;
GL_ZERO, GL_SRC_COLOR&lt;br /&gt;
&lt;br /&gt;
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
Cards running in 16 bit color cannot use any GL_DST_ALPHA blends.&lt;br /&gt;
&lt;br /&gt;
= 6.3        rgbGen &amp;lt;func&amp;gt; =&lt;br /&gt;
There are two color sources for any given shader, the texture file and the vertex colors. Output at any given time will be equal to '''TEXTURE''' multiplied by '''VERTEXCOLOR'''. Most of the time VERTEXCOLOR will default to white (which is a normalized value of 1.0), so output will be TEXTURE (this usually lands in the '''Source''' side of the shader equation).  Sometimes you do the opposite and use TEXTURE = WHITE, but this is only commonly used when doing specular lighting on entities (i.e.; shaders that level designers will probably never create&lt;br /&gt;
&lt;br /&gt;
The most common reason to use rgbGen is to pulsate something. This means that the VERTEXCOLOR will oscillate between two values, and that value will be multiplied (darkening) the texture.&lt;br /&gt;
&lt;br /&gt;
If no rgbGen is specified, either “identityLighting” or “identity” will be selected, depending on which blend modes are used.&lt;br /&gt;
&lt;br /&gt;
Valid &amp;lt;func&amp;gt; parameters are '''wave, identity, identityLighting, entity, oneMinusEntity, fromVertex,''' and '''lightingDiffuse'''.&lt;br /&gt;
&lt;br /&gt;
== 6.3.1          [[RgbGen]] identityLighting ==&lt;br /&gt;
Colors will be (1.0,1.0,1.0) if running without overbright bits (NT, linux, windowed modes), or (0.5, 0.5, 0.5) if running with overbright.  Overbright allows a greater color range at the expense of a loss of precision.  Additive and blended stages will get this by default.&lt;br /&gt;
&lt;br /&gt;
== 6.3.2          rgbGen identity ==&lt;br /&gt;
Colors are assumed to be all white (1.0,1.0,1.0).  All filters stages (lightmaps, etc) will get this by default.&lt;br /&gt;
&lt;br /&gt;
== 6.3.3          rgbGen wave &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amp&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Colors are generated using the specified waveform.  An affected texture with become darker and lighter, but will not change hue. Hue stays constant.   Note that the rgb values for color will not go below 0 (black) or above 1 (white). Valid waveforms are sin, triangle, square, sawtooth and inversesawtooth.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;func&amp;gt; Wave''' forms and their effects:&lt;br /&gt;
&lt;br /&gt;
'''Sin:''' color flows smoothly through changes.&lt;br /&gt;
&lt;br /&gt;
'''Triangle:''' color changes at a constant rate and spends no appreciable time at peaks and valleys.&lt;br /&gt;
&lt;br /&gt;
'''Square:'''  color alternates instantly between its peak and valley values.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' With a positive frequency value, the color changes at a constant rate to the peak then instantly drops to its valley value.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth:''' An inverse sawtooth wave will reverse this, making the ascent immediate (like a square wave) and the decay fall off like a triangle wave.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Baseline value. The initial RGB formula of a color (normalilzed.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amp&amp;gt;'''  Amplitude.  This is the degree of change from the baseline value.  In some cases you will want values outside the 0.0 to 1.0 range, but it will induce clamping (holding at the maximum or minimum value for a time period) instead of continuous change.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See the explanation for phase under the waveforms heading of Key Concepts.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;'''    Frequency.  This is a value (NOT normalized) that indicates peaks per second.&lt;br /&gt;
&lt;br /&gt;
== 6.3.4          [[RgbGen]] entity ==&lt;br /&gt;
Colors are grabbed from the entity’s '''modulate''' field.  This is used for things like explosions.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer.&lt;br /&gt;
&lt;br /&gt;
== 6.3.5           rgbGen oneMinusEntity ==&lt;br /&gt;
Colors are grabbed from 1.0 minus the entity’s modulate field.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer.&lt;br /&gt;
&lt;br /&gt;
== 6.3.6          rgbGen Vertex ==&lt;br /&gt;
Colors are filled in directly by the data from the map or model files.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': rgbGen vertex should be used when you want the RGB values to be computed&lt;br /&gt;
&lt;br /&gt;
for a static model (i.e. mapobject) in the world using precomputed static&lt;br /&gt;
&lt;br /&gt;
lighting from Q3BSP. This would be used on things like the gargoyles, the portal frame,&lt;br /&gt;
&lt;br /&gt;
skulls, and other decorative MD3s put into the Quake III Arena  world.&lt;br /&gt;
&lt;br /&gt;
== 6.3.7          rgbGen oneMinusVertex ==&lt;br /&gt;
As rgbGen vertex, but inverted.&lt;br /&gt;
&lt;br /&gt;
'''Design Note''': This keyword would probably not be used by a level designer&lt;br /&gt;
&lt;br /&gt;
== 6.3.8          rgbGen lightingDiffuse ==&lt;br /&gt;
Colors are computed using a standard diffuse lighting equation. It uses the vertex normals to illuminate the object correctly.&lt;br /&gt;
&lt;br /&gt;
'''Design Note:''' - rgbGen lightingDiffuse is used when you want the RGB values to be&lt;br /&gt;
&lt;br /&gt;
computed for a dynamic model (i.e. non-map object) in the world using&lt;br /&gt;
&lt;br /&gt;
regular in-game lighting. For example, you would specify on shaders for&lt;br /&gt;
&lt;br /&gt;
items, characters, weapons, etc.&lt;br /&gt;
&lt;br /&gt;
= 6.4        [[AlphaGen]] &amp;lt;func&amp;gt; =&lt;br /&gt;
The alpha channel can be specified like the rgb channels.  If not specified, it defaults to 1.0.&lt;br /&gt;
&lt;br /&gt;
== 6.4.1          [[AlphaGen]] portal ==&lt;br /&gt;
This rendering stage keyword is used in conjunction with the surface parameter keyword '''portal'''.  The function accomplishes the  “fade” that causes the scene in the portal to fade from view.  Specifically, it means “Generate alpha values based on the distance from the viewer to the portal.” Use '''alphaGen''' portal on the last rendering pass.&lt;br /&gt;
&lt;br /&gt;
= 6.5        tcGen &amp;lt;coordinate source&amp;gt; =&lt;br /&gt;
Specifies how texture coordinates are generated and where they come from. Valid functions are '''base''', '''lightmap''' and '''environment.'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' = base texture coordinates from the original art.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;lightmap&amp;gt;''' = lightmap texture coordinates&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;environment&amp;gt;''' = Make this object environment mapped.&lt;br /&gt;
&lt;br /&gt;
== 6.5.1          tcGen vector (&amp;lt;sx&amp;gt; &amp;lt;sy&amp;gt; &amp;lt;sz&amp;gt;) (&amp;lt;tx&amp;gt; &amp;lt;ty&amp;gt; &amp;lt;tz&amp;gt;) ==&lt;br /&gt;
New texcoord generation by world projection. This allows you to project a&lt;br /&gt;
&lt;br /&gt;
texture onto a surface in a fixed way, regardless of its orientation.&lt;br /&gt;
&lt;br /&gt;
S coordinates correspond to the “x” coordinates on the texture itself.&lt;br /&gt;
&lt;br /&gt;
T coordinates correspond to the “y” coordinates on the texture itself.&lt;br /&gt;
&lt;br /&gt;
The measurements are in game units.&lt;br /&gt;
&lt;br /&gt;
Example: tcGen vector (0.01 0 0) (0 0.01 0)&lt;br /&gt;
&lt;br /&gt;
This would project a texture with a repeat every 100 units across the X/Y plane.&lt;br /&gt;
&lt;br /&gt;
= 6.6        tcMod &amp;lt;func&amp;gt; &amp;lt;…&amp;gt; =&lt;br /&gt;
Specifies how texture coordinates are modified after they are generated. The valid functions for tcMod are '''rotate, scale, scroll, stretch and transform.'''  '''Transform''' is a function generally reserved for use by programmers who suggest that designers leave it alone.  When using multiple tcMod functions during a stage, place the '''scroll''' command last in order, because it performs a mod operation to save precision, and that can disturb other operations. Texture coordinates are modified in the order in which tcMods are specified.  In other words, if you see:&lt;br /&gt;
&lt;br /&gt;
'''tcMod scale 0.5 0.5'''&lt;br /&gt;
&lt;br /&gt;
'''tcMod scroll 1 1'''&lt;br /&gt;
&lt;br /&gt;
Then the texture coordinates will be '''scaled''' ''then'' '''scrolled.'''&lt;br /&gt;
&lt;br /&gt;
== 6.6.1          tcMod rotate &amp;lt;degrees per per second&amp;gt; ==&lt;br /&gt;
This keyword causes the texture coordinates to rotate. The value is expressed in degrees rotated each second.  A positive value means clockwise rotation.  A negative value means counterclockwise rotation. For example “tcMod rotate 5”  would rotate texture coordinates 5 degrees each second in a clockwise direction.  The texture rotates around the center point of the texture map, so you are rotating a texture with a single repetition, be careful to center it on the brush (unless off-center rotation is desired).&lt;br /&gt;
&lt;br /&gt;
== 6.6.2          tcMod scale &amp;lt;sScale&amp;gt; &amp;lt;tScale&amp;gt; ==&lt;br /&gt;
Resizes (enlarges or shrinks) the texture coordinates by multiplying them against the given factors of &amp;lt;sScale&amp;gt; and &amp;lt;tScale).  The values “s” and “t” conform to the “x” and “y”  values (respectively) as they are found in the original texture TGA.  The values for '''sScale''' and '''tScale''' are NOT normalized.  This means that a value greater than 1.0 will increase the size of the texture.  A positive value less than one will reduce the texture to a fraction of its size and cause it to repeat within the same area as the original texture (Note: see '''clampTexCoords''' for ways to control this).;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' ''tcMod scale 0.5 2'' would cause the texture to repeat twice along its width, but expand to twice its height (in which case half of the texture would be seen in the same area as the original)&lt;br /&gt;
&lt;br /&gt;
== 6.6.3          tcMod scroll &amp;lt;sSpeed&amp;gt; &amp;lt;tSpeed&amp;gt; ==&lt;br /&gt;
Scrolls the texture coordinates with the given speeds. ).  The values  “s” and “t” conform to the “x” and “y” values (respectively) as they are found in the original texture TGA,  The scroll speed is measured in “textures” per second. A “texture” is the dimension of the texture being modified and includes any previous shader modifications to the original TGA). A negative s value would scroll the texture to the left.  A negative t value would scroll the texture down.&lt;br /&gt;
&lt;br /&gt;
Example: tcMod scroll 0.5 -0.5 moves the texture down and right (relative to the TGA files original coordinates) at the rate of a half texture each second of travel.&lt;br /&gt;
&lt;br /&gt;
This should be the LAST tcMod in a stage. Otherwise there may be popping or snapping visual effects in some shaders.&lt;br /&gt;
&lt;br /&gt;
== 6.6.4          tcMod stretch &amp;lt;func&amp;gt; &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;frequency&amp;gt; ==&lt;br /&gt;
Stretches the texture coordinates with the given function.  Stretching is defined as stretching the texture coordinate away from the center of  the polygon and then compressing it towards the center of the polygon&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;:''' A base value of one is the original dimension of the texture when it reaches the stretch stage.  Inserting other values positive or negative in this variable will produce unknown effects.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;:''' This is the measurement of   distance the texture will stretch from the base size.  It is measured, like scroll, in textures.  A value of 1 here will double the size of the texture at its peak.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;:''' See the explanation for phase under the deform vertexes keyword.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;frequency&amp;gt;''': this is wave peaks per second.&lt;br /&gt;
&lt;br /&gt;
 '''Wave Functions &amp;lt;func&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''Sin wave''': the texture expands smoothly to its peak dimension and then shrinks smoothly to its valley dimension in a flowing manner.&lt;br /&gt;
&lt;br /&gt;
'''Triangle wave:''' The textures stretch at a constant rate and spend no appreciable time at the peak or valley points.&lt;br /&gt;
&lt;br /&gt;
'''Square wave:'''  The texture is shown at its peak for the duration of the frequency and then at its valley for the duration of the  frequency.&lt;br /&gt;
&lt;br /&gt;
'''Sawtooth:''' the texture stretches like a triangle wave until it reaches a peak, then instantly drops to the valley, as in a square wave.&lt;br /&gt;
&lt;br /&gt;
'''Inversesawtooth''': this is the reverse of the sawtooth wave.&lt;br /&gt;
&lt;br /&gt;
== 6.6.5          tcMod &amp;lt;transform&amp;gt; &amp;lt;m00&amp;gt; &amp;lt;m01&amp;gt;  &amp;lt;m10&amp;gt; &amp;lt;m11&amp;gt; &amp;lt;t0&amp;gt; &amp;lt;t1&amp;gt; ==&lt;br /&gt;
Transforms each texture coordinate as follows:&lt;br /&gt;
&lt;br /&gt;
S’ = s * m00 + t * m10 + t0&lt;br /&gt;
&lt;br /&gt;
T’ = t * m01 + s * m11 + t1&lt;br /&gt;
&lt;br /&gt;
This is for use by programmers.&lt;br /&gt;
&lt;br /&gt;
== 6.6.6          tcMod turb &amp;lt;base&amp;gt; &amp;lt;amplitude&amp;gt; &amp;lt;phase&amp;gt; &amp;lt;freq&amp;gt; ==&lt;br /&gt;
Applies turbulence to the texture coordinate.  Turbulence is a back and forth churning and swirling effect on the texture.&lt;br /&gt;
&lt;br /&gt;
The parameters for this shader are defined as follows:&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;base&amp;gt;''' Currently undefined.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;amplitude&amp;gt;''' This is essentially the intensity of the disturbance or twisting and squiggling of the texture.&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;phase&amp;gt;''' See the explanation for phase under the '''deform vertexes''' keyword.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;freq&amp;gt;''' Frequency. This value is expressed as repetitions or cycles of the wave per second.  A value of one would cycle once per second.  A value of 10 would cycle 10 times per second.  A value of 0.1 would cycle once every 10 seconds.&lt;br /&gt;
&lt;br /&gt;
= 6.7        depthFunc &amp;lt;func&amp;gt; =&lt;br /&gt;
This controls the depth comparison function used while rendering.   The default is “lequal” (Less than or equal to) where any surface that is at the same depth or closer of an existing surface is drawn. This is used for textures with transparency or translucency.  Under some circumstances you may wish to use “equal”, e.g. for lightmapped grates that are alpha tested (it is also used for mirrors).&lt;br /&gt;
&lt;br /&gt;
= 6.8        depthWrite =&lt;br /&gt;
By default, writes to the depth buffer when depthFunc passes will happen for opaque surfaces and not for translucent surfaces.  Blended surfaces can have the depth writes forced with this function.&lt;br /&gt;
&lt;br /&gt;
= 6.9        Detail =&lt;br /&gt;
This feature was not used in Quake III Arena maps, but should still function.&lt;br /&gt;
&lt;br /&gt;
Designates this stage as a detail texture stage, which means that if the c_var, r_detailtextures, is set to 0 then this stage will be ignored (detail will not be displayed).  This keyword, by itself, does not affect rendering at all.  If you do put in a detail texture, it has to conform to very specific rules.  Specifically, the blendFunc:&lt;br /&gt;
&lt;br /&gt;
'''blendFunc GL_DST_COLOR GL_SRC_COLOR'''&lt;br /&gt;
&lt;br /&gt;
''' '''&lt;br /&gt;
&lt;br /&gt;
This is also the simple blend function: '''blendfunc filter'''&lt;br /&gt;
&lt;br /&gt;
And the average ''intensity'' of the detail texture itself must be around 127.&lt;br /&gt;
&lt;br /&gt;
Detail is used to blend fine pixel detail back into a base texture whose scale has been increased significantly. When detail is written into a set of stage instructions, it allows the stage to be disabled by the c_var console command setting &amp;quot;r_detailtextures 0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A texture whose scale has been increased beyond a 1:1 ratio tends not to have very high frequency content. In other words, one texel can cover a lot of real estate.  Frequency is also known as “detail.”  Lack of detail can appear acceptable if the player never has the opportunity to see the texture at close range. But seen close up, such textures look glaringly wrong within the sharp detail of the Quake III Arena environment. A detail texture solves this problem by taking a noisy &amp;quot;detail&amp;quot; pattern (a tiling texture that appears to have a great deal of surface roughness) and applying it to the base texture at a very densely packed scale (that is, reduced from its normal size). This is done programmatically in the shader, and does not require modification of the base texture. Note that if the detail texture is the same size and scale as the base texture that you may as well just add the detail directly to the base texture. The theory is that the detail texture's scale will be so high compared to the base texture (e.g.; 9 detail texels fitting into 1 base texel) that it is literally impossible to fit that detail into the base texture directly.&lt;br /&gt;
&lt;br /&gt;
For this to work, the rules are as&lt;br /&gt;
&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
 A.)    the lightmap must be rendered first. This is because the subsequent detail texture will be modifying the lightmap in the framebuffer directly;&lt;br /&gt;
&lt;br /&gt;
B.) the detail texture must be rendered next since it modifies the lightmap in the framebuffer&lt;br /&gt;
&lt;br /&gt;
C.) the base texture must be rendered last ;&lt;br /&gt;
&lt;br /&gt;
D.) the detail texture MUST have a mean intensity around 127-129. If it does not then it will modify the displayed texture’s perceived brightness in the world&lt;br /&gt;
&lt;br /&gt;
E.) the detail shader stage MUST have the &amp;quot;'''detail'''&amp;quot; keyword or it will not&lt;br /&gt;
&lt;br /&gt;
be disabled if the user uses the &amp;quot;r_detailtextures 0&amp;quot; setting ;&lt;br /&gt;
&lt;br /&gt;
F.) the detail stage MUST use &amp;quot;blendFunc GL_DST_COLOR GL_SRC_COLOR&amp;quot;.  Any&lt;br /&gt;
&lt;br /&gt;
other [[BlendFunc]] will cause mismatches in brightness between detail and non-detail views.;&lt;br /&gt;
&lt;br /&gt;
G.) the detail stage should scale its textures by some amount (usually between 3 and 12) using &amp;quot;tcMod&amp;quot; to control density. This roughly corresponds to coarseness. A very large number, such as 12, will give very fine detail, however that detail will disappear VERY quickly as the viewer moves away from the wall since it will be MIP mapped away. A very small number, e.g. 3, gives diminishing returns since not enough is brought in when the user gets very close. I'm currently using values between 6 and 9.5. You should use non-integral numbers as much as possible to avoid seeing repeating patterns.&lt;br /&gt;
&lt;br /&gt;
H.) detail textures add one pass of overdraw, so there is a definite performance hit .&lt;br /&gt;
&lt;br /&gt;
I.) detail textures can be shared, so designers may wish to define only a very&lt;br /&gt;
&lt;br /&gt;
small handful of detail textures for common surfaces such as rocks, etc.&lt;br /&gt;
&lt;br /&gt;
An example (non-existent) detail shader is as follows:&lt;br /&gt;
&lt;br /&gt;
'''Example: Texture with Detail'''&lt;br /&gt;
&lt;br /&gt;
 textures/bwhtest/foo&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 // draw the lightmap first&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map $lightmap&lt;br /&gt;
&lt;br /&gt;
 rgbGen identity&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // modify the lightmap in the framebuffer by&lt;br /&gt;
&lt;br /&gt;
 // a highly compressed detail texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/details/detail01.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc GL_DST_COLOR GL_SRC_COLOR&lt;br /&gt;
&lt;br /&gt;
 // YOU MUST USE THIS!!&lt;br /&gt;
&lt;br /&gt;
 detail&lt;br /&gt;
&lt;br /&gt;
 // for the detail to be disabled, this must be present&lt;br /&gt;
&lt;br /&gt;
 tcMod scale 9.1 9.2&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // now slap on the base texture&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
 map textures/castle/blocks11b.tga&lt;br /&gt;
&lt;br /&gt;
 blendFunc filter&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= 6.10    alphaFunc &amp;lt;func&amp;gt; =&lt;br /&gt;
Determines the alpha test function used when rendering this map.  Valid values are GT0, LT128, and GE128.  These correspond to “GREATER THAN 0”, “LESS THAN 128”, and “GREATER THAN OR EQUAL TO 128”.  This function is used when determining if a pixel should be written to the framebuffer.  For example, if GT0 is specified, the only the portions of the texture map with corresponding alpha values greater than zero will be written to the framebuffer.  By default alpha testing is disabled.&lt;br /&gt;
&lt;br /&gt;
Both alpha testing and normal alpha blending can be used to get textures that have see-through parts.  The difference is that alphaFunc is an all-or-nothing test, while blending smoothly blends between opaque and translucent at pixel edges.  Alpha test can also be used with '''depthwrite''', allowing other effects to be conditionally layered on top of just the opaque pixels by setting '''depthFunc''' to equal.&lt;br /&gt;
&lt;br /&gt;
 7         Notes on Alpha Channels&lt;br /&gt;
To use some blend modes of alphaFunc, you must add an alpha channel to your texture files.  Photoshop can do this. Paintshop Pro has the ability to make an alpha channel cannot work directly in to it. In Photoshop you want to set the type to Mask.  Black has a value of 255.  White has a value of 0.  The darkness of a pixel’s alpha value determines the transparency of the corresponding RGB value in the game world. Darker = more transparent.&lt;br /&gt;
&lt;br /&gt;
Care must be taken when reworking textures with alpha channels. Textures without alpha channels are saved as 24 bit images while textures with alpha channels are saved as 32 bit. If you save them out as 24 bit, the alpha channel is erased. Note: Adobe Photoshop will prompt you to save as 32, 24 or 16 bit.  Choose wisely. If you save a texture as 32 bit and you don’t actually have anything in the alpha channel, Quake III Arena may still be forced to use a lower quality texture format (when in 16 bit rendering) than if you had saved it as 24 bit.&lt;br /&gt;
&lt;br /&gt;
To create a texture that has “open” areas, make those areas black in the alpha channel and make white the areas that are to be opaque.  Using gray shades can create varying degrees of opacity/transparency.&lt;br /&gt;
&lt;br /&gt;
Example: An opaque texture with see-through holes knocked in it.&lt;br /&gt;
&lt;br /&gt;
 textures/base_floor/pjgrate1&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
&lt;br /&gt;
       surfaceparm metalsteps&lt;br /&gt;
&lt;br /&gt;
       cull none&lt;br /&gt;
&lt;br /&gt;
       // A GRATE OR GRILL THAT CAN BE SEEN FROM BOTH SIDES&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
             map textures/base_floor/pjgrate1.tga&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA&lt;br /&gt;
&lt;br /&gt;
             alphaFunc GT0&lt;br /&gt;
&lt;br /&gt;
              depthWrite&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
              map $lightmap&lt;br /&gt;
&lt;br /&gt;
             rgbGen identity&lt;br /&gt;
&lt;br /&gt;
             blendFunc GL_DST_COLOR GL_ZERO&lt;br /&gt;
&lt;br /&gt;
             depthFunc equal&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The alpha channel can also be used to merge a texture (including one that contains black) into another image so that the merged art appears to be and opaque decal on a solid surface (unaffected by the surface it appears to sit on), without actually using an alpha function. The following is a very simple example:&lt;br /&gt;
&lt;br /&gt;
 [[Image:OldSiteResourcesQuake3ShaderManual$image003.jpg]]&lt;br /&gt;
 [[Image:OldSiteResourcesQuake3ShaderManual$image002.png]]&lt;br /&gt;
&lt;br /&gt;
 Figure 1&lt;br /&gt;
&lt;br /&gt;
Start with a TGA file image. In this case, a pentagram on a plain white field (figure 1A).  The color of the field surrrounding the image to be merged is not relevant to this process (although having a hard-edged break between the image to be isolated and the field makes the mask making process easier).  Make an alpha channel.  The area of the image to be merged with another image is masked off in white.  The area to be masked out (not used) is pure black (figure 1B).  The image to be merged into is greenfloor.tga (figure 1C).&lt;br /&gt;
&lt;br /&gt;
Make a '''qer_editorimage''' of greenfloor.tga.  This is placed in the frame buffer as the map image for the texture. By using GL_SRC_ALPHA as the source part of the blend equation, the shader adds in only the non-black parts of the pentagram.  Using GL_MINUS_ONE_SRC_ALPHA, the shader inverts the pentagram’s alpha channel and adds in only the non-black parts of  the green floor.&lt;br /&gt;
&lt;br /&gt;
In a like manner, the alpha channel can be used to blend the textures more evenly.  A simple experiment involves using a linear gradiant in the alpha channel (white to black) and merging two textures so they appear to cross fade into each other.&lt;br /&gt;
&lt;br /&gt;
A more complicated experiment would be to take the pentagram in the first example and give it an aliased edge so that the pentagram appeared to fade or blend into the floor.&lt;br /&gt;
&lt;br /&gt;
 8         Troubleshooting Shaders&lt;br /&gt;
&lt;br /&gt;
If a shader is not working, look first for syntax errors.&lt;br /&gt;
&lt;br /&gt;
Are the brackets correctly set?&lt;br /&gt;
&lt;br /&gt;
Do you have too many parameter values on a line?&lt;br /&gt;
&lt;br /&gt;
Are you using a word in a parameter that wants a numerical value?&lt;br /&gt;
&lt;br /&gt;
Are you using a numerical value in a parameter that wants a word?&lt;br /&gt;
&lt;br /&gt;
Are the path names to your textures correct?&lt;br /&gt;
&lt;br /&gt;
Are your texture names correct? There is a chance that the texture name is too long or too complex.  Try renaming a texture with a shorter, simpler name.&lt;br /&gt;
&lt;br /&gt;
 9          Creating New Textures&lt;br /&gt;
                If you are familiar with the required tools, creating new assets for use in Quake III Arena is not particularly difficult.  As a general rule, you should create new directories for each map with names different from the names used by id.  If you are making a map that will be called “H4x0r_D00M”, every directory containing new assets for that map should be titled H4x0r_D00M. This is to try and avoid asset directories overwriting each other as the editor and the game load in assets.&lt;br /&gt;
&lt;br /&gt;
= 9.1        Tools Needed =&lt;br /&gt;
Any combination of graphic programs and plug-ins that can output a 24 bit MS windows compatible Targa (.tga) or JPEG (.jpg) graphic file. If you plan to make textures that will have an alpha channel component (a 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; 8-bit greyscale channel that is used by the shaders to further manipulate the art), you must have a program that can create 32-bit art with that fourth channel.&lt;br /&gt;
&lt;br /&gt;
Adobe Photoshop has the ability to easily create alpha channels.  Paint Shop Pro from JASC (v5.0+) can also make an alpha channel by creating a mask and naming it “alpha”.&lt;br /&gt;
&lt;br /&gt;
Generally speaking, regardless of the program used, we found it best to do most of the art manipulation of the alpha channel in a separate layer or file and then paste it into the alpha channel before saving.&lt;br /&gt;
&lt;br /&gt;
= 9.2        Setting up Files =&lt;br /&gt;
The editor and the game program look for assets to be located along the paths set up in your project file. Start by creating a directory for you new textures by creating file folders to make a directory path as follows: quake3\baseq3\textures\[mymapname]&lt;br /&gt;
&lt;br /&gt;
The installation of [[Q3Radiant]] will create a text document called “shaderlist.txt” in the following path:&lt;br /&gt;
&lt;br /&gt;
quake3\baseq3\scripts\shaderlist.txt&lt;br /&gt;
&lt;br /&gt;
[[Q3Radiant]] will use the contents of this script to grab your new textures for inclusion in the game. The contents of shaderlist.txt document will contain a listing of all the shader documents that were used by id Software to create Quake III Arena.&lt;br /&gt;
&lt;br /&gt;
Since you will obviously want to create your own shaders, you need to put them in separate folders and create a new shader script for them.&lt;br /&gt;
&lt;br /&gt;
If you plan to work on several maps at once and want to distinguish between textures used in each map, simply add additional map names here. For map and mod makers, we STRONGLY recommend that any new shader scripts created use the name of the map or mod in the shader file name. We know we can’t avoid every incident of files overwriting each other, but we certainly can advise you how to try.&lt;br /&gt;
&lt;br /&gt;
Now, in the scripts directory that you just created, create another text file and call it:&lt;br /&gt;
&lt;br /&gt;
                 [mymapname].shader&lt;br /&gt;
&lt;br /&gt;
                This file will contain the shader scripts you write to modify a particular texture.&lt;br /&gt;
&lt;br /&gt;
= 9.3        Rules and Guidelines =&lt;br /&gt;
== 9.3.1          Rules ==&lt;br /&gt;
Follow these rules when creating textures for the Quake III Arena engine:&lt;br /&gt;
&lt;br /&gt;
  ·         Save your textures into your new [map name] directories.&lt;br /&gt;
&lt;br /&gt;
 ·         Don’t use the same names that id used for textures. It will cause problems.&lt;br /&gt;
&lt;br /&gt;
 ·         For best quality, save textures without an alpha channel as 24 bit TARGA files. Using JPEG files can save memory space, but at the risk of losing detail and depth in the texture. JPEG files cannot be used for textures requiring an alpha channel.&lt;br /&gt;
&lt;br /&gt;
 ·          Textures containing an alpha channel must be saved as 32 bit TARGA files.&lt;br /&gt;
&lt;br /&gt;
 ·         If a new texture requires no further manipulation, it does not need a shader script.&lt;br /&gt;
&lt;br /&gt;
 ·         Size textures in powers of 2. Example: 8x8, 16x16, 32x32, 64x64 pixels and so on.&lt;br /&gt;
&lt;br /&gt;
 ·         Textures don’t need to be square. A 32x256 pixel texture is perfectly acceptable.&lt;br /&gt;
&lt;br /&gt;
== 9.3.2          Guidelines ==&lt;br /&gt;
 The following are some things the id designers learned about textures.&lt;br /&gt;
&lt;br /&gt;
 ·         Create textures in “suites” built around one or two large textures with a number of much smaller supporting detail or accent textures.&lt;br /&gt;
&lt;br /&gt;
 ·          Very large textures are possible, but some video cards compress textures larger than 256x256 pixels.&lt;br /&gt;
&lt;br /&gt;
 ·         Textures are grouped alphabetically by name in the texture display window, so you may want to give suites of textures similar names.&lt;br /&gt;
&lt;br /&gt;
 ·         Use the shader function qe3_editorimage to conserve memory when making multiple versions of a single texture (as in the case of a glowing texture with several light values).&lt;br /&gt;
&lt;br /&gt;
 ·         Unless you are creating special effects or textures designed to draw the player’s eye to a specific spot, muted, middle value colors work best with the game engine.&lt;br /&gt;
&lt;br /&gt;
 ·         Extremely busy (a lot of fussy detail) textures can break up or form visually unpleasant patterns when seen at distances.&lt;br /&gt;
&lt;br /&gt;
= 9.4        Making the .pk3 File =&lt;br /&gt;
When you go to distribute your creation to the gaming world, you need to put your newly created map, textures, bot area files, and shader documents into an archive format called a “pk3” file.  You do not need to include the shaderlist.txt file, since that is only used by the editor. You will need to keep the paths to the various assets the same. So your paths should be something like this:&lt;br /&gt;
&lt;br /&gt;
Textures: baseq3/textures/[mymapnamefolder]&lt;br /&gt;
&lt;br /&gt;
Bsp &amp;amp; aas: baseq3/maps/mymapname.bsp , mymapname.aas&lt;br /&gt;
&lt;br /&gt;
Shader scripts: baseq3/scripts/mymapname.shader&lt;br /&gt;
&lt;br /&gt;
You need to use an archiving program call Winzip to make the pk3 file.  Get Winzip from http://www.winzip.com/winzip/winzip.htm&lt;br /&gt;
&lt;br /&gt;
Make a zip archive called mymapname.zip&lt;br /&gt;
&lt;br /&gt;
Zip all the required assets into a zip archive file (Quake III Arena ''DOES'' support compressed pk3 files).&lt;br /&gt;
&lt;br /&gt;
Rename the zip archive to mymapname.pk3&lt;br /&gt;
&lt;br /&gt;
Put it where the Quake III Arena community can find it.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteCredits</id>
		<title>OldSiteCredits</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteCredits"/>
				<updated>2010-07-06T04:26:17Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: breaking WikiName automatic links to temporarily remove broken linking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- ## page was renamed from [[OldSiteCredit]] --&amp;gt;&lt;br /&gt;
'''The             Credits:'''&lt;br /&gt;
&lt;br /&gt;
The who did what             and who does what listing plus exciting and interesting email links.             I can tell you're excited already. Read on adventurous viewer.&lt;br /&gt;
&lt;br /&gt;
'''The             Site Team:'''&lt;br /&gt;
&lt;br /&gt;
[[mailto:rogue13@polycount.com|rogue13]]             - Webmaster and owner of the leadership matrix here at the site. He             can smooze and talk circles around a fire hydrant. Enjoys the             occasional intoxicant. Tries to indulge in modeling and animating             when he can, thanks to the site, not often enough. In real life he's             an architect, but no, he doesn't do levels.&lt;br /&gt;
&lt;br /&gt;
'''[[mailto:wrath@planetquake.com|Wrath]]'''             - Meshsmith supreme. He works by day as a modeler for Sunstorm             Interactive, that means he's a gaming professional, and as a modeler             for himself by night, that makes him happy. Busy as hell, but happy.&lt;br /&gt;
&lt;br /&gt;
[[mailto:hunter@polycount.com|Hunter]]             - General purpose worker on the site. He's teaching himself             modeling, animating and skinning and has a love for the community             that is unequaled. He loves you and your little model too.&lt;br /&gt;
&lt;br /&gt;
'''[[mailto:shadokat@polycount.com|Shado             Kat]]''' - King of the spreadsheet.  Mr. Kat was THE man             behind converting the massive database of reviews and info pages for             the models here in the site. He's even a modeler as well. But to             prove that he's human, he allows himself to be side tracked and             redirected at a high frequency. He's so giving.&lt;br /&gt;
&lt;br /&gt;
[[mailto:phunkyumoto@planetquake.com|Rikki             Knight]] - King of Transformers models. One of the first             hosted sites we had and is always involved in the newest trend in             the modeling community. He's so trendy. He's our Half-Life model             master as well.&lt;br /&gt;
&lt;br /&gt;
[[mailto:shine@polycount.com|Jon             [Shine]] Jones] - the 15 year old whiz kid.  He's a             modeler/animator with some skinning abilities all rolled up into             what looks amazingly like a Pokemon. He deals mostly with giving us             first impressions on the models as they come in for the info pages             for the new models. Don't let his age get in the way, he's got more quality             work behind him than a lot of modelers.&lt;br /&gt;
&lt;br /&gt;
'''[[mailto:spacedog@planetquake.com|SpaceDog]]'''             - General worker on the site. Desperately trying to learn             programming, modeling, skinning, the facts of life all at the same             time in school. His head is set to explode at a predetermined capacity             so don't stand too close if he's working.&lt;br /&gt;
&lt;br /&gt;
'''[[mailto:gotta|get him email addy Bearkub]]'''             - Late night news worker. He works in a server room late on the 3rd             shift. He's rather interested in the entire gaming scene and helps             out by catching the late shift on general news in the community.&lt;br /&gt;
&lt;br /&gt;
'''The Accessory Skin Grunt Team:'''&lt;br /&gt;
&lt;br /&gt;
[[mailto:massivebitch@polycount.com|Massive             Bitch]] -             One of the leaders for the site's accessories. You got issues or questions on skins, sounds, or viewable weapons for player models, then he's your bitch. He came from his own site to the q2pmp as Lead Slave for a while. He's been promoted to Lead Skin Slave. He loves the add-ons and even gets in a little modeling action from time to time when he's un-busy.&lt;br /&gt;
&lt;br /&gt;
[[mailto:soulreaper@polycount.com|Soul Reaper]]             - Our very own Reaper 'o Souls, helps to bring you the very latest in skins technology.  At least, he helps to do that when he's not engrossed with something to do with Sailor Moon.  &amp;lt;span style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;(He's a bit obsessed you know)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[mailto:Kythkin@mac.com|Kythkin]]             - Semi-dedicated out of work Quake3:Arena Skin Grunt.  Master of the Q3:A accessory submissions - If you submit it to him it'd better be good ;)&lt;br /&gt;
&lt;br /&gt;
[[mailto:schwimmelpuckel@polycount.com|SchwimmelPuckel]]             - Professional graphic artist by day / polycount Q3:A skin Commander by night.  This Danish skinner will be using his keen eyes to review our latest skin submissions.  Enough of this - grab a berliner and click on something!&lt;br /&gt;
&lt;br /&gt;
[[mailto:arco2002@hotmail.com|Arco]]             - Arco is new on the skinning scene and has already made a name for  himself on polycount with skinning efforts such as the grim skin for SUW Captain. Q3:A brought him into the skinnin' realm and subsequently to the Accessory Team and we're tickled-pink to have 'im on the team.&lt;br /&gt;
&lt;br /&gt;
[[mailto:leachjb@hotmail.com|Sniper 1]]             - Flight control software engineer for fighter jets by day / Skin Grunt by night. He stumbled onto polycount after Quake3:Arena came out &amp;amp; has been a modeling/skinning freak ever since.  Real life keeps him busy, but there always room for Q-U-A-K-E.&lt;br /&gt;
&lt;br /&gt;
[[mailto:kirin@polycount.com|Kirin]] - Coming from the year 2030, he's usually a night worker. He's working on Q3 modeling and learning the basics about 3D Studio MAX at the same                time. He loves to make skins and also takes care of a beautiful faerie-filled garden in the back yard ... (even though in the year 2047, it's going to be replaced with a large Arena for fragging and the such ... oh well). At least the Quake3 Engine                will still be there ... at least that's what he thinks.&lt;br /&gt;
&lt;br /&gt;
[[mailto:cygnus@computer.org|Cygnus]] 	- As co-director of the [http://www.smackdown.to/ Sactown Smackdown] LAN party, he once downloaded (on a 28.8 modem no less) every model the old Q2PMP had (around 300 at the time) and planted them all on their Quake 2 server.  Now that's love.  As an electronics engineer in real life he has a wicked eye for detail and the curse of being a perfectionist.  He likes good, creative, detailed work, so show him what you've got.&lt;br /&gt;
&lt;br /&gt;
[[mailto:dukester@popi.net|Dukester]] 	- The Grunt is a CNC Punch programmer who lives just outside dallas.  He likes to exclusively skin the fem models and someday hopes to learn how to use PaintShopPro properly. ''&amp;quot;What's a layer?&amp;quot;''  You can find him in the evenings on Mplayer.com drinkin' his Coors Lite ;)&lt;br /&gt;
&lt;br /&gt;
[[mailto:rlyss@yahoo.com|Redlemons]] 	- Red's a high school student in Australia. He's been playing PC games since he was knee-high to a grasshopper, and intends to keep playing until he dies, or id Software falls apart. Whichever comes first.&lt;br /&gt;
&lt;br /&gt;
[[mailto:astrozombie_138@hotmail.com|Astro Zombie]] 	- He's a Former G.I. and Gulf War Veteran and is presently a 3D animation student at The Art Institute International of Portland. He's done some work for a local start-up game company on a game that will probably never see the light of day and is currently a &amp;quot;kept man&amp;quot; as his wife supports the both of them while he focuses on school and prepare his demo reel.&lt;br /&gt;
&lt;br /&gt;
[[mailto:arya@saphiria.net|Arya]] - Is the court jester but can be smart at certain times. She has a wild attitude and learns fast. She'll eventually absorb the information and, if you're unlucky, she'll use it against you. Otherwise, she's just as nice as anyone else, and quite a moral person despite her position as a jester. She hangs around various pubs and bbs'es.&lt;br /&gt;
&lt;br /&gt;
[[mailto:mask@well.com|Ken]] - is a graphic designer who works in multimedia and spends his days building corporate CD ROMS and web sites. He's a good technician, a repressed artist                and can turn out a mean Q3A skin on occasion.&lt;br /&gt;
&lt;br /&gt;
[[mailto:georgiana@gamegirlz.com|Geo]] - A woman of untold beauty. This is literally true, noone's ever told about it. You might visit her [http://www10.ewebcity.com/geo/ website]               to learn more, but steel yourself ! - She'll try to scare you away!&lt;br /&gt;
&lt;br /&gt;
'''Folks             Who Helped Make polycount A Reality:'''&lt;br /&gt;
&lt;br /&gt;
'''Mix''' - web             designer for Game Spy Industries. Came in and laid out all the initial             html and design.&lt;br /&gt;
&lt;br /&gt;
'''Chris Longden'''             - techie for Game Spy Industries. Laid the work on the massive             database and got the site's tech working properly. The guy is a             genius.&lt;br /&gt;
&lt;br /&gt;
'''Stupid Fool'''              - innocently asked if there was anything he could do to help and was             sucked into hours of tedious copy and pasting.&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteResourcesGeneralMiscellaneous</id>
		<title>OldSiteResourcesGeneralMiscellaneous</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteResourcesGeneralMiscellaneous"/>
				<updated>2010-07-06T04:17:27Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: x-large; color: red&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt; all links/emails need to be checked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: x-large; color: red&amp;quot;&amp;gt;!&amp;lt;/span&amp;gt; Gwot's tuts and links Terminator model needs link. try [../../../myweb/models/terminator.htm Terminator]&lt;br /&gt;
&lt;br /&gt;
= General Tutorials =&lt;br /&gt;
* [[3_Dimensional_Tutorials/3D_Exploration%3A_How_to_Display_Textures|3D Exploration: How to Display Textures]] by [http://www.planetquake.com/skindom Skindom]&lt;br /&gt;
* The subject of this baby is the [http://www.us.righthemisphere.com/products/3dexplore/index.htm 3D Exploration] program and its use when displaying textures. Also included are some tips on showing models that don't have textures to display.&lt;br /&gt;
* [[3 Dimensional Tutorials/ASC Exporter Plugin|ASC Exporter Plugin]] by [[Rogue13|rogue13]]&lt;br /&gt;
* Instructs on the use of the ASC exporter for getting Max models into Q2 Modeler for skin generation and compiling to MD2 format.&lt;br /&gt;
* [http://www.sijun.com/dhabih/mainscreen.html dhabih eng's tutorials] by dhabih eng&lt;br /&gt;
* He's got a few nice trips down through his process for producing computer art with a Wacom tablet and Photoshop. I'd link it directly but he's running frames. look around, you'll find lots of good stuff anyways.&lt;br /&gt;
* [http://www.planetquake.com/polycount/cottages/alcor/Truc/Truc.htm Alcor's Clever Ways] by [http://www.planetquake.com/polycount/cottages/alcor/ Alcor]&lt;br /&gt;
* Some great tips from one of our very own, the author of Hellspawn, Witchblade, and the Mask. An absolute plethora of information on all manner of stuff, from skinning, to modeling to animating. Highly recommended.&lt;br /&gt;
* [http://sgs.newsninja.com/Amazon/gwot/ GWOT's Tutorials and Links]&lt;br /&gt;
* The author of the Terminator model has compiled a set of tutorials that he's made as well as a set of link to different links around the community. Definitely worth a look around if you're looking for info on getting started.  He's also pretty competent in 3D Studio MAX and can answer questions from newbies on that program&lt;br /&gt;
* [http://www.converted2.com/dev/index.php3?issue=7 Basic Texture Mapping in MAX 2.x] by [[mailto:shockman/@converted2.com|Shockman]] from the [http:\\chemical.valveworld.com Chemical Existence] TC&lt;br /&gt;
* Discusses basic issues of texture mapping using the standard UV tools inside of MAX.&lt;br /&gt;
* [http://www.loonygames.com/content/1.28/totb/ Character Studio basics] by [[mailto:psteed@idsoftware.com|Paul Steed]] [http://www.loonygames.com/content/1.30/totb/ part two]&lt;br /&gt;
* This is a pair of tutorials on the basics of Character Studio's two parts, Biped and Physique.  If you're looking to learn this plugin for MAX and don't have the manual [cough] for some reason, this is going to be your single best source tutorial for using it in the realm of player models.&lt;br /&gt;
* [http://www.fvfworld.com/features/q3a_mod_02/ FvFWorld's MAX Skinning Tutorial] by [http://www.fvfworld.com FvFWorld]&lt;br /&gt;
* Those of you messing around with Max and need to learn how to get those lovely texture maps on your model properly will want to check this out. The tutorial isn't the end all of skinning methods, but this will get you there nicely if you have no clue to any other way.&lt;br /&gt;
* [http://www.cschell.com/skinmaxtut.html Model Skinning in Max 2.x] by [http://www.cschell.com/ casManG]&lt;br /&gt;
* A pretty straightforward tutorial on skinning a model in MAX. This is sort of outdated by MAX 3, but the principles still work if you find you like this better.&lt;br /&gt;
* [http://www.loonygames.com/content/1.22/totb/index2.shtml Walk cycle animation basics] by [[mailto:psteed@idsoftware.com|Paul Steed]]&lt;br /&gt;
* A basic and succinct tutorial on making a walk cycle for a character.&lt;br /&gt;
* [[3 Dimensional Tutorials/Exporting the Model|Exporting the Model]] by [[Shine|Jon &amp;quot;shine&amp;quot; Jones]]&lt;br /&gt;
* A quick description to get your model from the 3D environment into..er.. another 3D environment, but in the second one you can kill it so it's much higher in the cool points.&lt;br /&gt;
* [[3 Dimensional Tutorials/Introduction to Lightwave|Introduction to Lightwave]] by [[Shine|Jon &amp;quot;shine&amp;quot; Jones]]&lt;br /&gt;
* A very direct tutorial relating to Lightwave.  Lots of tips and information...nothing all that complex or involved, but still a pile of valuable information.&lt;br /&gt;
* [[3 Dimensional Tutorials/Polygon Reduction|Polygon Reduction]] by [[Shine|Jon &amp;quot;shine&amp;quot; Jones]]&lt;br /&gt;
* This one goes through a high polygon count gun and shows some basic ideas and steps on deleting completely unused polygons and reducing polygon detail in areas that its just not needed.  A nice tutorial for all new modelers for the concepts, not just for Lightwave users anymore.&lt;br /&gt;
* [[3 Dimensional Tutorials/Setting up bones|Setting up bones and IK in Lightwave, Part 1]] by [[Shine|Jon &amp;quot;shine&amp;quot; Jones]]&lt;br /&gt;
* IK isn't covered in this first part, but setting up a character with bones is. So if you're lookin' for Lightwave help, then check this one out and don't hesitate to check out all of shine's previous tutorials while you're at it!&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	<entry>
		<id>http://wiki.polycount.com/wiki/OldSiteResourcesGeneralModelingAndAnimation</id>
		<title>OldSiteResourcesGeneralModelingAndAnimation</title>
		<link rel="alternate" type="text/html" href="http://wiki.polycount.com/wiki/OldSiteResourcesGeneralModelingAndAnimation"/>
				<updated>2010-07-06T04:16:58Z</updated>
		
		<summary type="html">&lt;p&gt;CarlosMontero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
'''Modeling and Animation'''&lt;br /&gt;
&lt;br /&gt;
[http://www.machinima.com/articles/modeling_intro_index/ KOWBOY's kickass 3D Studio Max r3 tutorial ]''' - [http://www.cfxweb.net/articles/hugi21/gf3ds01.shtml part 1]''', '''[http://www.cfxweb.net/articles/hugi21/gf3ds02.shtml part 2]''', '''[http://www.cfxweb.net/articles/hugi21/gf3ds03.shtml part 3]''', '''[http://www.cfxweb.net/articles/hugi21/gf3ds04.shtml part 4]''', '''[http://www.cfxweb.net/articles/hugi21/gf3ds05.shtml part 5]''', by [[mailto:kowboy@nextempire.com|Kowboy/Nextempire]]&lt;br /&gt;
  Some 3D Studio Max tutorials that are very good. The first one is targeted toward the beginner and is about the interface. The second is on basic model creation and getting started. Then in the third one we put in textures, then on to dealing with lighting, and finishing up with makin the suckah move. A fairly nice little set. Head over and look.&lt;br /&gt;
&lt;br /&gt;
'''[http://www.planetquake.com/q3manga/modelling_tut1.htm ZeroCartin's Q3 Modelling tutorial in 3ds Max]'''  by [[mailto:zero_cartin@hotmail.com|Zero Cartin]]&lt;br /&gt;
    A quick and dirty tutorial for modeling a torso, arms and head in 3DSMax. Brought to you by the [http://www.planetquake.com/q3manga/ Q3 Manga Mod] folks.&lt;br /&gt;
&lt;br /&gt;
[http://www.users.qwest.net/~hayesbrian/modeling/modeling.htm Milkshape Tutorials] by [http://www.users.qwest.net/~hayesbrian/ Brian &amp;quot;-Iso-&amp;quot; Hayes]&lt;br /&gt;
  A whole bunch of really good tutorials dealing with modeling in Milkshape. If you're a casual game artist without much dough and a good conscience this is probably the best modeling software available. If you're not sure how to use it, turn here. As with all tutorials in this section, many of the ideas presented can be carried to other software packages.&lt;br /&gt;
&lt;br /&gt;
[http://www.gamasutra.com/features/visual_arts/19981113/charmod_01.htm Anatomically Correct Character Modeling] by Stefan Henry-Biskup (courtesy of [http://www.gamasutra.com/ Gamasutra])&lt;br /&gt;
 A really nice tutorial/discussion on the finer points of modeling. Very useful if you're having trouble setting up bones in your bipedal creatures, and just a good resource in general.&lt;br /&gt;
&lt;br /&gt;
 [http://www.planetquake.com/polycount/resources/general/tutorials/SurfaceTools/SurfaceTools.shtml Surface Tools] by Scott A. H. Ruggels&lt;br /&gt;
  This method of construction uses the native splines in Max, for the construction of &amp;quot;cages&amp;quot; that define the shape and volume of an object, and then use those splines to generate a surface, which is then converted to a polygonal mesh. Sound complicated? Well it's quickly becoming one of the most popular methods for constructing models.&lt;br /&gt;
&lt;br /&gt;
[http://machinima.com/articles/modelling_intro_1/ Machinima Modeling Tutorials]''' - [http://machinima.com/articles/modelling_intro_1/ part 1]''', '''[http://machinima.com/articles/modelling_intro_2/ part 2]''', '''[http://machinima.com/articles/modelling_intro_3/ part 3]''', '''[http://machinima.com/articles/modelling_intro_4/ part 4]''', '''[http://machinima.com/articles/modelling_intro_5/ part 5]''', '''[http://machinima.com/articles/modelling_intro_6/ part 6]'''[http://machinima.com/articles/modelling_intro_6/ ] by [http://machinima.com/ Machinima.com]&lt;br /&gt;
   A multi-part article and tutorial on making 3D characters and animations, speifically for use in real-time 3D engines such as the Quake series of engines. These tutorials are based in Milkshape, but the principles can be applied to many modeling packages. The last two installments get kind of game specific.&lt;br /&gt;
&lt;br /&gt;
 [http://www.planetquake.com/caphold/tutorials.html Modeling a Weapon with 3D Studio Max 3.0] by [http://www.planetquake.com/caphold/news.html Capture 'n Hold]&lt;br /&gt;
  A tutorial for modeling weapons and creating mapping coordinates for them.&lt;br /&gt;
&lt;br /&gt;
[http://www.planetquake.com/polycount/cottages/alcor/Truc/Truc.htm Alcor's Clever Ways] by [http://www.planetquake.com/polycount/cottages/alcor/ Alcor]&lt;br /&gt;
  Some great tips from one of our very own, the author of Hellspawn, Witchblade, and the Mask. An absolute plethora of information on all manner of stuff, from skinning, to modeling to animating. Highly recommended.&lt;br /&gt;
&lt;br /&gt;
[http://sgs.newsninja.com/Amazon/gwot/ GWOT's Tutorials and Links]&lt;br /&gt;
  The author of the [../../../myweb/models/terminator.htm Terminator] model has compiled a set of tutorials that he's made as well as a set of link to different links around the community. Definitely worth a look around if you're looking for info on getting started.  He's also pretty competent in 3D Studio MAX and can answer questions from newbies on that program&lt;br /&gt;
&lt;br /&gt;
[http://max3d.3dluvr.com/tutorials/mms/ Mesh Modeling All the Way] by [[mailto:strat@mail.bip.net|Claes Wikdahl]]&lt;br /&gt;
   This tutorial explains the techniques and concepts behind mesh modeling as the author does it. It covers the basics and up, so that even beginners can get the hang of it. At the same time, this is all you need to know to create some really advanced models. This is really good stuff and almost required reading.&lt;br /&gt;
&lt;br /&gt;
[http://www.roguespeardatabase.com/_tutorial/3dmax1.shtml How to Make 3D Weapon Models] by [http://www.roguespeardatabase.com/ The Rogue Spear Database]&lt;br /&gt;
  How to model a gun in Max, pretty much. The concepts discussed in this tutorial can be applied to almost anything, so extrapolate what you may.&lt;br /&gt;
&lt;br /&gt;
[http://www.planethalflife.com/coldfusion/tutorials/intro.htm ColdFusion's Modeling Tutorials] by [[mailto:scarecrow@dial.pipex.com|Scarecrow]] of [http://www.planethalflife.com/coldfusion/ Cold Fusion]&lt;br /&gt;
  Some absolutely wonderful tutorials for modeling, skinning and animating in Max or Milkshape.&lt;br /&gt;
&lt;br /&gt;
[http://www.quake3mods.net/darkstar/tutorials.htm Modeling in Milkshape] by [http://www.quake3mods.net/darkstar/ Darkstar Entertainment]&lt;br /&gt;
  Several tutorials, in .avi format, about modeling in a nice free program that's a viable alternative if you don't have the cash to shell out for the big boys.&lt;br /&gt;
&lt;br /&gt;
[http://www.planetquake.com/polycount/cottages/shadokat/q2mtut.html ShadoKat's Q2Modeler Tutorial] by [[mailto:shadokat@polycount.com|ShadoKat]]&lt;br /&gt;
  Building a box using [[Q2Modeler]], a nice freeware modeling program. More installments are planned, but I wouldn't hold my breath. These are considered to be for the ABSOLUTE beginner.&lt;br /&gt;
&lt;br /&gt;
[http://www.loonygames.com/content/1.13/totb/ Character Modeling] by [[mailto:psteed@idsoftware.com|Paul Steed]]&lt;br /&gt;
  Mr. Steed does a very nice tutorial on basic model creation in MAX. He shows us step by step creation of a character model including a few redos of some sections of the model. The model his called Sleeg, but it very well could be the start of the Sorlag model for Q3A. Comes in 3 parts: [http://www.loonygames.com/content/1.14/totb/ part2] [http://www.loonygames.com/content/1.16/totb/ part3]&lt;br /&gt;
&lt;br /&gt;
[http://members.xoom.com/JohnHsia/tut1/edgeturn.html Edge Turn - Inside 3D MAX / volume 1] by John Hsia&lt;br /&gt;
  Author's Note: Edge turn affects a single, shared edge by redirecting the edge to the other vertices of the two faces.&lt;br /&gt;
&lt;br /&gt;
[http://members.xoom.com/JohnHsia/tut2/extrudearm.html Lets'Grow'Them'Arms - Inside 3D MAX / volume 1] by John Hsia&lt;br /&gt;
  Author's Note: These next few pics will show you how I use extrude in some instances to grow arms. You can basically model your whole character this way, by selecting key faces where the head, arms and legs should be and extrude them out.&lt;br /&gt;
&lt;br /&gt;
[http://www.planetquake.com/polycount/resources/general/tutorials/alphawolf_tut01/lowpolycharacters.shtml Low Polygon Character Generation using 3DSMAX 1.x or 2.0] by [[mailto:Alphawolf@planetquake.com|Andrew &amp;quot;ALPHAwolf&amp;quot; Gilmour]]&lt;br /&gt;
  This tutorial will guide you to build a low poly single mesh character starting with a box. There are various ways of building LPCs and this is just one method.&lt;br /&gt;
  It's gotta be a good place to start if it's coming from ALPHAwolf's brain.&lt;br /&gt;
&lt;br /&gt;
[http://www.3dcafe.com/tuts/shark/shark.htm Low Polygon Modeling In MAX R2.5]&lt;br /&gt;
  Located in the [http://www.3dcafe.com 3D Cafe] by [http://www.platinumpictures.com Platinum Pictures] this modeling tutorial guides users step by step through the process of creating a low polygon shark. To all you budding MAX modelers out there, this could give you a few handy pointers.&lt;br /&gt;
&lt;br /&gt;
[tutorials/Shine_Tut03/PolyReduce.shtml Polygon Reduction] by [[mailto:vertmanip@cander.net|Jon &amp;quot;shine&amp;quot; Jones]]&lt;br /&gt;
  This one goes through a high polygon count gun and shows some basic ideas and steps on deleting completely unused polygons and reducing polygon detail in areas that its just not needed.  A nice tutorial for all new modelers for the concepts, not just for Lightwave users anymore.&lt;br /&gt;
&lt;br /&gt;
[tutorials/Shine_Tut04/Making%20a%20Head.shtml Modeling A Head] by [[mailto:vertmanip@cander.net|Jon &amp;quot;shine&amp;quot; Jones]]&lt;br /&gt;
  Just when you thought you were about to bust from all the LW knowledge you now have, Shine come along with a pin to pop ya with another nice tutorial for you.  The title pretty much says it all.&lt;br /&gt;
&lt;br /&gt;
[http://www.loonygames.com/content/1.28/totb/ Character Studio basics] by [[mailto:psteed@idsoftware.com|Paul Steed]]&lt;br /&gt;
  This is a pair of tutorials on the basics of Character Studio's two parts, Biped and Physique.  If you're looking to learn this plugin for MAX and don't have the manual [cough] for some reason, this is going to be your single best source tutorial for using it in the realm of player models. [http://www.loonygames.com/content/1.30/totb/ part two]&lt;br /&gt;
&lt;br /&gt;
[http://www.planetquake.com/q2pmp/hostings/zedaxis/ Character Studio Tutorials]&lt;br /&gt;
  For those looking to do a little Character Studio-ing, Nemesis has bitch slapped together many incredible Character Studio tutorials. Very useful lessons are going on at his home, [http://www.planetquake.com/q2pmp/hostings/zedaxis/ Zed-Axis], so get a move on!&lt;br /&gt;
&lt;br /&gt;
'''[http://www.loonygames.com/content/1.22/totb/index2.shtml Walk cycle animation basics]''' by [[mailto:psteed@idsoftware.com|Paul Steed]]&lt;br /&gt;
  A basic and succinct tutorial on making a walk cycle for a character.&lt;br /&gt;
&lt;br /&gt;
[tutorials/Shine_Tut05/Setup%20Bones%20Part1.shtml Setting up bones and IK in Lightwave, Part 1] by [[mailto:vertmanip@cander.net|Jon &amp;quot;shine&amp;quot; Jones]]&lt;br /&gt;
  IK isn't covered in this first part, but setting up a character with bones is. So if you're lookin' for Lightwave help, then check this one out and don't hesitate to check out all of shine's previous tutorials while you're at it!&lt;/div&gt;</summary>
		<author><name>CarlosMontero</name></author>	</entry>

	</feed>