<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description></description><title>bugshake</title><generator>Tumblr (3.0; @bugshake)</generator><link>https://bugshake.tumblr.com/</link><item><title>Floating Origin in Unity</title><description>&lt;p&gt;This technique is used when you need a larger area than the standard range in Unity. Transform position loses precision at around 10km (1 unit = 1 meter). Shadow mapping much closer.&lt;/p&gt;

&lt;p&gt;The idea is very similar to old-school games, where the character is always in the center of the screen and the world scrolls under him.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s assume I have a huge map, which somehow consists of world tiles, which are dynamically loaded/generated. I also have a character, some enemies and the camera.&lt;/p&gt;

&lt;p&gt;First thing is that all these elements get a 64-bit &amp;lsquo;real&amp;rsquo; position, so&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{ double x; double y; double z; }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Next, there is a class that moves everything to their world position, which is now relative to the floating origin. The floating origin is a 64-bit coord starting at (0, 0, 0). The space is divided into blocks, for example 128x128x128. Whenever the focus leaves block (0, 0, 0), the floating origin is moved.&lt;/p&gt;

&lt;h2&gt;An example:&lt;/h2&gt;

&lt;p&gt;NOTE: I&amp;rsquo;m using w(&amp;hellip;) for world space coordinates, which is transform.position. I&amp;rsquo;m using r(&amp;hellip;) for real space coordinates, which are 64-bit.&lt;/p&gt;

&lt;p&gt;floating origin = r(0, 0, 0)&lt;/p&gt;

&lt;p&gt;focus world pos = w(127, 0, 5) (the focus is the player)&lt;/p&gt;

