<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: A Core-Image-less Image Unit</title>
	<atom:link href="http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit/feed" rel="self" type="application/rss+xml" />
	<link>http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit</link>
	<description>The personal weblog of Peter Hosey.</description>
	<pubDate>Tue, 07 Oct 2008 05:59:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Peter Hosey</title>
		<link>http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6495</link>
		<dc:creator>Peter Hosey</dc:creator>
		<pubDate>Sun, 21 Jan 2007 15:10:59 +0000</pubDate>
		<guid isPermaLink="false">http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6495</guid>
		<description>[quote][With a CIKernel, c]omputational power is needed only at the time the image is rendered. Your filter breaks that. It needs to do its operations at the time the output image is requested, not when the image is actually used for rendering.[/quote]

&lt;p&gt;You are correct. If you want maximum laziness, you have to use a CIKernel; this is not as lazy as a CIKernel-based filter would be.&lt;/p&gt;

&lt;p&gt;I just did it on a whim, mainly. ☺ The only reason why you would do this for real is if either you have a filter that can't be represented with a CIKernel (for one reason or another), or you want to use some other library (e.g. 2xsai) to do the operation.&lt;/p&gt;</description>
		<content:encoded><![CDATA[<blockquote cite="http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-"><p>
[With a CIKernel, c]omputational power is needed only at the time the image is rendered. Your filter breaks that. It needs to do its operations at the time the output image is requested, not when the image is actually used for rendering.</p>
</blockquote>
<p>You are correct. If you want maximum laziness, you have to use a CIKernel; this is not as lazy as a CIKernel-based filter would be.</p>
<p>I just did it on a whim, mainly. ☺ The only reason why you would do this for real is if either you have a filter that can't be represented with a CIKernel (for one reason or another), or you want to use some other library (e.g. 2xsai) to do the operation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petteri Kamppuri</title>
		<link>http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6494</link>
		<dc:creator>Petteri Kamppuri</dc:creator>
		<pubDate>Sun, 21 Jan 2007 14:46:15 +0000</pubDate>
		<guid isPermaLink="false">http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6494</guid>
		<description>This is a nice demonstration. There's one minor thing. It seems that creating a sequence of Core Image filters doesn't take a lot of time. Computational power is needed only at the time the image is rendered. Your filter breaks that. It needs to do its operations at the time the output image is requested, not when the image is actually used for rendering. That may or may not be a problem for a particular application. Something to keep in mind, but your filter is a great demonstration of the flexibility of Core Image.</description>
		<content:encoded><![CDATA[<p>This is a nice demonstration. There's one minor thing. It seems that creating a sequence of Core Image filters doesn't take a lot of time. Computational power is needed only at the time the image is rendered. Your filter breaks that. It needs to do its operations at the time the output image is requested, not when the image is actually used for rendering. That may or may not be a problem for a particular application. Something to keep in mind, but your filter is a great demonstration of the flexibility of Core Image.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Hosey</title>
		<link>http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6261</link>
		<dc:creator>Peter Hosey</dc:creator>
		<pubDate>Thu, 18 Jan 2007 03:04:20 +0000</pubDate>
		<guid isPermaLink="false">http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6261</guid>
		<description>I thought of doing the generic-CIFilter thing while writing the kernelless-CIFilter. Glad to see it's been done already. :)</description>
		<content:encoded><![CDATA[<p>I thought of doing the generic-CIFilter thing while writing the kernelless-CIFilter. Glad to see it's been done already. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Wight</title>
		<link>http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6219</link>
		<dc:creator>Jonathan Wight</dc:creator>
		<pubDate>Wed, 17 Jan 2007 16:39:20 +0000</pubDate>
		<guid isPermaLink="false">http://boredzo.org/blog/archives/2007-01-17/a-core-image-less-image-unit#comment-6219</guid>
		<description>Yeah this is definitely possible and actually of good value. CIFilters are just classes. I've got a CIFilter subclass that is actually a list of CIFilters and inputs (specified via a .plist). This allows you to produce a complex chain of filters and provide a simple interface to them: see &lt;a href="http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImageMacro/" rel="nofollow"&gt;http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImageMacro/&lt;/a&gt;

I've also got another CIFilter subclass that takes the kernel program as a parameter. That way you could dynamically generate kernels on the fly (also very useful for debugging/prototyping): &lt;a href="http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImage/CGenericCIFilter.h" rel="nofollow"&gt;http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImage/CGenericCIFilter.h&lt;/a&gt;

You could also emulate QuartzComposer by creating filters that don't produce an image - but instead output other values - perhaps a random number generator CIFilter or a sine wave producing filter.</description>
		<content:encoded><![CDATA[<p>Yeah this is definitely possible and actually of good value. CIFilters are just classes. I've got a CIFilter subclass that is actually a list of CIFilters and inputs (specified via a .plist). This allows you to produce a complex chain of filters and provide a simple interface to them: see <a href="http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImageMacro/" rel="nofollow">http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImageMacro/</a></p>
<p>I've also got another CIFilter subclass that takes the kernel program as a parameter. That way you could dynamically generate kernels on the fly (also very useful for debugging/prototyping): <a href="http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImage/CGenericCIFilter.h" rel="nofollow">http://svn.toxicsoftware.com/public/trunk/Frameworks/ToxicMedia/Framework/Source/CoreImage/CGenericCIFilter.h</a></p>
<p>You could also emulate QuartzComposer by creating filters that don't produce an image - but instead output other values - perhaps a random number generator CIFilter or a sine wave producing filter.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.177 seconds -->
