private static void read_vertex_shader (VertexShader vertexShader, XElement element) { foreach (XElement e in element.Elements()) { if (e.Name == "include") { Include include = new Include(); read_include(include, e); vertexShader.Includes.Add(include); } } }
private static void read_geometry_shader (GeometryShader geometryShader, XElement element) { foreach (XAttribute a in element.Attributes()) { if (a.Name == "inputTopology") { switch (a.Value) { case "points": geometryShader.InputTopology = Topology.Points; break; case "lines": geometryShader.InputTopology = Topology.Lines; break; case "triangle": geometryShader.InputTopology = Topology.Triangles; break; default: geometryShader.InputTopology = Topology.Triangles; break; } } if (a.Name == "outputTopology") { switch (a.Value) { case "points": geometryShader.OutputTopology = Topology.Points; break; case "lines": geometryShader.OutputTopology = Topology.Lines; break; case "triangle": geometryShader.OutputTopology = Topology.Triangles; break; default: geometryShader.OutputTopology = Topology.Triangles; break; } } if (a.Name == "outputVertexCount") { int result = 0; int.TryParse(a.Value, out result); geometryShader.OutputVertexCount = result; } } foreach (XElement e in element.Elements()) { if (e.Name == "include") { Include include = new Include(); read_include(include, e); geometryShader.Includes.Add(include); } } }
private static void read_fragment_shader (FragmentShader fragmentShader, XElement element) { foreach (XElement e in element.Elements()) { if (e.Name == "include") { Include include = new Include(); read_include(include, e); fragmentShader.Includes.Add(include); } } }
private static void read_include (Include include, XElement element) { foreach (XAttribute a in element.Attributes()) { if (a.Name == "source") include.Source = a.Value; } }