private void AddDeferredTest() { var planeSo = new Node(_scene, "plane"); planeSo.AddComponent <MeshRenderable>().Mesh = Plane.Create(10, 10); planeSo.Transform.LocalRotation = new Quaternion(Vector3.Left, MathF.PI / 2); var sphereMesh = Icosahedron.Create(0.01f, 2); var sphereMaterial = new Material(MaterialType.FlatColor); sphereMaterial.Color = Vector4.One; var lightsParent = new Node(_scene, "lights"); lightsParent.AddComponent <Rotator>().Rotation = new Vector3(0.7, 0, 0); var lightCount = 50; for (int i = 0; i < lightCount; i++) { var so = new Node(_scene); so.Transform.Parent = lightsParent.Transform; var light = so.AddComponent <LightSource>(); var color = new Vector3(RandomF.Float(), RandomF.Float(), RandomF.Float()); color /= MathF.Max(color.X, color.Y, color.Z); light.Diffuse = color; light.Attenuation = new Vector3(0, 4f, 0); var position = Vector3.Zero; while (position.LengthSquared < 0.05f) { position = RandomF.InsideUnitSphere(); } so.Transform.LocalPosition = position * 5; var meshRenderer = so.AddComponent <MeshRenderable>(); meshRenderer.Mesh = sphereMesh; meshRenderer.Material = sphereMaterial; } }