<?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>WebGL &#8211; Matthew Petroff</title>
	<atom:link href="https://mpetroff.net/tag/webgl/feed/" rel="self" type="application/rss+xml" />
	<link>https://mpetroff.net</link>
	<description>mpetroff.net</description>
	<lastBuildDate>Fri, 10 Aug 2018 00:48:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Color Cycle Picker</title>
		<link>https://mpetroff.net/2018/03/color-cycle-picker/</link>
					<comments>https://mpetroff.net/2018/03/color-cycle-picker/#respond</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Sat, 31 Mar 2018 01:36:29 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[color blindness]]></category>
		<category><![CDATA[color cycle]]></category>
		<category><![CDATA[color picker]]></category>
		<category><![CDATA[color vision deficiency]]></category>
		<category><![CDATA[WebGL]]></category>
		<guid isPermaLink="false">https://mpetroff.net/?p=2610</guid>

					<description><![CDATA[The &#8220;category10&#8221; color palette, originally developed by Tableau, was adopted as the default color cycle for Matplotlib 2.0 and is also used by default by D3.js and Vega, along with other software packages. While more aesthetically pleasing than the old &#8230; <a href="https://mpetroff.net/2018/03/color-cycle-picker/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">T</span>he &#8220;category10&#8221; color palette, originally developed by <a href="https://www.tableau.com/">Tableau</a>, was adopted as the default color cycle for <a href="https://matplotlib.org/users/dflt_style_changes.html#colors-color-cycles-and-color-maps">Matplotlib 2.0</a> and is also used by default by <a href="https://d3js.org/">D3.js</a> and <a href="https://vega.github.io/">Vega</a>, along with other software packages. While more aesthetically pleasing than the old Matplotlib default, it is unfortunately not colorblind-friendly.<sup id="rf1-2610"><a href="https://mpetroff.net/2018/03/color-cycle-picker/#fn1-2610" title=" Personally, I have difficulty telling the second and third colors apart. " rel="footnote">1</a></sup> In an effort to <a href="https://github.com/matplotlib/matplotlib/issues/9460">improve this</a> and promote the development of colorblind-friendly color cycles for scientific visualization, I built a <a href="https://colorcyclepicker.mpetroff.net/">color cycle picker</a> that incorporates color vision deficiency simulation and enforces a minimum perceptual distance between colors, for both normal and anomalous trichromats. This is accomplished by performing color vision deficiency simulations<sup id="rf2-2610"><a href="https://mpetroff.net/2018/03/color-cycle-picker/#fn2-2610" title=" G. M. Machado, M. M. Oliveira and L. A. F. Fernandes, &#8220;A Physiologically-based Model for Simulation of Color Vision Deficiency,&#8221; in &lt;i&gt;IEEE Transactions on Visualization and Computer Graphics&lt;/i&gt;, vol. 15, no. 6, pp. 1291-1298, Nov.-Dec. 2009. &lt;a href=&quot;https://doi.org/10.1109/TVCG.2009.113&quot;&gt;doi:10.1109/TVCG.2009.113&lt;/a&gt; " rel="footnote">2</a></sup> for various types of deficiencies and enforcing a minimum perceptual difference for the simulated colors using the CAM02-UCS<sup id="rf3-2610"><a href="https://mpetroff.net/2018/03/color-cycle-picker/#fn3-2610" title=" Luo M.R., Li C. (2013) CIECAM02 and Its Recent Developments. In: Fernandez-Maloigne C. (eds) Advanced Color Image Processing and Analysis. Springer, New York, NY. &lt;a href=&quot;https://doi.org/10.1007/978-1-4419-6190-7_2&quot;&gt;doi:10.1007/978-1-4419-6190-7_2&lt;/a&gt; " rel="footnote">3</a></sup> perceptually uniform color space (each type of deficiency is treated separately). Additionally, a minimum lightness distance is enforced, for better grayscale printability. The tool allows colors to be picked from a visualization of the CAM02-UCS color gamut and assembled into a color cycle. This visualization is performed using hardware-accelerated WebGL to allow for real-time interactive adjustment of parameters; the resulting palette is also visualized. The minimum perceptual color distance, lightness distance, and color vision deficiency simulation parameters are all adjustable. A <a href="https://colorcyclepicker.mpetroff.net/">hosted copy</a> is provided, and the code is available in a <a href="https://github.com/mpetroff/color-cycle-picker">repository on GitHub</a>.</p>
<p><a href="https://colorcyclepicker.mpetroff.net/"><img decoding="async" class="aligncenter size-large wp-image-2620" src="https://cdn0.mpetroff.net/wp-content/uploads/2018/03/color-cycle-picker-screenshot-640x416.png" alt="Color Cycle Picker Screenshot" width="640" height="416" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2018/03/color-cycle-picker-screenshot-640x416.png 640w, https://cdn0.mpetroff.net/wp-content/uploads/2018/03/color-cycle-picker-screenshot-300x195.png 300w, https://cdn0.mpetroff.net/wp-content/uploads/2018/03/color-cycle-picker-screenshot.png 1000w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<hr class="footnotes"><ol class="footnotes" style="list-style-type:decimal"><li id="fn1-2610"><p > Personally, I have difficulty telling the second and third colors apart. &nbsp;<a href="https://mpetroff.net/2018/03/color-cycle-picker/#rf1-2610" class="backlink" title="Return to footnote 1.">&#8617;</a></p></li><li id="fn2-2610"><p > G. M. Machado, M. M. Oliveira and L. A. F. Fernandes, &#8220;A Physiologically-based Model for Simulation of Color Vision Deficiency,&#8221; in <i>IEEE Transactions on Visualization and Computer Graphics</i>, vol. 15, no. 6, pp. 1291-1298, Nov.-Dec. 2009. <a href="https://doi.org/10.1109/TVCG.2009.113">doi:10.1109/TVCG.2009.113</a> &nbsp;<a href="https://mpetroff.net/2018/03/color-cycle-picker/#rf2-2610" class="backlink" title="Return to footnote 2.">&#8617;</a></p></li><li id="fn3-2610"><p > Luo M.R., Li C. (2013) CIECAM02 and Its Recent Developments. In: Fernandez-Maloigne C. (eds) Advanced Color Image Processing and Analysis. Springer, New York, NY. <a href="https://doi.org/10.1007/978-1-4419-6190-7_2">doi:10.1007/978-1-4419-6190-7_2</a> &nbsp;<a href="https://mpetroff.net/2018/03/color-cycle-picker/#rf3-2610" class="backlink" title="Return to footnote 3.">&#8617;</a></p></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2018/03/color-cycle-picker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bandwidth-efficient HDR WebGL Textures</title>
		<link>https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/</link>
					<comments>https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/#comments</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Sun, 15 Nov 2015 17:08:47 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[hdr]]></category>
		<category><![CDATA[high dynamic range]]></category>
		<category><![CDATA[textures]]></category>
		<category><![CDATA[WebGL]]></category>
		<guid isPermaLink="false">http://mpetroff.net/?p=2003</guid>

					<description><![CDATA[Storing high dynamic range (HDR) images is a solved problem in general, such as using the excellent OpenEXR format. When is comes to the web, however, there are two major problems. The first is that web browsers don&#8217;t support any &#8230; <a href="https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">S</span>toring high dynamic range (HDR) images is a solved problem in general, such as using the excellent <a href="http://www.openexr.com/">OpenEXR format</a>. When is comes to the web, however, there are two major problems. The first is that web browsers don&#8217;t support any of the standard HDR image formats, and the second is that HDR images tend to be rather large, which is a problem for conserving bandwidth and reducing load times. Although there are ways to load HDR textures into WebGL using pre-encoded textures and <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Using_Extensions">WebGL extensions</a>, this is very bandwidth-inefficient and not supported by all WebGL devices. Thus, the first problem has to be worked around by encoding the HDR image information into standard web images, e.g. JPEG and PNG. The earliest example of this that I can find is the pre-WebGL <a href="http://pfstools.sourceforge.net/hdrhtml.html">pfstools HDR HTML viewer</a>, which layers multiple JPEG images at different exposures and blends them with different opacity settings.<sup id="rf1-2003"><a href="https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/#fn1-2003" title=" Rafa&#322; Mantiuk and Wolfgang Heidrich. &#8220;Visualizing high dynamic range images in a web browser&#8221;. In: &lt;i&gt;Journal of Graphics, GPU, and Game Tools&lt;/i&gt; 14.1 (2009), pp. 43–53. DOI: 10.1080/2151237X.2009.10129276. URL: &lt;a href=&quot;http://pfstools.sourceforge.net/papers/mantiuk09vhdri.pdf&quot;&gt;http://pfstools.sourceforge.net/papers/mantiuk09vhdri.pdf&lt;/a&gt;. " rel="footnote">1</a></sup> This method was good for its time, since before WebGL image processing calculations were difficult to perform in the browser. However, the method is bandwidth-inefficient as it requires downloading the same image at multiple exposures&mdash;five images in the example. This brings us to WebGL, where a method PNG-based method was developed by <a href="http://spidergl.org/example.php?id=13">SpiderGL</a> (and copied by <a href="http://threejs.org/examples/webgl_hdr.html">three.js</a>). Although the provided encoder is undocumented, it appears to be based on JPEG-HDR, which uses a tone-mapped base image combined with a subband image that encodes the ratio between the tone-mapped image and the original HDR image.<sup id="rf2-2003"><a href="https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/#fn2-2003" title=" Greg Ward and Maryann Simmons. &#8220;JPEG-HDR: A backwards-compatible, high dynamic range extension to JPEG&#8221;. In: &lt;i&gt;ACM SIGGRAPH 2006 Courses&lt;/i&gt;. ACM, 2006, p. 3. DOI: 10.1145/1185657.1185685. URL: &lt;a href=&quot;http://www.anyhere.com/gward/papers/cic05.pdf&quot;&gt;http://www.anyhere.com/gward/papers/cic05.pdf&lt;/a&gt;. " rel="footnote">2</a></sup> The method encodes the tone-mapped image in the RGB channels of a PNG and the ratio in the alpha channel. This works well when lossless compression is desired but is bandwidth-inefficient for photographic textures.</p>
<p><span id="more-2003"></span></p>
<p>After fiddling around with encoding <a href="https://en.wikipedia.org/wiki/RGBE_image_format">RGBE</a> as a JPEG and PNG and porting the SpiderGL technique to two separate JPEG images instead of a single PNG image, I stumbled upon a paper describing a better method (which happens to be written by the same person who created the SpiderGL HDR example). The &#8220;BoostHDR&#8221; technique described in the paper segments the image based on luminance, creating a compression-driven map (CDM), and tone maps the image with different parameters in each segment.<sup id="rf3-2003"><a href="https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/#fn3-2003" title=" Francesco Banterle and Roberto Scopigno. &lt;i&gt;BoostHDR: a novel backward-compatible method for HDR images&lt;/i&gt;. 2012. DOI: 10.1117/12.931504. URL: &lt;a href=&quot;http://vcg.isti.cnr.it/Publications/2012/BS12/spie_2012_compression_hdr.pdf&quot;&gt;http://vcg.isti.cnr.it/Publications/2012/BS12/spie_2012_compression_hdr.pdf&lt;/a&gt;. " rel="footnote">3</a></sup> With the spatial and tone map parameters contained in the CDM, the original HDR image can be recovered from the tone mapped image. The map is stored as a PNG, and the tone mapped image is stored as a JPEG. See the paper for details and figures. I implemented the paper&#8217;s encoding scheme in Python, although I left out some of the filtering steps to reduce the script&#8217;s external dependencies since the filtering didn&#8217;t help much. To display the HDR image in WebGL, both the tone mapped image and CDM image are first loaded using JavaScript, and the CDM is then loaded into the tone mapped image&#8217;s alpha channel using the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API">Canvas API</a>. This RGBA texture is then loaded into WebGL, where a fragment shader function is used to recover the HDR image. As one would expect from a photograph encoded as a JPEG versus a PNG, this technique results in files sizes a few times smaller than the SpiderGL method. For lack of a better name, I&#8217;m calling this technique &#8220;WebHDR.&#8221;</p>
<p>A demo can be viewed <a href="//mpetroff.net/files/webhdr/">here</a>. Both the encoder and demo viewer are available on <a href="https://github.com/mpetroff/webhdr">GitHub</a> and have been released into the public domain.</p>
<hr class="footnotes"><ol class="footnotes" style="list-style-type:decimal"><li id="fn1-2003"><p > Rafa&#322; Mantiuk and Wolfgang Heidrich. &#8220;Visualizing high dynamic range images in a web browser&#8221;. In: <i>Journal of Graphics, GPU, and Game Tools</i> 14.1 (2009), pp. 43–53. DOI: 10.1080/2151237X.2009.10129276. URL: <a href="http://pfstools.sourceforge.net/papers/mantiuk09vhdri.pdf">http://pfstools.sourceforge.net/papers/mantiuk09vhdri.pdf</a>. &nbsp;<a href="https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/#rf1-2003" class="backlink" title="Return to footnote 1.">&#8617;</a></p></li><li id="fn2-2003"><p > Greg Ward and Maryann Simmons. &#8220;JPEG-HDR: A backwards-compatible, high dynamic range extension to JPEG&#8221;. In: <i>ACM SIGGRAPH 2006 Courses</i>. ACM, 2006, p. 3. DOI: 10.1145/1185657.1185685. URL: <a href="http://www.anyhere.com/gward/papers/cic05.pdf">http://www.anyhere.com/gward/papers/cic05.pdf</a>. &nbsp;<a href="https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/#rf2-2003" class="backlink" title="Return to footnote 2.">&#8617;</a></p></li><li id="fn3-2003"><p > Francesco Banterle and Roberto Scopigno. <i>BoostHDR: a novel backward-compatible method for HDR images</i>. 2012. DOI: 10.1117/12.931504. URL: <a href="http://vcg.isti.cnr.it/Publications/2012/BS12/spie_2012_compression_hdr.pdf">http://vcg.isti.cnr.it/Publications/2012/BS12/spie_2012_compression_hdr.pdf</a>. &nbsp;<a href="https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/#rf3-2003" class="backlink" title="Return to footnote 3.">&#8617;</a></p></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2015/11/bandwidth-efficient-hdr-webgl-textures/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Print Maps</title>
		<link>https://mpetroff.net/2015/02/print-maps/</link>
					<comments>https://mpetroff.net/2015/02/print-maps/#comments</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Mon, 09 Feb 2015 00:19:35 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[OpenStreetMap]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[WebGL]]></category>
		<guid isPermaLink="false">http://mpetroff.net/?p=1760</guid>

					<description><![CDATA[Web maps, e.g. Google Maps, normally don&#8217;t print well, as their resolution is much lower than normal print resolution, not to mention the various other unwanted text and elements that print along with the map. While the unwanted elements can &#8230; <a href="https://mpetroff.net/2015/02/print-maps/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">W</span>eb maps, e.g. Google Maps, normally don&#8217;t print well, as their resolution is much lower than normal print resolution, not to mention the various other unwanted text and elements that print along with the map. While the unwanted elements can be cropped out, the only fix for the low resolution is to render a higher resolution image (or use vectors). Formerly, this required installing GIS software, which also requires a suitable data source. <a href="https://printmaps.mpetroff.net/">Print Maps</a> changes that by leveraging <a href="https://github.com/mapbox/mapbox-gl-js">Mapbox GL JS</a> and <a href="https://openstreetmap.org/">OpenStreetMap</a> data to render print resolution maps in the browser. After the user selects the map size, zoom, location, style, resolution, and output format, PNG or PDF, Mapbox GL JS is configured as if it was being used on a very high pixel density display and used to render the map output. To use Print Maps, visit <a href="https://printmaps.mpetroff.net">printmaps.mpetroff.net</a>.</p>
<p><a href="https://cdn0.mpetroff.net/wp-content/uploads/2015/02/print-maps.png" title="Print Maps" data-sbox="1760"><img loading="lazy" decoding="async" class="aligncenter wp-image-1761 size-large" title="Print Maps" src="https://cdn0.mpetroff.net/wp-content/uploads/2015/02/print-maps-640x736.png" alt="Print Maps" width="640" height="736" srcset="https://cdn0.mpetroff.net/wp-content/uploads/2015/02/print-maps-640x736.png 640w, https://cdn0.mpetroff.net/wp-content/uploads/2015/02/print-maps-261x300.png 261w, https://cdn0.mpetroff.net/wp-content/uploads/2015/02/print-maps.png 800w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a>The site&#8217;s source code is available on <a href="https://github.com/mpetroff/print-maps">GitHub</a>. Also, <a href="https://speakerdeck.com/mpetroff/hophacks-spring-2015">slides</a> from my HopHacks presentation on the project.</p>
<p>Edit (2017-01-01): Changed printmaps.org to printmaps.mpetroff.net as I&#8217;m going to let the printmaps.org domain registration expire.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2015/02/print-maps/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Pannellum 2.0</title>
		<link>https://mpetroff.net/2014/08/pannellum-2-0/</link>
					<comments>https://mpetroff.net/2014/08/pannellum-2-0/#comments</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Sat, 23 Aug 2014 02:17:42 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[George Peabody Library]]></category>
		<category><![CDATA[pannellum]]></category>
		<category><![CDATA[panorama]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[WebGL]]></category>
		<guid isPermaLink="false">http://mpetroff.net/?p=1556</guid>

					<description><![CDATA[Two years in the making, I finally released Pannellum 2.0, which is a near complete rewrite. The renderer was replaced with raw WebGL, and multiresolution panorama support was added, along with a fallback CSS 3D renderer. Other additions include support &#8230; <a href="https://mpetroff.net/2014/08/pannellum-2-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">T</span>wo years in the making, I finally released <a href="https://github.com/mpetroff/pannellum/releases">Pannellum 2.0</a>, which is a near complete rewrite. The renderer was replaced with raw WebGL, and multiresolution panorama support was added, along with a fallback CSS 3D renderer. Other additions include support for JSON configuration files, hotspots, tours, compass headings, CORS, partial panoramas, and cubic panoramas. I also put together a website for the viewer, registering <a href="//pannellum.org/">pannellum.org</a>. Unfortunately, there is still a dearth of documentation&#8212;something I need to work on. The below example demonstrates the multiresolution, hotspot, compass heading, and tour functionality using panoramas of the <a href="//en.wikipedia.org/wiki/George_Peabody_Library">George Peabody Library</a> and a <a href="http://pannellum.org/panoramas/tour.json">JSON configuration file</a>.</p>
<p><iframe title="pannellum panorama viewer" allowfullscreen style="border-style:none;width:100%;height:390px;" src="https://cdn.pannellum.org/2.2/pannellum.htm?config=https://pannellum.org/configs/multiresolution.json&#038;autoLoad=true"></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2014/08/pannellum-2-0/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Pannellum 1.2</title>
		<link>https://mpetroff.net/2012/08/pannellum-1-2/</link>
					<comments>https://mpetroff.net/2012/08/pannellum-1-2/#comments</comments>
		
		<dc:creator><![CDATA[Matthew Petroff]]></dc:creator>
		<pubDate>Tue, 28 Aug 2012 16:34:42 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[pannellum]]></category>
		<category><![CDATA[panorama]]></category>
		<category><![CDATA[WebGL]]></category>
		<guid isPermaLink="false">http://www.mpetroff.net/?p=652</guid>

					<description><![CDATA[With a few new features, a few improvements, and a bug fix, Pannellum 1.2 has been released. The new release includes keyboard panning controls, support for a fallback URL if WebGL is not supported by a browser, clarified load button &#8230; <a href="https://mpetroff.net/2012/08/pannellum-1-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap">W</span>ith a few new features, a few improvements, and a bug fix, Pannellum 1.2 has been released. The new release includes keyboard panning controls, support for a fallback URL if WebGL is not supported by a browser, clarified load button text, and vector icons. Also included is a workaround for a, now resolved, <a href="https://bugs.webkit.org/show_bug.cgi?id=93525">regression in WebKit&#8217;s fullscreen API support</a>. Enjoy!</p>
<div style="width:600px; margin-left:auto; margin-right:auto; overflow:hidden;"><iframe loading="lazy" title="pannellum panorama viewer" width="600" height="400" webkitAllowFullScreen mozallowfullscreen allowFullScreen style="border-style:none;" id="pannellum_fua5cQ4qlI" src="/files/pannellum/pannellum.htm?panorama=https://cdn0.mpetroff.net/wp-content/uploads/2012/05/examplepano.jpg&amp;title=Jordan%20Pond&amp;author=Matthew%20Petroff&amp;license=1"></iframe></div>
<p>&#32;<br />
Update: Pannellum 1.2.1 has been released with a fix for a minor mouse dragging bug.</p>
<p>The new release can be downloaded <a href="https://github.com/mpetroff/pannellum/archive/1.2.1.zip">here</a>, or one can see the project on <a href="https://github.com/mpetroff/pannellum">Github</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mpetroff.net/2012/08/pannellum-1-2/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Content Delivery Network via Amazon Web Services: CloudFront: cdn0.mpetroff.net
Minified using Disk

Served from: mpetroff.net @ 2026-03-28 18:34:32 by W3 Total Cache
-->