&lt;p&gt;Now the player moves to w(129, 0, 5). This brings the focus block to (1, 0, 0). The floating origin manager will now do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;set its floating origin to r(128, 0, 0)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;move the player, the camera, all the enemies and all the terrain tiles by w(-128, 0, 0). Which means they end up at realCoord - floatingOrigin.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Later, the player moves to w(129, 0, 5) again. This brings the focus block to (2, 0, 0) compared real space, or (1, 0, 0) compared to world space. The floating origin manager will now do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;set its floating origin to r(256, 0, 0)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;move the player, the camera, all the enemies and all the terrain tiles by w(-128, 0, 0)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;it matters when the floating origin manager&amp;rsquo;s update function executes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;rigidbodies are a problem. You sometimes need to reset their inertia and it&amp;rsquo;s best to wait moving the floating origin until none of them are awake and colliding&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;world space particles and trails don&amp;rsquo;t work&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>https://bugshake.tumblr.com/post/185700593818</link><guid>https://bugshake.tumblr.com/post/185700593818</guid><pubDate>Wed, 19 Jun 2019 07:37:55 -0400</pubDate><category>unity3d</category><category>programming</category><category>gamedev</category></item><item><title>procedural-generation:
Space-filling tangent field
Sometimes,...</title><description>&lt;img src="https://64.media.tumblr.com/8e961116205d9e68434573635d4599ac/tumblr_p8toh8xwq81uo5d9jo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="https://procedural-generation.tumblr.com/post/173986827150/space-filling-tangent-field-sometimes-someone" class="tumblr_blog"&gt;procedural-generation&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;
&lt;h2&gt;Space-filling tangent field&lt;/h2&gt;
&lt;p&gt;Sometimes, someone comes up with a technique that seems so obvious in retrospect that you wonder why you haven’t seen it before.&lt;/p&gt;
&lt;p&gt;It’s not new (this &lt;a href="http://www.sci.utah.edu/~chengu/street_sig08/street_project.htm"&gt;ACM 2008 paper describes the technique&lt;/a&gt;) but if I’ve seen it before I didn’t remember it. Or maybe I just connected to the context in the right way this time.&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;So, what the heck is a tangent field and how can you use it to generate a city? A &lt;i&gt;vector field&lt;/i&gt; is a field of vectors–that is, for each point in the space there is an arrow pointing in a direction, which can be shorter or longer. This should be fairly easy to understand if you’re already familiar with vectors: it’s just a bunch of vectors that each have a position in space. They can be useful for a lot of things, such as wind simulation, pathfinding, and crowd simulation.&lt;/p&gt;
&lt;p&gt;A &lt;i&gt;tangent field&lt;/i&gt; is a vector field on a surface, where the vectors are in &lt;a href="https://en.wikipedia.org/wiki/Tangent_space"&gt;tangent space&lt;/a&gt;–for a flat plane they’re lying flat on the ground. The city generator Stijn Raaijmakers made works by taking the weighted average angle (with the weight as 1/(r*r) where r is the distance to each tangent attractor) and generating a building there either along the tangent angle or perpendicular to it. This creates a densely packed space that nevertheless&lt;/p&gt;
&lt;p&gt;Packing problems come up quite a bit in procedural generation, especially where you’re trying to fill a space with content and don’t want any unsightly gaps. (There’s non-spatial applications of packing problems too, but we’ll leave that for another day.) Stijn’s generator reminded me that there’s a lot of useful research to draw on out there.&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/bugshake/status/996509163302866945"&gt;https://twitter.com/bugshake/status/996509163302866945&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>https://bugshake.tumblr.com/post/173988888308</link><guid>https://bugshake.tumblr.com/post/173988888308</guid><pubDate>Thu, 17 May 2018 09:50:15 -0400</pubDate></item><item><title>More complex version of that 3D voronoi fills the floor with...</title><description>&lt;img src="https://64.media.tumblr.com/e3aa8c47bac4dd0da05eea103ceeda7e/tumblr_o1h4vp41or1udchf2o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;More complex version of &lt;a href="https://twitter.com/bugshake/status/689919847367626752"&gt;that 3D voronoi&lt;/a&gt; fills the floor with overlapping flowers. I guess this is in part the effect of having two little girls and getting inspired by &lt;a href="https://sites.studio100.com/heidi/wp-content/uploads/sites/11/2014/10/header-img-heidi.jpg"&gt;the graphics in the new Heidi cartoon&lt;/a&gt;.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/137969624118</link><guid>https://bugshake.tumblr.com/post/137969624118</guid><pubDate>Sun, 24 Jan 2016 15:28:37 -0500</pubDate><category>Unity3D</category><category>shader</category><category>volumetric</category><category>flowers</category><category>procedural</category></item><item><title>Random tiles in repeating texture</title><description>&lt;p&gt;I always found it ugly to have a single “ground” texture endlessly repeating in my landscape. Or the same brick making a wall. I figured it would at least be possible to have a single texture with multiple ‘tiles’ in it, like a sprite atlas and use a random noise texture to randomly pick tiles for every instance of the pattern. Sort of like having a “birds and hearts” wallpaper where every image is either a bird of a heart, but picked at random.&lt;/p&gt;&lt;p&gt;I first made a (ugly) 2x2 tile atlas. Here’s the standard unity shader with it repeating 5x5 times:&lt;/p&gt;&lt;figure data-orig-width="1040" data-orig-height="454" class="tmblr-full"&gt;&lt;img src="https://64.media.tumblr.com/00e3c910b5dcde6d94d63ac7b1f0c567/tumblr_inline_o0wia0f6JA1tazl23_540.png" alt="image" data-orig-width="1040" data-orig-height="454"/&gt;&lt;/figure&gt;&lt;p&gt;As you can see, every instance of the tile as actually 4 small tiles: plain sand, a grass patch, a rock patch and a boulder. &lt;/p&gt;&lt;p&gt;Next is the random pattern of 4 values (0, 0.25, 0.5, 0.75) produced to pick tiles from the atlas:&lt;/p&gt;&lt;figure data-orig-width="1051" data-orig-height="455" class="tmblr-full"&gt;&lt;img src="https://64.media.tumblr.com/8a9a465b435d99c76857f554396a38e9/tumblr_inline_o0wichtPOg1tazl23_540.png" alt="image" data-orig-width="1051" data-orig-height="455"/&gt;&lt;/figure&gt;&lt;p&gt;This is converted to a uv offset and combined with the local uv offset to translate the material’s uv to the uv within one atlas tile. Here’s what that looks like:&lt;/p&gt;&lt;figure data-orig-width="1067" data-orig-height="467" class="tmblr-full"&gt;&lt;img src="https://64.media.tumblr.com/e594df8b592b1a7669d3e6dccac1f4a1/tumblr_inline_o0wieh99vz1tazl23_540.png" alt="image" data-orig-width="1067" data-orig-height="467"/&gt;&lt;/figure&gt;&lt;p&gt;Next, and this required me to dig into the standard shader a bit, I had to inject this uv at the right spot to make sure Unity’s standard shader would still be rendering dropshadows, specular etc. It appears to work, but this is only one of many variants of the shader. Still, I am quite happy with this result!&lt;/p&gt;&lt;figure data-orig-width="1069" data-orig-height="467" class="tmblr-full"&gt;&lt;img src="https://64.media.tumblr.com/72373e3f0607f322ed892ad469bde3c7/tumblr_inline_o0wiia44Cv1tazl23_540.png" alt="image" data-orig-width="1069" data-orig-height="467"/&gt;&lt;/figure&gt;&lt;p&gt;With a proper texture set this will look very nice. Especially once I copy the same code for specular and normal maps.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/137227318098</link><guid>https://bugshake.tumblr.com/post/137227318098</guid><pubDate>Wed, 13 Jan 2016 12:15:27 -0500</pubDate><category>unity3d</category><category>shader</category></item><item><title>Unity Tip : toggle Inspector to debug mode</title><description>&lt;p&gt;Press the tiny little hamburger menu pulldown at the top-right of the inspector panel:&lt;br/&gt;&lt;figure class="tmblr-full" data-orig-height="184" data-orig-width="432" data-orig-src="https://64.media.tumblr.com/b6325d130cb1f1bb05277ccdd6929b41/tumblr_inline_o0t44oJQik1tazl23_540.png"&gt;&lt;img src="https://64.media.tumblr.com/63e7ce271fe166e6b31b7be00b463abb/tumblr_inline_p8vza7GMlD1tazl23_540.png" style="width:300px" alt="image" data-orig-height="184" data-orig-width="432" data-orig-src="https://64.media.tumblr.com/b6325d130cb1f1bb05277ccdd6929b41/tumblr_inline_o0t44oJQik1tazl23_540.png"/&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;The camera inspector will change from &lt;strong&gt;Normal&lt;/strong&gt;:&lt;br/&gt;&lt;figure class="tmblr-full" data-orig-height="284" data-orig-width="430" data-orig-src="https://64.media.tumblr.com/40268e4b1fbfd9b6c89e6bbe8cd02052/tumblr_inline_o0t45j2eT91tazl23_540.png"&gt;&lt;img src="https://64.media.tumblr.com/7aa7a8cf821aad13af3ee6fa59ef733f/tumblr_inline_p8vza71ysv1tazl23_540.png" style="width:300px" alt="image" data-orig-height="284" data-orig-width="430" data-orig-src="https://64.media.tumblr.com/40268e4b1fbfd9b6c89e6bbe8cd02052/tumblr_inline_o0t45j2eT91tazl23_540.png"/&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;To &lt;strong&gt;Debug&lt;/strong&gt;:&lt;br/&gt;&lt;figure class="tmblr-full" data-orig-height="413" data-orig-width="431" data-orig-src="https://64.media.tumblr.com/2b50248c079d986d26a075d9cfcddd60/tumblr_inline_o0t466mYQ21tazl23_540.png"&gt;&lt;img src="https://64.media.tumblr.com/0d7f6e506c9c3cfc80a3dea2b44ef146/tumblr_inline_p8vza7nxxp1tazl23_540.png" style="width:300px" alt="image" data-orig-height="413" data-orig-width="431" data-orig-src="https://64.media.tumblr.com/2b50248c079d986d26a075d9cfcddd60/tumblr_inline_o0t466mYQ21tazl23_540.png"/&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;This can be very helpful for example to find out the names of shader properties you can set via script (SetFloat)&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/137108949133</link><guid>https://bugshake.tumblr.com/post/137108949133</guid><pubDate>Mon, 11 Jan 2016 16:12:31 -0500</pubDate><category>unity tip</category><category>unity3d</category></item><item><title>Procedural 2D texture via shader</title><description>&lt;img src="https://64.media.tumblr.com/c1dfc9b766bd94d38d936102ac07b24b/tumblr_o0oqy28PFk1udchf2o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Procedural 2D texture via shader&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/136942372553</link><guid>https://bugshake.tumblr.com/post/136942372553</guid><pubDate>Sat, 09 Jan 2016 07:34:50 -0500</pubDate><category>unity3d</category><category>shader</category><category>procedural</category></item><item><title>Finally got something of a geometry shader working. This is like...</title><description>&lt;img src="https://64.media.tumblr.com/f2fac57b6d433470e742b0d340774338/tumblr_o0g8tx52QR1udchf2o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Finally got something of a geometry shader working. This is like my earlier post, but it takes a mesh as input. So what you’re seeing on the picture is a standard Unity Sphere that is rendered with a material that outputs billboards at the vertices.&lt;/p&gt;

