private SceneNodeBase GetRootElement() { var lightPosition = new vec3(0, 3, 5) * 2; var localLight = new SpotLight(lightPosition, new vec3(0, 0, 0), 60, 1, 500) { Color = new vec3(1, 1, 1), }; var lightContainer = new LightContainerNode(localLight); { { var teapot = DepthTeapotNode.Create(); teapot.RotateSpeed = 1; lightContainer.Children.Add(teapot); } { var ground = DepthGroundNode.Create(); ground.Color = Color.Gray.ToVec4(); ground.Scale *= 30; ground.WorldPosition = new vec3(0, -3, 0); lightContainer.Children.Add(ground); } } var rectangle = RectangleNode.Create(); rectangle.TextureSource = localLight; var group = new GroupNode(); group.Children.Add(lightContainer); group.Children.Add(rectangle); return(group); }
private SceneNodeBase GetRootElement() { var group = new GroupNode(); var lightPosition = new vec3(0, 3, 5) * 2; var localLight = new SpotLight(lightPosition, new vec3(0, 0, 0), 60, 1, 500) { Color = new vec3(1, 1, 1), }; { var lightContainer = new LightContainerNode(localLight); { var model = new Teapot(); var node = ShadowMappingNode.Create(model, Teapot.strPosition, Teapot.strNormal, model.GetModelSize()); node.Diffuse = Color.Gold.ToVec3(); node.RotateSpeed = 1; lightContainer.Children.Add(node); } { var model = new GroundModel(); var node = ShadowMappingNode.Create(model, GroundModel.strPosition, GroundModel.strNormal, model.ModelSize); node.Diffuse = Color.AliceBlue.ToVec3(); node.Scale *= 30; node.WorldPosition = new vec3(0, -3, 0); lightContainer.Children.Add(node); } group.Children.Add(lightContainer); } { var rectangle = RectangleNode.Create(); rectangle.TextureSource = localLight; rectangle.RotationAngle = 45; rectangle.WorldPosition = new vec3(5, 1, 5) * 3; rectangle.Scale *= 4; group.Children.Add(rectangle); } { var cube = LightPostionNode.Create(); cube.WorldPosition = lightPosition; cube.SetLight(localLight); group.Children.Add(cube); } return(group); }