/// <summary> /// Initialize services : /// </summary> protected override void Initialize() { base.Initialize(); LoadContent(); Reloading += (s, e) => LoadContent(); CreateTargets(); GraphicsDevice.DisplayBoundsChanged += (s, e) => CreateTargets(); var lr = GetService <LightRenderer>(); var rand = new Random(542); for (int i = 0; i < 1024; i++) { var light = new OmniLight(); light.RadiusOuter = rand.NextFloat(3, 4); light.RadiusInner = light.RadiusOuter * 0.5f; light.Position = rand.NextVector3(new Vector3(-50, 3, -50), new Vector3(50, 6, 50)); //light.Position = Vector3.Up * 3; //new Vector3(10,2,20); //light.Position = new Vector3( (i/32)*3-48, 2.5f, (i%32)*3-48 ); light.Intensity = rand.NextColor4() * 50; // new Color4(10,10,5,0); lr.OmniLights.Add(light); } var names = spotAtlas.SubImageNames; lr.MaskAtlas = spotAtlas; for (int i = 0; i < 16; i++) { var light = new SpotLight(); var position = rand.NextVector3(new Vector3(-30, 20, -30), new Vector3(30, 20, 30)); var target = position + rand.NextVector3(new Vector3(-10, -35, -10), new Vector3(10, -35, 10)); //position = rand.NextVector3( new Vector3(-50,50,-50), new Vector3(50,50,50) ); //target = Vector3.Down * 20; light.Intensity = rand.NextColor4() * 100; // new Color4(10,10,5,0); light.SpotView = Matrix.LookAtRH(position, target, Vector3.Up); light.RadiusOuter = (target - position).Length() * 1.5f; light.RadiusInner = light.RadiusOuter * 0.5f; light.MaskName = names[rand.Next(0, names.Length)]; light.Projection = Matrix.PerspectiveFovRH(MathUtil.DegreesToRadians(45), 1, 1f, light.RadiusOuter); lr.SpotLights.Add(light); } }
/// <summary> /// Initialize services : /// </summary> protected override void Initialize () { base.Initialize(); LoadContent(); Reloading += (s,e) => LoadContent(); CreateTargets(); GraphicsDevice.DisplayBoundsChanged += (s,e) => CreateTargets(); var lr = GetService<LightRenderer>(); var rand = new Random(542); for (int i=0; i<1024; i++) { var light = new OmniLight(); light.RadiusOuter = rand.NextFloat(3, 4); light.RadiusInner = light.RadiusOuter * 0.5f; light.Position = rand.NextVector3( new Vector3(-50,3,-50), new Vector3(50,6,50) ); //light.Position = Vector3.Up * 3; //new Vector3(10,2,20); //light.Position = new Vector3( (i/32)*3-48, 2.5f, (i%32)*3-48 ); light.Intensity = rand.NextColor4()*50;// new Color4(10,10,5,0); lr.OmniLights.Add( light ); } var names = spotAtlas.SubImageNames; lr.MaskAtlas = spotAtlas; for (int i=0; i<16; i++) { var light = new SpotLight(); var position = rand.NextVector3( new Vector3(-30,20,-30), new Vector3(30,20,30) ); var target = position + rand.NextVector3( new Vector3(-10, -35,-10), new Vector3(10, -35,10) ); //position = rand.NextVector3( new Vector3(-50,50,-50), new Vector3(50,50,50) ); //target = Vector3.Down * 20; light.Intensity = rand.NextColor4()*100;// new Color4(10,10,5,0); light.SpotView = Matrix.LookAtRH( position, target, Vector3.Up ); light.RadiusOuter = (target - position).Length() * 1.5f; light.RadiusInner = light.RadiusOuter * 0.5f; light.MaskName = names[ rand.Next(0, names.Length) ]; light.Projection = Matrix.PerspectiveFovRH( MathUtil.DegreesToRadians(45), 1, 1f, light.RadiusOuter ); lr.SpotLights.Add( light ); } }