tag:blogger.com,1999:blog-6042417775578107106.post7485071484673251653..comments2023-08-05T11:30:32.754-04:00Comments on The Hacks of Life: Is Anyone Generating PMREMs In-Game in Real-Time?Chrishttp://www.blogger.com/profile/14648675681957285299noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-6042417775578107106.post-72348696412161360132016-08-07T21:34:46.569-04:002016-08-07T21:34:46.569-04:00Mason and Sloan's paper is apparently up:
http...Mason and Sloan's paper is apparently up:<br />http://josiahmanson.com/research/ggx_filtering/ggx_filtering.pdf<br />and it's great -- they're somewhere between 2 and 3 steps ahead of me. My naive implementation uses importance sampling, which is (barely barely) viable for low roughness and small cube maps, ish.<br /><br />My thought was to do the usual "stupid GL tricks" and precompute a sampling pattern for the distribution function that simultaneously leverages bilinear filtering hardware, corrects the cube map distortion, and avoids over-sample for very low roughness at the pole. It even occurred to me to precompute a cheap mip chain and use it to "gather" the long tail of GGX.<br /><br />It looks like Manson and Sloan have done this, only with better chosen intermediate functions and a much more clever method for saving the sampling offset table.Benjamin Supnikhttps://www.blogger.com/profile/04886313844644521178noreply@blogger.comtag:blogger.com,1999:blog-6042417775578107106.post-12121533879269604772016-07-19T15:20:07.048-04:002016-07-19T15:20:07.048-04:00I believe that Krzysztof Narkowicz from Flying Wil...I believe that Krzysztof Narkowicz from Flying Wild Hog mentioned that run-time specular probe generation was one of the use-cases for their real-time BC6H compressor: <br /><br />https://knarkowicz.files.wordpress.com/2016/03/knarkowicz_realtime_bc6h_gdc_2016.pdf<br /><br />https://github.com/knarkowicz/GPURealTimeBC6H<br /><br />You might want to try asking him about it on Twitter, his handle is @knarkowiczMJPhttps://www.blogger.com/profile/00019213063129052143noreply@blogger.comtag:blogger.com,1999:blog-6042417775578107106.post-80155730130258370202016-07-19T15:14:04.587-04:002016-07-19T15:14:04.587-04:00It's not that uncommon to do the pre-filtering...It's not that uncommon to do the pre-filtering dynamically. DICE discuss doing so in their SIGGRAPH 2014 presentation (http://www.frostbite.com/2014/11/moving-frostbite-to-pbr/ - see pages 65-68 in the course notes. They did a fast box filter followed by filtered importance sampling (http://cgg.mff.cuni.cz/~jaroslav/papers/2008-egsr-fis/2008-egsr-fis-final-embedded.pdf) to get the correct lobe shape. However, a much better approach was published at I3D this year ("Fast Filtering of Reflection Probes" by Josiah Manson and Peter-Pike Sloan). Unfortunately the authors haven't put a preprint online yet for some reason - I would try contacting them, or at worst buying it from the Eurographics Digital Library.Renderwonkhttps://www.blogger.com/profile/18344985756033636679noreply@blogger.comtag:blogger.com,1999:blog-6042417775578107106.post-68427604204424568152016-07-19T14:23:23.315-04:002016-07-19T14:23:23.315-04:00I experimented with this in Overgrowth (sampling a...I experimented with this in Overgrowth (sampling a distribution function on the GPU), and it worked fine! I ended up going with cached cube map chains because it's possible given the kind of levels we're dealing with, but it seems feasible to me. <br /><br />If you're updating every frame, maybe you could take advantage of temporal coherency by accumulating a smaller number of samples over the last few frames.Davidhttps://www.blogger.com/profile/15972461978224433236noreply@blogger.com