<?xml version="1.0" encoding="UTF-8" standalone="yes"?><oembed><version><![CDATA[1.0]]></version><provider_name><![CDATA[The ryg blog]]></provider_name><provider_url><![CDATA[https://fgiesen.wordpress.com]]></provider_url><author_name><![CDATA[fgiesen]]></author_name><author_url><![CDATA[https://fgiesen.wordpress.com/author/fgiesen/]]></author_url><title><![CDATA[Debris: Opening the&nbsp;box]]></title><type><![CDATA[link]]></type><html><![CDATA[<p>It&#8217;s now been almost 5 years since we (farbrausch) released <a href="http://www.farbrausch.com/prod.py?which=2">fr-041: debris</a>, and almost 8 years since the somewhat ill-fated <a href="http://www.farbrausch.com/prod.py?which=114">.kkrieger</a>. We tried to package that technology up and sell it for a while, which I wasn&#8217;t particularly happy with when we decided to start doing it and extremely unhappy with by the time we stopped :). We decided to dissolve the company that owned the IP (.theprodukkt GmbH) about two years ago, a process that was finished last summer. Some months ago we got the tax returns for our last fiscal year; I missed the party on account of currently being on another continent from my other co-founders.</p>
<p>So now both the tech and the code are somewhat orphaned. We could just release the source code into the public, but frankly it&#8217;s an unholy mess, and you&#8217;re likely to miss all the cool bits among the numerous warts. I&#8217;ve done source releases before, and we might still do it with Werkkzeug3 (the tool/framework behind the two aforementioned productions and nineteen others). But I&#8217;d really rather present it in a somewhat more curated form, where I highlight the interesting bits and get to sweep all the mess behind it under the rug. So here&#8217;s the idea: this post contains a list of things in Debris that I think might make for an interesting post. Unlike my &#8220;Trip Through The Graphics Pipeline 2011&#8221; series, this list is far too long to just decide on a whim to do all of it. So instead, you get to vote: if there&#8217;s anything on this list that you&#8217;d like me to write about, post a comment. If there&#8217;s sufficient interest and I&#8217;m in the mood, I&#8217;ll write a post about it. 🙂</p>
<p>The one thing I&#8217;m <em>not</em> going to talk about is about our <a href="http://www.farbrausch.com/prod.py?which=115">tool</a>-centric way of producing demos. Chaos and me have talked about that several times and I&#8217;m getting bored of the topic (I think there&#8217;s videos on the net, but didn&#8217;t find anything on my first Google-sweep; will re-check later). Also, some of the topics have dependencies among each other, so I might decide to post something on the basics first before I get into specifics. Just so you&#8217;re warned. Anyway, here&#8217;s the list:</p>
<h3>Source code</h3>
<ul>
<li><a href="https://fgiesen.wordpress.com/2012/04/15/if-in-doubt-go-to-the-source/">If in doubt, go to the source</a></li>
<li>The <a href="https://github.com/farbrausch/fr_public">fr_public repository</a> on Github</li>
<li><a href="https://fgiesen.wordpress.com/2012/04/15/genthree-overview/">GenThree overview</a></li>
</ul>
<h3>Basics / execution environment</h3>
<ul>
<li>Operators (the building block of our procedural system)</li>
<li>Writing small code on Win32/x86 (in C++)</li>
<li>Executable compression</li>
<li>Memory Management on the editor side</li>
<li>The Operator Execution Engine (demo/player side)</li>
</ul>
<h3>Texture generation</h3>
<ul>
<li>How to generate cellular textures <a href="https://fgiesen.wordpress.com/2010/03/28/how-to-generate-cellular-textures/">part 1</a> and <a href="https://fgiesen.wordpress.com/2010/03/29/how-to-generate-cellular-textures-2/">part 2</a>.</li>
<li>Fast blurs <a href="https://fgiesen.wordpress.com/2012/07/30/fast-blurs-1/">part 1</a> and <a href="https://fgiesen.wordpress.com/2012/08/01/fast-blurs-2/">part 2</a>.</li>
<li>Fast Perlin noise-based texture generation</li>
<li>Shitting bricks</li>
</ul>
<h3>Compression</h3>
<ul>
<li><a href="https://fgiesen.wordpress.com/2011/01/24/x86-code-compression-in-kkrunchy/">x86 code compression in kkrunchy</a></li>
<li>Squeezing operator data</li>
</ul>
<h3>Animation</h3>
<ul>
<li>Operator &#8220;initialization&#8221; versus &#8220;execution&#8221; (animatable parameters)</li>
<li>Animation scripts</li>
<li>The timeline</li>
</ul>
<h3>Mesh Generation</h3>
<ul>
<li><a href="https://fgiesen.wordpress.com/2012/02/21/half-edge-based-mesh-representations-theory/">Half-edge based mesh representations: theory</a></li>
<li><a href="https://fgiesen.wordpress.com/2012/03/24/half-edge-based-mesh-representations-practice/">Half-edge based mesh representations: practice</a></li>
<li><a href="https://fgiesen.wordpress.com/2012/04/03/half-edges-redux/">Half-edges redux</a></li>
<li>Extrusions</li>
<li>Catmull-Clark subdivision surfaces</li>
<li>Bones and Bends</li>
<li>3D Text</li>
</ul>
<h3>Sound</h3>
<ul>
<li>Debris and kkrieger use Tammo &#8220;kb&#8221; Hinrichs&#8217;s V2 synth, described on his blog: <a href="http://blog.kebby.org/?p=34">part I</a>, <a href="http://blog.kebby.org/?p=36">part II</a>, <a href="http://blog.kebby.org/?p=38">part III</a>, and <a href="http://blog.kebby.org/?p=40">part IV</a>.</li>
</ul>
<h3>Effects</h3>
<ul>
<li>Swarms of cubes</li>
<li>Exploding geometry</li>
<li>Image postprocessing</li>
</ul>
<h3>Shaders and 3D engine</h3>
<ul>
<li>Shadergen (directly generates D3D9 bytecode for ubershaders, code <a href="http://www.farbrausch.com/~fg/code/shadergen/">here</a>)</li>
<li>The old material/lighting system: .kkrieger, PS1.3, cubes</li>
<li>The new material/lighting system: PS2.0, the city, multipass madness</li>
<li>Basic engine architecture &#8211; lights, layers and passes</li>
<li>Converting generated meshes to rendering-ready meshes</li>
<li>Skinning and Shadow Volumes</li>
</ul>
<h3>Other</h3>
<ul>
<li><a href="https://fgiesen.wordpress.com/2012/04/08/metaprogramming-for-madmen/">Metaprogramming for madmen</a> (a small story about .kkrieger)</li>
</ul>
<p>That&#8217;s not all of it, but it&#8217;s all I can think of right now that is a) somewhat interesting (to me that is) and b) something I can write about &#8211; for example, I wouldn&#8217;t be comfortable writing about the music/sound or overall flow/direction of the demo, since frankly I had little to do with that. And of course I didn&#8217;t write the code for all of the above either :), but I do know most of the code well enough to do a decent job describing it. That said, if you think there&#8217;s something I missed, just ping me and I&#8217;ll put it on the list.</p>
<p>So there you go. Your turn!</p>
]]></html></oembed>