Example #1
0
        // Creates light sources with the same settings as BasicEffect.EnableDefaultLighting()
        // in the XNA Framework.
        internal static void InitializeDefaultXnaLights(Scene scene)
        {
            var ambientLight = new AmbientLight
            {
                Color     = new Vector3(0.05333332f, 0.09882354f, 0.1819608f),
                Intensity = 1,
                HemisphericAttenuation = 0,
            };

            scene.Children.Add(new LightNode(ambientLight));

            var keyLight = new DirectionalLight
            {
                Color             = new Vector3(1, 0.9607844f, 0.8078432f),
                DiffuseIntensity  = 1,
                SpecularIntensity = 1,
            };
            var keyLightNode = new LightNode(keyLight)
            {
                Name      = "KeyLight",
                Priority  = 10, // This is the most important light.
                PoseWorld = new Pose(Quaternion.CreateFromRotationMatrix(Vector3.Forward, new Vector3(-0.5265408f, -0.5735765f, -0.6275069f))),
            };

            scene.Children.Add(keyLightNode);

            var fillLight = new DirectionalLight
            {
                Color             = new Vector3(0.9647059f, 0.7607844f, 0.4078432f),
                DiffuseIntensity  = 1,
                SpecularIntensity = 0,
            };
            var fillLightNode = new LightNode(fillLight)
            {
                Name      = "FillLight",
                PoseWorld = new Pose(Quaternion.CreateFromRotationMatrix(Vector3.Forward, new Vector3(0.7198464f, 0.3420201f, 0.6040227f))),
            };

            scene.Children.Add(fillLightNode);

            var backLight = new DirectionalLight
            {
                Color             = new Vector3(0.3231373f, 0.3607844f, 0.3937255f),
                DiffuseIntensity  = 1,
                SpecularIntensity = 1,
            };
            var backLightNode = new LightNode(backLight)
            {
                Name      = "BackLight",
                PoseWorld = new Pose(Quaternion.CreateFromRotationMatrix(Vector3.Forward, new Vector3(0.4545195f, -0.7660444f, 0.4545195f))),
            };

            scene.Children.Add(backLightNode);
        }
