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

<channel>
	<title>Leonardo &#187; Leonardo</title>
	<atom:link href="http://www.xadesoftware.com/blog/archives/category/leonardo/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xadesoftware.com/blog</link>
	<description>Digital painting without lag</description>
	<lastBuildDate>Thu, 14 Jun 2012 21:59:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>May update</title>
		<link>http://www.xadesoftware.com/blog/archives/565</link>
		<comments>http://www.xadesoftware.com/blog/archives/565#comments</comments>
		<pubDate>Thu, 10 May 2012 23:00:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Chatter]]></category>
		<category><![CDATA[Leonardo]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=565</guid>
		<description><![CDATA[It has been a while since the last update. Since then I have mostly worked on engine related stuff, but there have also been some improvements in the UI: Leonardo is getting closer and closer to the point where you can use it for real work, but there are still a few things missing: HUD-notifications (worked [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a while since the last update. Since then I have mostly worked on engine related stuff, but there have also been some improvements in the UI:</p>
<p><a href="http://www.xadesoftware.com/blog/wp-content/uploads/2012/05/20120510-leonardo.png"><img class="aligncenter size-medium wp-image-566" title="20120510-leonardo" src="http://www.xadesoftware.com/blog/wp-content/uploads/2012/05/20120510-leonardo-300x275.png" alt="" width="300" height="275" /></a></p>
<p>Leonardo is getting closer and closer to the point where you can use it for real work, but there are still a few things missing:</p>
<ol>
<li>HUD-notifications (worked a long time ago but the code has decayed)</li>
<li>Custom brush-stamps as opposed to just ellipses.</li>
<li>Add, remove and rearrange brush-preset list.</li>
<li>Merging and changing Z-order of layers.</li>
<li>Better UI for layers.</li>
<li>Drag-n-drop from the export bar.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/565/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review 3 (0.3.3)</title>
		<link>http://www.xadesoftware.com/blog/archives/539</link>
		<comments>http://www.xadesoftware.com/blog/archives/539#comments</comments>
		<pubDate>Tue, 13 Mar 2012 16:24:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=539</guid>
		<description><![CDATA[Two days ago, Max and I traveled to Gävle to conduct three user-tests on a couple of art school students. Here are my (Henning) observations: All user tests were conducted in full-screen mode which meant that no user could access the menu bar (this should be changed until next user test so that the menu [...]]]></description>
			<content:encoded><![CDATA[<p>Two days ago, Max and I traveled to Gävle to conduct three user-tests on a couple of art school students. Here are my (Henning) observations:</p>
<p>All user tests were conducted in full-screen mode which meant that no user could access the menu bar (this should be changed until next user test so that the menu bar &#8220;auto hides&#8221; in full-screen mode).</p>
<ol>
<li>All participants requested layers (we have layers but no UI for it, yet).</li>
<li>Although no participants explicitly said so, all of them would have enjoyed a brush-preview when they where adjusting the brush settings.</li>
<li>All of the participants instantly understood how to use the new color picker (wheel + triangle) and two of the participants loved it more then any other color picker they have ever used.</li>
<li>All participants seamed to like the new default eraser (its own context plus pressure sensitive diameter).</li>
<li>Two of the participants complained that the diameter slider was &#8220;too sensitive to get the exact diameter you want&#8221; and one of them requested being able to enter the diameter numerically from the keyboard (current diameter slider: 207 pixels wide, from 0.5 to 1500 with gamma 2.5).</li>
<li>Two of the participants did not know what the difference between Flow and Opacity is and could not figure it out even after some testing.</li>
<li>All of the participants used the Hardness parameter quite a lot.</li>
<li>Two of the participants requested being able to change the background color (currently possible, but only from the console).</li>
<li>Two of the participants asked if it would be possible to select and move a portion of the canvas (not currently possible).</li>
<li>Two of the participants tried to hit the Z key when they were told to zoom (doesn&#8217;t work).</li>
<li>One participant tried to &#8220;double click&#8221; the space-bar when told to snap the view (doesn&#8217;t work).</li>
<li>None of the participants noticed the &#8220;zoom box&#8221; at the lower left corner even after they were asked to zoom.</li>
<li>All participants seamed to like the rotate-canvas-feature and understood how to move the pivot point.</li>
<li>One of the participants asked &#8220;what is the current DPI?&#8221; (he knew he was at 100% zoom but he didn&#8217;t realize that&#8217;s how you are suppose to know the resolution you are at).</li>
<li>All of the participants loved the draw-straight-line feature but requested more advanced functionality. One of the participants (Kalle) requested being able to draw curves in a similar fashion and told us it&#8217;s very important to be able to offset the curve, without changing it, to draw repeating patterns.</li>
<li>Two of the participants requested being able to get some sort of &#8220;A4-paper reference&#8221; that just hovered above the canvas.</li>
<li>None of the participants realized that you could move around the color picker and brush settings window.</li>
<li>We forgot to test if the user realized that it was possible to pan around the canvas using the rulers.</li>
<li>One of the participants thought the F key would be more logical for flip-horizontal then the H key.</li>
</ol>
<div><a href="http://www.xadesoftware.com/blog/wp-content/uploads/2012/03/20120310-usertest2-1.png"><img class="aligncenter size-medium wp-image-545" title="20120310-usertest2-1" src="http://www.xadesoftware.com/blog/wp-content/uploads/2012/03/20120310-usertest2-1-300x300.png" alt="" width="300" height="300" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/539/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review 2 (0.2.2)</title>
		<link>http://www.xadesoftware.com/blog/archives/526</link>
		<comments>http://www.xadesoftware.com/blog/archives/526#comments</comments>
		<pubDate>Sat, 18 Feb 2012 15:37:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=526</guid>
		<description><![CDATA[Two weeks ago we did a user test of Leonardo on Martin Piazzolla. These are the main things we came up with: Martin loved being able to rotate the canvas but didn&#8217;t like the shortcut Space+Shift. Martin usually rotated the canvas in a way that made it possible to move the hand in a back-and-forth (as opposed [...]]]></description>
			<content:encoded><![CDATA[<p>Two weeks ago we did a user test of Leonardo on Martin Piazzolla. These are the main things we came up with:</p>
<ol>
<li>Martin loved being able to rotate the canvas but didn&#8217;t like the shortcut Space+Shift. Martin usually rotated the canvas in a way that made it possible to move the hand in a back-and-forth (as opposed to left-right) direction while painting.</li>
<li>Martin loved the draw straight line tool and was able to find the shortcut himself (Shift).</li>
<li>Martin used the eraser a lot, both as a painting effect and a way of undoing mistakes. Martin likes to work with an eraser with a large diameter as well a smaller one.</li>
<li>Martins brush setting of choice for sketching was a hard round 24 pixel wide brush at 36% zoom with a light blue color.</li>
<li>Martin liked to outline his sketch with a hard black brush with a diameter that depends on pressure (not possible on the current version).</li>
<li>Martin requested the &#8220;multiply blending mode&#8221; between layers.</li>
</ol>
<div><a href="http://www.xadesoftware.com/blog/wp-content/uploads/2012/02/martin.jpg"><img class="aligncenter size-medium wp-image-527" title="martin" src="http://www.xadesoftware.com/blog/wp-content/uploads/2012/02/martin-300x286.jpg" alt="" width="300" height="286" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/526/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review 1</title>
		<link>http://www.xadesoftware.com/blog/archives/511</link>
		<comments>http://www.xadesoftware.com/blog/archives/511#comments</comments>
		<pubDate>Mon, 23 Jan 2012 12:40:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=511</guid>
		<description><![CDATA[This is how Leonardo currently looks: Yesterday, Daniel &#38; Max was over and we did a user test on Daniel. Here is a list on things that probably should get addressed: Daniels initial reaction after lunching the application was something along the line: &#8220;What tool, brush and color do I currently have and how do I change it?&#8221; Daniel [...]]]></description>
			<content:encoded><![CDATA[<p>This is how Leonardo currently looks:</p>
<p><a href="http://www.xadesoftware.com/blog/wp-content/uploads/2012/01/20120122-leonardo-1.png"><img class="aligncenter size-medium wp-image-517" title="20120122-leonardo-1" src="http://www.xadesoftware.com/blog/wp-content/uploads/2012/01/20120122-leonardo-1-300x251.png" alt="" width="300" height="251" /></a></p>
<p>Yesterday, Daniel &amp; Max was over and we did a user test on Daniel. Here is a list on things that probably should get addressed:</p>
<ol>
<li>Daniels initial reaction after lunching the application was something along the line: &#8220;What tool, brush and color do I currently have and how do I change it?&#8221; Daniel eventually figured all of this out, but it was not obvious from the start.</li>
<li>When Max was experimenting around in Leonardo he zoomed out to ~15% and continue painting without realizing that he was at ~15% zoom. This was never a problem for Daniel though.</li>
<li>Daniel wanted to draw a straight line but never figured out how to do it (it is obviously impossible for the user to know to hold down Q). Once I told him how to do it he instantly loved the way the &#8220;draw straight line tool&#8221; worked.</li>
<li>When Daniel got the task: &#8220;convert your current painting to gray-scale&#8221; he did not realize that the command &#8220;Luminosity&#8221; under Filters does this.</li>
<li>Both Daniel and Max wanted to create a new Canvas and start searching for &#8220;New&#8230;&#8221; under the File menu, but is not there&#8230;</li>
<li>By mistake Max eyedropped white, he then resumed painting but did not realize he was painting with white and asked why nothing was happening.</li>
<li>When Daniel was switching to Finite Canvas he thought it was strange that the canvas boundary did not get aligned with his current view.</li>
<li>When Daniel should flip the image he flipped it vertically when he was supposed to flip it horizontally (an icon should probably make this much more obvious).</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/511/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>State of the Application 2</title>
		<link>http://www.xadesoftware.com/blog/archives/330</link>
		<comments>http://www.xadesoftware.com/blog/archives/330#comments</comments>
		<pubDate>Fri, 21 Oct 2011 10:44:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=330</guid>
		<description><![CDATA[On Saturday I will travel to India for 4 weeks. So I thought it&#8217;s time to give you The State of the Application! User Interface This is how Xade Leonardo currently looks: (The Swedish flag should not be there in the final version ;-) ) Since I want to minimize UI clutter I have thought long and hard [...]]]></description>
			<content:encoded><![CDATA[<p>On Saturday I will travel to India for 4 weeks. So I thought it&#8217;s time to give you The State of the Application!</p>
<p><strong>User </strong><strong>Interface<br />
</strong>This is how Xade Leonardo currently looks:</p>
<p><a href="http://www.xadesoftware.com/blog/wp-content/uploads/2011/10/leonardo20111020cut.png"><img class="aligncenter size-full wp-image-342" title="leonardo20111020cut" src="http://www.xadesoftware.com/blog/wp-content/uploads/2011/10/leonardo20111020cut.png" alt="" width="550" height="427" /></a></p>
<p>(The Swedish flag should not be there in the final version ;-) )</p>
<p>Since I want to minimize UI clutter I have thought long and hard over what should be visible at all time. I have come up with the following things: Current tool, tool help, current color, file size, zoom level, currently selected layer and if Leonardo is currently doing some background work. You don&#8217;t need to show the current brush and radius since the cursor already contains that information.</p>
<p>Although the Leonardo engine can handle Layers, the UI doesn&#8217;t show you any information about them right now. So far, my best idea for this is to put small tabs on the right hand side of the canvas where the Layer name is written vertically to save space. I am planing on making layers a &#8220;first class citizen&#8221; so that it will be possible to drag-n-drop layers between tabs, drop files in and out as layers including recently exported files from the Export bar (not shown in picture above).</p>
<p>One thing that hit me recently is that you want to avoid having sliders on the left and upper part of the screen. This becomes apparent when you use a tablet with a built-in display. Your arm will then cover most of the screen while you are adjusting the slider something you obviously want to avoid.</p>
<p>&nbsp;</p>
<p><strong>Color Spaces and Gamma<br />
</strong>A couple of weeks back I spent some time teaching myself about Color spaces and Gamma correction. I had some prior knowledge of this but if you would have asked me: &#8220;Why doesn&#8217;t a standard HSV-Hue shift preserve luminosity?&#8221; I would have no good answer. Now I know the answer and I am planning on addressing it in Leonardo among a whole host of other issues. What is amazing to me is that not even Photoshop manage to do all this correctly. I guess they know all these at Adobe but they are stuck with what they got because of backward compatibility issues.</p>
<p>My current thinking is having Leonardo work in an absolute color space like sRGB or AdobeRGB as opposed to just &#8220;random&#8221;-RGB and storing pixels in linear-space as opposed to Gamma-space. I also hope to be able to do some of the pixel operations in LUV-1976 space (like Hue shifts) which I find a really nice color space although there might be some problems with out-of-gamut colors.</p>
<p>Everybody is familiar with a tone-histogram (the one you get in a digital camera or under Photoshop Levels) which mostly is used for setting the black- and white-point of an image. A couple of days ago I had a crazy idea on taking this to the next level with a density or contour plot of the chromaticity of an image. I think this will be an awesome visualization for Hue/Saturation and Color-correction style adjustments and it will make it obvious to a novice user why a Hue-shift is a modular adjustment.</p>
<p>&nbsp;</p>
<p><strong>Destructive vs. Non-destructive editing<br />
</strong>Over the past 5 months I must have spent over 60 hours just thinking about destructive vs. non-destructive editing (my favorite occupation while taking a walk along the lake). Now, Leonardo is primarily a <em>destructive </em>image editor but since you want some form of synthesis between different layers the question is how far you go down the path of non-destructive editing? Do you allow blend modes? Do you allow procedurally generated layers?  Do you allow vector layers? Do you allow non-destructive adjustment layers? Do you allow non-destructive warps? Do you allow visibility masks? Do you allow &#8220;layer styles&#8221;? All of these are still open questions&#8230;</p>
<p>Another problem related to this is my personal disgust about &#8220;blending modes&#8221;, I understand they are extremely powerful for the expert user, but even me, with a strong mathematical background, can&#8217;t use them intuitively! On the other hand, I haven&#8217;t come up with a good alternative :-(</p>
<p>&nbsp;</p>
<p><strong>Node recursion<br />
</strong>In a previous blog post I talked about switching to a fixed root system, well, I switched back! I found a way to solve the problem and still keeping a non-fixed-root which I am really satisfied with.</p>
<p>While we are on the topic of node recursions, this is one of the most beautiful things I have ever written:</p>
<pre>struct node_s {
    unsigned int cb : 4;
    unsigned int id : 28;
    struct node_s *childs[0];
};</pre>
<pre>node = node-&gt;childs[ bitcount[ node-&gt;cb &amp; ((1&lt;&lt;c) - 1) ] ];</pre>
<pre>(node-&gt;bash is a compact child pointer list, node-&gt;cb is child-bits and c is the child number you want to get to)</pre>
<p>The node data have a very small footprint (notice the struct-hack), it&#8217;s super fast and yet the whole thing is relatively simple. Storing you node meta data in this way only takes a fraction of the space it otherwise would! Unfortunately I use quite big nodes these days (128&#215;128 pixels) so this doesn&#8217;t really matter that much anymore :-(</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/330/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User cases</title>
		<link>http://www.xadesoftware.com/blog/archives/321</link>
		<comments>http://www.xadesoftware.com/blog/archives/321#comments</comments>
		<pubDate>Mon, 19 Sep 2011 00:12:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=321</guid>
		<description><![CDATA[(these also appears in the the &#8216;user cases&#8217;-page) I have defined 3 primary user cases for Leonardo: Lean Forward &#8211; the user sits in front of his PC or Mac with his right hand on the Wacom and the left hand on the keyboard. The user might drag-n-drop tabs and files, using the built in console [...]]]></description>
			<content:encoded><![CDATA[<p>(these also appears in the the &#8216;user cases&#8217;-page)</p>
<p>I have defined 3 primary user cases for Leonardo:</p>
<ol>
<li><em>Lean Forward </em>&#8211; the user sits in front of his PC or Mac with his right hand on the Wacom and the left hand on the keyboard. The user might drag-n-drop tabs and files, using the built in console and other &#8220;advanced&#8221; stuff.</li>
<li><em>Lean Backward &#8211; </em>the user sits in a sofa with a wireless Wacom in his lap while doodling on his big screen TV. The user might not have &#8220;easy&#8221; access to the keyboard and the TV might be far away which makes small things harder to see.</li>
<li><em>Doodling in a public place </em>&#8211; the user is doing some rough sketching on his iPad on the subway, in a cafe or public park. When the user gets back home he wants to continue on his PC or Mac with minimum fuzz.</li>
</ol>
<p>I believe the second user case really is the future of digital doodling and less hardcore painting. I realized this after seeing two of my friends throwing out their stationary PCs and now is doing everything in front of their TVs with a wireless keyboard and mouse.</p>
<p>This has convinced me to buy a big screen TV, a Mac Book Air, an iPad and a wireless Intuos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/321/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node Size</title>
		<link>http://www.xadesoftware.com/blog/archives/302</link>
		<comments>http://www.xadesoftware.com/blog/archives/302#comments</comments>
		<pubDate>Mon, 29 Aug 2011 04:13:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=302</guid>
		<description><![CDATA[A couple of weeks ago I researched all the different possible node sizes, from 32&#215;32 all the way up to 256&#215;256. There are three places where you store nodes: On disk, in memory and on the GPU. In memory you generally want small nodes so you don&#8217;t bloat the footprint (a pixel in memory take 4*sizeof( [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago I researched all the different possible node sizes, from 32&#215;32 all the way up to 256&#215;256. There are three places where you store nodes: On disk, in memory and on the GPU. In memory you generally want small nodes so you don&#8217;t bloat the footprint (a pixel in memory take 4*sizeof( float ) = 16 bytes) and stay relatively cache-coherent. But small nodes generate a ton of disk IO which is costly. The optimal node size for the renderer is a non-issue since you can always bundle nodes together in to atlases and a pixel on the GPU takes only 4 bytes.</p>
<p>So the problem is disk vs. main-memory, which one should you optimize for? or can you find a workaround?</p>
<p>After spending a couple of days trying to come up with a good solution for minimizing disk IO, while maintaining small nodes (32&#215;32 or 64&#215;64), I finally gave up since all my solutions was immensely complex and the disk IO was still was pretty bad. Instead I decided to set the node size to whatever is optimal for disk and then try to work around the problems that would arise in memory. I knew the optimal node size for disk was either 128&#215;128 or 256&#215;256. What was surprising though was that 256&#215;256 only generated about 60% of the IO requests compared to 128&#215;128 where you naively would have expected ~25% and since the bandwidth and file-size goes up with 256&#215;256 I decided against it and set the final node size to 128&#215;128.</p>
<p>To solve the memory footprint problem I introduced nodes in different pixel precision. Doing it this way means that nodes that should only be displayed can stay in the same precision as on disk while nodes that should be edited can be converted to RGBA_FP (the main reason I use RGBA_FP is to spare myself all the fixed-point math headaches during development). If you start running low on memory you can start converting nodes back to file precision before you finally clean and unmap them.</p>
<p>A side effect of using large node sizes is that the &#8220;TOC&#8221; (Table Of Content) for each file gets a lot smaller which allows you to store hash values in them (somewhat similar to a .torrent file). This turns out the be extremely convenient if the user stores his data in the cloud since everything can then be fetched from a local cache file eliminating 99% of all downstream traffic, and since Amazon don&#8217;t charge you for upstream traffic you have effectively eliminated 99% of the bandwidth cost of using Amazon S3! (of course if the user change host, all data must be downloaded again but that should be quite rare).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/302/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xade Software from the business side of things</title>
		<link>http://www.xadesoftware.com/blog/archives/273</link>
		<comments>http://www.xadesoftware.com/blog/archives/273#comments</comments>
		<pubDate>Tue, 28 Jun 2011 02:01:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=273</guid>
		<description><![CDATA[&#8220;You can only connect the dots looking backwards&#8221; &#8212; Steve Jobs In the last couple of weeks it have started to crystallize for me exactly what I have been doing for over a year now: I have researched and developed a kick-ass quad-tree/octree engine and soon it is time to tap the potential of this engine by starting a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><em>&#8220;You can only connect the dots looking backwards&#8221; &#8212; </em>Steve Jobs</p>
<p>In the last couple of weeks it have started to crystallize for me exactly what I have been doing for over a year now: I have researched and developed a kick-ass quad-tree/octree engine and soon it is time to tap the potential of this engine by starting a company and develop a product around it. The engine can be used for at least two different products with at least three different platforms on each product:</p>
<ol>
<li><em>Xade Leonardo</em> &#8211; pixel painting and sketching for the PC, Mac and iPad.</li>
<li><em>Xade Michelangelo -</em> voxel sculpting and painting for the PC, Mac and iPad.</li>
</ol>
<p>On top of this, the engine allows for very efficient streaming of data between client and server so a cloud based storage solution would be possible with a revenue model similar to DropBox. Now of course I will not build all the above permutations at once. The Leonardo-PC version have the highest priority mainly because pixels are easier then voxels and I am more familiar with the PC compared to the Mac and iPad.</p>
<p>But the core value of Xade Software is in the engine technology, which, to my knowledge, is unique in the following areas (at least compared to Photoshop):</p>
<ol>
<li><em>Infinite canvas &#8212; </em>just pan the view in any direction and keep painting.</li>
<li><em>&#8216;zero&#8217; load/save time</em> &#8212; even if the file is thousands of MB it loads and saves under a second.</li>
<li><em>zero lag for brushes/filters &#8212; </em>even if you use a complex brush that is hundreds of pixels in diameter there is no hick-ups or lag.</li>
<li><em>Cloud storage &#8212; </em>My streaming data technology means you can work over a relatively slow network connection (ex. 3G) without any lag which means storing your data in the cloud would be possible.</li>
<li><em>Flexible canvas history &#8211;</em> You don&#8217;t loose the history when you close a file and the history is branched instead of just linear.</li>
</ol>
<p>On top of this there is of course tonnes of minor features, and I am also working hard on the non-engine stuff&#8230;</p>
<p>So, if a technical person ask, what is Xade Software? I will answer:</p>
<p style="text-align: left;"><em>&#8220;We are experts in quad-tree/octree technology which we use to build software </em><em><em>that handle large data sets of <em><em>raster-based graphics. Our first product is Xade Leonardo which is painting application that focus on the <strong>experience</strong> of digital painting</em></em></em></em><em>&#8220;</em></p>
<p style="text-align: left;">And if a non-technical investor/banker ask, I will answer:</p>
<p style="text-align: left;"><em>&#8220;We have developed a technology that is really revolutionary which we use to build an image editor, streamlined for painting and sketching, that is better then anything else that is out there, including Photoshop&#8221;</em></p>
<p style="text-align: left;">And if a customer ask, I will answer:</p>
<p style="text-align: left;"><em>&#8220;We are the creator of Xade Leonardo which is a revolutionary new painting and sketching application for the PC, Mac and iPad. Our primary focus for Leonardo is the </em><em><strong>experience</strong></em><em><strong> </strong>using it as opposed to a gazillion features. Just try it for 5 minutes, it is super intuitive, you will never want to go back!&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/273/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2 major breakthroughs&#8230;</title>
		<link>http://www.xadesoftware.com/blog/archives/234</link>
		<comments>http://www.xadesoftware.com/blog/archives/234#comments</comments>
		<pubDate>Thu, 19 May 2011 07:59:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=234</guid>
		<description><![CDATA[For the last ~3 weeks I have struggled to get the progressive rasterization code to work, and today I am happy to tell you that I finally got it to work! This was the result of 2 major breakthroughs in the last 2 days: 1. Fixed the bug where future snapshot node references got screwed during node [...]]]></description>
			<content:encoded><![CDATA[<p>For the last ~3 weeks I have struggled to get the progressive rasterization code to work, and today I am happy to tell you that I finally got it to work! This was the result of 2 major breakthroughs in the last 2 days:</p>
<p>1. Fixed the bug where future snapshot node references got screwed during node spawn.</p>
<p>2. Swapped to a fixed root system.</p>
<p>The first breakthrough was not resolved until I finally drew a 1D version (a binary tree) of the problem on paper and walked trough each step that needed to happen.</p>
<p>The second breakthrough allowed me to use Morton keys to identify nodes which have tonnes of benefits when we need to locate all nodes that share a particular place in space. Last spring, during my master thesis on Octrees, I did try the fixed-root/Morton-key implementation but decided against it. This time around it looks much more promising for the following reasons:</p>
<p>1. Each node stores a grid of pixels/voxels so the quadtree/octree never have to map down to individual pixels/voxels.</p>
<p>2. We don&#8217;t use any ray tracing now which was the biggest reason for keeping the height of the quadtree/octree small.</p>
<p>3. With a quadtree and 64^2 pixels per node we can fit a Morton key inside a single 32-bit word.</p>
<p>One small drawback of using a fixed root system is that the canvas is not technically &#8221;infinite&#8221; anymore. My current implementation clamp the canvas size to 2 million by 2 million pixels which would be enough for most users (going higher then this would, among other things, require me to switch to doubles instead of floats inside the engine).</p>
<p>There is at least another week of engine work and then maybe 2~3 weeks of client work before I am finally done with my Leonardo prototype! Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/234/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m alive!</title>
		<link>http://www.xadesoftware.com/blog/archives/216</link>
		<comments>http://www.xadesoftware.com/blog/archives/216#comments</comments>
		<pubDate>Sat, 23 Apr 2011 23:41:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Leonardo]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.xadesoftware.com/blog/?p=216</guid>
		<description><![CDATA[A couple of weeks after the last blog post I decided to stop writing this blog, but I think I have changed my mind and will now continue to write it&#8230; But maybe not that often&#8230; This is the current look of Xade Leonardo: (the edges around the xade drawing look bad because of the current flawed [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks after the last blog post I decided to stop writing this blog, but I think I have changed my mind and will now continue to write it&#8230; But maybe not that often&#8230;</p>
<p>This is the current look of Xade Leonardo:</p>
<p><a href="http://www.xadesoftware.com/blog/wp-content/uploads/2011/04/ui-2011-04-24.jpg"><img class="aligncenter size-full wp-image-217" title="ui-2011-04-24" src="http://www.xadesoftware.com/blog/wp-content/uploads/2011/04/ui-2011-04-24.jpg" alt="" width="400" height="337" /></a></p>
<p>(the edges around the xade drawing look bad because of the current flawed implementation of alpha compositing)</p>
<p>Here are some of the features not visible on the above picture:</p>
<ol>
<li>You can toggle a Quake style console between the tab strip and the menu.</li>
<li>Below the status bar you can toggle a Chrome like &#8220;download bar&#8221; where files that recently have been exported appear which then can be dragged-n-dropped to other applications.</li>
<li>You can toggle a pie menu that appear centered around the cursor with the most basic features for the current tool.</li>
</ol>
<p>The UI is, among others, inspired by Chrome, Silo, Quake, Nuke, Mari, Google Docs &amp; Facebook.</p>
<p>The engine code starts to come together for the most basic functionality, but there are probably many more weeks before the more complex stuff is working.</p>
<p>Right now there is only one tool: the paint brush! In the next couple of weeks I will add a few more and my current plan is to add the tools/filters which is the most likely to break the current engine architecture first and save the &#8220;easy&#8221; ones for last. I will probably implement them in the following order:</p>
<ol>
<li>Export tool (should work as a background process for large images).</li>
<li>Eyedropper (pretty easy, but one of the few tools that needs a round trip to the server).</li>
<li>Selection tool (very different from all other tools).</li>
<li>Gaussian blur filter (a good way to stress test the engine in adaptivity and speed).</li>
<li>Clone tool (probably needs reading and writing to the same snapshot which might be tricky with SMP).</li>
<li>Smudge tool (needs some kind of sampling from the current snapshot)</li>
<li>Liquify tool (very different from other tools since it works on polygons instead of pixels).</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.xadesoftware.com/blog/archives/216/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
