<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Energy Conservation In Games</title>
	<atom:link href="http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/</link>
	<description></description>
	<lastBuildDate>Sat, 28 Jan 2012 01:33:40 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: AMD Cubemapgen for physically based rendering &#171; Sébastien Lagarde</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1192</link>
		<dc:creator>AMD Cubemapgen for physically based rendering &#171; Sébastien Lagarde</dc:creator>
		<pubDate>Thu, 12 Jan 2012 03:58:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1192</guid>
		<description>[...] http://graphics.stanford.edu/papers/envmap/ [6] &#8220;Energy conservation in game&#8221;  http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/  Advertisement  LD_AddCustomAttr(&quot;AdOpt&quot;, &quot;1&quot;); LD_AddCustomAttr(&quot;Origin&quot;, &quot;other&quot;); [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://graphics.stanford.edu/papers/envmap/" rel="nofollow">http://graphics.stanford.edu/papers/envmap/</a> [6] &#8220;Energy conservation in game&#8221;  <a href="http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/" rel="nofollow">http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/</a>  Advertisement  LD_AddCustomAttr(&quot;AdOpt&quot;, &quot;1&quot;); LD_AddCustomAttr(&quot;Origin&quot;, &quot;other&quot;); [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: PI or not to PI in game lighting equation &#171; Sébastien Lagarde</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1140</link>
		<dc:creator>PI or not to PI in game lighting equation &#171; Sébastien Lagarde</dc:creator>
		<pubDate>Wed, 04 Jan 2012 01:17:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1140</guid>
		<description>[...] [3] &#8220;Energy conservation in game&#8221;  http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/ [4] Hill, &#8220;Righting wrap&#8221; http://blog.selfshadow.com/2011/12/31/righting-wrap-part-1/ [...]</description>
		<content:encoded><![CDATA[<p>[...] [3] &#8220;Energy conservation in game&#8221;  <a href="http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/" rel="nofollow">http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/</a> [4] Hill, &#8220;Righting wrap&#8221; <a href="http://blog.selfshadow.com/2011/12/31/righting-wrap-part-1/" rel="nofollow">http://blog.selfshadow.com/2011/12/31/righting-wrap-part-1/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Readings on physically based rendering &#124; Light is beautiful</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1099</link>
		<dc:creator>Readings on physically based rendering &#124; Light is beautiful</dc:creator>
		<pubDate>Tue, 27 Dec 2011 16:07:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1099</guid>
		<description>[...] a more restricted topic Rory Driscoll briefly explained the problem of energy conservation, a first but important step toward PBR, in a convincing and straight to the point manner. In [...]</description>
		<content:encoded><![CDATA[<p>[...] a more restricted topic Rory Driscoll briefly explained the problem of energy conservation, a first but important step toward PBR, in a convincing and straight to the point manner. In [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ruud van Gaal</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1059</link>
		<dc:creator>Ruud van Gaal</dc:creator>
		<pubDate>Fri, 23 Dec 2011 10:02:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1059</guid>
		<description>A note on &#039;is it worth it for games?&#039;. I&#039;m using it in a game (see racer.nl), but the reason that I&#039;m using it is because I think it&#039;s easier to get realistic render results if you try to stick with plausible models.

My lighting is done using klux (kilo-lux) values, so you can in fact measure lighting amounts outside, of the sun, inside rooms, to get actual klux values (klux instead of lux btw because lux values are so large that you get floating point trouble; kilolux fits floating point buffers quite nicely).

Pushing actual klux values into the lighting time-of-day system then should more easily give realistic lighting if energy is conserved as above. So I&#039;d still recommend it for games, if only to make coming up with a more realistic result becomes easier this way.</description>
		<content:encoded><![CDATA[<p>A note on &#8216;is it worth it for games?&#8217;. I&#8217;m using it in a game (see racer.nl), but the reason that I&#8217;m using it is because I think it&#8217;s easier to get realistic render results if you try to stick with plausible models.</p>
<p>My lighting is done using klux (kilo-lux) values, so you can in fact measure lighting amounts outside, of the sun, inside rooms, to get actual klux values (klux instead of lux btw because lux values are so large that you get floating point trouble; kilolux fits floating point buffers quite nicely).</p>
<p>Pushing actual klux values into the lighting time-of-day system then should more easily give realistic lighting if energy is conserved as above. So I&#8217;d still recommend it for games, if only to make coming up with a more realistic result becomes easier this way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rory</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1026</link>
		<dc:creator>rory</dc:creator>
		<pubDate>Fri, 16 Dec 2011 16:27:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1026</guid>
		<description>Oh, sorry, I should have mentioned that (n+8)/(8*pi) is itself an approximation of the real result of the integral. The real conservation factor is not linear. Take a look at the second page of Fabian&#039;s derivation: http://www.farbrausch.de/~fg/stuff/phong.pdf

The line in the shader is a fit of a linear function to the real conservation factor.</description>
		<content:encoded><![CDATA[<p>Oh, sorry, I should have mentioned that (n+8)/(8*pi) is itself an approximation of the real result of the integral. The real conservation factor is not linear. Take a look at the second page of Fabian&#8217;s derivation: <a href="http://www.farbrausch.de/~fg/stuff/phong.pdf" rel="nofollow">http://www.farbrausch.de/~fg/stuff/phong.pdf</a></p>
<p>The line in the shader is a fit of a linear function to the real conservation factor.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ruud van Gaal</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1025</link>
		<dc:creator>Ruud van Gaal</dc:creator>
		<pubDate>Fri, 16 Dec 2011 12:01:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1025</guid>
		<description>Also (sorry for flooding); the (n+8)/(8*PI) seems an exact linear line. The derivative of that formula is 1/(8*PI), so 0.0397887357729839. Why not use that? It seems this is an exact match to (n+8)*(8*PI).

So in Wolfram, you get:

((n+8)/(8*pi)) vs (0.0397887357729839 * n + 0.3183) for n from 0 to 10</description>
		<content:encoded><![CDATA[<p>Also (sorry for flooding); the (n+8)/(8*PI) seems an exact linear line. The derivative of that formula is 1/(8*PI), so 0.0397887357729839. Why not use that? It seems this is an exact match to (n+8)*(8*PI).</p>
<p>So in Wolfram, you get:</p>
<p>((n+8)/(8*pi)) vs (0.0397887357729839 * n + 0.3183) for n from 0 to 10</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ruud van Gaal</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1024</link>
		<dc:creator>Ruud van Gaal</dc:creator>
		<pubDate>Fri, 16 Dec 2011 11:57:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1024</guid>
		<description>Note that the line fit from rory&#039;s post at Dec 14, 8:24am seems ok for n=0..1000, but for n=0 it&#039;s a bit off. We have quite a bit of low-specular materials.
At n=0, (n+8)/8*PI becomes 1/PI. So for the linear approximation, why not this:

http://www.wolframalpha.com/input/?i=%28%28n%2B8%29%2F%288*pi%29%29+vs+%280.0397436+*+n+%2B+0.3183%29+for+n+from+0+to+100

This changes the offset at n=0 to exactly 1/PI and seems more correct for specular=0..100.</description>
		<content:encoded><![CDATA[<p>Note that the line fit from rory&#8217;s post at Dec 14, 8:24am seems ok for n=0..1000, but for n=0 it&#8217;s a bit off. We have quite a bit of low-specular materials.<br />
At n=0, (n+8)/8*PI becomes 1/PI. So for the linear approximation, why not this:</p>
<p><a href="http://www.wolframalpha.com/input/?i=%28%28n%2B8%29%2F%288*pi%29%29+vs+%280.0397436+*+n+%2B+0.3183%29+for+n+from+0+to+100" rel="nofollow">http://www.wolframalpha.com/input/?i=%28%28n%2B8%29%2F%288*pi%29%29+vs+%280.0397436+*+n+%2B+0.3183%29+for+n+from+0+to+100</a></p>
<p>This changes the offset at n=0 to exactly 1/PI and seems more correct for specular=0..100.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ruud van Gaal</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1023</link>
		<dc:creator>Ruud van Gaal</dc:creator>
		<pubDate>Fri, 16 Dec 2011 11:50:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1023</guid>
		<description>Yes, I added a command &#039;analyse shaders&#039; in my game which checks that diff+spec&lt;=1. A black non-specular object might have a low number, which is fine; the rest is &#039;heat&#039; (1-diff-spec), which isn&#039;t simulated in most graphics engines I would think.</description>
		<content:encoded><![CDATA[<p>Yes, I added a command &#8216;analyse shaders&#8217; in my game which checks that diff+spec&lt;=1. A black non-specular object might have a low number, which is fine; the rest is &#039;heat&#039; (1-diff-spec), which isn&#039;t simulated in most graphics engines I would think.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rory</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1015</link>
		<dc:creator>rory</dc:creator>
		<pubDate>Thu, 15 Dec 2011 16:12:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1015</guid>
		<description>While potentially more intuitive for artists, that formula is no longer energy conserving. As mentioned above, this isn&#039;t necessarily a problem for games.

Remember that total energy out is spread over the entire hemisphere, so the intuition that a a certain value in gives the same value out is not generally correct.</description>
		<content:encoded><![CDATA[<p>While potentially more intuitive for artists, that formula is no longer energy conserving. As mentioned above, this isn&#8217;t necessarily a problem for games.</p>
<p>Remember that total energy out is spread over the entire hemisphere, so the intuition that a a certain value in gives the same value out is not generally correct.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Remko</title>
		<link>http://www.rorydriscoll.com/2009/01/25/energy-conservation-in-games/comment-page-1/#comment-1014</link>
		<dc:creator>Remko</dc:creator>
		<pubDate>Thu, 15 Dec 2011 14:08:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.rorydriscoll.com/?p=262#comment-1014</guid>
		<description>How about this?

((power+8)/25.13274)*2.793

So at a power of 1 it&#039;s at the same level of diffuse lighting.

This way you can easily compute the final light using:

float diff = max(dot(N,L),0);
float spec = max(dot(N,H),0);
spec = spec*((power+8)/25.13274)*2.793;

float result = lightcolor*lerp(diff, spec, reflection);

It would seem to me this way the total energy always adds up to the original input color energy.</description>
		<content:encoded><![CDATA[<p>How about this?</p>
<p>((power+8)/25.13274)*2.793</p>
<p>So at a power of 1 it&#8217;s at the same level of diffuse lighting.</p>
<p>This way you can easily compute the final light using:</p>
<p>float diff = max(dot(N,L),0);<br />
float spec = max(dot(N,H),0);<br />
spec = spec*((power+8)/25.13274)*2.793;</p>
<p>float result = lightcolor*lerp(diff, spec, reflection);</p>
<p>It would seem to me this way the total energy always adds up to the original input color energy.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