Example #2
0
    // OnLoad() is called when the GameObject is added to the IGameObjectService.
    protected override void OnLoad()
    {
      var content = _services.GetInstance<ContentManager>();
      _skyboxNode = new SkyboxNode(content.Load<TextureCube>("Sky2"))
      {
        Color = new Vector3(SkyExposure),
      };

      // The ambient light.
      var ambientLight = new AmbientLight
      {
        Color = new Vector3(0.9f, 0.9f, 1f),
        HdrScale = 0.1f,
        Intensity = 0.5f,
        HemisphericAttenuation = 0.8f,
      };
      _ambientLightNode = new LightNode(ambientLight)
      {
        Name = "Ambient",
      };

      // The main directional light.
      var sunlight = new DirectionalLight
      {
        Color = new Vector3(1, 0.9607844f, 0.9078432f),
        HdrScale = 0.4f,
        DiffuseIntensity = 1,
        SpecularIntensity = 1,
      };
      _sunlightNode = new LightNode(sunlight)
      {
        Name = "Sunlight",
        Priority = 10,   // This is the most important light.
        PoseWorld = new Pose(Quaternion.CreateRotationY(-1.4f) * Quaternion.CreateRotationX(-0.6f)),

        // This light uses Cascaded Shadow Mapping.
        Shadow = new CascadedShadow
        {

          PreferredSize = 512,
#else
          PreferredSize = 1024,

          Prefer16Bit = true,
        }
      };

      // Add a lens flare for the key light.
      var lensFlare = new LensFlare(true) { QuerySize = 0.2f, Size = 0.2f, Name = "Sun Flare" };
      var lensFlareTexture = content.Load<Texture2D>("LensFlare/LensFlares");
      var circleTexture = new PackedTexture("Circle", lensFlareTexture, new Vector2F(0, 0), new Vector2F(0.25f, 0.5f));
      var glowTexture = new PackedTexture("Glow", lensFlareTexture, new Vector2F(0.25f, 0), new Vector2F(0.25f, 0.5f));
      var ringTexture = new PackedTexture("Ring", lensFlareTexture, new Vector2F(0.5f, 0), new Vector2F(0.25f, 0.5f));
      var haloTexture = new PackedTexture("Halo", lensFlareTexture, new Vector2F(0.75f, 0), new Vector2F(0.25f, 0.5f));
      var sunTexture = new PackedTexture("Sun", lensFlareTexture, new Vector2F(0, 0.5f), new Vector2F(0.25f, 0.5f));
      var streaksTexture = new PackedTexture("Streaks", lensFlareTexture, new Vector2F(0.25f, 0.5f), new Vector2F(0.25f, 0.5f));
      var flareTexture = new PackedTexture("Flare", lensFlareTexture, new Vector2F(0.5f, 0.5f), new Vector2F(0.25f, 0.5f));
      lensFlare.Elements.Add(new LensFlareElement(-0.2f, 0.55f, 0.0f, new Color(175, 175, 255, 20), new Vector2F(0.5f, 0.5f), circleTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.0f, 0.9f, 0.0f, new Color(255, 255, 255, 255), new Vector2F(0.5f, 0.5f), sunTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.0f, 1.8f, 0.0f, new Color(255, 255, 255, 128), new Vector2F(0.5f, 0.5f), streaksTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.0f, 2.6f, 0.0f, new Color(255, 255, 200, 64), new Vector2F(0.5f, 0.5f), glowTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.5f, 0.12f, 0.0f, new Color(60, 60, 180, 35), new Vector2F(0.5f, 0.5f), circleTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.55f, 0.46f, 0.0f, new Color(100, 100, 200, 60), new Vector2F(0.5f, 0.5f), circleTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.6f, 0.17f, 0.0f, new Color(120, 120, 220, 40), new Vector2F(0.5f, 0.5f), circleTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.85f, 0.2f, 0.0f, new Color(60, 60, 255, 100), new Vector2F(0.5f, 0.5f), ringTexture));
      lensFlare.Elements.Add(new LensFlareElement(1.5f, 0.2f, 0.0f, new Color(255, 60, 60, 130), new Vector2F(0.5f, 0.5f), flareTexture));
      lensFlare.Elements.Add(new LensFlareElement(0.15f, 0.15f, 0.0f, new Color(255, 60, 60, 90), new Vector2F(0.5f, 0.5f), flareTexture));
      lensFlare.Elements.Add(new LensFlareElement(1.3f, 0.6f, 0.0f, new Color(60, 60, 255, 180), new Vector2F(0.5f, 0.5f), haloTexture));
      lensFlare.Elements.Add(new LensFlareElement(1.4f, 0.2f, 0.0f, new Color(220, 80, 80, 98), new Vector2F(0.5f, 0.5f), haloTexture));
      lensFlare.Elements.Add(new LensFlareElement(1.5f, 0.1f, 0.0f, new Color(220, 80, 80, 85), new Vector2F(0.5f, 0.5f), circleTexture));
      lensFlare.Elements.Add(new LensFlareElement(1.6f, 0.5f, 0.0f, new Color(60, 60, 255, 80), new Vector2F(0.5f, 0.5f), haloTexture));
      lensFlare.Elements.Add(new LensFlareElement(1.8f, 0.3f, 0.0f, new Color(90, 60, 255, 110), new Vector2F(0.5f, 0.5f), ringTexture));
      lensFlare.Elements.Add(new LensFlareElement(1.95f, 0.5f, 0.0f, new Color(60, 60, 255, 120), new Vector2F(0.5f, 0.5f), haloTexture));
      lensFlare.Elements.Add(new LensFlareElement(2.0f, 0.15f, 0.0f, new Color(60, 60, 255, 85), new Vector2F(0.5f, 0.5f), circleTexture));

      // Add lens flare as a child of the sunlight.
      var lensFlareNode = new LensFlareNode(lensFlare);
      _sunlightNode.Children = new SceneNodeCollection();
      _sunlightNode.Children.Add(lensFlareNode);

      // Add scene nodes to scene graph.
      var scene = _services.GetInstance<IScene>();
      scene.Children.Add(_skyboxNode);
      scene.Children.Add(_ambientLightNode);
      scene.Children.Add(_sunlightNode);
    }