Making a Shading Language for My Offline Renderer

He built his own code language for fun, and the comments instantly turned into a nerd pep rally

TLDR: A programmer made his own shading language for his image renderer after deciding existing tools were too heavy and awkward for future Apple support. The community mostly reacted with a mix of awe, envy, and classic internet nitpicking, turning the comments into a debate over tools and ambition.

A graphics programmer spent four months of spare time building his own mini language for telling a computer how to paint surfaces in his offline image renderer—basically, a custom tool for generating textures and looks from scratch. His big reason? Control, learning, and avoiding a dependency headache. He says the existing option, Open Shading Language, felt too bulky, too tangled up with extra libraries, and risky for Apple’s move to its newer chips. Translation for normal people: he didn’t want his project held hostage by a giant tower of add-ons and compatibility drama.

And the comments? Pure “this is insane… but also inspiring” energy. One of the strongest reactions was full-on admiration: a commenter admitted that every time they see someone build a programming language, it sparks the dangerous little voice that says, wait, could I do that too? That gave the whole thread a weirdly wholesome glow—part technical flex, part motivational poster.

But of course, this being the internet, the helpful nitpick squad arrived right on schedule. Another commenter jumped in with a buffet of alternate tools and basically said, nice choice, but here are five other ways you could’ve done it. Not exactly a flame war, but definitely that classic coder ritual where even a passion project becomes a mini debate club. The vibe was less “why would you do this?” and more “respect… but let’s argue about the toolchain anyway.” In other words: one man built a language, and the crowd immediately made the real product—opinions.

Key Points

  • The author spent four months building Tiny Shading Language (TSL) for the offline renderer SORT.
  • The blog focuses on TSL’s system design and its use in an offline CPU renderer rather than detailed implementation internals.
  • A major reason for creating TSL was to learn compiler construction and gain flexibility through owning the code base.
  • The article cites Apple’s transition to ARM and uncertain OSL support for Apple Silicon as a portability concern.
  • The author argues that OSL’s reliance on OpenImageIO and its downstream dependencies makes it heavier and harder to integrate than expected.

Hottest takes

"I feel a desire to try it myself" — jdw64
"one might also find re2c or Ragel + Lemon friendlier" — mananaysiempre
"or spending a week on a hand-coded lexer and parser" — mananaysiempre
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.