I'm a software engineer with over 20 years of experience building complex systems. I make Unity tools that let programmers work the way they know best: in code, with their IDE, their version control and the habits they've built over the years.
Write Unity shaders in C#.
Shader Script turns C# classes into shaders for the Universal and the High Definition Render Pipelines: every pass each pipeline needs, the material properties, and a Material Inspector that looks and works like the pipeline's own.
using Ahilevich.ShaderScript;
[Shader]
public class Glow : ShaderScript.Unlit
{
[MainColor] public float4 Color { get; } = new float4(0.2f, 0.8f, 1, 1);
[Range(0, 5)] public float Power { get; } = 2;
public override void Vert(VertexInput IN, ref VertexOutput OUT) { }
public override void Frag(FragmentInput IN, ref UnlitFragmentOutput OUT)
{
float3 viewDir = ShaderApi.GetWorldSpaceNormalizeViewDir(IN.positionWS);
float rim = ShaderLib.FresnelEffect(IN.normalWS, viewDir, Power);
OUT.albedo = (half3)(Color.rgb * rim);
}
}
Computers have been my life since school, and games were a big part of the reason why. For more than 20 years I've been designing complex systems that demand deep understanding and careful modeling: high-load and scalable architectures, multithreading, performance optimization.
I love digging into new and exciting technology, especially when it's hard. Lately that means 3D rendering. I was building a ray-tracing renderer of my own: it started on the CPU, and when that got too slow, I moved it to the GPU with HLSL. Writing HLSL was painful: no code completion, no documentation at hand, no help from the IDE. So I wrote a C# to HLSL translator for myself, using the Roslyn source generators I knew from earlier projects. It worked better than I expected: almost any code I wrote translated to HLSL.
When I looked for something similar, I found nothing for Unity at all, only a few engine-agnostic open-source projects limited to compute shaders. That's how Shader Script began. Now I'm in Unity to follow a long-held dream: making my own games, or at least parts of them.
I read every bug report and feature request myself, usually within two working days.