private void registerProgramForItsShaders(ReloadableRendererShader rendererShader) { foreach (var shader in rendererShader.Shaders) { if (!programsByShader.TryGetValue(shader, out var programs)) { programs = new List <ReloadableRendererShader>(); programsByShader.Add(shader, programs); } programs.Add(rendererShader); } }
public IRendererShader RegisterRendererShader(Action <RendererShaderBuilder> build, string name) { var builder = new RendererShaderBuilder(this); build(builder); throwIfShaderProgramNameAlreadyTaken(name); var program = ReloadableRendererShader.LoadFrom(builder.Shaders); programs.Add(name, program); registerProgramForItsShaders(program); return(program); }