Developer of 'Banished' Develops His Own Shading Language
jones_supa writes Luke Hodorowicz, the hard-working developer behind the townbuilding strategy computer game Banished, has
designed a novel GPU shading language and written a compiler for it. The language has been christened 'Shining Rock Shading Language' (SRSL) and it outputs the program in several other shading languages. The first goal for the language was to treat the vertex, fragment and geometry shader as a single program. The language sees the graphics pipeline as a stream of data, followed by some code, which outputs a stream of data, and then more code runs, and another stream of data is output. Body text of the shaders is very C-like and should be understood easily coming from other shading languages. SRSL has all the intrinsic functions you would expect from HLSL or GLSL. All types are HLSL-style. Loops and conditionals are available, but switch statements and global variables are seen redundant and not implemented. Luke's blog post tells more about the details of the language, complemented with examples.
designed a novel GPU shading language and written a compiler for it. The language has been christened 'Shining Rock Shading Language' (SRSL) and it outputs the program in several other shading languages. The first goal for the language was to treat the vertex, fragment and geometry shader as a single program. The language sees the graphics pipeline as a stream of data, followed by some code, which outputs a stream of data, and then more code runs, and another stream of data is output. Body text of the shaders is very C-like and should be understood easily coming from other shading languages. SRSL has all the intrinsic functions you would expect from HLSL or GLSL. All types are HLSL-style. Loops and conditionals are available, but switch statements and global variables are seen redundant and not implemented. Luke's blog post tells more about the details of the language, complemented with examples.
Shader languages are just like CSS and JS. They're all quite crappy, but can't really be fixed by the community, so lots of people end up writing "transpilers" to try to work around some of these many problems. That's why we have Sass and LESS and CoffeeScript and TypeScript and now this new shader language. Maybe they fix some problems, but their presence introduces a different set of problems. The right thing to do would be to push for the underlying technologies to be fixed.
The good news is that with new standardized intermediate representations like SPIR-V in Vulkan, this shading language can compile down to the same IR that GLSL/HLSL/etc. use so there's more flexibility on the programming language side while maintaining compatibility with the graphics API.
AntiFA: An abbreviation for Anti First Amendment.
SRSL-E?
The biggest problem when going from a platform to the next is not so much having to rewrite the language (pretty much everything runs GLES2 and will run GLES3, and that means GLSL, -except consoles-), but the fact that you will use completely different techniques depending on the underlying hardware and features. Having a single shader language does not prevent you from having to rewrite stuff many times.
I have to ask... why? Looking at the few samples, it looks like some kind of hybrid between Microsoft's Effect framework (which used "techniques" to sandwich multiple shaders at different levels together) and Nvidia's Cg language (which output HLSL and GLSL from a common, sorta kinda average of the two languages). Considering how close GLSL and HLSL are already, I just don't see the point of writing anything more than a thin wrapper and a few headers that work as a shim/compatibility layer.
Relevant XKCD
This is getting silly!.
I once scooted through the source code of Return to Castle Wolfenstein, and it also seemed to have some kind of intermediate "mini-language" for shaders. It wasn't a language really, but it allowed artists to execute various effects with different parameters (like "winterfog 22 3.0 3.0 1"), which were then converted to real shaders on the fly. What is also surprising that I would have expected such an old game using fixed functionality instead of shaders.
I'll write my own shading language! With blackjack! And hookers!
"The Greens lynched a hacker in Chicago. Last month, but I think the body's still hanging from the old Water Tower."
Now, if only he could fix the bugs in Banished, that would be even nicer feature than creating a one man shader language...
Stupidity is the root of all evil.
global variables are seen redundant
As is the word "as," apparently.
systemd is Roko's Basilisk.
why my towns start starving? i keep building farms, gathering and hunting lodges yet starvation. fix that first!
Harrison's Postulate - "For every action there is an equal and opposite criticism"