<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Renderling</title>
    <link>https://staging.renderling.xyz</link>
    <description>News and articles from renderling.xyz</description>
    <language>en</language>
    <lastBuildDate>Sun, 22 Mar 2026 12:00:00 +0000</lastBuildDate>
    <atom:link href="https://staging.renderling.xyz/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Renderling News - Sun 22 Mar, 2026</title>
      <link>https://staging.renderling.xyz/news/index.html#sun-22-mar-2026</link>
      <guid>https://staging.renderling.xyz/news/index.html#sun-22-mar-2026</guid>
      <pubDate>Sun, 22 Mar 2026 12:00:00 +0000</pubDate>
      <description><![CDATA[<h3><code>wgsl-rs</code> first milestone almost complete</h3>
<p>I've been working hard on the first milestone of <code>wgsl-rs</code>, which is essentially to get it feature complete.
All WGSL vocabulary is now supported (WGSL &quot;std&quot; library including built-in functions, types, texture sampling),
excluding extensions.</p>
<p>The last step is including exhaustive roundtrip tests for builtins to ensure the CPU runtime is coherent with the GPU.</p>
<h3>New revamped 2d UI stuff</h3>
<p><a href="https://github.com/schell/renderling/pull/223">I've revamped the 2d renderer</a>.
It now has its own shaders, which are much better fit for purpose.</p>
<p>Next on the roadmap for the 2d renderer are events, hit testing, sprite sheet animations and 9-slice buttons.</p>
<h3>Other accomplishments</h3>
<ul>
<li><a href="https://github.com/schell/renderling/pull/224">Welcomed a contribution from <strong>m0ppers</strong> for GLTF animations</a>, thank you 🙇!
<ul>
<li><a href="https://github.com/schell/renderling/pull/217">Original PR is here</a></li>
</ul>
</li>
<li><a href="https://github.com/schell/renderling/pull/219">Added a global ambient lighting term to the PBR shader</a></li>
<li>improved formatting and CI cache situation</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Renderling News - Thu 5 March, 2026</title>
      <link>https://staging.renderling.xyz/news/index.html#thu-5-march-2026</link>
      <guid>https://staging.renderling.xyz/news/index.html#thu-5-march-2026</guid>
      <pubDate>Thu, 05 Mar 2026 12:00:00 +0000</pubDate>
      <description><![CDATA[<h3>Getting close with [<code>wgsl-rs</code>], significant work on [<code>crabslab</code>] adaptation</h3>
<h4>[<code>wgsl-rs</code>]</h4>
<p>I've almost wrapped up the initial build out of [<code>wgsl-rs</code>].
The last bit is the derivative builtins (<code>dpdx</code>, <code>dpdy</code>, <code>fwidth</code>, etc.) and
the <code>discard</code> statement.</p>
<p>I really don't know what I'm going to do for the CPU semantics of the <code>discard</code> statement yet.
Maybe something like <code>return Default::default()</code>? That <em>might work</em>?</p>
<p>Anyway - I took a break from furiously pawing at my keyboard to produce code this weekend to
furiously paw at my keyboard to write an article introducing the library.</p>
<p><a href="/content/articles/introducing-wgsl-rs.html">Please check out the article introducing <code>wgsl-rs</code></a>.</p>
<h4>[<code>crabslab</code>]</h4>
<p>Both [<code>crabslab</code>] and [<code>craballoc</code>] are successfully using [<code>wgsl-rs</code>] in a branch.
Once [<code>wgsl-rs</code>] is on crates.io as a beta release, I'll do beta releases of those as well.</p>
<p>...</p>
<p>That's all the news that's fit to print :)</p>
<p>🙇☕</p>
]]></description>
    </item>
    <item>
      <title>Renderling News - Wed 11 Feb, 2026</title>
      <link>https://staging.renderling.xyz/news/index.html#wed-11-feb-2026</link>
      <guid>https://staging.renderling.xyz/news/index.html#wed-11-feb-2026</guid>
      <pubDate>Wed, 11 Feb 2026 12:00:00 +0000</pubDate>
      <description><![CDATA[<h3>2026 NLnet Funding is Official</h3>
<p>The Memorandum of Understanding for the
<a href="https://nlnet.nl/project/Renderling-Ecosystem/">Renderling Ecosystem</a> project
has been signed with <a href="https://nlnet.nl">NLnet</a> under the NGI0 Commons Fund.
This makes the second year of NLnet funding official, and I'm excited to get
started on the work ahead.</p>
<h3>A New Direction: Embracing WGSL</h3>
<p>The biggest change in this round of work is that Renderling will be moving away
from Rust-GPU and toward tighter integration with WebGPU and WGSL.</p>
<p>To support this, I've started work on <a href="https://github.com/schell/wgsl-rs"><code>wgsl-rs</code></a>,
a procedural macro crate that lets you write WGSL shaders in a subset of Rust.
Code written with <code>wgsl-rs</code> runs on the CPU in Rust <em>and</em> on the GPU via
generated WGSL — same types, same logic, fully testable. It works on stable
Rust, produces human-readable WGSL output, needs no custom toolchains and even
generates <code>wgpu</code> linkage for you!</p>
<p>The funded milestones will take <code>wgsl-rs</code> to a beta release on crates.io, then
adapt <code>crabslab</code> and <code>craballoc</code> to work with it, and finally rewrite
Renderling's internals on the new stack.</p>
<h3>GPU ECS: <code>podecs</code></h3>
<p>Part of the funded work is a new crate called <code>podecs</code> — a GPU-accelerated
Entity Component System where components are plain old data defined with
<code>wgsl-rs</code>, stored in GPU-accessible slabs, and systems run as compute shaders.
This is the piece that makes massively parallel scene management possible and
lays the groundwork for what comes next.</p>
<h3>The Road to Global Illumination</h3>
<p>The second half of the project focuses on rendering. The plan is to build a
GPU ray tracer first, validate it against a reference image suite, and then
adapt it for real-time performance using techniques like wavefront path tracing
and raymarching. The end goal is real-time global illumination integrated with
Renderling's existing lighting system.</p>
<h3>Rend3 Compatibility</h3>
<p><a href="https://github.com/BVE-Reborn/rend3">Rend3</a> has been an important renderer
in the Rust ecosystem, and there are projects out there that depend on it.
Part of this funded work includes designing and implementing an API
compatibility layer for Rend3 users, along with a migration guide and example
programs. If you have an existing Rend3 project, Renderling aims to be a
viable path forward.</p>
<h3>What's Next</h3>
<p>I'll be working through these milestones over the course of the year and
posting updates here as things progress. If you're interested in contributing
or just following along, check out the repos:</p>
<ul>
<li><a href="https://github.com/schell/wgsl-rs"><code>wgsl-rs</code></a></li>
<li><a href="https://github.com/schell/renderling"><code>renderling</code></a></li>
<li><a href="https://github.com/schell/crabslab"><code>crabslab</code></a></li>
</ul>
]]></description>
    </item>
    <item>
      <title>Renderling News - Sun 30 Nov, 2025</title>
      <link>https://staging.renderling.xyz/news/index.html#sun-30-nov-2025</link>
      <guid>https://staging.renderling.xyz/news/index.html#sun-30-nov-2025</guid>
      <pubDate>Sun, 30 Nov 2025 12:00:00 +0000</pubDate>
      <description><![CDATA[<p>The past two months I've been pretty slammed with my new job and family stuff,
but I've still been working on this project, albeit a bit sporadically.</p>
<h3><code>crabslab</code> changes</h3>
<p>I've managed to get a large PR finished on <a href="https://github.com/schell/crabslab/pull/5"><code>crabslab</code></a>
that provides synchronization of values changed by shaders on the GPU back to
their CPU caches.</p>
<p>This change has been a long time coming, and it unlocks a lot of potential for
interesting changes in Renderling, and beyond.</p>
<p>Specifically these changes help in any situation where a shader computes some
data that then gets used on the CPU.
And it does that with a minimal number of writes to and from the GPU.</p>
<p>This is all part of a grand scheme to blur the lines between GPU and CPU, and
make GPU programming easier, which is essentially the main goal behind
next year's worth of Renderling work.</p>
<h3>2026 NLNet project</h3>
<p>Renderling was selected for another year of funding by
<a href="https://nlnet.nl/project/Renderling-Ecosystem/">NLnet</a>.
I'm currently working on the project plan and we have double the funding of
last year, which means I'll be able to take on paid contributors and
get more accomplished in the same amount of time.</p>
<p>Next year's work is focusing on the ecosystem and then riding that rising tide
towards global illumination.</p>
<p>Global illumination is a very lofty goal, especially for a renderer that targets
the web, but I think we can get there with some key tradeoffs.</p>
]]></description>
    </item>
    <item>
      <title>Renderling News - Wed 24 September, 2025</title>
      <link>https://staging.renderling.xyz/news/index.html#wed-24-september-2025</link>
      <guid>https://staging.renderling.xyz/news/index.html#wed-24-september-2025</guid>
      <pubDate>Wed, 24 Sep 2025 12:00:00 +0000</pubDate>
      <description><![CDATA[<p>I've pushed the <a href="/manual/lighting.html">lighting chapter of the manual</a> live.</p>
<p>Part of this was fixing a bug in image based lighting regarding bindgroup invalidation.</p>
]]></description>
    </item>
    <item>
      <title>Renderling News - Sun 21 September, 2025</title>
      <link>https://staging.renderling.xyz/news/index.html#sun-21-september-2025</link>
      <guid>https://staging.renderling.xyz/news/index.html#sun-21-september-2025</guid>
      <pubDate>Sun, 21 Sep 2025 12:00:00 +0000</pubDate>
      <description><![CDATA[<p>I've done a rework of the API, greatly improved the documentation and created a user's manual
full of examples.
See the <a href="https://github.com/schell/renderling/pull/199">PR for the API change and initial manual w/ examples here</a>.</p>
<p>I've also made somewhat drastic website changes:</p>
<ul>
<li>The <a href="/manual/index.html">manual</a> is now hosted here!</li>
<li>The <a href="/docs/renderling/index.html">docs</a> are now hosted here!</li>
<li>The devlog is deprecated in favor of this news page.</li>
</ul>
<h3>The devlog is no more</h3>
<p>I'm moving away from the super long devlog format to something that hopefully is a bit
more focused.</p>
<p>Now the devlog is broken up into two &quot;things&quot;:</p>
<ol>
<li>Small news blurbs on this &quot;news&quot; page.</li>
<li>Long-form stream of consciousness &quot;devlog&quot; articles for specific features that might
span multiple days, weeks, or months.</li>
</ol>
<h4>why</h4>
<p>The devlog was getting huge, and it's a bit too chaotic.
Now I'll be live-blogging feature development in specific articles, like I did for
<a href="/articles/live/light_tiling.html">Light Tiling, Live</a>.
I'm hoping this does a better job of keeping the devlogs on-topic instead of being a big jumble
of different things.</p>
<p>All other blurbs are news, so they can live on the news page.
I'm just trying to stay organized as this project grows.</p>
<p>But - the old devlog will stay where it was, at <a href="/devlog/index.html">devlog</a>, for posterity and so the links still work.</p>
<h3>User's manual</h3>
<p><a href="/manual/index.html">Check out the manual here</a>.</p>
<p>The manual covers the basics, but lacks lighting examples.</p>
<p>Obviously it's a work in progress.</p>
<p>I'll be making sure that it's complete after getting it online.
Even in its incomplete state, it has lots of workable, tested examples in it,
and I hope it helps folks get up and running with the library.</p>
<h3>Documentation updates</h3>
<p>There's a <strong>ton</strong> more documentation coverage. I did a big audit of the current documentation
and added more where needed as well as revamped the existing docs.</p>
<p>The latest docs are now hosted <a href="./docs">here at /docs</a>, due to the fact that Renderling
depends on a not yet released version of <code>spirv-std</code>, which the Rust-GPU group is still
working on releasing.</p>
<h3>API changes</h3>
<p><strong>I've removed the <code>crabslab::Id</code> and <code>craballoc::Hybrid*</code> types from the public API.</strong></p>
<p>I figured that it shouldn't be necessary for users to understand anything about slabs and
descriptors.</p>
<p><strong>Builder patterns</strong></p>
<p>Now all the various resources (<code>Primitive</code>, <code>Material</code>, <code>Vertices</code> etc) adhere to a builder
pattern for configuration and updates.</p>
<p><strong><code>Skybox</code> is now separate from <code>Ibl</code>.</strong></p>
<p>Up until this point, if you wanted to render a skybox, that skybox would also perform
image based lighting automatically.
I decided to decouple these now, as there are valid situations where you may not want
IBL, but do want a skybox.</p>
]]></description>
    </item>
    <item>
      <title>Year in Review - 2024</title>
      <link>https://staging.renderling.xyz/articles/year_in_review_2024.html</link>
      <guid>https://staging.renderling.xyz/articles/year_in_review_2024.html</guid>
      <pubDate>Thu, 09 Jan 2025 12:00:00 +0000</pubDate>
      <description><![CDATA[<h1>Year in Review - 2024</h1>
<p><em>What went wrong and what went right for Renderling in 2024.
Written 9 Jan, 2025</em></p>
<!-- 

My private stuff used for editing. 
Pay no attention to the man behind the curtain.

👍🤞🍖🚧🔗🤦🙇☕

...⏱️

😭😈😉😊

<video controls width="100%">
  <source src="" type="video/mp4" />
  Backup text.
</video>


<div class="images-horizontal">
    <div class="image">
        <label>Label</label>
        <img class="pixelated" width="100" src="" />
    </div>
</div>

<div class="image">
    <label>Label</label>
    <img
        width="750vw"
        src=""
        alt="" />
</div>
-->
<p>o/ Hi y'all!</p>
<p>Welcome to the Renderling wrap article for 2024. I'm hoping to make writing this article
a tradition.</p>
<p>This project started with its first commit in Sep 26, 2022 - so I've been
working on this for roughly two years as a side project, after my day job and between
raising two kids.</p>
<p>Without looking at the log of work, which is simply my list of closed PRs on GitHub,
I can already tell you that I feel like I've accomplished a lot for Renderling this year!</p>
<h2>Sponsorships 💰</h2>
<ul>
<li>
<p><a href="https://nlnet.nl/project/Renderling/">nlnet sponsorship</a></p>
<p>This has been amazing, and has really changed my perspective on open source. The
program has really been a guiding force for Renderling, and just knowing that people care
about the outcome enough to invest in the project makes the overall quality of the
software improve. Not to mention the fact that the money helps at a very basic level.
I've already applied for 2025, 🤞. Thank you, nlnet!</p>
<p><a href="https://nlnet.nl"><img src="https://nlnet.nl/logo/banner.png" alt="NLnet foundation logo" width="150" /></a>
<a href="https://nlnet.nl/core"><img style="margin-left: 1em;" src="https://nlnet.nl/image/logos/NGI0_tag.svg" alt="NGI Zero Logo" width="150" /></a></p>
</li>
<li>
<p><a href="https://secondhalf.games/">Second Half Games sponsorship</a></p>
<p>And more specifically Lucien from Second Half ;)</p>
<p>This sponsorship spun out of the work I was doing to unblock Renderling's shaders.</p>
<p>You see, <a href="https://github.com/gfx-rs/wgpu"><code>wgpu</code></a> is a cross-platform graphics layer
that Renderling sits on top of. This layer abstracts over the popular graphics libraries like
DirectX, Vulkan, Metal, OpenGL, WebGL and WebGPU. It allows Renderling to target all platforms
without too much platform-specific code.</p>
<p>But it doesn't support all shader languages equally, and <code>wgpu</code>'s SPIR-V support was lacking
some features - notably support for atomics.</p>
<p>Now this is important for Renderling because Renderling's shaders are all written in Rust,
which then get compiled into SPIR-V, and atomics are an important building block when writing
shaders. Oddly enough I've actually managed to avoid any use of atomics to this point, but
that's changing very soon.</p>
<p>Anyway, long story short - Lucien saw that I was tackling atomic support in the SPIR-V frontend
of <code>wgpu</code>'s shader translator and sponsored me to help fast-track that work, and I'm happy to
say that <a href="https://github.com/gfx-rs/wgpu/issues/4489">the work is done</a>!</p>
<p>Thank you, Lucien!</p>
<p>And if you haven't checked out Second Half's game,
<a href="https://store.steampowered.com/app/2660180/MEANWHILE_IN_SECTOR_80/">&quot;Meanwhile in Sector 80&quot;</a>,
you should! It looks amazing!</p>
<p><a href="https://secondhalf.games/"><img src="https://renderling.xyz/img/second-half-logo.svg" alt="Second Half Games" width="150" /></a></p>
</li>
<li>
<p>Other sponsorships</p>
<p>I also had a few other sponsorships, one on-going from my long-time collaborator and friend
Zach, and a generous one-time donation from John Nagle, who is working on
<a href="https://www.animats.com/sharpview/">Sharpview</a>, a metaverse viewer.</p>
<p>Also my buddy <a href="https://github.com/jimsynz">James Harton</a> donated time on his machines for
dedicated CI hardware.</p>
<p>Thank you, guys!</p>
</li>
</ul>
<h2>Social 🤝</h2>
<ul>
<li>
<p>I've started fielding support questions on the Rust GameDev discord.</p>
</li>
<li>
<p>There have been a couple reddit posts, not by me, mostly by John Nagle, aka Animats.</p>
</li>
<li>
<p>GitHub stars have exploded this year:</p>
</li>
</ul>
<div class="image">
    <label>Stars as of the end of 2024</label>
    <img
        width="750vw"
        src="https://renderling.xyz/uploads/1736368354/star-history-202519.png"
        alt="Renderling GitHub stars, 2024" />
</div>
<ul>
<li>I also became a maintainer of the <a href="https://github.com/rust-gpu">Rust-GPU project</a>.</li>
</ul>
<p>Next year my social goals will be to get more and better documentation out there, with
more examples.</p>
<p>I'd also like to pull in some PRs from other folks, and possibly find a guest maintainer.
If 2025's nlnet grant goes through I'd like to contract some of the project's milestones
out, as there's more work than I can manage myself, and having another person in the codebase
would be good for organization, and clarity and focus in the API.</p>
<p>I'd also like to write some small games 😈.</p>
<h2>Work 👷</h2>
<p>Ok - let's enumerate the features and stuff added in 2024!</p>
<p>There were a lot of refactors and bug fixes, so I'm only going to mention the big rocks here.</p>
<ul>
<li>
<p><a href="https://github.com/schell/renderling/pull/95">nested transforms</a></p>
<p>Support for scene hierarchy through nodes that contain other nodes, where a &quot;node&quot;
is a rendering of some sort (a <code>Renderlet</code> in Renderling parlance)</p>
</li>
<li>
<p><a href="https://github.com/schell/renderling/pull/103">physically based bloom</a></p>
<p>A new bloom implementation based on
<a href="https://learnopengl.com/Guest-Articles/2022/Phys.-Based-Bloom">learnopengl's guest article</a></p>
</li>
<li>
<p><a href="https://github.com/schell/renderling/pull/108">rebuild of the animation system</a></p>
<p>Streamlined animation. Fixed some lingering bugs with rigging.</p>
</li>
<li>
<p><a href="https://github.com/schell/renderling/pull/121">atlas uses texture array</a></p>
<p>Support for multiple textures in the atlas. This greatly expanded the texturing capacity.</p>
</li>
<li>
<p><a href="https://github.com/schell/renderling/pull/126">morph targets</a></p>
<p>Support for animations using morph targets. These are important for facial animations, among
other things.</p>
</li>
<li>
<p><a href="https://github.com/schell/renderling/pull/130">compute frustum culling</a></p>
<p>Pre-rendering step that removes out-of-view geometry. Good speedup.</p>
</li>
<li>
<p><a href="https://github.com/schell/renderling/pull/137">WIP occlusion culling</a></p>
<p>This <em>would be</em> a state of the art, two pass compute step to remove occluded geometry, but
I put it aside during the debugging phase. I'll come back to this in 2025.</p>
</li>
<li>
<p><a href="https://github.com/Rust-GPU/cargo-gpu">cargo-gpu</a></p>
<p>I put this here even though it's not <em>exactly</em> Renderling, but my shader compilation tools from
Renderling became the basis of this new, more general command line tool. Along with the work
of <a href="https://github.com/tombh">Thomas Buckley-Houston</a>. We essentially mashed our compilation
tools together to come up with <code>cargo-gpu</code>. Check it out!</p>
</li>
</ul>
<h2>Website</h2>
<p>Last but not least I have to mention that this entire bespoke website was set up this year,
and I wrote 4300 lines in the devlog!
That's a lot of debugging.
But I do tend to make lots of newlines...</p>
<p>Here's the <a href="https://github.com/schell/renderling.xyz">renderling.xyz code</a> if you care to
take a look.
It's very much made in a style that works for my workflow, and I'm often adding to it.</p>
<h2>Looking into 2025</h2>
<p>On my docket for 2025 are more features, documentation and examples.</p>
<p>I'd also love to work with an artist to get some good renderings to show off.</p>
<p>I guess I could always use some off-the-shelf assets, though.</p>
<p>Here's my feature short-list:</p>
<ul>
<li>shadow mapping</li>
<li>finishing occlusion culling</li>
<li>support for texture compression</li>
<li>analytical light tiling</li>
<li>a pinch of raymarching</li>
<li>screen-space ambient occlusion</li>
</ul>
<h2>What went right and what went wrong</h2>
<p>Just about everything I mentioned up to this point went right. I got a lot of features
shipped in what I think is a pretty short amount of time.</p>
<p>But one glaring difficulty I had was with occlusion culling. This wasn't part of my
nlnet grant but I dedicated a good chunk of time to it. I felt like I was always just
a couple hours away from finishing, but the rabbit hole got deeper and deeper. I think
sinking this much time bumped a few other milestones out of reach for me in 2024 - namely
shadow mapping and light tiling. Next year I'll make it one of my milestones, if I win
another grant. Then I can really focus on it without worry.</p>
<p>You can read about occlusion culling in the devlog
<a href="https://renderling.xyz/devlog/index.html#sat_nov_2_2024__sun_nov_3_2024">here</a>.</p>
<p>Another problem is that packing in all these features has fractured the API a bit. The
project doesn't feel very &quot;well planned&quot; to me... ...because it isn't! I've been working
on just getting things to work and haven't put any polish on it.
The APIs need a bit of work around the edges to ensure the pieces line up well.</p>
<p>All in all, though, I'm very happy with this project :)</p>
<h2>And that's a wrap!</h2>
<p>I'm going to keep this short and sweet, so that's it for 2024.</p>
<p>Thanks for reading and following along.</p>
<p>I wish you the best in 2025!</p>
<p>&lt;3</p>
]]></description>
    </item>
  </channel>
</rss>
