/// <summary> /// Creates a new instance of this shader. /// </summary> public Shader Instance() { Godot.Material mat; switch (Kind) { case ShaderKind.Source: mat = new Godot.ShaderMaterial { Shader = Source.GodotShader }; break; case ShaderKind.Canvas: mat = new Godot.CanvasItemMaterial { LightMode = LightMode, BlendMode = BlendMode, }; break; default: throw new InvalidOperationException(); } return(new Shader(mat)); }
public override void Initialize() { base.Initialize(); IoCManager.InjectDependencies(this); DrawingNode = new Godot.Node2D() { Name = "EffectSystem", }; sceneTree.WorldRoot.AddChild(DrawingNode); UnshadedMaterial = new Godot.CanvasItemMaterial() { LightMode = Godot.CanvasItemMaterial.LightModeEnum.Unshaded }; ShadedMaterial = new Godot.CanvasItemMaterial(); ShadedCanvasItem = VS.CanvasItemCreate(); VS.CanvasItemSetParent(ShadedCanvasItem, DrawingNode.GetCanvasItem()); VS.CanvasItemSetMaterial(ShadedCanvasItem, ShadedMaterial.GetRid()); UnshadedCanvasItem = VS.CanvasItemCreate(); VS.CanvasItemSetParent(UnshadedCanvasItem, DrawingNode.GetCanvasItem()); VS.CanvasItemSetMaterial(UnshadedCanvasItem, UnshadedMaterial.GetRid()); }
/// <summary> /// Creates a new instance of this shader. /// </summary> public Shader Instance() { Godot.Material mat; switch (Kind) { case ShaderKind.Source: var shaderMat = new Godot.ShaderMaterial { Shader = Source.GodotShader }; mat = shaderMat; if (ShaderParams != null) { foreach (var pair in ShaderParams) { shaderMat.SetShaderParam(pair.Key, pair.Value); } } break; case ShaderKind.Canvas: mat = new Godot.CanvasItemMaterial { LightMode = LightMode, BlendMode = BlendMode, }; break; default: throw new InvalidOperationException(); } return(new Shader(mat)); }