Please wait while JavaScript is catching up…
If a site keeps producing new broken resources filling up the archive (e.g., file download pages with unique session IDs), contact me and we'll make a more automated block.
https://peisik.untergrund.net/rendering_eternal_fortress/
Other downloads for this URL: text/html, 37 kB
This downloaded file in a sandbox that disallows loading or navigating to external resources:
00000000: 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44 <!DOCTYPE html PUBLIC "-//W3C//D 00000020: 54 44 20 58 48 54 4d 4c 20 31 2e 30 20 54 72 61 6e 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e 22 20 22 TD XHTML 1.0 Transitional//EN" " 00000040: 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f 44 54 44 2f http://www.w3.org/TR/xhtml1/DTD/ 00000060: 78 68 74 6d 6c 31 2d 74 72 61 6e 73 69 74 69 6f 6e 61 6c 2e 64 74 64 22 3e 0d 0a 3c 68 74 6d 6c xhtml1-transitional.dtd">..<html 00000080: 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 xmlns="http://www.w3.org/1999/x 000000a0: 68 74 6d 6c 22 3e 0d 0a 3c 68 65 61 64 3e 0d 0a 20 20 3c 6d 65 74 61 20 68 74 74 70 2d 65 71 75 html">..<head>.. <meta http-equ 000000c0: 69 76 3d 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 63 6f 6e 74 65 6e 74 3d 22 74 65 78 74 2f iv="Content-Type" content="text/ 000000e0: 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 75 74 66 2d 38 22 20 2f 3e 0d 0a 20 20 3c 6d 65 74 61 html; charset=utf-8" />.. <meta 00000100: 20 68 74 74 70 2d 65 71 75 69 76 3d 22 43 6f 6e 74 65 6e 74 2d 53 74 79 6c 65 2d 54 79 70 65 22 http-equiv="Content-Style-Type" 00000120: 20 63 6f 6e 74 65 6e 74 3d 22 74 65 78 74 2f 63 73 73 22 20 2f 3e 0d 0a 20 20 3c 6d 65 74 61 20 content="text/css" />.. <meta 00000140: 6e 61 6d 65 3d 22 67 65 6e 65 72 61 74 6f 72 22 20 63 6f 6e 74 65 6e 74 3d 22 70 61 6e 64 6f 63 name="generator" content="pandoc 00000160: 22 20 2f 3e 0d 0a 20 20 3c 6d 65 74 61 20 6e 61 6d 65 3d 22 61 75 74 68 6f 72 22 20 63 6f 6e 74 " />.. <meta name="author" cont 00000180: 65 6e 74 3d 22 63 63 65 20 2f 20 50 65 69 73 69 6b 5e 4d 61 63 61 75 20 45 78 70 6f 72 74 73 22 ent="cce / Peisik^Macau Exports" 000001a0: 20 2f 3e 0d 0a 20 20 3c 74 69 74 6c 65 3e 52 65 6e 64 65 72 69 6e 67 20 45 74 65 72 6e 61 6c 20 />.. <title>Rendering Eternal 000001c0: 46 6f 72 74 72 65 73 73 3c 2f 74 69 74 6c 65 3e 0d 0a 20 20 3c 73 74 79 6c 65 20 74 79 70 65 3d Fortress</title>.. <style type= 000001e0: 22 74 65 78 74 2f 63 73 73 22 3e 63 6f 64 65 7b 77 68 69 74 65 2d 73 70 61 63 65 3a 20 70 72 65 "text/css">code{white-space: pre 00000200: 3b 7d 3c 2f 73 74 79 6c 65 3e 0d 0a 20 20 3c 6d 65 74 61 20 63 6f 6e 74 65 6e 74 3d 27 77 69 64 ;}</style>.. <meta content='wid 00000220: 74 68 3d 64 65 76 69 63 65 2d 77 69 64 74 68 2c 20 69 6e 69 74 69 61 6c 2d 73 63 61 6c 65 3d 31 th=device-width, initial-scale=1 00000240: 27 20 6e 61 6d 65 3d 27 76 69 65 77 70 6f 72 74 27 2f 3e 0d 0a 20 20 3c 6c 69 6e 6b 20 72 65 6c ' name='viewport'/>.. <link rel 00000260: 3d 22 73 74 79 6c 65 73 68 65 65 74 22 20 68 72 65 66 3d 22 68 61 63 6b 65 72 2e 63 73 73 22 3e ="stylesheet" href="hacker.css"> 00000280: 0d 0a 3c 2f 68 65 61 64 3e 0d 0a 3c 62 6f 64 79 3e 0d 0a 3c 64 69 76 20 69 64 3d 22 68 65 61 64 ..</head>..<body>..<div id="head 000002a0: 65 72 22 3e 0d 0a 3c 68 31 20 63 6c 61 73 73 3d 22 74 69 74 6c 65 22 3e 52 65 6e 64 65 72 69 6e er">..<h1 class="title">Renderin 000002c0: 67 20 45 74 65 72 6e 61 6c 20 46 6f 72 74 72 65 73 73 3c 2f 68 31 3e 0d 0a 3c 68 32 20 63 6c 61 g Eternal Fortress</h1>..<h2 cla 000002e0: 73 73 3d 22 61 75 74 68 6f 72 22 3e 63 63 65 20 2f 20 50 65 69 73 69 6b 5e 4d 61 63 61 75 20 45 ss="author">cce / Peisik^Macau E 00000300: 78 70 6f 72 74 73 3c 2f 68 32 3e 0d 0a 3c 68 33 20 63 6c 61 73 73 3d 22 64 61 74 65 22 3e 41 70 xports</h2>..<h3 class="date">Ap 00000320: 72 69 6c 20 31 33 74 68 2c 20 32 30 32 30 3c 2f 68 33 3e 0d 0a 3c 2f 64 69 76 3e 0d 0a 3c 70 3e ril 13th, 2020</h3>..</div>..<p> 00000340: 3c 61 20 68 72 65 66 3d 22 69 6d 67 2f 73 63 72 65 65 6e 73 68 6f 74 2e 70 6e 67 22 3e 20 3c 69 <a href="img/screenshot.png"> <i 00000360: 6d 67 20 73 72 63 3d 22 69 6d 67 2f 73 63 72 65 65 6e 73 68 6f 74 5f 74 68 75 6d 62 2e 6a 70 67 mg src="img/screenshot_thumb.jpg 00000380: 22 20 61 6c 74 3d 22 41 20 76 69 65 77 20 6f 66 20 74 68 65 20 4d 61 6e 64 65 6c 62 6f 78 20 46 " alt="A view of the Mandelbox F 000003a0: 75 6c 6c 20 73 69 7a 65 22 20 2f 3e 20 3c 2f 61 3e 3c 2f 70 3e 0d 0a 3c 70 3e 3c 73 70 61 6e 20 ull size" /> </a></p>..<p><span 000003c0: 63 6c 61 73 73 3d 22 6e 61 6d 65 22 3e 45 74 65 72 6e 61 6c 20 46 6f 72 74 72 65 73 73 3c 2f 73 class="name">Eternal Fortress</s 000003e0: 70 61 6e 3e 20 28 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 70 6f 75 65 74 pan> (<a href="https://www.pouet 00000400: 2e 6e 65 74 2f 70 72 6f 64 2e 70 68 70 3f 77 68 69 63 68 3d 38 35 33 30 33 22 3e 70 6f 75 65 74 .net/prod.php?which=85303">pouet 00000420: 3c 2f 61 3e 2c 20 3c 61 20 68 72 65 66 3d 22 66 74 70 3a 2f 2f 66 74 70 2e 75 6e 74 65 72 67 72 </a>, <a href="ftp://ftp.untergr 00000440: 75 6e 64 2e 6e 65 74 2f 75 73 65 72 73 2f 70 65 69 73 69 6b 2f 65 74 65 72 6e 61 6c 5f 66 6f 72 und.net/users/peisik/eternal_for 00000460: 74 72 65 73 73 5f 70 61 72 74 79 76 65 72 73 69 6f 6e 34 2e 7a 69 70 22 3e 7a 69 70 3c 2f 61 3e tress_partyversion4.zip">zip</a> 00000480: 2c 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 65 , <a href="https://github.com/se 000004a0: 65 63 65 2f 65 74 65 72 6e 61 6c 2d 66 6f 72 74 72 65 73 73 2d 64 65 6d 6f 22 3e 73 6f 75 72 63 ece/eternal-fortress-demo">sourc 000004c0: 65 3c 2f 61 3e 29 20 69 73 20 64 65 6d 6f 20 62 79 20 50 65 69 73 69 6b 20 66 6f 72 20 52 65 76 e</a>) is demo by Peisik for Rev 000004e0: 69 73 69 6f 6e 20 4f 6e 6c 69 6e 65 20 32 30 32 30 2e 20 49 74 20 77 61 73 20 62 6f 72 6e 20 6f ision Online 2020. It was born o 00000500: 75 74 20 6f 66 20 64 65 73 69 72 65 20 74 6f 20 73 68 6f 77 20 74 68 65 20 4d 61 6e 64 65 6c 62 ut of desire to show the Mandelb 00000520: 6f 78 20 66 72 61 63 74 61 6c 20 61 73 20 61 20 6d 61 73 73 69 76 65 20 73 70 72 61 77 6c 69 6e ox fractal as a massive sprawlin 00000540: 67 20 73 74 72 75 63 74 75 72 65 20 69 74 20 69 73 2e 20 54 68 69 73 20 70 61 67 65 20 69 73 20 g structure it is. This page is 00000560: 61 20 72 61 6d 62 6c 69 6e 67 20 64 75 6d 70 20 6f 66 20 74 65 63 68 6e 69 63 61 6c 20 74 68 6f a rambling dump of technical tho 00000580: 75 67 68 74 73 20 6f 6e 20 69 74 73 20 72 65 6e 64 65 72 69 6e 67 20 74 65 63 68 6e 69 71 75 65 ughts on its rendering technique 000005a0: 73 2e 3c 2f 70 3e 0d 0a 3c 63 65 6e 74 65 72 3e 0d 0a 3c 69 66 72 61 6d 65 20 77 69 64 74 68 3d s.</p>..<center>..<iframe width= 000005c0: 22 38 30 30 22 20 68 65 69 67 68 74 3d 22 34 38 30 22 20 73 72 63 3d 22 68 74 74 70 73 3a 2f 2f "800" height="480" src="https:// 000005e0: 77 77 77 2e 79 6f 75 74 75 62 65 2d 6e 6f 63 6f 6f 6b 69 65 2e 63 6f 6d 2f 65 6d 62 65 64 2f 47 www.youtube-nocookie.com/embed/G 00000600: 51 74 43 72 56 51 51 55 5a 63 3f 73 74 61 72 74 3d 32 22 20 66 72 61 6d 65 62 6f 72 64 65 72 3d QtCrVQQUZc?start=2" frameborder= 00000620: 22 30 22 20 61 6c 6c 6f 77 3d 22 61 63 63 65 6c 65 72 6f 6d 65 74 65 72 3b 20 61 75 74 6f 70 6c "0" allow="accelerometer; autopl 00000640: 61 79 3b 20 65 6e 63 72 79 70 74 65 64 2d 6d 65 64 69 61 3b 20 67 79 72 6f 73 63 6f 70 65 3b 20 ay; encrypted-media; gyroscope; 00000660: 70 69 63 74 75 72 65 2d 69 6e 2d 70 69 63 74 75 72 65 22 20 61 6c 6c 6f 77 66 75 6c 6c 73 63 72 picture-in-picture" allowfullscr 00000680: 65 65 6e 3e 0d 0a 3c 2f 69 66 72 61 6d 65 3e 0d 0a 3c 2f 63 65 6e 74 65 72 3e 0d 0a 3c 68 32 20 een>..</iframe>..</center>..<h2 000006a0: 69 64 3d 22 72 65 6e 64 65 72 69 6e 67 2d 73 74 61 74 69 63 2d 66 72 61 63 74 61 6c 2d 67 65 6f id="rendering-static-fractal-geo 000006c0: 6d 65 74 72 79 22 3e 52 65 6e 64 65 72 69 6e 67 20 73 74 61 74 69 63 20 66 72 61 63 74 61 6c 20 metry">Rendering static fractal 000006e0: 67 65 6f 6d 65 74 72 79 3c 2f 68 32 3e 0d 0a 3c 70 3e 41 20 62 69 67 20 70 72 6f 62 6c 65 6d 20 geometry</h2>..<p>A big problem 00000700: 77 69 74 68 20 74 68 65 20 4d 61 6e 64 65 6c 62 6f 78 20 69 73 20 74 68 61 74 20 69 74 27 73 20 with the Mandelbox is that it's 00000720: 68 65 61 76 79 20 74 6f 20 72 61 79 6d 61 72 63 68 20 6f 6e 20 6c 6f 6e 67 20 76 69 65 77 20 64 heavy to raymarch on long view d 00000740: 69 73 74 61 6e 63 65 73 2e 20 54 68 69 73 20 6d 61 6b 65 73 20 69 74 20 70 72 65 74 74 79 20 6d istances. This makes it pretty m 00000760: 75 63 68 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 68 6f 6f 74 20 6d 6f 72 65 20 74 68 61 uch impossible to shoot more tha 00000780: 6e 20 6f 6e 65 20 72 61 79 20 70 65 72 20 70 69 78 65 6c 20 61 74 20 72 65 61 6c 74 69 6d 65 20 n one ray per pixel at realtime 000007a0: 66 72 61 6d 65 72 61 74 65 73 2c 20 73 6f 20 74 68 65 20 69 6d 61 67 65 20 77 69 6c 6c 20 61 70 framerates, so the image will ap 000007c0: 70 65 61 72 20 6e 6f 69 73 79 2e 20 57 65 20 6b 6e 6f 77 20 74 68 65 20 66 72 61 63 74 61 6c 20 pear noisy. We know the fractal 000007e0: 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 73 74 61 74 69 63 2c 20 73 6f 20 69 74 20 73 68 6f 6c is completely static, so it shol 00000800: 64 20 62 65 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 72 65 75 73 65 20 72 61 79 6d 61 72 63 68 69 d be possible to reuse raymarchi 00000820: 6e 67 20 72 65 73 75 6c 74 73 20 61 63 72 6f 73 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 61 6d ng results across different fram 00000840: 65 73 2e 20 48 6f 77 20 64 6f 20 77 65 20 73 74 6f 72 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 es. How do we store the results 00000860: 61 63 72 6f 73 73 20 66 72 61 6d 65 73 3f 3c 2f 70 3e 0d 0a 3c 68 33 20 69 64 3d 22 64 79 6e 61 across frames?</p>..<h3 id="dyna 00000880: 6d 69 63 2d 70 6f 69 6e 74 2d 63 6c 6f 75 64 2d 72 65 6e 64 65 72 69 6e 67 22 3e 44 79 6e 61 6d mic-point-cloud-rendering">Dynam 000008a0: 69 63 20 70 6f 69 6e 74 20 63 6c 6f 75 64 20 72 65 6e 64 65 72 69 6e 67 3c 2f 68 33 3e 0d 0a 3c ic point cloud rendering</h3>..< 000008c0: 70 3e 49 6e 20 74 68 65 20 64 65 6d 6f 20 65 76 65 72 79 74 68 69 6e 67 20 69 73 20 61 63 74 75 p>In the demo everything is actu 000008e0: 61 6c 6c 79 20 61 20 70 6f 69 6e 74 20 63 6c 6f 75 64 2e 20 59 6f 75 20 63 61 6e 20 74 68 69 6e ally a point cloud. You can thin 00000900: 6b 20 6f 66 20 69 74 20 61 73 20 61 20 70 61 72 74 69 63 6c 65 20 73 79 73 74 65 6d 20 77 68 65 k of it as a particle system whe 00000920: 72 65 20 65 61 63 68 20 70 61 72 74 69 63 6c 65 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 73 re each particle is completely s 00000940: 74 61 74 69 63 20 61 6e 64 20 6c 69 76 65 73 20 66 6f 72 20 31 30 20 66 72 61 6d 65 73 20 6f 72 tatic and lives for 10 frames or 00000960: 20 6c 6f 6e 67 65 72 2e 20 54 68 65 20 63 6f 6f 6c 20 74 68 69 6e 67 20 61 62 6f 75 74 20 74 68 longer. The cool thing about th 00000980: 69 73 20 69 73 20 74 68 61 74 20 65 76 65 6e 20 69 66 20 79 6f 75 20 63 61 6e 20 61 66 66 6f 72 is is that even if you can affor 000009a0: 64 20 6f 6e 6c 79 20 6f 6e 65 20 72 61 79 20 70 65 72 20 70 69 78 65 6c 20 65 76 65 72 79 20 66 d only one ray per pixel every f 000009c0: 72 61 6d 65 2c 20 79 6f 75 20 63 61 6e 20 73 74 69 6c 6c 20 6b 65 65 70 20 74 68 65 20 72 65 73 rame, you can still keep the res 000009e0: 75 6c 74 69 6e 67 20 70 6f 69 6e 74 20 66 6f 72 20 6c 61 74 65 72 20 66 72 61 6d 65 73 2e 20 53 ulting point for later frames. S 00000a00: 6f 20 69 74 27 73 20 61 20 76 61 72 69 61 74 69 6f 6e 20 6f 66 20 74 65 6d 70 6f 72 61 6c 20 73 o it's a variation of temporal s 00000a20: 75 70 65 72 20 73 61 6d 70 6c 69 6e 67 2c 20 69 66 20 79 6f 75 20 77 69 6c 6c 2e 3c 2f 70 3e 0d uper sampling, if you will.</p>. 00000a40: 0a 3c 70 3e 57 65 20 73 74 6f 72 65 20 32 30 20 6d 69 6c 6c 69 6f 6e 20 70 6f 69 6e 74 73 20 69 .<p>We store 20 million points i 00000a60: 6e 20 61 20 62 69 67 20 66 61 74 20 72 69 6e 67 20 62 75 66 66 65 72 2c 20 61 6e 64 20 6f 6e 20 n a big fat ring buffer, and on 00000a80: 65 61 63 68 20 66 72 61 6d 65 20 77 65 20 61 64 64 20 72 6f 75 67 68 6c 79 20 74 77 6f 20 6d 69 each frame we add roughly two mi 00000aa0: 6c 6c 69 6f 6e 20 6e 65 77 20 6f 6e 65 73 20 74 6f 20 69 74 2c 20 64 72 6f 70 70 69 6e 67 20 6f llion new ones to it, dropping o 00000ac0: 75 74 20 74 68 65 20 6f 6c 64 65 73 74 20 70 6f 69 6e 74 73 2e 3c 2f 70 3e 0d 0a 3c 70 3e 54 68 ut the oldest points.</p>..<p>Th 00000ae0: 65 20 6f 76 65 72 61 6c 6c 20 70 69 70 65 6c 69 6e 65 20 69 73 20 74 68 65 20 66 6f 6c 6c 6f 77 e overall pipeline is the follow 00000b00: 69 6e 67 2e 3c 2f 70 3e 0d 0a 3c 6f 6c 20 73 74 79 6c 65 3d 22 6c 69 73 74 2d 73 74 79 6c 65 2d ing.</p>..<ol style="list-style- 00000b20: 74 79 70 65 3a 20 64 65 63 69 6d 61 6c 22 3e 0d 0a 3c 6c 69 3e 52 61 79 6d 61 72 63 68 20 32 20 type: decimal">..<li>Raymarch 2 00000b40: 6d 69 6c 6c 69 6f 6e 20 70 6f 69 6e 74 73 20 61 6e 64 20 61 64 64 20 74 68 65 6d 20 74 6f 20 74 million points and add them to t 00000b60: 68 65 20 72 69 6e 67 20 62 75 66 66 65 72 2c 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 73 70 6c 61 74 20 he ring buffer,</li>..<li>splat 00000b80: 61 6c 6c 20 32 30 20 6d 69 6c 6c 69 6f 6e 20 70 6f 69 6e 74 73 20 69 6e 20 74 68 65 20 72 69 6e all 20 million points in the rin 00000ba0: 67 20 62 75 66 66 65 72 2c 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 72 65 73 6f 6c 76 65 20 66 69 6e 61 g buffer,</li>..<li>resolve fina 00000bc0: 6c 20 63 6f 6c 6f 72 73 20 61 6e 64 20 61 6c 70 68 61 73 2c 20 61 6e 64 3c 2f 6c 69 3e 0d 0a 3c l colors and alphas, and</li>..< 00000be0: 6c 69 3e 61 70 70 6c 79 20 70 6f 73 74 70 72 6f 63 65 73 73 69 6e 67 2e 3c 2f 6c 69 3e 0d 0a 3c li>apply postprocessing.</li>..< 00000c00: 2f 6f 6c 3e 0d 0a 3c 70 3e 45 76 65 72 79 20 70 6f 69 6e 74 20 63 6f 6e 74 72 69 62 75 74 65 73 /ol>..<p>Every point contributes 00000c20: 20 74 6f 20 73 6f 6d 65 20 70 65 72 2d 70 69 78 65 6c 20 77 65 69 67 68 74 65 64 20 61 76 65 72 to some per-pixel weighted aver 00000c40: 61 67 65 20 63 6f 6c 6f 72 20 75 73 69 6e 67 20 61 20 76 61 72 69 61 74 69 6f 6e 20 6f 66 20 3c age color using a variation of < 00000c60: 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 63 67 74 2e 6f 72 67 2f 70 75 62 6c 69 73 68 65 a href="http://jcgt.org/publishe 00000c80: 64 2f 30 30 30 32 2f 30 32 2f 30 39 2f 22 3e 57 65 69 67 68 74 65 64 20 42 6c 65 6e 64 65 64 20 d/0002/02/09/">Weighted Blended 00000ca0: 4f 72 64 65 72 2d 49 6e 64 65 70 65 6e 64 65 6e 74 20 54 72 61 6e 73 70 61 72 65 6e 63 79 3c 2f Order-Independent Transparency</ 00000cc0: 61 3e 20 28 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 63 61 73 75 61 6c 2d 65 66 66 65 63 a> (<a href="http://casual-effec 00000ce0: 74 73 2e 62 6c 6f 67 73 70 6f 74 2e 63 6f 6d 2f 32 30 31 35 2f 30 33 2f 69 6d 70 6c 65 6d 65 6e ts.blogspot.com/2015/03/implemen 00000d00: 74 65 64 2d 77 65 69 67 68 74 65 64 2d 62 6c 65 6e 64 65 64 2d 6f 72 64 65 72 2e 68 74 6d 6c 22 ted-weighted-blended-order.html" 00000d20: 3e 62 6c 6f 67 20 70 6f 73 74 3c 2f 61 3e 29 20 62 79 20 4d 6f 72 67 61 6e 20 4d 63 47 75 69 72 >blog post</a>) by Morgan McGuir 00000d40: 65 20 61 6e 64 20 4c 6f 75 69 73 20 42 61 76 6f 69 6c 2e 20 54 68 65 20 69 64 65 61 20 69 73 20 e and Louis Bavoil. The idea is 00000d60: 74 6f 20 67 69 76 65 20 63 6c 6f 73 65 72 20 70 6f 69 6e 74 73 20 6d 6f 72 65 20 77 65 69 67 68 to give closer points more weigh 00000d80: 74 20 74 68 61 6e 20 74 68 6f 73 65 20 66 61 72 20 61 77 61 79 20 66 72 6f 6d 20 74 68 65 20 63 t than those far away from the c 00000da0: 61 6d 65 72 61 2c 20 73 6f 20 69 6e 20 74 68 65 20 65 6e 64 20 61 20 77 65 69 67 68 74 65 64 20 amera, so in the end a weighted 00000dc0: 61 76 65 72 61 67 65 20 77 69 6c 6c 20 67 69 76 65 20 70 72 6f 70 65 72 20 6f 63 63 6c 75 73 69 average will give proper occlusi 00000de0: 6f 6e 2e 20 41 63 63 75 6d 75 6c 61 74 69 6f 6e 20 69 73 20 64 6f 6e 65 20 76 69 61 20 69 6e 74 on. Accumulation is done via int 00000e00: 65 67 65 72 20 61 74 6f 6d 69 63 73 2e 20 4d 79 20 63 6f 64 65 20 64 69 64 6e 27 74 20 73 75 70 eger atomics. My code didn't sup 00000e20: 70 6f 72 74 20 70 72 6f 70 65 72 20 70 65 72 2d 70 6f 69 6e 74 20 61 6c 70 68 61 73 20 74 68 6f port proper per-point alphas tho 00000e40: 75 67 68 2c 20 73 65 65 20 74 68 65 20 6c 61 74 74 65 72 20 70 61 72 74 20 6f 66 20 74 68 69 73 ugh, see the latter part of this 00000e60: 20 70 61 67 65 20 66 6f 72 20 63 61 76 65 61 74 73 2e 3c 2f 70 3e 0d 0a 3c 70 3e 54 68 65 20 64 page for caveats.</p>..<p>The d 00000e80: 6f 77 6e 73 69 64 65 20 6f 66 20 74 68 69 73 20 61 70 70 72 6f 61 63 68 20 69 73 20 74 68 61 74 ownside of this approach is that 00000ea0: 20 73 70 6c 61 74 74 69 6e 67 20 70 6f 69 6e 74 73 20 63 61 6e 20 67 65 74 20 76 65 72 79 20 65 splatting points can get very e 00000ec0: 78 70 65 6e 73 69 76 65 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 73 70 65 63 75 6c 61 72 20 xpensive. For example, specular 00000ee0: 73 68 61 64 69 6e 67 20 6e 65 65 64 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 31 30 78 20 70 65 72 shading needs to be done 10x per 00000f00: 20 70 69 78 65 6c 20 65 76 65 72 79 20 66 72 61 6d 65 2e 20 54 68 65 72 65 20 61 72 65 20 61 6c pixel every frame. There are al 00000f20: 73 6f 20 73 69 78 20 33 32 2d 62 69 74 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 20 66 6f 72 20 so six 32-bit atomic writes for 00000f40: 65 61 63 68 20 76 69 73 69 62 6c 65 20 70 6f 69 6e 74 20 74 6f 20 61 63 74 75 61 6c 6c 79 20 64 each visible point to actually d 00000f60: 72 61 77 20 69 74 2e 3c 2f 70 3e 0d 0a 3c 68 33 20 69 64 3d 22 73 61 6d 70 6c 69 6e 67 2d 66 72 raw it.</p>..<h3 id="sampling-fr 00000f80: 6f 6d 2d 74 68 65 2d 66 75 74 75 72 65 22 3e 53 61 6d 70 6c 69 6e 67 20 66 72 6f 6d 20 74 68 65 om-the-future">Sampling from the 00000fa0: 20 66 75 74 75 72 65 3c 2f 68 33 3e 0d 0a 3c 70 3e 4e 6f 77 20 77 65 20 68 61 76 65 20 74 65 6d future</h3>..<p>Now we have tem 00000fc0: 70 6f 72 61 6c 20 73 75 70 65 72 20 73 61 6d 70 6c 69 6e 67 20 62 75 74 20 77 68 65 6e 20 74 68 poral super sampling but when th 00000fe0: 65 20 63 61 6d 65 72 61 20 6d 6f 76 65 73 20 77 65 20 67 65 74 20 61 72 74 69 66 61 63 74 73 20 e camera moves we get artifacts