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

<channel>
	<title>OGRE 3D &#8211; Larry的午茶時光</title>
	<atom:link href="https://blog.yuyansoftware.com.tw/category/software-management/ogre-3d/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.yuyansoftware.com.tw</link>
	<description></description>
	<lastBuildDate>Thu, 16 Feb 2023 02:46:59 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.yuyansoftware.com.tw/wp-content/uploads/2022/10/favicon-45x45.png</url>
	<title>OGRE 3D &#8211; Larry的午茶時光</title>
	<link>https://blog.yuyansoftware.com.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ogre 3D 1.9 (Ghadamon) Change Log</title>
		<link>https://blog.yuyansoftware.com.tw/2013/11/ogre-3d-1-9-change-log/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sun, 24 Nov 2013 15:13:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/11/24/ogre3d-1-9-ghadamon-change-log/</guid>

					<description><![CDATA[http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Ghad &#8230; ]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.ogre3d.org/tikiwiki/tiki-index.php?page=GhadamonNotes" target="_blank" rel="noopener noreferrer">http://www.ogre3d.org/tikiwiki/tiki-index.php?page=GhadamonNotes</a></p>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"><strong>Core Improvements</strong></div>
<ul style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;">
<li>OgreMain
<ul>
<li>Extract the overlays from OgreMain and transform it into a own overlay component</li>
<li>Progressive Mesh improvements and new Mesh LOD sample.</li>
<li>Loads of documentation updates</li>
<li>Added Mesh::mergeAdjacentTexcoords to collapse two adjacent texcoords into one (i.e. float2 texcoord0 &amp; float2 texcoord1 become float4 texcoord0)</li>
<li>According to the documentation, the default SceneManager ambient light should be black, which is wasn&#39;t though.</li>
<li>SceneManager: updateSceneGraph should happen BEFORE prepareShadowTextures.</li>
<li>AtomicScalar operators should be returning their value. Only affects using GCC or Clang.</li>
<li>New class ProgressiveMeshGenerator to degenerate mesh detail at runtime.</li>
<li>Bug fix for Sphere::merge. Inaccurate results can occur if one sphere does not fully encompass the other.</li>
<li>New LOD strategies &#8216;distance_box&#8217; and &#8216;screen_ratio_pixel_count&#8217;. Details, see Ogre Manual.</li>
<li>SharedPtr moved to use atomics (related API change see below in the porting notes).</li>
<li>SubMesh has a new method: clone(const String&amp; newName, Mesh *parentMesh) to perform deep copies of SubMesh objects. The second parameter is optional and can be used to reparent a SubMesh.</li>
<li>Removed Configfile::load(const String&amp; filename, const String&amp; resourceGroup, const String&amp; separators, bool trimWhitespace) because it can easily be ambiguous. If you wish to load from a resource group, use the existing function loadFromResourceSystem. The arguments are identical to the removed function. See OGRE-175.</li>
</ul>
</li>
<li>New Volume Rendering component with LOD. See&nbsp;<a href="http://www.ogre3d.org/tikiwiki/SoC2012+Volume+Rendering+with+LOD+aimed+at+terrain" rel="noopener noreferrer" style="color: #336633; font-weight: bolder; text-decoration: none;" target="_blank">GSoC 2012 Volume Rendering</a></li>
<li>Many Terrain improvements.See&nbsp;<a href="http://www.ogre3d.org/tikiwiki/SoC2012+Improve+and+Demo+the+Terrain+System" rel="noopener noreferrer" style="color: #336633; font-weight: bolder; text-decoration: none;" target="_blank">GSoC 2012 Terrain Improvements</a></li>
<li>RTSS
<ul>
<li>Changed error handling of RTSS sub-render state parameter creation. Sub-render state now throws exception on errors</li>
<li>Added 2 new demo samples: multiple lights and textured fog</li>
</ul>
</li>
<li>CgProgramManager
<ul>
<li>Added support for high-level output profiles glslv/glslf/glslg and hlslv/hlslf (glslg not fully working yet)&nbsp;&nbsp;</li>
</ul>
</li>
</ul>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"></div>
<p><a name="more"></a><strong><br />
</strong></p>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"><strong>Platform Support</strong></div>
<ul style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;">
<li>Android Port
<ul>
<li>Remove eclipse based android port</li>
<li>CMake based build support</li>
<li>Create find Ant / NDK packages (currently Ant and the NDK must be in the global path)</li>
<li>Generate android make files for the sample browser</li>
<li>Use android tool chain to compile OGRE as static lib</li>
<li>Cleanup RTSS (Remove OgreStringSerialiser)</li>
<li>Improve platform integration
<ul>
<li>Add Android log listener into OgreRoot</li>
<li>Disable Filesystem- / Zip- / EmbeddedZip- Archives on android</li>
<li>Resource system improvements</li>
<li>OgreAPKFileSystemArchive to handle file access inside the APK</li>
<li>OgreAPKZipArchive so we can handle zip files inside the APK (APK is also compressed using zip)</li>
</ul>
</li>
<li>Improve EGL support
<ul>
<li>Create concrete subclasses of EGL-Support/Window/Context</li>
<li>Handle context creation / configs inside OGRE</li>
<li>Resource recreation / Handle it like DX device lost / restore
<ul>
<li>Add managed resource class which every resource derive from (only active on Android &#8211; handled via macros)</li>
<li>Recreation of Texture, Shader, HardwareVertexBuffer</li>
</ul>
</li>
</ul>
</li>
<li>ETC1 texture codec
<ul>
<li>PKM support</li>
</ul>
</li>
<li>Sample browser
<ul>
<li>Add touch input support</li>
<li>Build a APK file via CMake command line</li>
<li>Add rotation support</li>
<li>Fix / Enable more samples
<ul>
<li>Compositor not working</li>
</ul>
</li>
</ul>
</li>
<li>Improve CPU/ vendor detection</li>
<li>Add how to build it on Linux / OSX / Win32</li>
<li>Provide pre-compiled dependencies</li>
<li>Fix our dependencies so the can compile against the android tool chain</li>
</ul>
</li>
<li>Windows Metro style application (WinRT)
<ul>
<li>Add support as a new platform (named WinRT).</li>
<li>Create a WinRT project for the sample browser.</li>
<li>Create a how to compile file.</li>
<li>Get all existing samples to work with the D3D11 render system.
<ul>
<li>Multi monitordevice support.</li>
</ul>
</li>
</ul>
</li>
<li>Windows Phone 8 port.</li>
<li>OS X
<ul>
<li>Add a helper function to get a sandbox friendly temp file name for iOS and OS X.</li>
<li>Other fixes to file handling in response to App Store rules.</li>
<li>Support for building with libc++ on OS X.</li>
<li>Proper example of DisplayLink usage in the SampleBrowser.</li>
<li>Plugins and components are now built as frameworks.</li>
<li>Add escape key as a shortcut for Cancel. Fix crash when hitting cancel as well.</li>
</ul>
</li>
</ul>
<div style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;"><strong>RenderSystems</strong></div>
<ul style="background-color: white; color: #2d2d2d; font-family: Arial, Helvetica, sans-serif; line-height: 19px;">
<li>DirectX 11
<ul>
<li>Improvements from GSoC project.</li>
<li>Add tessellation shaders support.</li>
<li>Add tessellation sample.</li>
<li>Add dynamic linking support.</li>
</ul>
</li>
<li>DirectX 9Ex support</li>
<li>Added OpenGL 3+ RenderSystem. Still marked as experimental and under heavy development.</li>
<li>OpenGL ES
<ul>
<li>GLES 2 terrain support.</li>
<li>OpenGL ES state and uniform caches.</li>
<li>Rewrote PVRTC codec, adding cube map, 3D and mipmap support. Only files created with PVRTexTool are supported now, not Apple&#39;s texturetool utility.</li>
<li>Experimental OpenGL ES 3.0 support.</li>
</ul>
</li>
<li>GL RenderSystem
<ul>
<li>GLEW updated to 1.9.0.</li>
<li>Remove restriction that all GLSL programs have the same matrix order when linking.</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My OGRE 3D working journal vol.6</title>
		<link>https://blog.yuyansoftware.com.tw/2013/03/ogre-3d-6/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Fri, 29 Mar 2013 05:46:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/03/29/my-ogre-working-journal-vol-6/</guid>

					<description><![CDATA[Sample_Ocean The sample demonstrates how the ocean surf &#8230; ]]></description>
										<content:encoded><![CDATA[<p><u><span style="font-size: large;">Sample_Ocean</span></u><br />
<span style="font-size: large;">The sample demonstrates how the ocean surface looks like.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># the sample uses an UI description: &#8220;media/materials/scripts/Ocean.controls&#8221;.</span><br />
<span style="font-size: large;"><i>Sample_Ocean::loadMaterialControlsFile</i> is a nice parser that we can somehow reference.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># Take a look at one of the materials used for ocean: &#8220;Ocean2_Cg&#8221;, which is in &#8220;media/materials/scripts/Ocean.material&#8221;, where there is a cubic texture &#8220;morning.jpg&#8221;, in &#8220;media/packs/cubemapsJS.zip&#8221;. The shaders used in the material:</span><br />
<span style="font-size: large;">Ocean2HLSL_Cg.vert</span><br />
<span style="font-size: large;">&#8211; displace vertex</span><br />
<span style="font-size: large;">&#8211; produce tangent to world matrix</span><br />
<span style="font-size: large;">&#8211; produce normal map sampling index</span><br />
<span style="font-size: large;">Ocean2HLSL_Cg.frag</span><br />
<span style="font-size: large;">&#8211; sample normal map</span><br />
<span style="font-size: large;">&#8211; use the above result to compute the reflection vector, and sample the cubic texture.</span><br />
<span style="font-size: large;">&#8211; use shallow/deep water colors and perspective angles to generate the water color.</span><br />
<span style="font-size: large;">&#8211; use Fresnel factor to blend the above resulting water color and the reflection color (cubic texture sampling result)</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># The sample is also a nice sample of an editor.</span><br />
<span style="font-size: large;"><br />
</span><br />
<a name="more"></a><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_ParticleFX</span></u><br />
<span style="font-size: large;"># <i>mSceneMgr-&gt;createParticleSystem(&#8220;Fireworks&#8221;, &#8220;Examples/Fireworks&#8221;)</i> creates an <i>Ogre::ParticleSystem</i>, which is attached to a scene node.&nbsp;&#8220;Examples/Fireworks&#8221; is in &#8220;media/particle/emitted_emitter.particle&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># The sample also uses other particle template:</span><br />
<span style="font-size: large;">Examples/GreenyNimbus</span><br />
<span style="font-size: large;">Examples/Rain</span><br />
<span style="font-size: large;">Examples/Aureola</span><br />
<span style="font-size: large;">Examples/PurpleFountain</span><br />
<span style="font-size: large;">Examples/PurpleFountain</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># OGRE particle script manual:</span><br />
<a href="http://www.ogre3d.org/docs/manual/manual_34.html"><span style="font-size: large;">http://www.ogre3d.org/docs/manual/manual_34.html</span></a><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_SSAO</span></u><br />
<span style="font-size: large;"># create 2 entities &#8220;sibenik&#8221; and &#8220;cornell&#8221;, w/ mesh &#8220;sibenik.mesh&#8221; and &#8220;cornell.mesh&#8221; individually.</span><br />
<span style="font-size: large;">For both entities, <i>setMaterialName(&#8220;SSAO/GBuffer&#8221;)</i>, where the material is in &#8220;media/materials/scripts/SSAO/GBuffer.material&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># add and enable compositor&nbsp;&#8220;SSAO/GBuffer&#8221;, which is in &#8220;media/materials/scripts/SSAO/SSAO.compositor&#8221;.</span><br />
<i><span style="font-size: large;">CompositorManager::getSingleton().addCompositor(mViewport, &#8220;SSAO/GBuffer&#8221;));</span></i><br />
<i><span style="font-size: large;">CompositorManager::getSingleton().setCompositorEnabled(mViewport, &#8220;SSAO/GBuffer&#8221;, true);</span></i><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># add other compositors but disable them. The compositors include:</span><br />
<span style="font-size: large;">&#8220;SSAO/HemisphereMC&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/Volumetric&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/HorizonBased&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/Crytek&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/CreaseShading&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/UnsharpMask&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/ShowDepth&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/ShowNormals&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/ShowViewPos&#8221;</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># add post filters (they are also compositors) and disable them. The post filters include:</span><br />
<span style="font-size: large;">&#8220;SSAO/Post/NoFilter&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/Post/CrossBilateralFilter&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/Post/SmartBoxFilter&#8221;</span><br />
<span style="font-size: large;">&#8220;SSAO/Post/BoxFilter&#8221;</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># enable &#8220;SSAO/HemisphereMC&#8221; and &#8220;SSAO/Post/NoFilter&#8221;.</span><br />
<span style="font-size: large;">&#8220;SSAO/HemisphereMC&#8221; is in &#8220;media/materials/scripts/SSAO/SSAO.compositor&#8221;.</span><br />
<span style="font-size: large;">&#8220;SSAO/Post/NoFilter&#8221; is in &#8220;media/materials/scripts/SSAO/SSAOPost.compositor&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># The SSAO effect in the CPU client side is pretty simple. I didn&#39;t trace into the shaders deeply, but the flow should be that all the entities render the attributes (position, normal, etc) to a render target (G-buffer), and the actual shading is done as a post effect.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># SSAO references:</span><br />
<a href="http://en.wikipedia.org/wiki/Screen_space_ambient_occlusion"><span style="font-size: large;">http://en.wikipedia.org/wiki/Screen_space_ambient_occlusion</span></a><br />
<a href="http://www.cg.tuwien.ac.at/research/publications/2010/WALLNER-2010-CSSAO/WALLNER-2010-CSSAO-doc.pdf"><span style="font-size: large;">http://www.cg.tuwien.ac.at/research/publications/2010/WALLNER-2010-CSSAO/WALLNER-2010-CSSAO-doc.pdf</span></a><br />
<a href="https://developer.valvesoftware.com/wiki/Screen_Space_Ambient_Occlusion_(SSAO)"><span style="font-size: large;">https://developer.valvesoftware.com/wiki/Screen_Space_Ambient_Occlusion_(SSAO)</span></a><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_ShaderSystem</span></u><br />
<span style="font-size: large;">Demonstrates how OGRE SDK manipulates material, shader, and render state.</span><br />
<span style="font-size: large;"># create entity &#8220;MainEntity&#8221;, w/ mesh &#8220;ShaderSystem.mesh&#8221;, show bounding box.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create entity &#8220;ExportedMaterialEntity&#8221;, w/ mesh &#8220;ShaderSystem.mesh&#8221;, material &#8220;Panels_RTSS_Export&#8221; (material assignment failed).</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create entity &#8220;LayeredBlendingMaterialEntity&#8221;, w/ mesh &#8220;ShaderSystem.mesh&#8221;, material &#8220;RTSS/LayeredBlending&#8221;, which is in &#8220;media/RTShaderLib/materials/RTShaderSystem.material&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create entity &#8220;PerPixelEntity&#8221;, w/ mesh &#8220;knot.mesh&#8221;, material &#8220;RTSS/PerPixel_SinglePass&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create entity &#8220;NormalMapEntity&#8221;, w/ mesh &#8220;knot.mesh&#8221;, material &#8220;RTSS/NormalMapping_SinglePass&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create texture atlas, see <i>createTextureAtlasObject</i></span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># <i>updateSystemShaders</i>&nbsp;programmably creates/sets shader/material/render_state.</span></p>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div>
<div><u><span style="font-size: large;">Sample_Shadows</span></u></div>
<div><span style="font-size: large;">As the sample description says, &#8220;A demonstration of ogre&#39;s various shadowing techniques.&#8221;</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># The OGRE shadow manual:</span></div>
<div><a href="http://www.ogre3d.org/docs/manual/manual_70.html"><span style="font-size: large;">http://www.ogre3d.org/docs/manual/manual_70.html</span></a></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># enum ShadowTechnique (only list the working ones, see the comment in code)</span></div>
<div><span style="font-size: large;">SHADOWTYPE_STENCIL_MODULATIVE,</span></div>
<div><span style="font-size: large;">SHADOWTYPE_STENCIL_ADDITIVE,</span></div>
<div><span style="font-size: large;">SHADOWTYPE_TEXTURE_MODULATIVE,</span></div>
<div><span style="font-size: large;">SHADOWTYPE_TEXTURE_ADDITIVE,</span></div>
<div><span style="font-size: large;">SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED</span></div>
<div><span style="font-size: large;">SHADOWTYPE_TEXTURE_MODULATIVE_INTEGRATED</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># create entity&nbsp;&#8220;athene&#8221;, w/ mesh&nbsp;&#8220;athene.mesh&#8221;, material &#8220;Ogre/DepthShadowmap/Receiver/Athene&#8221;, which is in &#8220;media/materials/scripts/DepthShadowmap.material&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># create N&nbsp;column entities, w/ mesh&nbsp;&#8220;column.mesh&#8221;, material &#8220;&#8221;Examples/Rockwall&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># create entity &#8220;plane&#8221;, w/ plane mesh, material &#8220;Examples/Rockwall&#8221;.&nbsp;</span></div>
<div><i><span style="font-size: large;">setCastShadows(false);</span></i></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># Basically rendering shadows in OGRE is simple. But if you want to program the shadow effects, it takes efforts. For example, here are the shader references in material &#8220;Ogre/DepthShadowmap/Receiver/Athene&#8221;:&nbsp;</span></div>
<div><i><span style="font-size: large;">vertex_program_ref Ogre/DepthShadowmap/NormalMapReceiverVP</span></i></div>
<div><i><span style="font-size: large;">shadow_receiver_vertex_program_ref Ogre/DepthShadowmap/NormalMapReceiverVP</span></i></div>
<div><i><span style="font-size: large;">fragment_program_ref Ogre/DepthShadowmap/NormalMapReceiverFP</span></i></div>
<div><i><span style="font-size: large;">shadow_receiver_fragment_program_ref Ogre/DepthShadowmap/NormalMapReceiverFP</span></i></div>
<div><span style="font-size: large;">(all the above refers to: &#8220;DepthShadowmap.hlsl&#8221;)</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div>
<div><span style="font-size: large;"><br />
</span></div>
<div><u><span style="font-size: large;">Sample_SkeletalAnimation</span></u></div>
<div><span style="font-size: large;">A lovely sample w/ 6 animated ragdolls on a plane.</span></div>
<div><span style="font-size: large;"># <i>Sample_SkeletalAnimation::tweakSneakAnim</i> demonstractes how to edit/modify the animation tracks.</span></div>
<div><span style="font-size: large;"># the model mesh is &#8220;jaiqua.mesh&#8221;, w/ material &#8220;jaiqua&#8221;, in &#8220;media/materials/scripts/Examples.material&#8221;.</span></div>
<div><span style="font-size: large;"># the 6 ragdolls have the same animation asset but w/ diff animation speed, orientation, and position.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><u>Sample_SkyBox </u>&nbsp;</span></div>
<div><span style="font-size: large;">A nice sample w/ a fighter aircraft (but I prefer its head looking into the screen). SkyBox technique has been widely used in the OGRE samples.</span></div>
<div><span style="font-size: large;"># the core function call: <i>mSceneMgr-&gt;setSkyBox(true, &#8220;Examples/SpaceSkyBox&#8221;, 5000);</i></span></div>
<div><span style="font-size: large;">the material is in &#8220;media/materials/scripts/Examples.material&#8221;. If we look into the material, a SkyBox is actually a cubic map mapping to a super large cube in the scene.</span></div>
<div><span style="font-size: large;"># the sample also demonstrates the usage of OGRE <i>ParticleSystem</i> &amp; <i>ParticleEmitter</i>.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
</div>
</div>
<div><span style="font-size: large;"><br />
</span></div>
<div>
<div><u><span style="font-size: large;">Sample_SkyDome</span></u></div>
<div><span style="font-size: large;"># the core function call: <i>mSceneMgr-&gt;setSkyDome(true, &#8220;Examples/CloudySky&#8221;, &#8230;);</i></span></div>
<div><span style="font-size: large;">where the material is in &#8220;media/materials/scripts/Examples.material&#8221;, which contains only a simple jpg.</span></div>
<div><span style="font-size: large;"># see the explanation of <a href="http://www.ogre3d.org/tikiwiki/Basic+Tutorial+3#SkyDomes">http://www.ogre3d.org/tikiwiki/Basic+Tutorial+3#SkyDomes</a></span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><u><span style="font-size: large;">Sample_SkyPlane</span></u></div>
<div><span style="font-size: large;">Instead of the SkyPlane, I think the flying monster model is pretty cool.</span></div>
<div><span style="font-size: large;"># the core function call: <i>mSceneMgr-&gt;setSkyPlane(true, Plane(0, -1, 0, 5000), &#8220;Examples/SpaceSkyPlane&#8221;, 10000, 3);</i></span></div>
<div><span style="font-size: large;">where the material is in &#8220;media/materials/scripts/Examples.material&#8221;, which contains only a simple jpg.</span></div>
<div><span style="font-size: large;"># the flying monster is actually a dragon, w/ mesh &#8220;dragon.mesh&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
</div>
<div><span style="font-size: large;"><br />
</span></div>
<div>
<div><u><span style="font-size: large;">Sample_Smoke</span></u></div>
<div><span style="font-size: large;">A smoking OGRE head goes around the scene.</span></div>
<div><span style="font-size: large;"># core function call: <i>mSceneMgr-&gt;createParticleSystem(&#8220;Smoke&#8221;, &#8220;Examples/Smoke&#8221;);</i></span></div>
<div><span style="font-size: large;">The template is in &#8220;media/particle/smoke.particle&#8221;, and the template uses material &#8220;Examples/Smoke&#8221; and an image &#8220;smokecolors.png&#8221;. The material is in &#8220;media/materials/scripts/smoke.material&#8221;, which contains &#8220;smoke.png&#8221;. It&#39;s obvious &#8220;smoke.png&#8221; is for sprite, while &#8220;smokecolors.png&#8221; is to modulate the smoke color.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><u><span style="font-size: large;">Sample_SphereMapping</span></u></div>
<div><span style="font-size: large;"># uses material &#8220;Examples/SphereMappedRustySteel&#8221;, which is in &#8220;media/materials/scripts/Examples.material&#8221;. The material blends the environment map &#8220;spheremap.png&#8221; with the original texture &#8220;RustySteel.jpg&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><u><span style="font-size: large;">Sample_Terrain</span></u></div>
<div><span style="font-size: large;">A nice sample w/ interesting GUI to concave the terrain. I was trying to concave the terrain beneath the house, but the house didn&#39;t collapse and was floating in the air.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># the reference link (kind of step by step explanation)</span></div>
<div><a href="http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+3&amp;structure=Tutorials#Terrain"><span style="font-size: large;">http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+3&amp;structure=Tutorials#Terrain</span></a></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># how to modify the terrain, see <i>Sample_Terrain::doTerrainModify</i></span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># until now, no idea about how terrain is generated/rendered (I mean, for example, starting from Direct3D). Leave this as future work.</span></div>
</div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div>
<div><u><span style="font-size: large;">Sample_TextureArray</span></u></div>
<div><span style="font-size: large;"># use the material &#8220;Examples/TextureArray&#8221;, which is in &#8220;media/materials/scripts/Examples-Advanced.material&#8221;. The material uses <i>fragment_program_ref Examples/TextureArrayPSasm</i> (assembly language shader)</span></div>
<div><span style="font-size: large;"># texture array is a technique that shader (especially pixel shader) can see multiple textures. In OGRE there seems to be no such &#8220;TextureArray&#8221; class. Instead, it uses general texture generation:</span></div>
<div><span style="font-size: large;"><i>TextureManager::getSingleton().createManual </i>(with input <i>mipmap_num</i> = the texture array size).&nbsp;</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><u><span style="font-size: large;">Sample_TextureFX</span></u></div>
<div><span style="font-size: large;">A demonstration of special texture effects. There are 4 materials used in this sample (in &#8220;media/materials/scripts/Examples.material&#8221;)</span></div>
<div><span style="font-size: large;">&#8220;Examples/OgreDance&#8221;, &nbsp;// anim_texture&nbsp;</span></div>
<div><span style="font-size: large;">&#8220;Examples/OgreParade&#8221;, // scroll_anim</span></div>
<div><span style="font-size: large;">&#8220;Examples/OgreSpin&#8221;, &nbsp; // rotate_anim</span></div>
<div><span style="font-size: large;">&#8220;Examples/OgreWobble&#8221; &nbsp;// wave_xform</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><u><span style="font-size: large;">Sample_Transparency</span></u></div>
<div><span style="font-size: large;">The sample uses &#8220;Examples/WaterStream&#8221;, in &#8220;media/materials/scripts/Examples.material&#8221;, where &#8220;<i>scene_blend add</i>&#8221; is the point.</span></div>
</div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div>
<div><u><span style="font-size: large;">Sample_VolumeTex</span></u></div>
<div><span style="font-size: large;">As the sample comment says: &#8220;Generate 3D julia sets and render them as volume texture&#8221;.</span></div>
<div><span style="font-size: large;"># create texture &#8220;DynaTex&#8221;, w/ texture type TEX_TYPE_3D (Volume Texture).</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># create <i>VolumeRenderable </i>w/ input texture name &#8220;DynaTex&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># create <i>ThingRenderable</i>, w/ material &#8220;Examples/VTDarkStuff&#8221;, which is in &#8220;media/materials/scripts/Examples-DynTex.material&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># each frame the sample calls <i>ThingRenderable::addTime</i>, which updates the local vertex buffer in <i>ThingRenderable</i>.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># <i>Sample_VolumeTex::generate</i> updates the texture buffer of &#8220;DynaTex&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"># <i>VolumeRenderable::initialise</i> creates/fills in the vertex/index buffers, sets render operations,&nbsp;</span></div>
<div><span style="font-size: large;">creates/sets material/technique/pass/texture_unit, texture_unit is assigned the name &#8220;DynaTex&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span><span style="font-size: large;"># The class diagram of this sample:</span></p>
<div style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-basKAR2JHl4/UVUy5pFxNpI/AAAAAAAAAPg/Ud31D02iZK0/s1600/Sample_VolumeTex.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"></span></a></div>
<div style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-DM9fLR-ybpg/UfKQ4E1dtVI/AAAAAAAAAQ8/8fP7LODAUvE/s1600/Sample_VolumeTex.png" style="margin-left: 1em; margin-right: 1em;"><img decoding="async" border="0" src="https://4.bp.blogspot.com/-DM9fLR-ybpg/UfKQ4E1dtVI/AAAAAAAAAQ8/8fP7LODAUvE/s1600/Sample_VolumeTex.png"></a></div>
<p><span style="font-size: large;"><br />
</span></p>
</div>
<div><span style="font-size: large;"><br />
</span></div>
<div><u><span style="font-size: large;">Sample_Water</span></u></div>
<div><span style="font-size: large;">Water simulation w/ ripples.&nbsp;</span></div>
<div><span style="font-size: large;"># creates <i>WaterMesh</i>, defined in this sample. The <i>WaterMesh</i> constructor creates a mesh w/ name &#8220;WaterMesh&#8221; and creates/sets the vertex/index buffers.</span></div>
<div><span style="font-size: large;"><br />
</span><span style="font-size: large;"># creates entity &#8220;WaterEntity&#8221;, w/ mesh &#8220;WaterMesh&#8221;.</span></div>
<div><span style="font-size: large;"><br />
</span><span style="font-size: large;"># each frame calls <i>WaterMesh::updateMesh</i> to update the vertex buffer (including update normal). The algorithm link provided in this sample doesn&#39;t exist.</span></div>
<div><span style="font-size: large;"><br />
</span><span style="font-size: large;"># How does the water know the position of the ogre head and therefore generate ripples?</span></div>
<div><span style="font-size: large;">Each frame <i>Sample_Water::animateHead</i> is called, and in it <i>WaterMesh::push</i> is called.&nbsp;<i>WaterMesh::push&nbsp;</i>pushes 4 vertices around an indicated position (x,y) downward.</span></div>
<div><span style="font-size: large;"><br />
</span><span style="font-size: large;"># There are some materials for water rendering in this sample. Temporarily skip them and leave for future work. &nbsp;</span></div>
</div>
<div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My OGRE 3D working journal vol.5</title>
		<link>https://blog.yuyansoftware.com.tw/2013/03/ogre-3d-5/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sat, 23 Mar 2013 05:46:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/03/23/my-ogre-working-journal-vol-5/</guid>

					<description><![CDATA[Sample_DynTex The sample is pretty impressive to me, be &#8230; ]]></description>
										<content:encoded><![CDATA[<p><u><span style="font-size: large;">Sample_DynTex</span></u><br />
<span style="font-size: large;">The sample is pretty impressive to me, because it generates an elegant scene by simply using dynamic texturing and particle system.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">First I need to clarify that particle system is for snowing, dynamic texturing is for the effect that the user wipes the frost off the window pane. And the above two are independent.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># <i>TextureManager::getSingleton().createManual</i> creates a dynamic texture, &#8220;thaw&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># <i>mSceneMgr-&gt;createParticleSystem</i> creates a particle system &#8220;Snow&#8221;, w/ template name &#8220;Examples/Snow&#8221;, which is in &#8220;file media/particle/Examples.particle&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># <i>mSceneMgr-&gt;createEntity</i> creates an entity &#8220;Plane&#8221;, w/ material &#8220;Examples/Frost&#8221;, which is in &#8220;media/materials/scripts/Examples-DynTex.material&#8221;, where there are 2 textures: &#8220;frost.png&#8221;, &#8220;thaw&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">I have a few thoughts from this sample. In many elegant scenes, the base graphics techniques are actually simple, but why can some people use them well to generate beautiful results? First it&#39;s about experience and knowledge. For example, to achieve a required scene I know that I can try &#8220;method A&#8221; and &#8220;method B&#8221;, and I can refer to what I did in &#8220;case A&#8221;. Second it&#39;s about details. Take the sample for example, it does an effect that a user wipes less frost when the frost is far away from the mouse cursor, and this effect makes users feel natural&nbsp;(compared to wiping in a clear track).</span><br />
<span style="font-size: large;"><br />
</span><br />
<a name="more"></a><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_FacialAnimation</span></u><br />
<span style="font-size: large;">The sample uses &#8220;facial.mesh&#8221;, which has an animation &#8220;Speak&#8221;, and many prepared poses. The sample also create an &nbsp;animation &#8220;Manual&#8221; in run-time. The poses includes:</span><br />
<span style="font-size: large;">Expression_neutral</span><br />
<span style="font-size: large;">Expression_happy</span><br />
<span style="font-size: large;">Expression_sad</span><br />
<span style="font-size: large;">Expression_mad</span><br />
<span style="font-size: large;">A_ShapeKey</span><br />
<span style="font-size: large;">U_ShapeKey</span><br />
<span style="font-size: large;">O_ShapeKey</span><br />
<span style="font-size: large;">E_ShapeKey</span><br />
<span style="font-size: large;">I_ShapeKey</span><br />
<span style="font-size: large;">C_ShapeKey</span><br />
<span style="font-size: large;">W_ShapeKey</span><br />
<span style="font-size: large;">M_ShapeKey</span><br />
<span style="font-size: large;">L_ShapeKey</span><br />
<span style="font-size: large;">F_ShapeKey</span><br />
<span style="font-size: large;">T_ShapeKey</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">When a user operates the GUI, <i>mManualKeyFrame-&gt;updatePoseReference</i> is called to adjust the weighting of each pose.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">The animation system in OGRE:</span><br />
<a href="http://www.ogre3d.org/docs/manual/manual_75.html#Animation"><span style="font-size: large;">http://www.ogre3d.org/docs/manual/manual_75.html#Animation</span></a><br />
<span style="font-size: large;">The &#8220;Manual&#8221; animation in this sample should belong to the pose animation in the vertex animation.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_Fresnel</span></u><br />
<span style="font-size: large;">A nice scene. The objects under the water have the effect of refraction; the walls around have the reflection of water.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create 2 render target textures, w/ names &#8220;refraction&#8221;, &#8220;reflection&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create entity &#8220;Water&#8221;, plane mesh, w/ material &#8220;Examples/FresnelReflectionRefraction&#8221;, where there are 3 textures: &#8220;waves2.dds&#8221;, &#8220;reflection&#8221;, &#8220;refraction&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create entity &#8220;UpperBath&#8221;, w/ mesh &#8220;RomanBathUpper.mesh&#8221;, which is in &#8220;media/packs/fresneldemo.zip&#8221;. One of the sub-mesh materials is &#8220;RomanBath/BlueTile&#8221;, which is in &#8220;media/packs/fresneldemo/RomanBath.material&#8221;, where there is animated texture: &#8220;<i>anim_texture caustic.png 32 5</i>&#8220;. The reflection of water on the walls is made by this.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># The water surface is made by blending two dynamic textures. Making the reflection dynamic texture needs to change the perspective angle: <i>mCamera-&gt;enableReflection(mWaterPlane)</i>.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># By <a href="http://www.3drender.com/glossary/fresneleffect.htm">http://www.3drender.com/glossary/fresneleffect.htm</a></span><br />
<span style="font-size: large;">Fresnel effect is &#8220;the amount of reflectance you see on a surface depends on the viewing angle.&#8221;</span><br />
<span style="font-size: large;">In &#8220;Examples/FresnelReflectionRefraction&#8221;, the shader uses Fresnel factor as the&nbsp;proportion of blending reflection and refraction textures.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_ParticleGS</span></u><br />
<span style="font-size: large;">When I ran the sample, a message box popped up:</span><br />
<span style="font-size: large;">&#8220;Your render system / hardware does not support geometry programs, so you can not run this sample.&#8221;</span><br />
<span style="font-size: large;">Temporarily leave the problem unsolved.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create particle system &#8220;ParticleGSEntity&#8221;, w/ material &#8220;Ogre/ParticleGS/Display&#8221;, which is in &#8220;media/materials/scripts/ParticleGS.material&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create and set an <i>Ogre::ManualObject</i> &#8220;ParticleSeed&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create and set a <i>RenderToVertexBuffer</i> object, w/ material &#8220;Ogre/ParticleGS/Generate&#8221;, which is in &#8220;media/materials/scripts/ParticleGS.material&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create and set a bounding box (<i>Ogre::AxisAlignedBox</i>). </span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># Both &#8220;Ogre/ParticleGS/Display&#8221; and &#8220;Ogre/ParticleGS/Generate&#8221; refer to the shaders in &#8220;media/materials/programs/ParticleGS.cg&#8221;, where the geometry shader &#8220;DisplayParticles_GS&#8221; is for display. This is a nice technique of sprite rendering (compared to computing the positions of N sprites in CPU, and drawing them one by one). Besides, the geometry shader &#8220;GenerateParticles_GS&#8221; is for particle splitting. When I was in school, I did a project about designing the splitting of particles to achieve the effect of smoke, but the computation was in CPU. The geometry shader way is more advanced.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># Another point of the sample: <i>Ogre::RenderToVertexBuffer</i>&nbsp;and <i>Ogre::ManualObject</i>&nbsp;do 2 pass rendering. </span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">The class diagram of Sample_ParticleGS:</span></p>
<div style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-HiP9xbPRyak/UU1DdTMpAbI/AAAAAAAAAPQ/PwMy0z3rL14/s1600/Sample_ParticleGS.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"></span></a></div>
<div style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-ZFBUNYj6AN4/UfKRgKeIhvI/AAAAAAAAARE/T6q491ak2RM/s1600/Sample_ParticleGS.png" style="margin-left: 1em; margin-right: 1em;"><img decoding="async" border="0" src="https://2.bp.blogspot.com/-ZFBUNYj6AN4/UfKRgKeIhvI/AAAAAAAAARE/T6q491ak2RM/s1600/Sample_ParticleGS.png"></a></div>
<p><span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_Grass</span></u><br />
<span style="font-size: large;"># create entity &#8220;Ground&#8221;, w/ plane mesh, material &#8220;Examples/GrassFloor&#8221;, which is in &#8220;media/materials/scripts/Examples.material&#8221;. A simple decal texturing material.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create mesh &#8220;grass&#8221;, w/ material &#8220;Examples/GrassBlades&#8221;, and then entity &#8220;Grass&#8221;. The way of writing vertex/index can be referred to in <i>createGrassMesh</i>. &#8220;Examples/GrassBlades&#8221; uses &#8220;Grass.cg&#8221;, and the effect of grass waving is achieved here in the vertex shader.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># create <i>Ogre::StaticGeometry</i>, w/ name &#8220;Field&#8221;. About <i>Ogre::StaticGeometry</i>:</span><br />
<span style="font-size: large;"><a href="http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Intermediate+Tutorial+5">http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Intermediate+Tutorial+5</a> </span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"># The effect of fireflies in the grass is achieved by sprite (in OGRE, it&#39;s billboard and flare material). The moving track is spline animation track (see the sample of Camera Tracking). Another point is to use a controller to dynamically adjust the lightness and sizes of the billboards. This is about taking care of details to achieve a beautiful scene.</span><br />
<span style="font-size: large;"><br />
</span></p>
<div><span style="font-size: large;"><br />
</span></div>
<p><u><span style="font-size: large;">Sample_Instancing</span></u><br />
<span style="font-size: large;">The sample uses Geometry Instancing to render a large amount of objects, and also compares Instanced Geometry, Static Geometry, with Entity Geometry (directly draw N entities).</span><br />
<span style="font-size: large; white-space: pre;"> </span><br />
<span style="font-size: large;">The remarks of <i>Ogre::StaticGeometry:</i></span><br />
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1StaticGeometry.html#details"><span style="font-size: large;">http://www.ogre3d.org/docs/api/html/classOgre_1_1StaticGeometry.html#details</span></a><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">The remarks of <i>Ogre::InstancedGeometry</i>:</span><br />
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1InstancedGeometry.html#details"><span style="font-size: large;">http://www.ogre3d.org/docs/api/html/classOgre_1_1InstancedGeometry.html#details</span></a><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_Isosurf</span></u><br />
<span style="font-size: large;">The metaball effect using vertex / geometry shaders.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_Lighting</span></u><br />
<span style="font-size: large;">A nice sample. It uses render priority and hardware occlusion query to adjust the lightness of the light flares when they are partially/fully occluded.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">An introduction of hardware occlusion query:</span><br />
<a href="http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter06.html"><span style="font-size: large;">http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter06.html</span></a><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_NewInstancing</span></u><br />
<span style="font-size: large;">Demonstrates how to use <i>Ogre::InstancedManager</i>, which is supposed to be an advanced way compared to the methods in&nbsp;<u>Sample_Instancing.</u></span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">In <i>Sample_NewInstancing::switchInstancingTechnique</i>,</span><br />
<span style="font-size: large;">&#8211; create <i>mCurrentManager</i> (<i>Ogre::InstanceManager</i>), w/ name &#8220;InstanceMgr0&#8221;, mesh name = &#8220;robot.mesh&#8221;, technique = InstanceManager::ShaderBased.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">&#8211; <i>Sample_NewInstancing::createInstancedEntities</i> calls <i>mCurrentManager-&gt;createInstancedEntity</i> 50&#215;50 times, which creates 50&#215;50 <i>Ogre::InstancedEntity</i>(s).</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">The sample can switch materials. One set of the materials:</span><br />
<span style="font-size: large;">static const char *c_materialsTechniques[] =</span><br />
<span style="font-size: large;">{</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &#8220;Examples/Instancing/ShaderBased/Robot&#8221;,</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>&#8220;Examples/Instancing/VTF/Robot&#8221;,</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>&#8220;Examples/Instancing/HWBasic/Robot&#8221;,</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>&#8220;Examples/Instancing/VTF/HW/Robot&#8221;,</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>&#8220;Examples/Instancing/VTF/HW/LUT/Robot&#8221;,</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>&#8220;Examples/Instancing/ShaderBased/Robot&#8221;</span><br />
<span style="font-size: large;">};</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">mapped to (c_materialsTechniques[3] and c_materialsTechniques[4] are both mapped to HWInstancingVTF)</span><br />
<span style="font-size: large;">enum InstancingTechnique</span><br />
<span style="font-size: large;">{</span><br />
<span style="font-size: large;"><span style="white-space: pre;">&nbsp;   </span>ShaderBased,<span style="white-space: pre;">  </span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Any SM 2.0+ @See InstanceBatchShader</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>TextureVTF,<span style="white-space: pre;">  </span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Needs Vertex Texture Fetch &amp; SM 3.0+ @See InstanceBatchVTF</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>HWInstancingBasic,<span style="white-space: pre;"> </span>//Needs SM 3.0+ and HW instancing support @See InstanceBatchHW</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>HWInstancingVTF,<span style="white-space: pre;">  </span>//Needs SM 3.0+, HW instancing support &amp; VTF @See</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//InstanceBatchHW_VTF</span><br />
<span style="font-size: large;"><span style="white-space: pre;">    </span>InstancingTechniquesCount</span><br />
<span style="font-size: large;">};</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">The official article about <i>Ogre::InstancedManager</i>:</span><br />
<a href="http://www.ogre3d.org/forums/viewtopic.php?f=4&amp;t=59902"><span style="font-size: large;">http://www.ogre3d.org/forums/viewtopic.php?f=4&amp;t=59902</span></a><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Vertex Texture Fetch (VTF) related:</span><br />
<a href="http://www.ogre3d.org/docs/manual/manual_24.html"><span style="font-size: large;">http://www.ogre3d.org/docs/manual/manual_24.html</span></a><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">The implementation and meaning of each technique/material pair are not investigated here. Leave them for future research.</span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My OGRE 3D working journal vol.4</title>
		<link>https://blog.yuyansoftware.com.tw/2013/03/ogre-3d-4/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Tue, 19 Mar 2013 13:20:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/03/19/my-ogre-working-journal-vol-4/</guid>

					<description><![CDATA[Sample_Character The sample demonstrates how to get the &#8230; ]]></description>
										<content:encoded><![CDATA[<p><u><span style="font-size: large;">Sample_Character</span></u></p>
<div><span style="font-size: large;">The sample demonstrates how to get the <i>Ogre::AnimationState</i> of each animation from the asset file, and play/stop the animation. The main work of this sample is delegated to the class <i>SinbadCharacterController</i>, and most of the resources used in this sample are in &#8220;mediapacksSinbad.zip&#8221;, which is supposed to be generated by Blender (there is a .blend file in the zip file). &#8220;Sinbad.zip&#8221; includes:</span><br />
<span style="font-size: large;">Sinbad.mesh</span><br />
<span style="font-size: large;">Sinbad.skeleton</span><br />
<span style="font-size: large;">Sinbad.material</span><br />
<span style="font-size: large;">3 tga textures</span><br />
<span style="font-size: large;">Sword.mesh</span></div>
<div><span style="font-size: large;"><br />
</span><span style="font-size: large;">The format of the .mesh file is like:</span><br />
<span style="font-size: large;">&lt;mesh&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &lt;submeshes&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;submesh &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;faces &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;geometry &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;boneassignments &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/submesh&gt;</span></div>
<div><span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;submesh &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;faces &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;geometry &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;boneassignments &#8230;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/submesh&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &#8230;.</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &lt;submeshes&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &lt;skeletonlink name=&#8221;Sinbad.skeleton&#8221; /&gt;</span><br />
<span style="font-size: large;">&lt;/mesh&gt;</span><br />
<span style="font-size: large;"><br />
</span><br />
<a name="more"></a><span style="font-size: large;">The format of the .skeleton file is like:</span><br />
<span style="font-size: large;">&lt;skeleton&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &lt;bones&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;bone id=&#8221;0&#8243; name=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;bone id=&#8221;1&#8243; name=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;bone id=&#8221;2&#8243; name=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &#8230;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &lt;/bones&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp;&nbsp;&lt;bonehierarchy&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &#8230;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &lt;/bonehierarchy&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp;&nbsp;&lt;animations&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;animation name=&#8221;Dance&#8221; length=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;tracks&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;track bone=&#8221;ThumbMed.R&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;track bone=&#8221;IndexFingerMed.R&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;track bone=&#8221;Clavicle.R&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#8230;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tracks&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/animation&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;animation name=&#8221;DrawSwords&#8221; length=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;tracks&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;track bone=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;track bone=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;track bone=&#8221;&#8230;&#8221;&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#8230;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tracks&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/animation&gt;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &#8230;</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &lt;/animations&gt;</span><br />
<span style="font-size: large;">&lt;/skeleton&gt;</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Note:</span><br />
<span style="font-size: large;">1. In <i>SinbadCharacterController::setupBody</i>, <i>sceneMgr-&gt;createMovableObject(&#8220;RibbonTrail&#8221;, &amp;params)</i> is supposed to create an <i>Ogre::RibbonTrail</i>.</span><br />
<span style="font-size: large;">2. fading in/out animation makes the animation more natural (see <i>SinbadCharacterController::fadeAnimations</i>).</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_Compositor</span></u><br />
<span style="font-size: large;">The GUI of this sample has the following effects:</span><br />
<span style="font-size: large;">Bloom</span><br />
<span style="font-size: large;">Glass</span><br />
<span style="font-size: large;">Old TV</span><br />
<span style="font-size: large;">B&amp;W</span><br />
<span style="font-size: large;">Embossed</span><br />
<span style="font-size: large;">Sharpen Edges</span><br />
<span style="font-size: large;">Invert</span><br />
<span style="font-size: large;">Posterize</span><br />
<span style="font-size: large;">Laplace</span><br />
<span style="font-size: large;">Tiling</span><br />
<span style="font-size: large;">Old Movie</span><br />
<span style="font-size: large;">HDR</span><br />
<span style="font-size: large;">Gaussian Blur</span><br />
<span style="font-size: large;">Radial Blur</span><br />
<span style="font-size: large;">ASCII</span><br />
<span style="font-size: large;">Halftone</span><br />
<span style="font-size: large;">Night Vision</span><br />
<span style="font-size: large;">Dither</span><br />
<span style="font-size: large;">Motion Blur</span><br />
<span style="font-size: large;">Heat Vision</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><i>Sample_Compositor::registerCompositors</i> demonstrates how to register the parsed compositors to <i>Ogre::CompositorManager</i>.</span><br />
<span style="font-size: large;">In <i>Sample_Compositor::checkBoxToggled</i>, <i>CompositorManager::getSingleton().setCompositorEnabled</i> can enable/disable certain effect.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Note:</span><br />
<span style="font-size: large;">In <i>Sample_Compositor::createTextures</i>, &#8220;HalftoneVolume&#8221; is created for &#8220;media/materials/scripts/Halftone.material&#8221;; &#8220;DitherTex&#8221; is created for &#8220;media/materials/scripts/Dither.material&#8221;.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_CubeMapping</span></u><br />
<span style="font-size: large;">Material &#8220;Examples/DynamicCubeMap&#8221; indicates that &#8220;ogrehead.mesh&#8221; needs cube mapping, and the cubic texture is generated in the sample.</span><br />
<span style="font-size: large;">The sample also inherits from<i> Ogre::RenderTargetListener</i>, overrides <i>preRenderTargetUpdate</i> and <i>postRenderTargetUpdate</i> methods.</span><br />
<span style="font-size: large;">The sample changes the perspective angles in <i>preRenderTargetUpdate</i> in order to make the cubic texture, and recovers the objects (which was set invisible in <i>preRenderTargetUpdate</i>) in <i>postRenderTargetUpdate</i>.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">Note:</span><br />
<span style="font-size: large;">The creation/destruction of both entity and texture are managed by the OGRE engine, and there is nothing to do in the client side (no containers, no responsibility of destroying them). It&#39;s a nice design. It simplifies the work in the client side, and therefore decreases errors.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_DeferredShading</span></u><br />
<span style="font-size: large;">The message box popped out when I ran the sample:</span><br />
<span style="font-size: large;"><br />
</span></p>
<div style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Q35ZGXWCbcg/UUXFdhwGYyI/AAAAAAAAALk/e_73Fbe8Sis/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D234.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"><img fetchpriority="high" decoding="async" border="0" height="157" src="https://1.bp.blogspot.com/-Q35ZGXWCbcg/UUXFdhwGYyI/AAAAAAAAALk/e_73Fbe8Sis/s400/%E6%9C%AA%E5%91%BD%E5%90%8D234.png" width="400"></span></a></div>
<div style="clear: both; text-align: left;"><span style="font-size: large;"><br />
</span></div>
<div style="clear: both; text-align: left;"><span style="font-size: large;">But it worked normally in another computer. I guess it&#39;s hardware dependent, and temporarily&nbsp;leave it unsolved.&nbsp;</span></div>
<div style="clear: both; text-align: left;"><span style="font-size: large;"><br />
</span></div>
<div style="clear: both; text-align: left;"></div>
<div style="clear: both;"><span style="font-size: large;">The sample demonstrates deferred shading, and uses SSAO (Screen Space Ambient Occlusion) to beautify the output scene (SSAO uses the information in G-buffer as well). OGRE requires plenty of work in the client side to achieve deferred shading, so the code in both the CPU side and shaders is complex. I don&#39;t trace the details here, and only list some reference links and the class diagram I drew. &nbsp;</span></div>
<div style="clear: both;"><span style="font-size: large;"><br />
</span></div>
<div style="clear: both;"><a href="http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Deferred+Shading"><span style="font-size: large;">http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Deferred+Shading</span></a></div>
<div style="clear: both;"><span style="font-size: large;"><a href="http://udn.epicgames.com/Three/DeferredShadingDX11.html">http://udn.epicgames.com/Three/DeferredShadingDX11.html</a></span></div>
<div style="clear: both;"></div>
<div style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-lJ76rThrlIk/UfKSS5ApOzI/AAAAAAAAARQ/Dev9JHf08kU/s1600/deffered_shading.png" style="margin-left: 1em; margin-right: 1em;"><img decoding="async" border="0" src="https://4.bp.blogspot.com/-lJ76rThrlIk/UfKSS5ApOzI/AAAAAAAAARQ/Dev9JHf08kU/s1600/deffered_shading.png"></a></div>
<div style="clear: both;"><span style="font-size: large;"><br />
</span></div>
<div style="clear: both; text-align: center;"></div>
<div style="clear: both; text-align: center;"></div>
<div style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-aCVU1sRJmQc/UUksPpQGn8I/AAAAAAAAAPA/PWzVoWPFTYY/s1600/deffered_shading.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"></span></a></div>
<div style="clear: both;"></div>
<div style="clear: both; text-align: left;"><u><span style="font-size: large;">Sample_DualQuaternion</span></u></div>
<div style="clear: both; text-align: left;"></div>
<div style="clear: both;"><span style="font-size: large;">This is the first time I learn &#8220;dual quaternion skinning&#8221;. It&#39;s a paper in 2008:&nbsp;</span></div>
<div style="clear: both;"><a href="http://isg.cs.tcd.ie/projects/DualQuaternions/"><span style="font-size: large;">http://isg.cs.tcd.ie/projects/DualQuaternions/</span></a></div>
<div style="clear: both;"><span style="font-size: large;"><br />
</span></div>
<div style="clear: both;"><span style="font-size: large;">Reference links:</span></div>
<div style="clear: both;"><a href="http://www.crytek.com/cryengine/presentations/spherical-skinning-with-dual-quaternions-and-qtangents"><span style="font-size: large;">http://www.crytek.com/cryengine/presentations/spherical-skinning-with-dual-quaternions-and-qtangents</span></a></div>
<div style="clear: both;"><a href="http://www.ogre3d.org/tikiwiki/SoC2011+Dual+Quaternion+Skinning"><span style="font-size: large;">http://www.ogre3d.org/tikiwiki/SoC2011+Dual+Quaternion+Skinning</span></a></div>
<div style="clear: both;"><span style="font-size: large;"><br />
</span></div>
<div style="clear: both;"><span style="font-size: large;">In <i>Sample_DualQuaternion::setupModels</i>, the sample switches between &#8220;linear blend skinning&#8221; and &#8220;dual quaternion skinning&#8221; by setting different materials. See: &nbsp;</span></div>
<div style="clear: both;"><span style="font-size: large;">file media/materials/scripts/DualQuaternion.material</span></div>
<div style="clear: both;"><span style="font-size: large;">material spine</span></div>
<div style="clear: both;"><span style="font-size: large;">material spineDualQuat</span></div>
<div></div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My OGRE 3D working journal vol.3</title>
		<link>https://blog.yuyansoftware.com.tw/2013/03/ogre-3d-3/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sat, 16 Mar 2013 12:38:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/03/16/my-ogre-working-journal-vol-3/</guid>

					<description><![CDATA[The following are the materials in the OGRE&#160;media  &#8230; ]]></description>
										<content:encoded><![CDATA[<p><span style="font-size: large;">The following are the materials in the OGRE&nbsp;media folder. I list all of them for the&nbsp;convenience of reference.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/materials/scripts/ASCII.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/ASCII</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/materials/scripts/ASMSwizzle.material</span><br />
<span style="font-size: large;">material Ogre/GPTest/SwizzleASM</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/BlackAndWhite.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/BlackAndWhite</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Bloom.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Blur0</span><br />
<span style="font-size: large;">material Ogre/Compositor/Blur1</span><br />
<span style="font-size: large;">material Ogre/Compositor/BloomBlend</span><br />
<span style="font-size: large;"><br />
</span><br />
<a name="more"></a><span style="font-size: large;">file&nbsp;media/materials/scripts/Bloom2.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/BlurH</span><br />
<span style="font-size: large;">material Ogre/Compositor/BlurV</span><br />
<span style="font-size: large;">material Ogre/Compositor/BloomBlend2</span><br />
<span style="font-size: large;">material Ogre/Compositor/BrightPass2</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/CGSwizzle.material</span><br />
<span style="font-size: large;">material Ogre/GPTest/SwizzleCG</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/CompositorDemo.material</span><br />
<span style="font-size: large;">material CompositorDemo/DebugView</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/DepthShadowmap.material</span><br />
<span style="font-size: large;">material Ogre/DepthShadowmap/Caster/Float</span><br />
<span style="font-size: large;">material Ogre/DepthShadowmap/Receiver/Float</span><br />
<span style="font-size: large;">material Ogre/DepthShadowmap/Receiver/RockWall</span><br />
<span style="font-size: large;">material Ogre/DepthShadowmap/Receiver/Athene</span><br />
<span style="font-size: large;">material Ogre/DepthShadowmap/Receiver/Float/PCF</span><br />
<span style="font-size: large;">material Ogre/DepthShadowmap/Receiver/RockWall/PCF</span><br />
<span style="font-size: large;">material Ogre/DepthShadowmap/Receiver/Athene/PCF</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Dither.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Dither</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/DOF.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/DOF_Blur0</span><br />
<span style="font-size: large;">material Ogre/Compositor/DOF_Blur1</span><br />
<span style="font-size: large;">material Ogre/Compositor/DOF_Blend</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/DualQuaternion.material</span><br />
<span style="font-size: large;">material jaiquaDualQuatTest</span><br />
<span style="font-size: large;">material spine</span><br />
<span style="font-size: large;">material spineDualQuat</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Embossed.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Embossed</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Examples.compositor</span><br />
<span style="font-size: large;">compositor Bloom</span><br />
<span style="font-size: large;">compositor Glass</span><br />
<span style="font-size: large;">compositor &#8220;Old TV&#8221;</span><br />
<span style="font-size: large;">compositor B&amp;W</span><br />
<span style="font-size: large;">compositor Embossed</span><br />
<span style="font-size: large;">compositor &#8220;Sharpen Edges&#8221;</span><br />
<span style="font-size: large;">compositor Invert</span><br />
<span style="font-size: large;">compositor Posterize</span><br />
<span style="font-size: large;">compositor Laplace</span><br />
<span style="font-size: large;">compositor Tiling</span><br />
<span style="font-size: large;">compositor &#8220;Old Movie&#8221;</span><br />
<span style="font-size: large;">compositor HDR</span><br />
<span style="font-size: large;">compositor &#8220;Gaussian Blur&#8221;</span><br />
<span style="font-size: large;">compositor TestMRT</span><br />
<span style="font-size: large;">compositor &#8220;Radial Blur&#8221;</span><br />
<span style="font-size: large;">compositor ASCII</span><br />
<span style="font-size: large;">compositor Halftone</span><br />
<span style="font-size: large;">compositor &#8220;Night Vision&#8221;</span><br />
<span style="font-size: large;">compositor Dither</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Examples.material</span><br />
<span style="font-size: large;">material Examples/SphereMappedRustySteel</span><br />
<span style="font-size: large;">material Examples/OgreLogo</span><br />
<span style="font-size: large;">material Examples/BeachStones</span><br />
<span style="font-size: large;">material Examples/TrippySkyBox</span><br />
<span style="font-size: large;">material Examples/SpaceSkyBox</span><br />
<span style="font-size: large;">material Examples/SceneSkyBox1</span><br />
<span style="font-size: large;">material Examples/SceneCubeMap1</span><br />
<span style="font-size: large;">material Examples/SceneSkyBox2</span><br />
<span style="font-size: large;">material Examples/SceneCubeMap2</span><br />
<span style="font-size: large;">material Examples/CloudyNoonSkyBox</span><br />
<span style="font-size: large;">material Examples/StormySkyBox</span><br />
<span style="font-size: large;">material Examples/EarlyMorningSkyBox</span><br />
<span style="font-size: large;">material Examples/MorningSkyBox</span><br />
<span style="font-size: large;">material Examples/MorningCubeMap</span><br />
<span style="font-size: large;">material Examples/EveningSkyBox</span><br />
<span style="font-size: large;">material Examples/DynamicCubeMap</span><br />
<span style="font-size: large;">material Examples/CloudySky</span><br />
<span style="font-size: large;">material Examples/RustySteel</span><br />
<span style="font-size: large;">material Examples/Chrome</span><br />
<span style="font-size: large;">material Examples/SpaceSkyPlane</span><br />
<span style="font-size: large;">material Examples/OgreDance</span><br />
<span style="font-size: large;">material Examples/OgreParade</span><br />
<span style="font-size: large;">material Examples/OgreSpin</span><br />
<span style="font-size: large;">material Examples/OgreWobble</span><br />
<span style="font-size: large;">material Examples/BumpyMetal</span><br />
<span style="font-size: large;">material Examples/WaterStream</span><br />
<span style="font-size: large;">material Examples/Flare</span><br />
<span style="font-size: large;">material Examples/Flare2</span><br />
<span style="font-size: large;">material Examples/Flare3</span><br />
<span style="font-size: large;">material Examples/FlarePointSprite</span><br />
<span style="font-size: large;">material Examples/Droplet</span><br />
<span style="font-size: large;">material Examples/Hilite/Yellow</span><br />
<span style="font-size: large;">material Examples/Rocky</span><br />
<span style="font-size: large;">material Examples/10PointBlock</span><br />
<span style="font-size: large;">material Material__25</span><br />
<span style="font-size: large;">material &#8220;2 &#8211; Default&#8221;</span><br />
<span style="font-size: large;">material &#8220;Material #8&#8221;</span><br />
<span style="font-size: large;">material &#8220;Material #3&#8221;</span><br />
<span style="font-size: large;">material &#8220;Material #9&#8221;</span><br />
<span style="font-size: large;">material Examples/Fish</span><br />
<span style="font-size: large;">material Examples/Ninja</span><br />
<span style="font-size: large;">material Examples/Robot</span><br />
<span style="font-size: large;">material Examples/GrassFloor</span><br />
<span style="font-size: large;">material Examples/GrassBladesShadowCaster</span><br />
<span style="font-size: large;">material Examples/GrassBladesShadowReceiver</span><br />
<span style="font-size: large;">material Examples/GrassBladesAdditiveFloatTransparentBest</span><br />
<span style="font-size: large;">material Examples/GrassBladesAdditiveFloatTransparent</span><br />
<span style="font-size: large;">material Examples/GrassBladesAdditiveFloat</span><br />
<span style="font-size: large;">material Examples/GrassBladesAdditive</span><br />
<span style="font-size: large;">material Examples/GrassBlades</span><br />
<span style="font-size: large;">material Examples/Rockwall</span><br />
<span style="font-size: large;">material Examples/Aureola</span><br />
<span style="font-size: large;">material Examples/HardwareMorphAnimation</span><br />
<span style="font-size: large;">material Examples/HardwarePoseAnimation</span><br />
<span style="font-size: large;">material Examples/HardwareMorphAnimationWithNormals</span><br />
<span style="font-size: large;">material Examples/HardwarePoseAnimationWithNormals</span><br />
<span style="font-size: large;">material RustyBarrel</span><br />
<span style="font-size: large;">material WoodPallet</span><br />
<span style="font-size: large;">material Examples/LightRibbonTrail</span><br />
<span style="font-size: large;">material Examples/TudorHouse</span><br />
<span style="font-size: large;">material jaiqua</span><br />
<span style="font-size: large;">material Examples/Plane/IntegratedShadows</span><br />
<span style="font-size: large;">material Examples/ShowUV</span><br />
<span style="font-size: large;">material Examples/ShowTangents</span><br />
<span style="font-size: large;">material Examples/ShowNormals</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Examples-Advanced.material</span><br />
<span style="font-size: large;">material Examples/CelShading</span><br />
<span style="font-size: large;">material Examples/BumpMapping/MultiLight</span><br />
<span style="font-size: large;">material Examples/BumpMapping/MultiLightSpecular</span><br />
<span style="font-size: large;">material Examples/BumpMapping/MultiLightTangentParity</span><br />
<span style="font-size: large;">material Examples/GeneralTexProjection</span><br />
<span style="font-size: large;">material Examples/FresnelReflectionRefraction</span><br />
<span style="font-size: large;">material Examples/Athene/NormalMapped</span><br />
<span style="font-size: large;">material Examples/Athene/Basic</span><br />
<span style="font-size: large;">material Examples/Athene/NormalMappedSpecular</span><br />
<span style="font-size: large;">material Examples/TextureArray</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Examples-DynTex.material</span><br />
<span style="font-size: large;">material Examples/Frost</span><br />
<span style="font-size: large;">material Examples/VTDarkStuff</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Examples-Water.material</span><br />
<span style="font-size: large;">material Examples/Water0</span><br />
<span style="font-size: large;">material Examples/Water1</span><br />
<span style="font-size: large;">material Examples/Water2</span><br />
<span style="font-size: large;">material Examples/Water3</span><br />
<span style="font-size: large;">material Examples/Water4</span><br />
<span style="font-size: large;">material Examples/Water5</span><br />
<span style="font-size: large;">material Examples/Water6</span><br />
<span style="font-size: large;">material Examples/Water7</span><br />
<span style="font-size: large;">material Examples/Water8</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Example-Water.material</span><br />
<span style="font-size: large;">material Examples/Water0</span><br />
<span style="font-size: large;">material Examples/Water1</span><br />
<span style="font-size: large;">material Examples/Water2</span><br />
<span style="font-size: large;">material Examples/Water3</span><br />
<span style="font-size: large;">material Examples/Water4</span><br />
<span style="font-size: large;">material Examples/Water5</span><br />
<span style="font-size: large;">material Examples/Water6</span><br />
<span style="font-size: large;">material Examples/Water7</span><br />
<span style="font-size: large;">material Examples/Water8</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/facial.material</span><br />
<span style="font-size: large;">material drbunsen_head</span><br />
<span style="font-size: large;">material drbunsen_eye</span><br />
<span style="font-size: large;">material drbunsen_teeth</span><br />
<span style="font-size: large;">material drbunsen_tongue</span><br />
<span style="font-size: large;">material drbunsen_gums</span><br />
<span style="font-size: large;">material drbunsen_glasses</span><br />
<span style="font-size: large;">material drbunsen_glasses_frame</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Glass.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/GlassPass</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/GLSLSwizzle.material</span><br />
<span style="font-size: large;">material Ogre/GPTest/SwizzleGLSL</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Halftone.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Halftone</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/hdr.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/HDR/Downsample2x2Luminence</span><br />
<span style="font-size: large;">material Ogre/Compositor/HDR/Downsample3x3</span><br />
<span style="font-size: large;">material Ogre/Compositor/HDR/Downsample3x3Brightpass</span><br />
<span style="font-size: large;">material Ogre/Compositor/HDR/GaussianBloom</span><br />
<span style="font-size: large;">material Ogre/Compositor/HDR/ToneMapping</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/HeatVision.material</span><br />
<span style="font-size: large;">material Fury/HeatVision/HeatCaster</span><br />
<span style="font-size: large;">material Fury/HeatVision/ColdCaster</span><br />
<span style="font-size: large;">material Fury/HeatVision/LightToHeat</span><br />
<span style="font-size: large;">material Fury/HeatVision/Blur</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Hurt.material</span><br />
<span style="font-size: large;">material RedQuad</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/HW_VTF_LUTInstancing.material</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/LUT/shadow_caster</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/LUT/shadow_caster_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/LUT/shadow_caster_dq_two_weights</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/LUT/Robot</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/LUT/Robot_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/LUT/spine_dq_two_weights</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/HW_VTFInstancing.material</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/shadow_caster</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/shadow_caster_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/shadow_caster_dq_two_weights</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/Robot</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/Robot_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/HW/spine_dq_two_weights</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/HWInstancing.material</span><br />
<span style="font-size: large;">material Examples/Instancing/HWBasic/shadow_caster</span><br />
<span style="font-size: large;">material Examples/Instancing/HWBasic/Robot</span><br />
<span style="font-size: large;">material Examples/Instancing/HWBasic/spine</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/InstancingMisc.material</span><br />
<span style="font-size: large;">material Examples/Instancing/Misc/Grass</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Invert.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Invert</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/IsoSurf.material</span><br />
<span style="font-size: large;">material Ogre/IsoSurf/TessellateTetrahedra</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Laplace.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Laplace</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/MotionBlur.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Combine</span><br />
<span style="font-size: large;">material Ogre/Compositor/Copyback</span><br />
<span style="font-size: large;">material Ogre/Compositor/MotionBlur</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/MRTtest.material</span><br />
<span style="font-size: large;">material Ogre/MRTtest/scene</span><br />
<span style="font-size: large;">material Ogre/MRTtest/quad</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/NightVision.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/NightVision</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Ocean.material</span><br />
<span style="font-size: large;">material OceanHLSL_GLSL</span><br />
<span style="font-size: large;">material OceanCg</span><br />
<span style="font-size: large;">material Ocean2_Cg</span><br />
<span style="font-size: large;">material Ocean2_HLSL_GLSL</span><br />
<span style="font-size: large;">material SkyBox</span><br />
<span style="font-size: large;">material LightFlare</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/OffsetMapping.material</span><br />
<span style="font-size: large;">material Examples/OffsetMapping/Specular</span><br />
<span style="font-size: large;">material Examples/OffsetMapping/IntegratedShadows</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Ogre.material</span><br />
<span style="font-size: large;">material Ogre/Earring</span><br />
<span style="font-size: large;">material Ogre/Skin</span><br />
<span style="font-size: large;">material Ogre/Tusks</span><br />
<span style="font-size: large;">material Ogre/Eyes</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/OldMovie.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/OldMovie</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/OldTV.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/OldTV</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/ParticleGS.material</span><br />
<span style="font-size: large;">material Ogre/ParticleGS/Generate</span><br />
<span style="font-size: large;">material Ogre/ParticleGS/Display</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Penguin.material</span><br />
<span style="font-size: large;">material Penguin</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Posterize.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Posterize</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/pssm.material</span><br />
<span style="font-size: large;">material PSSM/shadow_caster</span><br />
<span style="font-size: large;">material PSSM/Plane</span><br />
<span style="font-size: large;">material PSSM/Knot</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/RadialBlur.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Radial_Blur</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/RZR-002.material</span><br />
<span style="font-size: large;">material RZR-002</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/ShaderInstancing.material</span><br />
<span style="font-size: large;">material Examples/Instancing/ShaderBased/shadow_caster</span><br />
<span style="font-size: large;">material Examples/Instancing/ShaderBased/shadow_caster_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/ShaderBased/shadow_caster_dq_two_weights</span><br />
<span style="font-size: large;">material Examples/Instancing/ShaderBased/Robot</span><br />
<span style="font-size: large;">material Examples/Instancing/ShaderBased/Robot_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/ShaderBased/spine_dq_two_weights</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/ShaderSystem.material</span><br />
<span style="font-size: large;">material Panels</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/shadows.material</span><br />
<span style="font-size: large;">material Ogre/shadow/depth/caster</span><br />
<span style="font-size: large;">material Ogre/shadow/depth/integrated/pssm</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SharpenEdges.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/SharpenEdges</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/sibenik.material</span><br />
<span style="font-size: large;">material sibenik/Default</span><br />
<span style="font-size: large;">material sibenik/poplocenje</span><br />
<span style="font-size: large;">material sibenik/kuce</span><br />
<span style="font-size: large;">material sibenik/staklo_zuto</span><br />
<span style="font-size: large;">material sibenik/kamen_zid_prozor</span><br />
<span style="font-size: large;">material sibenik/pod-rub</span><br />
<span style="font-size: large;">material sibenik/staklo_plavo</span><br />
<span style="font-size: large;">material sibenik/staklo_crveno</span><br />
<span style="font-size: large;">material sibenik/sprljci</span><br />
<span style="font-size: large;">material sibenik/staklo_zeleno</span><br />
<span style="font-size: large;">material sibenik/rozeta</span><br />
<span style="font-size: large;">material sibenik/kamen_zid_parape</span><br />
<span style="font-size: large;">material sibenik/zid_vani</span><br />
<span style="font-size: large;">material sibenik/glas</span><br />
<span style="font-size: large;">material sibenik/pod</span><br />
<span style="font-size: large;">material sibenik/pod_tepih</span><br />
<span style="font-size: large;">material sibenik/stupovi</span><br />
<span style="font-size: large;">material sibenik/kamen_zid</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/smoke.material</span><br />
<span style="font-size: large;">material Examples/Smoke</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/Tiling.material</span><br />
<span style="font-size: large;">material Ogre/Compositor/Tiling</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/VarianceShadowmap.material</span><br />
<span style="font-size: large;">material VarianceShadowMapping/ShadowCaster</span><br />
<span style="font-size: large;">material VarianceShadowMapping/ShadowReceiver</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/VTFInstancing.material</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/shadow_caster</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/shadow_caster_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/shadow_caster_dq_two_weights</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/Robot</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/Robot_dq</span><br />
<span style="font-size: large;">material Examples/Instancing/VTF/spine_dq_two_weights</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/CreaseShading.material</span><br />
<span style="font-size: large;">material SSAO/CreaseShading</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/Crytek.material</span><br />
<span style="font-size: large;">material SSAO/Crytek</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/GBuffer.material</span><br />
<span style="font-size: large;">material SSAO/GBuffer</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/HemisphereMC.material</span><br />
<span style="font-size: large;">material SSAO/HemisphereMC</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/HorizonBased.material</span><br />
<span style="font-size: large;">material SSAO/HorizonBased</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/ShowDepth.material</span><br />
<span style="font-size: large;">material SSAO/ShowDepth</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/ShowNormals.material</span><br />
<span style="font-size: large;">material SSAO/ShowNormals</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/ShowViewPos.material</span><br />
<span style="font-size: large;">material SSAO/ShowViewPos</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/SSAO.compositor</span><br />
<span style="font-size: large;">compositor SSAO/GBuffer</span><br />
<span style="font-size: large;">compositor SSAO/Volumetric</span><br />
<span style="font-size: large;">compositor SSAO/HemisphereMC</span><br />
<span style="font-size: large;">compositor SSAO/HorizonBased</span><br />
<span style="font-size: large;">compositor SSAO/Crytek</span><br />
<span style="font-size: large;">compositor SSAO/CreaseShading</span><br />
<span style="font-size: large;">compositor SSAO/UnsharpMask</span><br />
<span style="font-size: large;">compositor SSAO/ShowNormals</span><br />
<span style="font-size: large;">compositor SSAO/ShowDepth</span><br />
<span style="font-size: large;">compositor SSAO/ShowViewPos</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/SSAOPost.compositor</span><br />
<span style="font-size: large;">compositor SSAO/Post/NoFilter</span><br />
<span style="font-size: large;">compositor SSAO/Post/BoxFilter</span><br />
<span style="font-size: large;">compositor SSAO/Post/SmartBoxFilter</span><br />
<span style="font-size: large;">compositor SSAO/Post/CrossBilateralFilter</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/SSAOPost.material</span><br />
<span style="font-size: large;">material SSAO/Post/NoFilter</span><br />
<span style="font-size: large;">material SSAO/Post/BoxFilter</span><br />
<span style="font-size: large;">material SSAO/Post/SmartBoxFilter</span><br />
<span style="font-size: large;">material SSAO/HorizonBased/CrossBilateralFilter/X</span><br />
<span style="font-size: large;">material SSAO/HorizonBased/CrossBilateralFilter/Y</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/UnsharpMask.material</span><br />
<span style="font-size: large;">material SSAO/UnsharpMask/GaussianBlurX</span><br />
<span style="font-size: large;">material SSAO/UnsharpMask/GaussianBlurY</span><br />
<span style="font-size: large;">material SSAO/UnsharpMask</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file&nbsp;media/materials/scripts/SSAO/Volumetric.material</span><br />
<span style="font-size: large;">material SSAO/Volumetric</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/DeferredShadingMedia/deferred.compositor</span><br />
<span style="font-size: large;">compositor DeferredShading/GBuffer</span><br />
<span style="font-size: large;">compositor DeferredShading/ShowLit</span><br />
<span style="font-size: large;">compositor DeferredShading/ShowColour</span><br />
<span style="font-size: large;">compositor DeferredShading/ShowNormals</span><br />
<span style="font-size: large;">compositor DeferredShading/ShowDepthSpecular</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/DeferredShadingMedia/deferred_post.material</span><br />
<span style="font-size: large;">material DeferredShading/AmbientLight</span><br />
<span style="font-size: large;">material DeferredShading/Post/ShowNormal</span><br />
<span style="font-size: large;">material DeferredShading/Post/ShowDS</span><br />
<span style="font-size: large;">material DeferredShading/Post/ShowColour</span><br />
<span style="font-size: large;">material DeferredShading/Post/SimpleQuad</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/DeferredShadingMedia/deferred_post_minilight.material</span><br />
<span style="font-size: large;">material DeferredShading/LightMaterial/Geometry</span><br />
<span style="font-size: large;">material DeferredShading/LightMaterial/GeometryShadow</span><br />
<span style="font-size: large;">material DeferredShading/LightMaterial/Quad</span><br />
<span style="font-size: large;">material DeferredShading/LightMaterial/QuadShadow</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/DeferredShadingMedia/deferreddemo.material</span><br />
<span style="font-size: large;">material DeferredDemo/SkyBox</span><br />
<span style="font-size: large;">material DeferredDemo/Ground</span><br />
<span style="font-size: large;">material DeferredDemo/RockWall</span><br />
<span style="font-size: large;">material DeferredDemo/DeferredAthena</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/DeferredShadingMedia/ShadowCaster.material</span><br />
<span style="font-size: large;">material DeferredShading/Shadows/Caster</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/DeferredShadingMedia/ssao.compositor</span><br />
<span style="font-size: large;">compositor DeferredShading/SSAO</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/DeferredShadingMedia/ssao.material</span><br />
<span style="font-size: large;">material ssao</span><br />
<span style="font-size: large;">material ssaoBlurX</span><br />
<span style="font-size: large;">material ssaoBlurY</span><br />
<span style="font-size: large;">material modulate</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/RTShaderLib/materials/DualQuaternionSkinning_Shadow.material</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_1weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_2weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_3weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_4weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_1weight_twophase</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_2weight_twophase</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_3weight_twophase</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_dq_skinning_4weight_twophase</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/RTShaderLib/materials/HardwareSkinningShadow.material</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_skinning_1weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_skinning_2weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_skinning_3weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_caster_skinning_4weight</span><br />
<span style="font-size: large;">material Ogre/RTShader/shadow_receiver</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">file media/RTShaderLib/materials/RTShaderSystem.material</span><br />
<span style="font-size: large;">material RTSS/PerPixel_SinglePass</span><br />
<span style="font-size: large;">material RTSS/NormalMapping_SinglePass</span><br />
<span style="font-size: large;">material RTSS/NormalMapping_MultiPass</span><br />
<span style="font-size: large;">material RTSS/Athene/NormalMapping_SinglePass</span><br />
<span style="font-size: large;">material RTSS/Athene/NormalMapping_MultiPass</span><br />
<span style="font-size: large;">material RTSS/NormalMapping_MultiPass_2lights</span><br />
<span style="font-size: large;">material RTSS/LayeredBlending</span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My OGRE 3D working journal vol.2</title>
		<link>https://blog.yuyansoftware.com.tw/2013/03/ogre-3d-2/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Fri, 15 Mar 2013 14:39:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/03/15/my-ogre-working-journal-vol-2/</guid>

					<description><![CDATA[The article will discuss several modules and processes  &#8230; ]]></description>
										<content:encoded><![CDATA[<p><span style="font-size: large;">The article will discuss several modules and processes in OGRE.</span><br />
<span style="font-size: large;"><br />
</span><span style="color: blue; font-size: large;">The way to handle&nbsp;user input event</span><br />
<span style="font-size: large;">When the system inits, it calls:</span></p>
<pre>virtual void SampleContext::createInputDevices()
{
    OIS::Object* obj = mInputMgr-&gt;createInputObject(OIS::OISKeyboard, true);
    mKeyboard = static_cast&lt;OIS::Keyboard*&gt;(obj);
    mMouse = static_cast&lt;OIS::Mouse*&gt;(mInputMgr-&gt;createInputObject(OIS::OISMouse, true));

    mKeyboard-&gt;setEventCallback(this);
    mMouse-&gt;setEventCallback(this);
}
</pre>
<p><span style="font-size: large;">where <i>mKeyboard</i> (<i>OIS::Keyboard</i>) and <i>mMouse</i> (<i>OIS::Mouse</i>) belong to <i>SampleContext</i> (see <a href="http://larrysmatchawaffle.blogspot.tw/2013/03/ogre-vol1.html">My&nbsp;OGRE working journal vol.1</a>). <i>SampleContext</i> inherits from <i>OIS::KeyListener</i> and <i>OIS::MouseListener</i>, so in th above code&nbsp;snippet, <i>setEventCallback</i> method is used to register <i>SampleBrowser</i> in&nbsp;<i>mKeyboard</i> and <i>mMouse</i>, and therefore we can implement&nbsp;<i>keyPressed</i>, <i>keyReleased</i>, <i>mouseMoved</i>, <i>mousePressed</i>, <i>mouseReleased</i> methods in&nbsp;<i>SampleBrowser</i>. This is a general way for a graphics engine to handle the user input events.</span><br />
<span style="font-size: large;">&nbsp; </span><br />
<a name="more"></a><span style="font-size: large;">The function call sequence after a user clicks a sample:</span><br />
<span style="font-size: large;">SampleBrowser::mouseReleased</span><br />
<span style="font-size: large;">→ mTrayMgr-&gt;injectMouseUp&nbsp;<span style="color: #38761d;">// <i>mTrayMgr</i> (<i>SdkTrayManager</i>) belongs to <i>SampleBrowser</i></span></span><br />
<span style="font-size: large;">&nbsp; &nbsp; → w-&gt;_cursorReleased &nbsp; &nbsp;&nbsp;<span style="color: #38761d;">// links to <i>OgreBites::Button::_cursorReleased</i></span></span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #38761d;">// <i>w</i> is from <i>mWidgets</i>, belonging to <i>SdkTrayManager</i>.</span></span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; → mListener-&gt;buttonHit &nbsp;<span style="color: #38761d;">// <i>mListener</i> (<i>SdkTrayListener</i>) 即是 <i>SampleBrowser</i>.</span></span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; → SampleBrowser::runSample( ) <span style="color: #38761d;">// loads/starts the sample</span></span></p>
<div><span style="font-family: inherit; font-size: large;"><br />
</span></div>
<div><span style="font-size: large;"><span style="font-family: inherit;">In spoken language, what the above does is that clicking the mouse triggers&nbsp;</span><i>SampleBrowser::mouseReleased</i>, which delegates the task to <i>SampleBrowser:: mTrayMgr</i>. <i>SampleBrowser:: mTrayMgr</i> then calls <i>SampleBrowser::buttonHit</i>, where the implementation can be customized. <i>SampleBrowser:: mTrayMgr</i> manages the GUI components (<i>OgreBites::Widget</i>), and here is the class diagram: </span></p>
<div lang="zh-TW" style="margin-bottom: 0cm;">
<div style="clear: both; text-align: center;"></div>
<div style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-wuUilQMWbac/UUhTxJyxhrI/AAAAAAAAAL8/swiqYG7uvTE/s1600/Widget.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"></span></a></div>
<div style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-ZHJKaJKSvtM/UfKUbwSJaaI/AAAAAAAAARo/D26dWoU2yZE/s1600/Widget.png" style="margin-left: 1em; margin-right: 1em;"><img decoding="async" border="0" src="https://1.bp.blogspot.com/-ZHJKaJKSvtM/UfKUbwSJaaI/AAAAAAAAARo/D26dWoU2yZE/s1600/Widget.png"></a></div>
<p><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;"><br />
</span></p>
</div>
<p><span style="font-size: large;"><br />
</span><span style="font-size: large;"><span style="color: blue;"></span><span style="color: blue;">Ogre::Root&nbsp;</span></span><br />
<span style="font-size: large;"><i>Ogre::Root</i> is a big managing class, and the main rendering loop is in <i>Root::startRendering</i>. <i>mRoot</i> (<i>Ogre::Root</i>) belongs to <i>OgreBites::SampleContext</i>, and there is also <i>mRoot</i> in <i>OgreBites::Sample</i>. It should be noted that <i>Ogre::Root</i> inherits from <i>Ogre::Singleton&lt;Root&gt;</i>, and is a singleton. The <i>mRoot</i> in <i>OgreBites::Sample</i> is actually the same instance as the one in <i>OgreBites::SampleContext</i>.</span><br />
<span style="font-size: large;"><br />
</span></p>
</div>
<div><span style="font-size: large;">Note:</span><br />
<span style="font-size: large;">The way that OGRE implements singleton is to inherit from Singleton&lt;T&gt;, and the client calls getSingleton method to get the singleton instance. Personally I think the way is better than using a big singleton managing class to manage all the system singletons: no need to maintain a big singleton managing class, and individual system singletons maintain their own singleton functionality.</span></div>
<div><span style="font-size: large;"><br />
</span><span style="font-size: large;">The nice comment about <i>Ogre::Root</i> in <i>OgreRoot.h</i>:&nbsp;</span></div>
<div><span style="color: #38761d; font-size: large;">/** The root class of the Ogre system.<br />
&nbsp; &nbsp; @remarks<br />
&nbsp; &nbsp; &nbsp; &nbsp; The Ogre::Root class represents a starting point for the client<br />
&nbsp; &nbsp; &nbsp; &nbsp; application. From here, the application can gain access to the<br />
&nbsp; &nbsp; &nbsp; &nbsp; fundamentals of the system, namely the rendering systems<br />
&nbsp; &nbsp; &nbsp; &nbsp; available, management of saved configurations, logging, and<br />
&nbsp; &nbsp; &nbsp; &nbsp; access to other classes in the system. Acts as a hub from which<br />
&nbsp; &nbsp; &nbsp; &nbsp; all other objects may be reached. An instance of Root must be<br />
&nbsp; &nbsp; &nbsp; &nbsp; created before any other Ogre operations are called. Once an<br />
&nbsp; &nbsp; &nbsp; &nbsp; instance has been created, the same instance is accessible<br />
&nbsp; &nbsp; &nbsp; &nbsp; throughout the life of that object by using Root::getSingleton<br />
&nbsp; &nbsp; &nbsp; &nbsp; (as a reference) or Root::getSingletonPtr (as a pointer).<br />
*/</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><span style="color: blue; font-size: large;">The timing of loading the plugins</span><br />
<span style="font-size: large;">Take <i>Sample_BSP</i> for example, the executable calls <i>dllStartPlugin</i> in the plugin, creates <i>Sample</i> and <i>SamplePlugin</i>, and registers the&nbsp;<i>SamplePlugin</i> in the <i>Root</i> singleton. The function calls:</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">SampleContext::go()</span><br />
<span style="font-size: large;">&#8211;&gt; SampleContext::initApp()</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &#8211;&gt; SampleBrowser::setup()</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &#8211;&gt; SampleBrowser::loadSamples()</span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#8211;&gt; Ogre::Root::loadPlugin() </span><br />
<span style="font-size: large;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #38761d;">// loads library, gets&nbsp;<i>dllStartPlugin</i> symbol, and calls it.</span></span></div>
<div><span style="font-size: large;"><br />
</span></div>
<div><span style="color: blue; font-size: large;"><br />
</span></div>
<div><span style="color: blue; font-size: large;">media file path and loading</span><br />
<span style="font-size: large;">media resource is managed by <i>Ogre::ResourceGroupManager</i>, and its instance belongs to <i>Ogre::Root</i>. <i>Ogre::ResourceGroupManager::mResourceGroupManager</i> caches all the media file path information.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">In <i>SampleContext::initApp</i>, <i>Ogre::Root</i> is created, and in it <i>Ogre::ResourceGroupManager</i> is created. At this time 3 <i>ResourceGroup</i> (“General”, “Internal”, “Autodetect”) are added to <i>ResourceGroupManager::mResourceGroupManager</i> (<i>map&lt;String, ResourceGroup*&gt;</i>). </span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">In <i>SampleContext::initApp</i>, <i>SampleContext::locateResources</i> is called to load &#8220;resources.cfg&#8221; or &#8220;resources_d.cfg&#8221;, create 3 more ResourceGroup (“Essential”, “Popular”, “Tests”), and cache all the media file name in the specified media folder to <i>ResourceGroup::resourceIndexCaseSensitive</i>. </span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">When is the real loading? When the client calls <i>MeshManager::load</i> and/or <i>Entity::setMaterialName</i>, the specified mesh or material related media files will be loaded.</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><br />
</span><span style="color: blue; font-size: large;">From now on we will quickly go through the 36 samples in OGRE SDK. The point is to see what each sample demonstrates, and how they do it.&nbsp;</span><br />
<u><span style="font-size: large;">Sample_BSP</span></u><br />
<span style="font-size: large;">A sample of BSP scene management.</span><br />
<span style="font-size: large;"># In <i>Sample_BSP::createSceneManager</i>, <i>BspSceneManager</i> is created.</span><br />
<span style="font-size: large;"># <i>Sample_BSP::locateResources</i> and <i>Sample_BSP::loadResources</i> demonstrate how to process the prepared BSP resource. </span><br />
<span style="font-size: large;"># BSP scene management needs prepared BSP related resource, which is an issue.</span><br />
<span style="font-size: large;"># Currently there are &#8220;DefaultSceneManager&#8221;, &#8220;BspSceneManager&#8221;, &#8220;PCZSceneManager&#8221;, &#8220;OctreeSceneManager&#8221; in <i>Root::mSceneManagerEnum::mFactories</i>.</span><br />
<span style="font-size: large;"><br />
</span></div>
<div>
<div style="margin-bottom: 0cm;"><u><span style="font-size: large;">Sample_BezierPatch</span></u></div>
<div style="margin-bottom: 0cm;"><span style="font-size: large;">Ogre::MeshManager::createBezierPatch can directly generates Bezier surfaces, where the input is control point vertices (in this sample, 9 control points).</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;"><u>Sample_Dot3Bump</u> </span><br />
<span style="font-size: large;">A nice graphics sample, including normal mapping, moving light source (and its rendering), and different materials. The point in this sample is actually to realize how OGRE material script works (e.g., &#8220;Examples/Athene/NormalMapped&#8221; is in &#8220;mediamaterialsscriptsExamples-Advanced.material&#8221;).</span><br />
<span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_CameraTrack</span></u><br />
<span style="font-size: large;">The camera is attached to a scene node, and a spline animation is generated for that node. The effect of the flying view is achieved.</span><br />
<span style="font-size: large;"># <i>mCamera</i> (<i>Ogre::Camera</i>) is a kind of <i>Ogre::MovableObject</i>, and can be attached to a scene node.</span></div>
</div>
<p><span style="font-size: large;"># Here is the code snippet about how to generate a spline animation track:</span></p>
<pre>// set up a 10 second animation for our camera, using spline interpolation for// nice curves
Animation* anim = mSceneMgr-&gt;createAnimation("CameraTrack", 10);
anim-&gt;setInterpolationMode(Animation::IM_SPLINE);

// create a track to animate the camera's node
NodeAnimationTrack* track = anim-&gt;createNodeTrack(0, camNode);

// create keyframes for our track
track-&gt;createNodeKeyFrame(0)-&gt;setTranslate(Vector3(200, 0, 0));
track-&gt;createNodeKeyFrame(2.5)-&gt;setTranslate(Vector3(0, -50, 100));
track-&gt;createNodeKeyFrame(5)-&gt;setTranslate(Vector3(-500, 100, 0));
track-&gt;createNodeKeyFrame(7.5)-&gt;setTranslate(Vector3(0, 200, -300));
track-&gt;createNodeKeyFrame(10)-&gt;setTranslate(Vector3(200, 0, 0));
</pre>
<div style="margin-bottom: 0cm;"><span style="font-size: large;"># Update the current time in animation, and the animation will be played (call <i>Ogre::AnimationState::addTime</i>).</span><br />
<span style="font-size: large;"><br />
</span><u><span style="font-size: large;">Sample_CelShading </span></u><br />
<span style="font-size: large;">Uses the material &#8220;Examples/CelShading&#8221; in the file &#8220;Examples-Advanced.material&#8221;. And we can also see how to pass the parameters to shader for each <i>SubEntity</i> in this sample.</span></p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My OGRE 3D working journal vol.1</title>
		<link>https://blog.yuyansoftware.com.tw/2013/03/ogre-3d-1/</link>
		
		<dc:creator><![CDATA[Larry]]></dc:creator>
		<pubDate>Sun, 10 Mar 2013 15:15:00 +0000</pubDate>
				<category><![CDATA[OGRE 3D]]></category>
		<category><![CDATA[軟體工程與管理]]></category>
		<guid isPermaLink="false">http://test234.yuyansoftware.com.tw/2013/03/10/my-ogre-working-journal-vol-1/</guid>

					<description><![CDATA[The series will be based on OGRE version 1.8.1 and star &#8230; ]]></description>
										<content:encoded><![CDATA[<p><span style="font-size: large;">The series will be based on OGRE version 1.8.1 and start from the samples in OGRE SDK. The short-term goal is to realize the OGRE architecture, low-level implementation, and the supported graphics specification. The mid-term goal is to develop a personal project based on this engine. </span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">The architecture of OGRE v1.8.1 SampleBrowser</span><br />
<span style="font-size: large;"><br />
</span></p>
<div style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-74dJ_-DA4Kk/Ue6kCiecNNI/AAAAAAAAAQs/UYzWUiMPDzc/s1600/samplebrowser.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"><img decoding="async" border="0" src="https://3.bp.blogspot.com/-74dJ_-DA4Kk/Ue6kCiecNNI/AAAAAAAAAQs/UYzWUiMPDzc/s1600/samplebrowser.png"></span></a></div>
<div style="clear: both; text-align: center;"></div>
<div style="clear: both; text-align: center;"></div>
<p><span style="font-size: large;"><br />
</span><span style="font-size: large;">The entry function of OGRE SDK samples is <i>OgreBites::SampleBrowser::go</i>, which dynamically links to <i>SampleContext::go</i>.</span><br />
<span style="font-size: large;"><br />
</span><br />
<a name="more"></a><span style="font-size: large;">The OGRE official SDK samples <i>OgreSDK_vc10_v1-8-1</i> wraps multiple (36) sample modules and <i>SampleBrowser</i> into one Visual Studio solution, with the&nbsp;dependencies between the projects. Therefore when I needed to build the projects in development, I needed to build all projects (because of the dependencies). It wasted lots of time, so I decided to pull the <i>SampleBrowser</i> project out of the solution, which should decouple the dependency between&nbsp;<i>SampleBrowser</i> and other sample projects (I was only using the dlls of the sample projects).</span><br />
<span style="font-size: large;"><br />
</span><span style="font-size: large;">When I was running the <i>SampleBrowser</i> project, it happened that an exception was thrown. After tracing down, I found the problem was in the <i>OgreMain</i> module, so I decided to build the <i>OgreMain</i> module by myself with the OGRE source <i>ogre_src_v1-8-1_1</i>. The building was pretty&nbsp;troublesome, including:</span></p>
<ul>
<li><span style="font-size: large;">Built and managed the dependency libraries, including spending lots of time in building the <i>boost</i> library.</span></li>
<li><span style="font-size: large;">Generated the&nbsp;solution-project hierarchy in&nbsp;Visual Studio via the OGRE provided CMake. Pulled the&nbsp;<i>OgreMain</i> project out, including the&nbsp;Visual Studio project settings and source file selection.&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
</ul>
<p><span style="font-size: large;"><br />
</span><span style="font-size: large;">So far the problem of throwing exception could be reproduced. After fixing the problem, the single <i>SampleBrowser</i> project was also completed. Here are some notes when I was working on the above tasks:</span></p>
<ul>
<li><span style="font-size: large;">The methods of&nbsp;error handling in OGRE are assertion and log.</span></li>
<li><span style="font-size: large;">The macros of the testing project should be consistent with the test target project, otherwise&nbsp;memory access violation occurred (e.g., the macros of the testing project should contain&nbsp;<i>USE_RTSHADER_SYSTEM</i>).</span></li>
<li><span style="font-size: large;">When there are lots of&nbsp;dependencies in a project (e.g.,&nbsp;<i>SampleBrowser</i>), the management of the&nbsp;dependent libs/dlls is very important.&nbsp;&nbsp;&nbsp;</span></li>
</ul>
<p><span style="font-size: large;"><br />
</span><span style="font-size: large;">Here is the architecture of OGRE samples for future reference.</span><br />
<span style="font-size: large;"><br />
</span></p>
<div style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-ZaycvotP59Q/UUhVs93ybQI/AAAAAAAAAMM/uqNNN6l4mNA/s1600/SdkSample.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"><img decoding="async" border="0" height="400" src="https://2.bp.blogspot.com/-ZaycvotP59Q/UUhVs93ybQI/AAAAAAAAAMM/uqNNN6l4mNA/s400/SdkSample.png" width="377"></span></a></div>
<p><span style="font-size: large;"><br />
</span></p>
<div style="clear: both; text-align: center;"></div>
<div style="clear: both; text-align: left;"></div>
<div lang="zh-TW" style="line-height: 150%; margin-bottom: 0cm;"><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">larry 20130314 updates:</span></div>
<div lang="zh-TW" style="line-height: 150%; margin-bottom: 0cm;"><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif;">The main&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;">attributes in</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;">&nbsp;<i>OgreBites::Sample</i></span></span></div>
<div lang="zh-TW" style="line-height: 150%; margin-bottom: 0cm;"></div>
<ul>
<li><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;">OIS::Keyboard* mKeyboard;        <span style="color: #38761d;">// a</span></span><span style="color: #38761d; line-height: 150%;"><span style="font-family: &quot;times new roman&quot; , serif;">&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif;">reference pointer from the engine</span></span></span></li>
<li><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif;">OIS::Mouse* mMouse;             <span style="color: #38761d;">//&nbsp;</span></span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><span style="color: #38761d;">a</span></span><span style="color: #38761d; line-height: 24px;"><span style="font-family: &quot;times new roman&quot; , serif;">&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif;">reference pointer from the engine</span></span></span></li>
<li><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif;">FileSystemLayer* mFSLayer;    <span style="color: #38761d;">//&nbsp;</span></span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><span style="color: #38761d;">a</span></span><span style="color: #38761d; line-height: 24px;"><span style="font-family: &quot;times new roman&quot; , serif;">&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif;">reference pointer from the engine</span></span></span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">Ogre::SceneManager* mSceneMgr;   <span style="color: #38761d;">// created/destroyed by the sample</span></span></li>
<li><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif;">Ogre::RTShader::ShaderGenerator* mShaderGenerator;&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><span style="color: #38761d;">// a</span></span><span style="color: #38761d; line-height: 24px;"><span style="font-family: &quot;times new roman&quot; , serif;">&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif;">reference pointer from the engine</span></span></span></li>
</ul>
<div lang="zh-TW" style="margin-bottom: 0cm;"><span style="font-family: &quot;times new roman&quot; , serif;"><span style="font-size: large;">methods:</span></span></div>
<div lang="zh-TW" style="margin-bottom: 0cm;"></div>
<ul>
<li><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif;">+ </span><span style="font-family: &quot;times new roman&quot; , serif;">_setup</span></span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">+ _shutdown</span></li>
<li><span style="font-size: large;"><span style="color: blue; font-family: &quot;times new roman&quot; , serif;"><span style="font-family: &quot;times new roman&quot; , serif;">+  </span></span><span style="color: black; font-family: &quot;times new roman&quot; , serif;"><span style="font-family: &quot;times new roman&quot; , serif;">frameStarted</span></span></span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">+ frameRenderingQueued</span></li>
<li><span style="color: black; font-family: &quot;times new roman&quot; , serif;"><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">+ frameEnded</span></span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">#  locateResources</span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">#  loadResources</span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">#  unloadResources</span></li>
<li><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif;">#  </span><span style="font-family: &quot;times new roman&quot; , serif;">createSceneManager</span></span></li>
<li><span style="font-size: large;"><span style="color: black; font-family: &quot;times new roman&quot; , serif;">#  </span><span style="font-family: &quot;times new roman&quot; , serif;">setupView</span></span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">#  setupContent</span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">#  cleanupContent</span></li>
<li><span style="font-size: large;"><span style="color: black; font-family: &quot;times new roman&quot; , serif;">#  </span><span style="font-family: &quot;times new roman&quot; , serif;">unloadResources</span></span></li>
</ul>
<div lang="zh-TW" style="margin-bottom: 0cm;"><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif;"><br />
</span><span style="font-family: &quot;times new roman&quot; , serif;">The main&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif;">methods in&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif;"><i>OgreBites::SdkSample</i></span></span></div>
<div lang="zh-TW" style="margin-bottom: 0cm;"></div>
<ul>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">+  frameRenderingQueued</span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">+  _setup</span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">+  _shutdown</span></li>
<li><span style="font-family: &quot;times new roman&quot; , serif; font-size: large;">#  setupView</span></li>
</ul>
<p><span style="font-size: large;"><br />
</span></p>
<div style="margin-bottom: 0cm;"><span style="font-size: large;"><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;">The relationship between&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;"><i>SampleBrowser</i></span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;">&nbsp;and&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;"><span lang="zh-TW"><i>S</i></span></span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 150%;"><i>ample</i> is&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif;"><span style="line-height: 24px;">executable-plugin, and the interfaces are&nbsp;</span></span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><i>OgreBites::SamplePlugin</i> and&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><i>OgreBites::Sample</i> (nothing to do with&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><i>SdkSample</i>, <i>Sample_xxx</i></span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;">).</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;">&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><i>SamplePlugin</i></span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;">&nbsp;is for&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;">install/uninstall related jobs;&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;"><i>Sample</i> is for general graphics engine jobs, including&nbsp;</span><span style="font-family: &quot;times new roman&quot; , serif; line-height: 24px;">loading resources, scene management, renderer setting, camera setting, etc. &nbsp;</span></span></p>
<div style="line-height: 150%;"></div>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
