Beispiel #1
0
        protected override void LoadContent()
        {
            shadowMapEffect = new ShadowMapEffect(Content.Load<Effect>("ShadowMap"));

            drawModelEffect = new DrawModelEffect(Content.Load<Effect>("DrawModel"));
            drawModelEffect.LightDirection = lightDirection;
            drawModelEffect.DepthBias = 0.001f;
            drawModelEffect.AmbientColor = new Vector4(0.15f, 0.15f, 0.15f, 1.0f);

            spriteBatch = new SpriteBatch(GraphicsDevice);
            spriteFont = Content.Load<SpriteFont>("hudFont");

            gridModel = Content.Load<Model>("grid");
            dudeModel = Content.Load<Model>("dude");

            // 基礎的なシャドウ マップは R 値のみを用いる。
            bsmRenderTarget = new RenderTarget2D(
                GraphicsDevice, shadowMapSize, shadowMapSize,
                false, SurfaceFormat.Single, DepthFormat.Depth24Stencil8);

            // VSM は RG 値の二つを用いる。
            vsmRenderTarget = new RenderTarget2D(
                GraphicsDevice, shadowMapSize, shadowMapSize,
                false, SurfaceFormat.Vector2, DepthFormat.Depth24Stencil8);

            // ガウシアン ブラーは VSM で用いるため、
            // 内部で使用するレンダ ターゲットは VSM に合わせる。
            gaussianBlur = new GaussianBlur(GraphicsDevice,
                vsmRenderTarget.Width, vsmRenderTarget.Height,
                SurfaceFormat.Vector2, Content.Load<Effect>("GaussianBlur"));
            gaussianBlur.Radius = 4;
            gaussianBlur.Amount = 16;
        }
Beispiel #2
0
        protected override void LoadContent()
        {
            shadowMapEffect = new ShadowMapEffect(Content.Load<Effect>("ShadowMap"));
            gaussianBlurEffect = Content.Load<Effect>("GaussianBlur");

            drawModelEffect = new DrawModelEffect(Content.Load<Effect>("DrawModel"));
            drawModelEffect.AmbientColor = new Vector4(0.15f, 0.15f, 0.15f, 1.0f);
            drawModelEffect.DepthBias = 0.001f;
            drawModelEffect.LightDirection = lightDirection;
            drawModelEffect.ShadowColor = new Vector3(0.5f, 0.5f, 0.5f);

            spriteBatch = new SpriteBatch(GraphicsDevice);
            spriteFont = Content.Load<SpriteFont>("hudFont");

            gridModel = Content.Load<Model>("grid");
            dudeModel = Content.Load<Model>("dude");

            dudeBoxLocal = BoundingBoxHelper.Empty;
            foreach (var mesh in dudeModel.Meshes)
            {
                BoundingBoxHelper.Merge(ref dudeBoxLocal, BoundingBox.CreateFromSphere(mesh.BoundingSphere));
            }

            for (int i = 0; i < shadowMaps.Length; i++)
            {
                shadowMaps[i] = new ShadowMap(GraphicsDevice, shadowMapEffect);
            }
        }