tag:blogger.com,1999:blog-36018859219693847452023-11-15T23:39:28.305-08:00Fragment BoundI'm just a programmer who enjoys pushing around pixels.Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-3601885921969384745.post-27301061608320105502016-04-09T17:26:00.000-07:002016-04-09T17:26:00.519-07:00X-Fire (2003)<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">I was recently encouraged to go back and look at a game I made with some uni friends in 2003.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Here I show it off and talk a bit about it.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/B-5GM3FeNT8/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/B-5GM3FeNT8?feature=player_embedded" width="320"></iframe></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<div style="line-height: normal;">
<span style="font-family: inherit;">You can try it out for your self here...</span></div>
<div style="line-height: normal;">
<a href="https://drive.google.com/open?id=0B2rr4T2XXr_LMTBjNFVoRFRqa0U" target="_blank">https://drive.google.com/open?id=0B2rr4T2XXr_LMTBjNFVoRFRqa0U</a></div>
</div>
<span style="font-family: inherit;"><b id="docs-internal-guid-ac6d7873-fa58-1bf2-cde0-ea235095ca1e" style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Back in the early 2000’s I was playing around with OpenGL and even managed to make a little racing game with uni mates called IdleTime. It just used light maps for the environments, and the cars had dynamic cube mapped reflections and stencil buffer shadows.</span></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In 2001 I saw the first public showing of Doom 3 at Mac world.</span><br />
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><a href="https://youtu.be/Qj3dPyk7hPI" target="_blank">https://youtu.be/Qj3dPyk7hPI</a></span><br />
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">My mind was blown. I wanted to know how it was done. I remember thinking I may as well stop trying to be a graphics programmer because I'll never be able to do something like that.</span></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Anyway, after much reading on every graphics forum I could find, I started to understand how it was done. I saved up my money and bought a GeForce-3 video card and started to play around with it.</span></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now, of course, the Doom 3 rendering pipeline is well documented. <a href="http://bfy.tw/5BfB" target="_blank">http://bfy.tw/5BfB</a></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In fact you can even download the source code, so I won't go into how it works here. But once I had a little test bed running someone (I can’t remember who) had the idea to make a top down shooter where all the levels are made out of repeated tiles. So we got to work making it.</span></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">About a year later we had a demo of X-Fire.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRArSslXIj-9wiR8C0U3QzqStjwIqEqIINSkoPpdv7nZ5rFjhVPg98TfZR4prjvIYCi3xxLST5K8Ecf42GA_3TqzhMbhpEmB0JnDqZAsAJKjcMH2yaYCMyTxSxNrwplIkHHMJ8msf7IqQe/s1600/xfire05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRArSslXIj-9wiR8C0U3QzqStjwIqEqIINSkoPpdv7nZ5rFjhVPg98TfZR4prjvIYCi3xxLST5K8Ecf42GA_3TqzhMbhpEmB0JnDqZAsAJKjcMH2yaYCMyTxSxNrwplIkHHMJ8msf7IqQe/s320/xfire05.png" width="320" /></span></a></div>
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Because all lights were dynamic we really wanted to show it off. We had swinging and flickering lights all around the levels, and a spot light attached to the end of the gun. Even the muzzle flash was a full light that cast shadows.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBVWR1-IZGZ8jKI6oiUh2p1vOQq2rrJ1EAYRiIZsj3g_XY5FtH_9lqCDsAl_nGy0sIwrCSFzCu3GOAMuvafVxC_e45zdr_F3JWf-WYSEKXfagNDhJ53pDTs93e4OV6Zz1invkHBHxM6SyC/s1600/xfire01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBVWR1-IZGZ8jKI6oiUh2p1vOQq2rrJ1EAYRiIZsj3g_XY5FtH_9lqCDsAl_nGy0sIwrCSFzCu3GOAMuvafVxC_e45zdr_F3JWf-WYSEKXfagNDhJ53pDTs93e4OV6Zz1invkHBHxM6SyC/s320/xfire01.png" width="320" /></span></a></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Every surface had a diffuse map, normal map and a monochrome specular mask. But the specular response was fixed. Looking back I wish I had a colour specular mask and a variable specular response. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Also when I rendered the ambient pass I just used the diffuse texture. It would have been simple to use the normal map to look up into a cube map or something to stop it looking so flat in shadow. We got around this by having almost no ambient light, it helped with the ambiance anyway.</span></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;">I should have had fill lights, cheaper lights that had no shadow or specular, so we could have filled in the darker spots in the level.</b></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJRnyZTmk-NK6mu41aSYgKRtm2LCRQiKF-uO3wpBUDMlrhpids7aB4oEt11Y6A5MzAEy6T0fTweh6ssmoa12OrV_A5IbJO3jwmt04phGdz3_2TspMp2qzcNuZ94lTv57x3Ryy1AkwpwrUd/s1600/xfire03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJRnyZTmk-NK6mu41aSYgKRtm2LCRQiKF-uO3wpBUDMlrhpids7aB4oEt11Y6A5MzAEy6T0fTweh6ssmoa12OrV_A5IbJO3jwmt04phGdz3_2TspMp2qzcNuZ94lTv57x3Ryy1AkwpwrUd/s320/xfire03.png" width="320" /></span></a></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Game play wise, we only had one enemy type and two different weapons. Of course to turn this into a real game we would've had to expand on that. We had lots of ideas but we ran out of time to implement them.</span><br />
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Because of where the camera was you would potentially see enemy's in rooms that your character should not be able to see. But because there was almost no ambient light, most of the time to find an enemy you had to walk into a room and shine your light in there.</span></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="line-height: 20.24px;">People kept asking us to add a first person mode. So we did, it was actually handy for debugging, allowing you to be able to get up close to problems. however, the game play and art was never designed for this and doesn't really hold up.</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7LXpjqWo0c1MloARSw7_CLxYnvg8T5ed0rbSET9AsC9I-iMU2NF37X_Jn9KTHxwpfUVQSGw7o-IOPHq7tNFCFggNAWIlNTMER876F_TrwLGOP-qHZqW0vcpwBa4lntxyYd6CjNLTDJkWx/s1600/xfire04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7LXpjqWo0c1MloARSw7_CLxYnvg8T5ed0rbSET9AsC9I-iMU2NF37X_Jn9KTHxwpfUVQSGw7o-IOPHq7tNFCFggNAWIlNTMER876F_TrwLGOP-qHZqW0vcpwBa4lntxyYd6CjNLTDJkWx/s320/xfire04.png" width="320" /></span></a></div>
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span>
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We did have two player co-op working over TCP-IP. It was a lot of fun. That's why there is another player character standing at the start of each level. If someone connects to your game, they control that player.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXmjbcvypKQmSg2Vw7QZTmJy20djeaOQvW1HxBbUtcTTZoL4ZyijRDvYPtX2zsgOD61PDdxw2Lsbo4FldOPLrIJHaMup14EEaQkIEWew-Hj5crA0W4VMbAEed6yec1FJb-N-Sd5hM-p3D/s1600/xfire02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: inherit;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXmjbcvypKQmSg2Vw7QZTmJy20djeaOQvW1HxBbUtcTTZoL4ZyijRDvYPtX2zsgOD61PDdxw2Lsbo4FldOPLrIJHaMup14EEaQkIEWew-Hj5crA0W4VMbAEed6yec1FJb-N-Sd5hM-p3D/s320/xfire02.png" width="320" /></span></a></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Because the levels were all tile based and Travis made us a nice tile set, we could make levels really quickly. Each level was just rearranging level pieces, so level load times where almost zero. I’m sure if we ever made a real game out of this we would have made more level sets of different environments. It would have been interesting to try and make an auto level generator, but we never had time. Plus it was a lot of fun making levels.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Because all the lighting was real time, you didn’t have to sit around waiting for levels to bake. You could edit levels live in the game. We didn’t hide this and encouraged people to snap pieces together and see what they could come up with.</span></div>
<span style="font-family: inherit;"><b style="font-weight: normal;"><br /></b>
</span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: inherit; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Because all our lighting was dynamic all our geometry could be dynamic also. However, we never really exploited this. I always wanted to add physics objects to the game. It would have been cool to see objects get flung around the place as you unload your gun.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<span style="font-family: inherit;">I would publish the source code, but its too embarrassing. The only thing anyone would learn is what NOT to do ;) But I'm happy to answer any questions about it.</span>Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com1tag:blogger.com,1999:blog-3601885921969384745.post-35014730977476075962013-08-12T04:57:00.001-07:002013-08-12T04:57:18.762-07:00AO good enough?So here is the bounce lighting combined with the direct lighting.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVAKItmptUUSlkEWfLcCzRQRAswwm4C4m_yL3eeKndAnr9KW_StUzU3DmimLBfTFDxs8Z9odh2a6eVQ1qX2YQ8M9IWy9ADXa0N6gdJvAMf7he_WyX4dS0V24fGLg8ijdKG94C_90o-TVu3/s1600/bounce03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVAKItmptUUSlkEWfLcCzRQRAswwm4C4m_yL3eeKndAnr9KW_StUzU3DmimLBfTFDxs8Z9odh2a6eVQ1qX2YQ8M9IWy9ADXa0N6gdJvAMf7he_WyX4dS0V24fGLg8ijdKG94C_90o-TVu3/s320/bounce03.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Got to say I'm a little disappointed, after all that messing around I expected a lot more. There is some nice bounce lighting under the ships bridge coming off the deck. But apart from that it looks mostly like ambient occlusion.</div>
<div class="separator" style="clear: both; text-align: left;">
I already have lots of ideas on how to make this better, but I'm keen to get back on to coding rift stuff. So this will have to do for now.</div>
Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-22476233445646570502013-08-07T16:28:00.002-07:002013-08-07T16:28:53.041-07:00Lets bouncePicked up a new GTX 770 so I felt the need to do some more GPU compute work. I had a go at computing some bounce lighting, this is what I've come up with so far. Its only one bounce and it takes about 24 hours to light 16384 X 16384 pixels. (Think I should stop blaming the hardware and write faster code). I think the sky maybe over influencing the final result. But we'll have to wait until I composite it in before we will know.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCAog2i-Qv6uhSP-LhaBtSPCAe_IxSTphzTcN5Rqx8BHZfUjjZeCXvVPrXdeg0WTl7eOU_gYDyIi1MF-LDBqGTV7vdtJe9qxNdufwIP8SOO631Zv2026WbX6bgWdWDl5K_VCL7KQHzJda8/s1600/bounce02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCAog2i-Qv6uhSP-LhaBtSPCAe_IxSTphzTcN5Rqx8BHZfUjjZeCXvVPrXdeg0WTl7eOU_gYDyIi1MF-LDBqGTV7vdtJe9qxNdufwIP8SOO631Zv2026WbX6bgWdWDl5K_VCL7KQHzJda8/s320/bounce02.png" width="320" /></a></div>
<br />Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-45278420524063322222013-02-28T00:25:00.001-08:002013-02-28T00:25:39.164-08:00Lawnmower man here we comeI have been reading and watching every thing I can on the Oculus Rift. I can't wait to get my hands (and eyes) on one.<br />
But just because I have never seen one in the flesh doesn't mean I can't try and write code for it.<br />
<br />
I had to guess at a lot of stereo properties, but hopefully I want give anyone a stroke.<br />
<br />
If you check this video out on a head set please let me know how it looks. Am I even close?<br />
<br />
Any way can't wait to play with the real thing, but until then I'll just have to dream.
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/0FdE3hSzrNU" width="560"></iframe>Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-86044827920537234282013-02-21T13:58:00.000-08:002013-02-21T14:25:14.971-08:003D video testStarted playing around with capturing stereoscopic video and uploading it to YouTube. I used a VT with just AO in it because black and white looks a lot better when viewing with anaglyph glasses.<br />
<br />
Looks like the video worked OK But it doesn't work in HTML 5 mode, so I can't use my Nvidia glasses to view it.<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/S8LoREYKZnQ" width="560"></iframe>
Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-77362402534419302682013-02-19T13:04:00.001-08:002013-02-19T13:04:38.891-08:00Stereoscopic 3D is coming<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3NLq5nsxTaULAjF-CceOMdupTPDf9dfwtpyEISE0boI_rlX8145zn55M2z4BRkQLcI_n3rNg2f5QinBaPuNyjQPVv5tEBCiFW_uUKHvfSY4IJTShR7pHiU_RWIuRAvIfB9PLhazWoCgsj/s1600/stereotest01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3NLq5nsxTaULAjF-CceOMdupTPDf9dfwtpyEISE0boI_rlX8145zn55M2z4BRkQLcI_n3rNg2f5QinBaPuNyjQPVv5tEBCiFW_uUKHvfSY4IJTShR7pHiU_RWIuRAvIfB9PLhazWoCgsj/s320/stereotest01.png" width="320" /></a></div>
<br />Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-18854664846747896272013-02-04T03:11:00.002-08:002013-02-04T03:11:39.086-08:00Virtual Texture Demo 05I have put another video of my Virtual Texture implementation up. This starts as a recap of what a Virtual Texture is then shows off my new decal system.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/7RDM-IvrTD0" width="560"></iframe>
Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com2tag:blogger.com,1999:blog-3601885921969384745.post-14115622080325271732013-01-15T14:42:00.000-08:002013-01-15T14:42:29.854-08:00Virtual Texture Demo 04So as promised here is a video showing off the new uv's and seamless Bilinear filtering. As a bonus I took the page cache size from 4K*4K to 8K*8K and tweaked the mip bias's.<br />
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="http://www.youtube.com/embed/z-Ofv9_OTKg" width="560"></iframe>
Oh yeah the FPS can now easy hit over 200 and there is still tons of optimizing that can be done. This thing is crazy fast at run-time. :)Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-84153229813619386342013-01-11T22:41:00.000-08:002013-01-11T22:41:12.554-08:00Not all GPU's are made equal My mate Drew sent me a version of the model I've been using with much nicer UV's. So all the pixels are aligned and have a consistent uv density. Which is awesome, But it means I needed to compute all new lighting textures and I didn't want to wait two days like last time. So I installed windows on my Linux box and got it rendering. And I also got my laptop rendering too. But you can see from this data it wasn't really worth it.<br />
<br />
<table border="1">
<tbody>
<tr>
<td>Computer</td><td>GPU</td><td>Gflops</td><td>Light 268435456 pixels</td>
</tr>
<tr>
<td>Build(Linux Box)</td><td>6600 GT</td><td>47</td><td>~386 hours</td>
</tr>
<tr>
<td>Laptop</td><td>GT 620M</td><td>269 </td><td>~64 hours</td>
</tr>
<tr>
<td>MainPC</td><td>GTX 460</td><td>907</td><td>~22 hours</td>
</tr>
</tbody></table>
<br />
Any way here is what it looks like.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqBgztepONqyNdvJCb0Q8p5BKxS5pWWIGmQa7ezMcX4b4y11ebe2XuzdjBRywtYC7O4W6Hi2bEhLW2c6T8ccTTJ2D7j3yohwU4Ol1waND_fvYFl70UJvxLAtGRGnHmA1f8nmhSrm1dPahr/s1600/newuvs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqBgztepONqyNdvJCb0Q8p5BKxS5pWWIGmQa7ezMcX4b4y11ebe2XuzdjBRywtYC7O4W6Hi2bEhLW2c6T8ccTTJ2D7j3yohwU4Ol1waND_fvYFl70UJvxLAtGRGnHmA1f8nmhSrm1dPahr/s320/newuvs.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Hard to see from this image but trust me it looks a lot nicer. Once I fix up the bilinear filtering I'll post another video and you can see for your self.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
But I really want to try a 32k * 32K texture next. Which would take about 8 days! So looks like I have some optimizing to do. Unless anyone has a render farm they are not using?</div>
<br />Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-67200497908785468132013-01-02T03:25:00.000-08:002013-01-02T03:25:01.983-08:00Virtual Texture Demo 03Now you can see the new lighting in action. Plus now if I don't have a page loaded that we need. I just use a page that is further down the mip chain. Its much nicer then showing an invalid texture or having textures flicker until they are loaded in.<br />
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="http://www.youtube.com/embed/6a4SUPqDXM8" width="560"></iframe>
<br />Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-58503190222388118512012-12-29T18:55:00.001-08:002012-12-29T19:09:27.885-08:00All lit upSo here it is: shadows, ambient occlusion and diffuse all put together.<br />
Note I tried to match the camera angles as best I could from the ambient occlusion images (<a href="http://fragmentbound.blogspot.com.au/2012/12/took-quite-of-bit-of-time.html">here</a>)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRM-eQfxF-iWBnKvEeJT8aDrGybt8uWDBaZJAdqF4lz2P6nZpFT6Gvyvo0biJ6eDSoEHnyFzs9qOWkaKxMf-JRGo_-OaRR2Gb7s-SPlo_f-PKSoziGPlfGmCft1XlQT0Y4Ayl6f4XIdtGY/s1600/lit01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRM-eQfxF-iWBnKvEeJT8aDrGybt8uWDBaZJAdqF4lz2P6nZpFT6Gvyvo0biJ6eDSoEHnyFzs9qOWkaKxMf-JRGo_-OaRR2Gb7s-SPlo_f-PKSoziGPlfGmCft1XlQT0Y4Ayl6f4XIdtGY/s1600/lit01.jpg" height="179" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuupfCM7Zl4U2JjelFhl6MvvcNf6dVD1TnuIKR9kzNt4X7_UqWt8MkEK8Art2FQWLOCbJj8N6eYNnuPmKNA7e4JG3XFxCEJ_aPYHsQvNOP3nT-U5xfRRuguztZPUg42zD_FxwzaT22H9s3/s1600/lit02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuupfCM7Zl4U2JjelFhl6MvvcNf6dVD1TnuIKR9kzNt4X7_UqWt8MkEK8Art2FQWLOCbJj8N6eYNnuPmKNA7e4JG3XFxCEJ_aPYHsQvNOP3nT-U5xfRRuguztZPUg42zD_FxwzaT22H9s3/s1600/lit02.jpg" height="180" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
If it wasn't for those seams I'd be happy. I've had quite the adventure doing some GPGPU'ing to bake out all that lighting data. I should write it all up. But for now I'm off the the beach, To give my GPU a rest ;)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-8246990061874607422012-12-29T18:08:00.001-08:002012-12-29T18:08:37.406-08:00ShadowsSo baked out some shadows at 16k * 16k. It only took 17 hours. I need to spend some time optimizing or get my self a render farm :)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ocJ6eTAuv6QxKva5VcR0XCFpvbe_YW9fhaB1ci-F3fnh2PuUFb06S2EJA24YbRNej0A_RK7bbuOk0Aj8UsdeVzWoPOEoflTZQlCyu4NkbxTddY2kT226fA-ni0wzc9WSW_P1y8lFVS_O/s1600/shaodw01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2ocJ6eTAuv6QxKva5VcR0XCFpvbe_YW9fhaB1ci-F3fnh2PuUFb06S2EJA24YbRNej0A_RK7bbuOk0Aj8UsdeVzWoPOEoflTZQlCyu4NkbxTddY2kT226fA-ni0wzc9WSW_P1y8lFVS_O/s1600/shaodw01.png" height="180" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZIOmp4N7mtaYeFtLjuj1gH4o-4fD4XkaxqVc2t41DshZu4WGgSg7vImCb7qpn3AUCiQ1xsqzEdITYIH-zcuDo3bowbhF4KXURgKCJp0MlBPmjCQm_QaJOXEqKCmqOQN1ev0AiKAIkpLd-/s1600/shaodw02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZIOmp4N7mtaYeFtLjuj1gH4o-4fD4XkaxqVc2t41DshZu4WGgSg7vImCb7qpn3AUCiQ1xsqzEdITYIH-zcuDo3bowbhF4KXURgKCJp0MlBPmjCQm_QaJOXEqKCmqOQN1ev0AiKAIkpLd-/s1600/shaodw02.png" height="179" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I know what you're thinking, because I'm thinking the same thing. So how does it all look when put together? Well my computer is working on that, should have the results in a matter of minutes.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-5829742754362322732012-12-27T14:40:00.001-08:002012-12-27T14:40:56.172-08:00Took quite of bit of timeI wanted to get some lighting into my virtual texture demo. So I wrote a super simple GPU light-mapper. Well maybe I shouldn't have made it so simple. Because it took ~32 hours to bake out a 16K * 16K light-map.
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJK71bDAPL_okx2RujEBUbAKRo5APLXarJ7GiMzG7Vb1_IahUlXHkH1WNpoq48Zn3KmAdI4CrwpPjbwiB1FapPlb-EOLMWUpuityXL8HPj87qYB0NFRb3Yn2mEMT-6T3X80ZW_Yq5AV7m_/s1600/megalight01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJK71bDAPL_okx2RujEBUbAKRo5APLXarJ7GiMzG7Vb1_IahUlXHkH1WNpoq48Zn3KmAdI4CrwpPjbwiB1FapPlb-EOLMWUpuityXL8HPj87qYB0NFRb3Yn2mEMT-6T3X80ZW_Yq5AV7m_/s400/megalight01.jpg" height="225" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitZQTRZWWOR2L_5DBcFZRmzsCQ8xSQ0wMiZpE1TWflv7XwxShL37Tkjo8-NAHGkKD-T6Mc__htaQdeVrECzzC9omthcP8eL51wbWIdAEUFnFh2YJJ4fHnlh6noGSJrxdwkpgCrXyuJfnmh/s1600/megalight02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitZQTRZWWOR2L_5DBcFZRmzsCQ8xSQ0wMiZpE1TWflv7XwxShL37Tkjo8-NAHGkKD-T6Mc__htaQdeVrECzzC9omthcP8eL51wbWIdAEUFnFh2YJJ4fHnlh6noGSJrxdwkpgCrXyuJfnmh/s400/megalight02.jpg" height="225" width="400" /></a></div>
Looks OK for a first try, but those seams are killing me. But wheels are in motion to get some nice UV's.
Of course the next step is to bake in the diffuse textures as well.
Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-23980918140101541172012-12-27T02:34:00.000-08:002012-12-27T02:34:44.000-08:00Virtual Texture DemoI have started playing around with my virtual texture demo again. I have two video blog posts about it here...<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/Ow997OdpPf4" frameborder="0" allowfullscreen></iframe>
and here...<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/H8VrtkeSWXY" frameborder="0" allowfullscreen></iframe>
Right now I'am trying to bake out some nice lighting, with a simple lightmap renderer that I wrote that runs on the GPU. Its super slow right now. But I'll talk more about that later.Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-20578376405969006922011-11-29T04:49:00.000-08:002011-11-29T04:49:09.255-08:00Doom3 source codeI got Doom3 compiling and running on my Mac thanks to this fork of the code...<br />
https://github.com/Geenz/doom3.gpl<br />
It really is a lot of fun poking around.<br />
I think Doom3 was written to run on Geforce 3 GPU's (maybe even Geforce 2). So I was thinking it would be cool to take advantage of our new fancy pants GPU's and do some cool stuff.<br />
First thing I did was add a vidmode for my monitor (1680X1050) could add some more common screen resolutions like 720p and 1080p.<br />
I don't know if it is a Mac thing or not but it doesn't look like vsysnc is working, it would be good to sort that out.<br />
I haven't tried it with a game pad yet, but would like to see it working nicely with an X360 controler.<br />
Would like to add some better normal map compressing. Normal maps compressed with DXT1 look like crap. But most GPU's should have enough ram to load all the textures uncompressed now.<br />
There is a lot of smoke and dust, could easy make them soft using the z-buffer.<br />
I think all the skinning and shadow silhouette generation is done on the CPU, shouldn't be too hard to move then onto the GPU now.<br />
Even though I'm not a big fan of SSAO it could be a good fit.<br />
MSAA works fine in Doom3 but it might be fun to add FXAA.<br />
And of course adding HDR and motion blur would really sex it up.<br />
<br />
The real problem is finding the hours in the day to do all of this. Should really look around and see what other people are doing. I'm sure other people are thinking about the same things as me.Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-69222928600762502172011-11-21T05:36:00.000-08:002011-11-21T05:36:52.352-08:00Xcode KeyBindingsTrying to make Xcode more like <span class="Apple-style-span" style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: x-small; line-height: 16px;">Visual </span><em style="background-color: white; font-family: arial, sans-serif; font-size: small; font-style: normal; line-height: 16px;">Studio</em>.<br />
Work in progress...<br />
<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><br />
<plist version="1.0"><br />
<dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Menu Key Bindings</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Key Bindings</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><array><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Action</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>cut:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Alternate</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>CommandID</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Xcode.IDEKit.CmdDefinition.Cut</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Group</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Edit Menu</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>GroupID</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Xcode.IDEKit.MenuDefinition.Main</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>GroupedAlternate</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Keyboard Shortcut</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>^x</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Navigation</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Title</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Cut</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Action</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>copy:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Alternate</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>CommandID</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Xcode.IDEKit.CmdDefinition.Copy</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Group</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Edit Menu</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>GroupID</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Xcode.IDEKit.MenuDefinition.Main</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>GroupedAlternate</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Keyboard Shortcut</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>^c</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Navigation</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Title</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Copy</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Action</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>paste:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Alternate</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>CommandID</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Xcode.IDEKit.CmdDefinition.Paste</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Group</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Edit Menu</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>GroupID</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Xcode.IDEKit.MenuDefinition.Main</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>GroupedAlternate</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Keyboard Shortcut</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>^v</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Navigation</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>NO</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Title</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>Paste</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></array><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Version</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><integer>3</integer><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Text Key Bindings</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Key Bindings</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key></key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><array><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToRightEndOfLineAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToLeftEndOfLineAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToRightEndOfLine:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToLeftEndOfLine:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>selectToMark:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>swapWithMark:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>scrollToBeginningOfDocument:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>scrollToEndOfDocument:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></array><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>$@</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToBeginningOfDocumentAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>$@</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToEndOfDocumentAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>$@</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordBackwardAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>$@</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordForwardAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>$</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToBeginningOfLineAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>$</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToEndOfLineAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>@</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordLeft:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>@</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordRight:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>^~$B</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordBackwardAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>^~$F</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordForwardAndModifySelection:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>~</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordLeft:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>~</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveWordRight:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>~</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>pageDown:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key></key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToBeginningOfLine:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key></key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><string>moveToEndOfLine:</string><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dict><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><key>Version</key><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><integer>3</integer><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dict><br />
</dict><br />
</plist><br />
<div><br />
</div>Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com1tag:blogger.com,1999:blog-3601885921969384745.post-22145042699853319102011-08-30T06:06:00.000-07:002011-08-30T06:06:16.295-07:00Source control will save you life one dayThe light maps in IdleTime are extremely bad. In fact I'm not even sure you could call them light maps. Basically they just store the shadows. The UV densaty is a joke, there is no ambient occlusion, no bounce lighting, no nothing.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZKzkLBwyWsaABbyKkWO0A_fbP56X1BZvVGvGjMDGUjIDMAQBcwnZB3T_Pk4iN2plqjt1QArJrcPZKC0H2rucPfFdmPXzup4S_-fC_JfqPJEN8xfh83Qczgzwt5KXP9s0dKhal-6VtdBWx/s1600/badLightMaps.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZKzkLBwyWsaABbyKkWO0A_fbP56X1BZvVGvGjMDGUjIDMAQBcwnZB3T_Pk4iN2plqjt1QArJrcPZKC0H2rucPfFdmPXzup4S_-fC_JfqPJEN8xfh83Qczgzwt5KXP9s0dKhal-6VtdBWx/s320/badLightMaps.jpg" width="320" /></a></div><br />
So whats this got to do with source control? Looking at the above screen shot I decided that I should fix the light maps. Long story short I can't find the code for the light mapper.<br />
Obviously if you have more then one coder on a project source control makes total sence. But why use source control when there is only one programmer?<br />
<br />
Lesson #3 for old me:<br />
Always use source control. A part from the obvious, history. Having history will make your code a lot cleaner. I found that when making a big change to the code I would just comment out the old code and add the new code in. This gets very messy very fast. I've been using Perforce at home, they have a 2 (maybe 3) user version for free.<br />
<br />
<br />
Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com1tag:blogger.com,1999:blog-3601885921969384745.post-52508373769023932522011-08-21T18:38:00.000-07:002011-08-21T18:38:08.759-07:00Android IdleTimeHave been messing around with the Android SDK and I decided that I need some better test data. So I made a little exporter for the IdleTime car models.<br />
Nothing too hardcore yet, just drawing a mesh with a texture. No lighting or anything.<br />
Note it looks a lot less aliased on the phones display.<br />
<span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px;"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMLcPRWsTgJw_rV01tc2k6ocP7TTBcVOiZ8pUDhWbPSaGwSJRmRaa9z_Ggoy38UW2JU9Nk6tmyUB7h1ZpkT36gANCTWTAHE9eluz1hIwJ75JgAg8J8dJtRmJxW8Uzzmm2j-BjHb4syevUE/s1600/androidIdle01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMLcPRWsTgJw_rV01tc2k6ocP7TTBcVOiZ8pUDhWbPSaGwSJRmRaa9z_Ggoy38UW2JU9Nk6tmyUB7h1ZpkT36gANCTWTAHE9eluz1hIwJ75JgAg8J8dJtRmJxW8Uzzmm2j-BjHb4syevUE/s320/androidIdle01.jpg" width="192" /></a></div>Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com1tag:blogger.com,1999:blog-3601885921969384745.post-71564966787931556642011-08-17T05:47:00.001-07:002011-08-17T05:47:17.605-07:00IdleTime is building and runningIt only took an hour or two to get the code building again. Most of the time was spent getting the code to compile with Visual C++ 2010 Express. Took another hour or two to track down a problem with the stencil shadows. For sum reason I was calling abs() on sum unsigned int's. On that note this ~10 year old code is scary. Turns out I have learn a thing or two about programming since then.<br />
<br />
Lesson #1 for old me:<br />
Use "Asserts". There is not one assert in the whole project. Making debugging a nightmare.<br />
<br />
Lesson #2 for old me:<br />
Clean up Warnings. The project had hundreds of warnings. Warnings can help you catch dumb code but you will not see the good ones with all that noise.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilq-HjQ6akbUqyx-UqiQUto9uQlzeFFZ4Vgu3p5HA_19iQEn4i1JKk4e39tdRkaAOeBJPxh7LrdL6F0ILpClbfC68LX8gZ5cYE30DkTC3HEHuw0V8six2aIU60j2IEZfbe8oGPRbckrKrT/s1600/idetime01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilq-HjQ6akbUqyx-UqiQUto9uQlzeFFZ4Vgu3p5HA_19iQEn4i1JKk4e39tdRkaAOeBJPxh7LrdL6F0ILpClbfC68LX8gZ5cYE30DkTC3HEHuw0V8six2aIU60j2IEZfbe8oGPRbckrKrT/s320/idetime01.jpg" width="320" /></a></div><br />
<br />
<br />
Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com0tag:blogger.com,1999:blog-3601885921969384745.post-13466391014076151072011-08-14T06:23:00.000-07:002011-08-14T06:23:48.354-07:00So what are there games anyway?Our web site is long gone, so you can't download these games any more. But as part of this project I want to get them building again, improve then a bit and put them back online.<br />
<br />
The first game we made was Idle Time. After a bit of googleing I found this Flipcode image of the day we submitted...<br />
<a href="http://www.flipcode.com/archives/10-28-2002.shtml">http://www.flipcode.com/archives/10-28-2002.shtml</a><br />
<br />
The next game we made was X-Fire. (I think some game match making software uses that name now). This was starting to feel like a real game but then I was hired by Bluetongue and I never really touched it since.<br />
<a href="http://www.flipcode.com/archives/01-19-2004.shtml">http://www.flipcode.com/archives/01-19-2004.shtml</a>Michael Younghttp://www.blogger.com/profile/15330969325585131464noreply@blogger.com1