&lt;p&gt;I started with &lt;a href="http://forum.unity3d.com/threads/geometry-shaders.156553/"&gt;this $GS example&lt;/a&gt; but that didn’t work out for me. The quads were rotated wrong and transformations were done twice. So here are the changed I made:&lt;/p&gt;

&lt;p&gt;First I passed the inverse of the view-projection matrix to the material like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;void Update () {
    Camera camera = Camera.main;
    Matrix4x4 mat = (camera.projectionMatrix * camera.worldToCameraMatrix).inverse;
    Material material = GetComponent().sharedMaterial;
    material.SetMatrix("_ViewProjectInverse", mat);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then, in the shader, I applied that to the up and right vectors to find what those were under the current projection:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;float3 up = float3(0,1,0);
float3 right = float3(1,0,0);
right = normalize(mul( _ViewProjectInverse, right ));
up = normalize(mul( _ViewProjectInverse, up ));
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then I noticed it didn’t work with transparent bill boards. It would not compare to the z-buffer properly. Obviously the vertices my geometry shader output had the wrong z-value. That clicked for me when I read &lt;a href="http://stackoverflow.com/questions/28437949/geometry-shader-output-filling-z-buffer-with-closest-value-possible-directx#comment45278974_28477058"&gt;this stackoverflow comment&lt;/a&gt; which did the trick! Here’s the code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pIn.pos.z = pIn.pos.z/center.w;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Here, pIn is actually one of the output vertices and center is the input vertex. (I notice people mix those names up a lot in shaders because most structs are both input and output, to different stages in the pipeline).&lt;/p&gt;

&lt;p&gt;Then, finally I had &lt;a href="http://gamedev.stackexchange.com/questions/97009/geometry-shader-not-generating-geometry-for-some-vertices"&gt;this problem&lt;/a&gt; and the suggested solution worked. Code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[ContextMenu("ConvertToPointTopology")]
void ConvertToPointTopology()
{
    Mesh mesh = GetComponent().mesh;
    int[] indices = new int[mesh.vertices.Length];
    for (int i = 0; i &lt; indices.Length; i++)
    {
        indices[i] = i;
    }
    mesh.SetIndices(indices, MeshTopology.Points, 0);
}

void Start()
{
    ConvertToPointTopology();   // it will skip the last rows of vertices if you don't do this (because it will only iterate the triangles and convert them to points)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hope this helps someone, I was quite surprised how hard it was to collect all this info. Took me almost a day to get this thing working.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/136633163763</link><guid>https://bugshake.tumblr.com/post/136633163763</guid><pubDate>Mon, 04 Jan 2016 17:22:45 -0500</pubDate><category>unity3d shader</category></item><item><title>(via https://www.youtube.com/watch?v=qZxp5Y1cWs8) Finally made...</title><description>&lt;iframe width="400" height="225"  id="youtube_iframe" src="https://www.youtube.com/embed/qZxp5Y1cWs8?feature=oembed&amp;enablejsapi=1&amp;origin=https://safe.txmblr.com&amp;wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Endless Flythrough with LoD"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;(via &lt;a href="https://www.youtube.com/watch?v=qZxp5Y1cWs8"&gt;https://www.youtube.com/watch?v=qZxp5Y1cWs8&lt;/a&gt;) Finally made the first flythrough video! This is a complete rewrite and I haven’t ported any of the following main fearures yet: Node Editor, textures, vegetation, walking around, interesting landscapes.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/135516916693</link><guid>https://bugshake.tumblr.com/post/135516916693</guid><pubDate>Sat, 19 Dec 2015 13:17:51 -0500</pubDate><category>unity3d</category><category>procedural</category><category>terrain</category></item><item><title>I used to think BitConverter was how to do bit operations in...</title><description>&lt;img src="https://64.media.tumblr.com/ef7d55162e7946d39c15368a91c10429/tumblr_nysehqQClM1udchf2o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I used to think BitConverter was how to do bit operations in .NET, but as you can see here, it causes GC peaks. And this was like 1000 calls per frame only. So, tip : don’t use BitConverter.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/134463884943</link><guid>https://bugshake.tumblr.com/post/134463884943</guid><pubDate>Thu, 03 Dec 2015 09:49:02 -0500</pubDate><category>unity3d</category><category>performance</category></item><item><title>Instancing on the GPU with a (geometry) shader!It’s not much,...</title><description>&lt;img src="https://64.media.tumblr.com/5390424d2a910d24735071fd6e370537/tumblr_nw5qz7jcUZ1udchf2o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Instancing on the GPU with a (geometry) shader!&lt;/p&gt;&lt;p&gt;It’s not much, but it’s a first step to have proper grass on the ground. Gotta have grass.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/131084282133</link><guid>https://bugshake.tumblr.com/post/131084282133</guid><pubDate>Tue, 13 Oct 2015 08:06:43 -0400</pubDate><category>unity3d</category><category>shader</category></item><item><title>Trying to get my double precision normal calculation right, when...</title><description>&lt;img src="https://64.media.tumblr.com/cec5e49d95bdfb95067ba7fedd7a21f8/tumblr_nvtgbsm2H81udchf2o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Trying to get my double precision normal calculation right, when suddenly: this pattern!&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/130637719273</link><guid>https://bugshake.tumblr.com/post/130637719273</guid><pubDate>Tue, 06 Oct 2015 16:45:28 -0400</pubDate></item><item><title>Voronoi D1-D0, as I found it...</title><description>&lt;img src="https://64.media.tumblr.com/933e954fde09a7e8472801d0589c54d0/tumblr_nvpx3m1ahX1udchf2o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Voronoi D1-D0, as I found it here: &lt;a href="http://scrawkblog.com/2013/11/05/improved-voronoi-noise/"&gt;http://scrawkblog.com/2013/11/05/improved-voronoi-noise/&lt;/a&gt;&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/130508849948</link><guid>https://bugshake.tumblr.com/post/130508849948</guid><pubDate>Sun, 04 Oct 2015 18:57:22 -0400</pubDate><category>unity3d</category><category>procedural</category><category>terrain</category><category>voronoi</category></item><item><title>Moved spawning of objects (trees and rocks in this case) to a...</title><description>&lt;img src="https://64.media.tumblr.com/38ba7065152e1c8705c5f7098495c072/tumblr_nvcooxDk7y1udchf2o1_500.jpg"/&gt;&lt;br/&gt; Top view&lt;br/&gt;&lt;br/&gt; &lt;img src="https://64.media.tumblr.com/e3c69b9dad8b6abd6f8b4604d11ab16c/tumblr_nvcooxDk7y1udchf2o2_500.jpg"/&gt;&lt;br/&gt; Third person view&lt;br/&gt;&lt;br/&gt; &lt;img src="https://64.media.tumblr.com/64fd22bba9df310f0665742131e44b2c/tumblr_nvcooxDk7y1udchf2o3_500.png"/&gt;&lt;br/&gt; Nodes&lt;br/&gt;&lt;br/&gt; &lt;p&gt;Moved spawning of objects (trees and rocks in this case) to a better place in the code, so that it can now be used in the node map. Here, I am using the slice operator in a perlin noise to define a winding wall of trees. No randomization or scattering yet. Those are not architecture problems but fine tuning.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/130006591133</link><guid>https://bugshake.tumblr.com/post/130006591133</guid><pubDate>Sun, 27 Sep 2015 15:26:57 -0400</pubDate><category>unity3d</category><category>procedural</category><category>terrain</category><category>node editor</category></item><item><title>Got Voronoi working again without crashing. This is three...</title><description>&lt;img src="https://64.media.tumblr.com/08b92f73367196f95371cfaaac2621b9/tumblr_nv8zsxs6Ac1udchf2o1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="https://64.media.tumblr.com/e205c57e3455d37cb9c8a5d92430fa65/tumblr_nv8zsxs6Ac1udchf2o2_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="https://64.media.tumblr.com/48082dd74ed2abdf1f0bcab1210947b8/tumblr_nv8zsxs6Ac1udchf2o3_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;Got Voronoi working again without crashing. This is three stacked Voronoi’s. It turns out my intuition was right: the dictionary I used to cache Voronoi attractors caused the problem, even though I don’t know exactly why. What’s more important it it’s using only 16% CPU while I am waiting for it to calculate.&lt;/p&gt;&lt;p&gt;The second picture is the node map for this landscape.&lt;/p&gt;&lt;p&gt;The third Voronoi combined with Distort.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/129863052363</link><guid>https://bugshake.tumblr.com/post/129863052363</guid><pubDate>Fri, 25 Sep 2015 15:36:33 -0400</pubDate><category>unity3d</category><category>procedural</category><category>terrain</category><category>voronoi</category><category>node editor</category></item><item><title>New height operator, ‘Slice’ which I used here to create what...</title><description>&lt;img src="https://64.media.tumblr.com/2ed47f9ecdd82b6af792bc732a3054f1/tumblr_ntv0s8bzoU1udchf2o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;New height operator, ‘Slice’ which I used here to create what could be a river or a path.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/127885144958</link><guid>https://bugshake.tumblr.com/post/127885144958</guid><pubDate>Sat, 29 Aug 2015 15:57:44 -0400</pubDate><category>unity3d</category><category>procedural</category><category>terrain</category><category>river</category><category>node editor</category></item><item><title>New height type: ’Discrete’. Simply white noise pixels with soft...</title><description>&lt;img src="https://64.media.tumblr.com/937de3f374ca0caff5218d89764b9baf/tumblr_ntv0plEeQq1udchf2o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;New height type: ’Discrete’. Simply white noise pixels with soft edges. I added this because I want to be able to make the sort of jagged terrain you see when mountains were ‘recently’ formed and you can clearly see the layers of earth that were pushed up. Sort of like in the WoW zone ‘Howling Fjord’.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/127885045533</link><guid>https://bugshake.tumblr.com/post/127885045533</guid><pubDate>Sat, 29 Aug 2015 15:56:09 -0400</pubDate><category>unity3d</category><category>procedural</category><category>terrain</category><category>perlin noise</category></item><item><title>With the proper shadow, lighting and atmospheric settings, even...</title><description>&lt;img src="https://64.media.tumblr.com/67333714c898129e4f0f42716949011e/tumblr_ntqgyyMZon1udchf2o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;With the proper shadow, lighting and atmospheric settings, even standard Simplex noise looks good.&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/127701530513</link><guid>https://bugshake.tumblr.com/post/127701530513</guid><pubDate>Thu, 27 Aug 2015 04:59:22 -0400</pubDate><category>unity3d</category><category>procedural</category><category>terrain</category><category>simplex noise</category></item><item><title>FINALLY got the performance needed! Unity’s profiler is awesome...</title><description>&lt;img src="https://64.media.tumblr.com/ec8fa5d7333f6efa8cbf066670e609fc/tumblr_ntgbuexaZA1udchf2o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;FINALLY got the performance needed! Unity’s profiler is awesome and in the end it was &lt;a href="http://www.albahari.com/threading/"&gt;this page&lt;/a&gt; that helped me get the last bits in place.

&lt;/p&gt;&lt;p&gt;Smoothly streaming 2000x2000m Procedurally Generated Terrain.&lt;br/&gt;&lt;/p&gt;</description><link>https://bugshake.tumblr.com/post/127263291928</link><guid>https://bugshake.tumblr.com/post/127263291928</guid><pubDate>Fri, 21 Aug 2015 17:32:38 -0400</pubDate><category>endless</category><category>procedural</category><category>terrain</category><category>unity3d</category></item></channel></rss>
