public static ShadowMappingNode Create(IBufferSource model, string position, string normal, vec3 size) { RenderMethodBuilder ambientBuilder, shadowBuilder, blinnPhongBuilder; { var vs = new VertexShader(ambientVert); var fs = new FragmentShader(ambientFrag); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", position); ambientBuilder = new RenderMethodBuilder(array, map); } { var vs = new VertexShader(shadowVert); var array = new ShaderArray(vs); var map = new AttributeMap(); map.Add("inPosition", position); shadowBuilder = new RenderMethodBuilder(array, map); } { var vs = new VertexShader(blinnPhongVert); var fs = new FragmentShader(blinnPhongFrag); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", position); map.Add("inNormal", normal); blinnPhongBuilder = new RenderMethodBuilder(array, map); } var node = new ShadowMappingNode(model, ambientBuilder, shadowBuilder, blinnPhongBuilder); node.Initialize(); node.ModelSize = size; return(node); }
private SceneNodeBase GetRootNode() { var group = new GroupNode(); var filenames = new string[] { "floor.obj_", }; var colors = new Color[] { Color.Green, }; for (int i = 0; i < filenames.Length; i++) { string folder = System.Windows.Forms.Application.StartupPath; string filename = System.IO.Path.Combine(folder + @"\..\..\..\..\Infrastructure\CSharpGL.Models", filenames[i]); var parser = new ObjVNFParser(true); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { MessageBox.Show(result.Error.ToString()); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); var node = ShadowMappingNode.Create(model, ObjVNF.strPosition, ObjVNF.strNormal, model.GetSize()); node.WorldPosition = new vec3(0, i * 5, 0); node.Color = colors[i].ToVec3(); node.Name = filename; group.Children.Add(node); } } { var hanoiTower = new GroupNode(); ObjItem[] items = HanoiTower.GetDataSource(); foreach (var item in items) { var objFormat = item.model; var filename = item.GetType().Name; objFormat.DumpObjFile(filename, filename); var parser = new ObjVNFParser(false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); var node = ShadowMappingNode.Create(model, ObjVNF.strPosition, ObjVNF.strNormal, model.GetSize()); node.WorldPosition = item.position; node.Color = item.color; node.Name = filename; hanoiTower.Children.Add(node); } } group.Children.Add(hanoiTower); } return(group); }
private SceneNodeBase GetRootNode() { var group = new GroupNode(); var filenames = new string[] { "floor.obj_", "dragon.obj_", }; var colors = new Color[] { Color.Green, Color.White, }; for (int i = 0; i < filenames.Length; i++) { string folder = System.Windows.Forms.Application.StartupPath; string filename = System.IO.Path.Combine(folder + @"\..\..\..\..\Infrastructure\CSharpGL.Models", filenames[i]); var parser = new ObjVNFParser(true); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { MessageBox.Show(result.Error.ToString()); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); var node = ShadowMappingNode.Create(model, ObjVNF.strPosition, ObjVNF.strNormal, model.GetSize()); node.WorldPosition = new vec3(0, i * 5, 0); node.Color = colors[i].ToVec3(); node.Name = filename; group.Children.Add(node); } } { var rect = DepthRectNode.Create(); rect.Scale = new vec3(1, 1, 1) * 50; rect.WorldPosition = new vec3(1, 1, 1) * 27; group.Children.Add(rect); this.rect = rect; } return(group); }