<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>passivestar</title>
    <link>https://passivestar.xyz/</link>
    <description>Recent content on passivestar</description>
    <generator>Hugo -- 0.148.2</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 14 Oct 2025 10:00:00 +0000</lastBuildDate>
    <atom:link href="https://passivestar.xyz/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Instance scattering in blender</title>
      <link>https://passivestar.xyz/posts/instance-scattering-in-blender/</link>
      <pubDate>Tue, 14 Oct 2025 10:00:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/instance-scattering-in-blender/</guid>
      <description>&lt;p&gt;Blender 5.0 is coming to save us from the spaghetti hell!&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a ridiculously simple blender 5.0 node setup that scatters objects on the surface of a mesh inside of the volume of some other mesh:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/instance-scattering-in-blender/media/image-d6121d5a-lg.min.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;And here&amp;rsquo;s a cooler version that also scales instances near the edges and allows baking instance distribution before culling and scaling (we&amp;rsquo;ll get into all that in a sec):&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/instance-scattering-in-blender/media/image-5be74744-lg.min.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what that setup looks like in action:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accelerator keys in godot menus</title>
      <link>https://passivestar.xyz/posts/accelerator-keys-in-godot-menus/</link>
      <pubDate>Sat, 27 Sep 2025 10:00:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/accelerator-keys-in-godot-menus/</guid>
      <description>&lt;p&gt;One of the &lt;a href=&#34;https://bsky.app/profile/passivestar.bsky.social/post/3lsypohcves26&#34;&gt;coolest things&lt;/a&gt; about blender is that you can press digits and letters to activate menu buttons. In blender it&amp;rsquo;s very useful because of how many different tools there are in blender. Some time ago I also made &lt;a href=&#34;https://youtu.be/55Vju6LYL6M&#34;&gt;a blender addon&lt;/a&gt; to take this workflow even further by putting a bunch of common operations in menus.&lt;/p&gt;
&lt;p&gt;Godot doesn&amp;rsquo;t have nearly as many menus (natively at least), but being able to press keys in the existing ones can still speed up quite a few operations, which is why I made an addon to add this feature.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple height blend shader in godot</title>
      <link>https://passivestar.xyz/posts/simple-height-blend-shader/</link>
      <pubDate>Tue, 23 Sep 2025 10:00:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/simple-height-blend-shader/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a stupidly simple godot shader that blends between two PBR texture sets based on red vertex color channel and a height map:&lt;/p&gt;
&lt;div class=&#34;download-box&#34;&gt;
    &lt;a href=&#34;height_blend.zip&#34; download=&#34;height_blend.zip&#34; class=&#34;download-link&#34;&gt;
        &lt;svg class=&#34;download-icon&#34; width=&#34;20&#34; height=&#34;20&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
            &lt;path d=&#34;M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4&#34;&gt;&lt;/path&gt;
            &lt;polyline points=&#34;7,10 12,15 17,10&#34;&gt;&lt;/polyline&gt;
            &lt;line x1=&#34;12&#34; y1=&#34;15&#34; x2=&#34;12&#34; y2=&#34;3&#34;&gt;&lt;/line&gt;
        &lt;/svg&gt;
        &lt;span class=&#34;download-filename&#34;&gt;height_blend.zip&lt;/span&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;video width=&#34;100%&#34;  controls  autoplay loop&gt;
    &lt;source src=&#34;videos/heightblendshader.webm&#34; type=&#34;video/webm&#34;&gt;
    Your browser does not support the video tag.
&lt;/video&gt;
&lt;p&gt;This kind of blending is used in a lot of games. For example it&amp;rsquo;s what Overwatch does, most surfaces in that game blend between 2 PBR sets based on height and vertex mask to create variety:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reflection probe preview in godot</title>
      <link>https://passivestar.xyz/posts/reflection-probe-preview-in-godot/</link>
      <pubDate>Mon, 22 Sep 2025 08:00:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/reflection-probe-preview-in-godot/</guid>
      <description>&lt;p&gt;This simple addon draws a reflective sphere for the selected reflection probe:&lt;/p&gt;
&lt;video width=&#34;100%&#34;  controls  autoplay loop&gt;
    &lt;source src=&#34;videos/refprobepreview.webm&#34; type=&#34;video/webm&#34;&gt;
    Your browser does not support the video tag.
