<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6817116366980884040</id><updated>2011-07-31T06:56:32.476+04:30</updated><category term='Read Alert 3'/><category term='mipmap'/><category term='WarCraft III'/><category term='Triangle'/><category term='Mesh'/><category term='Texture'/><category term='Collision detection'/><category term='PhysX'/><category term='Blending'/><category term='Ray'/><category term='Cyrus Script'/><category term='MRT'/><category term='Flood Fill'/><category term='AABB'/><category term='Filtering'/><category term='Decal'/><category term='Refraction'/><category term='Design'/><category term='Speed'/><category term='Shadow'/><category term='Terrain'/><category term='RTT'/><category term='Shader'/><category term='Tile'/><title type='text'>Game Programmer Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-3612580537570012649</id><published>2010-07-06T15:18:00.002+04:30</published><updated>2010-07-06T15:25:13.365+04:30</updated><title type='text'>Normal map for terrain</title><content type='html'>The terrain now accepts normal maps and also you can mix the texture  color with a color for every vertex. &lt;p&gt;For example you can make grasses yellow in an area.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://kge3d.org/wp-content/uploads/2010/06/tileterrain11.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 412px; height: 217px;" src="http://kge3d.org/wp-content/uploads/2010/06/tileterrain11.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-3612580537570012649?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/3612580537570012649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=3612580537570012649&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3612580537570012649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3612580537570012649'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/07/normal-map-for-terrain.html' title='Normal map for terrain'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-3108794743523280407</id><published>2010-07-06T15:16:00.001+04:30</published><updated>2010-07-06T15:18:20.589+04:30</updated><title type='text'>KGE3D.org</title><content type='html'>Now Kochol game engine has an official site http://kge3d.org&lt;br /&gt;I hope this site become a good community for KGE users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-3108794743523280407?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/3108794743523280407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=3108794743523280407&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3108794743523280407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3108794743523280407'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/07/kge3dorg.html' title='KGE3D.org'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-6500859249980753073</id><published>2010-05-05T19:39:00.003+04:30</published><updated>2010-05-05T19:42:53.565+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shadow'/><title type='text'>Alpha test in shadow map</title><content type='html'>The alpha test implemented in engine and shadow map renders meshes with alpha test.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SNKhpl_6fkA/S-GK02NJIvI/AAAAAAAAAGI/mickNjhwuTY/s1600/Alpha+test+s.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 185px;" src="http://4.bp.blogspot.com/_SNKhpl_6fkA/S-GK02NJIvI/AAAAAAAAAGI/mickNjhwuTY/s320/Alpha+test+s.jpg" alt="" id="BLOGGER_PHOTO_ID_5467804063112962802" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-6500859249980753073?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/6500859249980753073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=6500859249980753073&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/6500859249980753073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/6500859249980753073'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/05/alpha-test-in-shadow-map.html' title='Alpha test in shadow map'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_SNKhpl_6fkA/S-GK02NJIvI/AAAAAAAAAGI/mickNjhwuTY/s72-c/Alpha+test+s.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-7202456987545485497</id><published>2010-05-05T12:49:00.004+04:30</published><updated>2010-05-05T16:35:49.596+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shader'/><category scheme='http://www.blogger.com/atom/ns#' term='RTT'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><category scheme='http://www.blogger.com/atom/ns#' term='Refraction'/><title type='text'>Refraction</title><content type='html'>I implemented Refraction effect in KGE and  now effect manager can manages post process effects too.&lt;br /&gt;Effect manager can prepare rendered images upon the post process effects needs. For now effect manager prepare the color map.&lt;br /&gt;&lt;br /&gt;I add a screen shot from Simorgh editor here.&lt;br /&gt;&lt;a href="http://gamedev.ir/?page_id=10"&gt;Simorgh editor&lt;/a&gt; is a 3D world editor build with KGE&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_SNKhpl_6fkA/S-FebvTIavI/AAAAAAAAAGA/zsPDykffkKg/s1600/Shadow+in+editor+s.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 174px;" src="http://2.bp.blogspot.com/_SNKhpl_6fkA/S-FebvTIavI/AAAAAAAAAGA/zsPDykffkKg/s320/Shadow+in+editor+s.jpg" alt="" id="BLOGGER_PHOTO_ID_5467755253250681586" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-7202456987545485497?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/7202456987545485497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=7202456987545485497&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/7202456987545485497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/7202456987545485497'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/05/refraction.html' title='Refraction'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_SNKhpl_6fkA/S-FebvTIavI/AAAAAAAAAGA/zsPDykffkKg/s72-c/Shadow+in+editor+s.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-8687557384648362819</id><published>2010-04-27T12:56:00.005+04:30</published><updated>2010-04-27T13:05:44.081+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ray'/><category scheme='http://www.blogger.com/atom/ns#' term='Collision detection'/><category scheme='http://www.blogger.com/atom/ns#' term='PhysX'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><category scheme='http://www.blogger.com/atom/ns#' term='Shadow'/><title type='text'>Shadow map &amp; PhysX</title><content type='html'>The shadow map implemented in KGE and there is an effect manager now that works with scene manager together.&lt;br /&gt;&lt;br /&gt;The effect manager controls shadows, post process effects and some built in materials.&lt;br /&gt;&lt;br /&gt;The KGE physX port is updated and now it has Ray casting, dynamics, triggers, collision detection and some new shapes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-8687557384648362819?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/8687557384648362819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=8687557384648362819&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/8687557384648362819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/8687557384648362819'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/04/shadow-map-physx.html' title='Shadow map &amp; PhysX'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-3682035442008836579</id><published>2010-04-24T18:52:00.004+04:30</published><updated>2010-04-24T19:36:15.915+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speed'/><category scheme='http://www.blogger.com/atom/ns#' term='Cyrus Script'/><title type='text'>Working on a script language</title><content type='html'>Hi all&lt;br /&gt;&lt;br /&gt;Currently I am creating a new scripting language called Cyrus Script.&lt;br /&gt;Cyrus Script(CS) syntax is similar to C language and it's in early production.&lt;br /&gt;CS has a different design from other scripts. It dose not use virtual machine to run the script programs.&lt;br /&gt;&lt;br /&gt;I test CS speed against C++ and the results was amazing when you don't use default C++ types like int for all commands. CS is 5%-15% slower than C++which is very good performance result. I heard the fastest scripts are 15 times slower than C++.&lt;br /&gt;&lt;br /&gt;I also test CS speed against Angle Script and CS was 6 times faster than AS.&lt;br /&gt;&lt;br /&gt;I want to write a technical article about the design of this script. Please if you have any information on this please advise me how can I do this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-3682035442008836579?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/3682035442008836579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=3682035442008836579&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3682035442008836579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3682035442008836579'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/04/working-on-script-language.html' title='Working on a script language'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-3194231582305905215</id><published>2010-03-01T14:55:00.005+03:30</published><updated>2010-03-03T12:58:14.008+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speed'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='RTT'/><category scheme='http://www.blogger.com/atom/ns#' term='Mesh'/><category scheme='http://www.blogger.com/atom/ns#' term='PhysX'/><category scheme='http://www.blogger.com/atom/ns#' term='Shadow'/><title type='text'>Shadow map</title><content type='html'>&lt;ul&gt;&lt;li&gt;I worked on shadow mapping and after some works finally I successfully implemented shadow mapping for directional lights but I don't add this feature to the engine yet.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SNKhpl_6fkA/S4ulgZbZeJI/AAAAAAAAAEk/ybcBb-EccGQ/s1600-h/Shadowmap.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 241px;" src="http://4.bp.blogspot.com/_SNKhpl_6fkA/S4ulgZbZeJI/AAAAAAAAAEk/ybcBb-EccGQ/s320/Shadowmap.jpg" alt="" id="BLOGGER_PHOTO_ID_5443626550607575186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Now KGE use PhysX for the physics and dynamics You can build the terrain shape and box for the dynamics and we will add more shapes for dynamics later.&lt;/li&gt;&lt;li&gt;Everything in scene is rendering with multistream&lt;/li&gt;&lt;li&gt;The Animated Meshes and tile terrain now use dynamic vertex buffers&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-3194231582305905215?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/3194231582305905215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=3194231582305905215&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3194231582305905215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/3194231582305905215'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/03/shadow-map.html' title='Shadow map'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_SNKhpl_6fkA/S4ulgZbZeJI/AAAAAAAAAEk/ybcBb-EccGQ/s72-c/Shadowmap.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-10324237068509012</id><published>2010-01-03T20:11:00.001+03:30</published><updated>2010-02-28T18:42:44.370+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shader'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>Multi stream added</title><content type='html'>I added multistream to the engine which was introduced in GPU gems 2 book. When I test shadow mapping with multistreaming I gain 7% speedup.&lt;br /&gt;&lt;br /&gt;I also work on a new shader design that is XML based and add flexibility to the engine for shaders.&lt;br /&gt;This design is not artist friendly but it is programmer friendly instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-10324237068509012?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/10324237068509012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=10324237068509012&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/10324237068509012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/10324237068509012'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2010/01/multi-stream-added.html' title='Multi stream added'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-996754168844889026</id><published>2009-11-25T17:19:00.003+03:30</published><updated>2009-11-25T17:25:57.410+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Decal'/><title type='text'>Decal on terrain</title><content type='html'>Today I added decals on terrain.&lt;br /&gt;They are nice and you can rotate decals on terrain and use them for selecting effects also I have an idea to use decals for add dynamic lights on terrain.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_SNKhpl_6fkA/Sw02i4Lg_WI/AAAAAAAAAD0/qmmqGP00RR0/s1600/Decal01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 251px;" src="http://3.bp.blogspot.com/_SNKhpl_6fkA/Sw02i4Lg_WI/AAAAAAAAAD0/qmmqGP00RR0/s320/Decal01.jpg" alt="" id="BLOGGER_PHOTO_ID_5408038700365970786" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-996754168844889026?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/996754168844889026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=996754168844889026&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/996754168844889026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/996754168844889026'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/11/decal-on-terrain.html' title='Decal on terrain'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SNKhpl_6fkA/Sw02i4Lg_WI/AAAAAAAAAD0/qmmqGP00RR0/s72-c/Decal01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-754565630871245569</id><published>2009-11-23T14:46:00.002+03:30</published><updated>2009-11-23T14:53:01.738+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ray'/><category scheme='http://www.blogger.com/atom/ns#' term='Triangle'/><category scheme='http://www.blogger.com/atom/ns#' term='Collision detection'/><title type='text'>Ray-Triangle intersection test code</title><content type='html'>I noticed that most of the blog visitors come here for Ray-Triangle intersection test so I decide to put the code here.&lt;br /&gt;&lt;br /&gt;I hope it is useful for you.&lt;br /&gt;&lt;br /&gt;    //! Checks if the ray and triangle intersects and store the intersection point in the Out parameter.&lt;br /&gt;    CollisionType IntersectRay(Ray* pRay, kge::math::Vector&amp;amp; Out)&lt;br /&gt;    {&lt;br /&gt;        Edge1  = Point2 - Point1;&lt;br /&gt;        Edge2  = Point3 - Point1;&lt;br /&gt;        Normal.Cross(Edge1, Edge2);&lt;br /&gt;        float fGama = -(pRay-&gt;Direction * Normal);&lt;br /&gt;&lt;br /&gt;        if (fGama &lt; fEpsilon)&lt;br /&gt;            return ECT_NotIntersect;&lt;br /&gt;&lt;br /&gt;        Vector b = pRay-&gt;Position - Point1;&lt;br /&gt;        float fLanda = (b * Normal) / fGama;&lt;br /&gt;&lt;br /&gt;        if (fLanda &gt;= 0.0f &amp;amp;&amp;amp; fLanda &lt;= 1.0f)&lt;br /&gt;        {&lt;br /&gt;            Vector u;&lt;br /&gt;            u.Cross(b, pRay-&gt;Direction);&lt;br /&gt;            float u1, u2;&lt;br /&gt;            u1 = (Edge2 * u) / fGama;&lt;br /&gt;            u2 = (-(Edge1 * u)) / fGama;&lt;br /&gt;            if (u1 + u2 &lt;= 1.0f &amp;amp;&amp;amp; u1 &gt;= 0.0f &amp;amp;&amp;amp; u2 &gt;= 0.0f)&lt;br /&gt;            {&lt;br /&gt;                Out = pRay-&gt;Position + (pRay-&gt;Direction * fLanda);&lt;br /&gt;                return ECT_Intersect;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return ECT_NotIntersect;&lt;br /&gt;&lt;br /&gt;    } // IntersectRay&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-754565630871245569?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/754565630871245569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=754565630871245569&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/754565630871245569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/754565630871245569'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/11/ray-triangle-intersection-test-code.html' title='Ray-Triangle intersection test code'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-2980266597922085589</id><published>2009-11-15T14:22:00.004+03:30</published><updated>2009-11-16T14:40:29.882+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Refraction'/><title type='text'>Refraction</title><content type='html'>I added refraction to the terrain.&lt;br /&gt;Just want show a screen shot.&lt;br /&gt;If I had a under water texture the result was better :D&lt;br /&gt;&lt;br /&gt;click image for bigger view&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_SNKhpl_6fkA/SwEy7LyPpAI/AAAAAAAAADs/aNj-PurkYOU/s1600/tileterrain10.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://3.bp.blogspot.com/_SNKhpl_6fkA/SwEy7LyPpAI/AAAAAAAAADs/aNj-PurkYOU/s320/tileterrain10.jpg" alt="" id="BLOGGER_PHOTO_ID_5404657020178506754" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-2980266597922085589?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/2980266597922085589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=2980266597922085589&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/2980266597922085589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/2980266597922085589'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/11/refraction.html' title='Refraction'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SNKhpl_6fkA/SwEy7LyPpAI/AAAAAAAAADs/aNj-PurkYOU/s72-c/tileterrain10.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-1595153024250186286</id><published>2009-11-14T18:59:00.003+03:30</published><updated>2009-11-15T14:22:28.554+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='RTT'/><category scheme='http://www.blogger.com/atom/ns#' term='MRT'/><title type='text'>RTT(Render To Texture) With Anti Aliasing added</title><content type='html'>I added Anti Aliasing for rederable textures but It seems there is no way to use it with MRT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-1595153024250186286?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/1595153024250186286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=1595153024250186286&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/1595153024250186286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/1595153024250186286'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/11/rttrender-to-texture-with-anti-aliasing.html' title='RTT(Render To Texture) With Anti Aliasing added'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-410357488176604648</id><published>2009-11-12T19:14:00.010+03:30</published><updated>2009-11-12T19:26:50.134+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speed'/><category scheme='http://www.blogger.com/atom/ns#' term='Ray'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Mesh'/><category scheme='http://www.blogger.com/atom/ns#' term='AABB'/><title type='text'>Attach nodes to bones</title><content type='html'>Now you can attach objects to the bones and they will be updated automatically.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_SNKhpl_6fkA/SvwuE75FM7I/AAAAAAAAADU/7RMOg3GIVEw/s1600-h/bones.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 241px;" src="http://3.bp.blogspot.com/_SNKhpl_6fkA/SvwuE75FM7I/AAAAAAAAADU/7RMOg3GIVEw/s320/bones.jpg" alt="" id="BLOGGER_PHOTO_ID_5403244315269215154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The terrain is now divided to smaller sections and the ray picking  speed is very good now.&lt;br /&gt;I also write a simple shader that represent the water effect that color the terrain depend on height.&lt;br /&gt;You can see the terrain AABB in the picture that get updated during the edit.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SNKhpl_6fkA/Svwu6qyTPXI/AAAAAAAAADc/9QtFuOJ_9pE/s1600-h/tileterrain07.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 241px;" src="http://4.bp.blogspot.com/_SNKhpl_6fkA/Svwu6qyTPXI/AAAAAAAAADc/9QtFuOJ_9pE/s320/tileterrain07.jpg" alt="" id="BLOGGER_PHOTO_ID_5403245238390308210" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-410357488176604648?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/410357488176604648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=410357488176604648&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/410357488176604648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/410357488176604648'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/11/attach-nodes-to-bones.html' title='Attach nodes to bones'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_SNKhpl_6fkA/SvwuE75FM7I/AAAAAAAAADU/7RMOg3GIVEw/s72-c/bones.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-2578840490945358595</id><published>2009-11-08T12:38:00.004+03:30</published><updated>2009-11-08T12:44:20.501+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ray'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Collision detection'/><category scheme='http://www.blogger.com/atom/ns#' term='Blending'/><category scheme='http://www.blogger.com/atom/ns#' term='AABB'/><category scheme='http://www.blogger.com/atom/ns#' term='Tile'/><title type='text'>Blend Tiles, AABB &amp; Ray Intersections</title><content type='html'>The tiles can be blended with each other now. This way there is no hard edge anymore.&lt;br /&gt;&lt;br /&gt;You have to use an alpha map for blending so you have more options for blending. I use this alpha map for test. It is not a good one :D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SNKhpl_6fkA/SvaKyPhvJiI/AAAAAAAAADE/MGU2GLQqPl0/s1600-h/blend4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 74px; height: 74px;" src="http://4.bp.blogspot.com/_SNKhpl_6fkA/SvaKyPhvJiI/AAAAAAAAADE/MGU2GLQqPl0/s320/blend4.png" alt="" id="BLOGGER_PHOTO_ID_5401657398843614754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;And here is a screen shot.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_SNKhpl_6fkA/SvaLBmCn0HI/AAAAAAAAADM/yDUQcXS5od4/s1600-h/tileterrain06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 241px;" src="http://2.bp.blogspot.com/_SNKhpl_6fkA/SvaLBmCn0HI/AAAAAAAAADM/yDUQcXS5od4/s320/tileterrain06.jpg" alt="" id="BLOGGER_PHOTO_ID_5401657662585163890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I also added AABB and ray intersection to the engine, so I can optimize my terrain more and partitioning it.&lt;br /&gt;&lt;br /&gt;If anyone has a question about everything I implemented in my engine please ask me and leave a comment for me I try to answer it :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-2578840490945358595?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/2578840490945358595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=2578840490945358595&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/2578840490945358595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/2578840490945358595'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/11/blend-tiles-aabb-ray-intersections.html' title='Blend Tiles, AABB &amp; Ray Intersections'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_SNKhpl_6fkA/SvaKyPhvJiI/AAAAAAAAADE/MGU2GLQqPl0/s72-c/blend4.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-5490080033384076860</id><published>2009-11-01T20:12:00.003+03:30</published><updated>2009-11-01T21:42:28.104+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ray'/><category scheme='http://www.blogger.com/atom/ns#' term='Triangle'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Collision detection'/><category scheme='http://www.blogger.com/atom/ns#' term='AABB'/><category scheme='http://www.blogger.com/atom/ns#' term='Flood Fill'/><category scheme='http://www.blogger.com/atom/ns#' term='Tile'/><title type='text'>Edit terrain</title><content type='html'>Hi all&lt;br /&gt;&lt;br /&gt;After coding for triangle-ray intersection I start to create a class for getting the clicked triangle. I called this class DynamicTriangleMesh.&lt;br /&gt;&lt;br /&gt;DynamicTriangleMesh works slow for now and I need to partition the terrain and add AABB(Axis Aligned Bounding Box) to it then I check the ray collision with AABB if it collide then check for triangle intersection.&lt;br /&gt;&lt;br /&gt;I added some functions for editing the tiles and height of the terrain.&lt;br /&gt;&lt;br /&gt;I also added a &lt;a href="http://en.wikipedia.org/wiki/Flood_fill"&gt;flood fill&lt;/a&gt; algorithm to fill the tiles and finding the tiles borders for blending them.&lt;br /&gt;&lt;br /&gt;I test my idea about blending and tiling it works good and soon the first version of terrain  will be ready.&lt;br /&gt;&lt;br /&gt;I also added a screen shot for showing the fill and finding the tile borders with &lt;a href="http://en.wikipedia.org/wiki/Flood_fill"&gt;flood fill&lt;/a&gt; algorithm.&lt;br /&gt;&lt;br /&gt;you can get the latest codes from SVN.&lt;br /&gt;&lt;code&gt;https://kge.svn.sourceforge.net/svnroot/kge&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SNKhpl_6fkA/Su3NgYAMPHI/AAAAAAAAACs/g9KUHupvjXQ/s1600-h/tileterrain04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 251px;" src="http://1.bp.blogspot.com/_SNKhpl_6fkA/Su3NgYAMPHI/AAAAAAAAACs/g9KUHupvjXQ/s320/tileterrain04.jpg" alt="" id="BLOGGER_PHOTO_ID_5399197484369853554" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-5490080033384076860?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/5490080033384076860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=5490080033384076860&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/5490080033384076860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/5490080033384076860'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/11/edit-terrain.html' title='Edit terrain'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_SNKhpl_6fkA/Su3NgYAMPHI/AAAAAAAAACs/g9KUHupvjXQ/s72-c/tileterrain04.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-645865522012959357</id><published>2009-10-24T17:09:00.001+03:30</published><updated>2009-10-24T17:13:37.868+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ray'/><category scheme='http://www.blogger.com/atom/ns#' term='Triangle'/><category scheme='http://www.blogger.com/atom/ns#' term='Collision detection'/><category scheme='http://www.blogger.com/atom/ns#' term='PhysX'/><title type='text'>Ray-Triangle intersection test</title><content type='html'>I added Ray-Triangle intersection test to the engine. First I want to use PhysX for doing this but this library does not support dynamic triangle meshes it means I can’t change the mesh data very frequently with a reasonable speed so I decide to write my own Ray-Triangle intersection test.&lt;br /&gt;&lt;br /&gt;I find an algorithm for do this issue on Collision Detection in Interactive 3D Environments Book it says Ray-Triangle test but when I test the algorithm it works as a line-triangle intersection test. The more interesting thing is that the next chapter is talking about line-triangle intersection test but it works good and the performance is very good.&lt;br /&gt;&lt;br /&gt;The next thing I worked on this week was on getting the ray from screen coordinates and this part work good too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-645865522012959357?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/645865522012959357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=645865522012959357&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/645865522012959357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/645865522012959357'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/10/ray-triangle-intersection-test.html' title='Ray-Triangle intersection test'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-8002992185970846433</id><published>2009-09-22T18:59:00.006+03:30</published><updated>2009-11-01T21:38:04.644+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mipmap'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Texture'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='PhysX'/><category scheme='http://www.blogger.com/atom/ns#' term='Blending'/><category scheme='http://www.blogger.com/atom/ns#' term='Tile'/><title type='text'>The first test for new terrain design</title><content type='html'>Hi&lt;br /&gt;&lt;br /&gt;I test the new algorithm for the tiled terrain and it works well with texture ID.&lt;br /&gt;&lt;br /&gt;For solving the texture filtering problem with tile texturing I copy 16 pixel from each side to opposite side of the texture and don't use small mipmap level so  the hardware texture filtering works well.&lt;br /&gt;&lt;br /&gt;Here is a screen shot I know it is not seem to be good but when I add blending you can see a good screen shot. For now I want to add PhysX engine for terrain pickings and future physics dynamics.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_SNKhpl_6fkA/SrjxwlpDZ0I/AAAAAAAAACk/jbXszWKkbOE/s1600-h/tileterrain02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_SNKhpl_6fkA/SrjxwlpDZ0I/AAAAAAAAACk/jbXszWKkbOE/s320/tileterrain02.jpg" alt="" id="BLOGGER_PHOTO_ID_5384319171561744194" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-8002992185970846433?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/8002992185970846433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=8002992185970846433&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/8002992185970846433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/8002992185970846433'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/09/first-test-for-new-terrain-design.html' title='The first test for new terrain design'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_SNKhpl_6fkA/SrjxwlpDZ0I/AAAAAAAAACk/jbXszWKkbOE/s72-c/tileterrain02.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-4516937405301874923</id><published>2009-09-04T19:29:00.002+04:30</published><updated>2009-09-06T23:11:09.053+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Texture'/><category scheme='http://www.blogger.com/atom/ns#' term='Tile'/><title type='text'>A new tiled terrain design</title><content type='html'>&lt;span&gt;Hello&lt;br /&gt;After many days of thinking hard on tile terrain finally find a good way to build the terrain.&lt;br /&gt;&lt;br /&gt;Before start talking about algorithm I have to say I’m not implemented this algorithm yet and things may be change later.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TextureID:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For storing the tile texcoords I use one textureID with A32R32G32B32F format for storing the tile texcoords offsets then in the pixel shader I use it to map the tiles to the terrain.&lt;br /&gt;&lt;br /&gt;I get the idea from &lt;a href="http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263350&amp;amp;cmonth=4&amp;amp;cyear=2008"&gt;Journal of Ysaneya&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No mipmap and texture filtering is needed for this texture.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Vertex:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I need one texcoord for my vertices and they start from 0 to number of columns/rows increase one per vertex.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to map the tiles:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the pixel shader I read the tiles offset and creates their texcoord.&lt;br /&gt;&lt;br /&gt;X = 1 / number of columns in the tile texture&lt;br /&gt;U = Uoffset + u * X;&lt;br /&gt;&lt;br /&gt;For reading the Uoffset from TextureID I can use something like above formula.&lt;br /&gt;&lt;br /&gt;X = 1 / TextureID size;&lt;br /&gt;U = u * X;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-4516937405301874923?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/4516937405301874923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=4516937405301874923&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/4516937405301874923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/4516937405301874923'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/09/new-tiled-terrain-design.html' title='A new tiled terrain design'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-7485474729759627693</id><published>2009-08-27T12:56:00.003+04:30</published><updated>2009-08-27T17:08:12.929+04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Texture'/><category scheme='http://www.blogger.com/atom/ns#' term='Read Alert 3'/><category scheme='http://www.blogger.com/atom/ns#' term='WarCraft III'/><category scheme='http://www.blogger.com/atom/ns#' term='Tile'/><title type='text'>Tile terrain</title><content type='html'>Hi&lt;br /&gt;&lt;br /&gt;I worked on tile texture and add this to engine but when I saw Red Alert 3 terrain my mind changed.&lt;br /&gt;&lt;br /&gt;I want to add a tile terrain something like Red Alert 3 terrain. Its a tile terrain too. I think I can add this type of tile texturing.&lt;br /&gt;&lt;br /&gt;I think a way to combine both of them(WarCraft III style and Red Alert 3) is a good idea.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.voiceovertimes.com/wp-content/uploads/command-conqueor-red-alert-3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 443px; height: 331px;" src="http://www.voiceovertimes.com/wp-content/uploads/command-conqueor-red-alert-3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-7485474729759627693?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/7485474729759627693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=7485474729759627693&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/7485474729759627693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/7485474729759627693'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/08/tile-terrain.html' title='Tile terrain'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6817116366980884040.post-8606454926858428128</id><published>2009-08-21T12:17:00.004+04:30</published><updated>2009-11-02T10:19:28.558+03:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mipmap'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='Texture'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='WarCraft III'/><category scheme='http://www.blogger.com/atom/ns#' term='Tile'/><title type='text'>More active this year</title><content type='html'>Hi all&lt;br /&gt;I want to be more active this year and work on Kochol Game Engine more.&lt;br /&gt;I hope it become a more useful engine soon.&lt;br /&gt;&lt;br /&gt;Currently I work on tile texturing for a tile based terrain like WarCraft III terrain.&lt;br /&gt;&lt;br /&gt;The problem with tile texturing is the Anisotropic filter that combine the tiles edge with each other and if you turn this off the quality become bad.&lt;br /&gt;&lt;br /&gt;I skip one pixel from each side when I create the UV for terrain and the problem solved but there is another problem with mipmaps.&lt;br /&gt;&lt;br /&gt;I have to create mipmaps by a custom way that scale each tile and place it on the mipmap. I use devil to achieve this.&lt;br /&gt;&lt;br /&gt;And for a 16*16 tile I use a 16*16 mipmap never less mipmap levels.&lt;br /&gt;&lt;br /&gt;Wish me luck.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_SNKhpl_6fkA/So64zuc77EI/AAAAAAAAACU/qlnWpDeX-wg/s1600-h/tileterrain01.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 252px;" src="http://2.bp.blogspot.com/_SNKhpl_6fkA/So64zuc77EI/AAAAAAAAACU/qlnWpDeX-wg/s320/tileterrain01.PNG" alt="" id="BLOGGER_PHOTO_ID_5372434604281818178" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6817116366980884040-8606454926858428128?l=kocholgp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kocholgp.blogspot.com/feeds/8606454926858428128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6817116366980884040&amp;postID=8606454926858428128&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/8606454926858428128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6817116366980884040/posts/default/8606454926858428128'/><link rel='alternate' type='text/html' href='http://kocholgp.blogspot.com/2009/08/more-active-this-year.html' title='More active this year'/><author><name>Akbar</name><uri>http://www.blogger.com/profile/09773140075077982858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_SNKhpl_6fkA/So64zuc77EI/AAAAAAAAACU/qlnWpDeX-wg/s72-c/tileterrain01.PNG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
