sigmoid.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A social space for people researching, working with, or just interested in AI!

Server stats:

583
active users

#opengl

3 posts3 participants0 posts today
argv minus one<p>Once upon a time in 1994, a <a href="https://mastodon.sdf.org/tags/Microsoft" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Microsoft</span></a> employee wanted a way to show off the new <a href="https://mastodon.sdf.org/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a> capabilities of <a href="https://mastodon.sdf.org/tags/Windows" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Windows</span></a> NT 3.5.</p><p>His solution: throw a competition among fellow employees to write an OpenGL-using screen saver! The best one would be shipped with Windows.</p><p>Someone from the marketing team saw the contestants, including the famous 3D Pipes, and ended the competition early by announcing that *all* of them would be included!</p><p><a href="https://mastodon.sdf.org/tags/RaymondChen" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RaymondChen</span></a> explains. <a href="https://devblogs.microsoft.com/oldnewthing/20240611-00/?p=109881" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">devblogs.microsoft.com/oldnewt</span><span class="invisible">hing/20240611-00/?p=109881</span></a></p><p><a href="https://mastodon.sdf.org/tags/retrocomputing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>retrocomputing</span></a></p>
McMartin<p>This week on the blog: The back half of my pseudo-historical tour of OpenGL, running from 2.0 through 4.6. My use case here is pretty simple, but even so it's enough to see even simple vertex and fragment shaders emerge and evolve over time.</p><p><a href="https://bumbershootsoft.wordpress.com/2025/10/04/upgrading-our-way-through-the-rest-of-opengl/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">bumbershootsoft.wordpress.com/</span><span class="invisible">2025/10/04/upgrading-our-way-through-the-rest-of-opengl/</span></a></p><p><a href="https://mastodon.gamedev.place/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a></p>
GDeveloper :archlinux: :cpp:<p>OpenGL in a Nutshell:</p><p>1-Definir Datos<br>2-Crear Buffer(Espacio en memoria)<br>3-Seleccionar Buffer<br>4-Pasar datos al Buffers<br>5-Interpretar los datos en el buffer <br>6-Definir y linkear Shaders<br>7- Repetir para cada objeto</p><p>Súper simplificación. </p><p><a href="https://mas.to/tags/gamedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gamedev</span></a> <a href="https://mas.to/tags/linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linux</span></a> <a href="https://mas.to/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a></p>
PitCrew<p>ICYMI: NVIDIA driver 580.95.05 released for Linux (latest recommended)</p><p><a href="https://mastodon.social/tags/CUDA" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CUDA</span></a> <a href="https://mastodon.social/tags/GeForce" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>GeForce</span></a> <a href="https://mastodon.social/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a> <a href="https://mastodon.social/tags/LinuxGaming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LinuxGaming</span></a> <a href="https://mastodon.social/tags/NVIDIA" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NVIDIA</span></a> <a href="https://mastodon.social/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a> <a href="https://mastodon.social/tags/PCGaming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PCGaming</span></a> <a href="https://mastodon.social/tags/RTXOn" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RTXOn</span></a> <a href="https://mastodon.social/tags/Vulkan" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vulkan</span></a></p><p><a href="https://www.gamingonlinux.com/2025/09/nvidia-driver-580-95-05-released-as-the-latest-recommended-for-linux" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">gamingonlinux.com/2025/09/nvid</span><span class="invisible">ia-driver-580-95-05-released-as-the-latest-recommended-for-linux</span></a></p>
Collabora<p><a href="https://floss.social/tags/XDC2025" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>XDC2025</span></a>: Faith Ekstrand explaining Nouveau's switch to <a href="https://floss.social/tags/Zink" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zink</span></a> for <a href="https://floss.social/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a>. Read more about that change here: <a href="https://col.la/hellozink" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">col.la/hellozink</span><span class="invisible"></span></a> </p><p><a href="https://floss.social/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a></p>
Collabora<p>Coming up next, Faith Ekstrand takes the stage again to look at all that has happened in Nouveau in the last year, including <a href="https://floss.social/tags/Vulkan" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vulkan</span></a> 1.4 support in <a href="https://floss.social/tags/NVK" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NVK</span></a>; Vulkan conformance on Maxwell, Pascal, Volta, and Kepler; and the switch to <a href="https://floss.social/tags/Zink" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Zink</span></a> for <a href="https://floss.social/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a>. Watch live here: <a href="https://live.video.tuwien.ac.at/watch?l=hsJNWfHvxZPnonNLxYNU5Z" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">live.video.tuwien.ac.at/watch?</span><span class="invisible">l=hsJNWfHvxZPnonNLxYNU5Z</span></a></p>
Collabora<p><a href="https://floss.social/tags/XDC2025" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>XDC2025</span></a>: Eric Smith presenting "Adding New YUV Formats to Mesa". Watch live here: <a href="https://live.video.tuwien.ac.at/watch?l=hsJNWfHvxZPnonNLxYNU5Z" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">live.video.tuwien.ac.at/watch?</span><span class="invisible">l=hsJNWfHvxZPnonNLxYNU5Z</span></a> <a href="https://floss.social/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a></p>
Collabora<p>Day 2 at <a href="https://floss.social/tags/XDC2025" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>XDC2025</span></a> in Vienna! Coming up at 14:30 UTC, Eric Smith dives into YUV texture formats, and how to add support for a new format in <a href="https://floss.social/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a>. Watch live here: <a href="https://live.video.tuwien.ac.at/watch?l=hsJNWfHvxZPnonNLxYNU5Z" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">live.video.tuwien.ac.at/watch?</span><span class="invisible">l=hsJNWfHvxZPnonNLxYNU5Z</span></a></p>
McMartin<p>This week on the blog: The first half of my pseudo-historical tour of OpenGL. OpenGL is a *deeply weird* library and it changed a lot over the years. I set up an extremely simple program that just draws a textured quad and then walk forward through the relevant changes that are introduced over the decades.</p><p>This split neatly into pre- and post-shaders being a thing, so this week I push OpenGL 1.x as far as it goes while staying in the main spec.</p><p><a href="https://bumbershootsoft.wordpress.com/2025/09/27/upgrading-our-way-through-opengl-1-x/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">bumbershootsoft.wordpress.com/</span><span class="invisible">2025/09/27/upgrading-our-way-through-opengl-1-x/</span></a></p><p><a href="https://mastodon.gamedev.place/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a></p>
PitCrew<p>ICYMI: GE-Proton10-17 Released</p><p><a href="https://mastodon.social/tags/LegionGoS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LegionGoS</span></a> <a href="https://mastodon.social/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a> <a href="https://mastodon.social/tags/LinuxGaming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LinuxGaming</span></a> <a href="https://mastodon.social/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a> <a href="https://mastodon.social/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.social/tags/OpenXR" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenXR</span></a> <a href="https://mastodon.social/tags/PCGaming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PCGaming</span></a> <a href="https://mastodon.social/tags/ProtonGE" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ProtonGE</span></a> <a href="https://mastodon.social/tags/Steam" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Steam</span></a> <a href="https://mastodon.social/tags/SteamDeck" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SteamDeck</span></a> <a href="https://mastodon.social/tags/SteamOS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SteamOS</span></a> <a href="https://mastodon.social/tags/SteamVR" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SteamVR</span></a> <a href="https://mastodon.social/tags/VirtualReality" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>VirtualReality</span></a> <a href="https://mastodon.social/tags/VR" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>VR</span></a> <a href="https://mastodon.social/tags/Vulkan" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vulkan</span></a></p><p><a href="https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/GE-Proton10-17" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/GloriousEggroll/pro</span><span class="invisible">ton-ge-custom/releases/tag/GE-Proton10-17</span></a></p>
Risto A. Paju<p>With 2D Apollonian gaskets, it's easy to build arbitrary initial configurations. Simply picking 3 random points means you have to solve for 3 radii to make a kissing setup. Since there are exactly 3 distances between the points, this makes a basic linear system. But not so in 3D: you have 4 points and 4 radii, but 6 different distances, so a linear solution won't cut it. You could start with 3 kissing spheres using the 2D logic, but then you can't put the 4th point just anywhere.</p><p>I didn't bother with the messy quadratic system, because there's an easier way: take the symmetric tetrahedral config and deform it using an inversion. Yep, the same tool that's already the bread and butter of gasket-weaving. What's more, we can build the symmetric gasket first and then deform the whole thing. Inversion preserves spheres as spheres and maintains their kissing relations, it doesn't care how many there are.</p><p>In other words, the order doesn't matter with inversions. I've used this trick years ago in some 2D inversion demos to simplify things, and this 3D also benefits hugely from it. Besides the problem of initial config, 3D gaskets also have a speed issue due to deduplication (explained in an earlier post). The inversions are very fast as they can be parallelized, and this also applies to the deformations. So it's nice that we need not rebuild the gasket again for every config, we can just deform the same thing again.</p><p><a href="https://mathstodon.xyz/tags/apollonianspheres" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apollonianspheres</span></a> <a href="https://mathstodon.xyz/tags/apolloniangasket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniangasket</span></a> <a href="https://mathstodon.xyz/tags/gasketweaving" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gasketweaving</span></a> <a href="https://mathstodon.xyz/tags/iteratedfunctionsystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iteratedfunctionsystem</span></a> <a href="https://mathstodon.xyz/tags/inversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>inversion</span></a> <a href="https://mathstodon.xyz/tags/sphereinversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>sphereinversion</span></a> <a href="https://mathstodon.xyz/tags/geometricart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometricart</span></a> <a href="https://mathstodon.xyz/tags/3dgraphics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>3dgraphics</span></a> <a href="https://mathstodon.xyz/tags/digitalsculpture" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>digitalsculpture</span></a> <a href="https://mathstodon.xyz/tags/pythoncode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythoncode</span></a> <a href="https://mathstodon.xyz/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mathstodon.xyz/tags/algorithmicart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorithmicart</span></a> <a href="https://mathstodon.xyz/tags/algorist" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorist</span></a> <a href="https://mathstodon.xyz/tags/mathart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mathart</span></a> <a href="https://mathstodon.xyz/tags/laskutaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>laskutaide</span></a> <a href="https://mathstodon.xyz/tags/ittaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ittaide</span></a> <a href="https://mathstodon.xyz/tags/kuavataide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kuavataide</span></a> <a href="https://mathstodon.xyz/tags/iterati" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iterati</span></a></p>
Risto A. Paju<p>Making Apollonian gaskets usually follows a key rule of iterated function systems: each iteration should make the thing smaller. With inversions, this means going from the outside to the inside of inverting circles.</p><p>However, it's possible to make valid gaskets using a lopsided configuration, where the initial circles are bunched up on one side. In that case, the first iteration has to make a larger circle to fill the opposite side. This means an inversion from the inside to outside. But we can also think of this as turning the inversion circle inside out.</p><p>This turns out nice both visually and conceptually. An inversion circle is essentially a curved mirror, and we can make a smooth transition from the convex to the concave by passing through the flat stage. I wasn't sure if this would work cleanly in this simple demo, since the flat mirror means a circle with infinite radius; fortunately, the finite time steps mean we can skip over the flat point.</p><p>As for IFS rules, the system as a whole is contractive, thanks to the other circles that are now more convex.</p><p>The second part gives another look at such initially lopsided gaskets.</p><p><a href="https://mathstodon.xyz/tags/apolloniancircles" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniancircles</span></a> <a href="https://mathstodon.xyz/tags/apolloniangasket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniangasket</span></a> <a href="https://mathstodon.xyz/tags/iteratedfunctionsystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iteratedfunctionsystem</span></a> <a href="https://mathstodon.xyz/tags/inversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>inversion</span></a> <a href="https://mathstodon.xyz/tags/circleinversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>circleinversion</span></a> <a href="https://mathstodon.xyz/tags/geometricart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometricart</span></a> <a href="https://mathstodon.xyz/tags/fractal" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractal</span></a> <a href="https://mathstodon.xyz/tags/fractalart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractalart</span></a> <a href="https://mathstodon.xyz/tags/pythoncode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythoncode</span></a> <a href="https://mathstodon.xyz/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mathstodon.xyz/tags/algorithmicart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorithmicart</span></a> <a href="https://mathstodon.xyz/tags/algorist" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorist</span></a> <a href="https://mathstodon.xyz/tags/mathart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mathart</span></a> <a href="https://mathstodon.xyz/tags/laskutaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>laskutaide</span></a> <a href="https://mathstodon.xyz/tags/ittaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ittaide</span></a> <a href="https://mathstodon.xyz/tags/kuavataide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kuavataide</span></a> <a href="https://mathstodon.xyz/tags/iterati" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iterati</span></a></p>
PitCrew<p>ICYMI: GE-Proton10-16</p><p><a href="https://mastodon.social/tags/LegionGoS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LegionGoS</span></a> <a href="https://mastodon.social/tags/Linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Linux</span></a> <a href="https://mastodon.social/tags/LinuxGaming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>LinuxGaming</span></a> <a href="https://mastodon.social/tags/OpenGL" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenGL</span></a> <a href="https://mastodon.social/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.social/tags/OpenXR" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenXR</span></a> <a href="https://mastodon.social/tags/PCGaming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PCGaming</span></a> <a href="https://mastodon.social/tags/ProtonGE" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ProtonGE</span></a> <a href="https://mastodon.social/tags/Steam" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Steam</span></a> <a href="https://mastodon.social/tags/SteamDeck" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SteamDeck</span></a> <a href="https://mastodon.social/tags/SteamOS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SteamOS</span></a> <a href="https://mastodon.social/tags/SteamVR" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SteamVR</span></a> <a href="https://mastodon.social/tags/VirtualReality" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>VirtualReality</span></a> <a href="https://mastodon.social/tags/VR" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>VR</span></a> <a href="https://mastodon.social/tags/Vulkan" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vulkan</span></a></p><p><a href="https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/GE-Proton10-16" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/GloriousEggroll/pro</span><span class="invisible">ton-ge-custom/releases/tag/GE-Proton10-16</span></a></p>
Risto A. Paju<p>Another look at Apollonian spheres, cutting out the top half and showing a few iteration steps.</p><p><a href="https://mathstodon.xyz/tags/apollonianspheres" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apollonianspheres</span></a> <a href="https://mathstodon.xyz/tags/apolloniangasket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniangasket</span></a> <a href="https://mathstodon.xyz/tags/iteratedfunctionsystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iteratedfunctionsystem</span></a> <a href="https://mathstodon.xyz/tags/inversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>inversion</span></a> <a href="https://mathstodon.xyz/tags/sphereinversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>sphereinversion</span></a> <a href="https://mathstodon.xyz/tags/geometricart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometricart</span></a> <a href="https://mathstodon.xyz/tags/3dgraphics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>3dgraphics</span></a> <a href="https://mathstodon.xyz/tags/digitalsculpture" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>digitalsculpture</span></a> <a href="https://mathstodon.xyz/tags/pythoncode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythoncode</span></a> <a href="https://mathstodon.xyz/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mathstodon.xyz/tags/algorithmicart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorithmicart</span></a> <a href="https://mathstodon.xyz/tags/algorist" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorist</span></a> <a href="https://mathstodon.xyz/tags/mathart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mathart</span></a> <a href="https://mathstodon.xyz/tags/laskutaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>laskutaide</span></a> <a href="https://mathstodon.xyz/tags/ittaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ittaide</span></a> <a href="https://mathstodon.xyz/tags/kuavataide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kuavataide</span></a> <a href="https://mathstodon.xyz/tags/iterati" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iterati</span></a></p>
ActualCannibalPanda<p>Finally wrangled <a href="https://mastodon.gamedev.place/tags/tinygltf" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>tinygltf</span></a> into loading <a href="https://mastodon.gamedev.place/tags/gltf" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gltf</span></a> files and I managed to get things rendering. Now can worry less about added model data as code. Now to make the previous scene with gltf files instead.<br><a href="https://mastodon.gamedev.place/tags/indiedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>indiedev</span></a> <a href="https://mastodon.gamedev.place/tags/gamedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gamedev</span></a> <a href="https://mastodon.gamedev.place/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mastodon.gamedev.place/tags/cpp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cpp</span></a></p>
ActualCannibalPanda<p>So I have a maybe new project to work on, codenamed "Paradox". Gonna be one of those games that deals with portals and space manipulation. Writing it in <a href="https://mastodon.gamedev.place/tags/cpp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cpp</span></a> and <a href="https://mastodon.gamedev.place/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <br><a href="https://mastodon.gamedev.place/tags/indiedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>indiedev</span></a> <a href="https://mastodon.gamedev.place/tags/gamedev" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>gamedev</span></a></p>
Risto A. Paju<p>Taking my lastest Apollonian gasket code from 2D to 3D was quite straightforward in principle, though there were a few kinks in the road. A particular difference between 2D and 3D gaskets is that in 3D, the inversion spheres overlap, which can create duplicate spheres.</p><p>Viewing detailed 3D structures isn't trivial either. We can only really see in 2D, as one dimension is taken up by the ray of light. Looking from outside, I wouldn't guess this blob contains over 10k spheres, so I blew it up for this clip.</p><p>The sheer amount of balls is also heavy on the drawing side, so I used my low-poly "sprites" where each ball is drawn by a geometry shader from a single input point. The low-poly aspect is quite clear in the largest spheres, but I think it's OK for this math demo.</p><p><a href="https://mathstodon.xyz/tags/apollonianspheres" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apollonianspheres</span></a> <a href="https://mathstodon.xyz/tags/apolloniangasket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniangasket</span></a> <a href="https://mathstodon.xyz/tags/iteratedfunctionsystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iteratedfunctionsystem</span></a> <a href="https://mathstodon.xyz/tags/inversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>inversion</span></a> <a href="https://mathstodon.xyz/tags/sphereinversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>sphereinversion</span></a> <a href="https://mathstodon.xyz/tags/geometricart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometricart</span></a> <a href="https://mathstodon.xyz/tags/3dgraphics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>3dgraphics</span></a> <a href="https://mathstodon.xyz/tags/digitalsculpture" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>digitalsculpture</span></a> <a href="https://mathstodon.xyz/tags/pythoncode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythoncode</span></a> <a href="https://mathstodon.xyz/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mathstodon.xyz/tags/geometryshader" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometryshader</span></a> <a href="https://mathstodon.xyz/tags/algorithmicart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorithmicart</span></a> <a href="https://mathstodon.xyz/tags/algorist" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorist</span></a> <a href="https://mathstodon.xyz/tags/mathart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mathart</span></a> <a href="https://mathstodon.xyz/tags/laskutaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>laskutaide</span></a> <a href="https://mathstodon.xyz/tags/ittaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ittaide</span></a> <a href="https://mathstodon.xyz/tags/kuavataide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kuavataide</span></a> <a href="https://mathstodon.xyz/tags/iterati" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iterati</span></a></p>
Risto A. Paju<p>As I keep studying the Apollonian gasket, I've now implemented the inversion approach on the CPU for finding the circle centres and radii. Now I can generate these arrays of eyes much faster, as the inversion is easier to parallelize. It's so fast that the bottleneck is now in the drawing stage.</p><p>The colours denote a kind of family tree of inversions: the 4 initial circles each have their own colour, and their inversion images retain the colour. The outer circle is not shown here, but its descendants show the colour that's distinct from the other 3.</p><p>I still needed something other than inversions for setting up the initial quartet, but I wanted find my own solution instead of relying on Descartes' theorem. The theorem actually comes in two parts: Rene's original theorem only deals with the radii, while the complex quadratic formula for finding the circle positions was only developed in the late 1990s.</p><p>Well, I found an alternative solution to the latter part, and it reduces to a pair of linear equations. It isn't particularly fast to compute, but I think it's easier to understand — it's basically junior high school math. In fact, it seems so basic that I can't be the first one to discover it.</p><p><a href="https://mathstodon.xyz/tags/eyecandy" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>eyecandy</span></a> <a href="https://mathstodon.xyz/tags/apolloniancircles" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniancircles</span></a> <a href="https://mathstodon.xyz/tags/apolloniangasket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniangasket</span></a> <a href="https://mathstodon.xyz/tags/iteratedfunctionsystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iteratedfunctionsystem</span></a> <a href="https://mathstodon.xyz/tags/inversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>inversion</span></a> <a href="https://mathstodon.xyz/tags/circleinversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>circleinversion</span></a> <a href="https://mathstodon.xyz/tags/geometricart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometricart</span></a> <a href="https://mathstodon.xyz/tags/fractal" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractal</span></a> <a href="https://mathstodon.xyz/tags/fractalart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractalart</span></a> <a href="https://mathstodon.xyz/tags/pythoncode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythoncode</span></a> <a href="https://mathstodon.xyz/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mathstodon.xyz/tags/algorithmicart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorithmicart</span></a> <a href="https://mathstodon.xyz/tags/algorist" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorist</span></a> <a href="https://mathstodon.xyz/tags/mathart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mathart</span></a> <a href="https://mathstodon.xyz/tags/laskutaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>laskutaide</span></a> <a href="https://mathstodon.xyz/tags/ittaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ittaide</span></a> <a href="https://mathstodon.xyz/tags/kuavataide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kuavataide</span></a> <a href="https://mathstodon.xyz/tags/iterati" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iterati</span></a></p>
Risto A. Paju<p>2D circle inversion fractals on the spherical surface. This was a fun offshoot of my recent Apollonian endeavours, again using the Riemann sphere mapping to go from 3D to 2D for the iterations.</p><p>The inversion circle centres come from a tetrakis hexahedron and a triakis icosahedron, so the circles form approximations of a truncated octahedron and a truncated dodecahedron.</p><p><a href="https://mathstodon.xyz/tags/apolloniancircles" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniancircles</span></a> <a href="https://mathstodon.xyz/tags/apolloniangasket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniangasket</span></a> <a href="https://mathstodon.xyz/tags/inversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>inversion</span></a> <a href="https://mathstodon.xyz/tags/circleinversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>circleinversion</span></a> <a href="https://mathstodon.xyz/tags/riemannsphere" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>riemannsphere</span></a> <a href="https://mathstodon.xyz/tags/geometricart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometricart</span></a> <a href="https://mathstodon.xyz/tags/fractal" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractal</span></a> <a href="https://mathstodon.xyz/tags/fractalart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractalart</span></a> <a href="https://mathstodon.xyz/tags/pythoncode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythoncode</span></a> <a href="https://mathstodon.xyz/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mathstodon.xyz/tags/algorithmicart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorithmicart</span></a> <a href="https://mathstodon.xyz/tags/algorist" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorist</span></a> <a href="https://mathstodon.xyz/tags/mathart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mathart</span></a> <a href="https://mathstodon.xyz/tags/laskutaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>laskutaide</span></a> <a href="https://mathstodon.xyz/tags/ittaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ittaide</span></a> <a href="https://mathstodon.xyz/tags/kuavataide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kuavataide</span></a> <a href="https://mathstodon.xyz/tags/iterati" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iterati</span></a></p>
Risto A. Paju<p>In the last post, I noted how the incremental iterates of the Apollonian gasket look like the output of an iterated function system. There's indeed such an IFS, and it's a system of circle inversions. It's how I've made a lot of fractal art over the years, but I've usually started directly with the inversion circles/spheres themselves.</p><p>Now that I've worked with the "classical" approach to the Apollonian gasket, I thought I'd translate a given Apollonian setup to the language of inversions. It was a fun little exercise and the math was surprisingly simple, just playing with vectors and solving linear equations. I then used my old inversion shaders from the late 2010s to show the results.</p><p>The first part shows it all together: the 3 largest coloured circles are the initial Apollonian circles, and the 4 inversion circles can be seen in the darkest grey in the background. (The initial Apollonian circles also include a 4th one, but here we can only see it as the perimeter of the coloured area.)</p><p>The second part uses a pointillist process, and it shows essentially the incremental iterates of the previous post. The inversion circles are not seen, but the Apollonian circles are all there as the empty space.</p><p><a href="https://mathstodon.xyz/tags/apolloniancircles" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniancircles</span></a> <a href="https://mathstodon.xyz/tags/apolloniangasket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>apolloniangasket</span></a> <a href="https://mathstodon.xyz/tags/iteratedfunctionsystem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iteratedfunctionsystem</span></a> <a href="https://mathstodon.xyz/tags/inversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>inversion</span></a> <a href="https://mathstodon.xyz/tags/circleinversion" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>circleinversion</span></a> <a href="https://mathstodon.xyz/tags/geometricart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>geometricart</span></a> <a href="https://mathstodon.xyz/tags/fractal" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractal</span></a> <a href="https://mathstodon.xyz/tags/fractalart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>fractalart</span></a> <a href="https://mathstodon.xyz/tags/pythoncode" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pythoncode</span></a> <a href="https://mathstodon.xyz/tags/opengl" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>opengl</span></a> <a href="https://mathstodon.xyz/tags/algorithmicart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorithmicart</span></a> <a href="https://mathstodon.xyz/tags/algorist" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>algorist</span></a> <a href="https://mathstodon.xyz/tags/mathart" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>mathart</span></a> <a href="https://mathstodon.xyz/tags/laskutaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>laskutaide</span></a> <a href="https://mathstodon.xyz/tags/ittaide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ittaide</span></a> <a href="https://mathstodon.xyz/tags/kuavataide" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>kuavataide</span></a> <a href="https://mathstodon.xyz/tags/iterati" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>iterati</span></a></p>