&lt;/video&gt;
&lt;p&gt;Been missing it a lot in godot because it can be hard to understand what&amp;rsquo;s going on with reflections in the scene when you don&amp;rsquo;t have clean reflective assets around. It allows to quickly see how different settings such as probe render distance and culling masks affect the final rendered reflection.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Single click resources</title>
      <link>https://passivestar.xyz/posts/single-click-resources/</link>
      <pubDate>Sun, 21 Sep 2025 10:00:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/single-click-resources/</guid>
      <description>&lt;p&gt;So I&amp;rsquo;ve been making a shitton of small experimental godot plugins, some of them proved useful, a lot of them didn&amp;rsquo;t, but those that I ended up using were never shared.&lt;/p&gt;
&lt;p&gt;This simple addon is one of those that stood the test of time.&lt;/p&gt;
&lt;p&gt;Just dropping code here for now because I may not have time to support and respond to GH issues. One day I might put everything I make in some kind of a single thing, but in the meantime this could help somebody and it may give people ideas for their own tools too.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Light beam shader in godot</title>
      <link>https://passivestar.xyz/posts/light-beam-shader-in-godot/</link>
      <pubDate>Fri, 12 Sep 2025 11:12:05 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/light-beam-shader-in-godot/</guid>
      <description>&lt;p&gt;So I was noclipping through &lt;code&gt;d1_canals_08&lt;/code&gt; in HL2 as one normally does on a saturday night when I saw this:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/light-beam-shader-in-godot/images/image-10.min.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;A nice sharp volumetric light that does a lot for the mood of the scene.&lt;/p&gt;
&lt;p&gt;Half Life 2 was released in 2004 so obviously it&amp;rsquo;s not &amp;ldquo;real&amp;rdquo; volumetric fog but just a picture of a light beam that rotates towards the camera using Z-Billboard technique. It&amp;rsquo;s only visible when you look at it from the side. When you look at the light straight on, it fades out to hide the fact that it&amp;rsquo;s a billboard.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Smart materials in ucupaint</title>
      <link>https://passivestar.xyz/posts/procedural-materials-in-ucupaint/</link>
      <pubDate>Mon, 08 Sep 2025 12:15:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/procedural-materials-in-ucupaint/</guid>
      <description>&lt;p&gt;I recently &lt;a href=&#34;https://github.com/ucupumar/ucupaint/pull/317&#34;&gt;added a button&lt;/a&gt; to ucupaint to make it possible to copy layers from an ucupaint material from blender asset library into the current ucupaint material:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/procedural-materials-in-ucupaint/images/image.min.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;Previously to do that you&amp;rsquo;d need to drop the material onto some temporary object and then copy layers from it manually.&lt;/p&gt;
&lt;p&gt;Now that copying layers from assets is an option, we can easily reuse procedural layer stacks, aka smart materials, between different ucupaint materials!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Texturing in blender with ucupaint</title>
      <link>https://passivestar.xyz/posts/texturing-in-blender-with-ucupaint/</link>
      <pubDate>Sat, 30 Aug 2025 12:15:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/texturing-in-blender-with-ucupaint/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/texturing-in-blender-with-ucupaint/images/canister.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;what-is-ucupaint&#34;&gt;What is ucupaint?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://extensions.blender.org/add-ons/ucupaint/&#34;&gt;Ucupaint&lt;/a&gt; is a free and open-source &lt;em&gt;layering&lt;/em&gt; and &lt;em&gt;baking&lt;/em&gt; addon for blender. It abstracts away the shader graph into a layer stack to allow texturing with layers rather than nodes:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/texturing-in-blender-with-ucupaint/images/image-29.min.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;The obvious advantage of layers over nodes when texturing in blender is you don&amp;rsquo;t need to manually connect channels between layers, which would be a nightmare with PBR materials where you have albedo, metallic, roughness, normal, displacement, etc. For example this is what the shader graph for that material looks like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Godot minimal theme 2.0</title>
      <link>https://passivestar.xyz/posts/godot-minimal-theme-2-0/</link>
      <pubDate>Fri, 27 Dec 2024 01:00:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/godot-minimal-theme-2-0/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://github.com/passivestar/godot-minimal-theme&#34;&gt;minimal theme&lt;/a&gt; has just undergone a &lt;em&gt;complete rewrite&lt;/em&gt;. It&amp;rsquo;s now dynamically generated just like godot&amp;rsquo;s own built-in theme, so it supports editor settings and fixes some issues that couldn&amp;rsquo;t be fixed before!&lt;/p&gt;
