public SpriteSetConverter(ISurfaceShader shaderProgram, SurfaceSetting[] surfaceSettings, Func <IndexedSurface <TVertexData>, UVQuadGeometry <TVertexData> > geometryMaker, Func <string, Texture> textureProvider = null) { this.shaderProgram = shaderProgram; this.surfaceSettings = surfaceSettings; this.geometryMaker = geometryMaker; this.textureProvider = textureProvider ?? (s => new Texture(s)); }
public static SurfaceWrapper <T> WithShader <T>(this T surface, ISurfaceShader shader) where T : Surface { if (shader == null) { throw new Exception("Shader not found"); } shader.UseOnSurface(surface); return(new SurfaceWrapper <T>(surface)); }
public ShaderManager() { var loader = ShaderFileLoader.CreateDefault("data/shaders"); var man = new amulware.Graphics.ShaderManagement.ShaderManager(); man.Add(loader.Load("")); this.Primitives = man.MakeShaderProgram("primitives"); this.UVColor = man.MakeShaderProgram("uvcolor"); }
public SpriteSet(ISurfaceShader shaderProgram, SurfaceSetting[] surfaceSettings) { this.sprites = new Dictionary <string, Sprite <TVertexData> >(); this.surface = new IndexedSurface <TVertexData>(); if (surfaceSettings != null) { this.surface.AddSettings(surfaceSettings); } if (shaderProgram != null) { shaderProgram.UseOnSurface(this.surface); } }
private void initialise() { this.UVColor = GraphicsHelper.LoadShaderProgram("data/shaders/uvcolor"); this.Sprite3D = GraphicsHelper.LoadShaderProgram("data/shaders/simple_sprite"); this.Wall = GraphicsHelper.LoadShaderProgram("data/shaders/wall"); this.DebugDeferred = GraphicsHelper.LoadShaderProgram("data/shaders/post.vs", "data/shaders/post/debugDeferred.fs"); this.PointLights = GraphicsHelper.LoadShaderProgram("data/shaders/deferred/pointlight"); this.AmbientLight = GraphicsHelper.LoadShaderProgram("data/shaders/deferred/ambient"); this.PostCopy = GraphicsHelper.LoadShaderProgram("data/shaders/post.vs", "data/shaders/post/copy.fs"); this.Overlay = GraphicsHelper.LoadShaderProgram("data/shaders/post.vs", "data/shaders/post/overlayFade.fs"); }
static public SpriteSet <TVertexData> FromJsonFile( string filename, Func <IndexedSurface <TVertexData>, UVQuadGeometry <TVertexData> > geometryMaker, ISurfaceShader shaderProgram = null, SurfaceSetting[] surfaceSettings = null, Func <string, Texture> textureProvider = null, bool texturesRelativeToJson = false) { if (textureProvider == null) { textureProvider = file => new Texture(file); } if (texturesRelativeToJson) { string path = Path.GetDirectoryName(filename) ?? ""; var providerCopy = textureProvider; textureProvider = file => providerCopy(Path.Combine(path, file)); } return(SpriteSet <TVertexData> .FromJsonTextReader(File.OpenText(filename), geometryMaker, shaderProgram, surfaceSettings, textureProvider)); }
static public SpriteSet <TVertexData> FromJsonTextReader( TextReader textReader, Func <IndexedSurface <TVertexData>, UVQuadGeometry <TVertexData> > geometryMaker, ISurfaceShader shaderProgram = null, SurfaceSetting[] surfaceSettings = null, Func <string, Texture> textureProvider = null) { if (textureProvider == null) { textureProvider = file => new Texture(file); } var serialiser = new JsonSerializer().ConfigureForGraphics(); serialiser.Converters.Add( new SpriteSetConverter <TVertexData>(shaderProgram, surfaceSettings, geometryMaker, textureProvider) ); var set = serialiser.Deserialize <SpriteSet <TVertexData> >(new JsonTextReader(textReader)); return(set); }
public static SpriteSet <TVertexData> Copy <TVertexDataIn> (SpriteSet <TVertexDataIn> template, Func <IndexedSurface <TVertexData>, UVQuadGeometry <TVertexData> > geometryMaker, ISurfaceShader shaderProgram = null, SurfaceSetting[] surfaceSettings = null, bool keepTextureUniforms = true) where TVertexDataIn : struct, IVertexData { var set = new SpriteSet <TVertexData>(shaderProgram, surfaceSettings); foreach (var item in template.sprites) { set.sprites.Add(item.Key, Sprite <TVertexData> .Copy(item.Value, geometryMaker(set.surface))); } if (keepTextureUniforms) { set.surface.AddSettings(template.surface.Settings.Where(setting => setting is TextureUniform)); } return(set); }
public Layer(ISurfaceShader shader, ISurfaceShader wispShader, CrepuscularRayGeometry rayGeo, string filename, float brightness, int wisps) { this.rayGeo = rayGeo; var texture = new Texture("gfx/" + filename + ".png", true); this.surface = new PostProcessSurface(); this.surface.AddSettings( new TextureUniform("diffuseTexture", texture), new ColorUniform("color", Color.GrayScale((byte)(255 * brightness))) ); shader.UseOnSurface(this.surface); this.wispSurface = new IndexedSurface<UVColorVertexData>(); wispShader.UseOnSurface(this.wispSurface); this.wispGeo = new Sprite2DGeometry(this.wispSurface) { Color = Color.White.WithAlpha() }; this.wisps = Enumerable.Range(0, wisps) .Select(i => new Wisp()).ToList(); }