&lt;h2 id=&#34;why-minimal-theme&#34;&gt;Why minimal theme?&lt;/h2&gt;
&lt;p&gt;Minimal theme solves two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Removes excessive UI decorations.&lt;/li&gt;
&lt;li&gt;Adds whitespace where it helps readability.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By decorations I mean borders and lines, you can see them everywhere throughout the editor. One example that has a lot of them is the animation player (&lt;em&gt;top one is the built-in theme, bottom is minimal theme&lt;/em&gt;):&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to light scenes</title>
      <link>https://passivestar.xyz/posts/how-to-light-scenes/</link>
      <pubDate>Tue, 17 Dec 2024 20:15:00 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/how-to-light-scenes/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been toying with godot lightmapper and made some simple scenes:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/how-to-light-scenes/images/lm-balcony.jpg&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/how-to-light-scenes/images/lm-1.jpg&#34;&gt;&lt;/li&gt;
&lt;li&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://passivestar.xyz/posts/how-to-light-scenes/images/lm-2.jpg&#34;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some people asked how I do lighting.&lt;/p&gt;
&lt;p&gt;I add a &lt;strong&gt;LightmapGI&lt;/strong&gt; node and click bake!&lt;/p&gt;
&lt;h2 id=&#34;why-lightmaps&#34;&gt;Why lightmaps?&lt;/h2&gt;
&lt;p&gt;Lightmaps have been around &lt;a href=&#34;https://x.com/markiemusicpro/status/1611509790861307904&#34;&gt;ever since videogames became a thing&lt;/a&gt; and it seems they aren&amp;rsquo;t going anywhere anytime soon.&lt;/p&gt;
&lt;p&gt;Lumen is awesome! But it&amp;rsquo;s also expensive. And so is hardware raytracing. You can get an RTX card and enjoy realtime GI on your desktop but you can&amp;rsquo;t fit it into a small device like a standalone XR headset. It needs a lot of power and it runs hot. I did some gaming on a Zephyrus G15 laptop in bed (as a real gamer does) and it left literal burn marks on my legs that didn&amp;rsquo;t heal for weeks! A &amp;lsquo;gaming&amp;rsquo; laptop isn&amp;rsquo;t really a &lt;em&gt;&lt;strong&gt;lap&lt;/strong&gt;&lt;/em&gt;top. More like a tabletop. You probably don&amp;rsquo;t want that on your face either.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is it finally time to use godot?</title>
      <link>https://passivestar.xyz/posts/is-it-time-to-use-godot/</link>
      <pubDate>Sat, 14 Dec 2024 11:12:05 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/is-it-time-to-use-godot/</guid>
      <description>&lt;p&gt;Kinda. It depends.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s no best engine. Some engines fit your needs well and some don&amp;rsquo;t. I don&amp;rsquo;t know what you&amp;rsquo;re trying to make. People have been &lt;a href=&#34;https://youtu.be/n1Lon_Q2T18&#34;&gt;making games in godot&lt;/a&gt;. It&amp;rsquo;s possible. But you&amp;rsquo;re here reading a blog post about godot instead of making your game. Maybe you&amp;rsquo;re just looking for some more information. It&amp;rsquo;s fine.&lt;/p&gt;
&lt;p&gt;Since we&amp;rsquo;re both here I might as well tell you about my experience with godot so far.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo</title>
      <link>https://passivestar.xyz/posts/hugo/</link>
      <pubDate>Wed, 11 Dec 2024 13:46:47 +0000</pubDate>
      <guid>https://passivestar.xyz/posts/hugo/</guid>
      <description>&lt;p&gt;Webdevs have all the best shit!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a huge W to be able to grab a &lt;a href=&#34;https://gohugo.io/&#34;&gt;static site generator&lt;/a&gt; and make a simple blog in a matter of minutes. I&amp;rsquo;ve always liked that static generators have become popular in recent years but never tried one myself.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s just:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#cdd6f4;background-color:#1e1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; brew install hugo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; hugo new site my-site
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; &lt;span style=&#34;color:#89dceb&#34;&gt;cd&lt;/span&gt; my-site
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; hugo new content content/posts/post.md
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; hugo &lt;span style=&#34;color:#6c7086;font-style:italic&#34;&gt;# Build&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you run &lt;code&gt;hugo server&lt;/code&gt; it will watch changes to the content and refresh the page. You don&amp;rsquo;t need any fancy WYSIWYG markdown editor for preview because you can just open a text editor and browser side by side.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
